<?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>144820</bug_id>
          
          <creation_ts>2015-05-08 17:06:37 -0700</creation_ts>
          <short_desc>[Mac] Share cookie storage between UI process and secondary processes</short_desc>
          <delta_ts>2018-05-22 15:53:09 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=185831</see_also>
          <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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1093358</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-08 17:06:37 -0700</bug_when>
    <thetext>When UI process uses a custom cookie storage location, WebProcess and NetworkProcess don&apos;t pick it up.

rdar://problem/20734401</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093933</commentid>
    <comment_count>1</comment_count>
      <attachid>252904</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-11 16:10:31 -0700</bug_when>
    <thetext>Created attachment 252904
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093934</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 16:12:59 -0700</bug_when>
    <thetext>Attachment 252904 did not pass style-queue:


ERROR: Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp:114:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Shared/WebProcessCreationParameters.cpp:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/CookieJarMac.mm:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093938</commentid>
    <comment_count>3</comment_count>
      <attachid>252905</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-11 16:27:11 -0700</bug_when>
    <thetext>Created attachment 252905
proposed patch

With iOS build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093940</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-11 16:29:35 -0700</bug_when>
    <thetext>Attachment 252905 did not pass style-queue:


ERROR: Source/WebCore/platform/network/mac/CookieJarMac.mm:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094192</commentid>
    <comment_count>5</comment_count>
      <attachid>252971</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-12 10:27:05 -0700</bug_when>
    <thetext>Created attachment 252971
more iOS build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094193</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-12 10:28:53 -0700</bug_when>
    <thetext>Attachment 252971 did not pass style-queue:


ERROR: Source/WebCore/platform/network/mac/CookieJarMac.mm:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094194</commentid>
    <comment_count>7</comment_count>
      <attachid>252971</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-12 10:31:14 -0700</bug_when>
    <thetext>Comment on attachment 252971
more iOS build fix

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

&gt; Source/WebKit2/Shared/WebProcessCreationParameters.cpp:186
&gt; +    if (!decoder.decode(result.cookieStorageDirectory))

This says &quot;result&quot; but should say &quot;parameters&quot;.

&gt; Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm:158
&gt; +#if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101100
&gt; +    if ([NSHTTPCookieStorage respondsToSelector:@selector(_setSharedHTTPCookieStorage:)]) {
&gt; +        RetainPtr&lt;CFDataRef&gt; cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, parameters.uiProcessCookieStorageIdentifier.data(), parameters.uiProcessCookieStorageIdentifier.size()));
&gt; +        RetainPtr&lt;CFHTTPCookieStorageRef&gt; uiProcessCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get()));
&gt; +        [NSHTTPCookieStorage _setSharedHTTPCookieStorage:adoptNS([[NSHTTPCookieStorage alloc] _initWithCFHTTPCookieStorage:uiProcessCookieStorage.get()]).get()];
&gt; +    }
&gt; +#endif

Can we avoid having two copies of this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094233</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-12 12:39:34 -0700</bug_when>
    <thetext>Committed with the proposed changes in &lt;http://trac.webkit.org/r184211&gt; (and then I noticed that iOS EWS is still red!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094235</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-12 12:43:47 -0700</bug_when>
    <thetext>iOS build fix in r184212.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252904</attachid>
            <date>2015-05-11 16:10:31 -0700</date>
            <delta_ts>2015-05-11 16:27:11 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>CookieStorage.txt</filename>
            <type>text/plain</type>
            <size>20861</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTA4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFNoYXJlIGNvb2tp
ZSBzdG9yYWdlIGJldHdlZW4gVUkgcHJvY2VzcyBhbmQgc2Vjb25kYXJ5IHByb2Nlc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0ODIwCisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIwNTcyODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oOgorICAgICAgICBN
b3ZlZCBTUElzIGludG8gYW4gU1BJIGhlYWRlciwgc28gdGhhdCBXZWJLaXQyIGNvdWxkIHVzZSB0
aGVtIHRvbyB3aXRob3V0IGR1cGxpY2F0aW9uLgorCiAyMDE1LTA1LTA4ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4sIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQ2hlY2tzIGZvciBERVZFTE9QTUVOVF9CVUlM
RCBhcmUgYWxsIHdyb25nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAxODQwMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDE0ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtQ29va2llSmFyLmgiCiAKKyNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAKLUBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAo
RGV0YWlscykKLS0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZTsK
LS0gKGlkKV9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6KENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYpY2ZTdG9yYWdlOwotLSAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZilfY29va2llU3RvcmFnZTsK
LUBlbmQKLQogI2lmICFVU0UoQ0ZORVRXT1JLKQogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKQEAgLTQzLDExICszOCw2IEBAIC0gKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpX2Nvb2tpZVN0
b3JhZ2UKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotZW51bSB7Ci0gICAgTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluID0gMwotfTsKLQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcyhO
U0FycmF5ICp1bmZpbHRlcmVkQ29va2llcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDQgKzEyMCwyMCBAQCBFWFRFUk5fQyBCb29sZWFuIF9DRk5ldHdvcmtTZXRBVFNDb250ZXh0
CiBFWFRFUk5fQyB2b2lkIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmLCBDRkRhdGVSZWYpOwogI2VuZGlmCiAKKyNpZiAoVEFSR0VUX09TX0lQ
SE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAp
CitFWFRFUk5fQyBDRkRhdGFSZWYgQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0ZUlkZW50aWZ5aW5n
RGF0YShDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRvciwgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBp
blN0b3JhZ2UpOworRVhURVJOX0MgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBDRkhUVFBDb29raWVT
dG9yYWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0YShDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRv
ciwgQ0ZEYXRhUmVmIGluRGF0YSk7CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19PQkpDX18pICYm
ICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdl
IChEZXRhaWxzKQorI2lmIChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKysgKHZvaWQpX3NldFNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdlICopc3RvcmFnZTsKKyNlbmRpZgorLSAodm9p
ZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlOworLSAoaWQpX2luaXRXaXRo
Q0ZIVFRQQ29va2llU3RvcmFnZTooQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiljZlN0b3JhZ2U7Cist
IChDRkhUVFBDb29raWVTdG9yYWdlUmVmKV9jb29raWVTdG9yYWdlOworQGVuZAorI2VuZGlmCisK
ICNlbmRpZiAvLyBDRk5ldHdvcmtTUElfaApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MDMz
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDQgQEAKKzIwMTUtMDUtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gU2hhcmUgY29va2llIHN0b3JhZ2UgYmV0d2VlbiBVSSBwcm9jZXNzIGFu
ZCBzZWNvbmRhcnkgcHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDQ4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjA1NzI4MzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIGEgY29v
a2llIHN0b3JhZ2UgZGVzY3JpcHRvciB0aGF0IGluY2x1ZGVzIGZpbGUgcGF0aCBhcyB3ZWxsIGFz
IG90aGVyIGRhdGEgdGhhdAorICAgICAgICBDRk5ldHdvcmsgbmVlZHMgdG8gdXNlIHRoZSBzYW1l
IGNvb2tpZXMgc3RvcmFnZSBhcyBpbiBhbm90aGVyIHByb2Nlc3MgKHNlc3Npb24gY29va2llcwor
ICAgICAgICBhcmUgc3RpbGwgc2VwYXJhdGUpLgorCisgICAgICAgIFdoaWxlIGF0IGl0LCBzdGFy
dGVkIHRvIGNsZWFuIHVwIGNvZGUgdGhhdCBwYXNzZXMgY29va2llIHN0b3JhZ2UgcGF0aC4gSXQg
d2FzIG1vc3RseQorICAgICAgICBkZWFkIGFuZCB1bmltcGxlbWVudGVkLCBvbmx5IHVzZWQgaW4g
Y2hpbGQgcHJvY2Vzc2VzIHdoZW4gVVNFKFNFQ0NPTVBfRklMVEVSUykgd2FzIGVuYWJsZWQuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJQcm9jZXNzUG9vbEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KToKKwogMjAxNS0wNS0wOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2h1ZmZsZSB0b3VjaC1yZWxhdGVkIGNvZGUgdG8ga2VlcCB0aGUgaW50ZXJuYWwgYnVpbGRz
IHdvcmtpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMTg0MDA2KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgaW5pdGlhbGl6ZU5ldHdvcmtTZXR0aW5ncygpOwog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTEwMAorICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9zZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTopXSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlk
ZW50aWZpZXIuZGF0YSgpLCBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlm
aWVyLnNpemUoKSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0
ZUZyb21JZGVudGlmeWluZ0RhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llU3RvcmFnZURh
dGEuZ2V0KCkpKTsKKyAgICAgICAgW05TSFRUUENvb2tpZVN0b3JhZ2UgX3NldFNoYXJlZEhUVFBD
b29raWVTdG9yYWdlOmFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdp
dGhDRkhUVFBDb29raWVTdG9yYWdlOnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCldKS5nZXQo
KV07CisgICAgfQorI2VuZGlmCisKICAgICAvLyBGSVhNRTogTW9zdCBvZiB3aGF0IHRoaXMgZnVu
Y3Rpb24gZG9lcyBmb3IgY2FjaGUgc2l6ZSBnZXRzIGltbWVkaWF0ZWx5IG92ZXJyaWRkZW4gYnkg
c2V0Q2FjaGVNb2RlbCgpLgogICAgIC8vIC0gbWVtb3J5IGNhY2hlIHNpemUgcGFzc2VkIGZyb20g
VUkgcHJvY2VzcyBpcyBhbHdheXMgaWdub3JlZDsKICAgICAvLyAtIGRpc2sgY2FjaGUgc2l6ZSBw
YXNzZWQgZnJvbSBVSSBwcm9jZXNzIGlzIGVmZmVjdGl2ZWx5IGEgbWluaW11bSBzaXplLgpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAg
ZW5jb2RlciA8PCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBl
bmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAg
IGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBl
bmNvZGVyIDw8IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOworI2VuZGlmCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKQEAgLTE3Nyw4ICsxODIsMTQgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y29va2llU3RvcmFnZURpcmVjdG9yeSkpCisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb29raWVTdG9yYWdlRGlyZWN0b3J5KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcikpCisgICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE4NDAw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDEyIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgd2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIGRpc2tDYWNoZURpcmVj
dG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgU3RyaW5nIGNv
b2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOworI2VuZGlmCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjb29raWVTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjb250YWluZXJD
YWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxODQwMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDcgKzUyLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZTsKICAgICBl
bmNvZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZzsKICNlbmRp
ZgorI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgZW5jb2RlciA8PCBjb29raWVTdG9y
YWdlRGlyZWN0b3J5OworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAorICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQ29v
a2llU3RvcmFnZUlkZW50aWZpZXI7CisjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgZW5j
b2RlciA8PCBjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29k
ZXIgPDwgY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpAQCAtMTAwLDgg
KzEwNSwxNCBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNh
Y3lMb2dnaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCisjaWYgRU5BQkxFKFNF
Q0NPTVBfRklMVEVSUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb29raWVTdG9y
YWdlRGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlm
aWVyKSkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxODQwMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MSwxNCArNjEsMTUgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIAogICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlOwogICAgIGJvb2wg
c2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nOwogI2VuZGlmCi0KKyNpZiBF
TkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5
OwotCisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMTAwCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHVpUHJvY2Vzc0Nvb2tpZVN0
b3JhZ2VJZGVudGlmaWVyOworI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwot
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBwYXJlbnRCdW5k
bGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKICAgICBib29sIHNob3VsZFVzZVRl
c3RpbmdOZXR3b3JrU2Vzc2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDExLDcgKzQxMSw5
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBpZiAoIXBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKKyNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeSA9IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKQEAgLTYxMCw3ICs2MTIsOSBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSwgcGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCisjaWYgRU5BQkxFKFNF
Q0NPTVBfRklMVEVSUykKICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBj
b29raWVTdG9yYWdlRGlyZWN0b3J5KCk7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBpZiAoIXBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCkBAIC0x
MTg3LDEzICsxMTkxLDE2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6ZGlza0NhY2hlRGlyZWN0
b3IKICAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7CiB9CiAK
KyNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVDb29raWVT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVDb29r
aWVTdG9yYWdlRGlyZWN0b3J5OwogCi0gICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1ha2UgbXVjaCBz
ZW5zZS4gSXMgdGhpcyBmdW5jdGlvbiB1c2VkIGF0IGFsbD8gV2UgdXNlZCB0byBjYWxsIHBsYXRm
b3JtIGNvZGUsIGJ1dCBubyBleGlzdGluZyBwbGF0Zm9ybXMgaW1wbGVtZW50ZWQgdGhhdCBmdW5j
dGlvbi4KKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KKyNlbmRpZgogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oKQogewpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDE4NDAwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MDEsOCArNDAxLDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5
KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgp
IGNvbnN0OwogCisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBTdHJpbmcgY29va2ll
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwotICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRDb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBTdHJpbmcgcGFyZW50QnVuZGxlRGlyZWN0b3J5KCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2ICsyNDAsMTIgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogI2lmIChUQVJHRVRfT1Nf
SVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEw
MCkKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtBVFNDb250ZXh0ID0gYWRvcHRDRihfQ0ZOZXR3b3Jr
Q29weUFUU0NvbnRleHQoKSk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0
ZUlkZW50aWZ5aW5nRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBbW05TSFRUUENvb2tpZVN0b3Jh
Z2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIF9jb29raWVTdG9yYWdlXSkpOworICAgIEFTU0VS
VChwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSk7
CisgICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5hcHBlbmQo
Q0ZEYXRhR2V0Qnl0ZVB0cihjb29raWVTdG9yYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQpAQCAtMjY3LDYgKzI3MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemVOCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2Fj
aGUgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVFbmFibGVkRGVmYXVs
dHNLZXldICYmICFbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVUZW1wb3Jh
cmlseURpc2FibGVkRm9yVGVzdGluZ0tleV07CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVO
ZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXRO
ZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmdFbmFibGVkRGVmYXVsdHNLZXldOwogI2VuZGlmCisK
KyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMTAwCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY29va2llU3RvcmFnZURhdGEgPSBhZG9w
dENGKENGSFRUUENvb2tpZVN0b3JhZ2VDcmVhdGVJZGVudGlmeWluZ0RhdGEoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBf
Y29va2llU3RvcmFnZV0pKTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVT
dG9yYWdlSWRlbnRpZmllci5pc0VtcHR5KCkpOworICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29v
a2llU3RvcmFnZUlkZW50aWZpZXIuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIoY29va2llU3RvcmFn
ZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY29va2llU3RvcmFnZURhdGEuZ2V0KCkpKTsK
KyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTI4MywyMiArMjk1LDYgQEAgU3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybURlZmF1bHREaQogICAgIHJldHVybiBzdHJpbmdCeVJlc29sdmluZ1N5
bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwogfQog
Ci1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBTdHJpbmcgcGF0aCA9IHBh
dGhGb3JQcm9jZXNzQ29udGFpbmVyKCk7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAg
ICBwYXRoID0gTlNIb21lRGlyZWN0b3J5KCk7Ci0KLSAgICBwYXRoID0gcGF0aCArICIvTGlicmFy
eS9Db29raWVzIjsKLSAgICBwYXRoID0gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChw
YXRoKTsKLSAgICByZXR1cm4gcGF0aDsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gW0AiIiBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKLSNlbmRpZgotfQotCiAj
aWYgUExBVEZPUk0oSU9TKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwYXJlbnRCdW5kbGVEaXJl
Y3RvcnkoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
cm9jZXNzUG9vbEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzEsMTIgKzEzMSw2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZh
dWx0RGkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfY2FjaGVfaG9tZV9nZXQo
KSkgKyAiL1dlYktpdEVmbCI7CiB9CiAKLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1E
ZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKIHsKICAgICBtX2lnbm9yZVRM
U0Vycm9ycyA9IGlnbm9yZVRMU0Vycm9yczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCShyZXZpc2lvbiAxODQwMDYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDEyICsxNDgsNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtRGVmYXVsdERpCiAgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZGlz
a0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAgIG1faWdu
b3JlVExTRXJyb3JzID0gaWdub3JlVExTRXJyb3JzOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDE4NDAw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHIKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAgaWYgKFtO
U0hUVFBDb29raWVTdG9yYWdlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlOildKSB7CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNv
b2tpZVN0b3JhZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5kYXRhKCksIHBh
cmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuc2l6ZSgpKSk7CisgICAg
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9y
YWdlID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0
YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOworICAgICAg
ICBbTlNIVFRQQ29va2llU3RvcmFnZSBfc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6YWRvcHRO
UyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3Jh
Z2U6dWlQcm9jZXNzQ29va2llU3RvcmFnZS5nZXQoKV0pLmdldCgpXTsKKyAgICB9CisjZW5kaWYK
KwogICAgIC8vIEZJWE1FOiBNb3N0IG9mIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGZvciBjYWNo
ZSBzaXplIGdldHMgaW1tZWRpYXRlbHkgb3ZlcnJpZGRlbiBieSBzZXRDYWNoZU1vZGVsKCkuCiAg
ICAgLy8gLSBtZW1vcnkgY2FjaGUgc2l6ZSBwYXNzZWQgZnJvbSBVSSBwcm9jZXNzIGlzIGFsd2F5
cyBpZ25vcmVkOwogICAgIC8vIC0gZGlzayBjYWNoZSBzaXplIHBhc3NlZCBmcm9tIFVJIHByb2Nl
c3MgaXMgZWZmZWN0aXZlbHkgYSBtaW5pbXVtIHNpemUuCkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODQxMDgpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNS0xMSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBTaGFy
ZSBjb29raWUgc3RvcmFnZSBiZXR3ZWVuIFVJIHByb2Nlc3MgYW5kIHNlY29uZGFyeSBwcm9jZXNz
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDgy
MAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMDU3MjgzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6IChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgRG9u
J3Qgc2V0IGNvb2tpZSBzdG9yYWdlIGRpcmVjdG9yeSwgYXMgaXQncyBhIG5vLW9wLCB3ZSB1c2Ug
YW4gZXBoZW1lcmFsIHNlc3Npb24KKyAgICAgICAgZm9yIHRlc3RpbmcuCisKIDIwMTUtMDUtMTEg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZSBv
dmVybGF5IGFjdGlvbiBjb250ZXh0IG92ZXJyaWRlIHNob3VsZCBpbmRpY2F0ZSB0aGUgc291cmNl
IG9mIHRoZSByZXF1ZXN0CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMTg0MDA2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAsNiBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjCiAgICAgICAgIC8vIEZJWE1FOiBUaGVz
ZSBzaG91bGQgYmUgbWlncmF0ZWQgdG8gV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi4KICAgICAg
ICAgV0tDb250ZXh0U2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCks
IHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgc2VwYXJhdG9yICsgIkFwcGxpY2F0aW9uQ2FjaGUiKS5n
ZXQoKSk7CiAgICAgICAgIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShtX2NvbnRleHQu
Z2V0KCksIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgc2VwYXJhdG9yICsgIkNhY2hlIikuZ2V0KCkp
OwotICAgICAgICBXS0NvbnRleHRTZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5KG1fY29udGV4dC5n
ZXQoKSwgdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyBzZXBhcmF0b3IgKyAiQ29va2llcyIpLmdldCgp
KTsKICAgICAgICAgLy8gRGlzYWJsZSBpY29uIGRhdGFiYXNlIHRvIGF2b2lkIGZldGNoaW5nIDxo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvZmF2aWNvbi5pY28+IGFuZCBtYWtpbmcgdGVzdHMgZmxha3ku
CiAgICAgICAgIC8vIEludml2aWR1YWwgdGVzdHMgY2FuIGVuYWJsZSBpdCB1c2luZyB0ZXN0UnVu
bmVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQsIGFsdGhvdWdoIGl0J3Mgbm90IGN1cnJlbnRseSBz
dXBwb3J0ZWQgaW4gV2ViS2l0VGVzdFJ1bm5lci4KICAgICAgICAgV0tDb250ZXh0U2V0SWNvbkRh
dGFiYXNlUGF0aChtX2NvbnRleHQuZ2V0KCksIHRvV0soZW1wdHlTdHJpbmcoKSkuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252905</attachid>
            <date>2015-05-11 16:27:11 -0700</date>
            <delta_ts>2015-05-12 10:27:05 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>CookieStorage.txt</filename>
            <type>text/plain</type>
            <size>21887</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTA4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFNoYXJlIGNvb2tp
ZSBzdG9yYWdlIGJldHdlZW4gVUkgcHJvY2VzcyBhbmQgc2Vjb25kYXJ5IHByb2Nlc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0ODIwCisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIwNTcyODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oOgorICAgICAgICBN
b3ZlZCBTUElzIGludG8gYW4gU1BJIGhlYWRlciwgc28gdGhhdCBXZWJLaXQyIGNvdWxkIHVzZSB0
aGVtIHRvbyB3aXRob3V0IGR1cGxpY2F0aW9uLgorCiAyMDE1LTA1LTA4ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4sIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQ2hlY2tzIGZvciBERVZFTE9QTUVOVF9CVUlM
RCBhcmUgYWxsIHdyb25nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAxODQwMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDE0ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtQ29va2llSmFyLmgiCiAKKyNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAKLUBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAo
RGV0YWlscykKLS0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZTsK
LS0gKGlkKV9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6KENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYpY2ZTdG9yYWdlOwotLSAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZilfY29va2llU3RvcmFnZTsK
LUBlbmQKLQogI2lmICFVU0UoQ0ZORVRXT1JLKQogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKQEAgLTQzLDExICszOCw2IEBAIC0gKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpX2Nvb2tpZVN0
b3JhZ2UKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotZW51bSB7Ci0gICAgTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluID0gMwotfTsKLQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcyhO
U0FycmF5ICp1bmZpbHRlcmVkQ29va2llcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDQgKzEyMCwyMCBAQCBFWFRFUk5fQyBCb29sZWFuIF9DRk5ldHdvcmtTZXRBVFNDb250ZXh0
CiBFWFRFUk5fQyB2b2lkIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmLCBDRkRhdGVSZWYpOwogI2VuZGlmCiAKKyNpZiAoVEFSR0VUX09TX0lQ
SE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAp
CitFWFRFUk5fQyBDRkRhdGFSZWYgQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0ZUlkZW50aWZ5aW5n
RGF0YShDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRvciwgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBp
blN0b3JhZ2UpOworRVhURVJOX0MgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBDRkhUVFBDb29raWVT
dG9yYWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0YShDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRv
ciwgQ0ZEYXRhUmVmIGluRGF0YSk7CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19PQkpDX18pICYm
ICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdl
IChEZXRhaWxzKQorI2lmIChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKysgKHZvaWQpX3NldFNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdlICopc3RvcmFnZTsKKyNlbmRpZgorLSAodm9p
ZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlOworLSAoaWQpX2luaXRXaXRo
Q0ZIVFRQQ29va2llU3RvcmFnZTooQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiljZlN0b3JhZ2U7Cist
IChDRkhUVFBDb29raWVTdG9yYWdlUmVmKV9jb29raWVTdG9yYWdlOworQGVuZAorI2VuZGlmCisK
ICNlbmRpZiAvLyBDRk5ldHdvcmtTUElfaApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MDMz
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDQgQEAKKzIwMTUtMDUtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gU2hhcmUgY29va2llIHN0b3JhZ2UgYmV0d2VlbiBVSSBwcm9jZXNzIGFu
ZCBzZWNvbmRhcnkgcHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDQ4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjA1NzI4MzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIGEgY29v
a2llIHN0b3JhZ2UgZGVzY3JpcHRvciB0aGF0IGluY2x1ZGVzIGZpbGUgcGF0aCBhcyB3ZWxsIGFz
IG90aGVyIGRhdGEgdGhhdAorICAgICAgICBDRk5ldHdvcmsgbmVlZHMgdG8gdXNlIHRoZSBzYW1l
IGNvb2tpZXMgc3RvcmFnZSBhcyBpbiBhbm90aGVyIHByb2Nlc3MgKHNlc3Npb24gY29va2llcwor
ICAgICAgICBhcmUgc3RpbGwgc2VwYXJhdGUpLgorCisgICAgICAgIFdoaWxlIGF0IGl0LCBzdGFy
dGVkIHRvIGNsZWFuIHVwIGNvZGUgdGhhdCBwYXNzZXMgY29va2llIHN0b3JhZ2UgcGF0aC4gSXQg
d2FzIG1vc3RseQorICAgICAgICBkZWFkIGFuZCB1bmltcGxlbWVudGVkLCBvbmx5IHVzZWQgaW4g
Y2hpbGQgcHJvY2Vzc2VzIHdoZW4gVVNFKFNFQ0NPTVBfRklMVEVSUykgd2FzIGVuYWJsZWQuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJQcm9jZXNzUG9vbEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KToKKwogMjAxNS0wNS0wOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2h1ZmZsZSB0b3VjaC1yZWxhdGVkIGNvZGUgdG8ga2VlcCB0aGUgaW50ZXJuYWwgYnVpbGRz
IHdvcmtpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMTg0MDA2KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgaW5pdGlhbGl6ZU5ldHdvcmtTZXR0aW5ncygpOwog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTEwMAorICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9zZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTopXSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlk
ZW50aWZpZXIuZGF0YSgpLCBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlm
aWVyLnNpemUoKSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0
ZUZyb21JZGVudGlmeWluZ0RhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llU3RvcmFnZURh
dGEuZ2V0KCkpKTsKKyAgICAgICAgW05TSFRUUENvb2tpZVN0b3JhZ2UgX3NldFNoYXJlZEhUVFBD
b29raWVTdG9yYWdlOmFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdp
dGhDRkhUVFBDb29raWVTdG9yYWdlOnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCldKS5nZXQo
KV07CisgICAgfQorI2VuZGlmCisKICAgICAvLyBGSVhNRTogTW9zdCBvZiB3aGF0IHRoaXMgZnVu
Y3Rpb24gZG9lcyBmb3IgY2FjaGUgc2l6ZSBnZXRzIGltbWVkaWF0ZWx5IG92ZXJyaWRkZW4gYnkg
c2V0Q2FjaGVNb2RlbCgpLgogICAgIC8vIC0gbWVtb3J5IGNhY2hlIHNpemUgcGFzc2VkIGZyb20g
VUkgcHJvY2VzcyBpcyBhbHdheXMgaWdub3JlZDsKICAgICAvLyAtIGRpc2sgY2FjaGUgc2l6ZSBw
YXNzZWQgZnJvbSBVSSBwcm9jZXNzIGlzIGVmZmVjdGl2ZWx5IGEgbWluaW11bSBzaXplLgpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAg
ZW5jb2RlciA8PCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBl
bmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAg
IGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBl
bmNvZGVyIDw8IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOworI2VuZGlmCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKQEAgLTE3Nyw4ICsxODIsMTQgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y29va2llU3RvcmFnZURpcmVjdG9yeSkpCisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb29raWVTdG9yYWdlRGlyZWN0b3J5KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTg0MDA2
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsMTIgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0
b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBTdHJpbmcgY29v
a2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBWZWN0b3I8dWludDhfdD4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CisjZW5kaWYKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlOwogICAgIGVu
Y29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nOwogI2VuZGlm
CisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBlbmNvZGVyIDw8IGNvb2tpZVN0b3Jh
Z2VEaXJlY3Rvcnk7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NDb29r
aWVTdG9yYWdlSWRlbnRpZmllcjsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBlbmNv
ZGVyIDw8IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2Rl
ciA8PCBjb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CkBAIC0xMDAsOCAr
MTA1LDE0IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2Fj
eUxvZ2dpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VD
Q09NUF9GSUxURVJTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTQgKzYxLDE1IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyAKICAgICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZTsKICAgICBib29sIHNo
b3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZzsKICNlbmRpZgotCisjaWYgRU5B
QkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsK
LQorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTEwMAorICAgIFZlY3Rvcjx1aW50OF90PiB1aVByb2Nlc3NDb29raWVTdG9y
YWdlSWRlbnRpZmllcjsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLQog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcGFyZW50QnVuZGxl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAgICAgYm9vbCBzaG91bGRVc2VUZXN0
aW5nTmV0d29ya1Nlc3Npb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSwxMSArNDExLDE0
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBpZiAoIXBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKKyNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeSA9IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmICghcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBT
dHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeSA9IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsK
KyAgICBpZiAoIWNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29va2llU3Rv
cmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKIAogICAgIFN0cmluZyBjb250YWluZXJDYWNoZXNEaXJlY3RvcnkgPSB0aGlzLT5u
ZXR3b3JraW5nQ2FjaGVzRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFjb250YWluZXJDYWNoZXNEaXJl
Y3RvcnkuaXNFbXB0eSgpKQpAQCAtNjEwLDExICs2MTMsMTQgQEAgV2ViUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAorI2lmIEVOQUJMRShT
RUNDT01QX0ZJTFRFUlMpCiAgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0g
Y29va2llU3RvcmFnZURpcmVjdG9yeSgpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
cGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGly
ZWN0b3J5ID0gY29va2llU3RvcmFnZURpcmVjdG9yeSgpOworICAgIGlmICghY29va2llU3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb29raWVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgU3RyaW5n
IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeSA9IHRoaXMtPndlYkNvbnRlbnRDYWNoZXNEaXJlY3Rv
cnkoKTsKICAgICBpZiAoIWNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5pc0VtcHR5KCkpCkBAIC0x
MTg3LDEzICsxMTkzLDE2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6ZGlza0NhY2hlRGlyZWN0
b3IKICAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7CiB9CiAK
KyNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVDb29raWVT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVDb29r
aWVTdG9yYWdlRGlyZWN0b3J5OwogCi0gICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1ha2UgbXVjaCBz
ZW5zZS4gSXMgdGhpcyBmdW5jdGlvbiB1c2VkIGF0IGFsbD8gV2UgdXNlZCB0byBjYWxsIHBsYXRm
b3JtIGNvZGUsIGJ1dCBubyBleGlzdGluZyBwbGF0Zm9ybXMgaW1wbGVtZW50ZWQgdGhhdCBmdW5j
dGlvbi4KKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KKyNlbmRpZgogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oKQogewpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDE4NDAwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MDEsOCArNDAxLDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5
KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgp
IGNvbnN0OwogCisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBTdHJpbmcgY29va2ll
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwotICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRDb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBTdHJpbmcgcGFyZW50QnVuZGxlRGlyZWN0b3J5KCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2ICsyNDAsMTIgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogI2lmIChUQVJHRVRfT1Nf
SVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEw
MCkKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtBVFNDb250ZXh0ID0gYWRvcHRDRihfQ0ZOZXR3b3Jr
Q29weUFUU0NvbnRleHQoKSk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0
ZUlkZW50aWZ5aW5nRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBbW05TSFRUUENvb2tpZVN0b3Jh
Z2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIF9jb29raWVTdG9yYWdlXSkpOworICAgIEFTU0VS
VChwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSk7
CisgICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5hcHBlbmQo
Q0ZEYXRhR2V0Qnl0ZVB0cihjb29raWVTdG9yYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQpAQCAtMjY3LDYgKzI3MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemVOCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2Fj
aGUgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVFbmFibGVkRGVmYXVs
dHNLZXldICYmICFbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVUZW1wb3Jh
cmlseURpc2FibGVkRm9yVGVzdGluZ0tleV07CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVO
ZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXRO
ZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmdFbmFibGVkRGVmYXVsdHNLZXldOwogI2VuZGlmCisK
KyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMTAwCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY29va2llU3RvcmFnZURhdGEgPSBhZG9w
dENGKENGSFRUUENvb2tpZVN0b3JhZ2VDcmVhdGVJZGVudGlmeWluZ0RhdGEoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBf
Y29va2llU3RvcmFnZV0pKTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVT
dG9yYWdlSWRlbnRpZmllci5pc0VtcHR5KCkpOworICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29v
a2llU3RvcmFnZUlkZW50aWZpZXIuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIoY29va2llU3RvcmFn
ZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY29va2llU3RvcmFnZURhdGEuZ2V0KCkpKTsK
KyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTI4MywyMiArMjk1LDYgQEAgU3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybURlZmF1bHREaQogICAgIHJldHVybiBzdHJpbmdCeVJlc29sdmluZ1N5
bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwogfQog
Ci1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBTdHJpbmcgcGF0aCA9IHBh
dGhGb3JQcm9jZXNzQ29udGFpbmVyKCk7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAg
ICBwYXRoID0gTlNIb21lRGlyZWN0b3J5KCk7Ci0KLSAgICBwYXRoID0gcGF0aCArICIvTGlicmFy
eS9Db29raWVzIjsKLSAgICBwYXRoID0gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChw
YXRoKTsKLSAgICByZXR1cm4gcGF0aDsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gW0AiIiBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKLSNlbmRpZgotfQotCiAj
aWYgUExBVEZPUk0oSU9TKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwYXJlbnRCdW5kbGVEaXJl
Y3RvcnkoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
cm9jZXNzUG9vbEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzEsMTIgKzEzMSw2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZh
dWx0RGkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfY2FjaGVfaG9tZV9nZXQo
KSkgKyAiL1dlYktpdEVmbCI7CiB9CiAKLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1E
ZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKIHsKICAgICBtX2lnbm9yZVRM
U0Vycm9ycyA9IGlnbm9yZVRMU0Vycm9yczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCShyZXZpc2lvbiAxODQwMDYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDEyICsxNDgsNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtRGVmYXVsdERpCiAgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZGlz
a0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAgIG1faWdu
b3JlVExTRXJyb3JzID0gaWdub3JlVExTRXJyb3JzOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDE4NDAw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHIKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAgaWYgKFtO
U0hUVFBDb29raWVTdG9yYWdlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlOildKSB7CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNv
b2tpZVN0b3JhZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5kYXRhKCksIHBh
cmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuc2l6ZSgpKSk7CisgICAg
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9y
YWdlID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0
YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOworICAgICAg
ICBbTlNIVFRQQ29va2llU3RvcmFnZSBfc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6YWRvcHRO
UyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3Jh
Z2U6dWlQcm9jZXNzQ29va2llU3RvcmFnZS5nZXQoKV0pLmdldCgpXTsKKyAgICB9CisjZW5kaWYK
KwogICAgIC8vIEZJWE1FOiBNb3N0IG9mIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGZvciBjYWNo
ZSBzaXplIGdldHMgaW1tZWRpYXRlbHkgb3ZlcnJpZGRlbiBieSBzZXRDYWNoZU1vZGVsKCkuCiAg
ICAgLy8gLSBtZW1vcnkgY2FjaGUgc2l6ZSBwYXNzZWQgZnJvbSBVSSBwcm9jZXNzIGlzIGFsd2F5
cyBpZ25vcmVkOwogICAgIC8vIC0gZGlzayBjYWNoZSBzaXplIHBhc3NlZCBmcm9tIFVJIHByb2Nl
c3MgaXMgZWZmZWN0aXZlbHkgYSBtaW5pbXVtIHNpemUuCkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODQxMDgpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNS0xMSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBTaGFy
ZSBjb29raWUgc3RvcmFnZSBiZXR3ZWVuIFVJIHByb2Nlc3MgYW5kIHNlY29uZGFyeSBwcm9jZXNz
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDgy
MAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMDU3MjgzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6IChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgRG9u
J3Qgc2V0IGNvb2tpZSBzdG9yYWdlIGRpcmVjdG9yeSwgYXMgaXQncyBhIG5vLW9wLCB3ZSB1c2Ug
YW4gZXBoZW1lcmFsIHNlc3Npb24KKyAgICAgICAgZm9yIHRlc3RpbmcuCisKIDIwMTUtMDUtMTEg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZSBv
dmVybGF5IGFjdGlvbiBjb250ZXh0IG92ZXJyaWRlIHNob3VsZCBpbmRpY2F0ZSB0aGUgc291cmNl
IG9mIHRoZSByZXF1ZXN0CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMTg0MDA2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAsNiBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjCiAgICAgICAgIC8vIEZJWE1FOiBUaGVz
ZSBzaG91bGQgYmUgbWlncmF0ZWQgdG8gV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi4KICAgICAg
ICAgV0tDb250ZXh0U2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCks
IHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgc2VwYXJhdG9yICsgIkFwcGxpY2F0aW9uQ2FjaGUiKS5n
ZXQoKSk7CiAgICAgICAgIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShtX2NvbnRleHQu
Z2V0KCksIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgc2VwYXJhdG9yICsgIkNhY2hlIikuZ2V0KCkp
OwotICAgICAgICBXS0NvbnRleHRTZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5KG1fY29udGV4dC5n
ZXQoKSwgdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyBzZXBhcmF0b3IgKyAiQ29va2llcyIpLmdldCgp
KTsKICAgICAgICAgLy8gRGlzYWJsZSBpY29uIGRhdGFiYXNlIHRvIGF2b2lkIGZldGNoaW5nIDxo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvZmF2aWNvbi5pY28+IGFuZCBtYWtpbmcgdGVzdHMgZmxha3ku
CiAgICAgICAgIC8vIEludml2aWR1YWwgdGVzdHMgY2FuIGVuYWJsZSBpdCB1c2luZyB0ZXN0UnVu
bmVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQsIGFsdGhvdWdoIGl0J3Mgbm90IGN1cnJlbnRseSBz
dXBwb3J0ZWQgaW4gV2ViS2l0VGVzdFJ1bm5lci4KICAgICAgICAgV0tDb250ZXh0U2V0SWNvbkRh
dGFiYXNlUGF0aChtX2NvbnRleHQuZ2V0KCksIHRvV0soZW1wdHlTdHJpbmcoKSkuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252971</attachid>
            <date>2015-05-12 10:27:05 -0700</date>
            <delta_ts>2015-05-12 10:31:14 -0700</delta_ts>
            <desc>more iOS build fix</desc>
            <filename>CookieStorage.txt</filename>
            <type>text/plain</type>
            <size>22045</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTA4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFNoYXJlIGNvb2tp
ZSBzdG9yYWdlIGJldHdlZW4gVUkgcHJvY2VzcyBhbmQgc2Vjb25kYXJ5IHByb2Nlc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0ODIwCisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIwNTcyODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oOgorICAgICAgICBN
b3ZlZCBTUElzIGludG8gYW4gU1BJIGhlYWRlciwgc28gdGhhdCBXZWJLaXQyIGNvdWxkIHVzZSB0
aGVtIHRvbyB3aXRob3V0IGR1cGxpY2F0aW9uLgorCiAyMDE1LTA1LTA4ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4sIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQ2hlY2tzIGZvciBERVZFTE9QTUVOVF9CVUlM
RCBhcmUgYWxsIHdyb25nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAxODQwMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDE0ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtQ29va2llSmFyLmgiCiAKKyNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAKLUBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAo
RGV0YWlscykKLS0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZTsK
LS0gKGlkKV9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6KENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYpY2ZTdG9yYWdlOwotLSAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZilfY29va2llU3RvcmFnZTsK
LUBlbmQKLQogI2lmICFVU0UoQ0ZORVRXT1JLKQogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKQEAgLTQzLDExICszOCw2IEBAIC0gKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpX2Nvb2tpZVN0
b3JhZ2UKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotZW51bSB7Ci0gICAgTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluID0gMwotfTsKLQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcyhO
U0FycmF5ICp1bmZpbHRlcmVkQ29va2llcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDQgKzEyMCwyMCBAQCBFWFRFUk5fQyBCb29sZWFuIF9DRk5ldHdvcmtTZXRBVFNDb250ZXh0
CiBFWFRFUk5fQyB2b2lkIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmLCBDRkRhdGVSZWYpOwogI2VuZGlmCiAKKyNpZiAoVEFSR0VUX09TX0lQ
SE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAp
CitFWFRFUk5fQyBDRkRhdGFSZWYgQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0ZUlkZW50aWZ5aW5n
RGF0YShDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRvciwgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBp
blN0b3JhZ2UpOworRVhURVJOX0MgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBDRkhUVFBDb29raWVT
dG9yYWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0YShDRkFsbG9jYXRvclJlZiBpbkFsbG9jYXRv
ciwgQ0ZEYXRhUmVmIGluRGF0YSk7CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19PQkpDX18pICYm
ICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdl
IChEZXRhaWxzKQorI2lmIChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKysgKHZvaWQpX3NldFNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdlICopc3RvcmFnZTsKKyNlbmRpZgorLSAodm9p
ZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlOworLSAoaWQpX2luaXRXaXRo
Q0ZIVFRQQ29va2llU3RvcmFnZTooQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiljZlN0b3JhZ2U7Cist
IChDRkhUVFBDb29raWVTdG9yYWdlUmVmKV9jb29raWVTdG9yYWdlOworQGVuZAorI2VuZGlmCisK
ICNlbmRpZiAvLyBDRk5ldHdvcmtTUElfaApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MDMz
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDQgQEAKKzIwMTUtMDUtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gU2hhcmUgY29va2llIHN0b3JhZ2UgYmV0d2VlbiBVSSBwcm9jZXNzIGFu
ZCBzZWNvbmRhcnkgcHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDQ4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjA1NzI4MzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIGEgY29v
a2llIHN0b3JhZ2UgZGVzY3JpcHRvciB0aGF0IGluY2x1ZGVzIGZpbGUgcGF0aCBhcyB3ZWxsIGFz
IG90aGVyIGRhdGEgdGhhdAorICAgICAgICBDRk5ldHdvcmsgbmVlZHMgdG8gdXNlIHRoZSBzYW1l
IGNvb2tpZXMgc3RvcmFnZSBhcyBpbiBhbm90aGVyIHByb2Nlc3MgKHNlc3Npb24gY29va2llcwor
ICAgICAgICBhcmUgc3RpbGwgc2VwYXJhdGUpLgorCisgICAgICAgIFdoaWxlIGF0IGl0LCBzdGFy
dGVkIHRvIGNsZWFuIHVwIGNvZGUgdGhhdCBwYXNzZXMgY29va2llIHN0b3JhZ2UgcGF0aC4gSXQg
d2FzIG1vc3RseQorICAgICAgICBkZWFkIGFuZCB1bmltcGxlbWVudGVkLCBvbmx5IHVzZWQgaW4g
Y2hpbGQgcHJvY2Vzc2VzIHdoZW4gVVNFKFNFQ0NPTVBfRklMVEVSUykgd2FzIGVuYWJsZWQuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJQcm9jZXNzUG9vbEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KToKKwogMjAxNS0wNS0wOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2h1ZmZsZSB0b3VjaC1yZWxhdGVkIGNvZGUgdG8ga2VlcCB0aGUgaW50ZXJuYWwgYnVpbGRz
IHdvcmtpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMTg0MDA2KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgaW5pdGlhbGl6ZU5ldHdvcmtTZXR0aW5ncygpOwog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTEwMAorICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9zZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTopXSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlk
ZW50aWZpZXIuZGF0YSgpLCBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlm
aWVyLnNpemUoKSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0
ZUZyb21JZGVudGlmeWluZ0RhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llU3RvcmFnZURh
dGEuZ2V0KCkpKTsKKyAgICAgICAgW05TSFRUUENvb2tpZVN0b3JhZ2UgX3NldFNoYXJlZEhUVFBD
b29raWVTdG9yYWdlOmFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdp
dGhDRkhUVFBDb29raWVTdG9yYWdlOnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCldKS5nZXQo
KV07CisgICAgfQorI2VuZGlmCisKICAgICAvLyBGSVhNRTogTW9zdCBvZiB3aGF0IHRoaXMgZnVu
Y3Rpb24gZG9lcyBmb3IgY2FjaGUgc2l6ZSBnZXRzIGltbWVkaWF0ZWx5IG92ZXJyaWRkZW4gYnkg
c2V0Q2FjaGVNb2RlbCgpLgogICAgIC8vIC0gbWVtb3J5IGNhY2hlIHNpemUgcGFzc2VkIGZyb20g
VUkgcHJvY2VzcyBpcyBhbHdheXMgaWdub3JlZDsKICAgICAvLyAtIGRpc2sgY2FjaGUgc2l6ZSBw
YXNzZWQgZnJvbSBVSSBwcm9jZXNzIGlzIGVmZmVjdGl2ZWx5IGEgbWluaW11bSBzaXplLgpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3MywxMiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAg
ZW5jb2RlciA8PCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBl
bmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAg
IGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBl
bmNvZGVyIDw8IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOworI2VuZGlmCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKQEAgLTE3Nyw4ICsxODIsMTQgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y29va2llU3RvcmFnZURpcmVjdG9yeSkpCisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb29raWVTdG9yYWdlRGlyZWN0b3J5KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTg0MDA2
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsMTIgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0
b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBTdHJpbmcgY29v
a2llU3RvcmFnZURpcmVjdG9yeTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBWZWN0b3I8dWludDhfdD4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CisjZW5kaWYKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlOwogICAgIGVu
Y29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nOwogI2VuZGlm
CisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBlbmNvZGVyIDw8IGNvb2tpZVN0b3Jh
Z2VEaXJlY3Rvcnk7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NDb29r
aWVTdG9yYWdlSWRlbnRpZmllcjsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBlbmNv
ZGVyIDw8IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2Rl
ciA8PCBjb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CkBAIC0xMDAsOCAr
MTA1LDE0IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2Fj
eUxvZ2dpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VD
Q09NUF9GSUxURVJTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTQgKzYxLDE1IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyAKICAgICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZTsKICAgICBib29sIHNo
b3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZzsKICNlbmRpZgotCisjaWYgRU5B
QkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsK
LQorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTEwMAorICAgIFZlY3Rvcjx1aW50OF90PiB1aVByb2Nlc3NDb29raWVTdG9y
YWdlSWRlbnRpZmllcjsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLQog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcGFyZW50QnVuZGxl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAgICAgYm9vbCBzaG91bGRVc2VUZXN0
aW5nTmV0d29ya1Nlc3Npb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSwxMSArNDExLDE0
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBpZiAoIXBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKLSAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb29raWVT
dG9yYWdlRGlyZWN0b3J5KCk7CisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKKyAgICBwYXJh
bWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5jb29raWVTdG9yYWdlRGlyZWN0
b3J5KCk7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoIXBhcmFtZXRlcnMu
Y29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CisgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY29va2llU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBTdHJpbmcgY29udGFpbmVyQ2Fj
aGVzRGlyZWN0b3J5ID0gdGhpcy0+bmV0d29ya2luZ0NhY2hlc0RpcmVjdG9yeSgpOwogICAgIGlm
ICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAgLTYxMCwxMSArNjEzLDE0
IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KICAgICBpZiAoIXBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKLSAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb29raWVT
dG9yYWdlRGlyZWN0b3J5KCk7CisjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKKyAgICBwYXJh
bWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5jb29raWVTdG9yYWdlRGlyZWN0
b3J5KCk7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoIXBhcmFtZXRlcnMu
Y29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CisgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY29va2llU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBTdHJpbmcgY29udGFpbmVyQ2Fj
aGVzRGlyZWN0b3J5ID0gdGhpcy0+d2ViQ29udGVudENhY2hlc0RpcmVjdG9yeSgpOwogICAgIGlm
ICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAgLTExODcsMTMgKzExOTMs
MTYgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpkaXNrQ2FjaGVEaXJlY3RvcgogICAgIHJldHVy
biBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKTsKIH0KIAorI2lmIEVOQUJMRShT
RUNDT01QX0ZJTFRFUlMpCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdAogewogICAgIGlmICghbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJl
Y3Rvcnk7CiAKLSAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9y
eSgpOworICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlLiBJcyB0aGlz
IGZ1bmN0aW9uIHVzZWQgYXQgYWxsPyBXZSB1c2VkIHRvIGNhbGwgcGxhdGZvcm0gY29kZSwgYnV0
IG5vIGV4aXN0aW5nIHBsYXRmb3JtcyBpbXBsZW1lbnRlZCB0aGF0IGZ1bmN0aW9uLgorICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogfQorI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVz
ZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw4ICs0MDEs
OSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKICAg
ICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3Q7CiAKKyNp
ZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFN0cmluZyBw
YXJlbnRCdW5kbGVEaXJlY3RvcnkoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAx
ODQwMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAjaWYgKFRBUkdFVF9PU19JUEhPTkUgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogICAgIHBhcmFt
ZXRlcnMubmV0d29ya0FUU0NvbnRleHQgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5QVRTQ29udGV4
dCgpKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTEwMAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNvb2tpZVN0
b3JhZ2VEYXRhID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ3JlYXRlSWRlbnRpZnlpbmdE
YXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV0gX2Nvb2tpZVN0b3JhZ2VdKSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMu
dWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKTsKKyAgICBwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmFwcGVuZChDRkRhdGFHZXRCeXRl
UHRyKGNvb2tpZVN0b3JhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNvb2tpZVN0b3Jh
Z2VEYXRhLmdldCgpKSk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CkBAIC0yNjcsNiArMjczLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZU4KICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZSA9IFtkZWZhdWx0
cyBib29sRm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVuYWJsZWREZWZhdWx0c0tleV0gJiYgIVtk
ZWZhdWx0cyBib29sRm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZVRlbXBvcmFyaWx5RGlzYWJsZWRG
b3JUZXN0aW5nS2V5XTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVm
ZmljYWN5TG9nZ2luZyA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVm
ZmljYWN5TG9nZ2luZ0VuYWJsZWREZWZhdWx0c0tleV07CiAjZW5kaWYKKworI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZIVFRQQ29v
a2llU3RvcmFnZUNyZWF0ZUlkZW50aWZ5aW5nRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBbW05T
SFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIF9jb29raWVTdG9yYWdl
XSkpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlm
aWVyLmlzRW1wdHkoKSk7CisgICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRl
bnRpZmllci5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihjb29raWVTdG9yYWdlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOworI2VuZGlmCiB9CiAj
ZW5kaWYKIApAQCAtMjgzLDIyICsyOTUsNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtRGVmYXVsdERpCiAgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgo
W2NhY2hlUGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiB9CiAKLVN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
Ci17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFN0cmluZyBwYXRoID0gcGF0aEZvclByb2Nlc3ND
b250YWluZXIoKTsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHBhdGggPSBOU0hv
bWVEaXJlY3RvcnkoKTsKLQotICAgIHBhdGggPSBwYXRoICsgIi9MaWJyYXJ5L0Nvb2tpZXMiOwot
ICAgIHBhdGggPSBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBhdGgpOwotICAgIHJl
dHVybiBwYXRoOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBbQCIi
IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwotI2VuZGlmCi19Ci0KICNpZiBQTEFURk9STShJ
T1MpCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBhcmVudEJ1bmRsZURpcmVjdG9yeSgpIGNvbnN0
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nl
c3NQb29sRWZsLmNwcAkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMiAr
MTMxLDYgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHREaQogICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9jYWNoZV9ob21lX2dldCgpKSArICIvV2ViS2l0
RWZsIjsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRDb29raWVT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SWdub3JlVExTRXJy
b3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAgIG1faWdub3JlVExTRXJyb3JzID0gaWdu
b3JlVExTRXJyb3JzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzUG9vbEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHJldmlzaW9uIDE4NDAwNikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsMTIgKzE0OCw2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0
RGkKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkaXNrQ2FjaGVEaXJlY3Rv
cnkuZ2V0KCkpOwogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdENv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJZ25vcmVU
TFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiB7CiAgICAgbV9pZ25vcmVUTFNFcnJvcnMg
PSBpZ25vcmVUTFNFcnJvcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMTg0MDA2KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSw2ICsxNDksMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcgogI2VuZGlmCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKKyAgICBpZiAoW05TSFRUUENvb2tpZVN0
b3JhZ2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U2hhcmVkSFRUUENvb2tpZVN0
b3JhZ2U6KV0pIHsKKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY29va2llU3RvcmFnZURh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXJhbWV0ZXJz
LnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmRhdGEoKSwgcGFyYW1ldGVycy51aVBy
b2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5zaXplKCkpKTsKKyAgICAgICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UgPSBhZG9wdENG
KENGSFRUUENvb2tpZVN0b3JhZ2VDcmVhdGVGcm9tSWRlbnRpZnlpbmdEYXRhKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGNvb2tpZVN0b3JhZ2VEYXRhLmdldCgpKSk7CisgICAgICAgIFtOU0hUVFBDb29r
aWVTdG9yYWdlIF9zZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTphZG9wdE5TKFtbTlNIVFRQQ29v
a2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTp1aVByb2Nlc3ND
b29raWVTdG9yYWdlLmdldCgpXSkuZ2V0KCldOworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gRklY
TUU6IE1vc3Qgb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgZm9yIGNhY2hlIHNpemUgZ2V0cyBp
bW1lZGlhdGVseSBvdmVycmlkZGVuIGJ5IHNldENhY2hlTW9kZWwoKS4KICAgICAvLyAtIG1lbW9y
eSBjYWNoZSBzaXplIHBhc3NlZCBmcm9tIFVJIHByb2Nlc3MgaXMgYWx3YXlzIGlnbm9yZWQ7CiAg
ICAgLy8gLSBkaXNrIGNhY2hlIHNpemUgcGFzc2VkIGZyb20gVUkgcHJvY2VzcyBpcyBlZmZlY3Rp
dmVseSBhIG1pbmltdW0gc2l6ZS4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDEwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTExICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFNoYXJlIGNvb2tpZSBzdG9y
YWdlIGJldHdlZW4gVUkgcHJvY2VzcyBhbmQgc2Vjb25kYXJ5IHByb2Nlc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0ODIwCisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzIwNTcyODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDogKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICBEb24ndCBzZXQgY29va2ll
IHN0b3JhZ2UgZGlyZWN0b3J5LCBhcyBpdCdzIGEgbm8tb3AsIHdlIHVzZSBhbiBlcGhlbWVyYWwg
c2Vzc2lvbgorICAgICAgICBmb3IgdGVzdGluZy4KKwogMjAxNS0wNS0xMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQYWdlIG92ZXJsYXkgYWN0aW9u
IGNvbnRleHQgb3ZlcnJpZGUgc2hvdWxkIGluZGljYXRlIHRoZSBzb3VyY2Ugb2YgdGhlIHJlcXVl
c3QKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAxODQwMDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDcgKzM4MCw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmluaXRpYWxpemUoaW50IGFyZ2MKICAgICAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBt
aWdyYXRlZCB0byBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLgogICAgICAgICBXS0NvbnRleHRT
ZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdG9XSyh0ZW1wb3Jh
cnlGb2xkZXIgKyBzZXBhcmF0b3IgKyAiQXBwbGljYXRpb25DYWNoZSIpLmdldCgpKTsKICAgICAg
ICAgV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdG9XSyh0
ZW1wb3JhcnlGb2xkZXIgKyBzZXBhcmF0b3IgKyAiQ2FjaGUiKS5nZXQoKSk7Ci0gICAgICAgIFdL
Q29udGV4dFNldENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCB0b1dLKHRl
bXBvcmFyeUZvbGRlciArIHNlcGFyYXRvciArICJDb29raWVzIikuZ2V0KCkpOwogICAgICAgICAv
LyBEaXNhYmxlIGljb24gZGF0YWJhc2UgdG8gYXZvaWQgZmV0Y2hpbmcgPGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9mYXZpY29uLmljbz4gYW5kIG1ha2luZyB0ZXN0cyBmbGFreS4KICAgICAgICAgLy8g
SW52aXZpZHVhbCB0ZXN0cyBjYW4gZW5hYmxlIGl0IHVzaW5nIHRlc3RSdW5uZXIuc2V0SWNvbkRh
dGFiYXNlRW5hYmxlZCwgYWx0aG91Z2ggaXQncyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBpbiBX
ZWJLaXRUZXN0UnVubmVyLgogICAgICAgICBXS0NvbnRleHRTZXRJY29uRGF0YWJhc2VQYXRoKG1f
Y29udGV4dC5nZXQoKSwgdG9XSyhlbXB0eVN0cmluZygpKS5nZXQoKSk7Cg==
</data>
<flag name="review"
          id="277822"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>