<?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>108783</bug_id>
          
          <creation_ts>2013-02-03 18:12:40 -0800</creation_ts>
          <short_desc>Update CaptionUserPreferences</short_desc>
          <delta_ts>2013-02-04 11:42:28 -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>Media</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dino</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>823950</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-03 18:12:40 -0800</bug_when>
    <thetext>The system code used to allow the Mac port to modify caption and subtitle style has changed, update for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824005</commentid>
    <comment_count>1</comment_count>
      <attachid>186294</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-03 20:44:12 -0800</bug_when>
    <thetext>Created attachment 186294
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824006</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-03 20:47:23 -0800</bug_when>
    <thetext>Attachment 186294 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/page/CaptionUserPreferences.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMac.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMac.mm&apos;, u&apos;Source/WebCore/platform/Language.cpp&apos;, u&apos;Source/WebCore/platform/Language.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm&apos;]&quot; exit_code: 1
Source/WebCore/page/CaptionUserPreferences.h:52:  Too many spaces inside { }.  [whitespace/braces] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824017</commentid>
    <comment_count>3</comment_count>
      <attachid>186294</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-03 21:11:56 -0800</bug_when>
    <thetext>Comment on attachment 186294
Proposed patch

Attachment 186294 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16365119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824020</commentid>
    <comment_count>4</comment_count>
      <attachid>186296</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-03 21:13:17 -0800</bug_when>
    <thetext>Created attachment 186296
Update patch for my good friend the style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824023</commentid>
    <comment_count>5</comment_count>
      <attachid>186298</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-03 21:24:43 -0800</bug_when>
    <thetext>Created attachment 186298
Another update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824036</commentid>
    <comment_count>6</comment_count>
      <attachid>186298</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-03 21:54:03 -0800</bug_when>
    <thetext>Comment on attachment 186298
Another update.

Attachment 186298 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16371034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824051</commentid>
    <comment_count>7</comment_count>
      <attachid>186304</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-03 22:13:38 -0800</bug_when>
    <thetext>Created attachment 186304
One more time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824075</commentid>
    <comment_count>8</comment_count>
      <attachid>186304</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-03 22:42:33 -0800</bug_when>
    <thetext>Comment on attachment 186304
One more time...

Attachment 186304 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16371062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824080</commentid>
    <comment_count>9</comment_count>
      <attachid>186304</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-03 22:58:13 -0800</bug_when>
    <thetext>Comment on attachment 186304
One more time...

Attachment 186304 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16357966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824348</commentid>
    <comment_count>10</comment_count>
      <attachid>186373</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-04 07:44:14 -0800</bug_when>
    <thetext>Created attachment 186373
Another update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824520</commentid>
    <comment_count>11</comment_count>
      <attachid>186373</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 10:24:43 -0800</bug_when>
    <thetext>Comment on attachment 186373
Another update.

Attachment 186373 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16371312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824588</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-04 11:12:17 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 186373 [details])
&gt; Attachment 186373 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/16371312

Not likely to be related: 
1&gt;..\cg\ImageDiffCG.cpp(37) : fatal error C1083: Cannot open include file: &apos;wtf/Platform.h&apos;: No such file or directory
1&gt;Build log was saved at &quot;file://C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\obj\ImageDiff\BuildLog.htm&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824589</commentid>
    <comment_count>13</comment_count>
      <attachid>186420</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-04 11:12:48 -0800</bug_when>
    <thetext>Created attachment 186420
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824609</commentid>
    <comment_count>14</comment_count>
      <attachid>186420</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-04 11:33:58 -0800</bug_when>
    <thetext>Comment on attachment 186420
Updated patch

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

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:95
&gt; -
&gt; +    

Nit: indent added?

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:185
&gt; +        builder.append(&quot; !important&quot;);

Technically I don&apos;t think you need the space before the &quot;!&quot;, but it doesn&apos;t hurt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824615</commentid>
    <comment_count>15</comment_count>
      <attachid>186420</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-04 11:42:20 -0800</bug_when>
    <thetext>Comment on attachment 186420
Updated patch

http://trac.webkit.org/r141790</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186294</attachid>
            <date>2013-02-03 20:44:12 -0800</date>
            <delta_ts>2013-02-03 21:13:17 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_4.txt</filename>
            <type>text/plain</type>
            <size>30472</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTAzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldywg
YWxsb3cgYSBwb3J0IHRvIHJlbWVtYmVyIHRoYXQKKyAgICAgICAgICAgIHRoZSB1c2VyIGhhcyBj
aG9zZW4gdG8gc2VlIGNhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UpOiBOZXcsIGFsbG93IGEgcG9ydCB0byByZW1l
bWJlciB0aGUKKyAgICAgICAgICAgIHVzZXIncyBwcmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1
YWdlcyk6IE5ldywgcmV0dXJuIGEgVmVjdG9yIG9mIHRoZSB1c2VyJ3MgCisgICAgICAgICAgICBw
cmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZXMuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6IE5ldywgcmV0dXJuIHRoZSB1c2VyIHBy
ZWZlcnJlZCBsYW5ndWFnZXMgb3ZlcnJpZGUKKyAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRlc3Rp
bmcuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpraW5k
KToKKwogMjAxMy0wMi0wMyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW1Y4XSBQYXNzIGFuIElzb2xhdGUgdG8gSGFzSW5zdGFuY2UoKSAocGFydCAxKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHJl
dmlzaW9uIDE0MTI5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAKKyNpbmNsdWRlIDxMYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTQ4LDEyICs0
OSwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpIHsg
fQogCiAgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wp
IHsgIH0KICAgICB2aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2Fs
ZSgpIGNvbnN0IHsgcmV0dXJuIDAuMDVmOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNT
dHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNr
cyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxT
dHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpOyB9CisKICAgICBQYWdlR3JvdXAqIHBhZ2VHcm91cCgpIHsgcmV0
dXJuIG1fcGFnZUdyb3VwOyB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCShyZXZpc2lvbiAxNDEyOTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjX2gKICNkZWZpbmUgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hY19oCiAKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBNQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgpAQCAtNDEsMjUgKzQxLDMxIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2Fs
ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVl
dE92ZXJyaWRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9y
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkTGlzdGVuZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvckNh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZExpc3RlbmVyKikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFu
Z3VhZ2UoU3RyaW5nKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0IE9WRVJSSURFOworCiAgICAgdm9pZCBjYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CiAgICAgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYyhQYWdlR3JvdXAqKTsKIAotICAgIENvbG9yIGNhcHRpb25zV2luZG93Q29sb3IoKSBj
b25zdDsKLSAgICBDb2xvciBjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIENv
bG9yIGNhcHRpb25zVGV4dENvbG9yKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGNhcHRpb25zRGVmYXVs
dEZvbnQoKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdDsKKyAg
ICBTdHJpbmcgY2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRp
b25zVGV4dENvbG9yQ1NTKCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNUZXh0Q29sb3IoYm9v
bCYpIGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCkgY29uc3Q7CiAg
ICAgQ29sb3IgY2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImKSBjb25z
dDsKLSAgICBTdHJpbmcgY2FwdGlvbnNUZXh0RWRnZVN0eWxlKCkgY29uc3Q7Ci0gICAgU3RyaW5n
IGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgQ29sb3ImKSBjb25zdDsKLSAgICBTdHJpbmcgY3NzQ29sb3JQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlELCBjb25zdCBDb2xvciYpIGNvbnN0OworICAgIFN0cmluZyB3aW5kb3dSb3VuZGVk
Q29ybmVyUmFkaXVzQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VDU1Mo
KSBjb25zdDsKKyAgICBTdHJpbmcgY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBjb25zdCBDb2xvciYsIGJvb2wpIGNvbnN0OworICAgIFN0
cmluZyBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQsIGNvbnN0IENvbG9yJiwgYm9vbCkg
Y29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tCShyZXZpc2lvbiAxNDEyOTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDIxICsyNSw0MyBAQAogCiAj
aW1wb3J0ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spICYmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIAog
I2ltcG9ydCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oIgogCiAjaW1wb3J0ICJDb2xvck1h
Yy5oIgorI2ltcG9ydCAiQ29yZVRleHQvQ29yZVRleHQuaCIKICNpbXBvcnQgIkRPTVdyYXBwZXJX
b3JsZC5oIgogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJLVVJMLmgiCisj
aW1wb3J0ICJNZWRpYUFjY2Vzc2liaWxpdHkvTWVkaWFBY2Nlc3NpYmlsaXR5LmgiCiAjaW1wb3J0
ICJQYWdlR3JvdXAuaCIKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUZXh0VHJh
Y2tDdWUuaCIKICNpbXBvcnQgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKLSNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05B
TChNZWRpYUFjY2Vzc2liaWxpdHkpCisKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1B
Q2FwdGlvbkFwcGVhcmFuY2VHZXRTaG93Q2FwdGlvbnMsIGJvb2wsIChNQUNhcHRpb25BcHBlYXJh
bmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFDYXB0aW9uQXBwZWFyYW5jZVNldFNob3dDYXB0aW9ucywgdm9pZCwgKE1BQ2FwdGlvbkFw
cGVhcmFuY2VEb21haW4gZG9tYWluLCBib29sIHNob3dDYXB0aW9ucyksIChkb21haW4sIHNob3dD
YXB0aW9ucykpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJh
bmNlQ29weUZvcmVncm91bmRDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VE
b21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRv
bWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9u
QXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IsIENHQ29sb3JSZWYsIChNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlv
ciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1B
Q2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IsIENHQ29sb3JSZWYsIChNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhh
dmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHks
IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSwgQ0dGbG9hdCwgKE1BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3Ig
KmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJp
bGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5LCBDR0Zsb2F0LCAo
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSwgQ0dGbG9hdCwg
KE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LKE1lZGlhQWNj
ZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd1JvdW5kZWRDb3JuZXJSYWRp
dXMsIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRf
TElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERlc2Ny
aXB0b3JGb3JTdHlsZSwgQ1RGb250RGVzY3JpcHRvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VE
b21haW4gZG9tYWluLCAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciwgTUFD
YXB0aW9uQXBwZWFyYW5jZUZvbnRTdHlsZSBmb250U3R5bGUpLCAoZG9tYWluLCBiZWhhdmlvciwg
Zm9udFN0eWxlKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVh
cmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUsIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJh
bmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciks
IChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlLCBNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVk
Z2VTdHlsZSwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBl
YXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5L
KE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUFkZFNlbGVjdGVkTGFuZ3Vh
Z2UsIGJvb2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgQ0ZTdHJpbmdSZWYg
bGFuZ3VhZ2UpLCAoZG9tYWluLCBsYW5ndWFnZSkpOworU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJp
bGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcywgQ0ZBcnJheVJl
ZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluKSwgKGRvbWFpbikpOworCitTT0ZU
X0xJTktfUE9JTlRFUihNZWRpYUFjY2Vzc2liaWxpdHksIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNl
dHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtNQVhDYXB0
aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRrTUFYQ2FwdGlvbkFw
cGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKQorCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw3ICs3MSw2IEBAIHN0YXRpYyB2b2lk
IHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2UKICAgICBzdGF0aWNfY2FzdDxDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjKj4ob2JzZXJ2ZXIpLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7
CiB9CiAKLQogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYyhQYWdlR3JvdXAqIGdyb3VwKQogICAgIDogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhncm91
cCkKICAgICAsIG1fbGlzdGVuaW5nRm9yUHJlZmVyZW5jZUNoYW5nZXMoZmFsc2UpCkBAIC01OCwz
MCArNzksMzAgQEAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Q2FwdGlvblVzZXJQcgogCiBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp+Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYygpCiB7
Ci0gICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRp
b24oKSkKLSAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlm
aWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHdrQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCk7CisgICAgaWYgKGtNQVhDYXB0
aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikKKyAgICAgICAgQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2Fs
Q2VudGVyKCksIHRoaXMsIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlm
aWNhdGlvbiwgTlVMTCk7CiB9CiAKLWJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNl
ckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0Citib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAogewotICAgIHJldHVybiB3a0NhcHRp
b25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKCk7CisgICAgcmV0dXJuIE1BQ2FwdGlvbkFw
cGVhcmFuY2VHZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKTsK
IH0KIAotYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25z
KCkgY29uc3QKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0VXNlclByZWZlcnND
YXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7Ci0gICAgcmV0dXJuIHdrQ2FwdGlvbkFwcGVhcmFu
Y2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKCk7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZVNl
dFNob3dDYXB0aW9ucyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIHByZWZlcmVuY2Up
OwogfQotCisgICAgCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyRm9y
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIEFTU0VSVCghbV9jYXB0aW9uUHJlZmVyZW5j
ZUNoYW5nZUxpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcikpOwogCi0gICAgaWYgKCF3a0NhcHRp
b25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgaWYgKCFr
TUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBpZiAoIW1fbGlzdGVuaW5nRm9yUHJlZmVyZW5jZUNoYW5nZXMp
IHsKICAgICAgICAgbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlcyA9IHRydWU7Ci0gICAg
ICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIgKENGTm90aWZpY2F0aW9uQ2VudGVy
R2V0TG9jYWxDZW50ZXIoKSwgdGhpcywgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3Rp
ZmljYXRpb25DYWxsYmFjaywgd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5v
dGlmaWNhdGlvbigpLCBOVUxMLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxl
c2NlKTsKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlciAoQ0ZOb3RpZmlj
YXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCB1c2VyQ2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrLCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5n
c0NoYW5nZWROb3RpZmljYXRpb24sIE5VTEwsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yQ29hbGVzY2UpOwogICAgICAgICB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsK
ICAgICB9CiAgICAgCkBAIC05MCw2OCArMTExLDg4IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6cmVnaXN0ZXIKIAogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1bnJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQogewotICAgIGlmICh3a0NhcHRpb25BcHBl
YXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgaWYgKGtNQVhDYXB0
aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikKICAgICAgICAgbV9jYXB0
aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwogfQogCi1Db2xv
ciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29uc3QK
K1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1dpbmRvd0NTUygpIGNv
bnN0CiB7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIHdrQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IoKSk7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJl
aGF2aW9yIGJlaGF2aW9yOworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENG
LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNl
RG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CisKICAgICBDb2xvciB3aW5kb3dDb2xvcihjb2xvci5n
ZXQoKSk7CiAgICAgaWYgKCF3aW5kb3dDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHdpbmRvd0Nv
bG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OwotICAgIAotICAgIENHRmxvYXQgb3BhY2l0eTsKLSAg
ICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkoJm9wYWNpdHkpKQotICAg
ICAgICByZXR1cm4gQ29sb3Iod2luZG93Q29sb3IucmVkKCksIHdpbmRvd0NvbG9yLmdyZWVuKCks
IHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7Ci0g
ICAgCi0gICAgaWYgKCFjb2xvcikKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0gICAgCi0gICAg
cmV0dXJuIHdpbmRvd0NvbG9yOworCisgICAgQ0dGbG9hdCBvcGFjaXR5ID0gTUFDYXB0aW9uQXBw
ZWFyYW5jZUdldFdpbmRvd09wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAm
YmVoYXZpb3IpOworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLCBDb2xvcih3aW5kb3dDb2xvci5yZWQoKSwgd2luZG93Q29sb3IuZ3JlZW4oKSwg
d2luZG93Q29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwgYmVo
YXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKIH0KIAotQ29s
b3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zQmFja2dyb3Vu
ZENTUygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNh
bWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQt
bWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCiAgICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBkZWZh
dWx0QmFja2dyb3VuZENvbG9yLCAoQ29sb3IoMCwgMCwgMCwgMC44ICogMjU1KSkpOwotICAgIAot
ICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJh
bmNlQ29weUJhY2tncm91bmRDb2xvcigpKTsKKworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciBiZWhhdmlvcjsKKworICAgIENHQ29sb3JSZWYgY29sb3JjZyA9IDA7CisgICAgY29sb3Jj
ZyA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKGtNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICBpZiAoY29sb3JjZykKKyAgICAgICAg
Q0ZSZWxlYXNlKGNvbG9yY2cpOworCisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFk
b3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKGtNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CiAgICAgQ29sb3IgYmFja2dyb3VuZENv
bG9yKGNvbG9yLmdldCgpKTsKLSAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpIHsK
KyAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91bmRD
b2xvciA9IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfQotICAgIAotICAgIENHRmxvYXQg
b3BhY2l0eTsKLSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5
KCZvcGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKGJhY2tncm91bmRDb2xvci5yZWQoKSwg
YmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVlKCksIHN0YXRpY19j
YXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOwotICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAg
IHJldHVybiBDb2xvcigpOwotICAgIAotICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3I7CisKKyAg
ICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNp
dHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAwKTsKKyAgICByZXR1cm4gY29sb3JQ
cm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3IoYmFja2dyb3VuZENv
bG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUo
KSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSksIGJlaGF2aW9yID09IGtNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSk7CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dENvbG9yKCkgY29uc3QKK0NvbG9yIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dENvbG9yKGJvb2wmIGltcG9ydGFudCkgY29uc3QK
IHsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IoKSk7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJl
aGF2aW9yIGJlaGF2aW9yOworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENG
LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOwogICAgIENvbG9yIHRleHRDb2xvcihjb2xvci5n
ZXQoKSk7Ci0gICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgaWYgKCF0ZXh0Q29s
b3IuaXNWYWxpZCgpKQogICAgICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUg
c2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lci4KICAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6
OndoaXRlOwotICAgIH0KICAgICAKLSAgICBDR0Zsb2F0IG9wYWNpdHk7Ci0gICAgaWYgKHdrQ2Fw
dGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSgmb3BhY2l0eSkpCi0gICAgICAgIHJl
dHVybiBDb2xvcih0ZXh0Q29sb3IucmVkKCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0Q29sb3Iu
Ymx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKLSAgICAKLSAgICBpZiAo
IWNvbG9yKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICBDR0Zsb2F0IG9wYWNpdHkgPSBN
QUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOworICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZTsKKyAgICByZXR1cm4gQ29sb3IodGV4
dENvbG9yLnJlZCgpLCB0ZXh0Q29sb3IuZ3JlZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgc3RhdGlj
X2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7Cit9CiAgICAgCi0gICAgcmV0dXJuIHRleHRDb2xv
cjsKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRDb2xvckNT
UygpIGNvbnN0Cit7CisgICAgYm9vbCBpbXBvcnRhbnQ7CisgICAgQ29sb3IgdGV4dENvbG9yID0g
Y2FwdGlvbnNUZXh0Q29sb3IoaW1wb3J0YW50KTsKKworICAgIGlmICghdGV4dENvbG9yLmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gY29sb3JQ
cm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUNvbG9yLCB0ZXh0Q29sb3IsIGltcG9ydGFudCk7CiB9Cisg
ICAgCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6d2luZG93Um91bmRlZENvcm5l
clJhZGl1c0NTUygpIGNvbnN0Cit7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJl
aGF2aW9yOworICAgIENHRmxvYXQgcmFkaXVzID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRv
d1JvdW5kZWRDb3JuZXJSYWRpdXMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVo
YXZpb3IpOworICAgIGlmICghcmFkaXVzKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAorICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9w
ZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgnOicpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlLjAyZiIsIHJh
ZGl1cykpOworICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
VXNlVmFsdWUpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9ydGFudCIpOworICAgIGJ1
aWxkZXIuYXBwZW5kKCc7Jyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
ICAgIAogQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNFZGdlQ29sb3JG
b3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvcikgY29uc3QKIHsKICAgICBpbnQgZGlz
dGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0
ZSk7CkBAIC0xNjMsNyArMjA0LDcgQEAgQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
Y2FwdGlvbgogICAgIHJldHVybiB0ZXh0Q29sb3IubGlnaHQoKTsKIH0KIAotU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJv
cGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvcikg
Y29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjc3NQcm9wZXJ0eVdpdGhU
ZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0
IENvbG9yJiB0ZXh0Q29sb3IsIGJvb2wgaW1wb3J0YW50KSBjb25zdAogewogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKICAgICAKQEAgLTE3Miw1MiArMjEzLDU2IEBAIFN0cmluZyBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjc3NQcm8KICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICBidWlsZGVyLmFwcGVuZChjYXB0aW9uc0VkZ2VD
b2xvckZvclRleHRDb2xvcih0ZXh0Q29sb3IpLnNlcmlhbGl6ZWQoKSk7CisgICAgaWYgKGltcG9y
dGFudCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAhaW1wb3J0YW50Iik7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJzsnKTsKICAgICAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQog
Ci1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzQ29sb3JQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIGlkLCBjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6Y29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBjb25z
dCBDb2xvciYgY29sb3IsIGJvb2wgaW1wb3J0YW50KSBjb25zdAogewogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICAKICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJp
bmcoaWQpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGNv
bG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgaWYgKGltcG9ydGFudCkKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiAhaW1wb3J0YW50Iik7CiAgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKICAgICAKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0RWRnZVN0eWxlKCkgY29uc3QKK1N0cmluZyBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKIHsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlUmFpc2VkLCAoIiAtLjA1
ZW0gLS4wNWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVEZXByZXNzZWQsICgiIC4wNWVt
IC4wNWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0g
LjA3NWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgCi0gICAgQ29sb3IgY29sb3IgPSBj
YXB0aW9uc1RleHRDb2xvcigpOworCisgICAgYm9vbCB1bnVzZWQ7CisgICAgQ29sb3IgY29sb3Ig
PSBjYXB0aW9uc1RleHRDb2xvcih1bnVzZWQpOwogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQog
ICAgICAgICBjb2xvci5zZXROYW1lZENvbG9yKCJibGFjayIpOwogICAgIGNvbG9yID0gY2FwdGlv
bnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29sb3IpOwotICAgIAotICAgIHdrQ2FwdGlvblRleHRF
ZGdlU3R5bGUgdGV4dEVkZ2VTdHlsZSA9IHN0YXRpY19jYXN0PHdrQ2FwdGlvblRleHRFZGdlU3R5
bGU+KHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKCkpOworCisgICAgTUFDYXB0
aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VU
ZXh0RWRnZVN0eWxlIHRleHRFZGdlU3R5bGUgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVk
Z2VTdHlsZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CiAgICAg
c3dpdGNoICh0ZXh0RWRnZVN0eWxlKSB7Ci0gICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VT
dHlsZVVuZGVmaW5lZDoKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTm9uZToK
KyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVVbmRlZmluZWQ6
CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlTm9uZToKICAg
ICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVJhaXNlZDoKLSAgICAgICAgICAgIHJldHVybiBjc3NQ
cm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxl
UmFpc2VkLCBjb2xvcik7Ci0gICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJl
c3NlZDoKLSAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENT
U1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRGVwcmVzc2VkLCBjb2xvcik7Ci0gICAgICAg
IGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3c6Ci0gICAgICAgICAgICByZXR1
cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVk
Z2VTdHlsZURyb3BTaGFkb3csIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRn
ZVN0eWxlVW5pZm9ybToKLSAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRn
ZUNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgZWRnZVN0eWxlVW5pZm9ybSwgY29s
b3IpOworICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZVJhaXNl
ZDoKKyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1By
b3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlUmFpc2VkLCBjb2xvciwgYmVoYXZpb3IgPT0ga01B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0
aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVEZXByZXNzZWQ6CisgICAgICAgICAgICByZXR1cm4g
Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VT
dHlsZURlcHJlc3NlZCwgY29sb3IsIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3JVc2VWYWx1ZSk7CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRn
ZVN0eWxlRHJvcFNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0
RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29s
b3IsIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSk7Cisg
ICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlVW5pZm9ybToKKyAg
ICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZSwgZWRnZVN0eWxlVW5pZm9ybSwgY29sb3IsIGJlaGF2aW9yID09IGtN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4OgotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjI2LDEzICsyNzEsMTUgQEAgU3RyaW5n
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpbwogICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNEZWZh
dWx0Rm9udCgpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlv
bnNEZWZhdWx0Rm9udENTUygpIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRyPENHRm9udFJlZj4gZm9u
dChBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZSh3a0NhcHRpb25G
b250U3R5bGVEZWZhdWx0KSk7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2
aW9yOworICAgIAorICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmb250KEFkb3B0
Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JGb3JTdHlsZShrTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvciwga01BQ2FwdGlvbkFwcGVhcmFuY2VG
b250U3R5bGVEZWZhdWx0KSk7CiAgICAgaWYgKCFmb250KQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKLSAgICAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwg
Q0dGb250Q29weVBvc3RTY3JpcHROYW1lKGZvbnQuZ2V0KCkpKTsKKworICAgIFJldGFpblB0cjxD
RlR5cGVSZWY+IG5hbWUoQWRvcHRDRiwgQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9u
dC5nZXQoKSwga0NURm9udE5hbWVBdHRyaWJ1dGUpKTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIApAQCAtMjQwLDggKzI4NywxMSBAQCBTdHJpbmcg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiAgICAgCiAgICAgYnVpbGRlci5hcHBl
bmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOwogICAgIGJ1
aWxkZXIuYXBwZW5kKCI6IFwiIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobmFtZS5nZXQoKSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoIlwiOyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihuYW1lLmdldCgpKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKKyAg
ICBpZiAoYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKQor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0yNDks
NTQgKzI5OSw1MiBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiBT
dHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJp
ZGUoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQ7Ci0gICAgCi0gICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpOwot
ICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKworICAgIFN0cmluZyBiYWNrZ3JvdW5kID0gY2Fw
dGlvbnNCYWNrZ3JvdW5kQ1NTKCk7CisgICAgaWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSkgewog
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CiAg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OmFs
bE5vZGVzU2hhZG93UHNldWRvSWQoKSk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgneycpOwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBl
bmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsK
LSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7Ci0gICAgfQot
ICAgIAotICAgIGNvbG9yID0gY2FwdGlvbnNXaW5kb3dDb2xvcigpOwotICAgIGlmIChjb2xvci5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIg
dmlkZW86OiIpOwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4
dFRyYWNrQ3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKLSAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoYmFja2dyb3VuZCk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZCgnfScpOwogICAgIH0KLSAgICAKLSAgICBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9y
KCk7Ci0gICAgU3RyaW5nIGVkZ2VTdHlsZSA9IGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpOwotICAg
IFN0cmluZyBmb250TmFtZSA9IGNhcHRpb25zRGVmYXVsdEZvbnQoKTsKLSAgICBpZiAoY29sb3Iu
aXNWYWxpZCgpIHx8ICFlZGdlU3R5bGUuaXNFbXB0eSgpIHx8ICFmb250TmFtZS5pc0VtcHR5KCkp
IHsKKworICAgIFN0cmluZyB3aW5kb3dDb2xvciA9IGNhcHRpb25zV2luZG93Q1NTKCk7CisgICAg
U3RyaW5nIHdpbmRvd0Nvcm5lclJhZGl1cyA9IHdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1Mo
KTsKKyAgICBTdHJpbmcgY2FwdGlvbnNDb2xvciA9IGNhcHRpb25zVGV4dENvbG9yQ1NTKCk7Cisg
ICAgU3RyaW5nIGVkZ2VTdHlsZSA9IGNhcHRpb25zVGV4dEVkZ2VDU1MoKTsKKyAgICBTdHJpbmcg
Zm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCk7CisgICAgaWYgKCFjYXB0aW9uc0Nv
bG9yLmlzRW1wdHkoKSB8fCAhd2luZG93Q29sb3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb3JuZXJS
YWRpdXMuaXNFbXB0eSgpIHx8ICFlZGdlU3R5bGUuaXNFbXB0eSgpIHx8ICFmb250TmFtZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlk
ZW86OiIpOwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRy
YWNrQ3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKICAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoY29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3IpKTsKKwor
ICAgICAgICBpZiAoIXdpbmRvd0NvbG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3aW5kb3dDb2xvcik7CisgICAgICAgIGlmICghd2lu
ZG93Q29ybmVyUmFkaXVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZCh3aW5kb3dDb3JuZXJSYWRpdXMpOworICAgICAgICBpZiAoIWNhcHRp
b25zQ29sb3IuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKGNhcHRpb25zQ29sb3IpOwogICAgICAgICBpZiAoIWVkZ2VTdHlsZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZWRnZVN0
eWxlKTsKICAgICAgICAgaWYgKCFmb250TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZm9udE5hbWUpOwotICAgICAgICAKKwogICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsKIH0K
IAogZmxvYXQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUo
KSBjb25zdAogeworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKICAg
ICBDR0Zsb2F0IGNoYXJhY3RlclNjYWxlID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlv
bkZvbnRTaXplU2NhbGUoKTsKLSAgICBDR0Zsb2F0IHNjYWxlQWRqdXN0bWVudDsKLSAgICAKLSAg
ICBpZiAoIXdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoJnNjYWxl
QWRqdXN0bWVudCkpCisgICAgQ0dGbG9hdCBzY2FsZUFkanVzdG1lbnQgPSBNQUNhcHRpb25BcHBl
YXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
VXNlciwgJmJlaGF2aW9yKTsKKworICAgIGlmIChzY2FsZUFkanVzdG1lbnQgJiYgYmVoYXZpb3Ig
IT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKQogICAgICAgICByZXR1cm4g
Y2hhcmFjdGVyU2NhbGU7Ci0gICAgCisKICNpZiBkZWZpbmVkKF9fTFA2NF9fKSAmJiBfX0xQNjRf
XwogICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHNjYWxlQWRqdXN0bWVudCAqIGNo
YXJhY3RlclNjYWxlKTsKICNlbHNlCkBAIC0zMjIsOSArMzcwLDYgQEAgdm9pZCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjp1cGRhdGVDYQogICAgIAogICAgIHBhZ2VHcm91cCgpLT5yZW1vdmVV
c2VyU3R5bGVTaGVldEZyb21Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgY2FwdGlvbnNT
dHlsZVNoZWV0VVJMKTsKICAgICAKLSAgICBpZiAoIXVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAogICAgIFN0cmluZyBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldCA9IGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CiAgICAgaWYgKGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzMzLDYg
KzM3OCwzMCBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVwZGF0ZUNhCiAgICAg
ICAgICAgICAgVmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1
dGhvckxldmVsLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIAordm9pZCBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcgbGFuZ3VhZ2Up
IGNvbnN0Cit7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUFkZFNlbGVjdGVkTGFuZ3VhZ2Uoa01B
Q2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCBsYW5ndWFnZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKK30KKworVmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cHJl
ZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZSA9
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOworICAgIGlmICghb3ZlcnJpZGUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gbGFuZ3VhZ2VzKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRM
YW5ndWFnZXMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKSk7CisgICAgQ0ZJbmRleCBs
YW5ndWFnZUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CisKKyAgICBp
ZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
OjpwcmVmZXJyZWRMYW5ndWFnZXMoKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMobGFuZ3VhZ2VDb3VudCk7CisgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwg
bGFuZ3VhZ2VDb3VudDsgaSsrKQorICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVu
ZChzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFn
ZXMuZ2V0KCksIGkpKSk7CisKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30K
KwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xhbmd1YWdlLmNwcAkocmV2aXNpb24gMTQxMjkwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMSBAQCBz
dGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlCiAgICAgcmV0dXJuIG92ZXJy
aWRlOwogfQogCitWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUo
KQoreworICAgIHJldHVybiBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOworfQorCiB2b2lk
IG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3Zl
cnJpZGUpCiB7CiAgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxNDEyOTApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgp
OwogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOworVmVjdG9yPFN0cmlu
Zz4gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiB2b2lkIG92ZXJyaWRlVXNlclBy
ZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogU3RyaW5nIHByZWZlcnJl
ZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akMubW0JKHJldmlzaW9uIDE0MTI5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02MCwxNCArNjAsMTYgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhQwogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1ldGFk
YXRhQ29tbW9uS2V5VGl0bGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVTdWJ0aXRsZSwgTlNTdHJpbmcgKikKLVNP
RlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFp
bnNPbmx5Rm9yY2VkU3VidGl0bGVzLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZG
b3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0Zv
ckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRp
b24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3Np
YmlsaXR5LCBOU1N0cmluZyAqKQogI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRh
SXRlbUNsYXNzKCkKICNkZWZpbmUgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBnZXRBVlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0Q2xhc3MoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNM
ZWdpYmxlIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUoKQogI2RlZmluZSBBVk1ldGFk
YXRhQ29tbW9uS2V5VGl0bGUgZ2V0QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlKCkKICNkZWZpbmUg
QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uIGdldEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbigpCiAj
ZGVmaW5lIEFWTWVkaWFUeXBlU3VidGl0bGUgZ2V0QVZNZWRpYVR5cGVTdWJ0aXRsZSgpCi0jZGVm
aW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyBnZXRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKQorI2RlZmlu
ZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2li
aWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JB
Y2Nlc3NpYmlsaXR5KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVz
aWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3Jp
YmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkoKQogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC05NCw4ICs5NiwxNyBAQCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpLaW5kIEluYmFuZFRleHRUCiAgICAgTlNTdHJpbmcgKm1lZGlhVHlwZSA9
IFttX21lZGlhU2VsZWN0aW9uT3B0aW9uIG1lZGlhVHlwZV07CiAgICAgaWYgKFttZWRpYVR5cGUg
aXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbl0pCiAgICAgICAgIHJldHVy
biBDYXB0aW9uczsKLSAgICBpZiAoW21lZGlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QVZNZWRpYVR5
cGVTdWJ0aXRsZV0pCisgICAgaWYgKFttZWRpYVR5cGUgaXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFU
eXBlU3VidGl0bGVdKSB7CisKKyAgICAgICAgLy8gQW4gIlNESCIgdHJhY2sgaXMgYSBzdWJ0aXRs
ZSB0cmFjayBjcmVhdGVkIGZvciB0aGUgZGVhZiBvciBoYXJkLW9mLWhlYXJpbmcuICJjYXB0aW9u
cyIgaW4gV2ViVlRUIGFyZQorICAgICAgICAvLyAibGFiZWxlZCBhcyBhcHByb3ByaWF0ZSBmb3Ig
dGhlIGhhcmQtb2YtaGVhcmluZyIsIHNvIHRhZyBTREggc3V0aXRsZXMgYXMgImNhcHRpb25zIi4K
KyAgICAgICAgaWYgKFttX21lZGlhU2VsZWN0aW9uT3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0
aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3Np
YmlsaXR5XSkKKyAgICAgICAgICAgIHJldHVybiBDYXB0aW9uczsKKyAgICAgICAgaWYgKFttX21l
ZGlhU2VsZWN0aW9uT3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rl
cmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHldKQorICAgICAgICAg
ICAgcmV0dXJuIENhcHRpb25zOworICAgICAgICAKICAgICAgICAgcmV0dXJuIFN1YnRpdGxlczsK
KyAgICB9CiAKICAgICByZXR1cm4gQ2FwdGlvbnM7CiB9Cg==
</data>
<flag name="commit-queue"
          id="205685"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186296</attachid>
            <date>2013-02-03 21:13:17 -0800</date>
            <delta_ts>2013-02-03 21:24:43 -0800</delta_ts>
            <desc>Update patch for my good friend the style bot.</desc>
            <filename>patch_6.txt</filename>
            <type>text/plain</type>
            <size>30321</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTczNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTAzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldywg
YWxsb3cgYSBwb3J0IHRvIHJlbWVtYmVyIHRoYXQKKyAgICAgICAgICAgIHRoZSB1c2VyIGhhcyBj
aG9zZW4gdG8gc2VlIGNhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UpOiBOZXcsIGFsbG93IGEgcG9ydCB0byByZW1l
bWJlciB0aGUKKyAgICAgICAgICAgIHVzZXIncyBwcmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1
YWdlcyk6IE5ldywgcmV0dXJuIGEgVmVjdG9yIG9mIHRoZSB1c2VyJ3MgCisgICAgICAgICAgICBw
cmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZXMuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6IE5ldywgcmV0dXJuIHRoZSB1c2VyIHBy
ZWZlcnJlZCBsYW5ndWFnZXMgb3ZlcnJpZGUKKyAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRlc3Rp
bmcuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpraW5k
KToKKwogMjAxMy0wMi0wMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgU3BsaXQgZGVmYXVsdCBzdHlsZS1zaGVldCBzdGF0aWNzIG91dCBmcm9tIFN0eWxlUmVz
b2x2ZXIgaW50byBpdHMgb3duIGNsYXNzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAorI2luY2x1ZGUgPExhbmd1YWdl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtNDgsMTIgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
YXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZl
cnNDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIHVzZXJIYXND
YXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCB7IHJldHVybiAwLjA1ZjsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3Rl
bmVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsg
fQogCisgICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3Qg
eyB9CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25z
dCB7IHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsgfQorCiAgICAgUGFn
ZUdyb3VwKiBwYWdlR3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCiBwcm90ZWN0ZWQ6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMuaAkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5k
ZWYgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hY19oCiAjZGVmaW5lIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWNfaAogCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aCIKQEAgLTQxLDI1ICs0MSwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYygpOwogCiAgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJl
bmNlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0Nh
cHRpb25zKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblBy
ZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOwogCisgICAgdmly
dHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCBPVkVS
UklERTsKKwogICAgIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCiBwcml2YXRl
OgogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKik7CiAKLSAgICBDb2xv
ciBjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgY2FwdGlvbnNCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdDsKLSAgICBDb2xvciBjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0Owot
ICAgIFN0cmluZyBjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRp
b25zV2luZG93Q1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zQmFja2dyb3VuZENTUygp
IGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc1RleHRDb2xvckNTUygpIGNvbnN0OworICAgIENv
bG9yIGNhcHRpb25zVGV4dENvbG9yKGJvb2wmKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNE
ZWZhdWx0Rm9udENTUygpIGNvbnN0OwogICAgIENvbG9yIGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4
dENvbG9yKGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VT
dHlsZSgpIGNvbnN0OwotICAgIFN0cmluZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3Ry
aW5nIGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ29sb3ImKSBjb25zdDsK
KyAgICBTdHJpbmcgd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0OworICAgIFN0
cmluZyBjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29s
b3ImLCBib29sKSBjb25zdDsKKyAgICBTdHJpbmcgY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0
eUlELCBjb25zdCBDb2xvciYsIGJvb2wpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVDYXB0aW9u
U3R5bGVTaGVldE92ZXJpZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSwyMSArMjUsNDMgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBNQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCiAKICNpbXBvcnQgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMuaCIKIAogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkNvcmVUZXh0L0NvcmVUZXh0
LmgiCiAjaW1wb3J0ICJET01XcmFwcGVyV29ybGQuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lv
bi5oIgogI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiTWVkaWFBY2Nlc3NpYmlsaXR5L01lZGlh
QWNjZXNzaWJpbGl0eS5oIgogI2ltcG9ydCAiUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJTb2Z0TGlu
a2luZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrQ3VlLmgiCiAjaW1wb3J0ICJVc2VyU3R5bGVTaGVl
dFR5cGVzLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK1NP
RlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoTWVkaWFBY2Nlc3NpYmlsaXR5KQorCitTT0ZUX0xJ
TksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25z
LCBib29sLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSkKK1NP
RlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2Fw
dGlvbnMsIHZvaWQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgYm9vbCBzaG93
Q2FwdGlvbnMpLCAoZG9tYWluLCBzaG93Q2FwdGlvbnMpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNz
aWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IsIENHQ29sb3JS
ZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRp
YUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yLCBD
R0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFw
cGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJ
TksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9y
LCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZU
X0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3Vu
ZE9wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFD
YXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkK
K1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNr
Z3JvdW5kT3BhY2l0eSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWlu
LCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZp
b3IpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdl
dFdpbmRvd09wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFp
biwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2
aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzLCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAo
ZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRp
b25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yRm9yU3R5bGUsIENURm9udERlc2NyaXB0b3JS
ZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VCZWhhdmlvciAqYmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGUgZm9udFN0
eWxlKSwgKGRvbWFpbiwgYmVoYXZpb3IsIGZvbnRTdHlsZSkpCitTT0ZUX0xJTksoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplLCBD
R0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTkso
TWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSwg
TUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21h
aW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFw
cGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlLCBib29sLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpbiBkb21haW4sIENGU3RyaW5nUmVmIGxhbmd1YWdlKSwgKGRvbWFpbiwgbGFuZ3VhZ2UpKTsK
K1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2Vs
ZWN0ZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRv
bWFpbiksIChkb21haW4pKTsKKworU09GVF9MSU5LX1BPSU5URVIoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIENGU3Ry
aW5nUmVmKQorI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24gZ2V0a01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0
aW9uKCkKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDksNyArNzEsNiBAQCBzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlCiAg
ICAgc3RhdGljX2Nhc3Q8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYyo+KG9ic2VydmVyKS0+Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQogCi0KIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKiBncm91cCkKICAgICA6IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMoZ3JvdXApCiAgICAgLCBtX2xpc3RlbmluZ0ZvclByZWZlcmVu
Y2VDaGFuZ2VzKGZhbHNlKQpAQCAtNTgsMzAgKzc5LDMwIEBAIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OkNhcHRpb25Vc2VyUHIKIAogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMoKQogewotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0
U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0
aGlzLCB3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCks
IE5VTEwpOworICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24pCisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZO
b3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCBrTUFYQ2FwdGlvbkFwcGVh
cmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIE5VTEwpOwogfQogCi1ib29sIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdAor
Ym9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcygp
OworICAgIHJldHVybiBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25zKGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlcik7CiB9CiAKLWJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQogewotICAg
IHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOwor
ICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW5Vc2VyLCBwcmVmZXJlbmNlKTsKIH0KLQorICAgIAogdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBB
U1NFUlQoIW1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuY29udGFpbnMobGlzdGVu
ZXIpKTsKIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5v
dGlmaWNhdGlvbigpKQorICAgIGlmICgha01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFu
Z2VkTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKCFtX2xpc3Rl
bmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzKSB7CiAgICAgICAgIG1fbGlzdGVuaW5nRm9yUHJlZmVy
ZW5jZUNoYW5nZXMgPSB0cnVlOwotICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyIChDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHVzZXJDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2ssIHdrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCwgQ0ZOb3RpZmljYXRp
b25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIgKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhp
cywgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjaywga01B
WENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBOVUxMLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKICAgICAgICAgdXBkYXRlQ2Fw
dGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CiAgICAgfQogICAgIApAQCAtOTAsNjggKzExMSw4MyBA
QCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyCiAKIHZvaWQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikK
IHsKLSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNh
dGlvbigpKQorICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24pCiAgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMucmVt
b3ZlKGxpc3RlbmVyKTsKIH0KIAotQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2Fw
dGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6Y2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVm
PiBjb2xvcihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKCkpOwor
ICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKKyAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dD
b2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOworCiAgICAg
Q29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNW
YWxpZCgpKQogICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICAK
LSAgICBDR0Zsb2F0IG9wYWNpdHk7Ci0gICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5k
b3dPcGFjaXR5KCZvcGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHdpbmRvd0NvbG9yLnJl
ZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0
PGludD4ob3BhY2l0eSAqIDI1NSkpOwotICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBDb2xvcigpOwotICAgIAotICAgIHJldHVybiB3aW5kb3dDb2xvcjsKKworICAgIENHRmxv
YXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICByZXR1cm4gY29sb3JQcm9w
ZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3Iod2luZG93Q29sb3IucmVk
KCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8
aW50PihvcGFjaXR5ICogMjU1KSksIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3JVc2VWYWx1ZSk7CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNh
cHRpb25zQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0JhY2tncm91bmRDU1MoKSBjb25zdAogewogICAgIC8vIFRoaXMgZGVm
YXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlh
Q29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAg
IC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAs
IDAsIDAuOCAqIDI1NSkpKTsKLSAgICAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3Io
QWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IoKSk7CisKKyAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisKKyAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3Jv
dW5kQ29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKICAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOwotICAgIGlmICghYmFja2dyb3Vu
ZENvbG9yLmlzVmFsaWQoKSkgeworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKLSAgICB9
Ci0gICAgCi0gICAgQ0dGbG9hdCBvcGFjaXR5OwotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNl
R2V0QmFja2dyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQotICAgICAgICByZXR1cm4gQ29sb3IoYmFj
a2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENv
bG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7Ci0gICAgCi0gICAg
aWYgKCFjb2xvcikKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0gICAgCi0gICAgcmV0dXJuIGJh
Y2tncm91bmRDb2xvcjsKKworICAgIENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRCYWNrZ3JvdW5kT3BhY2l0eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIDAp
OworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBi
YWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwg
YmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKIH0KIAot
Q29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoKSBjb25z
dAorQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoYm9v
bCYgaW1wb3J0YW50KSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihB
ZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcigpKTsKKyAgICBN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENv
bG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CiAgICAgQ29s
b3IgdGV4dENvbG9yKGNvbG9yLmdldCgpKTsKLSAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkp
IHsKKyAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIC8vIFRoaXMgZGVmYXVs
dCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29u
dHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyLgogICAgICAg
ICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgfQotICAgIAotICAgIENHRmxvYXQgb3Bh
Y2l0eTsKLSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KCZv
cGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4dENvbG9y
LmdyZWVuKCksIHRleHRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1
NSkpOwogICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAg
IENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0
eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaW1wb3J0
YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOwor
ICAgIHJldHVybiBDb2xvcih0ZXh0Q29sb3IucmVkKCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0
Q29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKK30KICAgICAK
LSAgICByZXR1cm4gdGV4dENvbG9yOworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zVGV4dENvbG9yQ1NTKCkgY29uc3QKK3sKKyAgICBib29sIGltcG9ydGFudDsKKyAg
ICBDb2xvciB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOworCisgICAg
aWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5Q29sb3IsIHRleHRDb2xv
ciwgaW1wb3J0YW50KTsKIH0KKyAgICAKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25B
cHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgQ0dGbG9hdCByYWRpdXMgPSBNQUNhcHRp
b25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cyhrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaWYgKCFyYWRpdXMpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1
aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUJvcmRlclJhZGl1
cykpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIiUuMDJmIiwgcmFkaXVzKSk7CisgICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAh
aW1wb3J0YW50Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKIAorICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisgICAgCiBDb2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yKSBj
b25zdAogewogICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRl
eHRDb2xvciwgQ29sb3I6OndoaXRlKTsKQEAgLTE2Myw3ICsxOTksNyBAQCBDb2xvciBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uCiAgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgp
OwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRo
VGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25z
dCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNv
bnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIApAQCAtMTcyLDUyICsyMDgs
NTYgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNzc1BybwogICAgIGJ1aWxk
ZXIuYXBwZW5kKHZhbHVlKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXpl
ZCgpKTsKKyAgICBpZiAoaW1wb3J0YW50KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBv
cnRhbnQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpj
c3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvcikgY29u
c3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjb2xvclByb3BlcnR5Q1NTKENT
U1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNvbnN0
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIAogICAgIGJ1aWxkZXIuYXBwZW5k
KGdldFByb3BlcnR5TmFtZVN0cmluZyhpZCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoY29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICBpZiAoaW1wb3J0YW50
KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUoKSBj
b25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dEVkZ2VD
U1MoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdl
U3R5bGVSYWlzZWQsICgiIC0uMDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHls
ZURlcHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURy
b3BTaGFkb3csICgiIC4wNzVlbSAuMDc1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVu
aWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAK
LSAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7CisKKyAgICBib29sIHVudXNl
ZDsKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKHVudXNlZCk7CiAgICAgaWYg
KCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGNvbG9yLnNldE5hbWVkQ29sb3IoImJsYWNrIik7
CiAgICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb2xvcik7Ci0gICAg
Ci0gICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZSB0ZXh0RWRnZVN0eWxlID0gc3RhdGljX2Nhc3Q8
d2tDYXB0aW9uVGV4dEVkZ2VTdHlsZT4od2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5
bGUoKSk7CisKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAg
TUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUgdGV4dEVkZ2VTdHlsZSA9IE1BQ2FwdGlv
bkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNl
ciwgJmJlaGF2aW9yKTsKICAgICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUpIHsKLSAgICAgICAgY2Fz
ZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgotICAgICAgICBjYXNlIHdrQ2FwdGlv
blRleHRFZGdlU3R5bGVOb25lOgorICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4
dEVkZ2VTdHlsZVVuZGVmaW5lZDoKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRl
eHRFZGdlU3R5bGVOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkOgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlU
ZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRp
b25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgotICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNz
ZWQsIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRv
dzoKLSAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1By
b3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29sb3IpOwotICAgICAgICBj
YXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtOgotICAgICAgICAgICAgcmV0dXJuIGNz
c1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBl
ZGdlU3R5bGVVbmlmb3JtLCBjb2xvcik7CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFu
Y2VUZXh0RWRnZVN0eWxlUmFpc2VkOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0
aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNv
bG9yLCBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOwor
ICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoK
KyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3Bl
cnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRGVwcmVzc2VkLCBjb2xvciwgYmVoYXZpb3IgPT0ga01B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0
aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93OgorICAgICAgICAgICAgcmV0dXJu
IGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdl
U3R5bGVEcm9wU2hhZG93LCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRF
ZGdlU3R5bGVVbmlmb3JtOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRF
ZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBlZGdlU3R5bGVVbmlmb3JtLCBj
b2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsK
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVNYXg6Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjYs
MTMgKzI2NiwxNSBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCkgY29uc3QKIHsKLSAgICBSZXRh
aW5QdHI8Q0dGb250UmVmPiBmb250KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9u
dEZvclN0eWxlKHdrQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQpKTsKKyAgICBNQUNhcHRpb25BcHBl
YXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgCisgICAgUmV0YWluUHRyPENURm9udERlc2Ny
aXB0b3JSZWY+IGZvbnQoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3Jp
cHRvckZvclN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yLCBr
TUFDYXB0aW9uQXBwZWFyYW5jZUZvbnRTdHlsZURlZmF1bHQpKTsKICAgICBpZiAoIWZvbnQpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIAotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmFtZShBZG9wdENGLCBDR0ZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC5nZXQoKSkp
OworCisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gbmFtZShBZG9wdENGLCBDVEZvbnREZXNjcmlw
dG9yQ29weUF0dHJpYnV0ZShmb250LmdldCgpLCBrQ1RGb250TmFtZUF0dHJpYnV0ZSkpOwogICAg
IGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgCkBAIC0yNDAs
OCArMjgyLDExIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW8KICAg
ICAKICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlG
b250RmFtaWx5KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjogXCIiKTsKLSAgICBidWlsZGVyLmFw
cGVuZChuYW1lLmdldCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiXCI7Iik7CisgICAgYnVpbGRl
ci5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0KCkpKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgnIicpOworICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yVXNlVmFsdWUpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9ydGFudCIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KQEAgLTI0OSw1NCArMjk0LDUyIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpjYXB0aW8KIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0
aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKLSAgICAKLSAgICBDb2xvciBjb2xvciA9IGNhcHRpb25z
QmFja2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworCisgICAgU3Ry
aW5nIGJhY2tncm91bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKKyAgICBpZiAoIWJhY2tn
cm91bmQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgiIHZpZGVvOjoiKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kKFRleHRUcmFja0N1ZTo6YWxsTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKICAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoYmFja2dyb3VuZCk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgnfScpOwogICAgIH0KLSAgICAKLSAgICBjb2xvciA9IGNhcHRpb25zV2luZG93Q29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNl
dWRvSWQoKSk7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycp
OwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKLSAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7Ci0gICAgfQotICAgIAotICAgIGNvbG9y
ID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsKLSAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNU
ZXh0RWRnZVN0eWxlKCk7Ci0gICAgU3RyaW5nIGZvbnROYW1lID0gY2FwdGlvbnNEZWZhdWx0Rm9u
dCgpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwg
IWZvbnROYW1lLmlzRW1wdHkoKSkgeworCisgICAgU3RyaW5nIHdpbmRvd0NvbG9yID0gY2FwdGlv
bnNXaW5kb3dDU1MoKTsKKyAgICBTdHJpbmcgd2luZG93Q29ybmVyUmFkaXVzID0gd2luZG93Um91
bmRlZENvcm5lclJhZGl1c0NTUygpOworICAgIFN0cmluZyBjYXB0aW9uc0NvbG9yID0gY2FwdGlv
bnNUZXh0Q29sb3JDU1MoKTsKKyAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRn
ZUNTUygpOworICAgIFN0cmluZyBmb250TmFtZSA9IGNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKTsK
KyAgICBpZiAoIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb2xvci5pc0VtcHR5
KCkgfHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5
KCkgfHwgIWZvbnROYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVk
b0lkKCkpOwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUNvbG9yLCBjb2xvcikpOworCisgICAgICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0NvbG9y
KTsKKyAgICAgICAgaWYgKCF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0Nvcm5lclJhZGl1cyk7
CisgICAgICAgIGlmICghY2FwdGlvbnNDb2xvci5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY2FwdGlvbnNDb2xvcik7CiAgICAgICAgIGlm
ICghZWRnZVN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChlZGdlU3R5bGUpOwogICAgICAgICBpZiAoIWZvbnROYW1lLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChmb250TmFt
ZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgnfScpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC50b1N0cmluZygpOwogfQogCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpj
YXB0aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0CiB7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJl
aGF2aW9yIGJlaGF2aW9yOwogICAgIENHRmxvYXQgY2hhcmFjdGVyU2NhbGUgPSBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpOwotICAgIENHRmxvYXQgc2NhbGVB
ZGp1c3RtZW50OwotICAgIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZl
Q2hhcmFjdGVyU2l6ZSgmc2NhbGVBZGp1c3RtZW50KSkKKyAgICBDR0Zsb2F0IHNjYWxlQWRqdXN0
bWVudCA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOworCisgICAgaWYgKHNjYWxlQWRq
dXN0bWVudCAmJiBiZWhhdmlvciAhPSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFs
dWUpCiAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJTY2FsZTsKLSAgICAKKwogI2lmIGRlZmluZWQo
X19MUDY0X18pICYmIF9fTFA2NF9fCiAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
c2NhbGVBZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOwogI2Vsc2UKQEAgLTMyMiw5ICszNjUs
NiBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVwZGF0ZUNhCiAgICAgCiAgICAg
cGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogICAgIAotICAgIGlmICghdXNlckhh
c0NhcHRpb25QcmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgU3RyaW5n
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUo
KTsKICAgICBpZiAoY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0zMzMsNiArMzczLDMwIEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6dXBkYXRlQ2EKICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RJbkFs
bEZyYW1lcywgVXNlclN0eWxlQXV0aG9yTGV2ZWwsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMp
OwogfQogCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1
YWdlKFN0cmluZyBsYW5ndWFnZSkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQWRk
U2VsZWN0ZWRMYW5ndWFnZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIGxhbmd1YWdl
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAgIFZlY3Rv
cjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Cisg
ICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKwor
ICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVz
ZXIpKTsKKyAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3Vh
Z2VzLmdldCgpKTsKKworICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgVmVjdG9y
PFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZUNvdW50KTsKKyAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgIHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0
VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKKworICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAxNDE3MzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc2LDYgKzc2LDExIEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3Vh
Z2UKICAgICByZXR1cm4gb3ZlcnJpZGU7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNPdmVycmlkZSgpCit7CisgICAgcmV0dXJuIHByZWZlcnJlZExhbmd1YWdlc092
ZXJyaWRlKCk7Cit9CisKIHZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSkKIHsKICAgICBwcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZSgpID0gb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJl
dmlzaW9uIDE0MTczNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJp
bmcgZGVmYXVsdExhbmd1YWdlKCk7CiBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCk7CitWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsK
IHZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CiBTdHJpbmcgcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwLDE0ICs2MCwxNiBAQCBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDCiBTT0ZUX0xJTktfUE9JTlRFUihB
VkZvdW5kYXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJpbmcgKikKIFNPRlRf
TElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uLCBOU1N0
cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVN1YnRp
dGxlLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMsIE5TU3RyaW5nICopCitT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5z
Y3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVz
aWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICopCiAjZGVmaW5lIEFWTWV0YWRh
dGFJdGVtIGdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKQogI2RlZmluZSBBVlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0IGdldEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRDbGFzcygpCiAjZGVmaW5lIEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJs
ZSgpCiAjZGVmaW5lIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9u
S2V5VGl0bGUoKQogI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24gZ2V0QVZNZXRhZGF0
YUtleVNwYWNlQ29tbW9uKCkKICNkZWZpbmUgQVZNZWRpYVR5cGVTdWJ0aXRsZSBnZXRBVk1lZGlh
VHlwZVN1YnRpdGxlKCkKLSNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNl
ZFN1YnRpdGxlcygpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2Ny
aWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSgpCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTk0LDgg
Kzk2LDE3IEBAIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQgSW5iYW5kVGV4dFQKICAgICBO
U1N0cmluZyAqbWVkaWFUeXBlID0gW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gbWVkaWFUeXBlXTsK
ICAgICBpZiAoW21lZGlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QVZNZWRpYVR5cGVDbG9zZWRDYXB0
aW9uXSkKICAgICAgICAgcmV0dXJuIENhcHRpb25zOwotICAgIGlmIChbbWVkaWFUeXBlIGlzRXF1
YWxUb1N0cmluZzpBVk1lZGlhVHlwZVN1YnRpdGxlXSkKKyAgICBpZiAoW21lZGlhVHlwZSBpc0Vx
dWFsVG9TdHJpbmc6QVZNZWRpYVR5cGVTdWJ0aXRsZV0pIHsKKworICAgICAgICAvLyBBbiAiU0RI
IiB0cmFjayBpcyBhIHN1YnRpdGxlIHRyYWNrIGNyZWF0ZWQgZm9yIHRoZSBkZWFmIG9yIGhhcmQt
b2YtaGVhcmluZy4gImNhcHRpb25zIiBpbiBXZWJWVFQgYXJlCisgICAgICAgIC8vICJsYWJlbGVk
IGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgaGFyZC1vZi1oZWFyaW5nIiwgc28gdGFnIFNESCBzdXRp
dGxlcyBhcyAiY2FwdGlvbnMiLgorICAgICAgICBpZiAoW21fbWVkaWFTZWxlY3Rpb25PcHRpb24g
aGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nw
b2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHldKQorICAgICAgICAgICAgcmV0dXJuIENhcHRpb25z
OworICAgICAgICBpZiAoW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJp
c3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNz
aWJpbGl0eV0pCisgICAgICAgICAgICByZXR1cm4gQ2FwdGlvbnM7CisgICAgICAgIAogICAgICAg
ICByZXR1cm4gU3VidGl0bGVzOworICAgIH0KIAogICAgIHJldHVybiBDYXB0aW9uczsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186298</attachid>
            <date>2013-02-03 21:24:43 -0800</date>
            <delta_ts>2013-02-03 22:13:38 -0800</delta_ts>
            <desc>Another update.</desc>
            <filename>patch_7.txt</filename>
            <type>text/plain</type>
            <size>30921</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTczNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTAzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldywg
YWxsb3cgYSBwb3J0IHRvIHJlbWVtYmVyIHRoYXQKKyAgICAgICAgICAgIHRoZSB1c2VyIGhhcyBj
aG9zZW4gdG8gc2VlIGNhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UpOiBOZXcsIGFsbG93IGEgcG9ydCB0byByZW1l
bWJlciB0aGUKKyAgICAgICAgICAgIHVzZXIncyBwcmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1
YWdlcyk6IE5ldywgcmV0dXJuIGEgVmVjdG9yIG9mIHRoZSB1c2VyJ3MgCisgICAgICAgICAgICBw
cmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZXMuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6IE5ldywgcmV0dXJuIHRoZSB1c2VyIHBy
ZWZlcnJlZCBsYW5ndWFnZXMgb3ZlcnJpZGUKKyAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRlc3Rp
bmcuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpraW5k
KToKKwogMjAxMy0wMi0wMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgU3BsaXQgZGVmYXVsdCBzdHlsZS1zaGVldCBzdGF0aWNzIG91dCBmcm9tIFN0eWxlUmVz
b2x2ZXIgaW50byBpdHMgb3duIGNsYXNzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAorI2luY2x1ZGUgPExhbmd1YWdl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtNDgsMTIgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
YXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZl
cnNDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIHVzZXJIYXND
YXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCB7IHJldHVybiAwLjA1ZjsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3Rl
bmVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsg
fQogCisgICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3Qg
eyB9CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25z
dCB7IHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsgfQorCiAgICAgUGFn
ZUdyb3VwKiBwYWdlR3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCiBwcm90ZWN0ZWQ6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMuaAkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5k
ZWYgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hY19oCiAjZGVmaW5lIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWNfaAogCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aCIKQEAgLTQxLDI1ICs0MSwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYygpOwogCiAgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJl
bmNlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0Nh
cHRpb25zKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblBy
ZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOwogCisgICAgdmly
dHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCBPVkVS
UklERTsKKwogICAgIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCiBwcml2YXRl
OgogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKik7CiAKLSAgICBDb2xv
ciBjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgY2FwdGlvbnNCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdDsKLSAgICBDb2xvciBjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0Owot
ICAgIFN0cmluZyBjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRp
b25zV2luZG93Q1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zQmFja2dyb3VuZENTUygp
IGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc1RleHRDb2xvckNTUygpIGNvbnN0OworICAgIENv
bG9yIGNhcHRpb25zVGV4dENvbG9yKGJvb2wmKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNE
ZWZhdWx0Rm9udENTUygpIGNvbnN0OwogICAgIENvbG9yIGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4
dENvbG9yKGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VT
dHlsZSgpIGNvbnN0OwotICAgIFN0cmluZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3Ry
aW5nIGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ29sb3ImKSBjb25zdDsK
KyAgICBTdHJpbmcgd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0OworICAgIFN0
cmluZyBjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29s
b3ImLCBib29sKSBjb25zdDsKKyAgICBTdHJpbmcgY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0
eUlELCBjb25zdCBDb2xvciYsIGJvb2wpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVDYXB0aW9u
U3R5bGVTaGVldE92ZXJpZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSwyMSArMjUsNDMgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBNQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCiAKICNpbXBvcnQgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMuaCIKIAogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkNvcmVUZXh0L0NvcmVUZXh0
LmgiCiAjaW1wb3J0ICJET01XcmFwcGVyV29ybGQuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lv
bi5oIgogI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiTWVkaWFBY2Nlc3NpYmlsaXR5L01lZGlh
QWNjZXNzaWJpbGl0eS5oIgogI2ltcG9ydCAiUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJTb2Z0TGlu
a2luZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrQ3VlLmgiCiAjaW1wb3J0ICJVc2VyU3R5bGVTaGVl
dFR5cGVzLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK1NP
RlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoTWVkaWFBY2Nlc3NpYmlsaXR5KQorCitTT0ZUX0xJ
TksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25z
LCBib29sLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSkKK1NP
RlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2Fw
dGlvbnMsIHZvaWQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgYm9vbCBzaG93
Q2FwdGlvbnMpLCAoZG9tYWluLCBzaG93Q2FwdGlvbnMpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNz
aWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IsIENHQ29sb3JS
ZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRp
YUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yLCBD
R0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFw
cGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJ
TksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9y
LCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZU
X0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3Vu
ZE9wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFD
YXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkK
K1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNr
Z3JvdW5kT3BhY2l0eSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWlu
LCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZp
b3IpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdl
dFdpbmRvd09wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFp
biwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2
aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzLCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAo
ZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRp
b25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yRm9yU3R5bGUsIENURm9udERlc2NyaXB0b3JS
ZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VCZWhhdmlvciAqYmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGUgZm9udFN0
eWxlKSwgKGRvbWFpbiwgYmVoYXZpb3IsIGZvbnRTdHlsZSkpCitTT0ZUX0xJTksoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplLCBD
R0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTkso
TWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSwg
TUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21h
aW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFw
cGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlLCBib29sLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpbiBkb21haW4sIENGU3RyaW5nUmVmIGxhbmd1YWdlKSwgKGRvbWFpbiwgbGFuZ3VhZ2UpKTsK
K1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2Vs
ZWN0ZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRv
bWFpbiksIChkb21haW4pKTsKKworU09GVF9MSU5LX1BPSU5URVIoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIENGU3Ry
aW5nUmVmKQorI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24gZ2V0a01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0
aW9uKCkKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDksNyArNzEsNiBAQCBzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlCiAg
ICAgc3RhdGljX2Nhc3Q8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYyo+KG9ic2VydmVyKS0+Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQogCi0KIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKiBncm91cCkKICAgICA6IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMoZ3JvdXApCiAgICAgLCBtX2xpc3RlbmluZ0ZvclByZWZlcmVu
Y2VDaGFuZ2VzKGZhbHNlKQpAQCAtNTgsMzAgKzc5LDMwIEBAIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OkNhcHRpb25Vc2VyUHIKIAogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMoKQogewotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0
U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0
aGlzLCB3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCks
IE5VTEwpOworICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24pCisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZO
b3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCBrTUFYQ2FwdGlvbkFwcGVh
cmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIE5VTEwpOwogfQogCi1ib29sIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdAor
Ym9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcygp
OworICAgIHJldHVybiBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25zKGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlcik7CiB9CiAKLWJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQogewotICAg
IHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOwor
ICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW5Vc2VyLCBwcmVmZXJlbmNlKTsKIH0KLQorICAgIAogdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBB
U1NFUlQoIW1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuY29udGFpbnMobGlzdGVu
ZXIpKTsKIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5v
dGlmaWNhdGlvbigpKQorICAgIGlmICgha01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFu
Z2VkTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKCFtX2xpc3Rl
bmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzKSB7CiAgICAgICAgIG1fbGlzdGVuaW5nRm9yUHJlZmVy
ZW5jZUNoYW5nZXMgPSB0cnVlOwotICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyIChDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHVzZXJDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2ssIHdrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCwgQ0ZOb3RpZmljYXRp
b25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIgKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhp
cywgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjaywga01B
WENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBOVUxMLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKICAgICAgICAgdXBkYXRlQ2Fw
dGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CiAgICAgfQogICAgIApAQCAtOTAsNjggKzExMSw4MyBA
QCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyCiAKIHZvaWQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikK
IHsKLSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNh
dGlvbigpKQorICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24pCiAgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMucmVt
b3ZlKGxpc3RlbmVyKTsKIH0KIAotQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2Fw
dGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6Y2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVm
PiBjb2xvcihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKCkpOwor
ICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKKyAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dD
b2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOworCiAgICAg
Q29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNW
YWxpZCgpKQogICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICAK
LSAgICBDR0Zsb2F0IG9wYWNpdHk7Ci0gICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5k
b3dPcGFjaXR5KCZvcGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHdpbmRvd0NvbG9yLnJl
ZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0
PGludD4ob3BhY2l0eSAqIDI1NSkpOwotICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBDb2xvcigpOwotICAgIAotICAgIHJldHVybiB3aW5kb3dDb2xvcjsKKworICAgIENHRmxv
YXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICByZXR1cm4gY29sb3JQcm9w
ZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3Iod2luZG93Q29sb3IucmVk
KCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8
aW50PihvcGFjaXR5ICogMjU1KSksIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3JVc2VWYWx1ZSk7CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNh
cHRpb25zQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0JhY2tncm91bmRDU1MoKSBjb25zdAogewogICAgIC8vIFRoaXMgZGVm
YXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlh
Q29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAg
IC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAs
IDAsIDAuOCAqIDI1NSkpKTsKLSAgICAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3Io
QWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IoKSk7CisKKyAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisKKyAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3Jv
dW5kQ29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKICAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOwotICAgIGlmICghYmFja2dyb3Vu
ZENvbG9yLmlzVmFsaWQoKSkgeworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKLSAgICB9
Ci0gICAgCi0gICAgQ0dGbG9hdCBvcGFjaXR5OwotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNl
R2V0QmFja2dyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQotICAgICAgICByZXR1cm4gQ29sb3IoYmFj
a2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENv
bG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7Ci0gICAgCi0gICAg
aWYgKCFjb2xvcikKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0gICAgCi0gICAgcmV0dXJuIGJh
Y2tncm91bmRDb2xvcjsKKworICAgIENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRCYWNrZ3JvdW5kT3BhY2l0eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIDAp
OworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBi
YWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwg
YmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKIH0KIAot
Q29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoKSBjb25z
dAorQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoYm9v
bCYgaW1wb3J0YW50KSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihB
ZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcigpKTsKKyAgICBN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENv
bG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CiAgICAgQ29s
b3IgdGV4dENvbG9yKGNvbG9yLmdldCgpKTsKLSAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkp
IHsKKyAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIC8vIFRoaXMgZGVmYXVs
dCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29u
dHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyLgogICAgICAg
ICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgfQotICAgIAotICAgIENHRmxvYXQgb3Bh
Y2l0eTsKLSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KCZv
cGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4dENvbG9y
LmdyZWVuKCksIHRleHRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1
NSkpOwogICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAg
IENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0
eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaW1wb3J0
YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOwor
ICAgIHJldHVybiBDb2xvcih0ZXh0Q29sb3IucmVkKCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0
Q29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKK30KICAgICAK
LSAgICByZXR1cm4gdGV4dENvbG9yOworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zVGV4dENvbG9yQ1NTKCkgY29uc3QKK3sKKyAgICBib29sIGltcG9ydGFudDsKKyAg
ICBDb2xvciB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOworCisgICAg
aWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5Q29sb3IsIHRleHRDb2xv
ciwgaW1wb3J0YW50KTsKIH0KKyAgICAKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25B
cHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgQ0dGbG9hdCByYWRpdXMgPSBNQUNhcHRp
b25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cyhrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaWYgKCFyYWRpdXMpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1
aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUJvcmRlclJhZGl1
cykpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIiUuMDJmIiwgcmFkaXVzKSk7CisgICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAh
aW1wb3J0YW50Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKIAorICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisgICAgCiBDb2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yKSBj
b25zdAogewogICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRl
eHRDb2xvciwgQ29sb3I6OndoaXRlKTsKQEAgLTE2Myw3ICsxOTksNyBAQCBDb2xvciBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uCiAgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgp
OwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRo
VGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25z
dCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNv
bnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIApAQCAtMTcyLDUyICsyMDgs
NTYgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNzc1BybwogICAgIGJ1aWxk
ZXIuYXBwZW5kKHZhbHVlKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXpl
ZCgpKTsKKyAgICBpZiAoaW1wb3J0YW50KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBv
cnRhbnQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpj
c3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvcikgY29u
c3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjb2xvclByb3BlcnR5Q1NTKENT
U1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNvbnN0
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIAogICAgIGJ1aWxkZXIuYXBwZW5k
KGdldFByb3BlcnR5TmFtZVN0cmluZyhpZCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoY29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICBpZiAoaW1wb3J0YW50
KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUoKSBj
b25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dEVkZ2VD
U1MoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdl
U3R5bGVSYWlzZWQsICgiIC0uMDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHls
ZURlcHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURy
b3BTaGFkb3csICgiIC4wNzVlbSAuMDc1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVu
aWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAK
LSAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7CisKKyAgICBib29sIHVudXNl
ZDsKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKHVudXNlZCk7CiAgICAgaWYg
KCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGNvbG9yLnNldE5hbWVkQ29sb3IoImJsYWNrIik7
CiAgICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb2xvcik7Ci0gICAg
Ci0gICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZSB0ZXh0RWRnZVN0eWxlID0gc3RhdGljX2Nhc3Q8
d2tDYXB0aW9uVGV4dEVkZ2VTdHlsZT4od2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5
bGUoKSk7CisKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAg
TUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUgdGV4dEVkZ2VTdHlsZSA9IE1BQ2FwdGlv
bkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNl
ciwgJmJlaGF2aW9yKTsKICAgICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUpIHsKLSAgICAgICAgY2Fz
ZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgotICAgICAgICBjYXNlIHdrQ2FwdGlv
blRleHRFZGdlU3R5bGVOb25lOgorICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4
dEVkZ2VTdHlsZVVuZGVmaW5lZDoKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRl
eHRFZGdlU3R5bGVOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkOgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlU
ZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRp
b25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgotICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNz
ZWQsIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRv
dzoKLSAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1By
b3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29sb3IpOwotICAgICAgICBj
YXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtOgotICAgICAgICAgICAgcmV0dXJuIGNz
c1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBl
ZGdlU3R5bGVVbmlmb3JtLCBjb2xvcik7CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFu
Y2VUZXh0RWRnZVN0eWxlUmFpc2VkOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0
aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNv
bG9yLCBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOwor
ICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoK
KyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3Bl
cnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRGVwcmVzc2VkLCBjb2xvciwgYmVoYXZpb3IgPT0ga01B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0
aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93OgorICAgICAgICAgICAgcmV0dXJu
IGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdl
U3R5bGVEcm9wU2hhZG93LCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRF
ZGdlU3R5bGVVbmlmb3JtOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRF
ZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBlZGdlU3R5bGVVbmlmb3JtLCBj
b2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsK
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVNYXg6Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjYs
MTMgKzI2NiwxNSBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCkgY29uc3QKIHsKLSAgICBSZXRh
aW5QdHI8Q0dGb250UmVmPiBmb250KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9u
dEZvclN0eWxlKHdrQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQpKTsKKyAgICBNQUNhcHRpb25BcHBl
YXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgCisgICAgUmV0YWluUHRyPENURm9udERlc2Ny
aXB0b3JSZWY+IGZvbnQoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3Jp
cHRvckZvclN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yLCBr
TUFDYXB0aW9uQXBwZWFyYW5jZUZvbnRTdHlsZURlZmF1bHQpKTsKICAgICBpZiAoIWZvbnQpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIAotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmFtZShBZG9wdENGLCBDR0ZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC5nZXQoKSkp
OworCisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gbmFtZShBZG9wdENGLCBDVEZvbnREZXNjcmlw
dG9yQ29weUF0dHJpYnV0ZShmb250LmdldCgpLCBrQ1RGb250TmFtZUF0dHJpYnV0ZSkpOwogICAg
IGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgCkBAIC0yNDAs
OCArMjgyLDExIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW8KICAg
ICAKICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlG
b250RmFtaWx5KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjogXCIiKTsKLSAgICBidWlsZGVyLmFw
cGVuZChuYW1lLmdldCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiXCI7Iik7CisgICAgYnVpbGRl
ci5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0KCkpKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgnIicpOworICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yVXNlVmFsdWUpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9ydGFudCIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KQEAgLTI0OSw1NCArMjk0LDUyIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpjYXB0aW8KIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0
aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKLSAgICAKLSAgICBDb2xvciBjb2xvciA9IGNhcHRpb25z
QmFja2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworCisgICAgU3Ry
aW5nIGJhY2tncm91bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKKyAgICBpZiAoIWJhY2tn
cm91bmQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgiIHZpZGVvOjoiKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kKFRleHRUcmFja0N1ZTo6YWxsTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKICAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoYmFja2dyb3VuZCk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgnfScpOwogICAgIH0KLSAgICAKLSAgICBjb2xvciA9IGNhcHRpb25zV2luZG93Q29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNl
dWRvSWQoKSk7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycp
OwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKLSAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7Ci0gICAgfQotICAgIAotICAgIGNvbG9y
ID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsKLSAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNU
ZXh0RWRnZVN0eWxlKCk7Ci0gICAgU3RyaW5nIGZvbnROYW1lID0gY2FwdGlvbnNEZWZhdWx0Rm9u
dCgpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwg
IWZvbnROYW1lLmlzRW1wdHkoKSkgeworCisgICAgU3RyaW5nIHdpbmRvd0NvbG9yID0gY2FwdGlv
bnNXaW5kb3dDU1MoKTsKKyAgICBTdHJpbmcgd2luZG93Q29ybmVyUmFkaXVzID0gd2luZG93Um91
bmRlZENvcm5lclJhZGl1c0NTUygpOworICAgIFN0cmluZyBjYXB0aW9uc0NvbG9yID0gY2FwdGlv
bnNUZXh0Q29sb3JDU1MoKTsKKyAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRn
ZUNTUygpOworICAgIFN0cmluZyBmb250TmFtZSA9IGNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKTsK
KyAgICBpZiAoIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb2xvci5pc0VtcHR5
KCkgfHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5
KCkgfHwgIWZvbnROYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVk
b0lkKCkpOwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUNvbG9yLCBjb2xvcikpOworCisgICAgICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0NvbG9y
KTsKKyAgICAgICAgaWYgKCF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0Nvcm5lclJhZGl1cyk7
CisgICAgICAgIGlmICghY2FwdGlvbnNDb2xvci5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY2FwdGlvbnNDb2xvcik7CiAgICAgICAgIGlm
ICghZWRnZVN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChlZGdlU3R5bGUpOwogICAgICAgICBpZiAoIWZvbnROYW1lLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChmb250TmFt
ZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgnfScpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC50b1N0cmluZygpOwogfQogCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpj
YXB0aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0CiB7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJl
aGF2aW9yIGJlaGF2aW9yOwogICAgIENHRmxvYXQgY2hhcmFjdGVyU2NhbGUgPSBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpOwotICAgIENHRmxvYXQgc2NhbGVB
ZGp1c3RtZW50OwotICAgIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZl
Q2hhcmFjdGVyU2l6ZSgmc2NhbGVBZGp1c3RtZW50KSkKKyAgICBDR0Zsb2F0IHNjYWxlQWRqdXN0
bWVudCA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOworCisgICAgaWYgKHNjYWxlQWRq
dXN0bWVudCAmJiBiZWhhdmlvciAhPSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFs
dWUpCiAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJTY2FsZTsKLSAgICAKKwogI2lmIGRlZmluZWQo
X19MUDY0X18pICYmIF9fTFA2NF9fCiAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
c2NhbGVBZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOwogI2Vsc2UKQEAgLTMyMiw5ICszNjUs
NiBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVwZGF0ZUNhCiAgICAgCiAgICAg
cGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogICAgIAotICAgIGlmICghdXNlckhh
c0NhcHRpb25QcmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgU3RyaW5n
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUo
KTsKICAgICBpZiAoY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0zMzMsNiArMzczLDMwIEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6dXBkYXRlQ2EKICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RJbkFs
bEZyYW1lcywgVXNlclN0eWxlQXV0aG9yTGV2ZWwsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMp
OwogfQogCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1
YWdlKFN0cmluZyBsYW5ndWFnZSkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQWRk
U2VsZWN0ZWRMYW5ndWFnZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIGxhbmd1YWdl
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAgIFZlY3Rv
cjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Cisg
ICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKwor
ICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVz
ZXIpKTsKKyAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3Vh
Z2VzLmdldCgpKTsKKworICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgVmVjdG9y
PFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZUNvdW50KTsKKyAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgIHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0
VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKKworICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxNDE3MzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw3
ICs0MjAsNyBAQCB2b2lkIFBhZ2VHcm91cDo6aW52YWxpZGF0ZWRJbmplY3RlZFN0eWxlCiBDYXB0
aW9uVXNlclByZWZlcmVuY2VzKiBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcygpCiB7CiAg
ICAgaWYgKCFtX2NhcHRpb25QcmVmZXJlbmNlcykKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oTUFDKSAmJiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAg
ICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3Jl
YXRlKHRoaXMpOwogI2Vsc2UKICAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpjcmVhdGUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAxNDE3MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDExIEBAIHN0YXRpYyBW
ZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2UKICAgICByZXR1cm4gb3ZlcnJpZGU7CiB9
CiAKK1ZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpCit7Cisg
ICAgcmV0dXJuIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Cit9CisKIHZvaWQgb3ZlcnJp
ZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSkK
IHsKICAgICBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpID0gb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJldmlzaW9uIDE0MTczNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCk7CiBWZWN0
b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CitWZWN0b3I8U3RyaW5nPiB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKIHZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiBTdHJpbmcgcHJlZmVycmVkTGFuZ3Vh
Z2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQko
cmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE0ICs2MCwxNiBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWTWVkaWFDCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFDb21t
b25LZXlUaXRsZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwg
QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVN1YnRpdGxlLCBOU1N0cmluZyAqKQotU09GVF9MSU5L
X1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlG
b3JjZWRTdWJ0aXRsZXMsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRp
b24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNz
aWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHks
IE5TU3RyaW5nICopCiAjZGVmaW5lIEFWTWV0YWRhdGFJdGVtIGdldEFWTWV0YWRhdGFJdGVtQ2xh
c3MoKQogI2RlZmluZSBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0IGdldEFWUGxheWVySXRlbUxl
Z2libGVPdXRwdXRDbGFzcygpCiAjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUg
Z2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSgpCiAjZGVmaW5lIEFWTWV0YWRhdGFDb21t
b25LZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUoKQogI2RlZmluZSBBVk1ldGFk
YXRhS2V5U3BhY2VDb21tb24gZ2V0QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKCkKICNkZWZpbmUg
QVZNZWRpYVR5cGVTdWJ0aXRsZSBnZXRBVk1lZGlhVHlwZVN1YnRpdGxlKCkKLSNkZWZpbmUgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzIGdldEFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpCisjZGVmaW5lIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBn
ZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2li
aWxpdHkoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNv
dW5kRm9yQWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNp
Y0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSgpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTk0LDggKzk2LDE3IEBAIEluYmFuZFRleHRUcmFja1By
aXZhdGU6OktpbmQgSW5iYW5kVGV4dFQKICAgICBOU1N0cmluZyAqbWVkaWFUeXBlID0gW21fbWVk
aWFTZWxlY3Rpb25PcHRpb24gbWVkaWFUeXBlXTsKICAgICBpZiAoW21lZGlhVHlwZSBpc0VxdWFs
VG9TdHJpbmc6QVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uXSkKICAgICAgICAgcmV0dXJuIENhcHRp
b25zOwotICAgIGlmIChbbWVkaWFUeXBlIGlzRXF1YWxUb1N0cmluZzpBVk1lZGlhVHlwZVN1YnRp
dGxlXSkKKyAgICBpZiAoW21lZGlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QVZNZWRpYVR5cGVTdWJ0
aXRsZV0pIHsKKworICAgICAgICAvLyBBbiAiU0RIIiB0cmFjayBpcyBhIHN1YnRpdGxlIHRyYWNr
IGNyZWF0ZWQgZm9yIHRoZSBkZWFmIG9yIGhhcmQtb2YtaGVhcmluZy4gImNhcHRpb25zIiBpbiBX
ZWJWVFQgYXJlCisgICAgICAgIC8vICJsYWJlbGVkIGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgaGFy
ZC1vZi1oZWFyaW5nIiwgc28gdGFnIFNESCBzdXRpdGxlcyBhcyAiY2FwdGlvbnMiLgorICAgICAg
ICBpZiAoW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHld
KQorICAgICAgICAgICAgcmV0dXJuIENhcHRpb25zOworICAgICAgICBpZiAoW21fbWVkaWFTZWxl
Y3Rpb25PcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNE
ZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eV0pCisgICAgICAgICAgICByZXR1
cm4gQ2FwdGlvbnM7CisgICAgICAgIAogICAgICAgICByZXR1cm4gU3VidGl0bGVzOworICAgIH0K
IAogICAgIHJldHVybiBDYXB0aW9uczsKIH0K
</data>
<flag name="commit-queue"
          id="205692"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186304</attachid>
            <date>2013-02-03 22:13:38 -0800</date>
            <delta_ts>2013-02-04 07:44:14 -0800</delta_ts>
            <desc>One more time...</desc>
            <filename>patch_8.txt</filename>
            <type>text/plain</type>
            <size>31160</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTczNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTAzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldywg
YWxsb3cgYSBwb3J0IHRvIHJlbWVtYmVyIHRoYXQKKyAgICAgICAgICAgIHRoZSB1c2VyIGhhcyBj
aG9zZW4gdG8gc2VlIGNhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UpOiBOZXcsIGFsbG93IGEgcG9ydCB0byByZW1l
bWJlciB0aGUKKyAgICAgICAgICAgIHVzZXIncyBwcmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1
YWdlcyk6IE5ldywgcmV0dXJuIGEgVmVjdG9yIG9mIHRoZSB1c2VyJ3MgCisgICAgICAgICAgICBw
cmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZXMuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6IE5ldywgcmV0dXJuIHRoZSB1c2VyIHBy
ZWZlcnJlZCBsYW5ndWFnZXMgb3ZlcnJpZGUKKyAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRlc3Rp
bmcuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpraW5k
KToKKwogMjAxMy0wMi0wMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgU3BsaXQgZGVmYXVsdCBzdHlsZS1zaGVldCBzdGF0aWNzIG91dCBmcm9tIFN0eWxlUmVz
b2x2ZXIgaW50byBpdHMgb3duIGNsYXNzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAorI2luY2x1ZGUgPExhbmd1YWdl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtNDgsMTIgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
YXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZl
cnNDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIHVzZXJIYXND
YXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCB7IHJldHVybiAwLjA1ZjsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3Rl
bmVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsg
fQogCisgICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3Qg
eyB9CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25z
dCB7IHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsgfQorCiAgICAgUGFn
ZUdyb3VwKiBwYWdlR3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCiBwcm90ZWN0ZWQ6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMuaAkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5k
ZWYgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hY19oCiAjZGVmaW5lIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWNfaAogCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aCIKQEAgLTQxLDI1ICs0MSwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYygpOwogCiAgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJl
bmNlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0Nh
cHRpb25zKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblBy
ZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOwogCisgICAgdmly
dHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCBPVkVS
UklERTsKKwogICAgIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCiBwcml2YXRl
OgogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKik7CiAKLSAgICBDb2xv
ciBjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgY2FwdGlvbnNCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdDsKLSAgICBDb2xvciBjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0Owot
ICAgIFN0cmluZyBjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRp
b25zV2luZG93Q1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zQmFja2dyb3VuZENTUygp
IGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc1RleHRDb2xvckNTUygpIGNvbnN0OworICAgIENv
bG9yIGNhcHRpb25zVGV4dENvbG9yKGJvb2wmKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNE
ZWZhdWx0Rm9udENTUygpIGNvbnN0OwogICAgIENvbG9yIGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4
dENvbG9yKGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VT
dHlsZSgpIGNvbnN0OwotICAgIFN0cmluZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3Ry
aW5nIGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ29sb3ImKSBjb25zdDsK
KyAgICBTdHJpbmcgd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0OworICAgIFN0
cmluZyBjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29s
b3ImLCBib29sKSBjb25zdDsKKyAgICBTdHJpbmcgY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0
eUlELCBjb25zdCBDb2xvciYsIGJvb2wpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVDYXB0aW9u
U3R5bGVTaGVldE92ZXJpZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQkocmV2aXNpb24gMTQxNzM0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSwyMSArMjUsNDMgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBNQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCiAKICNpbXBvcnQgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMuaCIKIAogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkNvcmVUZXh0L0NvcmVUZXh0
LmgiCiAjaW1wb3J0ICJET01XcmFwcGVyV29ybGQuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lv
bi5oIgogI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiTWVkaWFBY2Nlc3NpYmlsaXR5L01lZGlh
QWNjZXNzaWJpbGl0eS5oIgogI2ltcG9ydCAiUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJTb2Z0TGlu
a2luZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrQ3VlLmgiCiAjaW1wb3J0ICJVc2VyU3R5bGVTaGVl
dFR5cGVzLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK1NP
RlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoTWVkaWFBY2Nlc3NpYmlsaXR5KQorCitTT0ZUX0xJ
TksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25z
LCBib29sLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSkKK1NP
RlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2Fw
dGlvbnMsIHZvaWQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgYm9vbCBzaG93
Q2FwdGlvbnMpLCAoZG9tYWluLCBzaG93Q2FwdGlvbnMpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNz
aWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IsIENHQ29sb3JS
ZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRp
YUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yLCBD
R0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFw
cGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJ
TksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9y
LCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZU
X0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3Vu
ZE9wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFD
YXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkK
K1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNr
Z3JvdW5kT3BhY2l0eSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWlu
LCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZp
b3IpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdl
dFdpbmRvd09wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFp
biwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2
aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzLCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAo
ZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRp
b25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yRm9yU3R5bGUsIENURm9udERlc2NyaXB0b3JS
ZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VCZWhhdmlvciAqYmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGUgZm9udFN0
eWxlKSwgKGRvbWFpbiwgYmVoYXZpb3IsIGZvbnRTdHlsZSkpCitTT0ZUX0xJTksoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplLCBD
R0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTkso
TWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSwg
TUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21h
aW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFw
cGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlLCBib29sLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpbiBkb21haW4sIENGU3RyaW5nUmVmIGxhbmd1YWdlKSwgKGRvbWFpbiwgbGFuZ3VhZ2UpKTsK
K1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2Vs
ZWN0ZWRMYW5ndWFnZXMsIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRv
bWFpbiksIChkb21haW4pKTsKKworU09GVF9MSU5LX1BPSU5URVIoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIENGU3Ry
aW5nUmVmKQorI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24gZ2V0a01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0
aW9uKCkKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDksNyArNzEsNiBAQCBzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlCiAg
ICAgc3RhdGljX2Nhc3Q8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYyo+KG9ic2VydmVyKS0+Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQogCi0KIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKiBncm91cCkKICAgICA6IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMoZ3JvdXApCiAgICAgLCBtX2xpc3RlbmluZ0ZvclByZWZlcmVu
Y2VDaGFuZ2VzKGZhbHNlKQpAQCAtNTgsMzAgKzc5LDMwIEBAIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OkNhcHRpb25Vc2VyUHIKIAogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMoKQogewotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0
U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0
aGlzLCB3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCks
IE5VTEwpOworICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24pCisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZO
b3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCBrTUFYQ2FwdGlvbkFwcGVh
cmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIE5VTEwpOwogfQogCi1ib29sIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdAor
Ym9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcygp
OworICAgIHJldHVybiBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25zKGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlcik7CiB9CiAKLWJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQogewotICAg
IHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOwor
ICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW5Vc2VyLCBwcmVmZXJlbmNlKTsKIH0KLQorICAgIAogdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBB
U1NFUlQoIW1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuY29udGFpbnMobGlzdGVu
ZXIpKTsKIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5v
dGlmaWNhdGlvbigpKQorICAgIGlmICgha01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFu
Z2VkTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKCFtX2xpc3Rl
bmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzKSB7CiAgICAgICAgIG1fbGlzdGVuaW5nRm9yUHJlZmVy
ZW5jZUNoYW5nZXMgPSB0cnVlOwotICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyIChDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHVzZXJDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2ssIHdrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCwgQ0ZOb3RpZmljYXRp
b25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIgKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhp
cywgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjaywga01B
WENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBOVUxMLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKICAgICAgICAgdXBkYXRlQ2Fw
dGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CiAgICAgfQogICAgIApAQCAtOTAsNjggKzExMSw4MyBA
QCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyCiAKIHZvaWQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikK
IHsKLSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNh
dGlvbigpKQorICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24pCiAgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMucmVt
b3ZlKGxpc3RlbmVyKTsKIH0KIAotQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2Fw
dGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6Y2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVm
PiBjb2xvcihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKCkpOwor
ICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKKyAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dD
b2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOworCiAgICAg
Q29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNW
YWxpZCgpKQogICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICAK
LSAgICBDR0Zsb2F0IG9wYWNpdHk7Ci0gICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5k
b3dPcGFjaXR5KCZvcGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHdpbmRvd0NvbG9yLnJl
ZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0
PGludD4ob3BhY2l0eSAqIDI1NSkpOwotICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBDb2xvcigpOwotICAgIAotICAgIHJldHVybiB3aW5kb3dDb2xvcjsKKworICAgIENHRmxv
YXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICByZXR1cm4gY29sb3JQcm9w
ZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3Iod2luZG93Q29sb3IucmVk
KCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8
aW50PihvcGFjaXR5ICogMjU1KSksIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3JVc2VWYWx1ZSk7CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNh
cHRpb25zQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0JhY2tncm91bmRDU1MoKSBjb25zdAogewogICAgIC8vIFRoaXMgZGVm
YXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlh
Q29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAg
IC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAs
IDAsIDAuOCAqIDI1NSkpKTsKLSAgICAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3Io
QWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IoKSk7CisKKyAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisKKyAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3Jv
dW5kQ29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKICAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOwotICAgIGlmICghYmFja2dyb3Vu
ZENvbG9yLmlzVmFsaWQoKSkgeworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKLSAgICB9
Ci0gICAgCi0gICAgQ0dGbG9hdCBvcGFjaXR5OwotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNl
R2V0QmFja2dyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQotICAgICAgICByZXR1cm4gQ29sb3IoYmFj
a2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENv
bG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7Ci0gICAgCi0gICAg
aWYgKCFjb2xvcikKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0gICAgCi0gICAgcmV0dXJuIGJh
Y2tncm91bmRDb2xvcjsKKworICAgIENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRCYWNrZ3JvdW5kT3BhY2l0eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIDAp
OworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBi
YWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwg
YmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKIH0KIAot
Q29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoKSBjb25z
dAorQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoYm9v
bCYgaW1wb3J0YW50KSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihB
ZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcigpKTsKKyAgICBN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENv
bG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CiAgICAgQ29s
b3IgdGV4dENvbG9yKGNvbG9yLmdldCgpKTsKLSAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkp
IHsKKyAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIC8vIFRoaXMgZGVmYXVs
dCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29u
dHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyLgogICAgICAg
ICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgfQotICAgIAotICAgIENHRmxvYXQgb3Bh
Y2l0eTsKLSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KCZv
cGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4dENvbG9y
LmdyZWVuKCksIHRleHRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1
NSkpOwogICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAg
IENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0
eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaW1wb3J0
YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOwor
ICAgIHJldHVybiBDb2xvcih0ZXh0Q29sb3IucmVkKCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0
Q29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKK30KICAgICAK
LSAgICByZXR1cm4gdGV4dENvbG9yOworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zVGV4dENvbG9yQ1NTKCkgY29uc3QKK3sKKyAgICBib29sIGltcG9ydGFudDsKKyAg
ICBDb2xvciB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOworCisgICAg
aWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5Q29sb3IsIHRleHRDb2xv
ciwgaW1wb3J0YW50KTsKIH0KKyAgICAKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25B
cHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgQ0dGbG9hdCByYWRpdXMgPSBNQUNhcHRp
b25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cyhrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaWYgKCFyYWRpdXMpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1
aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUJvcmRlclJhZGl1
cykpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIiUuMDJmIiwgcmFkaXVzKSk7CisgICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAh
aW1wb3J0YW50Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKIAorICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisgICAgCiBDb2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yKSBj
b25zdAogewogICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRl
eHRDb2xvciwgQ29sb3I6OndoaXRlKTsKQEAgLTE2Myw3ICsxOTksNyBAQCBDb2xvciBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uCiAgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgp
OwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRo
VGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25z
dCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNv
bnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIApAQCAtMTcyLDUyICsyMDgs
NTYgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNzc1BybwogICAgIGJ1aWxk
ZXIuYXBwZW5kKHZhbHVlKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXpl
ZCgpKTsKKyAgICBpZiAoaW1wb3J0YW50KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBv
cnRhbnQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpj
c3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvcikgY29u
c3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjb2xvclByb3BlcnR5Q1NTKENT
U1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNvbnN0
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIAogICAgIGJ1aWxkZXIuYXBwZW5k
KGdldFByb3BlcnR5TmFtZVN0cmluZyhpZCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoY29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICBpZiAoaW1wb3J0YW50
KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUoKSBj
b25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dEVkZ2VD
U1MoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdl
U3R5bGVSYWlzZWQsICgiIC0uMDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHls
ZURlcHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURy
b3BTaGFkb3csICgiIC4wNzVlbSAuMDc1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVu
aWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAK
LSAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7CisKKyAgICBib29sIHVudXNl
ZDsKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKHVudXNlZCk7CiAgICAgaWYg
KCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGNvbG9yLnNldE5hbWVkQ29sb3IoImJsYWNrIik7
CiAgICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb2xvcik7Ci0gICAg
Ci0gICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZSB0ZXh0RWRnZVN0eWxlID0gc3RhdGljX2Nhc3Q8
d2tDYXB0aW9uVGV4dEVkZ2VTdHlsZT4od2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5
bGUoKSk7CisKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAg
TUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUgdGV4dEVkZ2VTdHlsZSA9IE1BQ2FwdGlv
bkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNl
ciwgJmJlaGF2aW9yKTsKICAgICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUpIHsKLSAgICAgICAgY2Fz
ZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgotICAgICAgICBjYXNlIHdrQ2FwdGlv
blRleHRFZGdlU3R5bGVOb25lOgorICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4
dEVkZ2VTdHlsZVVuZGVmaW5lZDoKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRl
eHRFZGdlU3R5bGVOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkOgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlU
ZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRp
b25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgotICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNz
ZWQsIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRv
dzoKLSAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1By
b3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29sb3IpOwotICAgICAgICBj
YXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtOgotICAgICAgICAgICAgcmV0dXJuIGNz
c1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBl
ZGdlU3R5bGVVbmlmb3JtLCBjb2xvcik7CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFu
Y2VUZXh0RWRnZVN0eWxlUmFpc2VkOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0
aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNv
bG9yLCBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOwor
ICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoK
KyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3Bl
cnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRGVwcmVzc2VkLCBjb2xvciwgYmVoYXZpb3IgPT0ga01B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0
aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93OgorICAgICAgICAgICAgcmV0dXJu
IGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdl
U3R5bGVEcm9wU2hhZG93LCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRF
ZGdlU3R5bGVVbmlmb3JtOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRF
ZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBlZGdlU3R5bGVVbmlmb3JtLCBj
b2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsK
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVNYXg6Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjYs
MTMgKzI2NiwxNSBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCkgY29uc3QKIHsKLSAgICBSZXRh
aW5QdHI8Q0dGb250UmVmPiBmb250KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9u
dEZvclN0eWxlKHdrQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQpKTsKKyAgICBNQUNhcHRpb25BcHBl
YXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgCisgICAgUmV0YWluUHRyPENURm9udERlc2Ny
aXB0b3JSZWY+IGZvbnQoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3Jp
cHRvckZvclN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yLCBr
TUFDYXB0aW9uQXBwZWFyYW5jZUZvbnRTdHlsZURlZmF1bHQpKTsKICAgICBpZiAoIWZvbnQpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIAotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmFtZShBZG9wdENGLCBDR0ZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC5nZXQoKSkp
OworCisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gbmFtZShBZG9wdENGLCBDVEZvbnREZXNjcmlw
dG9yQ29weUF0dHJpYnV0ZShmb250LmdldCgpLCBrQ1RGb250TmFtZUF0dHJpYnV0ZSkpOwogICAg
IGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgCkBAIC0yNDAs
OCArMjgyLDExIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW8KICAg
ICAKICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlG
b250RmFtaWx5KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjogXCIiKTsKLSAgICBidWlsZGVyLmFw
cGVuZChuYW1lLmdldCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiXCI7Iik7CisgICAgYnVpbGRl
ci5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0KCkpKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgnIicpOworICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yVXNlVmFsdWUpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9ydGFudCIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KQEAgLTI0OSw1NCArMjk0LDUyIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpjYXB0aW8KIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0
aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKLSAgICAKLSAgICBDb2xvciBjb2xvciA9IGNhcHRpb25z
QmFja2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworCisgICAgU3Ry
aW5nIGJhY2tncm91bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKKyAgICBpZiAoIWJhY2tn
cm91bmQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgiIHZpZGVvOjoiKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kKFRleHRUcmFja0N1ZTo6YWxsTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKICAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoYmFja2dyb3VuZCk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgnfScpOwogICAgIH0KLSAgICAKLSAgICBjb2xvciA9IGNhcHRpb25zV2luZG93Q29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNl
dWRvSWQoKSk7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycp
OwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKLSAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7Ci0gICAgfQotICAgIAotICAgIGNvbG9y
ID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsKLSAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNU
ZXh0RWRnZVN0eWxlKCk7Ci0gICAgU3RyaW5nIGZvbnROYW1lID0gY2FwdGlvbnNEZWZhdWx0Rm9u
dCgpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwg
IWZvbnROYW1lLmlzRW1wdHkoKSkgeworCisgICAgU3RyaW5nIHdpbmRvd0NvbG9yID0gY2FwdGlv
bnNXaW5kb3dDU1MoKTsKKyAgICBTdHJpbmcgd2luZG93Q29ybmVyUmFkaXVzID0gd2luZG93Um91
bmRlZENvcm5lclJhZGl1c0NTUygpOworICAgIFN0cmluZyBjYXB0aW9uc0NvbG9yID0gY2FwdGlv
bnNUZXh0Q29sb3JDU1MoKTsKKyAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRn
ZUNTUygpOworICAgIFN0cmluZyBmb250TmFtZSA9IGNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKTsK
KyAgICBpZiAoIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb2xvci5pc0VtcHR5
KCkgfHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5
KCkgfHwgIWZvbnROYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVk
b0lkKCkpOwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUNvbG9yLCBjb2xvcikpOworCisgICAgICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0NvbG9y
KTsKKyAgICAgICAgaWYgKCF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0Nvcm5lclJhZGl1cyk7
CisgICAgICAgIGlmICghY2FwdGlvbnNDb2xvci5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY2FwdGlvbnNDb2xvcik7CiAgICAgICAgIGlm
ICghZWRnZVN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChlZGdlU3R5bGUpOwogICAgICAgICBpZiAoIWZvbnROYW1lLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChmb250TmFt
ZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgnfScpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC50b1N0cmluZygpOwogfQogCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpj
YXB0aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0CiB7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJl
aGF2aW9yIGJlaGF2aW9yOwogICAgIENHRmxvYXQgY2hhcmFjdGVyU2NhbGUgPSBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpOwotICAgIENHRmxvYXQgc2NhbGVB
ZGp1c3RtZW50OwotICAgIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZl
Q2hhcmFjdGVyU2l6ZSgmc2NhbGVBZGp1c3RtZW50KSkKKyAgICBDR0Zsb2F0IHNjYWxlQWRqdXN0
bWVudCA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOworCisgICAgaWYgKHNjYWxlQWRq
dXN0bWVudCAmJiBiZWhhdmlvciAhPSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFs
dWUpCiAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJTY2FsZTsKLSAgICAKKwogI2lmIGRlZmluZWQo
X19MUDY0X18pICYmIF9fTFA2NF9fCiAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
c2NhbGVBZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOwogI2Vsc2UKQEAgLTMyMiw5ICszNjUs
NiBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVwZGF0ZUNhCiAgICAgCiAgICAg
cGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogICAgIAotICAgIGlmICghdXNlckhh
c0NhcHRpb25QcmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgU3RyaW5n
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUo
KTsKICAgICBpZiAoY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0zMzMsNiArMzczLDMwIEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6dXBkYXRlQ2EKICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RJbkFs
bEZyYW1lcywgVXNlclN0eWxlQXV0aG9yTGV2ZWwsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMp
OwogfQogCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1
YWdlKFN0cmluZyBsYW5ndWFnZSkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQWRk
U2VsZWN0ZWRMYW5ndWFnZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIGxhbmd1YWdl
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAgIFZlY3Rv
cjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Cisg
ICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKwor
ICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVz
ZXIpKTsKKyAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3Vh
Z2VzLmdldCgpKTsKKworICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgVmVjdG9y
PFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZUNvdW50KTsKKyAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgIHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0
VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKKworICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxNDE3MzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMuaCIKICNlbHNlCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5o
IgpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgUGFnZUdyb3VwOjppbnZhbGlkYXRlZEluamVjdGVk
U3R5bGUKIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVu
Y2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKQotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShNQUMpICYmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKICAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjcmVhdGUodGhpcyk7CiAjZWxzZQogICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNl
cyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNyZWF0ZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDE0MTczNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMTEg
QEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZQogICAgIHJldHVybiBv
dmVycmlkZTsKIH0KIAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJy
aWRlKCkKK3sKKyAgICByZXR1cm4gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKK30KKwog
dm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG92ZXJyaWRlKQogewogICAgIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkgPSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMTQxNzM0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBkZWZhdWx0TGFuZ3Vh
Z2UoKTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK1ZlY3RvcjxT
dHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIFN0cmluZyBwcmVm
ZXJyZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkZPYmpDLm1tCShyZXZpc2lvbiAxNDE3MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjAsMTQgKzYwLDE2IEBAIFNPRlRfTElOS19QT0lOVEVSKEFW
Rm91bmRhdGlvbiwgQVZNZWRpYUMKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZN
ZXRhZGF0YUNvbW1vbktleVRpdGxlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZG
b3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJ
TktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0bGUsIE5TU3RyaW5nICop
Ci1TT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Nv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFs
b2dGb3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNj
ZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKICNkZWZpbmUgQVZNZXRhZGF0YUl0ZW0gZ2V0QVZNZXRh
ZGF0YUl0ZW1DbGFzcygpCiAjZGVmaW5lIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgZ2V0QVZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dENsYXNzKCkKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3Rlcmlz
dGljTGVnaWJsZSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKICNkZWZpbmUgQVZN
ZXRhZGF0YUNvbW1vbktleVRpdGxlIGdldEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSgpCiAjZGVm
aW5lIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiBnZXRBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24o
KQogI2RlZmluZSBBVk1lZGlhVHlwZVN1YnRpdGxlIGdldEFWTWVkaWFUeXBlU3VidGl0bGUoKQot
I2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMg
Z2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkKKyNk
ZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nl
c3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9n
Rm9yQWNjZXNzaWJpbGl0eSgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJl
c011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rl
c2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5KCkKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtOTQsOCArOTYsMTcgQEAgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBJbmJhbmRUZXh0VAogICAgIE5TU3RyaW5nICptZWRpYVR5
cGUgPSBbbV9tZWRpYVNlbGVjdGlvbk9wdGlvbiBtZWRpYVR5cGVdOwogICAgIGlmIChbbWVkaWFU
eXBlIGlzRXF1YWxUb1N0cmluZzpBVk1lZGlhVHlwZUNsb3NlZENhcHRpb25dKQogICAgICAgICBy
ZXR1cm4gQ2FwdGlvbnM7Ci0gICAgaWYgKFttZWRpYVR5cGUgaXNFcXVhbFRvU3RyaW5nOkFWTWVk
aWFUeXBlU3VidGl0bGVdKQorICAgIGlmIChbbWVkaWFUeXBlIGlzRXF1YWxUb1N0cmluZzpBVk1l
ZGlhVHlwZVN1YnRpdGxlXSkgeworCisgICAgICAgIC8vIEFuICJTREgiIHRyYWNrIGlzIGEgc3Vi
dGl0bGUgdHJhY2sgY3JlYXRlZCBmb3IgdGhlIGRlYWYgb3IgaGFyZC1vZi1oZWFyaW5nLiAiY2Fw
dGlvbnMiIGluIFdlYlZUVCBhcmUKKyAgICAgICAgLy8gImxhYmVsZWQgYXMgYXBwcm9wcmlhdGUg
Zm9yIHRoZSBoYXJkLW9mLWhlYXJpbmciLCBzbyB0YWcgU0RIIHN1dGl0bGVzIGFzICJjYXB0aW9u
cyIuCisgICAgICAgIGlmIChbbV9tZWRpYVNlbGVjdGlvbk9wdGlvbiBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNj
ZXNzaWJpbGl0eV0pCisgICAgICAgICAgICByZXR1cm4gQ2FwdGlvbnM7CisgICAgICAgIGlmIChb
bV9tZWRpYVNlbGVjdGlvbk9wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5XSkKKyAgICAg
ICAgICAgIHJldHVybiBDYXB0aW9uczsKKyAgICAgICAgCiAgICAgICAgIHJldHVybiBTdWJ0aXRs
ZXM7CisgICAgfQogCiAgICAgcmV0dXJuIENhcHRpb25zOwogfQo=
</data>
<flag name="commit-queue"
          id="205703"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186373</attachid>
            <date>2013-02-04 07:44:14 -0800</date>
            <delta_ts>2013-02-04 11:12:48 -0800</delta_ts>
            <desc>Another update.</desc>
            <filename>patch_10.txt</filename>
            <type>text/plain</type>
            <size>31154</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTA0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldywg
YWxsb3cgYSBwb3J0IHRvIHJlbWVtYmVyIHRoYXQKKyAgICAgICAgICAgIHRoZSB1c2VyIGhhcyBj
aG9zZW4gdG8gc2VlIGNhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UpOiBOZXcsIGFsbG93IGEgcG9ydCB0byByZW1l
bWJlciB0aGUKKyAgICAgICAgICAgIHVzZXIncyBwcmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1
YWdlcyk6IE5ldywgcmV0dXJuIGEgVmVjdG9yIG9mIHRoZSB1c2VyJ3MgCisgICAgICAgICAgICBw
cmVmZXJyZWQgY2FwdGlvbiBsYW5ndWFnZXMuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6IE5ldywgcmV0dXJuIHRoZSB1c2VyIHBy
ZWZlcnJlZCBsYW5ndWFnZXMgb3ZlcnJpZGUKKyAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRlc3Rp
bmcuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpraW5k
KToKKwogMjAxMy0wMi0wNCAgRG1pdHJ5IEdvem1hbiAgPGRnb3ptYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFsbG93IHVzZXIgdG8gY2hhbmdlIGRvY2sgc2lkZSBi
eSBkcmFnZ2luZyB0b29sYmFyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTQxNzcwKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIApAQCAtNDgsMTIgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYXB0aW9u
VXNlclByZWZlcmVuY2VzKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQ
cmVmZXJzQ2FwdGlvbnMoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9u
UHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgZmxvYXQg
Y2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCB7IHJldHVybiAwLjA1ZjsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZW1w
dHlTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQogCisg
ICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3QgeyB9Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCB7IHJl
dHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsgfQorCiAgICAgUGFnZUdyb3Vw
KiBwYWdlR3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAko
cmV2aXNpb24gMTQxNzcwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hY19oCiAjZGVmaW5lIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWNfaAogCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKQEAg
LTQxLDI1ICs0MSwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYygpOwogCiAgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25z
KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVu
Y2VzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgZmxvYXQg
Y2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2
b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCBPVkVSUklERTsK
KwogICAgIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCiBwcml2YXRlOgogICAg
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKik7CiAKLSAgICBDb2xvciBjYXB0
aW9uc1dpbmRvd0NvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgY2FwdGlvbnNCYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdDsKLSAgICBDb2xvciBjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0OwotICAgIFN0
cmluZyBjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zV2lu
ZG93Q1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0
OworICAgIFN0cmluZyBjYXB0aW9uc1RleHRDb2xvckNTUygpIGNvbnN0OworICAgIENvbG9yIGNh
cHRpb25zVGV4dENvbG9yKGJvb2wmKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNEZWZhdWx0
Rm9udENTUygpIGNvbnN0OwogICAgIENvbG9yIGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9y
KGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgp
IGNvbnN0OwotICAgIFN0cmluZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IENvbG9yJikgY29uc3Q7Ci0gICAgU3RyaW5nIGNz
c0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBT
dHJpbmcgd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0OworICAgIFN0cmluZyBj
YXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNzc1Byb3BlcnR5V2l0aFRl
eHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29sb3ImLCBi
b29sKSBjb25zdDsKKyAgICBTdHJpbmcgY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlELCBj
b25zdCBDb2xvciYsIGJvb2wpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVDYXB0aW9uU3R5bGVT
aGVldE92ZXJpZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5tbQkocmV2aXNpb24gMTQxNzcwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwyMSArMjUsNDMgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBNQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCiAKICNpbXBvcnQgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCIK
IAogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkNvcmVUZXh0L0NvcmVUZXh0LmgiCiAj
aW1wb3J0ICJET01XcmFwcGVyV29ybGQuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgog
I2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiTWVkaWFBY2Nlc3NpYmlsaXR5L01lZGlhQWNjZXNz
aWJpbGl0eS5oIgogI2ltcG9ydCAiUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJTb2Z0TGlua2luZy5o
IgogI2ltcG9ydCAiVGV4dFRyYWNrQ3VlLmgiCiAjaW1wb3J0ICJVc2VyU3R5bGVTaGVldFR5cGVz
LmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK1NPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoTWVkaWFBY2Nlc3NpYmlsaXR5KQorCitTT0ZUX0xJTksoTWVk
aWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25zLCBib29s
LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSkKK1NPRlRfTElO
SyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMs
IHZvaWQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgYm9vbCBzaG93Q2FwdGlv
bnMpLCAoZG9tYWluLCBzaG93Q2FwdGlvbnMpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IsIENHQ29sb3JSZWYsIChN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2
aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vz
c2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yLCBDR0NvbG9y
UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVk
aWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yLCBDR0Nv
bG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTkso
TWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNp
dHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRf
TElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5k
T3BhY2l0eSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNh
cHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQor
U09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRv
d09wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFD
YXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkK
K1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5k
b3dSb3VuZGVkQ29ybmVyUmFkaXVzLCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFp
biBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWlu
LCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBl
YXJhbmNlQ29weUZvbnREZXNjcmlwdG9yRm9yU3R5bGUsIENURm9udERlc2NyaXB0b3JSZWYsIChN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciAqYmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGUgZm9udFN0eWxlKSwg
KGRvbWFpbiwgYmVoYXZpb3IsIGZvbnRTdHlsZSkpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmls
aXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplLCBDR0Zsb2F0
LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSwgTUFDYXB0
aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRv
bWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJl
aGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VBZGRTZWxlY3RlZExhbmd1YWdlLCBib29sLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBk
b21haW4sIENGU3RyaW5nUmVmIGxhbmd1YWdlKSwgKGRvbWFpbiwgbGFuZ3VhZ2UpKTsKK1NPRlRf
TElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRM
YW5ndWFnZXMsIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiks
IChkb21haW4pKTsKKworU09GVF9MSU5LX1BPSU5URVIoTWVkaWFBY2Nlc3NpYmlsaXR5LCBrTUFY
Q2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIENGU3RyaW5nUmVm
KQorI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRp
b24gZ2V0a01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkK
KwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyAr
NzEsNiBAQCBzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlCiAgICAgc3Rh
dGljX2Nhc3Q8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYyo+KG9ic2VydmVyKS0+Y2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQogCi0KIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoUGFnZUdyb3VwKiBncm91cCkKICAgICA6IENhcHRpb25V
c2VyUHJlZmVyZW5jZXMoZ3JvdXApCiAgICAgLCBtX2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFu
Z2VzKGZhbHNlKQpAQCAtNTgsMzAgKzc5LDMwIEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OkNhcHRpb25Vc2VyUHIKIAogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWMoKQogewotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGlu
Z3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVt
b3ZlT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCB3
a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCksIE5VTEwp
OworICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRp
b24pCisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlT2JzZXJ2ZXIoQ0ZOb3RpZmlj
YXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIE5VTEwpOwogfQogCi1ib29sIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdAorYm9vbCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcygpOworICAg
IHJldHVybiBNQUNhcHRpb25BcHBlYXJhbmNlR2V0U2hvd0NhcHRpb25zKGtNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluVXNlcik7CiB9CiAKLWJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQogewotICAgIHJldHVy
biB3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOworICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21h
aW5Vc2VyLCBwcmVmZXJlbmNlKTsKIH0KLQorICAgIAogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQo
IW1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXIpKTsK
IAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNh
dGlvbigpKQorICAgIGlmICgha01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKCFtX2xpc3RlbmluZ0Zv
clByZWZlcmVuY2VDaGFuZ2VzKSB7CiAgICAgICAgIG1fbGlzdGVuaW5nRm9yUHJlZmVyZW5jZUNo
YW5nZXMgPSB0cnVlOwotICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyIChD
Rk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHVzZXJDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2ssIHdrQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIgKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywgdXNl
ckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjaywga01BWENhcHRp
b25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBOVUxMLCBDRk5vdGlmaWNh
dGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKICAgICAgICAgdXBkYXRlQ2FwdGlvblN0
eWxlU2hlZXRPdmVyaWRlKCk7CiAgICAgfQogICAgIApAQCAtOTAsNjggKzExMSw4MyBAQCB2b2lk
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyCiAKIHZvaWQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKLSAg
ICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigp
KQorICAgIGlmIChrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRp
b24pCiAgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMucmVtb3ZlKGxp
c3RlbmVyKTsKIH0KIAotQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNX
aW5kb3dDb2xvcigpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2Fw
dGlvbnNXaW5kb3dDU1MoKSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xv
cihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKCkpOworICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKKyAgICBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcihr
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOworCiAgICAgQ29sb3Ig
d2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNWYWxpZCgp
KQogICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICAKLSAgICBD
R0Zsb2F0IG9wYWNpdHk7Ci0gICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFj
aXR5KCZvcGFjaXR5KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHdpbmRvd0NvbG9yLnJlZCgpLCB3
aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4o
b3BhY2l0eSAqIDI1NSkpOwotICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBD
b2xvcigpOwotICAgIAotICAgIHJldHVybiB3aW5kb3dDb2xvcjsKKworICAgIENHRmxvYXQgb3Bh
Y2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KGtNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICByZXR1cm4gY29sb3JQcm9wZXJ0eUNT
UyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3Iod2luZG93Q29sb3IucmVkKCksIHdp
bmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50Pihv
cGFjaXR5ICogMjU1KSksIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JV
c2VWYWx1ZSk7CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25z
QmFja2dyb3VuZENvbG9yKCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjYXB0aW9uc0JhY2tncm91bmRDU1MoKSBjb25zdAogewogICAgIC8vIFRoaXMgZGVmYXVsdCB2
YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJv
bHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAgIC8vIGFu
ZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAsIDAsIDAu
OCAqIDI1NSkpKTsKLSAgICAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRD
Riwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IoKSk7CisKKyAgICBNQUNh
cHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisKKyAgICBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gY29sb3IoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29s
b3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKICAgICBDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOwotICAgIGlmICghYmFja2dyb3VuZENvbG9y
LmlzVmFsaWQoKSkgeworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKICAgICAg
ICAgYmFja2dyb3VuZENvbG9yID0gZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKLSAgICB9Ci0gICAg
Ci0gICAgQ0dGbG9hdCBvcGFjaXR5OwotICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFj
a2dyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQotICAgICAgICByZXR1cm4gQ29sb3IoYmFja2dyb3Vu
ZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJs
dWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7Ci0gICAgCi0gICAgaWYgKCFj
b2xvcikKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0gICAgCi0gICAgcmV0dXJuIGJhY2tncm91
bmRDb2xvcjsKKworICAgIENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRC
YWNrZ3JvdW5kT3BhY2l0eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIDApOworICAg
IHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDb2xv
cihiYWNrZ3JvdW5kQ29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3Jv
dW5kQ29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwgYmVoYXZp
b3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKIH0KIAotQ29sb3Ig
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoKSBjb25zdAorQ29s
b3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoYm9vbCYgaW1w
b3J0YW50KSBjb25zdAogewotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENG
LCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcigpKTsKKyAgICBNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+
IGNvbG9yKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKGtN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CiAgICAgQ29sb3IgdGV4
dENvbG9yKGNvbG9yLmdldCgpKTsKLSAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpIHsKKyAg
ICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1
ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMu
Y3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyLgogICAgICAgICB0ZXh0
Q29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgfQotICAgIAotICAgIENHRmxvYXQgb3BhY2l0eTsK
LSAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KCZvcGFjaXR5
KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4dENvbG9yLmdyZWVu
KCksIHRleHRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOwog
ICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAgIENHRmxv
YXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eShrTUFD
YXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaW1wb3J0YW50ID0g
YmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOworICAgIHJl
dHVybiBDb2xvcih0ZXh0Q29sb3IucmVkKCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0Q29sb3Iu
Ymx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKK30KICAgICAKLSAgICBy
ZXR1cm4gdGV4dENvbG9yOworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRp
b25zVGV4dENvbG9yQ1NTKCkgY29uc3QKK3sKKyAgICBib29sIGltcG9ydGFudDsKKyAgICBDb2xv
ciB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOworCisgICAgaWYgKCF0
ZXh0Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAg
IHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5Q29sb3IsIHRleHRDb2xvciwgaW1w
b3J0YW50KTsKIH0KKyAgICAKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp3aW5k
b3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25BcHBlYXJh
bmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgQ0dGbG9hdCByYWRpdXMgPSBNQUNhcHRpb25BcHBl
YXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cyhrTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgaWYgKCFyYWRpdXMpCisgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIu
YXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIiUuMDJmIiwgcmFkaXVzKSk7CisgICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBl
YXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAhaW1wb3J0
YW50Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKIAorICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Cit9CisgICAgCiBDb2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0
aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAog
ewogICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xv
ciwgQ29sb3I6OndoaXRlKTsKQEAgLTE2Myw3ICsxOTksNyBAQCBDb2xvciBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uCiAgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgpOwogfQog
Ci1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRoVGV4dEVk
Z2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBDb2xv
ciYgdGV4dENvbG9yKSBjb25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNz
c1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNvbnN0CiB7
CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIApAQCAtMTcyLDUyICsyMDgsNTYgQEAg
U3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNzc1BybwogICAgIGJ1aWxkZXIuYXBw
ZW5kKHZhbHVlKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXplZCgpKTsK
KyAgICBpZiAoaW1wb3J0YW50KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQi
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjc3NDb2xv
clByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK1N0
cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjb2xvclByb3BlcnR5Q1NTKENTU1Byb3Bl
cnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIAogICAgIGJ1aWxkZXIuYXBwZW5kKGdldFBy
b3BlcnR5TmFtZVN0cmluZyhpZCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgYnVp
bGRlci5hcHBlbmQoY29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICBpZiAoaW1wb3J0YW50KQorICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgn
OycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUoKSBjb25zdAor
U3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dEVkZ2VDU1MoKSBj
b25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVS
YWlzZWQsICgiIC0uMDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURlcHJl
c3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURyb3BTaGFk
b3csICgiIC4wNzVlbSAuMDc1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVuaWZvcm0s
ICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAKLSAgICBD
b2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7CisKKyAgICBib29sIHVudXNlZDsKKyAg
ICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKHVudXNlZCk7CiAgICAgaWYgKCFjb2xv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIGNvbG9yLnNldE5hbWVkQ29sb3IoImJsYWNrIik7CiAgICAg
Y29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb2xvcik7Ci0gICAgCi0gICAg
d2tDYXB0aW9uVGV4dEVkZ2VTdHlsZSB0ZXh0RWRnZVN0eWxlID0gc3RhdGljX2Nhc3Q8d2tDYXB0
aW9uVGV4dEVkZ2VTdHlsZT4od2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUoKSk7
CisKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgTUFDYXB0
aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUgdGV4dEVkZ2VTdHlsZSA9IE1BQ2FwdGlvbkFwcGVh
cmFuY2VHZXRUZXh0RWRnZVN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJl
aGF2aW9yKTsKICAgICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUpIHsKLSAgICAgICAgY2FzZSB3a0Nh
cHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgotICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRF
ZGdlU3R5bGVOb25lOgorICAgICAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VT
dHlsZVVuZGVmaW5lZDoKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdl
U3R5bGVOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkOgotICAgICAgICAg
ICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hh
ZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNvbG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0
RWRnZVN0eWxlRGVwcmVzc2VkOgotICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRl
eHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNzZWQsIGNv
bG9yKTsKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRvdzoKLSAg
ICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5
VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29sb3IpOwotICAgICAgICBjYXNlIHdr
Q2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtOgotICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3Bl
cnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBlZGdlU3R5
bGVVbmlmb3JtLCBjb2xvcik7CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0
RWRnZVN0eWxlUmFpc2VkOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRF
ZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNvbG9yLCBi
ZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOworICAgICAg
ICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoKKyAgICAg
ICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4
dFNoYWRvdywgZWRnZVN0eWxlRGVwcmVzc2VkLCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBw
ZWFyYW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93OgorICAgICAgICAgICAgcmV0dXJuIGNzc1By
b3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVE
cm9wU2hhZG93LCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlv
clVzZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5
bGVVbmlmb3JtOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29s
b3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBlZGdlU3R5bGVVbmlmb3JtLCBjb2xvciwg
YmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKICAgICAg
ICAgICAgIAotICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVNYXg6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjYsMTMgKzI2
NiwxNSBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8
Q0dGb250UmVmPiBmb250KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0
eWxlKHdrQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQpKTsKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNl
QmVoYXZpb3IgYmVoYXZpb3I7CisgICAgCisgICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+IGZvbnQoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZv
clN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yLCBrTUFDYXB0
aW9uQXBwZWFyYW5jZUZvbnRTdHlsZURlZmF1bHQpKTsKICAgICBpZiAoIWZvbnQpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
bmFtZShBZG9wdENGLCBDR0ZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC5nZXQoKSkpOworCisg
ICAgUmV0YWluUHRyPENGVHlwZVJlZj4gbmFtZShBZG9wdENGLCBDVEZvbnREZXNjcmlwdG9yQ29w
eUF0dHJpYnV0ZShmb250LmdldCgpLCBrQ1RGb250TmFtZUF0dHJpYnV0ZSkpOwogICAgIGlmICgh
bmFtZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgCkBAIC0yNDAsOCArMjgy
LDExIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW8KICAgICAKICAg
ICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlGb250RmFt
aWx5KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjogXCIiKTsKLSAgICBidWlsZGVyLmFwcGVuZChu
YW1lLmdldCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiXCI7Iik7CisgICAgYnVpbGRlci5hcHBl
bmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0KCkpKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgnIicpOworICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2
aW9yVXNlVmFsdWUpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9ydGFudCIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KQEAgLTI0OSw1NCArMjk0LDUyIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjpjYXB0aW8KIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1N0
eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjYXB0aW9uc092
ZXJyaWRlU3R5bGVTaGVldDsKLSAgICAKLSAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zQmFja2dy
b3VuZENvbG9yKCk7Ci0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworCisgICAgU3RyaW5nIGJh
Y2tncm91bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKKyAgICBpZiAoIWJhY2tncm91bmQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgi
IHZpZGVvOjoiKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRl
eHRUcmFja0N1ZTo6YWxsTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKICAgICAgICAgY2FwdGlvbnNP
dmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQo
YmFja2dyb3VuZCk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgn
fScpOwogICAgIH0KLSAgICAKLSAgICBjb2xvciA9IGNhcHRpb25zV2luZG93Q29sb3IoKTsKLSAg
ICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQo
KSk7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOwotICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKLSAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7Ci0gICAgfQotICAgIAotICAgIGNvbG9yID0gY2Fw
dGlvbnNUZXh0Q29sb3IoKTsKLSAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRn
ZVN0eWxlKCk7Ci0gICAgU3RyaW5nIGZvbnROYW1lID0gY2FwdGlvbnNEZWZhdWx0Rm9udCgpOwot
ICAgIGlmIChjb2xvci5pc1ZhbGlkKCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnRO
YW1lLmlzRW1wdHkoKSkgeworCisgICAgU3RyaW5nIHdpbmRvd0NvbG9yID0gY2FwdGlvbnNXaW5k
b3dDU1MoKTsKKyAgICBTdHJpbmcgd2luZG93Q29ybmVyUmFkaXVzID0gd2luZG93Um91bmRlZENv
cm5lclJhZGl1c0NTUygpOworICAgIFN0cmluZyBjYXB0aW9uc0NvbG9yID0gY2FwdGlvbnNUZXh0
Q29sb3JDU1MoKTsKKyAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRnZUNTUygp
OworICAgIFN0cmluZyBmb250TmFtZSA9IGNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKTsKKyAgICBp
ZiAoIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb2xvci5pc0VtcHR5KCkgfHwg
IXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwg
IWZvbnROYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoIiB2aWRlbzo6Iik7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkp
OwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjYXB0aW9uc092
ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9y
LCBjb2xvcikpOworCisgICAgICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0NvbG9yKTsKKyAg
ICAgICAgaWYgKCF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0Nvcm5lclJhZGl1cyk7CisgICAg
ICAgIGlmICghY2FwdGlvbnNDb2xvci5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0aW9uc092
ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY2FwdGlvbnNDb2xvcik7CiAgICAgICAgIGlmICghZWRn
ZVN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZChlZGdlU3R5bGUpOwogICAgICAgICBpZiAoIWZvbnROYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChmb250TmFtZSk7Ci0g
ICAgICAgIAorCiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScp
OwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC50
b1N0cmluZygpOwogfQogCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9u
Rm9udFNpemVTY2FsZSgpIGNvbnN0CiB7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
IGJlaGF2aW9yOwogICAgIENHRmxvYXQgY2hhcmFjdGVyU2NhbGUgPSBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpOwotICAgIENHRmxvYXQgc2NhbGVBZGp1c3Rt
ZW50OwotICAgIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFj
dGVyU2l6ZSgmc2NhbGVBZGp1c3RtZW50KSkKKyAgICBDR0Zsb2F0IHNjYWxlQWRqdXN0bWVudCA9
IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoa01BQ2FwdGlvbkFw
cGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOworCisgICAgaWYgKHNjYWxlQWRqdXN0bWVu
dCAmJiBiZWhhdmlvciAhPSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpCiAg
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJTY2FsZTsKLSAgICAKKwogI2lmIGRlZmluZWQoX19MUDY0
X18pICYmIF9fTFA2NF9fCiAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc2NhbGVB
ZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOwogI2Vsc2UKQEAgLTMyMiw5ICszNjUsNiBAQCB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVwZGF0ZUNhCiAgICAgCiAgICAgcGFnZUdy
b3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogICAgIAotICAgIGlmICghdXNlckhhc0NhcHRp
b25QcmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgU3RyaW5nIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKICAg
ICBpZiAoY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CkBAIC0zMzMsNiArMzczLDMwIEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
dXBkYXRlQ2EKICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RJbkFsbEZyYW1l
cywgVXNlclN0eWxlQXV0aG9yTGV2ZWwsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQog
Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1YWdlKFN0
cmluZyBsYW5ndWFnZSkgY29uc3QKK3sKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0
ZWRMYW5ndWFnZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIGxhbmd1YWdlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJp
bmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CisgICAgaWYg
KCFvdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5j
ZUNvcHlTZWxlY3RlZExhbmd1YWdlcyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIpKTsK
KyAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzLmdl
dCgpKTsKKworICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuIENhcHRpb25V
c2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgVmVjdG9yPFN0cmlu
Zz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZUNvdW50KTsKKyAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKKworICAgIHJldHVybiB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxNDE3NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWMuaCIKICNlbHNlCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgpAQCAt
NDIwLDcgKzQyMCw3IEBAIHZvaWQgUGFnZUdyb3VwOjppbnZhbGlkYXRlZEluamVjdGVkU3R5bGUK
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkK
IHsKICAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKQotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShNQUMpICYmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
ICAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjcmVhdGUodGhpcyk7CiAjZWxzZQogICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNyZWF0ZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDE0MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMTEgQEAgc3Rh
dGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZQogICAgIHJldHVybiBvdmVycmlk
ZTsKIH0KIAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkK
K3sKKyAgICByZXR1cm4gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKK30KKwogdm9pZCBv
dmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG92ZXJy
aWRlKQogewogICAgIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkgPSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMTQxNzcwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKTsK
IFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK1ZlY3RvcjxTdHJpbmc+
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIFN0cmluZyBwcmVmZXJyZWRM
YW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
Lm1tCShyZXZpc2lvbiAxNDE3NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjAsMTQgKzYwLDE2IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRh
dGlvbiwgQVZNZWRpYUMKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0
YUNvbW1vbktleVRpdGxlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0
aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9J
TlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0bGUsIE5TU3RyaW5nICopCi1TT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5z
T25seUZvcmNlZFN1YnRpdGxlcywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91
bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JB
Y2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9u
LCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJp
bGl0eSwgTlNTdHJpbmcgKikKICNkZWZpbmUgQVZNZXRhZGF0YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0
ZW1DbGFzcygpCiAjZGVmaW5lIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgZ2V0QVZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dENsYXNzKCkKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVn
aWJsZSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKICNkZWZpbmUgQVZNZXRhZGF0
YUNvbW1vbktleVRpdGxlIGdldEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSgpCiAjZGVmaW5lIEFW
TWV0YWRhdGFLZXlTcGFjZUNvbW1vbiBnZXRBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24oKQogI2Rl
ZmluZSBBVk1lZGlhVHlwZVN1YnRpdGxlIGdldEFWTWVkaWFUeXBlU3VidGl0bGUoKQotI2RlZmlu
ZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMgZ2V0QVZN
ZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkKKyNkZWZpbmUg
QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmls
aXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNj
ZXNzaWJpbGl0eSgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2lj
QW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJl
c011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5KCkKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtOTQsOCArOTYsMTcgQEAgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6S2luZCBJbmJhbmRUZXh0VAogICAgIE5TU3RyaW5nICptZWRpYVR5cGUgPSBb
bV9tZWRpYVNlbGVjdGlvbk9wdGlvbiBtZWRpYVR5cGVdOwogICAgIGlmIChbbWVkaWFUeXBlIGlz
RXF1YWxUb1N0cmluZzpBVk1lZGlhVHlwZUNsb3NlZENhcHRpb25dKQogICAgICAgICByZXR1cm4g
Q2FwdGlvbnM7Ci0gICAgaWYgKFttZWRpYVR5cGUgaXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFUeXBl
U3VidGl0bGVdKQorICAgIGlmIChbbWVkaWFUeXBlIGlzRXF1YWxUb1N0cmluZzpBVk1lZGlhVHlw
ZVN1YnRpdGxlXSkgeworCisgICAgICAgIC8vIEFuICJTREgiIHRyYWNrIGlzIGEgc3VidGl0bGUg
dHJhY2sgY3JlYXRlZCBmb3IgdGhlIGRlYWYgb3IgaGFyZC1vZi1oZWFyaW5nLiAiY2FwdGlvbnMi
IGluIFdlYlZUVCBhcmUKKyAgICAgICAgLy8gImxhYmVsZWQgYXMgYXBwcm9wcmlhdGUgZm9yIHRo
ZSBoYXJkLW9mLWhlYXJpbmciLCBzbyB0YWcgU0RIIHN1dGl0bGVzIGFzICJjYXB0aW9ucyIuCisg
ICAgICAgIGlmIChbbV9tZWRpYVNlbGVjdGlvbk9wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJp
bGl0eV0pCisgICAgICAgICAgICByZXR1cm4gQ2FwdGlvbnM7CisgICAgICAgIGlmIChbbV9tZWRp
YVNlbGVjdGlvbk9wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5XSkKKyAgICAgICAgICAg
IHJldHVybiBDYXB0aW9uczsKKyAgICAgICAgCiAgICAgICAgIHJldHVybiBTdWJ0aXRsZXM7Cisg
ICAgfQogCiAgICAgcmV0dXJuIENhcHRpb25zOwogfQo=
</data>
<flag name="commit-queue"
          id="205846"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186420</attachid>
            <date>2013-02-04 11:12:48 -0800</date>
            <delta_ts>2013-02-04 11:42:20 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_12.txt</filename>
            <type>text/plain</type>
            <size>33781</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTA0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNp
emVzKTogTWFyayBmb250IHNpemUgYXMgaW1wb3J0YW50CisgICAgICAgICAgICB3aGVuIG5lY2Vz
c2FyeS4KKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMp
OiBOZXcsIGFsbG93IGEgcG9ydCB0byByZW1lbWJlciB0aGF0CisgICAgICAgICAgICB0aGUgdXNl
ciBoYXMgY2hvc2VuIHRvIHNlZSBjYXB0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKTogTmV3LCBhbGxvdyBhIHBvcnQg
dG8gcmVtZW1iZXIgdGhlCisgICAgICAgICAgICB1c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24gbGFu
Z3VhZ2UuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJy
ZWRMYW5ndWFnZXMpOiBOZXcsIHJldHVybiBhIFZlY3RvciBvZiB0aGUgdXNlcidzIAorICAgICAg
ICAgICAgcHJlZmVycmVkIGNhcHRpb24gbGFuZ3VhZ2VzLgorICAgICAgICAqIHBhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5oOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYy5tbToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlR3JvdXA6OmNhcHRpb25Gb250U2l6ZVNjYWxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91
cC5oOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6IE5ldywgcmV0dXJuIHRoZSB1c2VyIHBy
ZWZlcnJlZCBsYW5ndWFnZXMgb3ZlcnJpZGUKKyAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRlc3Rp
bmcuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpraW5k
KToKKwogMjAxMy0wMi0wMSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGluIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21w
dXRlZENTU1BhZGRpbmcqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAxNDE3NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNjMsMTAgKzEzNjMsMTEgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZQogCiAgICAgZmxvYXQgc21hbGxlc3REaW1lbnNpb24gPSBzdGQ6Om1pbihtX3Zp
ZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgp
LndpZHRoKCkpOwogCi0gICAgZmxvYXQgZm9udFNpemUgPSBzbWFsbGVzdERpbWVuc2lvbiAqIChk
b2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvbkZvbnRTaXplU2NhbGUoKSk7CisgICAg
Ym9vbCBpbXBvcnRhbnQ7CisgICAgZmxvYXQgZm9udFNpemUgPSBzbWFsbGVzdERpbWVuc2lvbiAq
IChkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvbkZvbnRTaXplU2NhbGUoaW1wb3J0
YW50KSk7CiAgICAgaWYgKGZvbnRTaXplICE9IG1fZm9udFNpemUpIHsKICAgICAgICAgbV9mb250
U2l6ZSA9IGZvbnRTaXplOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRTaXplKSArICJweCIpOworICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVy
KGZvbnRTaXplKSArICJweCIsIGltcG9ydGFudCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTQxNzcw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAor
I2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAtNDgsMTIgKzQ5LDE2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCB7IHJl
dHVybiAwLjA1ZjsgfQorICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9v
bCYgaW1wb3J0YW50KSBjb25zdCB7IGltcG9ydGFudCA9IGZhbHNlOyByZXR1cm4gMC4wNWY7IH0K
ICAgICB2aXJ0dWFsIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IHsg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRM
aXN0ZW5lciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIq
KSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcpIGNv
bnN0IHsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkg
Y29uc3QgeyByZXR1cm4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7IH0KKwogICAg
IFBhZ2VHcm91cCogcGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogcHJvdGVj
dGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLmgJKHJldmlzaW9uIDE0MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aWZuZGVmIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWNfaAogI2RlZmluZSBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjX2gKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIAogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmgiCkBAIC00MSwyNSArNDEsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWMoKTsKIAogICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc0NhcHRp
b25zKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJl
ZmVyZW5jZXMoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250
U2l6ZVNjYWxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVm
ZXJzQ2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29sJikgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklERTsK
IAorICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkg
Y29uc3QgT1ZFUlJJREU7CisKICAgICB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsK
IAogcHJpdmF0ZToKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKFBhZ2VHcm91cCopOwog
Ci0gICAgQ29sb3IgY2FwdGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0OwotICAgIENvbG9yIGNhcHRp
b25zQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgY2FwdGlvbnNUZXh0Q29sb3Io
KSBjb25zdDsKLSAgICBTdHJpbmcgY2FwdGlvbnNEZWZhdWx0Rm9udCgpIGNvbnN0OworICAgIFN0
cmluZyBjYXB0aW9uc1dpbmRvd0NTUygpIGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc0JhY2tn
cm91bmRDU1MoKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNUZXh0Q29sb3JDU1MoKSBjb25z
dDsKKyAgICBDb2xvciBjYXB0aW9uc1RleHRDb2xvcihib29sJikgY29uc3Q7CisgICAgU3RyaW5n
IGNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKSBjb25zdDsKICAgICBDb2xvciBjYXB0aW9uc0VkZ2VD
b2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYpIGNvbnN0OwotICAgIFN0cmluZyBjYXB0aW9u
c1RleHRFZGdlU3R5bGUoKSBjb25zdDsKLSAgICBTdHJpbmcgY3NzUHJvcGVydHlXaXRoVGV4dEVk
Z2VDb2xvcihDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBjb25zdCBDb2xvciYpIGNvbnN0
OwotICAgIFN0cmluZyBjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGNvbnN0IENvbG9y
JikgY29uc3Q7CisgICAgU3RyaW5nIHdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1MoKSBjb25z
dDsKKyAgICBTdHJpbmcgY2FwdGlvbnNUZXh0RWRnZUNTUygpIGNvbnN0OworICAgIFN0cmluZyBj
c3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IENvbG9yJiwgYm9vbCkgY29uc3Q7CisgICAgU3RyaW5nIGNvbG9yUHJvcGVydHlDU1Mo
Q1NTUHJvcGVydHlJRCwgY29uc3QgQ29sb3ImLCBib29sKSBjb25zdDsKIAogICAgIHZvaWQgdXBk
YXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHJldmlzaW9uIDE0MTc3MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjUsMjEgKzI1LDQzIEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCiAjaW1wb3J0ICJDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLmgiCiAKICNpbXBvcnQgIkNvbG9yTWFjLmgiCisjaW1wb3J0ICJDb3JlVGV4
dC9Db3JlVGV4dC5oIgogI2ltcG9ydCAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW1wb3J0ICJGbG9h
dENvbnZlcnNpb24uaCIKICNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIk1lZGlhQWNjZXNzaWJp
bGl0eS9NZWRpYUFjY2Vzc2liaWxpdHkuaCIKICNpbXBvcnQgIlBhZ2VHcm91cC5oIgorI2ltcG9y
dCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlRleHRUcmFja0N1ZS5oIgogI2ltcG9ydCAiVXNl
clN0eWxlU2hlZXRUeXBlcy5oIgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKE1lZGlhQWNjZXNzaWJpbGl0eSkK
KworU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFNo
b3dDYXB0aW9ucywgYm9vbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluKSwgKGRv
bWFpbikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNl
U2V0U2hvd0NhcHRpb25zLCB2b2lkLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4s
IGJvb2wgc2hvd0NhcHRpb25zKSwgKGRvbWFpbiwgc2hvd0NhcHRpb25zKSkKK1NPRlRfTElOSyhN
ZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9y
LCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZU
X0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91
bmRDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3Ip
KQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlX
aW5kb3dDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWlu
LCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZp
b3IpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdl
dEZvcmVncm91bmRPcGFjaXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBk
b21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBi
ZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJh
bmNlR2V0QmFja2dyb3VuZE9wYWNpdHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21h
aW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFw
cGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9t
YWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25B
cHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cywgQ0dGbG9hdCwgKE1BQ2FwdGlv
bkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJl
aGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0eWxlLCBDVEZvbnRE
ZXNjcmlwdG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sICBNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yLCBNQUNhcHRpb25BcHBlYXJhbmNlRm9udFN0
eWxlIGZvbnRTdHlsZSksIChkb21haW4sIGJlaGF2aW9yLCBmb250U3R5bGUpKQorU09GVF9MSU5L
KE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFj
dGVyU2l6ZSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNh
cHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQor
U09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRF
ZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlLCAoTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZp
b3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0ZWRMYW5ndWFnZSwgYm9vbCwgKE1BQ2FwdGlvbkFw
cGVhcmFuY2VEb21haW4gZG9tYWluLCBDRlN0cmluZ1JlZiBsYW5ndWFnZSksIChkb21haW4sIGxh
bmd1YWdlKSk7CitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJh
bmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzLCBDRkFycmF5UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSk7CisKK1NPRlRfTElOS19QT0lOVEVSKE1lZGlhQWNj
ZXNzaWJpbGl0eSwga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0
aW9uLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3ND
aGFuZ2VkTm90aWZpY2F0aW9uIGdldGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ5LDcgKzcxLDYgQEAgc3RhdGljIHZvaWQgdXNlckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZQogICAgIHN0YXRpY19jYXN0PENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMqPihvYnNl
cnZlciktPmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKIH0KIAotCiBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKFBhZ2VHcm91cCogZ3JvdXAp
CiAgICAgOiBDYXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKQogICAgICwgbV9saXN0ZW5pbmdG
b3JQcmVmZXJlbmNlQ2hhbmdlcyhmYWxzZSkKQEAgLTU4LDMwICs3OSwzMCBAQCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpDYXB0aW9uVXNlclByCiAKIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6On5DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKCkKIHsKLSAgICBpZiAod2tDYXB0aW9uQXBw
ZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQotICAgICAgICBDRk5vdGlm
aWNhdGlvbkNlbnRlclJlbW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxD
ZW50ZXIoKSwgdGhpcywgd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlm
aWNhdGlvbigpLCBOVUxMKTsKKyAgICBpZiAoa01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3ND
aGFuZ2VkTm90aWZpY2F0aW9uKQorICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZU9i
c2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywga01BWENh
cHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBOVUxMKTsKIH0KIAot
Ym9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2Vz
KCkgY29uc3QKK2Jvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlclByZWZlcnNDYXB0
aW9ucygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJl
ZmVyZW5jZXMoKTsKKyAgICByZXR1cm4gTUFDYXB0aW9uQXBwZWFyYW5jZUdldFNob3dDYXB0aW9u
cyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIpOwogfQogCi1ib29sIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAordm9pZCBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVyZW5j
ZSkKIHsKLSAgICByZXR1cm4gd2tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFp
bGFibGUoKTsKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlU2V0U2hvd0NhcHRpb25zKGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlciwgcHJlZmVyZW5jZSk7CiB9Ci0KKyAgICAKIHZvaWQgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIp
CiB7CiAgICAgQVNTRVJUKCFtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmNvbnRh
aW5zKGxpc3RlbmVyKSk7CiAKLSAgICBpZiAoIXdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5n
c0NoYW5nZWROb3RpZmljYXRpb24oKSkKKyAgICBpZiAoIWtNQVhDYXB0aW9uQXBwZWFyYW5jZVNl
dHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlm
ICghbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlcykgewogICAgICAgICBtX2xpc3Rlbmlu
Z0ZvclByZWZlcmVuY2VDaGFuZ2VzID0gdHJ1ZTsKLSAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlciAoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlz
LCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrLCB3a0Nh
cHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCksIE5VTEwsIENG
Tm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAgICAgICBDRk5vdGlm
aWNhdGlvbkNlbnRlckFkZE9ic2VydmVyIChDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2Vu
dGVyKCksIHRoaXMsIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2Fs
bGJhY2ssIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiwg
TlVMTCwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7CiAgICAgICAg
IHVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpOwogICAgIH0KICAgICAKQEAgLTkwLDY4
ICsxMTEsODMgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlcgogCiB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciog
bGlzdGVuZXIpCiB7Ci0gICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5n
ZWROb3RpZmljYXRpb24oKSkKKyAgICBpZiAoa01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3ND
aGFuZ2VkTm90aWZpY2F0aW9uKQogICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlz
dGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OmNhcHRpb25zV2luZG93Q29sb3IoKSBjb25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWM6OmNhcHRpb25zV2luZG93Q1NTKCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dD
b2xvcigpKTsKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAg
UmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5V2luZG93Q29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3Ip
KTsKKwogICAgIENvbG9yIHdpbmRvd0NvbG9yKGNvbG9yLmdldCgpKTsKICAgICBpZiAoIXdpbmRv
d0NvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgd2luZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJl
bnQ7Ci0gICAgCi0gICAgQ0dGbG9hdCBvcGFjaXR5OwotICAgIGlmICh3a0NhcHRpb25BcHBlYXJh
bmNlR2V0V2luZG93T3BhY2l0eSgmb3BhY2l0eSkpCi0gICAgICAgIHJldHVybiBDb2xvcih3aW5k
b3dDb2xvci5yZWQoKSwgd2luZG93Q29sb3IuZ3JlZW4oKSwgd2luZG93Q29sb3IuYmx1ZSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKLSAgICAKLSAgICBpZiAoIWNvbG9yKQot
ICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAKLSAgICByZXR1cm4gd2luZG93Q29sb3I7CisK
KyAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0
eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CisgICAgcmV0dXJu
IGNvbG9yUHJvcGVydHlDU1MoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENvbG9yKHdpbmRv
d0NvbG9yLnJlZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0
YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpLCBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBw
ZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOwogfQogCi1Db2xvciBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29uc3QKIHsKICAgICAv
LyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmll
ZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXBhc3Qt
bm9kZXMKICAgICAvLyBhbmQgd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzLgog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsIChD
b2xvcigwLCAwLCAwLCAwLjggKiAyNTUpKSk7Ci0gICAgCi0gICAgUmV0YWluUHRyPENHQ29sb3JS
ZWY+IGNvbG9yKEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9y
KCkpOworCisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOworCisgICAg
UmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5QmFja2dyb3VuZENvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2
aW9yKSk7CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKGNvbG9yLmdldCgpKTsKLSAgICBpZiAo
IWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpIHsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCYWNrZ3JvdW5kQ29s
b3I7Ci0gICAgfQotICAgIAotICAgIENHRmxvYXQgb3BhY2l0eTsKLSAgICBpZiAod2tDYXB0aW9u
QXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KCZvcGFjaXR5KSkKLSAgICAgICAgcmV0dXJu
IENvbG9yKGJhY2tncm91bmRDb2xvci5yZWQoKSwgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJh
Y2tncm91bmRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOwot
ICAgIAotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotICAgIAotICAg
IHJldHVybiBiYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRp
b25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21h
aW5Vc2VyLCAwKTsKKyAgICByZXR1cm4gY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgQ29sb3IoYmFja2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3Iu
Z3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5
ICogMjU1KSksIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1
ZSk7CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dENv
bG9yKCkgY29uc3QKK0NvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4
dENvbG9yKGJvb2wmIGltcG9ydGFudCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJl
Zj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3Io
KSk7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOworICAgIFJldGFp
blB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZv
cmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikp
OwogICAgIENvbG9yIHRleHRDb2xvcihjb2xvci5nZXQoKSk7Ci0gICAgaWYgKCF0ZXh0Q29sb3Iu
aXNWYWxpZCgpKSB7CisgICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQogICAgICAgICAvLyBU
aGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBp
biBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5l
ci4KICAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRlOwotICAgIH0KLSAgICAKLSAgICBD
R0Zsb2F0IG9wYWNpdHk7Ci0gICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5k
T3BhY2l0eSgmb3BhY2l0eSkpCi0gICAgICAgIHJldHVybiBDb2xvcih0ZXh0Q29sb3IucmVkKCks
IHRleHRDb2xvci5ncmVlbigpLCB0ZXh0Q29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9w
YWNpdHkgKiAyNTUpKTsKICAgICAKLSAgICBpZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4gQ29s
b3IoKTsKKyAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdy
b3VuZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwor
ICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JV
c2VWYWx1ZTsKKyAgICByZXR1cm4gQ29sb3IodGV4dENvbG9yLnJlZCgpLCB0ZXh0Q29sb3IuZ3Jl
ZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7
Cit9CiAgICAgCi0gICAgcmV0dXJuIHRleHRDb2xvcjsKK1N0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpjYXB0aW9uc1RleHRDb2xvckNTUygpIGNvbnN0Cit7CisgICAgYm9vbCBpbXBv
cnRhbnQ7CisgICAgQ29sb3IgdGV4dENvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IoaW1wb3J0YW50
KTsKKworICAgIGlmICghdGV4dENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisKKyAgICByZXR1cm4gY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUNvbG9y
LCB0ZXh0Q29sb3IsIGltcG9ydGFudCk7CiB9CisgICAgCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6d2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0Cit7CisgICAg
TUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOworICAgIENHRmxvYXQgcmFkaXVz
ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXMoa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOworICAgIGlmICghcmFkaXVzKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlC
b3JkZXJSYWRpdXMpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCIlLjAyZiIsIHJhZGl1cykpOworICAgIGlmIChiZWhhdmlvciA9
PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCIgIWltcG9ydGFudCIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAKKyAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorICAgIAogQ29sb3IgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6Y2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRl
eHRDb2xvcikgY29uc3QKIHsKICAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNl
U3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSk7CkBAIC0xNjMsNyArMTk5LDcgQEAgQ29s
b3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbgogICAgIHJldHVybiB0ZXh0Q29s
b3IubGlnaHQoKTsKIH0KIAotU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNzc1By
b3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvcikgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQg
aWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGJvb2wgaW1w
b3J0YW50KSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAKQEAgLTE3
Miw1MiArMjA4LDU2IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjc3NQcm8K
ICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAg
ICBidWlsZGVyLmFwcGVuZChjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcih0ZXh0Q29sb3Ip
LnNlcmlhbGl6ZWQoKSk7CisgICAgaWYgKGltcG9ydGFudCkKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiAhaW1wb3J0YW50Iik7CiAgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKICAgICAKICAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6Y3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBDb2xvciYg
Y29sb3IpIGNvbnN0CitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y29sb3JQcm9w
ZXJ0eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgaW1wb3J0
YW50KSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAKICAgICBidWls
ZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGNvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgaWYg
KGltcG9ydGFudCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAhaW1wb3J0YW50Iik7CiAgICAg
YnVpbGRlci5hcHBlbmQoJzsnKTsKICAgICAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0RWRn
ZVN0eWxlKCkgY29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9u
c1RleHRFZGdlQ1NTKCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgZWRnZVN0eWxlUmFpc2VkLCAoIiAtLjA1ZW0gLS4wNWVtIDAgIiwgU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBlZGdlU3R5bGVEZXByZXNzZWQsICgiIC4wNWVtIC4wNWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBl
ZGdlU3R5bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBl
ZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgCi0gICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcigpOworCisgICAg
Ym9vbCB1bnVzZWQ7CisgICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcih1bnVzZWQp
OwogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQogICAgICAgICBjb2xvci5zZXROYW1lZENvbG9y
KCJibGFjayIpOwogICAgIGNvbG9yID0gY2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29s
b3IpOwotICAgIAotICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGUgdGV4dEVkZ2VTdHlsZSA9IHN0
YXRpY19jYXN0PHdrQ2FwdGlvblRleHRFZGdlU3R5bGU+KHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRU
ZXh0RWRnZVN0eWxlKCkpOworCisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2
aW9yOworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlIHRleHRFZGdlU3R5bGUg
PSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZShrTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpblVzZXIsICZiZWhhdmlvcik7CiAgICAgc3dpdGNoICh0ZXh0RWRnZVN0eWxlKSB7Ci0g
ICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVVuZGVmaW5lZDoKLSAgICAgICAgY2Fz
ZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTm9uZToKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBw
ZWFyYW5jZVRleHRFZGdlU3R5bGVVbmRlZmluZWQ6CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFw
cGVhcmFuY2VUZXh0RWRnZVN0eWxlTm9uZToKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVJh
aXNlZDoKLSAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENT
U1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlUmFpc2VkLCBjb2xvcik7Ci0gICAgICAgIGNh
c2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoKLSAgICAgICAgICAgIHJldHVybiBj
c3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0
eWxlRGVwcmVzc2VkLCBjb2xvcik7Ci0gICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHls
ZURyb3BTaGFkb3c6Ci0gICAgICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VD
b2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZURyb3BTaGFkb3csIGNvbG9yKTsK
LSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybToKLSAgICAgICAgICAg
IHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4
dFN0cm9rZSwgZWRnZVN0eWxlVW5pZm9ybSwgY29sb3IpOworICAgICAgICBjYXNlIGtNQUNhcHRp
b25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZVJhaXNlZDoKKyAgICAgICAgICAgIHJldHVybiBjc3NQ
cm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxl
UmFpc2VkLCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVz
ZVZhbHVlKTsKKyAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVE
ZXByZXNzZWQ6CisgICAgICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xv
cihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZURlcHJlc3NlZCwgY29sb3IsIGJlaGF2
aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSk7CisgICAgICAgIGNh
c2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlRHJvcFNoYWRvdzoKKyAgICAgICAg
ICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNo
YWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29sb3IsIGJlaGF2aW9yID09IGtNQUNhcHRpb25B
cHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSk7CisgICAgICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVh
cmFuY2VUZXh0RWRnZVN0eWxlVW5pZm9ybToKKyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0
eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgZWRnZVN0eWxl
VW5pZm9ybSwgY29sb3IsIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JV
c2VWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0
eWxlTWF4OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjI2LDEzICsyNjYsMTUgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpbwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1TdHJpbmcgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNEZWZhdWx0Rm9udCgpIGNvbnN0CitTdHJpbmcgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNEZWZhdWx0Rm9udENTUygpIGNvbnN0CiB7
Ci0gICAgUmV0YWluUHRyPENHRm9udFJlZj4gZm9udChBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJh
bmNlQ29weUZvbnRGb3JTdHlsZSh3a0NhcHRpb25Gb250U3R5bGVEZWZhdWx0KSk7CisgICAgTUFD
YXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOworICAgIAorICAgIFJldGFpblB0cjxD
VEZvbnREZXNjcmlwdG9yUmVmPiBmb250KEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5
Rm9udERlc2NyaXB0b3JGb3JTdHlsZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZi
ZWhhdmlvciwga01BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGVEZWZhdWx0KSk7CiAgICAgaWYg
KCFmb250KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgQ0dGb250Q29weVBvc3RTY3JpcHROYW1lKGZv
bnQuZ2V0KCkpKTsKKworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IG5hbWUoQWRvcHRDRiwgQ1RG
b250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9udC5nZXQoKSwga0NURm9udE5hbWVBdHRyaWJ1
dGUpKTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAg
IApAQCAtMjQwLDggKzI4MiwxMSBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
Y2FwdGlvCiAgICAgCiAgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENT
U1Byb3BlcnR5Rm9udEZhbWlseSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCI6IFwiIik7Ci0gICAg
YnVpbGRlci5hcHBlbmQobmFtZS5nZXQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIlwiOyIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgpKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICBpZiAoYmVoYXZpb3IgPT0ga01BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFp
bXBvcnRhbnQiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0yNDksNTQgKzI5NCw1MyBAQCBTdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdAogewogICAgIFN0cmluZ0J1
aWxkZXIgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQ7Ci0gICAgCi0gICAgQ29sb3IgY29sb3Ig
PSBjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsK
KworICAgIFN0cmluZyBiYWNrZ3JvdW5kID0gY2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCk7CisgICAg
aWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSkgewogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OmFsbE5vZGVzU2hhZG93UHNldWRvSWQoKSk7CiAg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOwotICAgICAgICBj
YXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKGJhY2tncm91bmQpOwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoJ30nKTsKICAgICB9Ci0gICAgCi0gICAgY29sb3IgPSBjYXB0aW9uc1dp
bmRvd0NvbG9yKCk7Ci0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBjYXB0aW9u
c092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7Ci0gICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJv
eFNoYWRvd1BzZXVkb0lkKCkpOwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoJ3snKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNz
c0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7Ci0gICAg
ICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOwotICAgIH0KLSAgICAK
LSAgICBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7Ci0gICAgU3RyaW5nIGVkZ2VTdHlsZSA9
IGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpOwotICAgIFN0cmluZyBmb250TmFtZSA9IGNhcHRpb25z
RGVmYXVsdEZvbnQoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpIHx8ICFlZGdlU3R5bGUuaXNF
bXB0eSgpIHx8ICFmb250TmFtZS5pc0VtcHR5KCkpIHsKKworICAgIFN0cmluZyB3aW5kb3dDb2xv
ciA9IGNhcHRpb25zV2luZG93Q1NTKCk7CisgICAgU3RyaW5nIHdpbmRvd0Nvcm5lclJhZGl1cyA9
IHdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1MoKTsKKyAgICBTdHJpbmcgY2FwdGlvbnNDb2xv
ciA9IGNhcHRpb25zVGV4dENvbG9yQ1NTKCk7CisgICAgU3RyaW5nIGVkZ2VTdHlsZSA9IGNhcHRp
b25zVGV4dEVkZ2VDU1MoKTsKKyAgICBTdHJpbmcgZm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRG
b250Q1NTKCk7CisgICAgaWYgKCFjYXB0aW9uc0NvbG9yLmlzRW1wdHkoKSB8fCAhd2luZG93Q29s
b3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpIHx8ICFlZGdlU3R5
bGUuaXNFbXB0eSgpIHx8ICFmb250TmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgY2FwdGlvbnNP
dmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOwogICAgICAgICBjYXB0aW9uc092
ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hT
aGFkb3dQc2V1ZG9JZCgpKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kKCd7Jyk7Ci0gICAgICAgIAotICAgICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQotICAgICAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHko
Q1NTUHJvcGVydHlDb2xvciwgY29sb3IpKTsKKworICAgICAgICBpZiAoIXdpbmRvd0NvbG9yLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3
aW5kb3dDb2xvcik7CisgICAgICAgIGlmICghd2luZG93Q29ybmVyUmFkaXVzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3aW5kb3dDb3Ju
ZXJSYWRpdXMpOworICAgICAgICBpZiAoIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNhcHRpb25zQ29sb3IpOwog
ICAgICAgICBpZiAoIWVkZ2VTdHlsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjYXB0aW9uc092
ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZWRnZVN0eWxlKTsKICAgICAgICAgaWYgKCFmb250TmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBl
bmQoZm9udE5hbWUpOwotICAgICAgICAKKwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC5hcHBlbmQoJ30nKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsKIH0KIAotZmxvYXQgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdAorZmxvYXQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYgaW1wb3J0YW50KSBjb25z
dAogewotICAgIENHRmxvYXQgY2hhcmFjdGVyU2NhbGUgPSBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
OjpjYXB0aW9uRm9udFNpemVTY2FsZSgpOwotICAgIENHRmxvYXQgc2NhbGVBZGp1c3RtZW50Owot
ICAgIAotICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6
ZSgmc2NhbGVBZGp1c3RtZW50KSkKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVo
YXZpb3I7CisgICAgQ0dGbG9hdCBjaGFyYWN0ZXJTY2FsZSA9IENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7CisgICAgQ0dGbG9hdCBzY2FsZUFk
anVzdG1lbnQgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKGtN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKworICAgIGlmICghc2Nh
bGVBZGp1c3RtZW50KQogICAgICAgICByZXR1cm4gY2hhcmFjdGVyU2NhbGU7Ci0gICAgCisKKyAg
ICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNl
VmFsdWU7CiAjaWYgZGVmaW5lZChfX0xQNjRfXykgJiYgX19MUDY0X18KICAgICByZXR1cm4gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChzY2FsZUFkanVzdG1lbnQgKiBjaGFyYWN0ZXJTY2FsZSk7CiAj
ZWxzZQpAQCAtMzIyLDkgKzM2Niw2IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
dXBkYXRlQ2EKICAgICAKICAgICBwYWdlR3JvdXAoKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9t
V29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVSTCk7CiAg
ICAgCi0gICAgaWYgKCF1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKICAgICBTdHJpbmcgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQgPSBjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSgpOwogICAgIGlmIChjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMzMyw2ICszNzQsMzAgQEAgdm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1cGRhdGVDYQogICAgICAgICAgICAgIFZlY3RvcjxT
dHJpbmc+KCksIEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZlbCwgSW5qZWN0
SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKSBjb25zdAoreworICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlKGtNQUNhcHRpb25BcHBlYXJhbmNl
RG9tYWluVXNlciwgbGFuZ3VhZ2UuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJlZExhbmd1YWdlcygp
IGNvbnN0Cit7CisgICAgVmVjdG9yPFN0cmluZz4gb3ZlcnJpZGUgPSB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlcyhB
ZG9wdENGLCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzKGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlcikpOworICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENG
QXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0KCkpOworCisgICAgaWYgKCFsYW5ndWFnZUNvdW50
KQorICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJlZmVycmVkTGFuZ3Vh
Z2VzKCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1
YWdlQ291bnQpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdlQ291bnQ7IGkr
KykKKyAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkpOwor
CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShWSURFT19UUkFDSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHJl
dmlzaW9uIDE0MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2Uu
aCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oTUFDKSAmJiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAjaW5j
bHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oIgogI2Vsc2UKICNpbmNsdWRlICJDYXB0
aW9uVXNlclByZWZlcmVuY2VzLmgiCkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBQYWdlR3JvdXA6
OmludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZQogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogUGFnZUdy
b3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKQogewogICAgIGlmICghbV9jYXB0aW9uUHJlZmVyZW5j
ZXMpCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNyZWF0ZSh0aGlzKTsKICNlbHNlCiAgICAgICAg
IG1fY2FwdGlvblByZWZlcmVuY2VzID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y3JlYXRlKHRo
aXMpOwpAQCAtNDUxLDkgKzQ1MSw5IEBAIGJvb2wgUGFnZUdyb3VwOjp1c2VySGFzQ2FwdGlvblBy
ZWZlcmVuY2UKICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzKCktPnVzZXJQcmVmZXJzQ2Fw
dGlvbnMoKTsKIH0KIAotZmxvYXQgUGFnZUdyb3VwOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpCitm
bG9hdCBQYWdlR3JvdXA6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGltcG9ydGFudCkKIHsK
LSAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzKCktPmNhcHRpb25Gb250U2l6ZVNjYWxlKCk7
CisgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcygpLT5jYXB0aW9uRm9udFNpemVTY2FsZShp
bXBvcnRhbnQpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdy
b3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAkocmV2
aXNpb24gMTQxNzcwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgICAgIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpOwogICAg
ICAgICBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKTsKLSAgICAgICAgZmxvYXQgY2Fw
dGlvbkZvbnRTaXplU2NhbGUoKTsKKyAgICAgICAgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUo
Ym9vbCYpOwogICAgICAgICB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKTsKICAgICAgICAg
dm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkocmV2aXNpb24gMTQxNzcwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMSBA
QCBzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlCiAgICAgcmV0dXJuIG92
ZXJyaWRlOwogfQogCitWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJp
ZGUoKQoreworICAgIHJldHVybiBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOworfQorCiB2
b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3ZlcnJpZGUpCiB7CiAgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxNDE3NzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGRlZmF1bHRMYW5ndWFn
ZSgpOwogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOworVmVjdG9yPFN0
cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiB2b2lkIG92ZXJyaWRlVXNl
clByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogU3RyaW5nIHByZWZl
cnJlZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW0JKHJldmlzaW9uIDE0MTc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC02MCwxNCArNjAsMTYgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZG
b3VuZGF0aW9uLCBBVk1lZGlhQwogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1l
dGFkYXRhQ29tbW9uS2V5VGl0bGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNTdHJpbmcgKikKIFNPRlRfTElO
S19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVTdWJ0aXRsZSwgTlNTdHJpbmcgKikK
LVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29u
dGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxv
Z0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nl
c3NpYmlsaXR5LCBOU1N0cmluZyAqKQogI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFk
YXRhSXRlbUNsYXNzKCkKICNkZWZpbmUgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBnZXRBVlBs
YXllckl0ZW1MZWdpYmxlT3V0cHV0Q2xhc3MoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNMZWdpYmxlIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUoKQogI2RlZmluZSBBVk1l
dGFkYXRhQ29tbW9uS2V5VGl0bGUgZ2V0QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlKCkKICNkZWZp
bmUgQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uIGdldEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbigp
CiAjZGVmaW5lIEFWTWVkaWFUeXBlU3VidGl0bGUgZ2V0QVZNZWRpYVR5cGVTdWJ0aXRsZSgpCi0j
ZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyBn
ZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKQorI2Rl
ZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vz
c2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dG
b3JBY2Nlc3NpYmlsaXR5KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVz
TXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVz
Y3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkoKQogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC05NCw4ICs5NiwxNyBAQCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlOjpLaW5kIEluYmFuZFRleHRUCiAgICAgTlNTdHJpbmcgKm1lZGlhVHlw
ZSA9IFttX21lZGlhU2VsZWN0aW9uT3B0aW9uIG1lZGlhVHlwZV07CiAgICAgaWYgKFttZWRpYVR5
cGUgaXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbl0pCiAgICAgICAgIHJl
dHVybiBDYXB0aW9uczsKLSAgICBpZiAoW21lZGlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QVZNZWRp
YVR5cGVTdWJ0aXRsZV0pCisgICAgaWYgKFttZWRpYVR5cGUgaXNFcXVhbFRvU3RyaW5nOkFWTWVk
aWFUeXBlU3VidGl0bGVdKSB7CisKKyAgICAgICAgLy8gQW4gIlNESCIgdHJhY2sgaXMgYSBzdWJ0
aXRsZSB0cmFjayBjcmVhdGVkIGZvciB0aGUgZGVhZiBvciBoYXJkLW9mLWhlYXJpbmcuICJjYXB0
aW9ucyIgaW4gV2ViVlRUIGFyZQorICAgICAgICAvLyAibGFiZWxlZCBhcyBhcHByb3ByaWF0ZSBm
b3IgdGhlIGhhcmQtb2YtaGVhcmluZyIsIHNvIHRhZyBTREggc3V0aXRsZXMgYXMgImNhcHRpb25z
Ii4KKyAgICAgICAgaWYgKFttX21lZGlhU2VsZWN0aW9uT3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nl
c3NpYmlsaXR5XSkKKyAgICAgICAgICAgIHJldHVybiBDYXB0aW9uczsKKyAgICAgICAgaWYgKFtt
X21lZGlhU2VsZWN0aW9uT3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJh
Y3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHldKQorICAgICAg
ICAgICAgcmV0dXJuIENhcHRpb25zOworICAgICAgICAKICAgICAgICAgcmV0dXJuIFN1YnRpdGxl
czsKKyAgICB9CiAKICAgICByZXR1cm4gQ2FwdGlvbnM7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>