<?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>175618</bug_id>
          
          <creation_ts>2017-08-15 21:35:27 -0700</creation_ts>
          <short_desc>2-3% of main thread time under UTTypeCreatePreferredIdentifierForTag on wunderground map</short_desc>
          <delta_ts>2017-08-16 13:51:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1339045</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 21:35:27 -0700</bug_when>
    <thetext>2-3% of main thread time under UTTypeCreatePreferredIdentifierForTag on wunderground map</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339046</commentid>
    <comment_count>1</comment_count>
      <attachid>318222</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 21:36:00 -0700</bug_when>
    <thetext>Created attachment 318222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339047</commentid>
    <comment_count>2</comment_count>
      <attachid>318223</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 21:40:12 -0700</bug_when>
    <thetext>Created attachment 318223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339048</commentid>
    <comment_count>3</comment_count>
      <attachid>318224</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 21:41:47 -0700</bug_when>
    <thetext>Created attachment 318224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339051</commentid>
    <comment_count>4</comment_count>
      <attachid>318224</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-08-15 21:53:30 -0700</bug_when>
    <thetext>Comment on attachment 318224
Patch

r=me if you fix the iOS build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339053</commentid>
    <comment_count>5</comment_count>
      <attachid>318226</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 21:56:28 -0700</bug_when>
    <thetext>Created attachment 318226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339056</commentid>
    <comment_count>6</comment_count>
      <attachid>318227</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 22:00:57 -0700</bug_when>
    <thetext>Created attachment 318227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339060</commentid>
    <comment_count>7</comment_count>
      <attachid>318230</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 22:07:17 -0700</bug_when>
    <thetext>Created attachment 318230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339068</commentid>
    <comment_count>8</comment_count>
      <attachid>318233</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 22:20:57 -0700</bug_when>
    <thetext>Created attachment 318233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339079</commentid>
    <comment_count>9</comment_count>
      <attachid>318237</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 23:05:46 -0700</bug_when>
    <thetext>Created attachment 318237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339080</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-15 23:06:32 -0700</bug_when>
    <thetext>😭</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339166</commentid>
    <comment_count>11</comment_count>
      <attachid>318237</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-08-16 07:56:20 -0700</bug_when>
    <thetext>Comment on attachment 318237
Patch

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

&gt; Source/WebCore/platform/network/mac/UTIUtilities.mm:90
&gt; +    static NeverDestroyed&lt;TinyLRUCache&lt;String, String, 16, UTIFromMIMETypeCachePolicy&gt;&gt; cache;

Is this code only ever called from main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339214</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-16 10:50:32 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #11)
&gt; Comment on attachment 318237 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318237&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/UTIUtilities.mm:90
&gt; &gt; +    static NeverDestroyed&lt;TinyLRUCache&lt;String, String, 16, UTIFromMIMETypeCachePolicy&gt;&gt; cache;
&gt; 
&gt; Is this code only ever called from main thread?

I believe so (looking through the callers). I threw an assert in and am running the tests, and I&apos;ll keep it in the landed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339230</commentid>
    <comment_count>13</comment_count>
      <attachid>318276</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-16 11:37:55 -0700</bug_when>
    <thetext>Created attachment 318276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339280</commentid>
    <comment_count>14</comment_count>
      <attachid>318276</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-16 13:49:51 -0700</bug_when>
    <thetext>Comment on attachment 318276
Patch

Clearing flags on attachment: 318276

Committed r220808: &lt;http://trac.webkit.org/changeset/220808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339281</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-16 13:49:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339282</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-16 13:51:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/33925934&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318222</attachid>
            <date>2017-08-15 21:36:00 -0700</date>
            <delta_ts>2017-08-15 21:40:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815213559.patch</filename>
            <type>text/plain</type>
            <size>24439</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uZmY5YmY5Y2Y3OTVmYzExYmUzZDAxMWQ3ZmI2ZjBl
NDhmN2UzNTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIHBlcmYgd2luLgorCisgICAgICAgIFVU
VHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcgaXMgZmFpcmx5IGV4cGVuc2l2ZSwg
YW5kIGlzIGNhbGxlZAorICAgICAgICB1bmRlciBldmVyeSB0b0RhdGFVUkwsIHdoaWNoIHRoZSBX
dW5kZXJncm91bmQgd3VuZGVybWFwIGRvZXMgYSAvbG90Ly4KKworICAgICAgICBLZWVwIGEgMTYt
aXRlbSBMUlUgY2FjaGUgb2YgTUlNRVR5cGUtPlVUSSBtYXBwaW5ncy4KKworICAgICAgICBBbHNv
LCBtYWtlIG90aGVyIGNhbGxlcnMgb2YgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyB1c2UKKyAgICAgICAgdGhlIFVUSVV0aWxpdGllcyB2ZXJzaW9uIHNvIHRoZXkgY2FuIHNo
YXJlIGluIHRoZSBjYWNoaW5nLgorCisgICAgICAgIEFsc28sIGFzIGEgZHJpdmUtYnksIGFkZCBh
bmQgbWFrZSBvdGhlciBjYWxsZXJzIHVzZSBtaW1lVHlwZUZyb21VVEkgdG9vLAorICAgICAgICBh
bmQgbWFrZSB0aGUgVVRJVXRpbGl0aWVzIG9wZXJhdGUgb24gU3RyaW5ncyBmb3IgYSBzbGlnaHRs
eSBtb3JlIFdlYkNvcmUteSBmZWVsLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGaWxlVHlwZXNTZXQpOgorICAgICAgICBBZG9wdCBu
ZXdseS1hZGRlZCBNSU1FVHlwZUZyb21VVEkoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdl
QnVmZmVyTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNmRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp1
dGlGcm9tTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICBBZG9wdCBVVElGcm9tTUlNRVR5cGUs
IGFuZCByZW5hbWUgdGhlIGxvY2FsIGhlbHBlciB0aGF0IGRvZXMgc29tZXRoaW5nCisgICAgICAg
IGRpZmZlcmVudCAoYSBzbWFsbCBzdGF0aWMgbWFwKSBvbiBpT1MgYW5kIFdpbmRvd3MgdG8gbm90
IGhhdmUgYW4gb3ZlcmxhcHBpbmcgbmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVGb3JJbWFnZVNvdXJj
ZVR5cGUpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhpcyBmdW5jdGlvbiB0aGF0IGlzIGp1
c3QgTUlNRVR5cGVGcm9tVVRJKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5cGUpOgorICAgICAgICBBZG9w
dCBVVElGcm9tTUlNRVR5cGUoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJk
VHlwZSk6CisgICAgICAgIEFkb3B0IGlzRGVjbGFyZWRVVEkgYW5kIFVUSUZyb21NSU1FVHlwZSgp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RN
SU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAg
ICAgICBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBVVEkgdXRpbGl0aWVzIGRlYWwgaW4gU3RyaW5n
cyBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZUZyb21VVEkpOgorICAgICAgICBBZGRlZC4gVGhpcyBkb2Vzbid0
IGNyYXdsIHVwIHRoZSBVVEkgdHJlZSBpZiB0aGUgZmlyc3QgY29udmVyc2lvbiBmYWlscywKKyAg
ICAgICAgd2hpY2ggaXMgd2hhdCBtb3N0IG9mIHRoZSBleGlzdGluZyBjb2RlIGRvZXMuIEl0J3Mg
cG9zc2libGUgd2Ugd2FudCB0bworICAgICAgICB1c2UgTUlNRVR5cGVGcm9tVVRJVHJlZSdzIGxv
Z2ljIGV2ZXJ5d2hlcmUsIGJ1dCBJIGRpZG4ndCB3YW50IHRvIGNoYW5nZQorICAgICAgICB0aGF0
IGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRnJvbVVUSVRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNEZWNsYXJlZFVUSSk6CisgICAgICAgIFRha2UgYW5kIHJl
dHVybiBzdHJpbmdzLgorCisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGVDYWNoZVBv
bGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVU
eXBlKToKKyAgICAgICAgQWRkIHRoZSBhZm9yZW1lbnRpb25lZCBjYWNoZS4KKwogMjAxNy0wOC0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NhY2hlIEFQ
SV0gRW5zdXJlIFJlc291cmNlUmVzcG9uc2UgaXMgbm90IG51bGwgd2hlbiByZWRpcmVjdGVkL3Rh
aW50aW5nL3R5cGUgZmllbGRzIGFyZSBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCA2ZWU0ZjcxMTM2Y2VmMDkwZmYwMmY5OWJmYTZjZmYxMjI0YzJkZDg5Li41
OGZlMDQ1YjNhZTViMzY5MTYwNGUxNTMyZWUyNGYzNWU1MjE1ZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0zMzIsOSArMzMyLDkgQEAgYm9vbCBFZGl0b3I6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW4KICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1R5cGUgPSB0eXBl
LmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBmaWxlbmFtZUV4dGVu
c2lvbiA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CiAgICAg
TlNTdHJpbmcgKnJlbGF0aXZlVVJMUGFydCA9IFtAImltYWdlIiBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzpmaWxlbmFtZUV4dGVuc2lvbi5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
aW1lVHlwZSA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhD
bGFzcyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgU3RyaW5n
IG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJKHR5cGUpOwogCi0gICAgYWRkRnJhZ21lbnQoZnJh
bWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2Uo
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRo
UmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCksIG1pbWVUeXBlLmdldCgpLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKSkpOworICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChy
ZWxhdGl2ZVVSTFBhcnQpLCBtaW1lVHlwZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkp
KTsKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggYTJhNGQwMzhkNWQ4ZTZiNGFiNWUxNDkyNWNmNDZj
YTVhODkzM2E2ZS4uYmI1NjcwN2ZjZWM2YTJkNjVlMTA0MTYyYWMwZmE3OTkxZmJiYzlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgorI2luY2x1ZGUgIlVUSVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KQEAgLTY4LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzKCkKICNpZiBVU0UoQ0cpCiAgICAgSGFzaFNldDxTdHJpbmc+JiBp
bWFnZVVUSXMgPSBhbGxvd2VkSW1hZ2VVVElzKCk7CiAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6
IGltYWdlVVRJcykgewotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZShpbWFnZVVUSSk7CisgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBl
RnJvbVVUSShpbWFnZVVUSSk7CiAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKICAgICAg
ICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7CkBA
IC0xNjAsNyArMTYxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzRm9yRW5jb2RpbmcoKQogICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQo
c3VwcG9ydGVkVHlwZXMuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgc3VwcG9ydGVkVHlwZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VwcG9ydGVkVHlwZXMu
Z2V0KCksIGkpKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNv
dXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVU
eXBlRnJvbVVUSShzdXBwb3J0ZWRUeXBlKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQo
bWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA1ODgyOWEwZTliNTM3Y2IyNDc0Yjc0OGY5MWQ2NzZi
MTVlYmEyOTFjLi4yN2M0OTIyMDU2YjRiMGE4MmM5NjVlMmE5YzU4MDlkYTMxNzk3Zjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdAogICAgIH0KIAogICAg
IGlmIChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29u
dGVudEluZm8gPSBbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0p
IHsKLSAgICAgICAgU3RyaW5nIHV0aSA9IFVUSUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlw
ZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpLmdldCgpOworICAgICAgICBTdHJpbmcgdXRpID0g
VVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogCiAgICAgICAgIFtjb250ZW50
SW5mbyBzZXRDb250ZW50VHlwZTp1dGldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDcxZWI4M2RmYWE2MDY4
N2ZmNmVhZDhmZmI0NmIyMjdlNDhjYjQ0ZDkuLjhmMzhkYmMzMmY4Y2Y3NmU3OWYxMzliZWY5MmQy
NzNjYmE5MmM0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1h
Z2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJVVElVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1ZGUgPEltYWdlSU8vSW1h
Z2VJTy5oPgpAQCAtNDQ3LDEwICs0NDgsMTEgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBq
cGVnVVRJKCkKICAgICByZXR1cm4ga1VUVHlwZUpQRUc7CiB9CiAgICAgCi1zdGF0aWMgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CisgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IGlP
UyB1c2UgdGhlIENvcmVTZXJ2aWNlcyB2ZXJzaW9uPwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBy
ZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKKyAg
ICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVDRlN0cmluZygpOwogI2Vs
c2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFyIGlmIENGU1RS
IGlzIHRocmVhZHNhZmUuCiAKQEAgLTUzMiw3ICs1MzQsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbAogICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAg
Zmx1c2hDb250ZXh0KCk7CiAKLSAgICBhdXRvIHV0aSA9IHV0aUZyb21NSU1FVHlwZShtaW1lVHlw
ZSk7CisgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7
CiAgICAgQVNTRVJUKHV0aSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CkBA
IC01NzQsNyArNTc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YShjb25z
dCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHkKIHsKICAgICBBU1NFUlQo
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKTsKIAotICAgIGF1dG8gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAg
ICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBB
U1NFUlQodXRpKTsKIAogICAgIENHSW1hZ2VBbHBoYUluZm8gZGF0YUFscGhhSW5mbyA9IGtDR0lt
YWdlQWxwaGFMYXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5oCmluZGV4IDVmODg0OWI0MDQyMjZkOWJjYzVjZGFhZThkOTNkMjdh
MzY2YTRkODguLjgzNTYzMGMxODA3OWUyYzM2ZTQyOTFjYmIzNTY3NThlM2VjYjZhM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgcHJlZmVy
cmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKLVN0
cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwotCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
bih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBhNjVmYmI3NDhjZTRiODE2ODM4NTdkZDc3MzY1
NGVhZjkxYTU3MDEzLi5kZjI4MzE0ZmZiMjExMDgwYWJiNTMzYWQ3NWUyYWJjNjM4NjBmZjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dNYWMubW0KQEAgLTM1LDExICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQot
ewotICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKS5nZXQoKTsKLX0K
LQogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHV0aSkKIHsKICAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0
aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0
ZW5zaW9uKSkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYWRlMzZj
OGUwMjViODk3YTgwZWIzODA2YjcyN2I2MTU1OTVmOTkwZS4uMDMyMzFmODNiNTMxMWVlNmY5ODFm
M2QwNDYxZmY4YzY0MmJhNjE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAt
MTI0MywxMSArMTI0MywxMSBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4gY3JlYXRlRmlsZVR5cGVzU2V0KE5TQXJyYXkgKmZpbAogICAgICAgICBhdXRv
IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHQsIE5VTEwpKTsKICAgICAgICAgaWYgKCF1dGkp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBtaW1lID0gYWRvcHRDRihVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlw
ZSkpOwotICAgICAgICBpZiAoc2hvdWxkUmVqZWN0TUlNRVR5cGUobWltZS5nZXQoKSkpCisgICAg
ICAgIGF1dG8gbWltZSA9IE1JTUVUeXBlRnJvbVVUSSh1dGkuZ2V0KCkpOworICAgICAgICBpZiAo
c2hvdWxkUmVqZWN0TUlNRVR5cGUobWltZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKG1pbWUpCi0gICAgICAgICAgICBzZXQuYWRkKG1pbWUuZ2V0KCkpOworICAgICAgICAg
ICAgc2V0LmFkZChtaW1lKTsKIAogICAgICAgICAvLyAtbW92aWVGaWxlVHlwZXM6IHJldHVybnMg
Ym90aCBmaWxlIGV4dGVuc2lvbnMgYW5kIE9TVHlwZXMuIFRoZSBsYXRlciBhcmUgc3Vycm91bmRl
ZCBieSBzaW5nbGUKICAgICAgICAgLy8gcXVvdGVzLCBlZy4gJ01vb1YnLCBzbyBkb24ndCBib3Ro
ZXIgbG9va2luZyBhdCB0aG9zZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggNTdhYzQ0N2NiYzNiYWIyNDU0MTRmNjUwYzM5YThlOWVhNThkYjI5
OS4uMmE2OThkOTEzNmQxMDExMWVkODUxMWY4NmRmZDQ4M2FjYzA1ZDljNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE0NCw3ICsxNDQsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250
ZW50KQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZShjb25zdCBOU1N0cmlu
ZyAqbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgKENGU3RyaW5nUmVm
KW1pbWVUeXBlLCBOVUxMKSkuZ2V0KCkpOworICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUobWlt
ZVR5cGUpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggYzVlZTViYTMxMDc0YWZjYjMzOWZkNGU5
ODgxYjY3OGZkODFiYTE0OC4uMWVkOTIyOWIyOWE1YTE0NmE4YmExNTI1NjBiM2Y0NDI0ZTQ2NGU5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCkBAIC0yOTMsMTIgKzI5MywxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZQogICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIGlmICghVVRUeXBlSXNEZWNsYXJl
ZCh1dGlPck1JTUVUeXBlLmdldCgpKSkKLSAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBhZG9w
dENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1F
VHlwZSwgdXRpT3JNSU1FVHlwZS5nZXQoKSwgbmlsKSk7CisgICAgICAgIGF1dG8gdXRpT3JNSU1F
VHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOworICAgICAgICBpZiAoIWlz
RGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCisgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0g
VVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCiAgICAgICAgIGF1dG8gaW1hZ2VEYXRh
ID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAg
IFtpdGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKil1dGlPck1JTUVUeXBlLmdldCgpXTsKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGRE
YXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwog
ICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIHNldEVzdGltYXRlZERpc3BsYXllZFNpemU6cGFzdGVi
b2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgc2V0U3VnZ2Vz
dGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAxOGRmYWJjODdkNDU0
ZjdkNThhMDA3MWZhYjkzOGUzZTI1ZDkxMmZhLi41ZmE0MmUxNTA5YzczY2JjMGUwNGIzNDEzMzI5
NGU5ZTMzMThjNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBv
cnQgIlRleHQuaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgpAQCAt
NDgyLDggKzQ4Myw5IEBAIHN0YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAobG93ZXJjYXNlZFR5cGUgPT0gInRleHQv
cnRmIiB8fCBsb3dlcmNhc2VkVHlwZSA9PSAicHVibGljLnJ0ZiIgfHwgbG93ZXJjYXNlZFR5cGUg
PT0gImNvbS5hcHBsZS50cmFkaXRpb25hbC1tYWMtcGxhaW4tdGV4dCIpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIGlmIChhdXRvIHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbG93ZXJjYXNl
ZFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgTlVMTCkpKSB7Ci0gICAgICAgIGlmIChhdXRv
IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBl
LmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpKQorICAgIGF1dG8gdXRpVHlwZSA9IFVU
SUZyb21NSU1FVHlwZShsb3dlcmNhc2VkVHlwZSk7CisgICAgaWYgKCF1dGlUeXBlLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoYXV0byBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJy
ZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFz
c05TUGJvYXJkVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIHBiVHlwZS5nZXQoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNv
cmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCBmNmNhYTI5ZjBlNzEwMmEwMTY0MGIyMzU4
MTVkZDllZWI3ZTg1ZmQ0Li4wZjBmZmQwZDc3ZDY2ZjhlMmE0MWZiMGJhZWY3ODgzMTRiYjYzZmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3Jl
VVJMUmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNN
YWluUmVzb3VyY2VMCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRl
bnNpb24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJsKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGV4dGVuc2lvbikgewogICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIG51bGxw
dHIpKTsKLSAgICAgICAgICAgICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBtaW1lVHlwZUZy
b21VVElUcmVlKHV0aS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01JTUVU
eXBlID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IGUxNWY2
OWI3MWJhNGE4ZGEwNzQ4NTBhNjNjMjhlMGIzOWMyYzc3MzAuLjc4Yjg3NTYzYWZmOTRiMTY3NmYy
NDFiNGM5MmFjODRmZTc0NjE5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCkBAIC0yNiwxMiArMjYsMTQgQEAKICNpZm5kZWYg
VVRJVXRpbGl0aWVzX2gKICNkZWZpbmUgVVRJVXRpbGl0aWVzX2gKIAorI2ltcG9ydCA8d3RmL0Zv
cndhcmQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3RyaW5nUmVm
IHV0aSk7Ci1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmluZ1Jl
ZiBtaW1lKTsKLWJvb2wgaXNEZWNsYXJlZFVUSShDRlN0cmluZ1JlZiBVVEkpOworU3RyaW5nIE1J
TUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBNSU1FVHlwZUZyb21VVElUcmVl
KGNvbnN0IFN0cmluZyYpOworU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmKTsK
K2Jvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmKTsKIH0KIAogI2VuZGlmIC8vIFVUSVV0
aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9V
VElVdGlsaXRpZXMubW0KaW5kZXggM2E0MmFjZjZjZTMyYzc4YTBmYzg4NWI1Nzg4MGY4NDdjYjFi
NWE1OS4uZDRlODI4MjQ0Y2FlZmY5ZjViOWEwYjgxOGVmMjU5MzFkMzU3NDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpA
QCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVUSVV0aWxp
dGllcy5oIgorI2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgorI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0zMiw1MCArMzQsNjYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRy
ZWUoQ0ZTdHJpbmdSZWYgdXRpKQorU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcm
IHV0aSkKIHsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENs
YXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkuZ2V0
KCk7Cit9CisKK1N0cmluZyBNSU1FVHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYgdXRpKQor
eworICAgIGF1dG8gdXRpQ0YgPSB1dGkuY3JlYXRlQ0ZTdHJpbmcoKTsKKwogICAgIC8vIENoZWNr
IGlmIHRoaXMgVVRJIGhhcyBhIE1JTUUgdHlwZS4KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwg
a1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5
cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpQ0YuZ2V0KCks
IGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKICAgICBpZiAobWltZVR5cGUpCiAgICAgICAgIHJldHVy
biBtaW1lVHlwZS5nZXQoKTsKIAogICAgIC8vIElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5IG9m
IHRoaXMgVVRJIHZpYSBpdHMgIkNvbmZvcm1zVG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmlyc3Qg
TUlNRSB0eXBlIHdlIGZpbmQuCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbCA9
IGFkb3B0Q0YoVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aSkpOworICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGRlY2wgPSBhZG9wdENGKFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1dGlDRi5n
ZXQoKSkpOwogICAgIGlmICghZGVjbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVl
KGRlY2wuZ2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgQ0ZUeXBlSUQg
dHlwZUlEID0gQ0ZHZXRUeXBlSUQodmFsdWUpOwogCiAgICAgaWYgKHR5cGVJRCA9PSBDRlN0cmlu
Z0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJp
bmdSZWYpdmFsdWUpOworICAgICAgICByZXR1cm4gTUlNRVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJp
bmdSZWYpdmFsdWUpOwogCiAgICAgaWYgKHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkpIHsK
ICAgICAgICAgQ0ZBcnJheVJlZiBuZXdUeXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOwogICAgICAg
ICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KG5ld1R5cGVzKTsKICAgICAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDRlR5cGVSZWYgb2Jq
ZWN0ID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRleChuZXdUeXBlcywgaSk7Ci0gICAgICAgIGlmIChD
RkdldFR5cGVJRChvYmplY3QpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFsdWVB
dEluZGV4KG5ld1R5cGVzLCBpKTsKKyAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChvYmplY3Qp
ICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBtaW1lVHlwZUZyb21V
VElUcmVlKChDRlN0cmluZ1JlZilvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBl
OworICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJlZSgoQ0ZT
dHJpbmdSZWYpb2JqZWN0KTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBuaWw7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmluZ1JlZiBtaW1lKQorc3RydWN0IFVUSUZyb21N
SU1FVHlwZUNhY2hlUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFN0cmluZywgU3RyaW5nPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTdHJp
bmcmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVh
dGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIGtleS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAwKSkuZ2V0KCkpOworICAgIH0KK307CisKK1N0cmluZyBVVElG
cm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lLCAwKSk7Ci0gICAgcmV0dXJuIHV0aTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwg
VVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0
KCkuZ2V0KG1pbWVUeXBlKTsKIH0KIAotYm9vbCBpc0RlY2xhcmVkVVRJKENGU3RyaW5nUmVmIFVU
SSkKK2Jvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKIHsKLSAgICByZXR1cm4g
VVRUeXBlSXNEZWNsYXJlZChVVEkpOworICAgIHJldHVybiBVVFR5cGVJc0RlY2xhcmVkKFVUSS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IGYx
Y2NhMDI5MWFjYzA4ZDU3MjliZTE3NzhjYzVhMTYzZDJlMzRkZjYuLjE5ZGQyOTQwOGFjNjkzM2Zl
OGMxOWEzZmNjZmJkNjNhOTdlZDk4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTMwMywxMyAr
MzAzLDEzIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAgICAgICAgICAgICAgQ0ZNdXRh
YmxlU3RyaW5nUmVmIG11dGFibGVFeHRlbnNpb24gPSBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbiwgTlVMTCk7CiAgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9uID0gYWRvcHRDRihtdXRhYmxlRXh0ZW5zaW9uKTsKLSAgICAgICAgICAg
ICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lv
bk1hcCwgZXh0ZW5zaW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJp
bmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIElmIHRoZSBHYXRla2VlcGVyLWJhc2VkIG1hcCBkb2Vzbid0IGhh
dmUgYSBNSU1FIHR5cGUsIHdlJ2xsIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgaXQgc2hvdWxkIGJl
IGJ5CiAgICAgICAgICAgICAgICAgICAgIC8vIGxvb2tpbmcgdXAgdGhlIGZpbGUgZXh0ZW5zaW9u
IGluIHRoZSBVVEkgbWFwcy4KICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWco
a1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgpLCAwKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0
KCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5k
ZXggYjhjOTVjZjgzMTZhMWRiOWU2ZDc1YWI2M2ExY2RmYTQ1NmQ2NmNlYi4uZDM0YzE5NTM4MDk2
YmMxOTZiNzE1ZWQ0MDRlZWZlMjA1OTVjMjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTYxNiwxNCArMTYxNiwxMyBAQCBzdGF0aWMgUmV0YWlu
UHRyPFVJSW1hZ2U+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsCiAKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFj
aG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsKICAgICBpZiAoIWF0dGFjaG1lbnRUeXBl
LmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGF0dGFjaG1lbnRUeXBlQ0YgPSBhdHRhY2htZW50
VHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVU
STsKLSAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGVDRi5nZXQoKSkpCi0g
ICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZUNGOworICAgICAgICBTdHJpbmcgVVRJOwor
ICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICBV
VEkgPSBhdHRhY2htZW50VHlwZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgVVRJID0gVVRJ
RnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgVVRJID0g
VVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICBbZG9jdW1lbnRJbnRl
cmFjdGlvbkNvbnRyb2xsZXIgc2V0VVRJOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KFVUSS5nZXQo
KSldOworICAgICAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0VVRJOnN0YXRp
Y19jYXN0PE5TU3RyaW5nICo+KFVUSSldOwogICAgIH0KIAogICAgIE5TQXJyYXkgKmljb25zID0g
W2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIGljb25zXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA1ZWJjZTgwM2U5ZDlkNzBmYTQyOTFjM2Yy
YjEzN2Q5Y2NlYjdiYjBkLi5hZTUzNGYzZTBhYWYwNWFjYjY5NjdjY2VjZDI1ZDI3ZjgwZWQyNmZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yNDIw
LDE0ICsyNDIwLDEzIEBAIHN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICAgICAgICAgIGlmIChhdXRvIGlj
b24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGlyZWN0b3J5IikpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGljb247CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRv
IGF0dGFjaG1lbnRUeXBlQ0YgPSBhdHRhY2htZW50VHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVEk7Ci0gICAgICAgICAgICBpZiAoaXNE
ZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZUNGLmdldCgpKSkKLSAgICAgICAgICAgICAgICBVVEkg
PSBhdHRhY2htZW50VHlwZUNGOworICAgICAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAgICAg
IGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAgICAgICAgICAgICAgICBVVEkg
PSBhdHRhY2htZW50VHlwZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVVEkg
PSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICAgICAg
aWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJLmdldCgpKSkKKyAgICAg
ICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGljb247CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318223</attachid>
            <date>2017-08-15 21:40:12 -0700</date>
            <delta_ts>2017-08-15 21:41:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815214011.patch</filename>
            <type>text/plain</type>
            <size>24649</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uZmY5YmY5Y2Y3OTVmYzExYmUzZDAxMWQ3ZmI2ZjBl
NDhmN2UzNTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIHBlcmYgd2luLgorCisgICAgICAgIFVU
VHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcgaXMgZmFpcmx5IGV4cGVuc2l2ZSwg
YW5kIGlzIGNhbGxlZAorICAgICAgICB1bmRlciBldmVyeSB0b0RhdGFVUkwsIHdoaWNoIHRoZSBX
dW5kZXJncm91bmQgd3VuZGVybWFwIGRvZXMgYSAvbG90Ly4KKworICAgICAgICBLZWVwIGEgMTYt
aXRlbSBMUlUgY2FjaGUgb2YgTUlNRVR5cGUtPlVUSSBtYXBwaW5ncy4KKworICAgICAgICBBbHNv
LCBtYWtlIG90aGVyIGNhbGxlcnMgb2YgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyB1c2UKKyAgICAgICAgdGhlIFVUSVV0aWxpdGllcyB2ZXJzaW9uIHNvIHRoZXkgY2FuIHNo
YXJlIGluIHRoZSBjYWNoaW5nLgorCisgICAgICAgIEFsc28sIGFzIGEgZHJpdmUtYnksIGFkZCBh
bmQgbWFrZSBvdGhlciBjYWxsZXJzIHVzZSBtaW1lVHlwZUZyb21VVEkgdG9vLAorICAgICAgICBh
bmQgbWFrZSB0aGUgVVRJVXRpbGl0aWVzIG9wZXJhdGUgb24gU3RyaW5ncyBmb3IgYSBzbGlnaHRs
eSBtb3JlIFdlYkNvcmUteSBmZWVsLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGaWxlVHlwZXNTZXQpOgorICAgICAgICBBZG9wdCBu
ZXdseS1hZGRlZCBNSU1FVHlwZUZyb21VVEkoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdl
QnVmZmVyTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNmRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp1
dGlGcm9tTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICBBZG9wdCBVVElGcm9tTUlNRVR5cGUs
IGFuZCByZW5hbWUgdGhlIGxvY2FsIGhlbHBlciB0aGF0IGRvZXMgc29tZXRoaW5nCisgICAgICAg
IGRpZmZlcmVudCAoYSBzbWFsbCBzdGF0aWMgbWFwKSBvbiBpT1MgYW5kIFdpbmRvd3MgdG8gbm90
IGhhdmUgYW4gb3ZlcmxhcHBpbmcgbmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVGb3JJbWFnZVNvdXJj
ZVR5cGUpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhpcyBmdW5jdGlvbiB0aGF0IGlzIGp1
c3QgTUlNRVR5cGVGcm9tVVRJKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5cGUpOgorICAgICAgICBBZG9w
dCBVVElGcm9tTUlNRVR5cGUoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJk
VHlwZSk6CisgICAgICAgIEFkb3B0IGlzRGVjbGFyZWRVVEkgYW5kIFVUSUZyb21NSU1FVHlwZSgp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RN
SU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAg
ICAgICBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBVVEkgdXRpbGl0aWVzIGRlYWwgaW4gU3RyaW5n
cyBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZUZyb21VVEkpOgorICAgICAgICBBZGRlZC4gVGhpcyBkb2Vzbid0
IGNyYXdsIHVwIHRoZSBVVEkgdHJlZSBpZiB0aGUgZmlyc3QgY29udmVyc2lvbiBmYWlscywKKyAg
ICAgICAgd2hpY2ggaXMgd2hhdCBtb3N0IG9mIHRoZSBleGlzdGluZyBjb2RlIGRvZXMuIEl0J3Mg
cG9zc2libGUgd2Ugd2FudCB0bworICAgICAgICB1c2UgTUlNRVR5cGVGcm9tVVRJVHJlZSdzIGxv
Z2ljIGV2ZXJ5d2hlcmUsIGJ1dCBJIGRpZG4ndCB3YW50IHRvIGNoYW5nZQorICAgICAgICB0aGF0
IGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRnJvbVVUSVRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNEZWNsYXJlZFVUSSk6CisgICAgICAgIFRha2UgYW5kIHJl
dHVybiBzdHJpbmdzLgorCisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGVDYWNoZVBv
bGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVU
eXBlKToKKyAgICAgICAgQWRkIHRoZSBhZm9yZW1lbnRpb25lZCBjYWNoZS4KKwogMjAxNy0wOC0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NhY2hlIEFQ
SV0gRW5zdXJlIFJlc291cmNlUmVzcG9uc2UgaXMgbm90IG51bGwgd2hlbiByZWRpcmVjdGVkL3Rh
aW50aW5nL3R5cGUgZmllbGRzIGFyZSBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCA2ZWU0ZjcxMTM2Y2VmMDkwZmYwMmY5OWJmYTZjZmYxMjI0YzJkZDg5Li41
OGZlMDQ1YjNhZTViMzY5MTYwNGUxNTMyZWUyNGYzNWU1MjE1ZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0zMzIsOSArMzMyLDkgQEAgYm9vbCBFZGl0b3I6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW4KICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1R5cGUgPSB0eXBl
LmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBmaWxlbmFtZUV4dGVu
c2lvbiA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CiAgICAg
TlNTdHJpbmcgKnJlbGF0aXZlVVJMUGFydCA9IFtAImltYWdlIiBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzpmaWxlbmFtZUV4dGVuc2lvbi5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
aW1lVHlwZSA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhD
bGFzcyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgU3RyaW5n
IG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJKHR5cGUpOwogCi0gICAgYWRkRnJhZ21lbnQoZnJh
bWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2Uo
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRo
UmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCksIG1pbWVUeXBlLmdldCgpLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKSkpOworICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChy
ZWxhdGl2ZVVSTFBhcnQpLCBtaW1lVHlwZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkp
KTsKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggYTJhNGQwMzhkNWQ4ZTZiNGFiNWUxNDkyNWNmNDZj
YTVhODkzM2E2ZS4uYmI1NjcwN2ZjZWM2YTJkNjVlMTA0MTYyYWMwZmE3OTkxZmJiYzlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgorI2luY2x1ZGUgIlVUSVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KQEAgLTY4LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzKCkKICNpZiBVU0UoQ0cpCiAgICAgSGFzaFNldDxTdHJpbmc+JiBp
bWFnZVVUSXMgPSBhbGxvd2VkSW1hZ2VVVElzKCk7CiAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6
IGltYWdlVVRJcykgewotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZShpbWFnZVVUSSk7CisgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBl
RnJvbVVUSShpbWFnZVVUSSk7CiAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKICAgICAg
ICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7CkBA
IC0xNjAsNyArMTYxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzRm9yRW5jb2RpbmcoKQogICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQo
c3VwcG9ydGVkVHlwZXMuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgc3VwcG9ydGVkVHlwZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VwcG9ydGVkVHlwZXMu
Z2V0KCksIGkpKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNv
dXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVU
eXBlRnJvbVVUSShzdXBwb3J0ZWRUeXBlKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQo
bWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA1ODgyOWEwZTliNTM3Y2IyNDc0Yjc0OGY5MWQ2NzZi
MTVlYmEyOTFjLi4yN2M0OTIyMDU2YjRiMGE4MmM5NjVlMmE5YzU4MDlkYTMxNzk3Zjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdAogICAgIH0KIAogICAg
IGlmIChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29u
dGVudEluZm8gPSBbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0p
IHsKLSAgICAgICAgU3RyaW5nIHV0aSA9IFVUSUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlw
ZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpLmdldCgpOworICAgICAgICBTdHJpbmcgdXRpID0g
VVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogCiAgICAgICAgIFtjb250ZW50
SW5mbyBzZXRDb250ZW50VHlwZTp1dGldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDcxZWI4M2RmYWE2MDY4
N2ZmNmVhZDhmZmI0NmIyMjdlNDhjYjQ0ZDkuLjhmMzhkYmMzMmY4Y2Y3NmU3OWYxMzliZWY5MmQy
NzNjYmE5MmM0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1h
Z2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJVVElVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1ZGUgPEltYWdlSU8vSW1h
Z2VJTy5oPgpAQCAtNDQ3LDEwICs0NDgsMTEgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBq
cGVnVVRJKCkKICAgICByZXR1cm4ga1VUVHlwZUpQRUc7CiB9CiAgICAgCi1zdGF0aWMgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CisgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IGlP
UyB1c2UgdGhlIENvcmVTZXJ2aWNlcyB2ZXJzaW9uPwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBy
ZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKKyAg
ICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVDRlN0cmluZygpOwogI2Vs
c2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFyIGlmIENGU1RS
IGlzIHRocmVhZHNhZmUuCiAKQEAgLTUzMiw3ICs1MzQsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbAogICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAg
Zmx1c2hDb250ZXh0KCk7CiAKLSAgICBhdXRvIHV0aSA9IHV0aUZyb21NSU1FVHlwZShtaW1lVHlw
ZSk7CisgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7
CiAgICAgQVNTRVJUKHV0aSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CkBA
IC01NzQsNyArNTc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YShjb25z
dCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHkKIHsKICAgICBBU1NFUlQo
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKTsKIAotICAgIGF1dG8gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAg
ICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBB
U1NFUlQodXRpKTsKIAogICAgIENHSW1hZ2VBbHBoYUluZm8gZGF0YUFscGhhSW5mbyA9IGtDR0lt
YWdlQWxwaGFMYXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5oCmluZGV4IDVmODg0OWI0MDQyMjZkOWJjYzVjZGFhZThkOTNkMjdh
MzY2YTRkODguLjgzNTYzMGMxODA3OWUyYzM2ZTQyOTFjYmIzNTY3NThlM2VjYjZhM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgcHJlZmVy
cmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKLVN0
cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwotCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
bih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBhNjVmYmI3NDhjZTRiODE2ODM4NTdkZDc3MzY1
NGVhZjkxYTU3MDEzLi5kZjI4MzE0ZmZiMjExMDgwYWJiNTMzYWQ3NWUyYWJjNjM4NjBmZjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dNYWMubW0KQEAgLTM1LDExICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQot
ewotICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKS5nZXQoKTsKLX0K
LQogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHV0aSkKIHsKICAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0
aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0
ZW5zaW9uKSkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYWRlMzZj
OGUwMjViODk3YTgwZWIzODA2YjcyN2I2MTU1OTVmOTkwZS4uYTA0NDJlOTA3ZDgyNWNjMmZjOGEy
MTZiZjhiNjM3NmY5YjljYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAt
MzksNiArMzksNyBAQAogI2ltcG9ydCAiUVRLaXRTUEkuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW1wb3J0ICJVUkwuaCIKKyNpbXByb3QgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgpAQCAtMTI0MywxMSArMTI0NCwxMSBA
QCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gY3JlYXRl
RmlsZVR5cGVzU2V0KE5TQXJyYXkgKmZpbAogICAgICAgICBhdXRvIHV0aSA9IGFkb3B0Q0YoVVRU
eXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0
ZW5zaW9uLCBleHQsIE5VTEwpKTsKICAgICAgICAgaWYgKCF1dGkpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgYXV0byBtaW1lID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFn
V2l0aENsYXNzKHV0aS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgICAgICBpZiAo
c2hvdWxkUmVqZWN0TUlNRVR5cGUobWltZS5nZXQoKSkpCisgICAgICAgIGF1dG8gbWltZSA9IE1J
TUVUeXBlRnJvbVVUSSh1dGkuZ2V0KCkpOworICAgICAgICBpZiAoc2hvdWxkUmVqZWN0TUlNRVR5
cGUobWltZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKG1pbWUpCi0gICAg
ICAgICAgICBzZXQuYWRkKG1pbWUuZ2V0KCkpOworICAgICAgICAgICAgc2V0LmFkZChtaW1lKTsK
IAogICAgICAgICAvLyAtbW92aWVGaWxlVHlwZXM6IHJldHVybnMgYm90aCBmaWxlIGV4dGVuc2lv
bnMgYW5kIE9TVHlwZXMuIFRoZSBsYXRlciBhcmUgc3Vycm91bmRlZCBieSBzaW5nbGUKICAgICAg
ICAgLy8gcXVvdGVzLCBlZy4gJ01vb1YnLCBzbyBkb24ndCBib3RoZXIgbG9va2luZyBhdCB0aG9z
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXgg
NTdhYzQ0N2NiYzNiYWIyNDU0MTRmNjUwYzM5YThlOWVhNThkYjI5OS4uMmE2OThkOTEzNmQxMDEx
MWVkODUxMWY4NmRmZDQ4M2FjYzA1ZDljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiBTdHJpbmcgUGFz
dGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZShjb25zdCBOU1N0cmluZyAqbWltZVR5cGUpCiB7Ci0g
ICAgcmV0dXJuIFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJG
b3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgKENGU3RyaW5nUmVmKW1pbWVUeXBlLCBOVUxMKSku
Z2V0KCkpOworICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpOwogfQogCiB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KaW5kZXggYzVlZTViYTMxMDc0YWZjYjMzOWZkNGU5ODgxYjY3OGZkODFiYTE0OC4u
MWVkOTIyOWIyOWE1YTE0NmE4YmExNTI1NjBiM2Y0NDI0ZTQ2NGU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0y
OTMsMTIgKzI5MywxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXBy
ZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZQogICAgICAgICBbaXRlbXNU
b1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8g
dXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmNyZWF0ZUNG
U3RyaW5nKCk7Ci0gICAgICAgIGlmICghVVRUeXBlSXNEZWNsYXJlZCh1dGlPck1JTUVUeXBlLmdl
dCgpKSkKLSAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgdXRpT3JNSU1FVHlw
ZS5nZXQoKSwgbmlsKSk7CisgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZU1JTUVUeXBlOworICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JN
SU1FVHlwZSkpCisgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0
aU9yTUlNRVR5cGUpOwogCiAgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIg
YWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBl
LmdldCgpXTsKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQo
KSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbaXRlbXNUb1Jl
Z2lzdGVyIHNldEVzdGltYXRlZERpc3BsYXllZFNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6
ZV07CiAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJk
SW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAxOGRmYWJjODdkNDU0ZjdkNThhMDA3MWZhYjkzOGUz
ZTI1ZDkxMmZhLi41ZmE0MmUxNTA5YzczY2JjMGUwNGIzNDEzMzI5NGU5ZTMzMThjNGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtNDcsNiAr
NDcsNyBAQAogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBv
cnQgIlVSTC5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNT
dHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgpAQCAtNDgyLDggKzQ4Myw5IEBAIHN0
YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKICAgICBpZiAobG93ZXJjYXNlZFR5cGUgPT0gInRleHQvcnRmIiB8fCBsb3dlcmNhc2Vk
VHlwZSA9PSAicHVibGljLnJ0ZiIgfHwgbG93ZXJjYXNlZFR5cGUgPT0gImNvbS5hcHBsZS50cmFk
aXRpb25hbC1tYWMtcGxhaW4tdGV4dCIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAg
IGlmIChhdXRvIHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZp
ZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbG93ZXJjYXNlZFR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgTlVMTCkpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBiVHlwZSA9IGFkb3B0Q0Yo
VVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFz
c05TUGJvYXJkVHlwZSkpKQorICAgIGF1dG8gdXRpVHlwZSA9IFVUSUZyb21NSU1FVHlwZShsb3dl
cmNhc2VkVHlwZSk7CisgICAgaWYgKCF1dGlUeXBlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
YXV0byBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRp
VHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpKQog
ICAgICAgICAgICAgcmV0dXJuIHBiVHlwZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25z
ZUlPUy5tbQppbmRleCBmNmNhYTI5ZjBlNzEwMmEwMTY0MGIyMzU4MTVkZDllZWI3ZTg1ZmQ0Li4w
ZjBmZmQwZDc3ZDY2ZjhlMmE0MWZiMGJhZWY3ODgzMTRiYjYzZmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2Fy
eShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAg
ICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKENG
VVJMQ29weVBhdGhFeHRlbnNpb24odXJsKSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lv
bikgewogICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IGFk
b3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc0Zp
bGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIG51bGxwdHIpKTsKLSAgICAgICAgICAg
ICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBtaW1lVHlwZUZyb21VVElUcmVlKHV0aS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01JTUVUeXBlID0gTUlNRVR5cGVGcm9t
VVRJVHJlZSh1dGkuZ2V0KCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IGUxNWY2OWI3MWJhNGE4ZGEwNzQ4NTBh
NjNjMjhlMGIzOWMyYzc3MzAuLjc4Yjg3NTYzYWZmOTRiMTY3NmYyNDFiNGM5MmFjODRmZTc0NjE5
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5oCkBAIC0yNiwxMiArMjYsMTQgQEAKICNpZm5kZWYgVVRJVXRpbGl0aWVzX2gKICNk
ZWZpbmUgVVRJVXRpbGl0aWVzX2gKIAorI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3RyaW5nUmVmIHV0aSk7Ci1SZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmluZ1JlZiBtaW1lKTsKLWJvb2wgaXNE
ZWNsYXJlZFVUSShDRlN0cmluZ1JlZiBVVEkpOworU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25z
dCBTdHJpbmcmKTsKK1N0cmluZyBNSU1FVHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYpOwor
U3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKK2Jvb2wgaXNEZWNsYXJlZFVU
SShjb25zdCBTdHJpbmcmKTsKIH0KIAogI2VuZGlmIC8vIFVUSVV0aWxpdGllc19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KaW5k
ZXggM2E0MmFjZjZjZTMyYzc4YTBmYzg4NWI1Nzg4MGY4NDdjYjFiNWE1OS4uZDRlODI4MjQ0Y2Fl
ZmY5ZjViOWEwYjgxOGVmMjU5MzFkMzU3NDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpAQCAtMjUsNiArMjUsOCBAQAog
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgorI2ltcG9ydCA8
d3RmL1RpbnlMUlVDYWNoZS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNl
cnZpY2VzLmg+CkBAIC0zMiw1MCArMzQsNjYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUoQ0ZTdHJpbmdSZWYgdXRp
KQorU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcmIHV0aSkKIHsKKyAgICByZXR1
cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkuZ2V0KCk7Cit9CisKK1N0cmluZyBN
SU1FVHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYgdXRpKQoreworICAgIGF1dG8gdXRpQ0Yg
PSB1dGkuY3JlYXRlQ0ZTdHJpbmcoKTsKKwogICAgIC8vIENoZWNrIGlmIHRoaXMgVVRJIGhhcyBh
IE1JTUUgdHlwZS4KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gYWRvcHRD
RihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NNSU1FVHlw
ZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9wdENGKFVUVHlw
ZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpQ0YuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5
cGUpKTsKICAgICBpZiAobWltZVR5cGUpCiAgICAgICAgIHJldHVybiBtaW1lVHlwZS5nZXQoKTsK
IAogICAgIC8vIElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5IG9mIHRoaXMgVVRJIHZpYSBpdHMg
IkNvbmZvcm1zVG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmlyc3QgTUlNRSB0eXBlIHdlIGZpbmQu
Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbCA9IGFkb3B0Q0YoVVRUeXBlQ29w
eURlY2xhcmF0aW9uKHV0aSkpOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRlY2wg
PSBhZG9wdENGKFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1dGlDRi5nZXQoKSkpOwogICAgIGlmICgh
ZGVjbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlY2wuZ2V0KCksIGtVVFR5
cGVDb25mb3Jtc1RvS2V5KTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbmlsOwor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgQ0ZUeXBlSUQgdHlwZUlEID0gQ0ZHZXRUeXBl
SUQodmFsdWUpOwogCiAgICAgaWYgKHR5cGVJRCA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAg
ICAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdSZWYpdmFsdWUpOworICAg
ICAgICByZXR1cm4gTUlNRVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdSZWYpdmFsdWUpOwogCiAg
ICAgaWYgKHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgQ0ZBcnJheVJl
ZiBuZXdUeXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOwogICAgICAgICBDRkluZGV4IGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KG5ld1R5cGVzKTsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChuZXdUeXBlcywgaSk7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRChvYmplY3Qp
ICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFsdWVBdEluZGV4KG5ld1R5cGVzLCBp
KTsKKyAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChvYmplY3QpICE9IENGU3RyaW5nR2V0VHlw
ZUlEKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBtaW1lVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1Jl
ZilvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOworICAgICAgICAgICAgU3Ry
aW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdSZWYpb2JqZWN0KTsK
KyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtaW1lVHlwZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBuaWw7CisgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVUSUZyb21NSU1F
VHlwZShDRlN0cmluZ1JlZiBtaW1lKQorc3RydWN0IFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5
IDogVGlueUxSVUNhY2hlUG9saWN5PFN0cmluZywgU3RyaW5nPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFN0cmluZyBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlm
aWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCAwKSkuZ2V0KCkpOworICAgIH0KK307CisKK1N0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IGFk
b3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01J
TUVUeXBlLCBtaW1lLCAwKSk7Ci0gICAgcmV0dXJuIHV0aTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2Fj
aGVQb2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KG1pbWVUeXBlKTsK
IH0KIAotYm9vbCBpc0RlY2xhcmVkVVRJKENGU3RyaW5nUmVmIFVUSSkKK2Jvb2wgaXNEZWNsYXJl
ZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKIHsKLSAgICByZXR1cm4gVVRUeXBlSXNEZWNsYXJlZChV
VEkpOworICAgIHJldHVybiBVVFR5cGVJc0RlY2xhcmVkKFVUSS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IGYxY2NhMDI5MWFjYzA4ZDU3Mjli
ZTE3NzhjYzVhMTYzZDJlMzRkZjYuLjE5ZGQyOTQwOGFjNjkzM2ZlOGMxOWEzZmNjZmJkNjNhOTdl
ZDk4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTMwMywxMyArMzAzLDEzIEBAIHZvaWQgYWRq
dXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wg
aXNNYWluUmVzb3VyY2VMCiAgICAgICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG11dGFi
bGVFeHRlbnNpb24gPSBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNh
c2UobXV0YWJsZUV4dGVuc2lvbiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0g
YWRvcHRDRihtdXRhYmxlRXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZT
dHJpbmdSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5zaW9uLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IElmIHRoZSBHYXRla2VlcGVyLWJhc2VkIG1hcCBkb2Vzbid0IGhhdmUgYSBNSU1FIHR5cGUsIHdl
J2xsIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgaXQgc2hvdWxkIGJlIGJ5CiAgICAgICAgICAgICAg
ICAgICAgIC8vIGxvb2tpbmcgdXAgdGhlIGZpbGUgZXh0ZW5zaW9uIGluIHRoZSBVVEkgbWFwcy4K
ICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENG
KFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFt
ZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgpLCAwKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpLmNyZWF0ZUNGU3RyaW5n
KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggYjhjOTVjZjgzMTZhMWRi
OWU2ZDc1YWI2M2ExY2RmYTQ1NmQ2NmNlYi4uZDM0YzE5NTM4MDk2YmMxOTZiNzE1ZWQ0MDRlZWZl
MjA1OTVjMjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtMTYxNiwxNCArMTYxNiwxMyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IGljb25G
b3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAKICAgICBT
dHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0
YWNobWVudFR5cGUoKTsKICAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgewotICAg
ICAgICBhdXRvIGF0dGFjaG1lbnRUeXBlQ0YgPSBhdHRhY2htZW50VHlwZS5jcmVhdGVDRlN0cmlu
ZygpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVUSTsKLSAgICAgICAgaWYgKGlz
RGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGVDRi5nZXQoKSkpCi0gICAgICAgICAgICBVVEkgPSBh
dHRhY2htZW50VHlwZUNGOworICAgICAgICBTdHJpbmcgVVRJOworICAgICAgICBpZiAoaXNEZWNs
YXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlw
ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFj
aG1lbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0
dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIg
c2V0VVRJOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KFVUSS5nZXQoKSldOworICAgICAgICBbZG9j
dW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0VVRJOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+
KFVUSSldOwogICAgIH0KIAogICAgIE5TQXJyYXkgKmljb25zID0gW2RvY3VtZW50SW50ZXJhY3Rp
b25Db250cm9sbGVyIGljb25zXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQppbmRleCA1ZWJjZTgwM2U5ZDlkNzBmYTQyOTFjM2YyYjEzN2Q5Y2NlYjdiYjBkLi5h
ZTUzNGYzZTBhYWYwNWFjYjY5NjdjY2VjZDI1ZDI3ZjgwZWQyNmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yNDIwLDE0ICsyNDIwLDEzIEBAIHN0
YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVu
dCYgYXR0YWNobWVudCkKICAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJ
Y29uRm9yVVRJKCJwdWJsaWMuZGlyZWN0b3J5IikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGlj
b247CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGF0dGFjaG1lbnRUeXBlQ0Yg
PSBhdHRhY2htZW50VHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBVVEk7Ci0gICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2ht
ZW50VHlwZUNGLmdldCgpKSkKLSAgICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZUNG
OworICAgICAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJ
KGF0dGFjaG1lbnRUeXBlKSkKKyAgICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUo
YXR0YWNobWVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAgVVRJID0gVVRJRnJvbU1J
TUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IElj
b246OmNyZWF0ZUljb25Gb3JVVEkoVVRJLmdldCgpKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGlj
b24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGljb247CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318224</attachid>
            <date>2017-08-15 21:41:47 -0700</date>
            <delta_ts>2017-08-15 21:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815214146.patch</filename>
            <type>text/plain</type>
            <size>24607</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uZmY5YmY5Y2Y3OTVmYzExYmUzZDAxMWQ3ZmI2ZjBl
NDhmN2UzNTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIHBlcmYgd2luLgorCisgICAgICAgIFVU
VHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcgaXMgZmFpcmx5IGV4cGVuc2l2ZSwg
YW5kIGlzIGNhbGxlZAorICAgICAgICB1bmRlciBldmVyeSB0b0RhdGFVUkwsIHdoaWNoIHRoZSBX
dW5kZXJncm91bmQgd3VuZGVybWFwIGRvZXMgYSAvbG90Ly4KKworICAgICAgICBLZWVwIGEgMTYt
aXRlbSBMUlUgY2FjaGUgb2YgTUlNRVR5cGUtPlVUSSBtYXBwaW5ncy4KKworICAgICAgICBBbHNv
LCBtYWtlIG90aGVyIGNhbGxlcnMgb2YgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyB1c2UKKyAgICAgICAgdGhlIFVUSVV0aWxpdGllcyB2ZXJzaW9uIHNvIHRoZXkgY2FuIHNo
YXJlIGluIHRoZSBjYWNoaW5nLgorCisgICAgICAgIEFsc28sIGFzIGEgZHJpdmUtYnksIGFkZCBh
bmQgbWFrZSBvdGhlciBjYWxsZXJzIHVzZSBtaW1lVHlwZUZyb21VVEkgdG9vLAorICAgICAgICBh
bmQgbWFrZSB0aGUgVVRJVXRpbGl0aWVzIG9wZXJhdGUgb24gU3RyaW5ncyBmb3IgYSBzbGlnaHRs
eSBtb3JlIFdlYkNvcmUteSBmZWVsLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGaWxlVHlwZXNTZXQpOgorICAgICAgICBBZG9wdCBu
ZXdseS1hZGRlZCBNSU1FVHlwZUZyb21VVEkoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdl
QnVmZmVyTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNmRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp1
dGlGcm9tTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICBBZG9wdCBVVElGcm9tTUlNRVR5cGUs
IGFuZCByZW5hbWUgdGhlIGxvY2FsIGhlbHBlciB0aGF0IGRvZXMgc29tZXRoaW5nCisgICAgICAg
IGRpZmZlcmVudCAoYSBzbWFsbCBzdGF0aWMgbWFwKSBvbiBpT1MgYW5kIFdpbmRvd3MgdG8gbm90
IGhhdmUgYW4gb3ZlcmxhcHBpbmcgbmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVGb3JJbWFnZVNvdXJj
ZVR5cGUpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhpcyBmdW5jdGlvbiB0aGF0IGlzIGp1
c3QgTUlNRVR5cGVGcm9tVVRJKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5cGUpOgorICAgICAgICBBZG9w
dCBVVElGcm9tTUlNRVR5cGUoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJk
VHlwZSk6CisgICAgICAgIEFkb3B0IGlzRGVjbGFyZWRVVEkgYW5kIFVUSUZyb21NSU1FVHlwZSgp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RN
SU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAg
ICAgICBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBVVEkgdXRpbGl0aWVzIGRlYWwgaW4gU3RyaW5n
cyBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZUZyb21VVEkpOgorICAgICAgICBBZGRlZC4gVGhpcyBkb2Vzbid0
IGNyYXdsIHVwIHRoZSBVVEkgdHJlZSBpZiB0aGUgZmlyc3QgY29udmVyc2lvbiBmYWlscywKKyAg
ICAgICAgd2hpY2ggaXMgd2hhdCBtb3N0IG9mIHRoZSBleGlzdGluZyBjb2RlIGRvZXMuIEl0J3Mg
cG9zc2libGUgd2Ugd2FudCB0bworICAgICAgICB1c2UgTUlNRVR5cGVGcm9tVVRJVHJlZSdzIGxv
Z2ljIGV2ZXJ5d2hlcmUsIGJ1dCBJIGRpZG4ndCB3YW50IHRvIGNoYW5nZQorICAgICAgICB0aGF0
IGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRnJvbVVUSVRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNEZWNsYXJlZFVUSSk6CisgICAgICAgIFRha2UgYW5kIHJl
dHVybiBzdHJpbmdzLgorCisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGVDYWNoZVBv
bGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVU
eXBlKToKKyAgICAgICAgQWRkIHRoZSBhZm9yZW1lbnRpb25lZCBjYWNoZS4KKwogMjAxNy0wOC0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NhY2hlIEFQ
SV0gRW5zdXJlIFJlc291cmNlUmVzcG9uc2UgaXMgbm90IG51bGwgd2hlbiByZWRpcmVjdGVkL3Rh
aW50aW5nL3R5cGUgZmllbGRzIGFyZSBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCA2ZWU0ZjcxMTM2Y2VmMDkwZmYwMmY5OWJmYTZjZmYxMjI0YzJkZDg5Li41
OGZlMDQ1YjNhZTViMzY5MTYwNGUxNTMyZWUyNGYzNWU1MjE1ZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0zMzIsOSArMzMyLDkgQEAgYm9vbCBFZGl0b3I6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW4KICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1R5cGUgPSB0eXBl
LmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBmaWxlbmFtZUV4dGVu
c2lvbiA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CiAgICAg
TlNTdHJpbmcgKnJlbGF0aXZlVVJMUGFydCA9IFtAImltYWdlIiBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzpmaWxlbmFtZUV4dGVuc2lvbi5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
aW1lVHlwZSA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhD
bGFzcyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgU3RyaW5n
IG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJKHR5cGUpOwogCi0gICAgYWRkRnJhZ21lbnQoZnJh
bWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2Uo
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRo
UmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCksIG1pbWVUeXBlLmdldCgpLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKSkpOworICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChy
ZWxhdGl2ZVVSTFBhcnQpLCBtaW1lVHlwZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkp
KTsKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggYTJhNGQwMzhkNWQ4ZTZiNGFiNWUxNDkyNWNmNDZj
YTVhODkzM2E2ZS4uM2FjZjFmMTQzZmNlYmY2ZmExZTkxYjg1YTRkMTk4N2JlYjM0M2Q0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1
ZGUgIlVUSVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiVVRJVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTY4LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKICNpZiBVU0UoQ0cpCiAgICAgSGFz
aFNldDxTdHJpbmc+JiBpbWFnZVVUSXMgPSBhbGxvd2VkSW1hZ2VVVElzKCk7CiAgICAgZm9yIChh
dXRvJiBpbWFnZVVUSSA6IGltYWdlVVRJcykgewotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBN
SU1FVHlwZUZvckltYWdlU291cmNlVHlwZShpbWFnZVVUSSk7CisgICAgICAgIFN0cmluZyBtaW1l
VHlwZSA9IE1JTUVUeXBlRnJvbVVUSShpbWFnZVVUSSk7CiAgICAgICAgIGlmICghbWltZVR5cGUu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1p
bWVUeXBlKTsKICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFk
ZChtaW1lVHlwZSk7CkBAIC0xNjAsNyArMTYxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcoKQogICAgIENGSW5kZXggY291bnQgPSBD
RkFycmF5R2V0Q291bnQoc3VwcG9ydGVkVHlwZXMuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgc3VwcG9ydGVkVHlw
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
c3VwcG9ydGVkVHlwZXMuZ2V0KCksIGkpKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgIFN0cmluZyBt
aW1lVHlwZSA9IE1JTUVUeXBlRnJvbVVUSShzdXBwb3J0ZWRUeXBlKTsKICAgICAgICAgaWYgKCFt
aW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nLT5hZGQobWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA1ODgyOWEwZTliNTM3Y2Iy
NDc0Yjc0OGY5MWQ2NzZiMTVlYmEyOTFjLi4yN2M0OTIyMDU2YjRiMGE4MmM5NjVlMmE5YzU4MDlk
YTMxNzk3Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dAogICAgIH0KIAogICAgIGlmIChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0
aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9y
bWF0aW9uUmVxdWVzdF0pIHsKLSAgICAgICAgU3RyaW5nIHV0aSA9IFVUSUZyb21NSU1FVHlwZShy
ZXNwb25zZS5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpLmdldCgpOworICAgICAg
ICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogCiAg
ICAgICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50VHlwZTp1dGldOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IDcxZWI4M2RmYWE2MDY4N2ZmNmVhZDhmZmI0NmIyMjdlNDhjYjQ0ZDkuLjhmMzhkYmMzMmY4Y2Y3
NmU3OWYxMzliZWY5MmQyNzNjYmE5MmM0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJVVElVdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1
ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgpAQCAtNDQ3LDEwICs0NDgsMTEgQEAgc3RhdGljIGlubGlu
ZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKICAgICByZXR1cm4ga1VUVHlwZUpQRUc7CiB9CiAgICAg
Ci1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21JbWFn
ZUJ1ZmZlck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CisgICAgLy8gRklYTUU6
IFdoeSBkb2Vzbid0IGlPUyB1c2UgdGhlIENvcmVTZXJ2aWNlcyB2ZXJzaW9uPwogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlm
aWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDApKTsKKyAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVD
RlN0cmluZygpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1
bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKQEAgLTUzMiw3ICs1MzQsNyBAQCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbAogICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKLSAgICBhdXRvIHV0aSA9IHV0aUZyb21N
SU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1F
VHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2U7CkBAIC01NzQsNyArNTc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YShjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHkK
IHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGF1dG8gdXRpID0gdXRpRnJvbU1JTUVUeXBl
KG1pbWVUeXBlKTsKKyAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1p
bWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAogICAgIENHSW1hZ2VBbHBoYUluZm8gZGF0YUFs
cGhhSW5mbyA9IGtDR0ltYWdlQWxwaGFMYXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oCmluZGV4IDVmODg0OWI0MDQyMjZkOWJj
YzVjZGFhZThkOTNkMjdhMzY2YTRkODguLjgzNTYzMGMxODA3OWUyYzM2ZTQyOTFjYmIzNTY3NThl
M2VjYjZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CiAKLVN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpOwotCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdl
dEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9u
LCBzaXplX3QgY291bnQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBhNjVmYmI3NDhjZTRi
ODE2ODM4NTdkZDc3MzY1NGVhZjkxYTU3MDEzLi5kZjI4MzE0ZmZiMjExMDgwYWJiNTMzYWQ3NWUy
YWJjNjM4NjBmZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KQEAgLTM1LDExICszNSw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0
IFN0cmluZyYgdXRpKQotewotICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5
cGUpKS5nZXQoKTsKLX0KLQogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNl
VHlwZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKICAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0KaW5kZXggYWRlMzZjOGUwMjViODk3YTgwZWIzODA2YjcyN2I2MTU1OTVmOTkwZS4uYTA0NDJl
OTA3ZDgyNWNjMmZjOGEyMTZiZjhiNjM3NmY5YjljYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZh
dGVRVEtpdC5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiUVRLaXRTUEkuaCIKICNpbXBv
cnQgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0ICJVUkwuaCIKKyNpbXByb3QgIlVUSVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgpAQCAtMTI0
MywxMSArMTI0NCwxMSBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4gY3JlYXRlRmlsZVR5cGVzU2V0KE5TQXJyYXkgKmZpbAogICAgICAgICBhdXRvIHV0
aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHQsIE5VTEwpKTsKICAgICAgICAgaWYgKCF1dGkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBtaW1lID0gYWRvcHRDRihVVFR5cGVD
b3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkp
OwotICAgICAgICBpZiAoc2hvdWxkUmVqZWN0TUlNRVR5cGUobWltZS5nZXQoKSkpCisgICAgICAg
IGF1dG8gbWltZSA9IE1JTUVUeXBlRnJvbVVUSSh1dGkuZ2V0KCkpOworICAgICAgICBpZiAoc2hv
dWxkUmVqZWN0TUlNRVR5cGUobWltZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
aWYgKG1pbWUpCi0gICAgICAgICAgICBzZXQuYWRkKG1pbWUuZ2V0KCkpOworICAgICAgICAgICAg
c2V0LmFkZChtaW1lKTsKIAogICAgICAgICAvLyAtbW92aWVGaWxlVHlwZXM6IHJldHVybnMgYm90
aCBmaWxlIGV4dGVuc2lvbnMgYW5kIE9TVHlwZXMuIFRoZSBsYXRlciBhcmUgc3Vycm91bmRlZCBi
eSBzaW5nbGUKICAgICAgICAgLy8gcXVvdGVzLCBlZy4gJ01vb1YnLCBzbyBkb24ndCBib3RoZXIg
bG9va2luZyBhdCB0aG9zZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KaW5kZXggNTdhYzQ0N2NiYzNiYWIyNDU0MTRmNjUwYzM5YThlOWVhNThkYjI5OS4u
MmE2OThkOTEzNmQxMDExMWVkODUxMWY4NmRmZDQ4M2FjYzA1ZDljNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50
KQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZShjb25zdCBOU1N0cmluZyAq
bWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZl
cnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgKENGU3RyaW5nUmVmKW1p
bWVUeXBlLCBOVUxMKSkuZ2V0KCkpOworICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUobWltZVR5
cGUpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYg
cGFzdGVib2FyZEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggYzVlZTViYTMxMDc0YWZjYjMzOWZkNGU5ODgx
YjY3OGZkODFiYTE0OC4uMWVkOTIyOWIyOWE1YTE0NmE4YmExNTI1NjBiM2Y0NDI0ZTQ2NGU5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC0yOTMsMTIgKzI5MywxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZQog
ICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291
cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1J
TUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIGlmICghVVRUeXBlSXNEZWNsYXJlZCh1
dGlPck1JTUVUeXBlLmdldCgpKSkKLSAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBhZG9wdENG
KFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlw
ZSwgdXRpT3JNSU1FVHlwZS5nZXQoKSwgbmlsKSk7CisgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlw
ZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOworICAgICAgICBpZiAoIWlzRGVj
bGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCisgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJ
RnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCiAgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIFtp
dGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
Kil1dGlPck1JTUVUeXBlLmdldCgpXTsKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRh
OmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAg
ICAgICBbaXRlbXNUb1JlZ2lzdGVyIHNldEVzdGltYXRlZERpc3BsYXllZFNpemU6cGFzdGVib2Fy
ZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVk
TmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAxOGRmYWJjODdkNDU0Zjdk
NThhMDA3MWZhYjkzOGUzZTI1ZDkxMmZhLi41ZmE0MmUxNTA5YzczY2JjMGUwNGIzNDEzMzI5NGU5
ZTMzMThjNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQg
IlRleHQuaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgpAQCAtNDgy
LDggKzQ4Myw5IEBAIHN0YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAobG93ZXJjYXNlZFR5cGUgPT0gInRleHQvcnRm
IiB8fCBsb3dlcmNhc2VkVHlwZSA9PSAicHVibGljLnJ0ZiIgfHwgbG93ZXJjYXNlZFR5cGUgPT0g
ImNvbS5hcHBsZS50cmFkaXRpb25hbC1tYWMtcGxhaW4tdGV4dCIpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAotICAgIGlmIChhdXRvIHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbG93ZXJjYXNlZFR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgTlVMTCkpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBi
VHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdl
dCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpKQorICAgIGF1dG8gdXRpVHlwZSA9IFVUSUZy
b21NSU1FVHlwZShsb3dlcmNhc2VkVHlwZSk7CisgICAgaWYgKCF1dGlUeXBlLmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAoYXV0byBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc05T
UGJvYXJkVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIHBiVHlwZS5nZXQoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVV
UkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dl
YkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCBmNmNhYTI5ZjBlNzEwMmEwMTY0MGIyMzU4MTVk
ZDllZWI3ZTg1ZmQ0Li4wZjBmZmQwZDc3ZDY2ZjhlMmE0MWZiMGJhZWY3ODgzMTRiYjYzZmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJM
UmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgYWRqdXN0TUlN
RVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWlu
UmVzb3VyY2VMCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNp
b24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJsKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGV4dGVuc2lvbikgewogICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIG51bGxwdHIp
KTsKLSAgICAgICAgICAgICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBtaW1lVHlwZUZyb21V
VElUcmVlKHV0aS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01JTUVUeXBl
ID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IGUxNWY2OWI3
MWJhNGE4ZGEwNzQ4NTBhNjNjMjhlMGIzOWMyYzc3MzAuLjc4Yjg3NTYzYWZmOTRiMTY3NmYyNDFi
NGM5MmFjODRmZTc0NjE5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCkBAIC0yNiwxMiArMjYsMTQgQEAKICNpZm5kZWYgVVRJ
VXRpbGl0aWVzX2gKICNkZWZpbmUgVVRJVXRpbGl0aWVzX2gKIAorI2ltcG9ydCA8d3RmL0Zvcndh
cmQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3RyaW5nUmVmIHV0
aSk7Ci1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmluZ1JlZiBt
aW1lKTsKLWJvb2wgaXNEZWNsYXJlZFVUSShDRlN0cmluZ1JlZiBVVEkpOworU3RyaW5nIE1JTUVU
eXBlRnJvbVVUSShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBNSU1FVHlwZUZyb21VVElUcmVlKGNv
bnN0IFN0cmluZyYpOworU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKK2Jv
b2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmKTsKIH0KIAogI2VuZGlmIC8vIFVUSVV0aWxp
dGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9V
VElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElV
dGlsaXRpZXMubW0KaW5kZXggM2E0MmFjZjZjZTMyYzc4YTBmYzg4NWI1Nzg4MGY4NDdjYjFiNWE1
OS4uZDRlODI4MjQ0Y2FlZmY5ZjViOWEwYjgxOGVmMjU5MzFkMzU3NDg5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpAQCAt
MjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGll
cy5oIgorI2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vydmlj
ZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0zMiw1MCArMzQsNjYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUo
Q0ZTdHJpbmdSZWYgdXRpKQorU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcmIHV0
aSkKIHsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkuZ2V0KCk7
Cit9CisKK1N0cmluZyBNSU1FVHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYgdXRpKQorewor
ICAgIGF1dG8gdXRpQ0YgPSB1dGkuY3JlYXRlQ0ZTdHJpbmcoKTsKKwogICAgIC8vIENoZWNrIGlm
IHRoaXMgVVRJIGhhcyBhIE1JTUUgdHlwZS4KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1p
bWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VU
VGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUg
PSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpQ0YuZ2V0KCksIGtV
VFRhZ0NsYXNzTUlNRVR5cGUpKTsKICAgICBpZiAobWltZVR5cGUpCiAgICAgICAgIHJldHVybiBt
aW1lVHlwZS5nZXQoKTsKIAogICAgIC8vIElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5IG9mIHRo
aXMgVVRJIHZpYSBpdHMgIkNvbmZvcm1zVG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmlyc3QgTUlN
RSB0eXBlIHdlIGZpbmQuCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbCA9IGFk
b3B0Q0YoVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aSkpOworICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IGRlY2wgPSBhZG9wdENGKFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1dGlDRi5nZXQo
KSkpOwogICAgIGlmICghZGVjbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRl
Y2wuZ2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgQ0ZUeXBlSUQgdHlw
ZUlEID0gQ0ZHZXRUeXBlSUQodmFsdWUpOwogCiAgICAgaWYgKHR5cGVJRCA9PSBDRlN0cmluZ0dl
dFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdS
ZWYpdmFsdWUpOworICAgICAgICByZXR1cm4gTUlNRVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdS
ZWYpdmFsdWUpOwogCiAgICAgaWYgKHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkpIHsKICAg
ICAgICAgQ0ZBcnJheVJlZiBuZXdUeXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOwogICAgICAgICBD
RkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KG5ld1R5cGVzKTsKICAgICAgICAgZm9yIChD
RkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDRlR5cGVSZWYgb2JqZWN0
ID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRleChuZXdUeXBlcywgaSk7Ci0gICAgICAgIGlmIChDRkdl
dFR5cGVJRChvYmplY3QpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KG5ld1R5cGVzLCBpKTsKKyAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChvYmplY3QpICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBtaW1lVHlwZUZyb21VVElU
cmVlKChDRlN0cmluZ1JlZilvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOwor
ICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJp
bmdSZWYpb2JqZWN0KTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiBuaWw7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmluZ1JlZiBtaW1lKQorc3RydWN0IFVUSUZyb21NSU1F
VHlwZUNhY2hlUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFN0cmluZywgU3RyaW5nPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQ
cmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIGtleS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCAwKSkuZ2V0KCkpOworICAgIH0KK307CisKK1N0cmluZyBVVElGcm9t
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lLCAwKSk7Ci0gICAgcmV0dXJuIHV0aTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwgVVRJ
RnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCku
Z2V0KG1pbWVUeXBlKTsKIH0KIAotYm9vbCBpc0RlY2xhcmVkVVRJKENGU3RyaW5nUmVmIFVUSSkK
K2Jvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKIHsKLSAgICByZXR1cm4gVVRU
eXBlSXNEZWNsYXJlZChVVEkpOworICAgIHJldHVybiBVVFR5cGVJc0RlY2xhcmVkKFVUSS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IGYxY2Nh
MDI5MWFjYzA4ZDU3MjliZTE3NzhjYzVhMTYzZDJlMzRkZjYuLjE5ZGQyOTQwOGFjNjkzM2ZlOGMx
OWEzZmNjZmJkNjNhOTdlZDk4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTMwMywxMyArMzAz
LDEzIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNm
UmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAgICAgICAgICAgICAgQ0ZNdXRhYmxl
U3RyaW5nUmVmIG11dGFibGVFeHRlbnNpb24gPSBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
Q0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbiwgTlVMTCk7CiAgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9uID0gYWRvcHRDRihtdXRhYmxlRXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1h
cCwgZXh0ZW5zaW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIHRoZSBHYXRla2VlcGVyLWJhc2VkIG1hcCBkb2Vzbid0IGhhdmUg
YSBNSU1FIHR5cGUsIHdlJ2xsIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgaXQgc2hvdWxkIGJlIGJ5
CiAgICAgICAgICAgICAgICAgICAgIC8vIGxvb2tpbmcgdXAgdGhlIGZpbGUgZXh0ZW5zaW9uIGlu
IHRoZSBVVEkgbWFwcy4KICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VU
VGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgpLCAwKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkp
LmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXgg
YjhjOTVjZjgzMTZhMWRiOWU2ZDc1YWI2M2ExY2RmYTQ1NmQ2NmNlYi4uZDM0YzE5NTM4MDk2YmMx
OTZiNzE1ZWQ0MDRlZWZlMjA1OTVjMjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTYxNiwxNCArMTYxNiwxMyBAQCBzdGF0aWMgUmV0YWluUHRy
PFVJSW1hZ2U+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFj
aG1lbnQsCiAKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1l
bnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsKICAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlz
RW1wdHkoKSkgewotICAgICAgICBhdXRvIGF0dGFjaG1lbnRUeXBlQ0YgPSBhdHRhY2htZW50VHlw
ZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVUSTsK
LSAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGVDRi5nZXQoKSkpCi0gICAg
ICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZUNGOworICAgICAgICBTdHJpbmcgVVRJOworICAg
ICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICBVVEkg
PSBhdHRhY2htZW50VHlwZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgVVRJID0gVVRJRnJv
bU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgVVRJID0gVVRJ
RnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICBbZG9jdW1lbnRJbnRlcmFj
dGlvbkNvbnRyb2xsZXIgc2V0VVRJOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KFVUSS5nZXQoKSld
OworICAgICAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0VVRJOnN0YXRpY19j
YXN0PE5TU3RyaW5nICo+KFVUSSldOwogICAgIH0KIAogICAgIE5TQXJyYXkgKmljb25zID0gW2Rv
Y3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIGljb25zXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA1ZWJjZTgwM2U5ZDlkNzBmYTQyOTFjM2YyYjEz
N2Q5Y2NlYjdiYjBkLi5hZTUzNGYzZTBhYWYwNWFjYjY5NjdjY2VjZDI1ZDI3ZjgwZWQyNmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yNDIwLDE0
ICsyNDIwLDEzIEBAIHN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICAgICAgICAgIGlmIChhdXRvIGljb24g
PSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGlyZWN0b3J5IikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGljb247CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGF0
dGFjaG1lbnRUeXBlQ0YgPSBhdHRhY2htZW50VHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVEk7Ci0gICAgICAgICAgICBpZiAoaXNEZWNs
YXJlZFVUSShhdHRhY2htZW50VHlwZUNGLmdldCgpKSkKLSAgICAgICAgICAgICAgICBVVEkgPSBh
dHRhY2htZW50VHlwZUNGOworICAgICAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAgICAgIGlm
IChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAgICAgICAgICAgICAgICBVVEkgPSBh
dHRhY2htZW50VHlwZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVVEkgPSBV
VElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAg
VVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICAgICAgaWYg
KGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJLmdldCgpKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGljb247CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318226</attachid>
            <date>2017-08-15 21:56:28 -0700</date>
            <delta_ts>2017-08-15 22:00:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815215628.patch</filename>
            <type>text/plain</type>
            <size>24824</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uZmY5YmY5Y2Y3OTVmYzExYmUzZDAxMWQ3ZmI2ZjBl
NDhmN2UzNTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIHBlcmYgd2luLgorCisgICAgICAgIFVU
VHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcgaXMgZmFpcmx5IGV4cGVuc2l2ZSwg
YW5kIGlzIGNhbGxlZAorICAgICAgICB1bmRlciBldmVyeSB0b0RhdGFVUkwsIHdoaWNoIHRoZSBX
dW5kZXJncm91bmQgd3VuZGVybWFwIGRvZXMgYSAvbG90Ly4KKworICAgICAgICBLZWVwIGEgMTYt
aXRlbSBMUlUgY2FjaGUgb2YgTUlNRVR5cGUtPlVUSSBtYXBwaW5ncy4KKworICAgICAgICBBbHNv
LCBtYWtlIG90aGVyIGNhbGxlcnMgb2YgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyB1c2UKKyAgICAgICAgdGhlIFVUSVV0aWxpdGllcyB2ZXJzaW9uIHNvIHRoZXkgY2FuIHNo
YXJlIGluIHRoZSBjYWNoaW5nLgorCisgICAgICAgIEFsc28sIGFzIGEgZHJpdmUtYnksIGFkZCBh
bmQgbWFrZSBvdGhlciBjYWxsZXJzIHVzZSBtaW1lVHlwZUZyb21VVEkgdG9vLAorICAgICAgICBh
bmQgbWFrZSB0aGUgVVRJVXRpbGl0aWVzIG9wZXJhdGUgb24gU3RyaW5ncyBmb3IgYSBzbGlnaHRs
eSBtb3JlIFdlYkNvcmUteSBmZWVsLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGaWxlVHlwZXNTZXQpOgorICAgICAgICBBZG9wdCBu
ZXdseS1hZGRlZCBNSU1FVHlwZUZyb21VVEkoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdl
QnVmZmVyTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNmRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp1
dGlGcm9tTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICBBZG9wdCBVVElGcm9tTUlNRVR5cGUs
IGFuZCByZW5hbWUgdGhlIGxvY2FsIGhlbHBlciB0aGF0IGRvZXMgc29tZXRoaW5nCisgICAgICAg
IGRpZmZlcmVudCAoYSBzbWFsbCBzdGF0aWMgbWFwKSBvbiBpT1MgYW5kIFdpbmRvd3MgdG8gbm90
IGhhdmUgYW4gb3ZlcmxhcHBpbmcgbmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVGb3JJbWFnZVNvdXJj
ZVR5cGUpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhpcyBmdW5jdGlvbiB0aGF0IGlzIGp1
c3QgTUlNRVR5cGVGcm9tVVRJKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5cGUpOgorICAgICAgICBBZG9w
dCBVVElGcm9tTUlNRVR5cGUoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJk
VHlwZSk6CisgICAgICAgIEFkb3B0IGlzRGVjbGFyZWRVVEkgYW5kIFVUSUZyb21NSU1FVHlwZSgp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RN
SU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAg
ICAgICBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBVVEkgdXRpbGl0aWVzIGRlYWwgaW4gU3RyaW5n
cyBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZUZyb21VVEkpOgorICAgICAgICBBZGRlZC4gVGhpcyBkb2Vzbid0
IGNyYXdsIHVwIHRoZSBVVEkgdHJlZSBpZiB0aGUgZmlyc3QgY29udmVyc2lvbiBmYWlscywKKyAg
ICAgICAgd2hpY2ggaXMgd2hhdCBtb3N0IG9mIHRoZSBleGlzdGluZyBjb2RlIGRvZXMuIEl0J3Mg
cG9zc2libGUgd2Ugd2FudCB0bworICAgICAgICB1c2UgTUlNRVR5cGVGcm9tVVRJVHJlZSdzIGxv
Z2ljIGV2ZXJ5d2hlcmUsIGJ1dCBJIGRpZG4ndCB3YW50IHRvIGNoYW5nZQorICAgICAgICB0aGF0
IGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRnJvbVVUSVRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNEZWNsYXJlZFVUSSk6CisgICAgICAgIFRha2UgYW5kIHJl
dHVybiBzdHJpbmdzLgorCisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGVDYWNoZVBv
bGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVU
eXBlKToKKyAgICAgICAgQWRkIHRoZSBhZm9yZW1lbnRpb25lZCBjYWNoZS4KKwogMjAxNy0wOC0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NhY2hlIEFQ
SV0gRW5zdXJlIFJlc291cmNlUmVzcG9uc2UgaXMgbm90IG51bGwgd2hlbiByZWRpcmVjdGVkL3Rh
aW50aW5nL3R5cGUgZmllbGRzIGFyZSBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCA2ZWU0ZjcxMTM2Y2VmMDkwZmYwMmY5OWJmYTZjZmYxMjI0YzJkZDg5Li41
OGZlMDQ1YjNhZTViMzY5MTYwNGUxNTMyZWUyNGYzNWU1MjE1ZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0zMzIsOSArMzMyLDkgQEAgYm9vbCBFZGl0b3I6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW4KICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1R5cGUgPSB0eXBl
LmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBmaWxlbmFtZUV4dGVu
c2lvbiA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CiAgICAg
TlNTdHJpbmcgKnJlbGF0aXZlVVJMUGFydCA9IFtAImltYWdlIiBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzpmaWxlbmFtZUV4dGVuc2lvbi5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
aW1lVHlwZSA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhD
bGFzcyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgU3RyaW5n
IG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJKHR5cGUpOwogCi0gICAgYWRkRnJhZ21lbnQoZnJh
bWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2Uo
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRo
UmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCksIG1pbWVUeXBlLmdldCgpLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKSkpOworICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChy
ZWxhdGl2ZVVSTFBhcnQpLCBtaW1lVHlwZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkp
KTsKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggYTJhNGQwMzhkNWQ4ZTZiNGFiNWUxNDkyNWNmNDZj
YTVhODkzM2E2ZS4uM2FjZjFmMTQzZmNlYmY2ZmExZTkxYjg1YTRkMTk4N2JlYjM0M2Q0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2luY2x1
ZGUgIlVUSVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiVVRJVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTY4LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKICNpZiBVU0UoQ0cpCiAgICAgSGFz
aFNldDxTdHJpbmc+JiBpbWFnZVVUSXMgPSBhbGxvd2VkSW1hZ2VVVElzKCk7CiAgICAgZm9yIChh
dXRvJiBpbWFnZVVUSSA6IGltYWdlVVRJcykgewotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBN
SU1FVHlwZUZvckltYWdlU291cmNlVHlwZShpbWFnZVVUSSk7CisgICAgICAgIFN0cmluZyBtaW1l
VHlwZSA9IE1JTUVUeXBlRnJvbVVUSShpbWFnZVVUSSk7CiAgICAgICAgIGlmICghbWltZVR5cGUu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1p
bWVUeXBlKTsKICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFk
ZChtaW1lVHlwZSk7CkBAIC0xNjAsNyArMTYxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcoKQogICAgIENGSW5kZXggY291bnQgPSBD
RkFycmF5R2V0Q291bnQoc3VwcG9ydGVkVHlwZXMuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgc3VwcG9ydGVkVHlw
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
c3VwcG9ydGVkVHlwZXMuZ2V0KCksIGkpKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgIFN0cmluZyBt
aW1lVHlwZSA9IE1JTUVUeXBlRnJvbVVUSShzdXBwb3J0ZWRUeXBlKTsKICAgICAgICAgaWYgKCFt
aW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nLT5hZGQobWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA1ODgyOWEwZTliNTM3Y2Iy
NDc0Yjc0OGY5MWQ2NzZiMTVlYmEyOTFjLi4yN2M0OTIyMDU2YjRiMGE4MmM5NjVlMmE5YzU4MDlk
YTMxNzk3Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dAogICAgIH0KIAogICAgIGlmIChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nQ29udGVudEluZm9ybWF0
aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBbbV9hdlJlcXVlc3QuZ2V0KCkgY29udGVudEluZm9y
bWF0aW9uUmVxdWVzdF0pIHsKLSAgICAgICAgU3RyaW5nIHV0aSA9IFVUSUZyb21NSU1FVHlwZShy
ZXNwb25zZS5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpLmdldCgpOworICAgICAg
ICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogCiAg
ICAgICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50VHlwZTp1dGldOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IDcxZWI4M2RmYWE2MDY4N2ZmNmVhZDhmZmI0NmIyMjdlNDhjYjQ0ZDkuLjhmMzhkYmMzMmY4Y2Y3
NmU3OWYxMzliZWY5MmQyNzNjYmE5MmM0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJVVElVdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1
ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgpAQCAtNDQ3LDEwICs0NDgsMTEgQEAgc3RhdGljIGlubGlu
ZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKICAgICByZXR1cm4ga1VUVHlwZUpQRUc7CiB9CiAgICAg
Ci1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21JbWFn
ZUJ1ZmZlck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CisgICAgLy8gRklYTUU6
IFdoeSBkb2Vzbid0IGlPUyB1c2UgdGhlIENvcmVTZXJ2aWNlcyB2ZXJzaW9uPwogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlm
aWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDApKTsKKyAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVD
RlN0cmluZygpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1
bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKQEAgLTUzMiw3ICs1MzQsNyBAQCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbAogICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKLSAgICBhdXRvIHV0aSA9IHV0aUZyb21N
SU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1F
VHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2U7CkBAIC01NzQsNyArNTc2LDcgQEAgc3RhdGljIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YShjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHkK
IHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGF1dG8gdXRpID0gdXRpRnJvbU1JTUVUeXBl
KG1pbWVUeXBlKTsKKyAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1p
bWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAogICAgIENHSW1hZ2VBbHBoYUluZm8gZGF0YUFs
cGhhSW5mbyA9IGtDR0ltYWdlQWxwaGFMYXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oCmluZGV4IDVmODg0OWI0MDQyMjZkOWJj
YzVjZGFhZThkOTNkMjdhMzY2YTRkODguLjgzNTYzMGMxODA3OWUyYzM2ZTQyOTFjYmIzNTY3NThl
M2VjYjZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CiAKLVN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpOwotCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdl
dEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9u
LCBzaXplX3QgY291bnQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBhNjVmYmI3NDhjZTRi
ODE2ODM4NTdkZDc3MzY1NGVhZjkxYTU3MDEzLi5kZjI4MzE0ZmZiMjExMDgwYWJiNTMzYWQ3NWUy
YWJjNjM4NjBmZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KQEAgLTM1LDExICszNSw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0
IFN0cmluZyYgdXRpKQotewotICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5
cGUpKS5nZXQoKTsKLX0KLQogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNl
VHlwZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKICAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0KaW5kZXggYWRlMzZjOGUwMjViODk3YTgwZWIzODA2YjcyN2I2MTU1OTVmOTkwZS4uYTA0NDJl
OTA3ZDgyNWNjMmZjOGEyMTZiZjhiNjM3NmY5YjljYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZh
dGVRVEtpdC5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiUVRLaXRTUEkuaCIKICNpbXBv
cnQgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0ICJVUkwuaCIKKyNpbXByb3QgIlVUSVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgpAQCAtMTI0
MywxMSArMTI0NCwxMSBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4gY3JlYXRlRmlsZVR5cGVzU2V0KE5TQXJyYXkgKmZpbAogICAgICAgICBhdXRvIHV0
aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHQsIE5VTEwpKTsKICAgICAgICAgaWYgKCF1dGkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBtaW1lID0gYWRvcHRDRihVVFR5cGVD
b3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkp
OwotICAgICAgICBpZiAoc2hvdWxkUmVqZWN0TUlNRVR5cGUobWltZS5nZXQoKSkpCisgICAgICAg
IGF1dG8gbWltZSA9IE1JTUVUeXBlRnJvbVVUSSh1dGkuZ2V0KCkpOworICAgICAgICBpZiAoc2hv
dWxkUmVqZWN0TUlNRVR5cGUobWltZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
aWYgKG1pbWUpCi0gICAgICAgICAgICBzZXQuYWRkKG1pbWUuZ2V0KCkpOworICAgICAgICAgICAg
c2V0LmFkZChtaW1lKTsKIAogICAgICAgICAvLyAtbW92aWVGaWxlVHlwZXM6IHJldHVybnMgYm90
aCBmaWxlIGV4dGVuc2lvbnMgYW5kIE9TVHlwZXMuIFRoZSBsYXRlciBhcmUgc3Vycm91bmRlZCBi
eSBzaW5nbGUKICAgICAgICAgLy8gcXVvdGVzLCBlZy4gJ01vb1YnLCBzbyBkb24ndCBib3RoZXIg
bG9va2luZyBhdCB0aG9zZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KaW5kZXggNTdhYzQ0N2NiYzNiYWIyNDU0MTRmNjUwYzM5YThlOWVhNThkYjI5OS4u
NWZjNGRjZjgxMzc1ZjI4MWZlZTYwYTNjNGEzY2Q2NTBlYjAwYjM0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVVJMLmgi
CisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmlu
Z0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vydmlj
ZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0xNDQsNyArMTQ1LDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogU3RyaW5n
IFBhc3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUoY29uc3QgTlNTdHJpbmcgKm1pbWVUeXBlKQog
ewotICAgIHJldHVybiBTdHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlm
aWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIChDRlN0cmluZ1JlZiltaW1lVHlwZSwgTlVM
TCkpLmdldCgpKTsKKyAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKIH0KIAog
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJ
bWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCmluZGV4IGM1ZWU1YmEzMTA3NGFmY2IzMzlmZDRlOTg4MWI2NzhmZDgxYmEx
NDguLjFlZDkyMjliMjlhNWExNDZhOGJhMTUyNTYwYjNmNDQyNGU0NjRlOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpA
QCAtMjkzLDEyICsyOTMsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0
UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGUKICAgICAgICAgW2l0
ZW1zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYg
IXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5jcmVh
dGVDRlN0cmluZygpOwotICAgICAgICBpZiAoIVVUVHlwZUlzRGVjbGFyZWQodXRpT3JNSU1FVHlw
ZS5nZXQoKSkpCi0gICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gYWRvcHRDRihVVFR5cGVDcmVh
dGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIHV0aU9yTUlN
RVR5cGUuZ2V0KCksIG5pbCkpOworICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKKyAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0
aU9yTUlNRVR5cGUpKQorICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlw
ZSh1dGlPck1JTUVUeXBlKTsKIAogICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICBbaXRlbXNUb1JlZ2lz
dGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1F
VHlwZS5nZXQoKV07CisgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEu
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW2l0ZW1z
VG9SZWdpc3RlciBzZXRFc3RpbWF0ZWREaXNwbGF5ZWRTaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFn
ZVNpemVdOwogICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVi
b2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMThkZmFiYzg3ZDQ1NGY3ZDU4YTAwNzFmYWI5
MzhlM2UyNWQ5MTJmYS4uNWZhNDJlMTUwOWM3M2NiYzBlMDRiMzQxMzMyOTRlOWUzMzE4YzRiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTQ3
LDYgKzQ3LDcgQEAKICNpbXBvcnQgIlJlbmRlckltYWdlLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAj
aW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29y
ZU5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKQEAgLTQ4Miw4ICs0ODMsOSBA
QCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiAgICAgaWYgKGxvd2VyY2FzZWRUeXBlID09ICJ0ZXh0L3J0ZiIgfHwgbG93ZXJj
YXNlZFR5cGUgPT0gInB1YmxpYy5ydGYiIHx8IGxvd2VyY2FzZWRUeXBlID09ICJjb20uYXBwbGUu
dHJhZGl0aW9uYWwtbWFjLXBsYWluLXRleHQiKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBpZiAoYXV0byB1dGlUeXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIGxvd2VyY2FzZWRUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgewotICAgICAgICBpZiAoYXV0byBwYlR5cGUgPSBhZG9w
dENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFn
Q2xhc3NOU1Bib2FyZFR5cGUpKSkKKyAgICBhdXRvIHV0aVR5cGUgPSBVVElGcm9tTUlNRVR5cGUo
bG93ZXJjYXNlZFR5cGUpOworICAgIGlmICghdXRpVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKGF1dG8gcGJUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUp
KSkKICAgICAgICAgICAgIHJldHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVz
cG9uc2VJT1MubW0KaW5kZXggZjZjYWEyOWYwZTcxMDJhMDE2NDBiMjM1ODE1ZGQ5ZWViN2U4NWZk
NC4uMGYwZmZkMGQ3N2Q2NmY4ZTJhNDFmYjBiYWVmNzg4MzE0YmI2M2ZjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxS
ZXNwb25zZUlPUy5tbQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAog
ICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRD
RihDRlVSTENvcHlQYXRoRXh0ZW5zaW9uKHVybCkpOwogICAgICAgICAgICAgICAgIGlmIChleHRl
bnNpb24pIHsKICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHF1aWNrTG9va01JTUVUeXBlID0gbWltZVR5cGVGcm9tVVRJVHJlZSh1dGku
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICBxdWlja0xvb2tNSU1FVHlwZSA9IE1JTUVUeXBl
RnJvbVVUSVRyZWUodXRpLmdldCgpKS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAppbmRleCBlMTVmNjliNzFiYTRhOGRhMDc0
ODUwYTYzYzI4ZTBiMzljMmM3NzMwLi43OGI4NzU2M2FmZjk0YjE2NzZmMjQxYjRjOTJhYzg0ZmU3
NDYxOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9V
VElVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9V
VElVdGlsaXRpZXMuaApAQCAtMjYsMTIgKzI2LDE0IEBACiAjaWZuZGVmIFVUSVV0aWxpdGllc19o
CiAjZGVmaW5lIFVUSVV0aWxpdGllc19oCiAKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLVJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpOwotUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBVVElGcm9tTUlNRVR5cGUoQ0ZTdHJpbmdSZWYgbWltZSk7Ci1ib29s
IGlzRGVjbGFyZWRVVEkoQ0ZTdHJpbmdSZWYgVVRJKTsKK1N0cmluZyBNSU1FVHlwZUZyb21VVEko
Y29uc3QgU3RyaW5nJik7CitTdHJpbmcgTUlNRVR5cGVGcm9tVVRJVHJlZShjb25zdCBTdHJpbmcm
KTsKK1N0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Citib29sIGlzRGVjbGFy
ZWRVVEkoY29uc3QgU3RyaW5nJik7CiB9CiAKICNlbmRpZiAvLyBVVElVdGlsaXRpZXNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVz
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1t
CmluZGV4IDNhNDJhY2Y2Y2UzMmM3OGEwZmM4ODViNTc4ODBmODQ3Y2IxYjVhNTkuLmQ0ZTgyODI0
NGNhZWZmOWY1YjlhMGI4MThlZjI1OTMxZDM1NzQ4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KQEAgLTI1LDYgKzI1LDgg
QEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKKyNpbXBv
cnQgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNv
cmVTZXJ2aWNlcy5oPgpAQCAtMzIsNTAgKzM0LDY2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3RyaW5nUmVm
IHV0aSkKK1N0cmluZyBNSU1FVHlwZUZyb21VVEkoY29uc3QgU3RyaW5nJiB1dGkpCiB7CisgICAg
cmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmdldCgpOworfQorCitTdHJp
bmcgTUlNRVR5cGVGcm9tVVRJVHJlZShjb25zdCBTdHJpbmcmIHV0aSkKK3sKKyAgICBhdXRvIHV0
aUNGID0gdXRpLmNyZWF0ZUNGU3RyaW5nKCk7CisKICAgICAvLyBDaGVjayBpZiB0aGlzIFVUSSBo
YXMgYSBNSU1FIHR5cGUuCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFk
b3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzTUlN
RVR5cGUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gYWRvcHRDRihV
VFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aUNGLmdldCgpLCBrVVRUYWdDbGFzc01J
TUVUeXBlKSk7CiAgICAgaWYgKG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gbWltZVR5cGUuZ2V0
KCk7CiAKICAgICAvLyBJZiBub3QsIHdhbGsgdGhlIGFuY2VzdG9yeSBvZiB0aGlzIFVUSSB2aWEg
aXRzICJDb25mb3Jtc1RvIiB0YWdzIGFuZCByZXR1cm4gdGhlIGZpcnN0IE1JTUUgdHlwZSB3ZSBm
aW5kLgotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRlY2wgPSBhZG9wdENGKFVUVHlw
ZUNvcHlEZWNsYXJhdGlvbih1dGkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBk
ZWNsID0gYWRvcHRDRihVVFR5cGVDb3B5RGVjbGFyYXRpb24odXRpQ0YuZ2V0KCkpKTsKICAgICBp
ZiAoIWRlY2wpCi0gICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICBDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWNsLmdldCgpLCBr
VVRUeXBlQ29uZm9ybXNUb0tleSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIENGVHlwZUlEIHR5cGVJRCA9IENGR2V0
VHlwZUlEKHZhbHVlKTsKIAogICAgIGlmICh0eXBlSUQgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkK
LSAgICAgICAgcmV0dXJuIG1pbWVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKXZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIE1JTUVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKXZhbHVlKTsK
IAogICAgIGlmICh0eXBlSUQgPT0gQ0ZBcnJheUdldFR5cGVJRCgpKSB7CiAgICAgICAgIENGQXJy
YXlSZWYgbmV3VHlwZXMgPSAoQ0ZBcnJheVJlZil2YWx1ZTsKICAgICAgICAgQ0ZJbmRleCBjb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChuZXdUeXBlcyk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOwotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob2Jq
ZWN0KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRleChuZXdUeXBl
cywgaSk7CisgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob2JqZWN0KSAhPSBDRlN0cmluZ0dl
dFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJp
bmdSZWYpb2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKKyAgICAgICAgICAg
IFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKW9iamVj
dCk7CisgICAgICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWltZVR5cGU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVElGcm9t
TUlNRVR5cGUoQ0ZTdHJpbmdSZWYgbWltZSkKK3N0cnVjdCBVVElGcm9tTUlNRVR5cGVDYWNoZVBv
bGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTdHJpbmcsIFN0cmluZz4geworcHVibGljOgorICAg
IHN0YXRpYyBTdHJpbmcgY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpCisgICAg
eworICAgICAgICByZXR1cm4gU3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRl
bnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgMCkpLmdldCgpKTsKKyAgICB9Cit9OworCitTdHJpbmcgVVRJRnJvbU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NNSU1FVHlwZSwgbWltZSwgMCkpOwotICAgIHJldHVybiB1dGk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFRpbnlMUlVDYWNoZTxTdHJpbmcsIFN0cmluZywgMTYsIFVUSUZyb21NSU1FVHlw
ZUNhY2hlUG9saWN5Pj4gY2FjaGU7CisgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChtaW1lVHlw
ZSk7CiB9CiAKLWJvb2wgaXNEZWNsYXJlZFVUSShDRlN0cmluZ1JlZiBVVEkpCitib29sIGlzRGVj
bGFyZWRVVEkoY29uc3QgU3RyaW5nJiBVVEkpCiB7Ci0gICAgcmV0dXJuIFVUVHlwZUlzRGVjbGFy
ZWQoVVRJKTsKKyAgICByZXR1cm4gVVRUeXBlSXNEZWNsYXJlZChVVEkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCBmMWNjYTAyOTFhY2MwOGQ1
NzI5YmUxNzc4Y2M1YTE2M2QyZTM0ZGY2Li4xOWRkMjk0MDhhYzY5MzNmZThjMTlhM2ZjY2ZiZDYz
YTk3ZWQ5ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC0zMDMsMTMgKzMwMywxMyBAQCB2b2lk
IGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBi
b29sIGlzTWFpblJlc291cmNlTAogICAgICAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBt
dXRhYmxlRXh0ZW5zaW9uID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpOwogICAgICAgICAgICAgICAgIENGU3RyaW5nTG93
ZXJjYXNlKG11dGFibGVFeHRlbnNpb24sIE5VTEwpOwogICAgICAgICAgICAgICAgIGV4dGVuc2lv
biA9IGFkb3B0Q0YobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0g
KENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAsIGV4dGVuc2lv
bi5nZXQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVmKUNGRGljdGlv
bmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5zaW9uLmdldCgpKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgR2F0ZWtlZXBlci1iYXNlZCBtYXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBl
LCB3ZSdsbCB0cnkgdG8gZmlndXJlIG91dCB3aGF0IGl0IHNob3VsZCBiZSBieQogICAgICAgICAg
ICAgICAgICAgICAvLyBsb29raW5nIHVwIHRoZSBmaWxlIGV4dGVuc2lvbiBpbiB0aGUgVVRJIG1h
cHMuCiAgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRv
cHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmls
ZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQoKSwgMCkpOwotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBtaW1lVHlwZUZyb21VVElUcmVlKHV0aS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IE1JTUVUeXBlRnJvbVVUSVRyZWUodXRpLmdldCgpKS5jcmVhdGVDRlN0
cmluZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGI4Yzk1Y2Y4MzE2
YTFkYjllNmQ3NWFiNjNhMWNkZmE0NTZkNjZjZWIuLmQzNGMxOTUzODA5NmJjMTk2YjcxNWVkNDA0
ZWVmZTIwNTk1YzI0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KQEAgLTE2MTYsMTQgKzE2MTYsMTMgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBp
Y29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LAogCiAg
ICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmF0dGFjaG1lbnRUeXBlKCk7CiAgICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgYXV0byBhdHRhY2htZW50VHlwZUNGID0gYXR0YWNobWVudFR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVEk7Ci0gICAgICAgIGlm
IChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpKQotICAgICAgICAgICAgVVRJ
ID0gYXR0YWNobWVudFR5cGVDRjsKKyAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAgaWYgKGlz
RGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAgVVRJID0gYXR0YWNobWVu
dFR5cGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFVUSSA9IFVUSUZyb21NSU1FVHlwZShh
dHRhY2htZW50VHlwZUNGLmdldCgpKTsKKyAgICAgICAgICAgIFVUSSA9IFVUSUZyb21NSU1FVHlw
ZShhdHRhY2htZW50VHlwZSk7CiAKLSAgICAgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9s
bGVyIHNldFVUSTpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihVVEkuZ2V0KCkpXTsKKyAgICAgICAg
W2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNldFVUSTpzdGF0aWNfY2FzdDxOU1N0cmlu
ZyAqPihVVEkpXTsKICAgICB9CiAKICAgICBOU0FycmF5ICppY29ucyA9IFtkb2N1bWVudEludGVy
YWN0aW9uQ29udHJvbGxlciBpY29uc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KaW5kZXggNWViY2U4MDNlOWQ5ZDcwZmE0MjkxYzNmMmIxMzdkOWNjZWI3YmIw
ZC4uYWU1MzRmM2UwYWFmMDVhY2I2OTY3Y2NlY2QyNWQyN2Y4MGVkMjZmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjQyMCwxNCArMjQyMCwxMyBA
QCBzdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFj
aG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3Jl
YXRlSWNvbkZvclVUSSgicHVibGljLmRpcmVjdG9yeSIpKQogICAgICAgICAgICAgICAgIHJldHVy
biBpY29uOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBhdHRhY2htZW50VHlw
ZUNGID0gYXR0YWNobWVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gVVRJOwotICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0
YWNobWVudFR5cGVDRi5nZXQoKSkpCi0gICAgICAgICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5
cGVDRjsKKyAgICAgICAgICAgIFN0cmluZyBVVEk7CisgICAgICAgICAgICBpZiAoaXNEZWNsYXJl
ZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5
cGU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVU
eXBlKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAgIFVUSSA9IFVUSUZy
b21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7CiAKLSAgICAgICAgICAgIGlmIChhdXRvIGljb24g
PSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSS5nZXQoKSkpCisgICAgICAgICAgICBpZiAoYXV0
byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBpY29uOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318227</attachid>
            <date>2017-08-15 22:00:57 -0700</date>
            <delta_ts>2017-08-15 22:07:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815220056.patch</filename>
            <type>text/plain</type>
            <size>24822</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uN2Q3YjhjMmFmZDdhM2NiMzYxMGY0NTk4MTljNDJh
NWM3YThjNDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSBwZXJmIHdpbi4KKworICAgICAgICBVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnIGlzIGZhaXJseSBleHBlbnNpdmUsIGFu
ZCBpcyBjYWxsZWQKKyAgICAgICAgdW5kZXIgZXZlcnkgdG9EYXRhVVJMLCB3aGljaCB0aGUgV3Vu
ZGVyZ3JvdW5kIHd1bmRlcm1hcCBkb2VzIGEgL2xvdC8uCisKKyAgICAgICAgS2VlcCBhIDE2LWl0
ZW0gTFJVIGNhY2hlIG9mIE1JTUVUeXBlLT5VVEkgbWFwcGluZ3MuCisKKyAgICAgICAgQWxzbywg
bWFrZSBvdGhlciBjYWxsZXJzIG9mIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JU
YWcgdXNlCisgICAgICAgIHRoZSBVVElVdGlsaXRpZXMgdmVyc2lvbiBzbyB0aGV5IGNhbiBzaGFy
ZSBpbiB0aGUgY2FjaGluZy4KKworICAgICAgICBBbHNvLCBhcyBhIGRyaXZlLWJ5LCBhZGQgYW5k
IG1ha2Ugb3RoZXIgY2FsbGVycyB1c2UgbWltZVR5cGVGcm9tVVRJIHRvbywKKyAgICAgICAgYW5k
IG1ha2UgdGhlIFVUSVV0aWxpdGllcyBvcGVyYXRlIG9uIFN0cmluZ3MgZm9yIGEgc2xpZ2h0bHkg
bW9yZSBXZWJDb3JlLXkgZmVlbC4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmlsZVR5cGVzU2V0KToKKyAgICAgICAgQWRvcHQgbmV3
bHktYWRkZWQgTUlNRVR5cGVGcm9tVVRJKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1
ZmZlck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0NGRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjZkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dXRp
RnJvbU1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgQWRvcHQgVVRJRnJvbU1JTUVUeXBlLCBh
bmQgcmVuYW1lIHRoZSBsb2NhbCBoZWxwZXIgdGhhdCBkb2VzIHNvbWV0aGluZworICAgICAgICBk
aWZmZXJlbnQgKGEgc21hbGwgc3RhdGljIG1hcCkgb24gaU9TIGFuZCBXaW5kb3dzIHRvIG5vdCBo
YXZlIGFuIG92ZXJsYXBwaW5nIG5hbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIHRoaXMgZnVuY3Rpb24gdGhhdCBpcyBqdXN0
IE1JTUVUeXBlRnJvbVVUSSgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OnV0aVR5cGVGcm9tQ29jb2FUeXBlKToKKyAgICAgICAgQWRvcHQg
VVRJRnJvbU1JTUVUeXBlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZU9iamVjdFJlcHJlc2VudGF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5
cGUpOgorICAgICAgICBBZG9wdCBpc0RlY2xhcmVkVVRJIGFuZCBVVElGcm9tTUlNRVR5cGUoKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlN
RVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vz
c2FyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAg
ICAgRGVhbCB3aXRoIHRoZSBmYWN0IHRoYXQgVVRJIHV0aWxpdGllcyBkZWFsIGluIFN0cmluZ3Mg
bm93LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVGcm9tVVRJKToKKyAgICAgICAgQWRkZWQuIFRoaXMgZG9lc24ndCBj
cmF3bCB1cCB0aGUgVVRJIHRyZWUgaWYgdGhlIGZpcnN0IGNvbnZlcnNpb24gZmFpbHMsCisgICAg
ICAgIHdoaWNoIGlzIHdoYXQgbW9zdCBvZiB0aGUgZXhpc3RpbmcgY29kZSBkb2VzLiBJdCdzIHBv
c3NpYmxlIHdlIHdhbnQgdG8KKyAgICAgICAgdXNlIE1JTUVUeXBlRnJvbVVUSVRyZWUncyBsb2dp
YyBldmVyeXdoZXJlLCBidXQgSSBkaWRuJ3Qgd2FudCB0byBjaGFuZ2UKKyAgICAgICAgdGhhdCBp
biB0aGlzIHBhdGNoLgorCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZyb21VVElUcmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzRGVjbGFyZWRVVEkpOgorICAgICAgICBUYWtlIGFuZCByZXR1
cm4gc3RyaW5ncy4KKworICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xp
Y3k6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlw
ZSk6CisgICAgICAgIEFkZCB0aGUgYWZvcmVtZW50aW9uZWQgY2FjaGUuCisKIDIwMTctMDgtMTUg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDYWNoZSBBUEld
IEVuc3VyZSBSZXNvdXJjZVJlc3BvbnNlIGlzIG5vdCBudWxsIHdoZW4gcmVkaXJlY3RlZC90YWlu
dGluZy90eXBlIGZpZWxkcyBhcmUgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KaW5kZXggNmVlNGY3MTEzNmNlZjA5MGZmMDJmOTliZmE2Y2ZmMTIyNGMyZGQ4OS4uNThm
ZTA0NWIzYWU1YjM2OTE2MDRlMTUzMmVlMjRmMzVlNTIxNWQ1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMzMyLDkgKzMzMiw5IEBAIGJvb2wgRWRpdG9yOjpX
ZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmdUeXBlID0gdHlwZS5j
cmVhdGVDRlN0cmluZygpOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gZmlsZW5hbWVFeHRlbnNp
b24gPSBhZG9wdE5TKChOU1N0cmluZyAqKVVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3Mo
c3RyaW5nVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOwogICAgIE5T
U3RyaW5nICpyZWxhdGl2ZVVSTFBhcnQgPSBbQCJpbWFnZSIgc3RyaW5nQnlBcHBlbmRpbmdTdHJp
bmc6ZmlsZW5hbWVFeHRlbnNpb24uZ2V0KCldOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWlt
ZVR5cGUgPSBhZG9wdE5TKChOU1N0cmluZyAqKVVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xh
c3Moc3RyaW5nVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIFN0cmluZyBt
aW1lVHlwZSA9IE1JTUVUeXBlRnJvbVVUSSh0eXBlKTsKIAotICAgIGFkZEZyYWdtZW50KGZyYW1l
LmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgVVJMOjpmYWtlVVJMV2l0aFJl
bGF0aXZlUGFydChyZWxhdGl2ZVVSTFBhcnQpLCBtaW1lVHlwZS5nZXQoKSwgZW1wdHlTdHJpbmco
KSwgZW1wdHlTdHJpbmcoKSkpKTsKKyAgICBhZGRGcmFnbWVudChmcmFtZS5lZGl0b3IoKS5jcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQocmVs
YXRpdmVVUkxQYXJ0KSwgbWltZVR5cGUsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKSk7
CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IGEyYTRkMDM4ZDVkOGU2YjRhYjVlMTQ5MjVjZjQ2Y2E1
YTg5MzNhNmUuLjNhY2YxZjE0M2ZjZWJmNmZhMWU5MWI4NWE0ZDE5ODdiZWIzNDNkNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaWYgVVNFKENHKQogI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKICNpbmNsdWRl
ICJVVElSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlVUSVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC02OCw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCiAjaWYgVVNFKENHKQogICAgIEhhc2hT
ZXQ8U3RyaW5nPiYgaW1hZ2VVVElzID0gYWxsb3dlZEltYWdlVVRJcygpOwogICAgIGZvciAoYXV0
byYgaW1hZ2VVVEkgOiBpbWFnZVVUSXMpIHsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoaW1hZ2VVVEkpOworICAgICAgICBTdHJpbmcgbWltZVR5
cGUgPSBNSU1FVHlwZUZyb21VVEkoaW1hZ2VVVEkpOwogICAgICAgICBpZiAoIW1pbWVUeXBlLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmFkZChtaW1l
VHlwZSk7CiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQo
bWltZVR5cGUpOwpAQCAtMTYwLDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZB
cnJheUdldENvdW50KHN1cHBvcnRlZFR5cGVzLmdldCgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIENGU3RyaW5nUmVmIHN1cHBvcnRlZFR5cGUg
PSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1
cHBvcnRlZFR5cGVzLmdldCgpLCBpKSk7Ci0gICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVU
eXBlRm9ySW1hZ2VTb3VyY2VUeXBlKHN1cHBvcnRlZFR5cGUpOworICAgICAgICBTdHJpbmcgbWlt
ZVR5cGUgPSBNSU1FVHlwZUZyb21VVEkoc3VwcG9ydGVkVHlwZSk7CiAgICAgICAgIGlmICghbWlt
ZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZy0+YWRkKG1pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggNTg4MjlhMGU5YjUzN2NiMjQ3
NGI3NDhmOTFkNjc2YjE1ZWJhMjkxYy4uMjdjNDkyMjA1NmI0YjBhODJjOTY1ZTJhOWM1ODA5ZGEz
MTc5N2Y4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QK
ICAgICB9CiAKICAgICBpZiAoQVZBc3NldFJlc291cmNlTG9hZGluZ0NvbnRlbnRJbmZvcm1hdGlv
blJlcXVlc3QqIGNvbnRlbnRJbmZvID0gW21fYXZSZXF1ZXN0LmdldCgpIGNvbnRlbnRJbmZvcm1h
dGlvblJlcXVlc3RdKSB7Ci0gICAgICAgIFN0cmluZyB1dGkgPSBVVElGcm9tTUlNRVR5cGUocmVz
cG9uc2UubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKS5nZXQoKTsKKyAgICAgICAg
U3RyaW5nIHV0aSA9IFVUSUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKIAogICAg
ICAgICBbY29udGVudEluZm8gc2V0Q29udGVudFR5cGU6dXRpXTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA3
MWViODNkZmFhNjA2ODdmZjZlYWQ4ZmZiNDZiMjI3ZTQ4Y2I0NGQ5Li44ZjM4ZGJjMzJmOGNmNzZl
NzlmMTM5YmVmOTJkMjczY2JhOTJjNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiVVRJVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8
bWF0aC5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbmNsdWRl
IDxJbWFnZUlPL0ltYWdlSU8uaD4KQEAgLTQ0NywxMCArNDQ4LDExIEBAIHN0YXRpYyBpbmxpbmUg
Q0ZTdHJpbmdSZWYganBlZ1VUSSgpCiAgICAgcmV0dXJuIGtVVFR5cGVKUEVHOwogfQogICAgIAot
c3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCitzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tSW1hZ2VC
dWZmZXJNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogeworICAgIC8vIEZJWE1FOiBX
aHkgZG9lc24ndCBpT1MgdXNlIHRoZSBDb3JlU2VydmljZXMgdmVyc2lvbj8KICNpZiBQTEFURk9S
TShNQUMpCi0gICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCAwKSk7CisgICAgcmV0dXJuIFVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkuY3JlYXRlQ0ZT
dHJpbmcoKTsKICNlbHNlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQgaXMgdW5j
bGVhciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgogCkBAIC01MzIsNyArNTM0LDcgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXI6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHN0ZDo6b3B0aW9uYWwKICAgICBpZiAoY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwogCi0gICAgYXV0byB1dGkgPSB1dGlGcm9tTUlN
RVR5cGUobWltZVR5cGUpOworICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5
cGUobWltZVR5cGUpOwogICAgIEFTU0VSVCh1dGkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGltYWdlOwpAQCAtNTc0LDcgKzU3Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEoY29uc3QgSW1hZ2VEYXRhJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5CiB7
CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZv
ckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKLSAgICBhdXRvIHV0aSA9IHV0aUZyb21NSU1FVHlwZSht
aW1lVHlwZSk7CisgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1l
VHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKICAgICBDR0ltYWdlQWxwaGFJbmZvIGRhdGFBbHBo
YUluZm8gPSBrQ0dJbWFnZUFscGhhTGFzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuaAppbmRleCA1Zjg4NDliNDA0MjI2ZDliY2M1
Y2RhYWU4ZDkzZDI3YTM2NmE0ZDg4Li44MzU2MzBjMTgwNzllMmMzNmU0MjkxY2JiMzU2NzU4ZTNl
Y2I2YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZVNvdXJjZUNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDRy5oCkBAIC0zMyw4ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpOwogCi1TdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKTsKLQogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRC
eXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwg
c2l6ZV90IGNvdW50KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KaW5kZXggYTY1ZmJiNzQ4Y2U0Yjgx
NjgzODU3ZGQ3NzM2NTRlYWY5MWE1NzAxMy4uZGYyODMxNGZmYjIxMTA4MGFiYjUzM2FkNzVlMmFi
YzYzODYwZmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBAIC0zNSwxMSArMzUsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBT
dHJpbmcmIHV0aSkKLXsKLSAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFn
V2l0aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBl
KSkuZ2V0KCk7Ci19Ci0KIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5
cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7CiAgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVBy
ZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xh
c3NGaWxlbmFtZUV4dGVuc2lvbikpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
CmluZGV4IGFkZTM2YzhlMDI1Yjg5N2E4MGViMzgwNmI3MjdiNjE1NTk1Zjk5MGUuLjA2MDMyMjkw
ZmFjMjMzZWI4NDVmZTRlN2IwMTBjODk2M2Q5N2Q1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIlFUS2l0U1BJLmgiCiAjaW1wb3J0
ICJTZWN1cml0eU9yaWdpbi5oIgogI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJVVElVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KQEAgLTEyNDMs
MTEgKzEyNDQsMTEgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+IGNyZWF0ZUZpbGVUeXBlc1NldChOU0FycmF5ICpmaWwKICAgICAgICAgYXV0byB1dGkg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0LCBOVUxMKSk7CiAgICAgICAgIGlmICghdXRpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8gbWltZSA9IGFkb3B0Q0YoVVRUeXBlQ29w
eVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsK
LSAgICAgICAgaWYgKHNob3VsZFJlamVjdE1JTUVUeXBlKG1pbWUuZ2V0KCkpKQorICAgICAgICBh
dXRvIG1pbWUgPSBNSU1FVHlwZUZyb21VVEkodXRpLmdldCgpKTsKKyAgICAgICAgaWYgKHNob3Vs
ZFJlamVjdE1JTUVUeXBlKG1pbWUpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlm
IChtaW1lKQotICAgICAgICAgICAgc2V0LmFkZChtaW1lLmdldCgpKTsKKyAgICAgICAgICAgIHNl
dC5hZGQobWltZSk7CiAKICAgICAgICAgLy8gLW1vdmllRmlsZVR5cGVzOiByZXR1cm5zIGJvdGgg
ZmlsZSBleHRlbnNpb25zIGFuZCBPU1R5cGVzLiBUaGUgbGF0ZXIgYXJlIHN1cnJvdW5kZWQgYnkg
c2luZ2xlCiAgICAgICAgIC8vIHF1b3RlcywgZWcuICdNb29WJywgc28gZG9uJ3QgYm90aGVyIGxv
b2tpbmcgYXQgdGhvc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IDU3YWM0NDdjYmMzYmFiMjQ1NDE0ZjY1MGMzOWE4ZTllYTU4ZGIyOTkuLjVm
YzRkY2Y4MTM3NWYyODFmZWU2MGEzYzRhM2NkNjUwZWIwMGIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1w
b3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlVSTC5oIgor
I2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdF
eHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2Vz
L01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTQ0LDcgKzE0NSw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKGNvbnN0IE5TU3RyaW5nICptaW1lVHlwZSkKIHsK
LSAgICByZXR1cm4gU3RyaW5nKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCAoQ0ZTdHJpbmdSZWYpbWltZVR5cGUsIE5VTEwp
KS5nZXQoKSk7CisgICAgcmV0dXJuIFVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1h
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQppbmRleCBjNWVlNWJhMzEwNzRhZmNiMzM5ZmQ0ZTk4ODFiNjc4ZmQ4MWJhMTQ4
Li4xZWQ5MjI5YjI5YTVhMTQ2YThiYTE1MjU2MGIzZjQ0MjRlNDY0ZTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAg
LTI5MywxMiArMjkzLDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJl
cHJlc2VudGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlCiAgICAgICAgIFtpdGVt
c1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0
byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKTsKLSAgICAgICAgaWYgKCFVVFR5cGVJc0RlY2xhcmVkKHV0aU9yTUlNRVR5cGUu
Z2V0KCkpKQotICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCB1dGlPck1JTUVU
eXBlLmdldCgpLCBuaWwpKTsKKyAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CisgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlP
ck1JTUVUeXBlKSkKKyAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUo
dXRpT3JNSU1FVHlwZSk7CiAKICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAgW2l0ZW1zVG9SZWdpc3Rl
ciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5
cGUuZ2V0KCldOworICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtpdGVtc1Rv
UmVnaXN0ZXIgc2V0RXN0aW1hdGVkRGlzcGxheWVkU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VT
aXplXTsKICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9h
cmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDE4ZGZhYmM4N2Q0NTRmN2Q1OGEwMDcxZmFiOTM4
ZTNlMjVkOTEyZmEuLjVmYTQyZTE1MDljNzNjYmMwZTA0YjM0MTMzMjk0ZTllMzMxOGM0YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC00Nyw2
ICs0Nyw3IEBACiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2lt
cG9ydCAiVVJMLmgiCisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYkNvcmVO
U1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCkBAIC00ODIsOCArNDgzLDkgQEAg
c3RhdGljIFN0cmluZyBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQogICAgIGlmIChsb3dlcmNhc2VkVHlwZSA9PSAidGV4dC9ydGYiIHx8IGxvd2VyY2Fz
ZWRUeXBlID09ICJwdWJsaWMucnRmIiB8fCBsb3dlcmNhc2VkVHlwZSA9PSAiY29tLmFwcGxlLnRy
YWRpdGlvbmFsLW1hYy1wbGFpbi10ZXh0IikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgaWYgKGF1dG8gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRp
ZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBsb3dlcmNhc2VkVHlwZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBOVUxMKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGJUeXBlID0gYWRvcHRD
RihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlKSkpCisgICAgYXV0byB1dGlUeXBlID0gVVRJRnJvbU1JTUVUeXBlKGxv
d2VyY2FzZWRUeXBlKTsKKyAgICBpZiAoIXV0aVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlm
IChhdXRvIHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1
dGlUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSkp
CiAgICAgICAgICAgICByZXR1cm4gcGJUeXBlLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tCmluZGV4IGY2Y2FhMjlmMGU3MTAyYTAxNjQwYjIzNTgxNWRkOWVlYjdlODVmZDQu
LjBmMGZmZDBkNzdkNjZmOGUyYTQxZmIwYmFlZjc4ODMxNGJiNjNmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVz
cG9uc2VJT1MubW0KQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNz
YXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUwKICAg
ICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0Yo
Q0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5z
aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0g
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
RmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQoKSwgbnVsbHB0cikpOwotICAgICAgICAg
ICAgICAgICAgICBxdWlja0xvb2tNSU1FVHlwZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBNSU1FVHlwZUZy
b21VVElUcmVlKHV0aS5nZXQoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKaW5kZXggZTE1ZjY5YjcxYmE0YThkYTA3NDg1
MGE2M2MyOGUwYjM5YzJjNzczMC4uNzhiODc1NjNhZmY5NGIxNjc2ZjI0MWI0YzkyYWM4NGZlNzQ2
MTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLmgKQEAgLTI2LDEyICsyNiwxNCBAQAogI2lmbmRlZiBVVElVdGlsaXRpZXNfaAog
I2RlZmluZSBVVElVdGlsaXRpZXNfaAogCisjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1SZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUoQ0ZTdHJpbmdSZWYgdXRpKTsKLVJldGFpblB0
cjxDRlN0cmluZ1JlZj4gVVRJRnJvbU1JTUVUeXBlKENGU3RyaW5nUmVmIG1pbWUpOwotYm9vbCBp
c0RlY2xhcmVkVVRJKENGU3RyaW5nUmVmIFVUSSk7CitTdHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNv
bnN0IFN0cmluZyYpOworU3RyaW5nIE1JTUVUeXBlRnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJik7
CitTdHJpbmcgVVRJRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOworYm9vbCBpc0RlY2xhcmVk
VVRJKGNvbnN0IFN0cmluZyYpOwogfQogCiAjZW5kaWYgLy8gVVRJVXRpbGl0aWVzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpp
bmRleCAzYTQyYWNmNmNlMzJjNzhhMGZjODg1YjU3ODgwZjg0N2NiMWI1YTU5Li5kNGU4MjgyNDRj
YWVmZjlmNWI5YTBiODE4ZWYyNTkzMWQzNTc0ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCkBAIC0yNSw2ICsyNSw4IEBA
CiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCisjaW1wb3J0
IDx3dGYvVGlueUxSVUNhY2hlLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3Jl
U2VydmljZXMuaD4KQEAgLTMyLDUwICszNCw2NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1
dGkpCitTdHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNvbnN0IFN0cmluZyYgdXRpKQogeworICAgIHJl
dHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKS5nZXQoKTsKK30KKworU3RyaW5n
IE1JTUVUeXBlRnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJiB1dGkpCit7CisgICAgYXV0byB1dGlD
RiA9IHV0aS5jcmVhdGVDRlN0cmluZygpOworCiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBVVEkgaGFz
IGEgTUlNRSB0eXBlLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9w
dENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc01JTUVU
eXBlKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlDRi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1F
VHlwZSkpOwogICAgIGlmIChtaW1lVHlwZSkKICAgICAgICAgcmV0dXJuIG1pbWVUeXBlLmdldCgp
OwogCiAgICAgLy8gSWYgbm90LCB3YWxrIHRoZSBhbmNlc3Rvcnkgb2YgdGhpcyBVVEkgdmlhIGl0
cyAiQ29uZm9ybXNUbyIgdGFncyBhbmQgcmV0dXJuIHRoZSBmaXJzdCBNSU1FIHR5cGUgd2UgZmlu
ZC4KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZWNsID0gYWRvcHRDRihVVFR5cGVD
b3B5RGVjbGFyYXRpb24odXRpKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVj
bCA9IGFkb3B0Q0YoVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aUNGLmdldCgpKSk7CiAgICAgaWYg
KCFkZWNsKQotICAgICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgQ0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVjbC5nZXQoKSwga1VU
VHlwZUNvbmZvcm1zVG9LZXkpOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBDRlR5cGVJRCB0eXBlSUQgPSBDRkdldFR5
cGVJRCh2YWx1ZSk7CiAKICAgICBpZiAodHlwZUlEID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0g
ICAgICAgIHJldHVybiBtaW1lVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7Cisg
ICAgICAgIHJldHVybiBNSU1FVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7CiAK
ICAgICBpZiAodHlwZUlEID09IENGQXJyYXlHZXRUeXBlSUQoKSkgewogICAgICAgICBDRkFycmF5
UmVmIG5ld1R5cGVzID0gKENGQXJyYXlSZWYpdmFsdWU7CiAgICAgICAgIENGSW5kZXggY291bnQg
PSBDRkFycmF5R2V0Q291bnQobmV3VHlwZXMpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0
VmFsdWVBdEluZGV4KG5ld1R5cGVzLCBpKTsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKG9iamVj
dCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMs
IGkpOworICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKG9iamVjdCkgIT0gQ0ZTdHJpbmdHZXRU
eXBlSUQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5n
UmVmKW9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gbWltZVR5cGU7CisgICAgICAgICAgICBT
dHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZilvYmplY3Qp
OworICAgICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1pbWVUeXBlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIG5pbDsKKyAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJldGFpblB0cjxDRlN0cmluZ1JlZj4gVVRJRnJvbU1J
TUVUeXBlKENGU3RyaW5nUmVmIG1pbWUpCitzdHJ1Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xp
Y3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U3RyaW5nLCBTdHJpbmc+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgU3RyaW5nIGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDApKS5nZXQoKSk7CisgICAgfQorfTsKKworU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0g
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
TUlNRVR5cGUsIG1pbWUsIDApKTsKLSAgICByZXR1cm4gdXRpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5cGVD
YWNoZVBvbGljeT4+IGNhY2hlOworICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQobWltZVR5cGUp
OwogfQogCi1ib29sIGlzRGVjbGFyZWRVVEkoQ0ZTdHJpbmdSZWYgVVRJKQorYm9vbCBpc0RlY2xh
cmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQogewotICAgIHJldHVybiBVVFR5cGVJc0RlY2xhcmVk
KFVUSSk7CisgICAgcmV0dXJuIFVUVHlwZUlzRGVjbGFyZWQoVVRJLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXggZjFjY2EwMjkxYWNjMDhkNTcy
OWJlMTc3OGNjNWExNjNkMmUzNGRmNi4uMTlkZDI5NDA4YWM2OTMzZmU4YzE5YTNmY2NmYmQ2M2E5
N2VkOTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtMzAzLDEzICszMDMsMTMgQEAgdm9pZCBh
ZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9v
bCBpc01haW5SZXNvdXJjZUwKICAgICAgICAgICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0
YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKICAgICAgICAgICAgICAgICBDRlN0cmluZ0xvd2Vy
Y2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsKICAgICAgICAgICAgICAgICBleHRlbnNpb24g
PSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IChD
RlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24u
Z2V0KCkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShleHRlbnNpb25NYXAsIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIEdhdGVrZWVwZXItYmFzZWQgbWFwIGRvZXNuJ3QgaGF2ZSBhIE1JTUUgdHlwZSwg
d2UnbGwgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCBzaG91bGQgYmUgYnkKICAgICAgICAgICAg
ICAgICAgICAgLy8gbG9va2luZyB1cCB0aGUgZmlsZSBleHRlbnNpb24gaW4gdGhlIFVUSSBtYXBz
LgogICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0
Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVu
YW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIDApKTsKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gbWltZVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5nZXQoKSkuY3JlYXRlQ0ZTdHJp
bmcoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCBiOGM5NWNmODMxNmEx
ZGI5ZTZkNzVhYjYzYTFjZGZhNDU2ZDY2Y2ViLi5kMzRjMTk1MzgwOTZiYzE5NmI3MTVlZDQwNGVl
ZmUyMDU5NWMyNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCkBAIC0xNjE2LDE0ICsxNjE2LDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNv
bkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwKIAogICAg
IFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5h
dHRhY2htZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gYXR0YWNobWVudFR5cGVDRiA9IGF0dGFjaG1lbnRUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gVVRJOwotICAgICAgICBpZiAo
aXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZUNGLmdldCgpKSkKLSAgICAgICAgICAgIFVUSSA9
IGF0dGFjaG1lbnRUeXBlQ0Y7CisgICAgICAgIFN0cmluZyBVVEk7CisgICAgICAgIGlmIChpc0Rl
Y2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAgICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRU
eXBlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0
YWNobWVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUo
YXR0YWNobWVudFR5cGUpOwogCi0gICAgICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxl
ciBzZXRVVEk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oVVRJLmdldCgpKV07CisgICAgICAgIFtk
b2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBzZXRVVEk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcg
Kj4oVVRJKV07CiAgICAgfQogCiAgICAgTlNBcnJheSAqaWNvbnMgPSBbZG9jdW1lbnRJbnRlcmFj
dGlvbkNvbnRyb2xsZXIgaWNvbnNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IDVlYmNlODAzZTlkOWQ3MGZhNDI5MWMzZjJiMTM3ZDljY2ViN2JiMGQu
LmFlNTM0ZjNlMGFhZjA1YWNiNjk2N2NjZWNkMjVkMjdmODBlZDI2ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI0MjAsMTQgKzI0MjAsMTMgQEAg
c3RhdGljIFJlZlB0cjxJY29uPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2ht
ZW50JiBhdHRhY2htZW50KQogICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0
ZUljb25Gb3JVVEkoInB1YmxpYy5kaXJlY3RvcnkiKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
aWNvbjsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudFR5cGVD
RiA9IGF0dGFjaG1lbnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IFVUSTsKLSAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFj
aG1lbnRUeXBlQ0YuZ2V0KCkpKQotICAgICAgICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBl
Q0Y7CisgICAgICAgICAgICBTdHJpbmcgVVRJOworICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRV
VEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBl
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFVUSSA9IFVUSUZyb21NSU1FVHlw
ZShhdHRhY2htZW50VHlwZUNGLmdldCgpKTsKKyAgICAgICAgICAgICAgICBVVEkgPSBVVElGcm9t
TUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOwogCi0gICAgICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkuZ2V0KCkpKQorICAgICAgICAgICAgaWYgKGF1dG8g
aWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gaWNvbjsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318230</attachid>
            <date>2017-08-15 22:07:17 -0700</date>
            <delta_ts>2017-08-15 22:20:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815220716.patch</filename>
            <type>text/plain</type>
            <size>25069</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uN2Q3YjhjMmFmZDdhM2NiMzYxMGY0NTk4MTljNDJh
NWM3YThjNDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSBwZXJmIHdpbi4KKworICAgICAgICBVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnIGlzIGZhaXJseSBleHBlbnNpdmUsIGFu
ZCBpcyBjYWxsZWQKKyAgICAgICAgdW5kZXIgZXZlcnkgdG9EYXRhVVJMLCB3aGljaCB0aGUgV3Vu
ZGVyZ3JvdW5kIHd1bmRlcm1hcCBkb2VzIGEgL2xvdC8uCisKKyAgICAgICAgS2VlcCBhIDE2LWl0
ZW0gTFJVIGNhY2hlIG9mIE1JTUVUeXBlLT5VVEkgbWFwcGluZ3MuCisKKyAgICAgICAgQWxzbywg
bWFrZSBvdGhlciBjYWxsZXJzIG9mIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JU
YWcgdXNlCisgICAgICAgIHRoZSBVVElVdGlsaXRpZXMgdmVyc2lvbiBzbyB0aGV5IGNhbiBzaGFy
ZSBpbiB0aGUgY2FjaGluZy4KKworICAgICAgICBBbHNvLCBhcyBhIGRyaXZlLWJ5LCBhZGQgYW5k
IG1ha2Ugb3RoZXIgY2FsbGVycyB1c2UgbWltZVR5cGVGcm9tVVRJIHRvbywKKyAgICAgICAgYW5k
IG1ha2UgdGhlIFVUSVV0aWxpdGllcyBvcGVyYXRlIG9uIFN0cmluZ3MgZm9yIGEgc2xpZ2h0bHkg
bW9yZSBXZWJDb3JlLXkgZmVlbC4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmlsZVR5cGVzU2V0KToKKyAgICAgICAgQWRvcHQgbmV3
bHktYWRkZWQgTUlNRVR5cGVGcm9tVVRJKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1
ZmZlck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0NGRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjZkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dXRp
RnJvbU1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgQWRvcHQgVVRJRnJvbU1JTUVUeXBlLCBh
bmQgcmVuYW1lIHRoZSBsb2NhbCBoZWxwZXIgdGhhdCBkb2VzIHNvbWV0aGluZworICAgICAgICBk
aWZmZXJlbnQgKGEgc21hbGwgc3RhdGljIG1hcCkgb24gaU9TIGFuZCBXaW5kb3dzIHRvIG5vdCBo
YXZlIGFuIG92ZXJsYXBwaW5nIG5hbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIHRoaXMgZnVuY3Rpb24gdGhhdCBpcyBqdXN0
IE1JTUVUeXBlRnJvbVVUSSgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OnV0aVR5cGVGcm9tQ29jb2FUeXBlKToKKyAgICAgICAgQWRvcHQg
VVRJRnJvbU1JTUVUeXBlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZU9iamVjdFJlcHJlc2VudGF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5
cGUpOgorICAgICAgICBBZG9wdCBpc0RlY2xhcmVkVVRJIGFuZCBVVElGcm9tTUlNRVR5cGUoKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlN
RVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vz
c2FyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAg
ICAgRGVhbCB3aXRoIHRoZSBmYWN0IHRoYXQgVVRJIHV0aWxpdGllcyBkZWFsIGluIFN0cmluZ3Mg
bm93LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVGcm9tVVRJKToKKyAgICAgICAgQWRkZWQuIFRoaXMgZG9lc24ndCBj
cmF3bCB1cCB0aGUgVVRJIHRyZWUgaWYgdGhlIGZpcnN0IGNvbnZlcnNpb24gZmFpbHMsCisgICAg
ICAgIHdoaWNoIGlzIHdoYXQgbW9zdCBvZiB0aGUgZXhpc3RpbmcgY29kZSBkb2VzLiBJdCdzIHBv
c3NpYmxlIHdlIHdhbnQgdG8KKyAgICAgICAgdXNlIE1JTUVUeXBlRnJvbVVUSVRyZWUncyBsb2dp
YyBldmVyeXdoZXJlLCBidXQgSSBkaWRuJ3Qgd2FudCB0byBjaGFuZ2UKKyAgICAgICAgdGhhdCBp
biB0aGlzIHBhdGNoLgorCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZyb21VVElUcmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzRGVjbGFyZWRVVEkpOgorICAgICAgICBUYWtlIGFuZCByZXR1
cm4gc3RyaW5ncy4KKworICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xp
Y3k6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlw
ZSk6CisgICAgICAgIEFkZCB0aGUgYWZvcmVtZW50aW9uZWQgY2FjaGUuCisKIDIwMTctMDgtMTUg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDYWNoZSBBUEld
IEVuc3VyZSBSZXNvdXJjZVJlc3BvbnNlIGlzIG5vdCBudWxsIHdoZW4gcmVkaXJlY3RlZC90YWlu
dGluZy90eXBlIGZpZWxkcyBhcmUgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KaW5kZXggNmVlNGY3MTEzNmNlZjA5MGZmMDJmOTliZmE2Y2ZmMTIyNGMyZGQ4OS4uZGM2
ZTcxNTU5MDA2MDFmYmE5NmY0OWMxZTAwYmRjMDRmOGYwMzkzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiU3R5bGVQ
cm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJUeXBpbmdDb21tYW5kLmgi
CisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCiAj
aW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3Jl
U2VydmljZXMuaD4KQEAgLTMzMiw5ICszMzMsOSBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbgog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nVHlwZSA9IHR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGZpbGVuYW1lRXh0ZW5zaW9uID0gYWRvcHRO
UygoTlNTdHJpbmcgKilVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHN0cmluZ1R5cGUu
Z2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKICAgICBOU1N0cmluZyAqcmVs
YXRpdmVVUkxQYXJ0ID0gW0AiaW1hZ2UiIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1l
RXh0ZW5zaW9uLmdldCgpXTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlID0gYWRv
cHROUygoTlNTdHJpbmcgKilVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHN0cmluZ1R5
cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBN
SU1FVHlwZUZyb21VVEkodHlwZSk7CiAKLSAgICBhZGRGcmFnbWVudChmcmFtZS5lZGl0b3IoKS5j
cmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQo
cmVsYXRpdmVVUkxQYXJ0KSwgbWltZVR5cGUuZ2V0KCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3Ry
aW5nKCkpKSk7CisgICAgYWRkRnJhZ21lbnQoZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRG
b3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFy
dCksIG1pbWVUeXBlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSkpOwogICAgIHJldHVy
biBmcmFnbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAppbmRleCBhMmE0ZDAzOGQ1ZDhlNmI0YWI1ZTE0OTI1Y2Y0NmNhNWE4OTMzYTZlLi4z
YWNmMWYxNDNmY2ViZjZmYTFlOTFiODVhNGQxOTg3YmViMzQzZDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lm
IFVTRShDRykKICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCiAjaW5jbHVkZSAiVVRJUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJVVElVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjZW5kaWYKIApAQCAtNjgsNyArNjksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogI2lmIFVTRShDRykKICAgICBIYXNoU2V0PFN0cmluZz4m
IGltYWdlVVRJcyA9IGFsbG93ZWRJbWFnZVVUSXMoKTsKICAgICBmb3IgKGF1dG8mIGltYWdlVVRJ
IDogaW1hZ2VVVElzKSB7Ci0gICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1h
Z2VTb3VyY2VUeXBlKGltYWdlVVRJKTsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5
cGVGcm9tVVRJKGltYWdlVVRJKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQobWltZVR5cGUpOwogICAg
ICAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsK
QEAgLTE2MCw3ICsxNjEsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXNGb3JFbmNvZGluZygpCiAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3Vu
dChzdXBwb3J0ZWRUeXBlcy5nZXQoKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewogICAgICAgICBDRlN0cmluZ1JlZiBzdXBwb3J0ZWRUeXBlID0gcmVpbnRlcnBy
ZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdXBwb3J0ZWRUeXBl
cy5nZXQoKSwgaSkpOwotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZShzdXBwb3J0ZWRUeXBlKTsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlN
RVR5cGVGcm9tVVRJKHN1cHBvcnRlZFR5cGUpOwogICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFk
ZChtaW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDU4ODI5YTBlOWI1MzdjYjI0NzRiNzQ4ZjkxZDY3
NmIxNWViYTI5MWMuLjI3YzQ5MjIwNTZiNGIwYTgyYzk2NWUyYTljNTgwOWRhMzE3OTdmODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0CiAgICAgfQogCiAg
ICAgaWYgKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KiBj
b250ZW50SW5mbyA9IFttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0
XSkgewotICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVU
eXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkuZ2V0KCk7CisgICAgICAgIFN0cmluZyB1dGkg
PSBVVElGcm9tTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSk7CiAKICAgICAgICAgW2NvbnRl
bnRJbmZvIHNldENvbnRlbnRUeXBlOnV0aV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggNzFlYjgzZGZhYTYw
Njg3ZmY2ZWFkOGZmYjQ2YjIyN2U0OGNiNDRkOS4uOGYzOGRiYzMyZjhjZjc2ZTc5ZjEzOWJlZjky
ZDI3M2NiYTkyYzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgorI2luY2x1ZGUgIlVUSVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8SW1hZ2VJTy9J
bWFnZUlPLmg+CkBAIC00NDcsMTAgKzQ0OCwxMSBAQCBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVm
IGpwZWdVVEkoKQogICAgIHJldHVybiBrVVRUeXBlSlBFRzsKIH0KICAgICAKLXN0YXRpYyBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQorc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKKyAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3Qg
aU9TIHVzZSB0aGUgQ29yZVNlcnZpY2VzIHZlcnNpb24/CiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IHJldHVybiBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VU
VGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwor
ICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpLmNyZWF0ZUNGU3RyaW5nKCk7CiAj
ZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZT
VFIgaXMgdGhyZWFkc2FmZS4KIApAQCAtNTMyLDcgKzUzNCw3IEBAIFJldGFpblB0cjxDRkRhdGFS
ZWY+IEltYWdlQnVmZmVyOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9w
dGlvbmFsCiAgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAg
ICBmbHVzaENvbnRleHQoKTsKIAotICAgIGF1dG8gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVU
eXBlKTsKKyAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBl
KTsKICAgICBBU1NFUlQodXRpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsK
QEAgLTU3NCw3ICs1NzYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhKGNv
bnN0IEltYWdlRGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeQogewogICAgIEFTU0VS
VChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyht
aW1lVHlwZSkpOwogCi0gICAgYXV0byB1dGkgPSB1dGlGcm9tTUlNRVR5cGUobWltZVR5cGUpOwor
ICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUpOwogICAg
IEFTU0VSVCh1dGkpOwogCiAgICAgQ0dJbWFnZUFscGhhSW5mbyBkYXRhQWxwaGFJbmZvID0ga0NH
SW1hZ2VBbHBoYUxhc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmgKaW5kZXggNWY4ODQ5YjQwNDIyNmQ5YmNjNWNkYWFlOGQ5M2Qy
N2EzNjZhNGQ4OC4uODM1NjMwYzE4MDc5ZTJjMzZlNDI5MWNiYjM1Njc1OGUzZWNiNmEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
Ry5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuaApAQCAtMzMsOCArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBwcmVm
ZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAot
U3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0K
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0
aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3Vu
dCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0dNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCmluZGV4IGE2NWZiYjc0OGNlNGI4MTY4Mzg1N2RkNzcz
NjU0ZWFmOTFhNTcwMTMuLmRmMjgzMTRmZmIyMTEwODBhYmI1MzNhZDc1ZTJhYmM2Mzg2MGZmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0dNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDR01hYy5tbQpAQCAtMzUsMTEgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1
dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmdldCgpOwot
fQotCiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0
cmluZyYgdXRpKQogewogICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdX
aXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVF
eHRlbnNpb24pKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCBhZGUz
NmM4ZTAyNWI4OTdhODBlYjM4MDZiNzI3YjYxNTU5NWY5OTBlLi5iMzJjNTNlN2VlYmVmMDI2ZmIz
ZTU3NzFjY2E4NzBiMjgwYjJhM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBA
IC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJRVEtpdFNQSS5oIgogI2ltcG9ydCAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CkBAIC0xMjQzLDExICsxMjQ0LDEx
IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBjcmVh
dGVGaWxlVHlwZXNTZXQoTlNBcnJheSAqZmlsCiAgICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihV
VFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVF
eHRlbnNpb24sIGV4dCwgTlVMTCkpOwogICAgICAgICBpZiAoIXV0aSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBhdXRvIG1pbWUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgICAgIGlm
IChzaG91bGRSZWplY3RNSU1FVHlwZShtaW1lLmdldCgpKSkKKyAgICAgICAgYXV0byBtaW1lID0g
TUlNRVR5cGVGcm9tVVRJKHV0aS5nZXQoKSk7CisgICAgICAgIGlmIChzaG91bGRSZWplY3RNSU1F
VHlwZShtaW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobWltZSkKLSAg
ICAgICAgICAgIHNldC5hZGQobWltZS5nZXQoKSk7CisgICAgICAgIGlmICghbWltZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICBzZXQuYWRkKG1pbWUpOwogCiAgICAgICAgIC8vIC1tb3ZpZUZpbGVU
eXBlczogcmV0dXJucyBib3RoIGZpbGUgZXh0ZW5zaW9ucyBhbmQgT1NUeXBlcy4gVGhlIGxhdGVy
IGFyZSBzdXJyb3VuZGVkIGJ5IHNpbmdsZQogICAgICAgICAvLyBxdW90ZXMsIGVnLiAnTW9vVics
IHNvIGRvbid0IGJvdGhlciBsb29raW5nIGF0IHRob3NlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA1N2FjNDQ3Y2JjM2JhYjI0NTQxNGY2NTBj
MzlhOGU5ZWE1OGRiMjk5Li41ZmM0ZGNmODEzNzVmMjgxZmVlNjBhM2M0YTNjZDY1MGViMDBiMzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
NDgsNiArNDgsNyBAQAogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJUZXh0Lmgi
CiAjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2Vi
TlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQg
PE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KQEAgLTE0NCw3ICsxNDUs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50KQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZShjb25zdCBOU1N0
cmluZyAqbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgKENGU3RyaW5n
UmVmKW1pbWVUeXBlLCBOVUxMKSkuZ2V0KCkpOworICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUo
bWltZVR5cGUpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJ
bWFnZSYgcGFzdGVib2FyZEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggYzVlZTViYTMxMDc0YWZjYjMzOWZk
NGU5ODgxYjY3OGZkODFiYTE0OC4uMWVkOTIyOWIyOWE1YTE0NmE4YmExNTI1NjBiM2Y0NDI0ZTQ2
NGU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0yOTMsMTIgKzI5MywxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBw
YXN0ZQogICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZU1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIGlmICghVVRUeXBlSXNEZWNs
YXJlZCh1dGlPck1JTUVUeXBlLmdldCgpKSkKLSAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBh
ZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NN
SU1FVHlwZSwgdXRpT3JNSU1FVHlwZS5nZXQoKSwgbmlsKSk7CisgICAgICAgIGF1dG8gdXRpT3JN
SU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOworICAgICAgICBpZiAo
IWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCisgICAgICAgICAgICB1dGlPck1JTUVUeXBl
ID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCiAgICAgICAgIGF1dG8gaW1hZ2VE
YXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAg
ICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKil1dGlPck1JTUVUeXBlLmdldCgpXTsKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBh
ZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVd
OwogICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIHNldEVzdGltYXRlZERpc3BsYXllZFNpemU6cGFz
dGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgc2V0U3Vn
Z2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAxOGRmYWJjODdk
NDU0ZjdkNThhMDA3MWZhYjkzOGUzZTI1ZDkxMmZhLi41ZmE0MmUxNTA5YzczY2JjMGUwNGIzNDEz
MzI5NGU5ZTMzMThjNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNp
bXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgpA
QCAtNDgyLDggKzQ4Myw5IEBAIHN0YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9h
cmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAobG93ZXJjYXNlZFR5cGUgPT0gInRl
eHQvcnRmIiB8fCBsb3dlcmNhc2VkVHlwZSA9PSAicHVibGljLnJ0ZiIgfHwgbG93ZXJjYXNlZFR5
cGUgPT0gImNvbS5hcHBsZS50cmFkaXRpb25hbC1tYWMtcGxhaW4tdGV4dCIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIGlmIChhdXRvIHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNy
ZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbG93ZXJj
YXNlZFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgTlVMTCkpKSB7Ci0gICAgICAgIGlmIChh
dXRvIHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlU
eXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpKQorICAgIGF1dG8gdXRpVHlwZSA9
IFVUSUZyb21NSU1FVHlwZShsb3dlcmNhc2VkVHlwZSk7CisgICAgaWYgKCF1dGlUeXBlLmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoYXV0byBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVm
ZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdD
bGFzc05TUGJvYXJkVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIHBiVHlwZS5nZXQoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dl
YkNvcmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCBmNmNhYTI5ZjBlNzEwMmEwMTY0MGIy
MzU4MTVkZDllZWI3ZTg1ZmQ0Li4wZjBmZmQwZDc3ZDY2ZjhlMmE0MWZiMGJhZWY3ODgzMTRiYjYz
ZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJD
b3JlVVJMUmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgYWRq
dXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wg
aXNNYWluUmVzb3VyY2VMCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBl
eHRlbnNpb24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJsKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGV4dGVuc2lvbikgewogICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIG51
bGxwdHIpKTsKLSAgICAgICAgICAgICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBtaW1lVHlw
ZUZyb21VVElUcmVlKHV0aS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01J
TUVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpLmNyZWF0ZUNGU3RyaW5nKCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IGUx
NWY2OWI3MWJhNGE4ZGEwNzQ4NTBhNjNjMjhlMGIzOWMyYzc3MzAuLjc4Yjg3NTYzYWZmOTRiMTY3
NmYyNDFiNGM5MmFjODRmZTc0NjE5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCkBAIC0yNiwxMiArMjYsMTQgQEAKICNpZm5k
ZWYgVVRJVXRpbGl0aWVzX2gKICNkZWZpbmUgVVRJVXRpbGl0aWVzX2gKIAorI2ltcG9ydCA8d3Rm
L0ZvcndhcmQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3RyaW5n
UmVmIHV0aSk7Ci1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmlu
Z1JlZiBtaW1lKTsKLWJvb2wgaXNEZWNsYXJlZFVUSShDRlN0cmluZ1JlZiBVVEkpOworU3RyaW5n
IE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBNSU1FVHlwZUZyb21VVElU
cmVlKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcm
KTsKK2Jvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmKTsKIH0KIAogI2VuZGlmIC8vIFVU
SVV0aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9VVElVdGlsaXRpZXMubW0KaW5kZXggM2E0MmFjZjZjZTMyYzc4YTBmYzg4NWI1Nzg4MGY4NDdj
YjFiNWE1OS4uZDRlODI4MjQ0Y2FlZmY5ZjViOWEwYjgxOGVmMjU5MzFkMzU3NDg5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5t
bQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVUSVV0
aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3Jl
U2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0zMiw1MCArMzQsNjYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVU
SVRyZWUoQ0ZTdHJpbmdSZWYgdXRpKQorU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBTdHJp
bmcmIHV0aSkKIHsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0
aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSku
Z2V0KCk7Cit9CisKK1N0cmluZyBNSU1FVHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYgdXRp
KQoreworICAgIGF1dG8gdXRpQ0YgPSB1dGkuY3JlYXRlQ0ZTdHJpbmcoKTsKKwogICAgIC8vIENo
ZWNrIGlmIHRoaXMgVVRJIGhhcyBhIE1JTUUgdHlwZS4KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0
aSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWlt
ZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpQ0YuZ2V0
KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKICAgICBpZiAobWltZVR5cGUpCiAgICAgICAgIHJl
dHVybiBtaW1lVHlwZS5nZXQoKTsKIAogICAgIC8vIElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5
IG9mIHRoaXMgVVRJIHZpYSBpdHMgIkNvbmZvcm1zVG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmly
c3QgTUlNRSB0eXBlIHdlIGZpbmQuCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVj
bCA9IGFkb3B0Q0YoVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aSkpOworICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGRlY2wgPSBhZG9wdENGKFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1dGlD
Ri5nZXQoKSkpOwogICAgIGlmICghZGVjbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZh
bHVlKGRlY2wuZ2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKICAgICBpZiAoIXZhbHVlKQot
ICAgICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgQ0ZUeXBl
SUQgdHlwZUlEID0gQ0ZHZXRUeXBlSUQodmFsdWUpOwogCiAgICAgaWYgKHR5cGVJRCA9PSBDRlN0
cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZT
dHJpbmdSZWYpdmFsdWUpOworICAgICAgICByZXR1cm4gTUlNRVR5cGVGcm9tVVRJVHJlZSgoQ0ZT
dHJpbmdSZWYpdmFsdWUpOwogCiAgICAgaWYgKHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkp
IHsKICAgICAgICAgQ0ZBcnJheVJlZiBuZXdUeXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOwogICAg
ICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KG5ld1R5cGVzKTsKICAgICAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDRlR5cGVSZWYg
b2JqZWN0ID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRleChuZXdUeXBlcywgaSk7Ci0gICAgICAgIGlm
IChDRkdldFR5cGVJRChvYmplY3QpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFs
dWVBdEluZGV4KG5ld1R5cGVzLCBpKTsKKyAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChvYmpl
Y3QpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBtaW1lVHlwZUZy
b21VVElUcmVlKChDRlN0cmluZ1JlZilvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIG1pbWVU
eXBlOworICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJlZSgo
Q0ZTdHJpbmdSZWYpb2JqZWN0KTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmluZ1JlZiBtaW1lKQorc3RydWN0IFVUSUZy
b21NSU1FVHlwZUNhY2hlUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFN0cmluZywgU3RyaW5n
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBT
dHJpbmcmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmcoYWRvcHRDRihVVFR5cGVD
cmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIGtleS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSkuZ2V0KCkpOworICAgIH0KK307CisKK1N0cmluZyBV
VElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lLCAwKSk7Ci0gICAgcmV0dXJuIHV0aTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAx
NiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUu
Z2V0KCkuZ2V0KG1pbWVUeXBlKTsKIH0KIAotYm9vbCBpc0RlY2xhcmVkVVRJKENGU3RyaW5nUmVm
IFVUSSkKK2Jvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKIHsKLSAgICByZXR1
cm4gVVRUeXBlSXNEZWNsYXJlZChVVEkpOworICAgIHJldHVybiBVVFR5cGVJc0RlY2xhcmVkKFVU
SS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4
IGYxY2NhMDI5MWFjYzA4ZDU3MjliZTE3NzhjYzVhMTYzZDJlMzRkZjYuLjE5ZGQyOTQwOGFjNjkz
M2ZlOGMxOWEzZmNjZmJkNjNhOTdlZDk4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTMwMywx
MyArMzAzLDEzIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNl
UmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAgICAgICAgICAgICAgQ0ZN
dXRhYmxlU3RyaW5nUmVmIG11dGFibGVFeHRlbnNpb24gPSBDRlN0cmluZ0NyZWF0ZU11dGFibGVD
b3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAg
ICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbiwgTlVMTCk7CiAgICAgICAg
ICAgICAgICAgZXh0ZW5zaW9uID0gYWRvcHRDRihtdXRhYmxlRXh0ZW5zaW9uKTsKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVu
c2lvbk1hcCwgZXh0ZW5zaW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZT
dHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0
KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBHYXRla2VlcGVyLWJhc2VkIG1hcCBkb2Vzbid0
IGhhdmUgYSBNSU1FIHR5cGUsIHdlJ2xsIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgaXQgc2hvdWxk
IGJlIGJ5CiAgICAgICAgICAgICAgICAgICAgIC8vIGxvb2tpbmcgdXAgdGhlIGZpbGUgZXh0ZW5z
aW9uIGluIHRoZSBVVEkgbWFwcy4KICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JU
YWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgpLCAwKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGku
Z2V0KCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
aW5kZXggYjhjOTVjZjgzMTZhMWRiOWU2ZDc1YWI2M2ExY2RmYTQ1NmQ2NmNlYi4uZDM0YzE5NTM4
MDk2YmMxOTZiNzE1ZWQ0MDRlZWZlMjA1OTVjMjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTYxNiwxNCArMTYxNiwxMyBAQCBzdGF0aWMgUmV0
YWluUHRyPFVJSW1hZ2U+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQsCiAKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0
dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsKICAgICBpZiAoIWF0dGFjaG1lbnRU
eXBlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGF0dGFjaG1lbnRUeXBlQ0YgPSBhdHRhY2ht
ZW50VHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IFVUSTsKLSAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGVDRi5nZXQoKSkp
Ci0gICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZUNGOworICAgICAgICBTdHJpbmcgVVRJ
OworICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAg
ICBVVEkgPSBhdHRhY2htZW50VHlwZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgVVRJID0g
VVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgVVRJ
ID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICBbZG9jdW1lbnRJ
bnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0VVRJOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KFVUSS5n
ZXQoKSldOworICAgICAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0VVRJOnN0
YXRpY19jYXN0PE5TU3RyaW5nICo+KFVUSSldOwogICAgIH0KIAogICAgIE5TQXJyYXkgKmljb25z
ID0gW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIGljb25zXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA1ZWJjZTgwM2U5ZDlkNzBmYTQyOTFj
M2YyYjEzN2Q5Y2NlYjdiYjBkLi5hZTUzNGYzZTBhYWYwNWFjYjY5NjdjY2VjZDI1ZDI3ZjgwZWQy
NmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0y
NDIwLDE0ICsyNDIwLDEzIEBAIHN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQo
Y29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICAgICAgICAgIGlmIChhdXRv
IGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGlyZWN0b3J5IikpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGljb247CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBh
dXRvIGF0dGFjaG1lbnRUeXBlQ0YgPSBhdHRhY2htZW50VHlwZS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVEk7Ci0gICAgICAgICAgICBpZiAo
aXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZUNGLmdldCgpKSkKLSAgICAgICAgICAgICAgICBV
VEkgPSBhdHRhY2htZW50VHlwZUNGOworICAgICAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAg
ICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAgICAgICAgICAgICAgICBV
VEkgPSBhdHRhY2htZW50VHlwZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBV
VEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKIAotICAgICAgICAg
ICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJLmdldCgpKSkKKyAg
ICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGljb247CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318233</attachid>
            <date>2017-08-15 22:20:57 -0700</date>
            <delta_ts>2017-08-15 23:05:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815222056.patch</filename>
            <type>text/plain</type>
            <size>25077</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uN2Q3YjhjMmFmZDdhM2NiMzYxMGY0NTk4MTljNDJh
NWM3YThjNDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSBwZXJmIHdpbi4KKworICAgICAgICBVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnIGlzIGZhaXJseSBleHBlbnNpdmUsIGFu
ZCBpcyBjYWxsZWQKKyAgICAgICAgdW5kZXIgZXZlcnkgdG9EYXRhVVJMLCB3aGljaCB0aGUgV3Vu
ZGVyZ3JvdW5kIHd1bmRlcm1hcCBkb2VzIGEgL2xvdC8uCisKKyAgICAgICAgS2VlcCBhIDE2LWl0
ZW0gTFJVIGNhY2hlIG9mIE1JTUVUeXBlLT5VVEkgbWFwcGluZ3MuCisKKyAgICAgICAgQWxzbywg
bWFrZSBvdGhlciBjYWxsZXJzIG9mIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JU
YWcgdXNlCisgICAgICAgIHRoZSBVVElVdGlsaXRpZXMgdmVyc2lvbiBzbyB0aGV5IGNhbiBzaGFy
ZSBpbiB0aGUgY2FjaGluZy4KKworICAgICAgICBBbHNvLCBhcyBhIGRyaXZlLWJ5LCBhZGQgYW5k
IG1ha2Ugb3RoZXIgY2FsbGVycyB1c2UgbWltZVR5cGVGcm9tVVRJIHRvbywKKyAgICAgICAgYW5k
IG1ha2UgdGhlIFVUSVV0aWxpdGllcyBvcGVyYXRlIG9uIFN0cmluZ3MgZm9yIGEgc2xpZ2h0bHkg
bW9yZSBXZWJDb3JlLXkgZmVlbC4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmlsZVR5cGVzU2V0KToKKyAgICAgICAgQWRvcHQgbmV3
bHktYWRkZWQgTUlNRVR5cGVGcm9tVVRJKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1
ZmZlck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0NGRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjZkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dXRp
RnJvbU1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgQWRvcHQgVVRJRnJvbU1JTUVUeXBlLCBh
bmQgcmVuYW1lIHRoZSBsb2NhbCBoZWxwZXIgdGhhdCBkb2VzIHNvbWV0aGluZworICAgICAgICBk
aWZmZXJlbnQgKGEgc21hbGwgc3RhdGljIG1hcCkgb24gaU9TIGFuZCBXaW5kb3dzIHRvIG5vdCBo
YXZlIGFuIG92ZXJsYXBwaW5nIG5hbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIHRoaXMgZnVuY3Rpb24gdGhhdCBpcyBqdXN0
IE1JTUVUeXBlRnJvbVVUSSgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OnV0aVR5cGVGcm9tQ29jb2FUeXBlKToKKyAgICAgICAgQWRvcHQg
VVRJRnJvbU1JTUVUeXBlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZU9iamVjdFJlcHJlc2VudGF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5
cGUpOgorICAgICAgICBBZG9wdCBpc0RlY2xhcmVkVVRJIGFuZCBVVElGcm9tTUlNRVR5cGUoKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlN
RVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vz
c2FyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAg
ICAgRGVhbCB3aXRoIHRoZSBmYWN0IHRoYXQgVVRJIHV0aWxpdGllcyBkZWFsIGluIFN0cmluZ3Mg
bm93LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVGcm9tVVRJKToKKyAgICAgICAgQWRkZWQuIFRoaXMgZG9lc24ndCBj
cmF3bCB1cCB0aGUgVVRJIHRyZWUgaWYgdGhlIGZpcnN0IGNvbnZlcnNpb24gZmFpbHMsCisgICAg
ICAgIHdoaWNoIGlzIHdoYXQgbW9zdCBvZiB0aGUgZXhpc3RpbmcgY29kZSBkb2VzLiBJdCdzIHBv
c3NpYmxlIHdlIHdhbnQgdG8KKyAgICAgICAgdXNlIE1JTUVUeXBlRnJvbVVUSVRyZWUncyBsb2dp
YyBldmVyeXdoZXJlLCBidXQgSSBkaWRuJ3Qgd2FudCB0byBjaGFuZ2UKKyAgICAgICAgdGhhdCBp
biB0aGlzIHBhdGNoLgorCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZyb21VVElUcmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzRGVjbGFyZWRVVEkpOgorICAgICAgICBUYWtlIGFuZCByZXR1
cm4gc3RyaW5ncy4KKworICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xp
Y3k6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlw
ZSk6CisgICAgICAgIEFkZCB0aGUgYWZvcmVtZW50aW9uZWQgY2FjaGUuCisKIDIwMTctMDgtMTUg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDYWNoZSBBUEld
IEVuc3VyZSBSZXNvdXJjZVJlc3BvbnNlIGlzIG5vdCBudWxsIHdoZW4gcmVkaXJlY3RlZC90YWlu
dGluZy90eXBlIGZpZWxkcyBhcmUgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KaW5kZXggNmVlNGY3MTEzNmNlZjA5MGZmMDJmOTliZmE2Y2ZmMTIyNGMyZGQ4OS4uZGM2
ZTcxNTU5MDA2MDFmYmE5NmY0OWMxZTAwYmRjMDRmOGYwMzkzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiU3R5bGVQ
cm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJUeXBpbmdDb21tYW5kLmgi
CisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCiAj
aW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3Jl
U2VydmljZXMuaD4KQEAgLTMzMiw5ICszMzMsOSBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbgog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nVHlwZSA9IHR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGZpbGVuYW1lRXh0ZW5zaW9uID0gYWRvcHRO
UygoTlNTdHJpbmcgKilVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHN0cmluZ1R5cGUu
Z2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKICAgICBOU1N0cmluZyAqcmVs
YXRpdmVVUkxQYXJ0ID0gW0AiaW1hZ2UiIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1l
RXh0ZW5zaW9uLmdldCgpXTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlID0gYWRv
cHROUygoTlNTdHJpbmcgKilVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHN0cmluZ1R5
cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBN
SU1FVHlwZUZyb21VVEkodHlwZSk7CiAKLSAgICBhZGRGcmFnbWVudChmcmFtZS5lZGl0b3IoKS5j
cmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQo
cmVsYXRpdmVVUkxQYXJ0KSwgbWltZVR5cGUuZ2V0KCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3Ry
aW5nKCkpKSk7CisgICAgYWRkRnJhZ21lbnQoZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRG
b3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFy
dCksIG1pbWVUeXBlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSkpOwogICAgIHJldHVy
biBmcmFnbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAppbmRleCBhMmE0ZDAzOGQ1ZDhlNmI0YWI1ZTE0OTI1Y2Y0NmNhNWE4OTMzYTZlLi4z
YWNmMWYxNDNmY2ViZjZmYTFlOTFiODVhNGQxOTg3YmViMzQzZDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lm
IFVTRShDRykKICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCiAjaW5jbHVkZSAiVVRJUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJVVElVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjZW5kaWYKIApAQCAtNjgsNyArNjksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogI2lmIFVTRShDRykKICAgICBIYXNoU2V0PFN0cmluZz4m
IGltYWdlVVRJcyA9IGFsbG93ZWRJbWFnZVVUSXMoKTsKICAgICBmb3IgKGF1dG8mIGltYWdlVVRJ
IDogaW1hZ2VVVElzKSB7Ci0gICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1h
Z2VTb3VyY2VUeXBlKGltYWdlVVRJKTsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5
cGVGcm9tVVRJKGltYWdlVVRJKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQobWltZVR5cGUpOwogICAg
ICAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsK
QEAgLTE2MCw3ICsxNjEsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXNGb3JFbmNvZGluZygpCiAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3Vu
dChzdXBwb3J0ZWRUeXBlcy5nZXQoKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewogICAgICAgICBDRlN0cmluZ1JlZiBzdXBwb3J0ZWRUeXBlID0gcmVpbnRlcnBy
ZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdXBwb3J0ZWRUeXBl
cy5nZXQoKSwgaSkpOwotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZShzdXBwb3J0ZWRUeXBlKTsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlN
RVR5cGVGcm9tVVRJKHN1cHBvcnRlZFR5cGUpOwogICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFk
ZChtaW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDU4ODI5YTBlOWI1MzdjYjI0NzRiNzQ4ZjkxZDY3
NmIxNWViYTI5MWMuLjI3YzQ5MjIwNTZiNGIwYTgyYzk2NWUyYTljNTgwOWRhMzE3OTdmODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0CiAgICAgfQogCiAg
ICAgaWYgKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KiBj
b250ZW50SW5mbyA9IFttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0
XSkgewotICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVU
eXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkuZ2V0KCk7CisgICAgICAgIFN0cmluZyB1dGkg
PSBVVElGcm9tTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSk7CiAKICAgICAgICAgW2NvbnRl
bnRJbmZvIHNldENvbnRlbnRUeXBlOnV0aV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggNzFlYjgzZGZhYTYw
Njg3ZmY2ZWFkOGZmYjQ2YjIyN2U0OGNiNDRkOS4uOGYzOGRiYzMyZjhjZjc2ZTc5ZjEzOWJlZjky
ZDI3M2NiYTkyYzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgorI2luY2x1ZGUgIlVUSVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8SW1hZ2VJTy9J
bWFnZUlPLmg+CkBAIC00NDcsMTAgKzQ0OCwxMSBAQCBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVm
IGpwZWdVVEkoKQogICAgIHJldHVybiBrVVRUeXBlSlBFRzsKIH0KICAgICAKLXN0YXRpYyBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQorc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKKyAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3Qg
aU9TIHVzZSB0aGUgQ29yZVNlcnZpY2VzIHZlcnNpb24/CiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IHJldHVybiBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VU
VGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwor
ICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpLmNyZWF0ZUNGU3RyaW5nKCk7CiAj
ZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZT
VFIgaXMgdGhyZWFkc2FmZS4KIApAQCAtNTMyLDcgKzUzNCw3IEBAIFJldGFpblB0cjxDRkRhdGFS
ZWY+IEltYWdlQnVmZmVyOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9w
dGlvbmFsCiAgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAg
ICBmbHVzaENvbnRleHQoKTsKIAotICAgIGF1dG8gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVU
eXBlKTsKKyAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBl
KTsKICAgICBBU1NFUlQodXRpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsK
QEAgLTU3NCw3ICs1NzYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhKGNv
bnN0IEltYWdlRGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeQogewogICAgIEFTU0VS
VChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyht
aW1lVHlwZSkpOwogCi0gICAgYXV0byB1dGkgPSB1dGlGcm9tTUlNRVR5cGUobWltZVR5cGUpOwor
ICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUpOwogICAg
IEFTU0VSVCh1dGkpOwogCiAgICAgQ0dJbWFnZUFscGhhSW5mbyBkYXRhQWxwaGFJbmZvID0ga0NH
SW1hZ2VBbHBoYUxhc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmgKaW5kZXggNWY4ODQ5YjQwNDIyNmQ5YmNjNWNkYWFlOGQ5M2Qy
N2EzNjZhNGQ4OC4uODM1NjMwYzE4MDc5ZTJjMzZlNDI5MWNiYjM1Njc1OGUzZWNiNmEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
Ry5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuaApAQCAtMzMsOCArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBwcmVm
ZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAot
U3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0K
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0
aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3Vu
dCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0dNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCmluZGV4IGE2NWZiYjc0OGNlNGI4MTY4Mzg1N2RkNzcz
NjU0ZWFmOTFhNTcwMTMuLmRmMjgzMTRmZmIyMTEwODBhYmI1MzNhZDc1ZTJhYmM2Mzg2MGZmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0dNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDR01hYy5tbQpAQCAtMzUsMTEgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1
dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmdldCgpOwot
fQotCiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0
cmluZyYgdXRpKQogewogICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdX
aXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVF
eHRlbnNpb24pKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCBhZGUz
NmM4ZTAyNWI4OTdhODBlYjM4MDZiNzI3YjYxNTU5NWY5OTBlLi5iMzJjNTNlN2VlYmVmMDI2ZmIz
ZTU3NzFjY2E4NzBiMjgwYjJhM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBA
IC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJRVEtpdFNQSS5oIgogI2ltcG9ydCAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CkBAIC0xMjQzLDExICsxMjQ0LDEx
IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBjcmVh
dGVGaWxlVHlwZXNTZXQoTlNBcnJheSAqZmlsCiAgICAgICAgIGF1dG8gdXRpID0gYWRvcHRDRihV
VFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVF
eHRlbnNpb24sIGV4dCwgTlVMTCkpOwogICAgICAgICBpZiAoIXV0aSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBhdXRvIG1pbWUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgICAgIGlm
IChzaG91bGRSZWplY3RNSU1FVHlwZShtaW1lLmdldCgpKSkKKyAgICAgICAgYXV0byBtaW1lID0g
TUlNRVR5cGVGcm9tVVRJKHV0aS5nZXQoKSk7CisgICAgICAgIGlmIChzaG91bGRSZWplY3RNSU1F
VHlwZShtaW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobWltZSkKLSAg
ICAgICAgICAgIHNldC5hZGQobWltZS5nZXQoKSk7CisgICAgICAgIGlmICghbWltZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICBzZXQuYWRkKG1pbWUpOwogCiAgICAgICAgIC8vIC1tb3ZpZUZpbGVU
eXBlczogcmV0dXJucyBib3RoIGZpbGUgZXh0ZW5zaW9ucyBhbmQgT1NUeXBlcy4gVGhlIGxhdGVy
IGFyZSBzdXJyb3VuZGVkIGJ5IHNpbmdsZQogICAgICAgICAvLyBxdW90ZXMsIGVnLiAnTW9vVics
IHNvIGRvbid0IGJvdGhlciBsb29raW5nIGF0IHRob3NlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA1N2FjNDQ3Y2JjM2JhYjI0NTQxNGY2NTBj
MzlhOGU5ZWE1OGRiMjk5Li4yOWQxMWRkNGUzYWEwYmFkOTBmMjJhYjBjNjZjZmExYjgzYWRkNDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
NDgsNiArNDgsNyBAQAogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJUZXh0Lmgi
CiAjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2Vi
TlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQg
PE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KQEAgLTE0NCw3ICsxNDUs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50KQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZShjb25zdCBOU1N0
cmluZyAqbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgKENGU3RyaW5n
UmVmKW1pbWVUeXBlLCBOVUxMKSkuZ2V0KCkpOworICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUo
U3RyaW5nKG1pbWVUeXBlKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBjNWVlNWJhMzEwNzRh
ZmNiMzM5ZmQ0ZTk4ODFiNjc4ZmQ4MWJhMTQ4Li4xZWQ5MjI5YjI5YTVhMTQ2YThiYTE1MjU2MGIz
ZjQ0MjRlNDY0ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTI5MywxMiArMjkzLDEyIEBAIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJk
SW1hZ2UmIHBhc3RlCiAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlw
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZElt
YWdlLnJlc291cmNlTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgaWYgKCFVVFR5
cGVJc0RlY2xhcmVkKHV0aU9yTUlNRVR5cGUuZ2V0KCkpKQotICAgICAgICAgICAgdXRpT3JNSU1F
VHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc01JTUVUeXBlLCB1dGlPck1JTUVUeXBlLmdldCgpLCBuaWwpKTsKKyAgICAgICAgYXV0
byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CisgICAg
ICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKKyAgICAgICAgICAgIHV0aU9y
TUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKICAgICAgICAgYXV0
byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEo
KTsKLSAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGUuZ2V0KCldOworICAgICAgICBbaXRlbXNUb1Jl
Z2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JN
SU1FVHlwZV07CiAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgc2V0RXN0aW1hdGVkRGlzcGxheWVk
U2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW2l0ZW1zVG9SZWdpc3Rl
ciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDE4
ZGZhYmM4N2Q0NTRmN2Q1OGEwMDcxZmFiOTM4ZTNlMjVkOTEyZmEuLjVmYTQyZTE1MDljNzNjYmMw
ZTA0YjM0MTMzMjk0ZTllMzMxOGM0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1wb3J0ICJSZW5kZXJJbWFn
ZS5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJVVElVdGls
aXRpZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0
cmFzLmgiCkBAIC00ODIsOCArNDgzLDkgQEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVGcm9tSFRN
TENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChsb3dlcmNhc2VkVHlw
ZSA9PSAidGV4dC9ydGYiIHx8IGxvd2VyY2FzZWRUeXBlID09ICJwdWJsaWMucnRmIiB8fCBsb3dl
cmNhc2VkVHlwZSA9PSAiY29tLmFwcGxlLnRyYWRpdGlvbmFsLW1hYy1wbGFpbi10ZXh0IikKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKGF1dG8gdXRpVHlwZSA9IGFkb3B0Q0Yo
VVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBl
LCBsb3dlcmNhc2VkVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBOVUxMKSkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gcGJUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENs
YXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSkpCisgICAgYXV0byB1
dGlUeXBlID0gVVRJRnJvbU1JTUVUeXBlKGxvd2VyY2FzZWRUeXBlKTsKKyAgICBpZiAoIXV0aVR5
cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBl
Q29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gcGJUeXBlLmdl
dCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCmluZGV4IGY2Y2FhMjlmMGU3MTAy
YTAxNjQwYjIzNTgxNWRkOWVlYjdlODVmZDQuLjBmMGZmZDBkNzdkNjZmOGUyYTQxZmIwYmFlZjc4
ODMxNGJiNjNmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KQEAgLTU3LDcgKzU3LDcgQEAg
dm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25z
ZSwgYm9vbCBpc01haW5SZXNvdXJjZUwKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsK
ICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5n
ZXQoKSwgbnVsbHB0cikpOwotICAgICAgICAgICAgICAgICAgICBxdWlja0xvb2tNSU1FVHlwZSA9
IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcXVp
Y2tMb29rTUlNRVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5nZXQoKSkuY3JlYXRlQ0ZT
dHJpbmcoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgK
aW5kZXggZTE1ZjY5YjcxYmE0YThkYTA3NDg1MGE2M2MyOGUwYjM5YzJjNzczMC4uNzhiODc1NjNh
ZmY5NGIxNjc2ZjI0MWI0YzkyYWM4NGZlNzQ2MTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKQEAgLTI2LDEyICsyNiwxNCBA
QAogI2lmbmRlZiBVVElVdGlsaXRpZXNfaAogI2RlZmluZSBVVElVdGlsaXRpZXNfaAogCisjaW1w
b3J0IDx3dGYvRm9yd2FyZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1SZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUo
Q0ZTdHJpbmdSZWYgdXRpKTsKLVJldGFpblB0cjxDRlN0cmluZ1JlZj4gVVRJRnJvbU1JTUVUeXBl
KENGU3RyaW5nUmVmIG1pbWUpOwotYm9vbCBpc0RlY2xhcmVkVVRJKENGU3RyaW5nUmVmIFVUSSk7
CitTdHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIE1JTUVUeXBl
RnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgVVRJRnJvbU1JTUVUeXBlKGNvbnN0
IFN0cmluZyYpOworYm9vbCBpc0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYpOwogfQogCiAjZW5k
aWYgLy8gVVRJVXRpbGl0aWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQppbmRleCAzYTQyYWNmNmNlMzJjNzhhMGZjODg1YjU3
ODgwZjg0N2NiMWI1YTU5Li5kNGU4MjgyNDRjYWVmZjlmNWI5YTBiODE4ZWYyNTkzMWQzNTc0ODkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGls
aXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRp
bGl0aWVzLm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiVVRJVXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvVGlueUxSVUNhY2hlLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPE1v
YmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KQEAgLTMyLDUwICszNCw2NiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5
cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpCitTdHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNv
bnN0IFN0cmluZyYgdXRpKQogeworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJy
ZWRUYWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlN
RVR5cGUpKS5nZXQoKTsKK30KKworU3RyaW5nIE1JTUVUeXBlRnJvbVVUSVRyZWUoY29uc3QgU3Ry
aW5nJiB1dGkpCit7CisgICAgYXV0byB1dGlDRiA9IHV0aS5jcmVhdGVDRlN0cmluZygpOworCiAg
ICAgLy8gQ2hlY2sgaWYgdGhpcyBVVEkgaGFzIGEgTUlNRSB0eXBlLgotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRo
Q2xhc3ModXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1
dGlDRi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwogICAgIGlmIChtaW1lVHlwZSkKICAg
ICAgICAgcmV0dXJuIG1pbWVUeXBlLmdldCgpOwogCiAgICAgLy8gSWYgbm90LCB3YWxrIHRoZSBh
bmNlc3Rvcnkgb2YgdGhpcyBVVEkgdmlhIGl0cyAiQ29uZm9ybXNUbyIgdGFncyBhbmQgcmV0dXJu
IHRoZSBmaXJzdCBNSU1FIHR5cGUgd2UgZmluZC4KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBkZWNsID0gYWRvcHRDRihVVFR5cGVDb3B5RGVjbGFyYXRpb24odXRpKSk7CisgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbCA9IGFkb3B0Q0YoVVRUeXBlQ29weURlY2xhcmF0
aW9uKHV0aUNGLmdldCgpKSk7CiAgICAgaWYgKCFkZWNsKQotICAgICAgICByZXR1cm4gbmlsOwor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgQ0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZGVjbC5nZXQoKSwga1VUVHlwZUNvbmZvcm1zVG9LZXkpOwogICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICBDRlR5cGVJRCB0eXBlSUQgPSBDRkdldFR5cGVJRCh2YWx1ZSk7CiAKICAgICBpZiAodHlwZUlE
ID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBtaW1lVHlwZUZyb21VVElU
cmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7CisgICAgICAgIHJldHVybiBNSU1FVHlwZUZyb21VVElU
cmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7CiAKICAgICBpZiAodHlwZUlEID09IENGQXJyYXlHZXRU
eXBlSUQoKSkgewogICAgICAgICBDRkFycmF5UmVmIG5ld1R5cGVzID0gKENGQXJyYXlSZWYpdmFs
dWU7CiAgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQobmV3VHlwZXMpOwog
ICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIENG
VHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFsdWVBdEluZGV4KG5ld1R5cGVzLCBpKTsKLSAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKG9iamVjdCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOworICAgICAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKG9iamVjdCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IG1p
bWVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKW9iamVjdCkpCi0gICAgICAgICAgICByZXR1
cm4gbWltZVR5cGU7CisgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZyb21V
VElUcmVlKChDRlN0cmluZ1JlZilvYmplY3QpOworICAgICAgICAgICAgaWYgKCFtaW1lVHlwZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJldGFp
blB0cjxDRlN0cmluZ1JlZj4gVVRJRnJvbU1JTUVUeXBlKENGU3RyaW5nUmVmIG1pbWUpCitzdHJ1
Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U3RyaW5n
LCBTdHJpbmc+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVZhbHVlRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhhZG9wdENG
KFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlw
ZSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKS5nZXQoKSk7CisgICAgfQorfTsKKwor
U3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWUsIDApKTsKLSAgICByZXR1
cm4gdXRpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBT
dHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeT4+IGNhY2hlOworICAgIHJldHVy
biBjYWNoZS5nZXQoKS5nZXQobWltZVR5cGUpOwogfQogCi1ib29sIGlzRGVjbGFyZWRVVEkoQ0ZT
dHJpbmdSZWYgVVRJKQorYm9vbCBpc0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQogewot
ICAgIHJldHVybiBVVFR5cGVJc0RlY2xhcmVkKFVUSSk7CisgICAgcmV0dXJuIFVUVHlwZUlzRGVj
bGFyZWQoVVRJLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0KaW5kZXggZjFjY2EwMjkxYWNjMDhkNTcyOWJlMTc3OGNjNWExNjNkMmUzNGRmNi4uMTlkZDI5
NDA4YWM2OTMzZmU4YzE5YTNmY2NmYmQ2M2E5N2VkOTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpA
QCAtMzAzLDEzICszMDMsMTMgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUwKICAgICAgICAgICAg
ICAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRl
TXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsK
ICAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAsIGV4dGVu
c2lvbi5nZXQoKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIEdhdGVrZWVwZXItYmFzZWQgbWFw
IGRvZXNuJ3QgaGF2ZSBhIE1JTUUgdHlwZSwgd2UnbGwgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCBp
dCBzaG91bGQgYmUgYnkKICAgICAgICAgICAgICAgICAgICAgLy8gbG9va2luZyB1cCB0aGUgZmls
ZSBleHRlbnNpb24gaW4gdGhlIFVUSSBtYXBzLgogICAgICAgICAgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRp
ZmllckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCks
IDApKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWltZVR5cGVGcm9tVVRJVHJlZSh1
dGkuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBNSU1FVHlwZUZyb21VVElU
cmVlKHV0aS5nZXQoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQppbmRleCBiOGM5NWNmODMxNmExZGI5ZTZkNzVhYjYzYTFjZGZhNDU2ZDY2Y2ViLi5k
MzRjMTk1MzgwOTZiYzE5NmI3MTVlZDQwNGVlZmUyMDU5NWMyNGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNjE2LDE0ICsxNjE2LDEzIEBAIHN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCwKIAogICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFj
aG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VHlwZSgpOwogICAgIGlmICghYXR0
YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gYXR0YWNobWVudFR5cGVDRiA9
IGF0dGFjaG1lbnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gVVRJOwotICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZUNG
LmdldCgpKSkKLSAgICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBlQ0Y7CisgICAgICAgIFN0
cmluZyBVVEk7CisgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAg
ICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGVDRi5nZXQoKSk7CisgICAgICAg
ICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOwogCi0gICAgICAgIFtk
b2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBzZXRVVEk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcg
Kj4oVVRJLmdldCgpKV07CisgICAgICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBz
ZXRVVEk6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oVVRJKV07CiAgICAgfQogCiAgICAgTlNBcnJh
eSAqaWNvbnMgPSBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgaWNvbnNdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDVlYmNlODAzZTlkOWQ3
MGZhNDI5MWMzZjJiMTM3ZDljY2ViN2JiMGQuLmFlNTM0ZjNlMGFhZjA1YWNiNjk2N2NjZWNkMjVk
MjdmODBlZDI2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KQEAgLTI0MjAsMTQgKzI0MjAsMTMgQEAgc3RhdGljIFJlZlB0cjxJY29uPiBpY29uRm9yQXR0
YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgICAgICAgICAg
aWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kaXJlY3Rvcnki
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGF1dG8gYXR0YWNobWVudFR5cGVDRiA9IGF0dGFjaG1lbnRUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVUSTsKLSAgICAgICAg
ICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpKQotICAgICAgICAg
ICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBlQ0Y7CisgICAgICAgICAgICBTdHJpbmcgVVRJOwor
ICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAg
ICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBlOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIFVUSSA9IFVUSUZyb21NSU1FVHlwZShhdHRhY2htZW50VHlwZUNGLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOwogCi0g
ICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkuZ2V0
KCkpKQorICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEko
VVRJKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318237</attachid>
            <date>2017-08-15 23:05:46 -0700</date>
            <delta_ts>2017-08-16 11:37:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170815230545.patch</filename>
            <type>text/plain</type>
            <size>23867</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uNGYzM2VhYjUxNDUzN2MzMmM2Yjc5ODY0N2NmZjBh
ZmQ3NTM2Yzg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSBwZXJmIHdpbi4KKworICAgICAgICBVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnIGlzIGZhaXJseSBleHBlbnNpdmUsIGFu
ZCBpcyBjYWxsZWQKKyAgICAgICAgdW5kZXIgZXZlcnkgdG9EYXRhVVJMLCB3aGljaCB0aGUgV3Vu
ZGVyZ3JvdW5kIHd1bmRlcm1hcCBkb2VzIGEgL2xvdC8uCisKKyAgICAgICAgS2VlcCBhIDE2LWl0
ZW0gTFJVIGNhY2hlIG9mIE1JTUVUeXBlLT5VVEkgbWFwcGluZ3MuCisKKyAgICAgICAgQWxzbywg
bWFrZSBvdGhlciBjYWxsZXJzIG9mIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JU
YWcgdXNlCisgICAgICAgIHRoZSBVVElVdGlsaXRpZXMgdmVyc2lvbiBzbyB0aGV5IGNhbiBzaGFy
ZSBpbiB0aGUgY2FjaGluZy4KKworICAgICAgICBBbHNvLCBhcyBhIGRyaXZlLWJ5LCBhZGQgYW5k
IG1ha2Ugb3RoZXIgY2FsbGVycyB1c2UgbWltZVR5cGVGcm9tVVRJIHRvbywKKyAgICAgICAgYW5k
IG1ha2UgdGhlIFVUSVV0aWxpdGllcyBvcGVyYXRlIG9uIFN0cmluZ3MgZm9yIGEgc2xpZ2h0bHkg
bW9yZSBXZWJDb3JlLXkgZmVlbC4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmlsZVR5cGVzU2V0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICBBZG9wdCBuZXdseS1hZGRlZCBNSU1F
VHlwZUZyb21VVEkoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNmRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUp
OiBEZWxldGVkLgorICAgICAgICBBZG9wdCBVVElGcm9tTUlNRVR5cGUsIGFuZCByZW5hbWUgdGhl
IGxvY2FsIGhlbHBlciB0aGF0IGRvZXMgc29tZXRoaW5nCisgICAgICAgIGRpZmZlcmVudCAoYSBz
bWFsbCBzdGF0aWMgbWFwKSBvbiBpT1MgYW5kIFdpbmRvd3MgdG8gbm90IGhhdmUgYW4gb3Zlcmxh
cHBpbmcgbmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjp1dGlUeXBlRnJvbUNvY29hVHlwZSk6CisgICAgICAgIEFkb3B0IFVUSUZyb21N
SU1FVHlwZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RS
ZXByZXNlbnRhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKToKKyAg
ICAgICAgQWRvcHQgaXNEZWNsYXJlZFVUSSBhbmQgVVRJRnJvbU1JTUVUeXBlKCkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNv
cmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNw
b25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgIERlYWwg
d2l0aCB0aGUgZmFjdCB0aGF0IFVUSSB1dGlsaXRpZXMgZGVhbCBpbiBTdHJpbmdzIG5vdy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlRnJvbVVUSSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGRvZXNuJ3QgY3Jhd2wgdXAg
dGhlIFVUSSB0cmVlIGlmIHRoZSBmaXJzdCBjb252ZXJzaW9uIGZhaWxzLAorICAgICAgICB3aGlj
aCBpcyB3aGF0IG1vc3Qgb2YgdGhlIGV4aXN0aW5nIGNvZGUgZG9lcy4gSXQncyBwb3NzaWJsZSB3
ZSB3YW50IHRvCisgICAgICAgIHVzZSBNSU1FVHlwZUZyb21VVElUcmVlJ3MgbG9naWMgZXZlcnl3
aGVyZSwgYnV0IEkgZGlkbid0IHdhbnQgdG8gY2hhbmdlCisgICAgICAgIHRoYXQgaW4gdGhpcyBw
YXRjaC4KKworICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVGcm9tVVRJVHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjppc0RlY2xhcmVkVVRJKToKKyAgICAgICAgVGFrZSBhbmQgcmV0dXJuIHN0cmlu
Z3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5OjpjcmVh
dGVWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUpOgorICAg
ICAgICBBZGQgdGhlIGFmb3JlbWVudGlvbmVkIGNhY2hlLgorCiAyMDE3LTA4LTE1ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2FjaGUgQVBJXSBFbnN1cmUg
UmVzb3VyY2VSZXNwb25zZSBpcyBub3QgbnVsbCB3aGVuIHJlZGlyZWN0ZWQvdGFpbnRpbmcvdHlw
ZSBmaWVsZHMgYXJlIHNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmlu
ZGV4IDZlZTRmNzExMzZjZWYwOTBmZjAyZjk5YmZhNmNmZjEyMjRjMmRkODkuLmRjNmU3MTU1OTAw
NjAxZmJhOTZmNDljMWUwMGJkYzA0ZjhmMDM5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNpbXBvcnQgIlN0eWxlUHJvcGVydGll
cy5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVHlwaW5nQ29tbWFuZC5oIgorI2ltcG9y
dCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXQUtBcHBLaXRTdHVicy5oIgogI2ltcG9ydCAi
bWFya3VwLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CkBAIC0zMzIsOSArMzMzLDkgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW4KICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1R5cGUgPSB0eXBlLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBmaWxlbmFtZUV4dGVuc2lvbiA9IGFkb3B0TlMoKE5TU3Ry
aW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyhzdHJpbmdUeXBlLmdldCgpLCBr
VVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CiAgICAgTlNTdHJpbmcgKnJlbGF0aXZlVVJM
UGFydCA9IFtAImltYWdlIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZUV4dGVuc2lv
bi5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtaW1lVHlwZSA9IGFkb3B0TlMoKE5T
U3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyhzdHJpbmdUeXBlLmdldCgp
LCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVG
cm9tVVRJKHR5cGUpOwogCi0gICAgYWRkRnJhZ21lbnQoZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJh
Z21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZl
VVJMUGFydCksIG1pbWVUeXBlLmdldCgpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSkp
OworICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VS
ZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChyZWxhdGl2ZVVSTFBhcnQpLCBtaW1l
VHlwZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpKTsKICAgICByZXR1cm4gZnJhZ21l
bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAwMWM3ZTBmNTk2
ODViMTE4NjU1MGQ3MjJhZjU5NTljYzE0ODE5NWUwLi41ZTI2YmYyZmJmNjY0NzIwMzRmODljYTlj
YWFkNDNjYjhmZmZjNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0y
MTEsNyArMjExLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQobG9uZyBjaGFu
Z2VDb3VudCk7CiAKICAgICBzdGF0aWMgTlNBcnJheSAqc3VwcG9ydGVkV2ViQ29udGVudFBhc3Rl
Ym9hcmRUeXBlcygpOwotICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZShjb25zdCBO
U1N0cmluZyAqbWltZVR5cGUpOworICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZShO
U1N0cmluZyAqbWltZVR5cGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRl
eCA1ODgyOWEwZTliNTM3Y2IyNDc0Yjc0OGY5MWQ2NzZiMTVlYmEyOTFjLi4yN2M0OTIyMDU2YjRi
MGE4MmM5NjVlMmE5YzU4MDlkYTMxNzk3Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xMTksNyArMTE5LDcgQEAgdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdAogICAgIH0KIAogICAgIGlmIChBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBbbV9hdlJlcXVlc3Qu
Z2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0pIHsKLSAgICAgICAgU3RyaW5nIHV0aSA9
IFVUSUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpLmdldCgpOworICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNl
Lm1pbWVUeXBlKCkpOwogCiAgICAgICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50VHlwZTp1dGld
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCmluZGV4IDcxZWI4M2RmYWE2MDY4N2ZmNmVhZDhmZmI0NmIyMjdlNDhjYjQ0
ZDkuLjhmMzhkYmMzMmY4Y2Y3NmU3OWYxMzliZWY5MmQyNzNjYmE5MmM0MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJVVElVdGls
aXRpZXMuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVH
cmFwaGljcy5oPgogI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgpAQCAtNDQ3LDEwICs0NDgs
MTEgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKICAgICByZXR1cm4ga1VU
VHlwZUpQRUc7CiB9CiAgICAgCi1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9t
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiB7CisgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IGlPUyB1c2UgdGhlIENvcmVTZXJ2aWNlcyB2
ZXJzaW9uPwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVh
dGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBl
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKKyAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBl
KG1pbWVUeXBlKS5jcmVhdGVDRlN0cmluZygpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKQEAgLTUz
Miw3ICs1MzQsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbAogICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKLSAgICBh
dXRvIHV0aSA9IHV0aUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0byB1dGkgPSB1dGlG
cm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKICAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CkBAIC01NzQsNyArNTc2LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YShjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHkKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGF1dG8gdXRp
ID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFn
ZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAogICAgIENHSW1h
Z2VBbHBoYUluZm8gZGF0YUFscGhhSW5mbyA9IGtDR0ltYWdlQWxwaGFMYXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMu
bW0KaW5kZXggYTY1ZmJiNzQ4Y2U0YjgxNjgzODU3ZGQ3NzM2NTRlYWY5MWE1NzAxMy4uZGYyOTdk
ZWU0MDVkNzA5ZjA3ZTZmMmE1MGNhYzE3YjBiOWVhZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkltYWdlU291cmNlQ0cu
aCIKIAorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25z
dCBTdHJpbmcmIHV0aSkKIHsKLSAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVk
VGFnV2l0aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVU
eXBlKSkuZ2V0KCk7CisgICAgcmV0dXJuIE1JTUVUeXBlRnJvbVVUSSh1dGkpOwogfQogCiBTdHJp
bmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGFkZTM2YzhlMDI1Yjg5N2E4MGVi
MzgwNmI3MjdiNjE1NTk1Zjk5MGUuLmIzMmM1M2U3ZWViZWYwMjZmYjNlNTc3MWNjYTg3MGIyODBi
MmEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbXBvcnQgIlFUS2l0U1BJLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5oIgogI2ltcG9y
dCAiVVJMLmgiCisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KQEAgLTEyNDMsMTEgKzEyNDQsMTEgQEAgc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGNyZWF0ZUZpbGVUeXBlc1NldChO
U0FycmF5ICpmaWwKICAgICAgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZl
cnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0LCBO
VUxMKSk7CiAgICAgICAgIGlmICghdXRpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGF1dG8gbWltZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGku
Z2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICAgICAgaWYgKHNob3VsZFJlamVjdE1J
TUVUeXBlKG1pbWUuZ2V0KCkpKQorICAgICAgICBhdXRvIG1pbWUgPSBNSU1FVHlwZUZyb21VVEko
dXRpLmdldCgpKTsKKyAgICAgICAgaWYgKHNob3VsZFJlamVjdE1JTUVUeXBlKG1pbWUpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChtaW1lKQotICAgICAgICAgICAgc2V0LmFk
ZChtaW1lLmdldCgpKTsKKyAgICAgICAgaWYgKCFtaW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHNldC5hZGQobWltZSk7CiAKICAgICAgICAgLy8gLW1vdmllRmlsZVR5cGVzOiByZXR1cm5zIGJv
dGggZmlsZSBleHRlbnNpb25zIGFuZCBPU1R5cGVzLiBUaGUgbGF0ZXIgYXJlIHN1cnJvdW5kZWQg
Ynkgc2luZ2xlCiAgICAgICAgIC8vIHF1b3RlcywgZWcuICdNb29WJywgc28gZG9uJ3QgYm90aGVy
IGxvb2tpbmcgYXQgdGhvc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDU3YWM0NDdjYmMzYmFiMjQ1NDE0ZjY1MGMzOWE4ZTllYTU4ZGIyOTku
LjA0ZmI2ZDM2ZGNiN2UxNmE2OWE2NTg4ZmFkYmFhZWY1NGJkYTExMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC00OCw2ICs0OCw3IEBACiAj
aW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlVSTC5o
IgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJp
bmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZp
Y2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTQyLDkgKzE0Myw5IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2Fy
ZChjb250ZW50LCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAotU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
c291cmNlTUlNRVR5cGUoY29uc3QgTlNTdHJpbmcgKm1pbWVUeXBlKQorU3RyaW5nIFBhc3RlYm9h
cmQ6OnJlc291cmNlTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWVUeXBlKQogewotICAgIHJldHVybiBT
dHJpbmcoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIChDRlN0cmluZ1JlZiltaW1lVHlwZSwgTlVMTCkpLmdldCgpKTsKKyAg
ICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmlu
ZGV4IGM1ZWU1YmEzMTA3NGFmY2IzMzlmZDRlOTg4MWI2NzhmZDgxYmExNDguLjFlZDkyMjliMjlh
NWExNDZhOGJhMTUyNTYwYjNmNDQyNGU0NjRlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMjkzLDEyICsyOTMs
MTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25z
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGUKICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBh
ZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwog
CiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHV0aU9yTUlNRVR5
cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICBpZiAoIVVUVHlwZUlzRGVjbGFyZWQodXRpT3JNSU1FVHlwZS5nZXQoKSkpCi0gICAg
ICAgICAgICB1dGlPck1JTUVUeXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIHV0aU9yTUlNRVR5cGUuZ2V0KCksIG5p
bCkpOworICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VNSU1FVHlwZTsKKyAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQor
ICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBl
KTsKIAogICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEtPmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6aW1h
Z2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZS5nZXQoKV07Cisg
ICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZToo
TlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBzZXRF
c3RpbWF0ZWREaXNwbGF5ZWRTaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAg
ICBbaXRlbXNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dl
c3RlZE5hbWVdOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KaW5kZXggMThkZmFiYzg3ZDQ1NGY3ZDU4YTAwNzFmYWI5MzhlM2UyNWQ5MTJmYS4u
NWZhNDJlMTUwOWM3M2NiYzBlMDRiMzQxMzMyOTRlOWUzMzE4YzRiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bXBvcnQgIlJlbmRlckltYWdlLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJVUkwuaCIK
KyNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFz
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJOU0F0
dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKQEAgLTQ4Miw4ICs0ODMsOSBAQCBzdGF0aWMgU3RyaW5n
IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
aWYgKGxvd2VyY2FzZWRUeXBlID09ICJ0ZXh0L3J0ZiIgfHwgbG93ZXJjYXNlZFR5cGUgPT0gInB1
YmxpYy5ydGYiIHx8IGxvd2VyY2FzZWRUeXBlID09ICJjb20uYXBwbGUudHJhZGl0aW9uYWwtbWFj
LXBsYWluLXRleHQiKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoYXV0byB1
dGlUeXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtV
VFRhZ0NsYXNzTUlNRVR5cGUsIGxvd2VyY2FzZWRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IE5VTEwpKSkgewotICAgICAgICBpZiAoYXV0byBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQ
cmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5
cGUpKSkKKyAgICBhdXRvIHV0aVR5cGUgPSBVVElGcm9tTUlNRVR5cGUobG93ZXJjYXNlZFR5cGUp
OworICAgIGlmICghdXRpVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGJUeXBl
ID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUpKSkKICAgICAgICAgICAg
IHJldHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KaW5k
ZXggZjZjYWEyOWYwZTcxMDJhMDE2NDBiMjM1ODE1ZGQ5ZWViN2U4NWZkNC4uNTE3ODc1ZDIwYTBh
ODM0NWNiNDkxZGZkMjJjNGM2OGZiMzM4YzQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpA
QCAtNTcsNyArNTcsOSBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNw
b25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAgICAgICAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVSTENvcHlQYXRo
RXh0ZW5zaW9uKHVybCkpOwogICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKICAgICAg
ICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlw
ZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVu
c2lvbiwgZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgIHF1
aWNrTG9va01JTUVUeXBlID0gbWltZVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghTUlNRVR5cGUuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBNSU1FVHlwZS5jcmVhdGVD
RlN0cmluZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMu
aAppbmRleCBlMTVmNjliNzFiYTRhOGRhMDc0ODUwYTYzYzI4ZTBiMzljMmM3NzMwLi43OGI4NzU2
M2FmZjk0YjE2NzZmMjQxYjRjOTJhYzg0ZmU3NDYxOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaApAQCAtMjYsMTIgKzI2LDE0
IEBACiAjaWZuZGVmIFVUSVV0aWxpdGllc19oCiAjZGVmaW5lIFVUSVV0aWxpdGllc19oCiAKKyNp
bXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLVJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJl
ZShDRlN0cmluZ1JlZiB1dGkpOwotUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVElGcm9tTUlNRVR5
cGUoQ0ZTdHJpbmdSZWYgbWltZSk7Ci1ib29sIGlzRGVjbGFyZWRVVEkoQ0ZTdHJpbmdSZWYgVVRJ
KTsKK1N0cmluZyBNSU1FVHlwZUZyb21VVEkoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgTUlNRVR5
cGVGcm9tVVRJVHJlZShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBVVElGcm9tTUlNRVR5cGUoY29u
c3QgU3RyaW5nJik7Citib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5nJik7CiB9CiAKICNl
bmRpZiAvLyBVVElVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCmluZGV4IDNhNDJhY2Y2Y2UzMmM3OGEwZmM4ODVi
NTc4ODBmODQ3Y2IxYjVhNTkuLmQ0ZTgyODI0NGNhZWZmOWY1YjlhMGI4MThlZjI1OTMxZDM1NzQ4
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElV
dGlsaXRpZXMubW0KQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJVVElVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMzIsNTAgKzM0LDY2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1l
VHlwZUZyb21VVElUcmVlKENGU3RyaW5nUmVmIHV0aSkKK1N0cmluZyBNSU1FVHlwZUZyb21VVEko
Y29uc3QgU3RyaW5nJiB1dGkpCiB7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZl
cnJlZFRhZ1dpdGhDbGFzcyh1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NN
SU1FVHlwZSkpLmdldCgpOworfQorCitTdHJpbmcgTUlNRVR5cGVGcm9tVVRJVHJlZShjb25zdCBT
dHJpbmcmIHV0aSkKK3sKKyAgICBhdXRvIHV0aUNGID0gdXRpLmNyZWF0ZUNGU3RyaW5nKCk7CisK
ICAgICAvLyBDaGVjayBpZiB0aGlzIFVUSSBoYXMgYSBNSU1FIHR5cGUuCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aUNGLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CiAgICAgaWYgKG1pbWVUeXBlKQog
ICAgICAgICByZXR1cm4gbWltZVR5cGUuZ2V0KCk7CiAKICAgICAvLyBJZiBub3QsIHdhbGsgdGhl
IGFuY2VzdG9yeSBvZiB0aGlzIFVUSSB2aWEgaXRzICJDb25mb3Jtc1RvIiB0YWdzIGFuZCByZXR1
cm4gdGhlIGZpcnN0IE1JTUUgdHlwZSB3ZSBmaW5kLgotICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IGRlY2wgPSBhZG9wdENGKFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1dGkpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZWNsID0gYWRvcHRDRihVVFR5cGVDb3B5RGVjbGFy
YXRpb24odXRpQ0YuZ2V0KCkpKTsKICAgICBpZiAoIWRlY2wpCi0gICAgICAgIHJldHVybiBuaWw7
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkZWNsLmdldCgpLCBrVVRUeXBlQ29uZm9ybXNUb0tleSk7CiAgICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIENGVHlwZUlEIHR5cGVJRCA9IENGR2V0VHlwZUlEKHZhbHVlKTsKIAogICAgIGlmICh0eXBl
SUQgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIG1pbWVUeXBlRnJvbVVU
SVRyZWUoKENGU3RyaW5nUmVmKXZhbHVlKTsKKyAgICAgICAgcmV0dXJuIE1JTUVUeXBlRnJvbVVU
SVRyZWUoKENGU3RyaW5nUmVmKXZhbHVlKTsKIAogICAgIGlmICh0eXBlSUQgPT0gQ0ZBcnJheUdl
dFR5cGVJRCgpKSB7CiAgICAgICAgIENGQXJyYXlSZWYgbmV3VHlwZXMgPSAoQ0ZBcnJheVJlZil2
YWx1ZTsKICAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChuZXdUeXBlcyk7
CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
Q0ZUeXBlUmVmIG9iamVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOwot
ICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob2JqZWN0KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChuZXdUeXBlcywgaSk7CisgICAgICAgICAgICBpZiAoQ0ZHZXRU
eXBlSUQob2JqZWN0KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0g
bWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdSZWYpb2JqZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybiBtaW1lVHlwZTsKKyAgICAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRnJv
bVVUSVRyZWUoKENGU3RyaW5nUmVmKW9iamVjdCk7CisgICAgICAgICAgICBpZiAoIW1pbWVUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGU7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBVVElGcm9tTUlNRVR5cGUoQ0ZTdHJpbmdSZWYgbWltZSkKK3N0
cnVjdCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTdHJp
bmcsIFN0cmluZz4geworcHVibGljOgorICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nKGFkb3B0
Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVU
eXBlLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpLmdldCgpKTsKKyAgICB9Cit9Owor
CitTdHJpbmcgVVRJRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZSwgMCkpOwotICAgIHJl
dHVybiB1dGk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxTdHJpbmcs
IFN0cmluZywgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5Pj4gY2FjaGU7CisgICAgcmV0
dXJuIGNhY2hlLmdldCgpLmdldChtaW1lVHlwZSk7CiB9CiAKLWJvb2wgaXNEZWNsYXJlZFVUSShD
RlN0cmluZ1JlZiBVVEkpCitib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5nJiBVVEkpCiB7
Ci0gICAgcmV0dXJuIFVUVHlwZUlzRGVjbGFyZWQoVVRJKTsKKyAgICByZXR1cm4gVVRUeXBlSXNE
ZWNsYXJlZChVVEkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQppbmRleCBmMWNjYTAyOTFhY2MwOGQ1NzI5YmUxNzc4Y2M1YTE2M2QyZTM0ZGY2Li5jY2Q5
MDM2NTVjZWYwY2ExMWE5NjJhYWFiMmJjNmEwMDE4NmFmNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CkBAIC0zMDMsMTMgKzMwMywxNSBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAgICAgICAg
ICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBtdXRhYmxlRXh0ZW5zaW9uID0gQ0ZTdHJpbmdDcmVh
dGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24sIE5VTEwp
OwogICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGFkb3B0Q0YobXV0YWJsZUV4dGVuc2lvbik7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRW
YWx1ZShleHRlbnNpb25NYXAsIGV4dGVuc2lvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0
ZW5zaW9uLmdldCgpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXJl
c3VsdCkgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgR2F0ZWtlZXBlci1iYXNlZCBt
YXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0cnkgdG8gZmlndXJlIG91dCB3aGF0
IGl0IHNob3VsZCBiZSBieQogICAgICAgICAgICAgICAgICAgICAvLyBsb29raW5nIHVwIHRoZSBm
aWxlIGV4dGVuc2lvbiBpbiB0aGUgVVRJIG1hcHMuCiAgICAgICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQo
KSwgMCkpOwotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtaW1lVHlwZUZyb21VVElUcmVl
KHV0aS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBNSU1FVHlwZSA9IE1JTUVU
eXBlRnJvbVVUSVRyZWUodXRpLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFNSU1F
VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBNSU1FVHlw
ZS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4
IGI4Yzk1Y2Y4MzE2YTFkYjllNmQ3NWFiNjNhMWNkZmE0NTZkNjZjZWIuLmQzNGMxOTUzODA5NmJj
MTk2YjcxNWVkNDA0ZWVmZTIwNTk1YzI0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0KQEAgLTE2MTYsMTQgKzE2MTYsMTMgQEAgc3RhdGljIFJldGFpblB0
cjxVSUltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRh
Y2htZW50LAogCiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7CiAgICAgaWYgKCFhdHRhY2htZW50VHlwZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBhdHRhY2htZW50VHlwZUNGID0gYXR0YWNobWVudFR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVEk7
Ci0gICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpKQotICAg
ICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGVDRjsKKyAgICAgICAgU3RyaW5nIFVUSTsKKyAg
ICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAgVVRJ
ID0gYXR0YWNobWVudFR5cGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFVUSSA9IFVUSUZy
b21NSU1FVHlwZShhdHRhY2htZW50VHlwZUNGLmdldCgpKTsKKyAgICAgICAgICAgIFVUSSA9IFVU
SUZyb21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7CiAKLSAgICAgICAgW2RvY3VtZW50SW50ZXJh
Y3Rpb25Db250cm9sbGVyIHNldFVUSTpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihVVEkuZ2V0KCkp
XTsKKyAgICAgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNldFVUSTpzdGF0aWNf
Y2FzdDxOU1N0cmluZyAqPihVVEkpXTsKICAgICB9CiAKICAgICBOU0FycmF5ICppY29ucyA9IFtk
b2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBpY29uc107CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNWViY2U4MDNlOWQ5ZDcwZmE0MjkxYzNmMmIx
MzdkOWNjZWI3YmIwZC4uYWU1MzRmM2UwYWFmMDVhY2I2OTY3Y2NlY2QyNWQyN2Y4MGVkMjZmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjQyMCwx
NCArMjQyMCwxMyBAQCBzdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0
IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgICAgICAgICBpZiAoYXV0byBpY29u
ID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRpcmVjdG9yeSIpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBpY29uOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBh
dHRhY2htZW50VHlwZUNGID0gYXR0YWNobWVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gVVRJOwotICAgICAgICAgICAgaWYgKGlzRGVj
bGFyZWRVVEkoYXR0YWNobWVudFR5cGVDRi5nZXQoKSkpCi0gICAgICAgICAgICAgICAgVVRJID0g
YXR0YWNobWVudFR5cGVDRjsKKyAgICAgICAgICAgIFN0cmluZyBVVEk7CisgICAgICAgICAgICBp
ZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICAgICAgVVRJID0g
YXR0YWNobWVudFR5cGU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVVRJID0g
VVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAg
IFVUSSA9IFVUSUZyb21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7CiAKLSAgICAgICAgICAgIGlm
IChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSS5nZXQoKSkpCisgICAgICAg
ICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBpY29uOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318276</attachid>
            <date>2017-08-16 11:37:55 -0700</date>
            <delta_ts>2017-08-16 13:49:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175618-20170816113754.patch</filename>
            <type>text/plain</type>
            <size>23861</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZThjNmUyMTlkZThm
YWZiNTdkMDVkZjdkZDI0MGVjZGFiNTRmMy4uNGYzM2VhYjUxNDUzN2MzMmM2Yjc5ODY0N2NmZjBh
ZmQ3NTM2Yzg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE3LTA4LTE1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIDItMyUgb2YgbWFp
biB0aHJlYWQgdGltZSB1bmRlciBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
IG9uIHd1bmRlcmdyb3VuZCBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTYxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSBwZXJmIHdpbi4KKworICAgICAgICBVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnIGlzIGZhaXJseSBleHBlbnNpdmUsIGFu
ZCBpcyBjYWxsZWQKKyAgICAgICAgdW5kZXIgZXZlcnkgdG9EYXRhVVJMLCB3aGljaCB0aGUgV3Vu
ZGVyZ3JvdW5kIHd1bmRlcm1hcCBkb2VzIGEgL2xvdC8uCisKKyAgICAgICAgS2VlcCBhIDE2LWl0
ZW0gTFJVIGNhY2hlIG9mIE1JTUVUeXBlLT5VVEkgbWFwcGluZ3MuCisKKyAgICAgICAgQWxzbywg
bWFrZSBvdGhlciBjYWxsZXJzIG9mIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JU
YWcgdXNlCisgICAgICAgIHRoZSBVVElVdGlsaXRpZXMgdmVyc2lvbiBzbyB0aGV5IGNhbiBzaGFy
ZSBpbiB0aGUgY2FjaGluZy4KKworICAgICAgICBBbHNvLCBhcyBhIGRyaXZlLWJ5LCBhZGQgYW5k
IG1ha2Ugb3RoZXIgY2FsbGVycyB1c2UgbWltZVR5cGVGcm9tVVRJIHRvbywKKyAgICAgICAgYW5k
IG1ha2UgdGhlIFVUSVV0aWxpdGllcyBvcGVyYXRlIG9uIFN0cmluZ3MgZm9yIGEgc2xpZ2h0bHkg
bW9yZSBXZWJDb3JlLXkgZmVlbC4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmlsZVR5cGVzU2V0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICBBZG9wdCBuZXdseS1hZGRlZCBNSU1F
VHlwZUZyb21VVEkoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNmRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUp
OiBEZWxldGVkLgorICAgICAgICBBZG9wdCBVVElGcm9tTUlNRVR5cGUsIGFuZCByZW5hbWUgdGhl
IGxvY2FsIGhlbHBlciB0aGF0IGRvZXMgc29tZXRoaW5nCisgICAgICAgIGRpZmZlcmVudCAoYSBz
bWFsbCBzdGF0aWMgbWFwKSBvbiBpT1MgYW5kIFdpbmRvd3MgdG8gbm90IGhhdmUgYW4gb3Zlcmxh
cHBpbmcgbmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjp1dGlUeXBlRnJvbUNvY29hVHlwZSk6CisgICAgICAgIEFkb3B0IFVUSUZyb21N
SU1FVHlwZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RS
ZXByZXNlbnRhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKToKKyAg
ICAgICAgQWRvcHQgaXNEZWNsYXJlZFVUSSBhbmQgVVRJRnJvbU1JTUVUeXBlKCkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNv
cmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNw
b25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgIERlYWwg
d2l0aCB0aGUgZmFjdCB0aGF0IFVUSSB1dGlsaXRpZXMgZGVhbCBpbiBTdHJpbmdzIG5vdy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlRnJvbVVUSSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGRvZXNuJ3QgY3Jhd2wgdXAg
dGhlIFVUSSB0cmVlIGlmIHRoZSBmaXJzdCBjb252ZXJzaW9uIGZhaWxzLAorICAgICAgICB3aGlj
aCBpcyB3aGF0IG1vc3Qgb2YgdGhlIGV4aXN0aW5nIGNvZGUgZG9lcy4gSXQncyBwb3NzaWJsZSB3
ZSB3YW50IHRvCisgICAgICAgIHVzZSBNSU1FVHlwZUZyb21VVElUcmVlJ3MgbG9naWMgZXZlcnl3
aGVyZSwgYnV0IEkgZGlkbid0IHdhbnQgdG8gY2hhbmdlCisgICAgICAgIHRoYXQgaW4gdGhpcyBw
YXRjaC4KKworICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVGcm9tVVRJVHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjppc0RlY2xhcmVkVVRJKToKKyAgICAgICAgVGFrZSBhbmQgcmV0dXJuIHN0cmlu
Z3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5OjpjcmVh
dGVWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUpOgorICAg
ICAgICBBZGQgdGhlIGFmb3JlbWVudGlvbmVkIGNhY2hlLgorCiAyMDE3LTA4LTE1ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2FjaGUgQVBJXSBFbnN1cmUg
UmVzb3VyY2VSZXNwb25zZSBpcyBub3QgbnVsbCB3aGVuIHJlZGlyZWN0ZWQvdGFpbnRpbmcvdHlw
ZSBmaWVsZHMgYXJlIHNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmlu
ZGV4IDZlZTRmNzExMzZjZWYwOTBmZjAyZjk5YmZhNmNmZjEyMjRjMmRkODkuLmRjNmU3MTU1OTAw
NjAxZmJhOTZmNDljMWUwMGJkYzA0ZjhmMDM5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNpbXBvcnQgIlN0eWxlUHJvcGVydGll
cy5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVHlwaW5nQ29tbWFuZC5oIgorI2ltcG9y
dCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXQUtBcHBLaXRTdHVicy5oIgogI2ltcG9ydCAi
bWFya3VwLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CkBAIC0zMzIsOSArMzMzLDkgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW4KICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1R5cGUgPSB0eXBlLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBmaWxlbmFtZUV4dGVuc2lvbiA9IGFkb3B0TlMoKE5TU3Ry
aW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyhzdHJpbmdUeXBlLmdldCgpLCBr
VVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CiAgICAgTlNTdHJpbmcgKnJlbGF0aXZlVVJM
UGFydCA9IFtAImltYWdlIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZUV4dGVuc2lv
bi5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtaW1lVHlwZSA9IGFkb3B0TlMoKE5T
U3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyhzdHJpbmdUeXBlLmdldCgp
LCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVG
cm9tVVRJKHR5cGUpOwogCi0gICAgYWRkRnJhZ21lbnQoZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJh
Z21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpLCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZl
VVJMUGFydCksIG1pbWVUeXBlLmdldCgpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSkp
OworICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VS
ZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChyZWxhdGl2ZVVSTFBhcnQpLCBtaW1l
VHlwZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpKTsKICAgICByZXR1cm4gZnJhZ21l
bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAwMWM3ZTBmNTk2
ODViMTE4NjU1MGQ3MjJhZjU5NTljYzE0ODE5NWUwLi41ZTI2YmYyZmJmNjY0NzIwMzRmODljYTlj
YWFkNDNjYjhmZmZjNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0y
MTEsNyArMjExLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQobG9uZyBjaGFu
Z2VDb3VudCk7CiAKICAgICBzdGF0aWMgTlNBcnJheSAqc3VwcG9ydGVkV2ViQ29udGVudFBhc3Rl
Ym9hcmRUeXBlcygpOwotICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZShjb25zdCBO
U1N0cmluZyAqbWltZVR5cGUpOworICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZShO
U1N0cmluZyAqbWltZVR5cGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRl
eCA1ODgyOWEwZTliNTM3Y2IyNDc0Yjc0OGY5MWQ2NzZiMTVlYmEyOTFjLi4yN2M0OTIyMDU2YjRi
MGE4MmM5NjVlMmE5YzU4MDlkYTMxNzk3Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xMTksNyArMTE5LDcgQEAgdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdAogICAgIH0KIAogICAgIGlmIChBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBbbV9hdlJlcXVlc3Qu
Z2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0pIHsKLSAgICAgICAgU3RyaW5nIHV0aSA9
IFVUSUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpLmdldCgpOworICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3BvbnNl
Lm1pbWVUeXBlKCkpOwogCiAgICAgICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50VHlwZTp1dGld
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCmluZGV4IDcxZWI4M2RmYWE2MDY4N2ZmNmVhZDhmZmI0NmIyMjdlNDhjYjQ0
ZDkuLmQyNGMxMGYxNmE2ODZmMWE0NjAwODhlYjE2NDMwNGYyYmNkYjQwM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJVVElVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjZW5kaWYKIApAQCAtNDQ3LDEwICs0NDgsMTEgQEAg
c3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKICAgICByZXR1cm4ga1VUVHlwZUpQ
RUc7CiB9CiAgICAgCi1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Cisg
ICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IGlPUyB1c2UgdGhlIENvcmVTZXJ2aWNlcyB2ZXJzaW9u
PwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVm
ZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKKyAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVU
eXBlKS5jcmVhdGVDRlN0cmluZygpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OyAvLyBJdCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKQEAgLTUzMiw3ICs1
MzQsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbAogICAgIGlmIChjb250ZXh0KCkuaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKLSAgICBhdXRvIHV0
aSA9IHV0aUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1h
Z2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CkBAIC01NzQsNyArNTc2LDcgQEAgc3RhdGljIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNmRGF0YShjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHkKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGF1dG8gdXRpID0gdXRp
RnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZl
ck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAogICAgIENHSW1hZ2VBbHBo
YUluZm8gZGF0YUFscGhhSW5mbyA9IGtDR0ltYWdlQWxwaGFMYXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KaW5k
ZXggYTY1ZmJiNzQ4Y2U0YjgxNjgzODU3ZGQ3NzM2NTRlYWY5MWE1NzAxMy4uZGYyOTdkZWU0MDVk
NzA5ZjA3ZTZmMmE1MGNhYzE3YjBiOWVhZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkltYWdlU291cmNlQ0cuaCIKIAor
I2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHV0aSkKIHsKLSAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0
aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSku
Z2V0KCk7CisgICAgcmV0dXJuIE1JTUVUeXBlRnJvbVVUSSh1dGkpOwogfQogCiBTdHJpbmcgcHJl
ZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGFkZTM2YzhlMDI1Yjg5N2E4MGViMzgwNmI3
MjdiNjE1NTk1Zjk5MGUuLmIzMmM1M2U3ZWViZWYwMjZmYjNlNTc3MWNjYTg3MGIyODBiMmEzY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBv
cnQgIlFUS2l0U1BJLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5oIgogI2ltcG9ydCAiVVJM
LmgiCisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KQEAgLTEyNDMsMTEgKzEyNDQsMTEgQEAgc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGNyZWF0ZUZpbGVUeXBlc1NldChOU0FycmF5
ICpmaWwKICAgICAgICAgYXV0byB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElk
ZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0LCBOVUxMKSk7
CiAgICAgICAgIGlmICghdXRpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8g
bWltZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGkuZ2V0KCks
IGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICAgICAgaWYgKHNob3VsZFJlamVjdE1JTUVUeXBl
KG1pbWUuZ2V0KCkpKQorICAgICAgICBhdXRvIG1pbWUgPSBNSU1FVHlwZUZyb21VVEkodXRpLmdl
dCgpKTsKKyAgICAgICAgaWYgKHNob3VsZFJlamVjdE1JTUVUeXBlKG1pbWUpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmIChtaW1lKQotICAgICAgICAgICAgc2V0LmFkZChtaW1l
LmdldCgpKTsKKyAgICAgICAgaWYgKCFtaW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHNldC5h
ZGQobWltZSk7CiAKICAgICAgICAgLy8gLW1vdmllRmlsZVR5cGVzOiByZXR1cm5zIGJvdGggZmls
ZSBleHRlbnNpb25zIGFuZCBPU1R5cGVzLiBUaGUgbGF0ZXIgYXJlIHN1cnJvdW5kZWQgYnkgc2lu
Z2xlCiAgICAgICAgIC8vIHF1b3RlcywgZWcuICdNb29WJywgc28gZG9uJ3QgYm90aGVyIGxvb2tp
bmcgYXQgdGhvc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IDU3YWM0NDdjYmMzYmFiMjQ1NDE0ZjY1MGMzOWE4ZTllYTU4ZGIyOTkuLjA0ZmI2
ZDM2ZGNiN2UxNmE2OWE2NTg4ZmFkYmFhZWY1NGJkYTExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0
ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlVSTC5oIgorI2lt
cG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRy
YXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01v
YmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTQyLDkgKzE0Myw5IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb250
ZW50LCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAotU3RyaW5nIFBhc3RlYm9hcmQ6OnJlc291cmNl
TUlNRVR5cGUoY29uc3QgTlNTdHJpbmcgKm1pbWVUeXBlKQorU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
c291cmNlTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWVUeXBlKQogewotICAgIHJldHVybiBTdHJpbmco
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
TUlNRVR5cGUsIChDRlN0cmluZ1JlZiltaW1lVHlwZSwgTlVMTCkpLmdldCgpKTsKKyAgICByZXR1
cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGM1
ZWU1YmEzMTA3NGFmY2IzMzlmZDRlOTg4MWI2NzhmZDgxYmExNDguLjFlZDkyMjliMjlhNWExNDZh
OGJhMTUyNTYwYjNmNDQyNGU0NjRlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMjkzLDEyICsyOTMsMTIgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGUKICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRh
OmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAg
aWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAg
ICBpZiAoIVVUVHlwZUlzRGVjbGFyZWQodXRpT3JNSU1FVHlwZS5nZXQoKSkpCi0gICAgICAgICAg
ICB1dGlPck1JTUVUeXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIHV0aU9yTUlNRVR5cGUuZ2V0KCksIG5pbCkpOwor
ICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZTsKKyAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQorICAgICAg
ICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAog
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpOwotICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRh
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZS5nZXQoKV07CisgICAgICAg
IFtpdGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBzZXRFc3RpbWF0
ZWREaXNwbGF5ZWRTaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbaXRl
bXNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5h
bWVdOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KaW5kZXggMThkZmFiYzg3ZDQ1NGY3ZDU4YTAwNzFmYWI5MzhlM2UyNWQ5MTJmYS4uNWZhNDJl
MTUwOWM3M2NiYzBlMDRiMzQxMzMyOTRlOWUzMzE4YzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQg
IlJlbmRlckltYWdlLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJVUkwuaCIKKyNpbXBv
cnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAj
aW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMuaCIKQEAgLTQ4Miw4ICs0ODMsOSBAQCBzdGF0aWMgU3RyaW5nIGNvY29h
VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgaWYgKGxv
d2VyY2FzZWRUeXBlID09ICJ0ZXh0L3J0ZiIgfHwgbG93ZXJjYXNlZFR5cGUgPT0gInB1YmxpYy5y
dGYiIHx8IGxvd2VyY2FzZWRUeXBlID09ICJjb20uYXBwbGUudHJhZGl0aW9uYWwtbWFjLXBsYWlu
LXRleHQiKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoYXV0byB1dGlUeXBl
ID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTUlNRVR5cGUsIGxvd2VyY2FzZWRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwp
KSkgewotICAgICAgICBpZiAoYXV0byBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJy
ZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUpKSkK
KyAgICBhdXRvIHV0aVR5cGUgPSBVVElGcm9tTUlNRVR5cGUobG93ZXJjYXNlZFR5cGUpOworICAg
IGlmICghdXRpVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGJUeXBlID0gYWRv
cHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUpKSkKICAgICAgICAgICAgIHJldHVy
biBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KaW5kZXggZjZj
YWEyOWYwZTcxMDJhMDE2NDBiMjM1ODE1ZGQ5ZWViN2U4NWZkNC4uNTE3ODc1ZDIwYTBhODM0NWNi
NDkxZGZkMjJjNGM2OGZiMzM4YzQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpAQCAtNTcs
NyArNTcsOSBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJl
ZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVSTENvcHlQYXRoRXh0ZW5z
aW9uKHVybCkpOwogICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKICAgICAgICAgICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwg
ZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgIHF1aWNrTG9v
a01JTUVUeXBlID0gbWltZVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgIGlmICghTUlNRVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBNSU1FVHlwZS5jcmVhdGVDRlN0cmlu
ZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAppbmRl
eCBlMTVmNjliNzFiYTRhOGRhMDc0ODUwYTYzYzI4ZTBiMzljMmM3NzMwLi43OGI4NzU2M2FmZjk0
YjE2NzZmMjQxYjRjOTJhYzg0ZmU3NDYxOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaApAQCAtMjYsMTIgKzI2LDE0IEBACiAj
aWZuZGVmIFVUSVV0aWxpdGllc19oCiAjZGVmaW5lIFVUSVV0aWxpdGllc19oCiAKKyNpbXBvcnQg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLVJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0
cmluZ1JlZiB1dGkpOwotUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVElGcm9tTUlNRVR5cGUoQ0ZT
dHJpbmdSZWYgbWltZSk7Ci1ib29sIGlzRGVjbGFyZWRVVEkoQ0ZTdHJpbmdSZWYgVVRJKTsKK1N0
cmluZyBNSU1FVHlwZUZyb21VVEkoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgTUlNRVR5cGVGcm9t
VVRJVHJlZShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJik7Citib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5nJik7CiB9CiAKICNlbmRpZiAv
LyBVVElVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvVVRJVXRpbGl0aWVzLm1tCmluZGV4IDNhNDJhY2Y2Y2UzMmM3OGEwZmM4ODViNTc4ODBm
ODQ3Y2IxYjVhNTkuLjhhYzY1N2E4YTllNjQ1YzY4ZDNiZmYyZjQwYTViMDZmNGQ3MmY5ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGll
cy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRp
ZXMubW0KQEAgLTI1LDYgKzI1LDkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJV
VElVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYv
VGlueUxSVUNhY2hlLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vydmlj
ZXMuaD4KQEAgLTMyLDUwICszNSw2NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpCitT
dHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNvbnN0IFN0cmluZyYgdXRpKQogeworICAgIHJldHVybiBh
ZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKS5nZXQoKTsKK30KKworU3RyaW5nIE1JTUVU
eXBlRnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJiB1dGkpCit7CisgICAgYXV0byB1dGlDRiA9IHV0
aS5jcmVhdGVDRlN0cmluZygpOworCiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBVVEkgaGFzIGEgTUlN
RSB0eXBlLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9wdENGKFVU
VHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29w
eVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlDRi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkp
OwogICAgIGlmIChtaW1lVHlwZSkKICAgICAgICAgcmV0dXJuIG1pbWVUeXBlLmdldCgpOwogCiAg
ICAgLy8gSWYgbm90LCB3YWxrIHRoZSBhbmNlc3Rvcnkgb2YgdGhpcyBVVEkgdmlhIGl0cyAiQ29u
Zm9ybXNUbyIgdGFncyBhbmQgcmV0dXJuIHRoZSBmaXJzdCBNSU1FIHR5cGUgd2UgZmluZC4KLSAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZWNsID0gYWRvcHRDRihVVFR5cGVDb3B5RGVj
bGFyYXRpb24odXRpKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbCA9IGFk
b3B0Q0YoVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aUNGLmdldCgpKSk7CiAgICAgaWYgKCFkZWNs
KQotICAgICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgQ0ZU
eXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVjbC5nZXQoKSwga1VUVHlwZUNv
bmZvcm1zVG9LZXkpOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7CisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBDRlR5cGVJRCB0eXBlSUQgPSBDRkdldFR5cGVJRCh2
YWx1ZSk7CiAKICAgICBpZiAodHlwZUlEID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAg
IHJldHVybiBtaW1lVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7CisgICAgICAg
IHJldHVybiBNSU1FVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7CiAKICAgICBp
ZiAodHlwZUlEID09IENGQXJyYXlHZXRUeXBlSUQoKSkgewogICAgICAgICBDRkFycmF5UmVmIG5l
d1R5cGVzID0gKENGQXJyYXlSZWYpdmFsdWU7CiAgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFy
cmF5R2V0Q291bnQobmV3VHlwZXMpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7Ci0gICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFsdWVB
dEluZGV4KG5ld1R5cGVzLCBpKTsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKG9iamVjdCkgIT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
Q0ZUeXBlUmVmIG9iamVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOwor
ICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKG9iamVjdCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBtaW1lVHlwZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKW9i
amVjdCkpCi0gICAgICAgICAgICByZXR1cm4gbWltZVR5cGU7CisgICAgICAgICAgICBTdHJpbmcg
bWltZVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZilvYmplY3QpOworICAg
ICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1pbWVUeXBlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLVJldGFpblB0cjxDRlN0cmluZ1JlZj4gVVRJRnJvbU1JTUVUeXBl
KENGU3RyaW5nUmVmIG1pbWUpCitzdHJ1Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3kgOiBU
aW55TFJVQ2FjaGVQb2xpY3k8U3RyaW5nLCBTdHJpbmc+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
U3RyaW5nIGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyhhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJG
b3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAp
KS5nZXQoKSk7CisgICAgfQorfTsKKworU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRD
RihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5
cGUsIG1pbWUsIDApKTsKLSAgICByZXR1cm4gdXRpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxTdHJpbmcsIFN0cmlu
ZywgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5Pj4gY2FjaGU7CisgICAgcmV0dXJuIGNh
Y2hlLmdldCgpLmdldChtaW1lVHlwZSk7CiB9CiAKLWJvb2wgaXNEZWNsYXJlZFVUSShDRlN0cmlu
Z1JlZiBVVEkpCitib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5nJiBVVEkpCiB7Ci0gICAg
cmV0dXJuIFVUVHlwZUlzRGVjbGFyZWQoVVRJKTsKKyAgICByZXR1cm4gVVRUeXBlSXNEZWNsYXJl
ZChVVEkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpp
bmRleCBmMWNjYTAyOTFhY2MwOGQ1NzI5YmUxNzc4Y2M1YTE2M2QyZTM0ZGY2Li5jY2Q5MDM2NTVj
ZWYwY2ExMWE5NjJhYWFiMmJjNmEwMDE4NmFmNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC0z
MDMsMTMgKzMwMywxNSBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNw
b25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAgICAgICAgICAgICAg
IENGTXV0YWJsZVN0cmluZ1JlZiBtdXRhYmxlRXh0ZW5zaW9uID0gQ0ZTdHJpbmdDcmVhdGVNdXRh
YmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24sIE5VTEwpOwogICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGFkb3B0Q0YobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShl
eHRlbnNpb25NYXAsIGV4dGVuc2lvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
KENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5zaW9u
LmdldCgpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgR2F0ZWtlZXBlci1iYXNlZCBtYXAgZG9l
c24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0cnkgdG8gZmlndXJlIG91dCB3aGF0IGl0IHNo
b3VsZCBiZSBieQogICAgICAgICAgICAgICAgICAgICAvLyBsb29raW5nIHVwIHRoZSBmaWxlIGV4
dGVuc2lvbiBpbiB0aGUgVVRJIG1hcHMuCiAgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQoKSwgMCkp
OwotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtaW1lVHlwZUZyb21VVElUcmVlKHV0aS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBNSU1FVHlwZSA9IE1JTUVUeXBlRnJv
bVVUSVRyZWUodXRpLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFNSU1FVHlwZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBNSU1FVHlwZS5jcmVh
dGVDRlN0cmluZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGI4Yzk1
Y2Y4MzE2YTFkYjllNmQ3NWFiNjNhMWNkZmE0NTZkNjZjZWIuLmQzNGMxOTUzODA5NmJjMTk2Yjcx
NWVkNDA0ZWVmZTIwNTk1YzI0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KQEAgLTE2MTYsMTQgKzE2MTYsMTMgQEAgc3RhdGljIFJldGFpblB0cjxVSUlt
YWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50
LAogCiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxl
bWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7CiAgICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgYXV0byBhdHRhY2htZW50VHlwZUNGID0gYXR0YWNobWVudFR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVEk7Ci0gICAg
ICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpKQotICAgICAgICAg
ICAgVVRJID0gYXR0YWNobWVudFR5cGVDRjsKKyAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAg
aWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAgVVRJID0gYXR0
YWNobWVudFR5cGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFVUSSA9IFVUSUZyb21NSU1F
VHlwZShhdHRhY2htZW50VHlwZUNGLmdldCgpKTsKKyAgICAgICAgICAgIFVUSSA9IFVUSUZyb21N
SU1FVHlwZShhdHRhY2htZW50VHlwZSk7CiAKLSAgICAgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25D
b250cm9sbGVyIHNldFVUSTpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihVVEkuZ2V0KCkpXTsKKyAg
ICAgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNldFVUSTpzdGF0aWNfY2FzdDxO
U1N0cmluZyAqPihVVEkpXTsKICAgICB9CiAKICAgICBOU0FycmF5ICppY29ucyA9IFtkb2N1bWVu
dEludGVyYWN0aW9uQ29udHJvbGxlciBpY29uc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNWViY2U4MDNlOWQ5ZDcwZmE0MjkxYzNmMmIxMzdkOWNj
ZWI3YmIwZC4uYWU1MzRmM2UwYWFmMDVhY2I2OTY3Y2NlY2QyNWQyN2Y4MGVkMjZmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjQyMCwxNCArMjQy
MCwxMyBAQCBzdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNv
bjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRpcmVjdG9yeSIpKQogICAgICAgICAgICAgICAg
IHJldHVybiBpY29uOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBhdHRhY2ht
ZW50VHlwZUNGID0gYXR0YWNobWVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gVVRJOwotICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRV
VEkoYXR0YWNobWVudFR5cGVDRi5nZXQoKSkpCi0gICAgICAgICAgICAgICAgVVRJID0gYXR0YWNo
bWVudFR5cGVDRjsKKyAgICAgICAgICAgIFN0cmluZyBVVEk7CisgICAgICAgICAgICBpZiAoaXNE
ZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICAgICAgVVRJID0gYXR0YWNo
bWVudFR5cGU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVVRJID0gVVRJRnJv
bU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAgIFVUSSA9
IFVUSUZyb21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7CiAKLSAgICAgICAgICAgIGlmIChhdXRv
IGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSS5nZXQoKSkpCisgICAgICAgICAgICBp
ZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBpY29uOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>