<?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>187548</bug_id>
          
          <creation_ts>2018-07-10 22:27:51 -0700</creation_ts>
          <short_desc>[JSC] Thread VM&amp; to JSCell::methodTable(VM&amp;)</short_desc>
          <delta_ts>2018-07-12 01:44:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1441102</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-10 22:27:51 -0700</bug_when>
    <thetext>[JSC] Thread VM&amp; to JSCell::methodTable(VM&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441103</commentid>
    <comment_count>1</comment_count>
      <attachid>344752</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-10 22:29:15 -0700</bug_when>
    <thetext>Created attachment 344752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441104</commentid>
    <comment_count>2</comment_count>
      <attachid>344753</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-10 22:30:03 -0700</bug_when>
    <thetext>Created attachment 344753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441113</commentid>
    <comment_count>3</comment_count>
      <attachid>344756</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-10 22:55:15 -0700</bug_when>
    <thetext>Created attachment 344756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441164</commentid>
    <comment_count>4</comment_count>
      <attachid>344756</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-11 09:30:22 -0700</bug_when>
    <thetext>Comment on attachment 344756
Patch

nit: in all the functions, can you put VM&amp; as the first argument instead of the last?  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441448</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-12 01:37:44 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #4)
&gt; Comment on attachment 344756 [details]
&gt; Patch
&gt; 
&gt; nit: in all the functions, can you put VM&amp; as the first argument instead of
&gt; the last?  Thanks.

These functions are a method in ClassInfo&apos;s MethodTable. So the first argument is used for the `thisObject` cell.
In our convention, we define arguments in the following order for MethodTable&apos;s method.

JSCell* thisObject, ExecState*, VM&amp;, arguments...

So, in this case, I think `JSCell*, VM&amp;` order is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441449</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-12 01:43:50 -0700</bug_when>
    <thetext>Committed r233765: &lt;https://trac.webkit.org/changeset/233765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441450</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-12 01:44:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/42110538&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344752</attachid>
            <date>2018-07-10 22:29:15 -0700</date>
            <delta_ts>2018-07-10 22:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187548-20180711142913.patch</filename>
            <type>text/plain</type>
            <size>43522</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OWNhNTJlNmRlMTE2NTk0N2RlZTMzNTYwNTIzMmY1Nzc3MTJjYmQwLi5lMDA2ZWNlN2ZkYTYzZDIy
YzhkNmY0ZTM1MmJjNjBiYzE0NTlmOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOC0wNy0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaHJlYWQgVk0mIHRvIEpTQ2VsbDo6bWV0aG9kVGFibGUo
Vk0mKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCB0aHJlYWRzIFZNJiB0byBtZXRob2RUYWJsZShWTSYpIGFuZCByZW1vdmUgbWV0aG9k
VGFibGUoKS4KKyAgICAgICAgV2UgYWRkIFZNJiBwYXJhbWV0ZXIgdG8gZXN0aW1hdGVkU2l6ZSgp
IHRvIHRocmVhZCBWTSYgaW4gZXN0aW1hdGVkU2l6ZSBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBBUEkvQVBJQ2FzdC5oOgorICAgICAgICAodG9KUyk6CisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFtZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpjbGFzc05hbWUpOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpHYXRoZXJIZWFwU25hcHNob3REYXRhOjpHYXRoZXJIZWFwU25hcHNob3REYXRhKToKKyAgICAg
ICAgKEpTQzo6R2F0aGVySGVhcFNuYXBzaG90RGF0YTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkhlYXA6OmdhdGhlckV4dHJhSGVhcFNuYXBzaG90RGF0YSk6CisgICAgICAgICog
aGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90
QnVpbGRlcjo6anNvbik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwOgorICAg
ICAgICAoSlNDOjpEaXJlY3RBcmd1bWVudHM6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAqIHJ1
bnRpbWUvRGlyZWN0QXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9IYXNoTWFwSW1wbC5j
cHA6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ+Ojplc3RpbWF0ZWRT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6ZXN0aW1h
dGVkU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICog
cnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojplc3RpbWF0ZWRT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmR1bXAgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmVzdGltYXRlZFNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGFzc05hbWUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojplc3RpbWF0ZWRTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2xhc3NOYW1lKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94
eTo6Y2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmVzdGltYXRlZFNp
emUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBsLmNwcDoK
KyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OmVzdGltYXRlZFNpemUp
OgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcEltcGwuaDoKKwogMjAxOC0wNy0wNSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUg
Z2V0VHlwZWRBcnJheUltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1Njk1MTA2MTJlOTY0YjYzMDAzNDQxNTc1
NjQwMjI1YjE3ZGZjMWY2Li5hNDdlYTU4YmQ5YzA2NDE0YmMxM2Y3MDg0YzdkMTI2N2YyYWQ3Mzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDctMTAgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gVGhyZWFkIFZNJiB0byBK
U0NlbGw6Om1ldGhvZFRhYmxlKFZNJikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQ29u
c3RydWN0b3JCYXNlOjpjbGFzc05hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3Vz
dG9tR2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJm
YWNlTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmVzdGltYXRl
ZFNpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5h
bWUuaDoKKwogMjAxOC0wNy0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSBmZXRjaCgpIHVzZSAic2FtZS1vcmlnaW4iIGNyZWRlbnRpYWxzIGJ5IGRl
ZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKaW5kZXggN2Q2ZDNmNzQ5MDQwNzM3
NjJmYjViYjcyZmMwNjU2OTJkMmJlNTAwYi4uMmMyMjk3NWRjNzE0MDk1YTExZWNiNjY5MWJmMGY3
Zjk1MWFiZmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKQEAgLTExMyw3ICsx
MTMsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogdG9KUyhKU09iamVjdFJlZiBvKQogewogICAg
IEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHVuY2hlY2tlZFRvSlMobyk7CiAgICAgaWYgKG9iamVj
dCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0LT5tZXRob2RUYWJsZSgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0LT5tZXRob2RUYWJsZSgqb2JqZWN0LT52bSgpKSk7CiAg
ICAgcmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAppbmRleCA5YzQ3OGNlM2EyMGE5MWRmZTBlYjE3YTVlYzAwMGUzYzk5Y2Y1
OTQ1Li4xNjM2NDY5NjM4OWRlYzkwZTA1MGVkMjAwMGVhZTcyYzFkNzkyMTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTk0LDcgKzE5NCw3
IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgZmluYWwgOiBwdWJsaWMgUGFyZW50IHsKICAgICB1
c2luZyBQYXJlbnQ6Om1ldGhvZFRhYmxlOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBTdHJpbmcg
Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUo
Y29uc3QgSlNPYmplY3QqLCBWTSYpOwogCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVl
KGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmgKaW5kZXggNGEwNTkwMjdjN2M0MmM5ODQxZTAwZDU5OGYzMDJlMjA4N2FlODkwZC4u
MGIyZjA0ZWY2ZjgxMDM3NTE0MzI5ZWVmODBiMGM2YWM5ZTllNGY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAg
LTEzMCwxNCArMTMwLDE0IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbml0KEV4
ZWNTdGF0ZSogZXhlYykKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLVN0cmluZyBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQor
U3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QsIFZNJiB2bSkKIHsKICAgICBjb25zdCBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIFN0cmlu
ZyB0aGlzQ2xhc3NOYW1lID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKS0+Y2xhc3NOYW1lKCk7CiAg
ICAgaWYgKCF0aGlzQ2xhc3NOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRoaXNDbGFz
c05hbWU7CiAgICAgCi0gICAgcmV0dXJuIFBhcmVudDo6Y2xhc3NOYW1lKG9iamVjdCk7CisgICAg
cmV0dXJuIFBhcmVudDo6Y2xhc3NOYW1lKG9iamVjdCwgdm0pOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCA2YjFiNTU0MDUxMzc3YTNmYTUxYTI1Zjk4MmZmYmFhNjUxYmEwYmIzLi41NzM4Y2I5
YWZhNjE0ZWU2MGQwNzg0NTJmNzQzNmMzNjRkNjU2YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtOTk5LDEzICs5OTksMTMgQEAgQ29kZUJs
b2NrKiBDb2RlQmxvY2s6OnNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCkKICNlbmRpZiAvLyBF
TkFCTEUoRlRMX0pJVCkKIH0KIAotc2l6ZV90IENvZGVCbG9jazo6ZXN0aW1hdGVkU2l6ZShKU0Nl
bGwqIGNlbGwpCitzaXplX3QgQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwg
Vk0mIHZtKQogewogICAgIENvZGVCbG9jayogdGhpc09iamVjdCA9IGpzQ2FzdDxDb2RlQmxvY2sq
PihjZWxsKTsKICAgICBzaXplX3QgZXh0cmFNZW1vcnlBbGxvY2F0ZWQgPSB0aGlzT2JqZWN0LT5t
X2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pOwogICAgIGlmICh0aGlz
T2JqZWN0LT5tX2ppdENvZGUpCiAgICAgICAgIGV4dHJhTWVtb3J5QWxsb2NhdGVkICs9IHRoaXNP
YmplY3QtPm1faml0Q29kZS0+c2l6ZSgpOwotICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwpICsgZXh0cmFNZW1vcnlBbGxvY2F0ZWQ7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRl
ZFNpemUoY2VsbCwgdm0pICsgZXh0cmFNZW1vcnlBbGxvY2F0ZWQ7CiB9CiAKIHZvaWQgQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggODUxYjU4YjRm
ZTJkYTIyZGFlMzNlNTBlZDFkMjJhYmQ2NWU0YTg2Yi4uNjY3YmQ2YTlhNmMzODg5ZDk5OTA1MmVm
ZTBjM2M2YTk4MmJiMTNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaApAQCAtMTg4LDcgKzE4OCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM2
NzcKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lVmVyc2lvbigpOwogCi0gICAgc3RhdGljIHNpemVf
dCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6
ZShKU0NlbGwqLCBWTSYpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAg
ICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBmNWIxYmY3
ODM2YzQzYTExYjM4Y2UwMzg2N2FkYTgzMGMyNjI5ODk1Li4yNDhjODgxZjE4MTZmNmRmMmViOTk1
MjE2MGMwNWEzOTVjZmU0ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTk0LDExICs5NCwxMSBAQCB2b2lkIFVu
bGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNP
YmplY3QtPm1fdW5saW5rZWRJbnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCkpOwogfQogCi1zaXpl
X3QgVW5saW5rZWRDb2RlQmxvY2s6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQorc2l6ZV90
IFVubGlua2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQog
ewogICAgIFVubGlua2VkQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkQ29k
ZUJsb2NrKj4oY2VsbCk7CiAgICAgc2l6ZV90IGV4dHJhU2l6ZSA9IHRoaXNPYmplY3QtPm1fdW5s
aW5rZWRJbnN0cnVjdGlvbnMgPyB0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zLT5z
aXplSW5CeXRlcygpIDogMDsKLSAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSAr
IGV4dHJhU2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsLCB2bSkgKyBl
eHRyYVNpemU7CiB9CiAKIGludCBVbmxpbmtlZENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBkNzZmOGM5YmRkODFi
ZjY3YWNhNWQ4NDMyNzllYzdhZDIxMzk2NzQ5Li4wYmRhNGY1NjZmNjY1MDIwNTlmOTczYzVjMzRj
Y2Y0MzQ5YmY0ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaApAQCAtNTA5LDcgKzUwOSw3IEBAIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci0gICAgc3RhdGljIHNpemVfdCBl
c3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShK
U0NlbGwqLCBWTSYpOwogCiBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IGQ1NDA0YjU2
M2I1ZDRiODE2ZmU1NGUyYTM5MmE2YjIyMWJiM2MxZjUuLmU1YWRhZDk4MDQzYTg4ODI4ZDFkYWM3
MjJiYjQ2MDY3ZDIwOWQ2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBEZWJ1Z2dlclNjb3Bl
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXh0KTsKIH0KIAotU3RyaW5nIERlYnVnZ2Vy
U2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIERlYnVnZ2Vy
U2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0pCiB7CiAgICAg
Y29uc3QgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8Y29uc3QgRGVidWdnZXJTY29wZSo+
KG9iamVjdCk7CiAgICAgLy8gV2UgY2Fubm90IGFzc2VydCB0aGF0IHNjb3BlLT5pc1ZhbGlkKCkg
YmVjYXVzZSB0aGUgVHlwZVByb2ZpbGVyIG1heSBlbmNvdW50ZXIgYW4gaW52YWxpZGF0ZWQKQEAg
LTc0LDcgKzc0LDcgQEAgU3RyaW5nIERlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09i
amVjdCogb2JqZWN0KQogICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRT
Y29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LCB2bSk7CiB9CiAKIGJvb2wgRGVidWdn
ZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggYjcx
ODViY2U0MDMxNzU0NjU2ZmE4NDg4NTlhNTA0N2IwMTIyOWU3YS4uY2IyMWJhNGFmZjZhMGYxMzI0
OTg3OGIxNDhlYTQ2Mjc3ZjlhNTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERlYnVnZ2VyU2Nv
cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIERlYnVnZ2VyU2NvcGUqIGNyZWF0ZShWTSYgdm0sIEpTU2NvcGUqIHNjb3BlKTsK
IAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
LSAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOworICAgIHN0YXRp
YyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiwgVk0mKTsKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGI2YmM4ZDk3ZmE1ZGJlYzVkNmNlNzQw
NjVlOTJhOWIzMTA1ZmQ2ODMuLmFlZjQ0YzM4OTM4Zjk3ODEwNDAxNzkxMGNkZmM5ODYwODI4N2Qw
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC03MTMsOCArNzEzLDkgQEAg
Ym9vbCBIZWFwOjppc0hlYXBTbmFwc2hvdHRpbmcoKSBjb25zdAogfQogCiBzdHJ1Y3QgR2F0aGVy
SGVhcFNuYXBzaG90RGF0YSA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3IgewotICAgIEdhdGhl
ckhlYXBTbmFwc2hvdERhdGEoSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcikKLSAgICAgICAg
OiBtX2J1aWxkZXIoYnVpbGRlcikKKyAgICBHYXRoZXJIZWFwU25hcHNob3REYXRhKFZNJiB2bSwg
SGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcikKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgICAg
ICAsIG1fYnVpbGRlcihidWlsZGVyKQogICAgIHsKICAgICB9CiAKQEAgLTcyMiwxMSArNzIzLDEy
IEBAIHN0cnVjdCBHYXRoZXJIZWFwU25hcHNob3REYXRhIDogTWFya2VkQmxvY2s6OkNvdW50RnVu
Y3RvciB7CiAgICAgewogICAgICAgICBpZiAoaXNKU0NlbGxLaW5kKGtpbmQpKSB7CiAgICAgICAg
ICAgICBKU0NlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwQ2VsbCk7Ci0gICAg
ICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5oZWFwU25hcHNob3QoY2VsbCwgbV9idWlsZGVy
KTsKKyAgICAgICAgICAgIGNlbGwtPm1ldGhvZFRhYmxlKG1fdm0pLT5oZWFwU25hcHNob3QoY2Vs
bCwgbV9idWlsZGVyKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKICAgICB9CiAKKyAgICBWTSYgbV92bTsKICAgICBIZWFwU25hcHNob3RCdWls
ZGVyJiBtX2J1aWxkZXI7CiB9OwogCkBAIC03MzQsNyArNzM2LDcgQEAgdm9pZCBIZWFwOjpnYXRo
ZXJFeHRyYUhlYXBTbmFwc2hvdERhdGEoSGVhcFByb2ZpbGVyJiBoZWFwUHJvZmlsZXIpCiB7CiAg
ICAgaWYgKEhlYXBTbmFwc2hvdEJ1aWxkZXIqIGJ1aWxkZXIgPSBoZWFwUHJvZmlsZXIuYWN0aXZl
U25hcHNob3RCdWlsZGVyKCkpIHsKICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVy
YXRpb25TY29wZSgqdGhpcyk7Ci0gICAgICAgIEdhdGhlckhlYXBTbmFwc2hvdERhdGEgZnVuY3Rv
cigqYnVpbGRlcik7CisgICAgICAgIEdhdGhlckhlYXBTbmFwc2hvdERhdGEgZnVuY3RvcigqbV92
bSwgKmJ1aWxkZXIpOwogICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbChoZWFw
SXRlcmF0aW9uU2NvcGUsIGZ1bmN0b3IpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggNjVmNjMzZmFjZGEy
Yzc4NTY4MGE4NWU3ODlmOGFlZjQ4OTc5MjY0My4uNGQ0NmVhZjNmN2ZkNmU0ZGFlMTFiNzBkZDA5
YmY1MTIxNTIwMTViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBz
aG90QnVpbGRlcjo6anNvbihzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5v
ZGUmKT4gYQogICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBqc29uLmFwcGVuZE51
bWJlcihub2RlLmlkZW50aWZpZXIpOwogICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAg
ICBqc29uLmFwcGVuZE51bWJlcihub2RlLmNlbGwtPmVzdGltYXRlZFNpemVJbkJ5dGVzKCkpOwor
ICAgICAgICBqc29uLmFwcGVuZE51bWJlcihub2RlLmNlbGwtPmVzdGltYXRlZFNpemVJbkJ5dGVz
KHZtKSk7CiAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGpzb24uYXBwZW5kTnVt
YmVyKGNsYXNzTmFtZUluZGV4KTsKICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA0Nzc0
NzUwNTQ5MTEyODNhZDMwZmM4N2UwY2ViMzU4MmRlOThhZGIxLi43ZTkxOTUwOWI2MGFlZjc0Mzhl
MmI1ODE1OTQwYTBjMDVjMDYwMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC01NDgsNyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
IAogICAgIGlmIChVTkxJS0VMWShjdXN0b21Kb2luQ2FzZSkpIHsKICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxT
dHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFz
c05hbWUodGhpc09iamVjdCksICJdIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIpKTsKICAgICB9CiAK
ICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRl
cm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUgYW5k
IGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaAppbmRleCBkNWNmZmI2OTAzYjUwMmM1NmU5OWY4MTVjYzMwZGQxNjNkYWU5NmRk
Li5kODI1YTkxZDI0YzJiYWFiM2RhY2QxNzBkZGI3ZjVjMzhlZmYxMTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3Qg
TWV0aG9kVGFibGUgewogICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBXVEZfTUVUSE9E
X1RBQkxFX0VOVFJZKGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMpOwogICAgIEdldFByb3BlcnR5
TmFtZXNGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGdldEdlbmVyaWNQcm9wZXJ0
eU5hbWVzKTsKIAotICAgIHVzaW5nIENsYXNzTmFtZUZ1bmN0aW9uUHRyID0gU3RyaW5nICgqKShj
b25zdCBKU09iamVjdCopOworICAgIHVzaW5nIENsYXNzTmFtZUZ1bmN0aW9uUHRyID0gU3RyaW5n
ICgqKShjb25zdCBKU09iamVjdCosIFZNJik7CiAgICAgQ2xhc3NOYW1lRnVuY3Rpb25QdHIgV1RG
X01FVEhPRF9UQUJMRV9FTlRSWShjbGFzc05hbWUpOwogCiAgICAgdXNpbmcgVG9TdHJpbmdOYW1l
RnVuY3Rpb25QdHIgPSBTdHJpbmcgKCopKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CkBA
IC0xMTksNyArMTE5LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBIZWFwU25h
cHNob3RGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2VsbCosIEhlYXBTbmFwc2hvdEJ1aWxkZXIm
KTsKICAgICBIZWFwU25hcHNob3RGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGhl
YXBTbmFwc2hvdCk7CiAKLSAgICB1c2luZyBFc3RpbWF0ZWRTaXplRnVuY3Rpb25QdHIgPSBzaXpl
X3QgKCopKEpTQ2VsbCopOworICAgIHVzaW5nIEVzdGltYXRlZFNpemVGdW5jdGlvblB0ciA9IHNp
emVfdCAoKikoSlNDZWxsKiwgVk0mKTsKICAgICBFc3RpbWF0ZWRTaXplRnVuY3Rpb25QdHIgV1RG
X01FVEhPRF9UQUJMRV9FTlRSWShlc3RpbWF0ZWRTaXplKTsKIAogICAgIHVzaW5nIFZpc2l0T3V0
cHV0Q29uc3RyYWludHNQdHIgPSB2b2lkICgqKShKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKaW5k
ZXggZjkxMGYwOTBmNTUzOTY1Mzg0YWUxMTkxNjAyODc5YzgxNjcxY2Y4OC4uZTAwMWJlMjk0YjY2
ODI5ZDEzN2FmY2I3YjFiMjBkZmVmMzIzY2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCkBAIC04MywxMiArODMsMTIgQEAgRGly
ZWN0QXJndW1lbnRzKiBEaXJlY3RBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IERpcmVjdEFyZ3VtZW50czo6
ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgRGlyZWN0QXJndW1lbnRzOjplc3Rp
bWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIERpcmVjdEFyZ3VtZW50cyog
dGhpc09iamVjdCA9IGpzQ2FzdDxEaXJlY3RBcmd1bWVudHMqPihjZWxsKTsKICAgICBzaXplX3Qg
bWFwcGVkQXJndW1lbnRzU2l6ZSA9IHRoaXNPYmplY3QtPm1fbWFwcGVkQXJndW1lbnRzID8gdGhp
c09iamVjdC0+bWFwcGVkQXJndW1lbnRzU2l6ZSgpICogc2l6ZW9mKGJvb2wpIDogMDsKICAgICBz
aXplX3QgbW9kaWZpZWRBcmd1bWVudHNTaXplID0gdGhpc09iamVjdC0+bV9tb2RpZmllZEFyZ3Vt
ZW50c0Rlc2NyaXB0b3IgPyB0aGlzT2JqZWN0LT5tX2xlbmd0aCAqIHNpemVvZihib29sKSA6IDA7
Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBtYXBwZWRBcmd1bWVudHNT
aXplICsgbW9kaWZpZWRBcmd1bWVudHNTaXplOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRT
aXplKGNlbGwsIHZtKSArIG1hcHBlZEFyZ3VtZW50c1NpemUgKyBtb2RpZmllZEFyZ3VtZW50c1Np
emU7CiB9CiAKIHZvaWQgRGlyZWN0QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhp
c0NlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAppbmRleCA0OGU5YmUwYTI2OWI1NjlkMmNkMTdlNGU4
MWU3NWNhODYxMDI0Nzk4Li4xYTJjYzZmMTA1N2VmY2RjMWUzOTVlMmY1ZjVkZDc4N2YxZDhlZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVu
dHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
aApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBEaXJlY3RBcmd1bWVudHMgZmluYWwgOiBwdWJsaWMg
R2VuZXJpY0FyZ3VtZW50czxEaXJlY3RBcmd1bWVudHM+IHsKICAgICAvLyBDcmVhdGVzIGFuIGFy
Z3VtZW50cyBvYmplY3QgYnkgY29weWluZyB0aGUgYXJndW1uZXRzIGZyb20gdGhlIHN0YWNrLgog
ICAgIHN0YXRpYyBEaXJlY3RBcmd1bWVudHMqIGNyZWF0ZUJ5Q29weWluZyhFeGVjU3RhdGUqKTsK
IAotICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKyAgICBzdGF0aWMg
c2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgCiAgICAgdWludDMyX3QgaW50
ZXJuYWxMZW5ndGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGFzaE1hcEltcGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFz
aE1hcEltcGwuY3BwCmluZGV4IDVjNzU3ZTU1YWE5ZTUzN2M4NjdkZjA5ZDllMmJjOTUwNjk2NGRj
MzguLjNjMmE4MmI2MGEwZDM5MWRjM2I1M2MwMjM4YzVjY2ZkZGRjNThhZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5jcHAKQEAgLTY3LDkgKzY3LDkg
QEAgdm9pZCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0Pjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG8KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hN
YXBCdWNrZXQ+Ci1zaXplX3QgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldD46OmVzdGltYXRlZFNp
emUoSlNDZWxsKiBjZWxsKQorc2l6ZV90IEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ+Ojplc3Rp
bWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewotICAgIHJldHVybiBCYXNlOjplc3Rp
bWF0ZWRTaXplKGNlbGwpICsgc3RhdGljX2Nhc3Q8SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldD4q
PihjZWxsKS0+YXBwcm94aW1hdGVTaXplKCk7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNp
emUoY2VsbCwgdm0pICsgc3RhdGljX2Nhc3Q8SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldD4qPihj
ZWxsKS0+YXBwcm94aW1hdGVTaXplKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyogZ2V0SGFzaE1h
cEJ1Y2tldEtleUNsYXNzSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IYXNoTWFwSW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFz
aE1hcEltcGwuaAppbmRleCA3ZDk0OWMyZTgyYjI3OTkxNWIxODc0Yzc5ZWVlYzFkOTc5NzAyZjEy
Li42OTJhNWY5NThlMzMxMWVmZDM4ZGNkNjcyZDBiMmJiZTgxMTFjYWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKQEAgLTM0Niw3ICszNDYsNyBAQCBj
bGFzcyBIYXNoTWFwSW1wbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIHN0YXRp
YyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGlt
YXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKIAogICAgIEhhc2hNYXBJbXBsKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCAzYTY0YzM0
ZjEwNzdkYzAzYzM3OWExZWI4NmVhNDM1ZWI3MmRhMDA5Li42ZjdjNTI3ZjEzMjFiZjU1YTI4Mzc4
ZmNkODI2ODBjMWYzZTFiN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtNzgsMTEgKzc4LDExIEBAIEFycmF5QnVmZmVyU2hhcmlu
Z01vZGUgSlNBcnJheUJ1ZmZlcjo6c2hhcmluZ01vZGUoKSBjb25zdAogICAgIHJldHVybiBpbXBs
KCktPnNoYXJpbmdNb2RlKCk7CiB9CiAKLXNpemVfdCBKU0FycmF5QnVmZmVyOjplc3RpbWF0ZWRT
aXplKEpTQ2VsbCogY2VsbCkKK3NpemVfdCBKU0FycmF5QnVmZmVyOjplc3RpbWF0ZWRTaXplKEpT
Q2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGNlbGwpOwogICAgIHNpemVfdCBidWZmZXJFc3RpbWF0ZWRT
aXplID0gdGhpc09iamVjdC0+aW1wbCgpLT5nY1NpemVFc3RpbWF0ZUluQnl0ZXMoKTsKLSAgICBy
ZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGJ1ZmZlckVzdGltYXRlZFNpemU7Cisg
ICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCwgdm0pICsgYnVmZmVyRXN0aW1hdGVk
U2l6ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggMmY1YTVmOTA2ZmYzMGRhODZmYzJjMDVmYTkw
NTYxOTYwOTgzMWY2ZC4uOGZkZmM1M2NhYTRkMzc4OWQ2NjZlNTg4YjJkYmZkMTkxZWE2N2VlNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAt
NTgsNyArNTgsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIHN0YXRpYyBBcnJheUJ1ZmZlciogdG9XcmFwcGVkKFZNJiwgSlNWYWx1
ZSk7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpT
Q2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwog
CiBwcml2YXRlOgogICAgIFBvaXNvbmVkPEpTQXJyYXlCdWZmZXJQb2lzb24sIEFycmF5QnVmZmVy
Kj4gbV9pbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmlu
ZGV4IDI3ZGYxZjQxZGNhY2I5OWM2MjdlYzJlZjYyNDMxY2Y3ZmRjYWFlMGQuLmJhMzU1YmQ3NDNh
M2U4NzY0ODA5YThmMjdkMzllZWE0YjY5ZTZhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTExODMsOSArMTE4Myw5IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHJhZGl4
LCB1bnNpZ25lCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXNpemVfdCBKU0JpZ0ludDo6ZXN0
aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgSlNCaWdJbnQ6OmVzdGltYXRlZFNpemUo
SlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUo
Y2VsbCkgKyBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxsKS0+bV9sZW5ndGggKiBzaXplb2YoRGlnaXQp
OworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIGpzQ2FzdDxKU0Jp
Z0ludCo+KGNlbGwpLT5tX2xlbmd0aCAqIHNpemVvZihEaWdpdCk7CiB9CiAKIGRvdWJsZSBKU0Jp
Z0ludDo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggNGFmN2E1ZjdmMjQzNjZjMzc0NTBjOTY0MmU0MTI2
MDViMDYwNDNkNS4uNWI3ZGI3NDBmZTY3NzNkZDVlZDZjNjA3Y2IzNzllMDc2NzViOWRiNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC00Niw3ICs0Niw3IEBA
IGNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgZW51bSBjbGFzcyBJ
bml0aWFsaXphdGlvblR5cGUgeyBOb25lLCBXaXRoWmVybyB9OwogICAgIHZvaWQgaW5pdGlhbGl6
ZShJbml0aWFsaXphdGlvblR5cGUpOwogCi0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXpl
KEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYp
OwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVa
ZXJvKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCA3
MDU5YWI4YmRjYWQxY2FlMDIyNWQ2MGZkOWNiNzI4MTAyYzRjMGMzLi4wNzMxODI3YWYyYTFkYTlh
ZWJkNTdkMmNjMWU4YjQwNDlkYjE1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQogCiB2b2lkIEpTQ2VsbDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewot
ICAgIG1ldGhvZFRhYmxlKCktPmR1bXBUb1N0cmVhbSh0aGlzLCBvdXQpOworICAgIG1ldGhvZFRh
YmxlKCp2bSgpKS0+ZHVtcFRvU3RyZWFtKHRoaXMsIG91dCk7CiB9CiAKIHZvaWQgSlNDZWxsOjpk
dW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQcmludFN0cmVhbSYgb3V0KQpAQCAtNTQs
MTIgKzU0LDEyIEBAIHZvaWQgSlNDZWxsOjpkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxs
LCBQcmludFN0cmVhbSYgb3V0KQogICAgIG91dC5wcmludGYoIjwlcCwgJXM+IiwgY2VsbCwgY2Vs
bC0+Y2xhc3NOYW1lKCpjZWxsLT52bSgpKSk7CiB9CiAKLXNpemVfdCBKU0NlbGw6OmVzdGltYXRl
ZFNpemVJbkJ5dGVzKCkgY29uc3QKK3NpemVfdCBKU0NlbGw6OmVzdGltYXRlZFNpemVJbkJ5dGVz
KFZNJiB2bSkgY29uc3QKIHsKLSAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+ZXN0aW1hdGVkU2l6
ZShjb25zdF9jYXN0PEpTQ2VsbCo+KHRoaXMpKTsKKyAgICByZXR1cm4gbWV0aG9kVGFibGUodm0p
LT5lc3RpbWF0ZWRTaXplKGNvbnN0X2Nhc3Q8SlNDZWxsKj4odGhpcyksIHZtKTsKIH0KIAotc2l6
ZV90IEpTQ2VsbDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgSlNDZWxsOjpl
c3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mKQogewogICAgIHJldHVybiBjZWxsLT5jZWxs
U2l6ZSgpOwogfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgSlNDZWxsOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJhCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotU3RyaW5nIEpTQ2VsbDo6Y2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0KikKK1N0cmluZyBKU0NlbGw6OmNsYXNzTmFtZShjb25zdCBK
U09iamVjdCosIFZNJikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5k
ZXggOWVhNzBmZDJkNmI5MzQ2MDMzZjc0Mzc3YzRjNTE0NGQ0OTVkMzMzZS4uOWU4YmE2MGQ5ZjYy
MWU0OTg4MWZlMjIwMjZjYWZkYWE4ZWE3ZWRhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKQEAgLTE3MCw4ICsxNzAsOCBAQCBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVh
cENlbGwgewogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqLCBQcmludFN0
cmVhbSYpOwogCi0gICAgc2l6ZV90IGVzdGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3Q7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwor
ICAgIHNpemVfdCBlc3RpbWF0ZWRTaXplSW5CeXRlcyhWTSYpIGNvbnN0OworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogCiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAg
IHN0YXRpYyB2b2lkIHZpc2l0T3V0cHV0Q29uc3RyYWludHMoSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKQEAgLTE4MCw3ICsxODAsNiBAQCBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewog
CiAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBp
bmNsdWRlZC4KICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyhWTSYpIGNvbnN0OwotICAg
IGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0OwogICAgIGNvbnN0IE1ldGhv
ZFRhYmxlKiBtZXRob2RUYWJsZShWTSYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKQEAgLTI1OSw3ICsy
NTgsNyBAQCBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIHN0YXRpYyBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgYm9vbCk7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggSlNW
YWx1ZSBnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKIAotICAgIHN0YXRpYyBT
dHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgc3RhdGljIFN0cmluZyBjbGFz
c05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdO
YW1lKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1Zh
bHVlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgKaW5kZXggY2RhNmExZWNiOTliYzMzNjVhZTI2OWI2YjI3MGYzODk4MGEzNTQ1Yy4uZjY5YjM4
MDNkNmEyMjRmYzExYTY2Yjg5NWMxZGM2NjAxY2U1MmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjg3LDExICsyODcsNiBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgSlNDZWxsOjpzZXRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCBzdHJ1Y3R1cmUpOwogfQog
Ci1pbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoKSBjb25zdAot
ewotICAgIHJldHVybiBtZXRob2RUYWJsZSgqdm0oKSk7Ci19Ci0KIGlubGluZSBjb25zdCBNZXRo
b2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZShWTSYgdm0pIGNvbnN0CiB7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXgg
ZmZkZDhlNDQ4YzVlYjhmYWUwYTc3ZDU5YzRlYjg5YmIxYjViMDEwMC4uODY0MjAzNTc2NzM3YzQx
YWYwNDBlYTFlYjBjODUyYjEwNjY1NzQxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yODUsNyArMjg1
LDcgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJh
eUJ1ZmZlclZpZXcgewogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CiAKLSAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CisgICAgc3Rh
dGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZNJik7CiAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAxNDQ3NzNmMmE2MDU5MDA3MjEyYjhhMmMxYjM3Y2E0
MGI1ZTNiMTRkLi41YjJkMWZiZTU4N2JkM2QyZWE0ODkyNzc0NGYzOGFjMzE5MDg4ZjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNTAwLDE2ICs1MDAsMTYgQEAgdm9pZCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlOYW1lcygKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLXNpemVfdCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYg
dm0pCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5t
X21vZGUgPT0gT3ZlcnNpemVUeXBlZEFycmF5KQotICAgICAgICByZXR1cm4gQmFzZTo6ZXN0aW1h
dGVkU2l6ZSh0aGlzT2JqZWN0KSArIHRoaXNPYmplY3QtPmJ5dGVTaXplKCk7CisgICAgICAgIHJl
dHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QsIHZtKSArIHRoaXNPYmplY3QtPmJ5
dGVTaXplKCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kZSA9PSBGYXN0VHlwZWRBcnJheSAm
JiB0aGlzT2JqZWN0LT5tX3ZlY3RvcikKLSAgICAgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNp
emUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0LT5ieXRlU2l6ZSgpOworICAgICAgICByZXR1cm4g
QmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0LCB2bSkgKyB0aGlzT2JqZWN0LT5ieXRlU2l6
ZSgpOwogCi0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCk7CisgICAg
cmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCwgdm0pOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCmluZGV4IDdkZGM4MjVjMDEwOTVlN2RhNmEyMjc5Yjg3M2RiMzFjYjRiMWY5MmYuLjE1
ZTQxMWNhNDE5MWY4OTI0YWI3NGVhYzg2Yzg4NmRkZDI5YmE5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTQyMywxMSArNDIzLDExIEBAIEFMV0FZ
U19JTkxJTkUgU3RydWN0dXJlKiBKU09iamVjdDo6dmlzaXRCdXR0ZXJmbHlJbXBsKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHJldHVybiBzdHJ1Y3R1cmU7CiB9CiAKLXNpemVfdCBKU09iamVj
dDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgSlNPYmplY3Q6OmVzdGltYXRl
ZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKLSAgICBzaXplX3QgYnV0dGVyZmx5T3V0T2ZMaW5l
U2l6ZSA9IHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ID8gdGhpc09iamVjdC0+c3RydWN0dXJlKCkt
Pm91dE9mTGluZVNpemUoKSA6IDA7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2Vs
bCkgKyBidXR0ZXJmbHlPdXRPZkxpbmVTaXplOworICAgIHNpemVfdCBidXR0ZXJmbHlPdXRPZkxp
bmVTaXplID0gdGhpc09iamVjdC0+bV9idXR0ZXJmbHkgPyB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5vdXRPZkxpbmVTaXplKCkgOiAwOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwsIHZtKSArIGJ1dHRlcmZseU91dE9mTGluZVNpemU7CiB9CiAKIHZvaWQgSlNPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTUw
NywxOCArNTA3LDE5IEBAIHZvaWQgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogI2VuZGlmCiB9CiAKLVN0cmluZyBKU09iamVj
dDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCitTdHJpbmcgSlNPYmplY3Q6OmNs
YXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0pCiB7Ci0gICAgY29uc3QgQ2xh
c3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKm9iamVjdC0+dm0oKSk7CisgICAgY29u
c3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIEFTU0VSVChp
bmZvKTsKICAgICByZXR1cm4gaW5mby0+Y2xhc3NOYW1lOwogfQogCi1TdHJpbmcgSlNPYmplY3Q6
OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqKQorU3RyaW5n
IEpTT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjKQogewotICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZv
KCpvYmplY3QtPnZtKCkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgY29uc3QgQ2xh
c3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIEFTU0VSVChpbmZvKTsK
LSAgICByZXR1cm4gaW5mby0+bWV0aG9kVGFibGUuY2xhc3NOYW1lKG9iamVjdCk7CisgICAgcmV0
dXJuIGluZm8tPm1ldGhvZFRhYmxlLmNsYXNzTmFtZShvYmplY3QsIHZtKTsKIH0KIAogU3RyaW5n
IEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0KiBvYmplY3QpCkBAIC01NTIs
NyArNTUzLDcgQEAgU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICBpZiAocHJv
dG90eXBlRnVuY3Rpb25OYW1lLmlzTnVsbCgpIHx8IHByb3RvdHlwZUZ1bmN0aW9uTmFtZSA9PSAi
T2JqZWN0IikgewotICAgICAgICBTdHJpbmcgdGFibGVDbGFzc05hbWUgPSBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKG9iamVjdCk7CisgICAgICAgIFN0cmluZyB0YWJsZUNsYXNz
TmFtZSA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUob2JqZWN0LCB2bSk7CiAg
ICAgICAgIGlmICghdGFibGVDbGFzc05hbWUuaXNOdWxsKCkgJiYgdGFibGVDbGFzc05hbWUgIT0g
Ik9iamVjdCIpCiAgICAgICAgICAgICByZXR1cm4gdGFibGVDbGFzc05hbWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDk0MTQxMmFiOWI2ZjE1YTMxMWRk
N2YwZDg4MGJjNmY1ZGIxOWUzMzkuLmMxMWQwNTA5MzdiMjI0MTIwNGQwMzcwOWFhMGRjNWM4YzQw
YjU4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTE0
LDExICsxMTQsMTEgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBK
U0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBk
byB0aGF0LgogICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBudWxscHRyKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxs
KiwgVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgaGVhcFNuYXBzaG90KEpTQ2VsbCosIEhlYXBTbmFwc2hvdEJ1aWxkZXImKTsKIAotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNP
YmplY3QqLCBWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2FsY3Vs
YXRlZENsYXNzTmFtZShKU09iamVjdCopOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB3aGF0
IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSB3aWxsIHVzZSB0byBnZXQgdGhlIG5hbWUgb2YK
QEAgLTc2MCw3ICs3NjAsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IC8vIFlvdSBzaG91bGQgb25seSBjYWxsIGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpIHdoZW46CiAg
ICAgLy8gLSBQZXJmb3JtaW5nIHRoaXMgY2hlY2sgaW4gYSB3YXkgdGhhdCBpc24ndCBkZXNjcmli
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24gCiAgICAgLy8gICBhcyBjYWxsaW5nIHRoZSB2aXJ0dWFs
IFtbSXNFeHRlbnNpYmxlXV0gdHJhcC4KLSAgICAvLyAtIFdoZW4geW91J3JlIGd1YXJhbnRlZWQg
dGhhdCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmlzRXh0ZW5zaWJsZSBpc24ndAorICAgIC8vIC0g
V2hlbiB5b3UncmUgZ3VhcmFudGVlZCB0aGF0IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5pc0V4
dGVuc2libGUgaXNuJ3QKICAgICAvLyAgIG92ZXJyaWRkZW4uCiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzU3RydWN0dXJlRXh0ZW5zaWJsZShWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSh2bSkt
PmlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpOyB9CiAgICAgLy8gWW91IHNob3VsZCBjYWxsIHRoaXMg
d2hlbiBwZXJmb3JtaW5nIFtbSXNFeHRlbnNpYmxlXV0gdHJhcCBpbiBhIHBsYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCmluZGV4IGRmMTM2ZmIzNmY1YjI0NzUz
NDQwMzk2OTdjYjQzMmM3NWIxMzYzMTMuLmJmMTg3ZDhmZjg4NTI4NjhlOTM2OTRhNmQ2NjRiYjFk
MGI3YTJlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBA
IC00OSwxMCArNDksMTAgQEAgdm9pZCBKU1Byb3h5OjpzZXRUYXJnZXQoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHNldFByb3RvdHlwZURpcmVjdCh2bSwgZ2xvYmFs
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pKTsKIH0KIAotU3RyaW5nIEpTUHJveHk6OmNs
YXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIEpTUHJveHk6OmNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0pCiB7CiAgICAgY29uc3QgSlNQcm94eSog
dGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0
LT50YXJnZXQoKSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJs
ZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgdm0pOwogfQogCiBTdHJpbmcg
SlNQcm94eTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCBiNDA3YWY3
ZjNlNDRlOTg0OTQwM2ZlYmU2YTRlNTU2NWQwMjM4MzFmLi4wYmQzNWM5ZDZmYTY3Yjg5MmI1Y2Nh
NjE2OWJlZDA3YjJmNjY4NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5oCkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIEpTUHJveHkgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlT
bG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXgg
NjQwYmI4NDhjYTZkYjllODY4NGMyZDZkN2E3MTg3YmYyZTk2MmI5Ni4uMDkyZDc0OTdlMmM5MTNl
YTI3ZGVlMmZlMjlkY2Q2OWY3NTliNTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIGJvb2wgSlNTdHJpbmc6OmVxdWFs
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogb3RoZXIpIGNvbnN0CiAgICAgcmV0
dXJuIFdURjo6ZXF1YWwoKnN0cjEuaW1wbCgpLCAqc3RyMi5pbXBsKCkpOwogfQogCi1zaXplX3Qg
SlNTdHJpbmc6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQorc2l6ZV90IEpTU3RyaW5nOjpl
c3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIEpTU3RyaW5nKiB0aGlz
T2JqZWN0ID0gYXNTdHJpbmcoY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzUm9wZSgpKQot
ICAgICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKTsKLSAgICByZXR1cm4gQmFz
ZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpLT5jb3N0
RHVyaW5nR0MoKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCwgdm0p
OworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIHRoaXNPYmplY3Qt
Pm1fdmFsdWUuaW1wbCgpLT5jb3N0RHVyaW5nR0MoKTsKIH0KIAogdm9pZCBKU1N0cmluZzo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggYzc1NTkxMTgwNmEzOTU4NjA3NDU0
ZDY0OGRjNzA3ZjUyZGJkMTQ5ZS4uN2M3NjkwOTQ3MjkzNzBjMDY1MmE3YmUwODY1NjYzM2Y5NmQ2
MDE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xODUs
NyArMTg1LDcgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOwogCiAgICAgc3RhdGljIHZvaWQgZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2Vs
bCosIFByaW50U3RyZWFtJik7Ci0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2Vs
bCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAg
IGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggNDFl
MDA1ZTFhYzc1N2Y4YzBjNTA1YzNiNDQ1MWI4OTU4YWEyMWFkZi4uMDUzOTliMjIxMjY2ZmYxYTFk
MjlhOTA0ZTNiNDA1MTVkNzcxNzI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCkBAIC0yMzgsMTQgKzIzOCwxNCBAQCB2b2lkIFJlZ0V4cDo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+UmVnRXhwOjp+UmVnRXhwKCk7CiB9CiAKLXNpemVf
dCBSZWdFeHA6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQorc2l6ZV90IFJlZ0V4cDo6ZXN0
aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2bSkKIHsKICAgICBSZWdFeHAqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihjZWxsKTsKICAgICBzaXplX3QgcmVnZXhEYXRhU2l6
ZSA9IHRoaXNPYmplY3QtPm1fcmVnRXhwQnl0ZWNvZGUgPyB0aGlzT2JqZWN0LT5tX3JlZ0V4cEJ5
dGVjb2RlLT5lc3RpbWF0ZWRTaXplSW5CeXRlcygpIDogMDsKICNpZiBFTkFCTEUoWUFSUl9KSVQp
CiAgICAgcmVnZXhEYXRhU2l6ZSArPSB0aGlzT2JqZWN0LT5tX3JlZ0V4cEpJVENvZGUuc2l6ZSgp
OwogI2VuZGlmCi0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyByZWdleERh
dGFTaXplOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIHJlZ2V4
RGF0YVNpemU7CiB9CiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGVXaXRob3V0Q2FjaGluZyhWTSYg
dm0sIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDA1Y2U1YzBlYzVhMmVjZTk5ODlm
OGUzZTg1MDdjYWNkZjc2ZmE3YjMuLmRlMjU2ZTFmMjVkN2RlZDYyM2NhN2QwYWZlZDJiY2UwNGI1
ZGI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC00OCw3ICs0
OCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShWTSYsIGNvbnN0IFN0cmluZyYgcGF0dGVy
biwgUmVnRXhwRmxhZ3MpOwogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAgc3RhdGljIHNp
emVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1
bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwogCiAgICAgYm9vbCBnbG9i
YWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0dsb2JhbDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuY3BwCmluZGV4IDBlMzFiZDY4M2Q2Yjc5
YzY3OWU0ODQ5Zjg4ZmQxYmY0YzAyNWQ3MDguLmU3Y2FjYTkwY2Y2YzFiNzk3N2Q2MGQxZjJhODhm
NmIyNTQxMmQ0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
SW1wbC5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQCB2b2lkIFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNr
ZXQ+Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0bwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgV2Vha01hcEJ1Y2tldD4KLXNpemVfdCBXZWFrTWFwSW1wbDxX
ZWFrTWFwQnVja2V0Pjo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgV2Vha01h
cEltcGw8V2Vha01hcEJ1Y2tldD46OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0p
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFdlYWtNYXBJbXBsKj4oY2Vs
bCk7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCkgKyAoc2l6ZW9m
KFdlYWtNYXBJbXBsKSAtIHNpemVvZihCYXNlKSkgKyB0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICog
c2l6ZW9mKFdlYWtNYXBCdWNrZXQpOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRo
aXNPYmplY3QsIHZtKSArIChzaXplb2YoV2Vha01hcEltcGwpIC0gc2l6ZW9mKEJhc2UpKSArIHRo
aXNPYmplY3QtPm1fY2FwYWNpdHkgKiBzaXplb2YoV2Vha01hcEJ1Y2tldCk7CiB9CiAKIHRlbXBs
YXRlIDw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
SW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuaAppbmRl
eCAwODhiYWM1ZmNmNjE2OTAxZWZkMzU3OTE1NzVjN2M0NjJkZGEzMTE2Li41MjU4Y2JjMmQzZTEw
N2I2ZjExODEzMmJjNjhmNmQyMGQ1ZTUxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBJbXBsLmgKQEAgLTIwMyw3ICsyMDMsNyBAQCBjbGFzcyBXZWFrTWFwSW1w
bCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBzdGF0aWMgc2l6ZV90IGVz
dGltYXRlZFNpemUoSlNDZWxsKik7CisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpT
Q2VsbCosIFZNJik7CiAKICAgICBXZWFrTWFwSW1wbChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oCmluZGV4IGZlZTU2NDgzNTUzNWQ3
ZWFmY2EwY2FlODc1MTAwZjVmNmI3NDk4MTUuLjRkODNhZWI3NDdkYzRhYTYzYzVjM2YwMWMyYzJk
NGE2MjAwYzYxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29uc3RydWN0b3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b25zdHJ1Y3RvckJhc2UuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBKU0RPTUNvbnN0cnVjdG9y
QmFzZSA6IHB1YmxpYyBKU0RPTU9iamVjdCB7CiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBT
dHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgc3RhdGljIFN0cmluZyBjbGFz
c05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTsKIH07CiAKQEAgLTQ2LDcgKzQ2LDcg
QEAgaW5saW5lIEpTQzo6U3RydWN0dXJlKiBKU0RPTUNvbnN0cnVjdG9yQmFzZTo6Y3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkoKICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLWlubGluZSBTdHJpbmcgSlNE
T01Db25zdHJ1Y3RvckJhc2U6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCopCitpbmxpbmUgU3Ry
aW5nIEpTRE9NQ29uc3RydWN0b3JCYXNlOjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYp
CiB7CiAgICAgcmV0dXJuICJGdW5jdGlvbiJfczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDc2Njll
YzdmMmU3ZjA3YWUyNGUwMzZlMjI3MDNhMDhmMjg1NGJhOGIuLjQwZjI2MTcxNDZhMjA2MTYzMTYw
Yzg1OGViYTg2NTM5MzI4MDRkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtMTY4LDcgKzE2OCw4IEBA
IENhbGxUeXBlIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiBl
bGVtZW50LCBDYWxsRGF0YSYgY2FsbERhCiAgICAgaWYgKEpTT2JqZWN0KiBzY3JpcHRPYmplY3Qg
PSBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoZWxlbWVudCkpIHsKICAgICAg
ICAgQ2FsbERhdGEgc2NyaXB0T2JqZWN0Q2FsbERhdGE7CiAgICAgICAgIAotICAgICAgICBpZiAo
c2NyaXB0T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShzY3JpcHRPYmplY3QsIHNj
cmlwdE9iamVjdENhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgVk0mIHZtID0g
KnNjcmlwdE9iamVjdC0+dm0oKTsKKyAgICAgICAgaWYgKHNjcmlwdE9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRDYWxsRGF0YShzY3JpcHRPYmplY3QsIHNjcmlwdE9iamVjdENhbGxEYXRhKSA9
PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBDYWxsVHlwZTo6Tm9uZTsKIAog
ICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUGx1Z2luOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBi
NWVkNTA3YjE0MDY0MjA4NzFmOTk2MDNmMmE5ODI1NDM3MDRhNmM0Li5kOWQ0NTgzMWVlOTExMGY1
NWRmNGRiODhlOTQ0YTQ2OTQ3NDhlNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjY1MCw3ICsyNjUwLDcgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgfQogICAgIAogICAgIGlmIChJbnN0YW5jZU5lZWRzRXN0aW1h
dGVkU2l6ZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwq
LCBKU0M6OlZNJik7XG4iKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCEkaGFzUGFyZW50KSB7CkBA
IC00NTA1LDEwICs0NTA1LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQog
CiAgICAgaWYgKEluc3RhbmNlTmVlZHNFc3RpbWF0ZWRTaXplKCRpbnRlcmZhY2UpKSB7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAic2l6ZV90ICR7Y2xhc3NOYW1lfTo6ZXN0aW1hdGVkU2l6
ZShKU0NlbGwqIGNlbGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzaXplX3Qg
JHtjbGFzc05hbWV9Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OmVzdGlt
YXRlZFNpemUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjplc3Rp
bWF0ZWRTaXplKHRoaXNPYmplY3QsIHZtKSArIHRoaXNPYmplY3QtPndyYXBwZWQoKS5tZW1vcnlD
b3N0KCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
SW50ZXJmYWNlTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNJbnRlcmZhY2VOYW1lLmNwcAppbmRleCA5ZWI4ZDI2NjVmMDg4YzkxMWZkMmZkNGZkNDJl
NTBkMzkyNzYwNWZiLi5kOGMxMGEyYTliODlhZjA5MGY4ZmEyZWRmZDEzNGU0MWYxNjlkMDYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRl
cmZhY2VOYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNJbnRlcmZhY2VOYW1lLmNwcApAQCAtMTYyLDEwICsxNjIsMTAgQEAgdm9pZCBKU0ludGVy
ZmFjZU5hbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT53cmFw
cGVkKCkubWVtb3J5Q29zdCgpKTsKIH0KIAotc2l6ZV90IEpTSW50ZXJmYWNlTmFtZTo6ZXN0aW1h
dGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgSlNJbnRlcmZhY2VOYW1lOjplc3RpbWF0ZWRT
aXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNJbnRlcmZhY2VOYW1lKj4oY2VsbCk7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNp
emUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpOworICAg
IHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QsIHZtKSArIHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5tZW1vcnlDb3N0KCk7CiB9CiAKIGJvb2wgSlNJbnRlcmZhY2VOYW1lT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmgKaW5kZXgg
YTEyMzE0ODlmYWYyODJhMzU5YzE3NGEwY2IyOGI2NTYzZDZhNzA2Zi4uOWRkYmJjM2U4ZGQ4YTY5
MDNiYzZmZDIzZmU5NGQ5M2E4YzQzNmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaApAQCAtMzksNyAr
MzksNyBAQCBjbGFzcyBKU0ludGVyZmFjZU5hbWUgOiBwdWJsaWMgSlNET01XcmFwcGVyPEludGVy
ZmFjZU5hbWU+IHsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBw
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIEludGVy
ZmFjZU5hbWUqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMg
c2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0
ZWRTaXplKEpTQ2VsbCosIEpTQzo6Vk0mKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6
SlNDZWxsKik7CiAKICAgICBERUNMQVJFX0lORk87Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344753</attachid>
            <date>2018-07-10 22:30:03 -0700</date>
            <delta_ts>2018-07-10 22:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187548-20180711143002.patch</filename>
            <type>text/plain</type>
            <size>43489</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OWNhNTJlNmRlMTE2NTk0N2RlZTMzNTYwNTIzMmY1Nzc3MTJjYmQwLi5lMDA2ZWNlN2ZkYTYzZDIy
YzhkNmY0ZTM1MmJjNjBiYzE0NTlmOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOC0wNy0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaHJlYWQgVk0mIHRvIEpTQ2VsbDo6bWV0aG9kVGFibGUo
Vk0mKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCB0aHJlYWRzIFZNJiB0byBtZXRob2RUYWJsZShWTSYpIGFuZCByZW1vdmUgbWV0aG9k
VGFibGUoKS4KKyAgICAgICAgV2UgYWRkIFZNJiBwYXJhbWV0ZXIgdG8gZXN0aW1hdGVkU2l6ZSgp
IHRvIHRocmVhZCBWTSYgaW4gZXN0aW1hdGVkU2l6ZSBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBBUEkvQVBJQ2FzdC5oOgorICAgICAgICAodG9KUyk6CisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFtZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpjbGFzc05hbWUpOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpHYXRoZXJIZWFwU25hcHNob3REYXRhOjpHYXRoZXJIZWFwU25hcHNob3REYXRhKToKKyAgICAg
ICAgKEpTQzo6R2F0aGVySGVhcFNuYXBzaG90RGF0YTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkhlYXA6OmdhdGhlckV4dHJhSGVhcFNuYXBzaG90RGF0YSk6CisgICAgICAgICog
aGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90
QnVpbGRlcjo6anNvbik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwOgorICAg
ICAgICAoSlNDOjpEaXJlY3RBcmd1bWVudHM6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAqIHJ1
bnRpbWUvRGlyZWN0QXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9IYXNoTWFwSW1wbC5j
cHA6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ+Ojplc3RpbWF0ZWRT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6ZXN0aW1h
dGVkU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICog
cnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojplc3RpbWF0ZWRT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmR1bXAgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmVzdGltYXRlZFNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGFzc05hbWUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojplc3RpbWF0ZWRTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2xhc3NOYW1lKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94
eTo6Y2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmVzdGltYXRlZFNp
emUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBsLmNwcDoK
KyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OmVzdGltYXRlZFNpemUp
OgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcEltcGwuaDoKKwogMjAxOC0wNy0wNSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUg
Z2V0VHlwZWRBcnJheUltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1Njk1MTA2MTJlOTY0YjYzMDAzNDQxNTc1
NjQwMjI1YjE3ZGZjMWY2Li5hM2RhODNhMTI3M2NjMjFiNDg0MzZhOGQ5ZWFjZWQ3MDJhNWMzZTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMDctMTAgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gVGhyZWFkIFZNJiB0byBK
U0NlbGw6Om1ldGhvZFRhYmxlKFZNJikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NQ29uc3RydWN0b3JCYXNlOjpjbGFzc05hbWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIp
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0ludGVyZmFjZU5hbWU6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaDoKKwogMjAxOC0wNy0xMCAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBmZXRjaCgpIHVzZSAic2FtZS1v
cmlnaW4iIGNyZWRlbnRpYWxzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0
LmgKaW5kZXggN2Q2ZDNmNzQ5MDQwNzM3NjJmYjViYjcyZmMwNjU2OTJkMmJlNTAwYi4uMmMyMjk3
NWRjNzE0MDk1YTExZWNiNjY5MWJmMGY3Zjk1MWFiZmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYXN0LmgKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogdG9K
UyhKU09iamVjdFJlZiBvKQogewogICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHVuY2hlY2tl
ZFRvSlMobyk7CiAgICAgaWYgKG9iamVjdCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0
LT5tZXRob2RUYWJsZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0LT5tZXRob2RU
YWJsZSgqb2JqZWN0LT52bSgpKSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA5YzQ3OGNlM2EyMGE5
MWRmZTBlYjE3YTVlYzAwMGUzYzk5Y2Y1OTQ1Li4xNjM2NDY5NjM4OWRlYzkwZTA1MGVkMjAwMGVh
ZTcyYzFkNzkyMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaApAQCAtMTk0LDcgKzE5NCw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgZmluYWwg
OiBwdWJsaWMgUGFyZW50IHsKICAgICB1c2luZyBQYXJlbnQ6Om1ldGhvZFRhYmxlOwogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAg
c3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNGEwNTkwMjdjN2M0MmM5ODQx
ZTAwZDU5OGYzMDJlMjA4N2FlODkwZC4uMGIyZjA0ZWY2ZjgxMDM3NTE0MzI5ZWVmODBiMGM2YWM5
ZTllNGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzMCwxNCArMTMwLDE0IEBAIHZvaWQgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+Ojppbml0KEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogdGVtcGxhdGUgPGNs
YXNzIFBhcmVudD4KLVN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFtZShj
b25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIFZNJiB2bSkKIHsKICAgICBjb25zdCBK
U0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTQ2FsbGJhY2tPYmpl
Y3QqPihvYmplY3QpOwogICAgIFN0cmluZyB0aGlzQ2xhc3NOYW1lID0gdGhpc09iamVjdC0+Y2xh
c3NSZWYoKS0+Y2xhc3NOYW1lKCk7CiAgICAgaWYgKCF0aGlzQ2xhc3NOYW1lLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRoaXNDbGFzc05hbWU7CiAgICAgCi0gICAgcmV0dXJuIFBhcmVudDo6
Y2xhc3NOYW1lKG9iamVjdCk7CisgICAgcmV0dXJuIFBhcmVudDo6Y2xhc3NOYW1lKG9iamVjdCwg
dm0pOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2YjFiNTU0MDUxMzc3YTNmYTUxYTI1Zjk4
MmZmYmFhNjUxYmEwYmIzLi41NzM4Y2I5YWZhNjE0ZWU2MGQwNzg0NTJmNzQzNmMzNjRkNjU2YmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
OTk5LDEzICs5OTksMTMgQEAgQ29kZUJsb2NrKiBDb2RlQmxvY2s6OnNwZWNpYWxPU1JFbnRyeUJs
b2NrT3JOdWxsKCkKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH0KIAotc2l6ZV90IENvZGVC
bG9jazo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgQ29kZUJsb2NrOjplc3Rp
bWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIENvZGVCbG9jayogdGhpc09i
amVjdCA9IGpzQ2FzdDxDb2RlQmxvY2sqPihjZWxsKTsKICAgICBzaXplX3QgZXh0cmFNZW1vcnlB
bGxvY2F0ZWQgPSB0aGlzT2JqZWN0LT5tX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pOwogICAgIGlmICh0aGlzT2JqZWN0LT5tX2ppdENvZGUpCiAgICAgICAgIGV4dHJh
TWVtb3J5QWxsb2NhdGVkICs9IHRoaXNPYmplY3QtPm1faml0Q29kZS0+c2l6ZSgpOwotICAgIHJl
dHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgZXh0cmFNZW1vcnlBbGxvY2F0ZWQ7Cisg
ICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCwgdm0pICsgZXh0cmFNZW1vcnlBbGxv
Y2F0ZWQ7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggODUxYjU4YjRmZTJkYTIyZGFlMzNlNTBlZDFkMjJhYmQ2NWU0YTg2Yi4u
NjY3YmQ2YTlhNmMzODg5ZDk5OTA1MmVmZTBjM2M2YTk4MmJiMTNkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTg4LDcgKzE4OCw3IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM2NzcKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lVmVyc2lv
bigpOwogCi0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0
YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZN
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAppbmRleCBmNWIxYmY3ODM2YzQzYTExYjM4Y2UwMzg2N2FkYTgzMGMyNjI5ODk1
Li4yNDhjODgxZjE4MTZmNmRmMmViOTk1MjE2MGMwNWEzOTVjZmU0ZmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAg
LTk0LDExICs5NCwxMSBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHZpc2l0b3IucmVwb3J0
RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPm1fdW5saW5rZWRJbnN0cnVjdGlvbnMtPnNp
emVJbkJ5dGVzKCkpOwogfQogCi1zaXplX3QgVW5saW5rZWRDb2RlQmxvY2s6OmVzdGltYXRlZFNp
emUoSlNDZWxsKiBjZWxsKQorc2l6ZV90IFVubGlua2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXpl
KEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIFVubGlua2VkQ29kZUJsb2NrKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7CiAgICAgc2l6ZV90IGV4dHJh
U2l6ZSA9IHRoaXNPYmplY3QtPm1fdW5saW5rZWRJbnN0cnVjdGlvbnMgPyB0aGlzT2JqZWN0LT5t
X3VubGlua2VkSW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRlcygpIDogMDsKLSAgICByZXR1cm4gQmFz
ZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGV4dHJhU2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0
aW1hdGVkU2l6ZShjZWxsLCB2bSkgKyBleHRyYVNpemU7CiB9CiAKIGludCBVbmxpbmtlZENvZGVC
bG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAppbmRleCBkNzZmOGM5YmRkODFiZjY3YWNhNWQ4NDMyNzllYzdhZDIxMzk2NzQ5Li4wYmRh
NGY1NjZmNjY1MDIwNTlmOTczYzVjMzRjY2Y0MzQ5YmY0ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNTA5LDcgKzUw
OSw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7Ci0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRp
YyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogCiBwdWJsaWM6CiAgICAgREVD
TEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuY3BwCmluZGV4IGQ1NDA0YjU2M2I1ZDRiODE2ZmU1NGUyYTM5MmE2YjIyMWJiM2MxZjUu
LmU1YWRhZDk4MDQzYTg4ODI4ZDFkYWM3MjJiYjQ2MDY3ZDIwOWQ2ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBEZWJ1Z2dlclNjb3BlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXh0
KTsKIH0KIAotU3RyaW5nIERlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCog
b2JqZWN0KQorU3RyaW5nIERlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCog
b2JqZWN0LCBWTSYgdm0pCiB7CiAgICAgY29uc3QgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nh
c3Q8Y29uc3QgRGVidWdnZXJTY29wZSo+KG9iamVjdCk7CiAgICAgLy8gV2UgY2Fubm90IGFzc2Vy
dCB0aGF0IHNjb3BlLT5pc1ZhbGlkKCkgYmVjYXVzZSB0aGUgVHlwZVByb2ZpbGVyIG1heSBlbmNv
dW50ZXIgYW4gaW52YWxpZGF0ZWQKQEAgLTc0LDcgKzc0LDcgQEAgU3RyaW5nIERlYnVnZ2VyU2Nv
cGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQogICAgIGlmICghc2NvcGUtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpOworICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0
LCB2bSk7CiB9CiAKIGJvb2wgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmgKaW5kZXggYjcxODViY2U0MDMxNzU0NjU2ZmE4NDg4NTlhNTA0N2IwMTIy
OWU3YS4uY2IyMWJhNGFmZjZhMGYxMzI0OTg3OGIxNDhlYTQ2Mjc3ZjlhNTIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIERlYnVnZ2VyU2NvcGUqIGNyZWF0ZShW
TSYgdm0sIEpTU2NvcGUqIHNjb3BlKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25z
dCBKU09iamVjdCopOworICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
KiwgVk0mKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IGI2YmM4ZDk3ZmE1ZGJlYzVkNmNlNzQwNjVlOTJhOWIzMTA1ZmQ2ODMuLmFlZjQ0YzM4OTM4Zjk3
ODEwNDAxNzkxMGNkZmM5ODYwODI4N2QwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCkBAIC03MTMsOCArNzEzLDkgQEAgYm9vbCBIZWFwOjppc0hlYXBTbmFwc2hvdHRpbmcoKSBj
b25zdAogfQogCiBzdHJ1Y3QgR2F0aGVySGVhcFNuYXBzaG90RGF0YSA6IE1hcmtlZEJsb2NrOjpD
b3VudEZ1bmN0b3IgewotICAgIEdhdGhlckhlYXBTbmFwc2hvdERhdGEoSGVhcFNuYXBzaG90QnVp
bGRlciYgYnVpbGRlcikKLSAgICAgICAgOiBtX2J1aWxkZXIoYnVpbGRlcikKKyAgICBHYXRoZXJI
ZWFwU25hcHNob3REYXRhKFZNJiB2bSwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcikKKyAg
ICAgICAgOiBtX3ZtKHZtKQorICAgICAgICAsIG1fYnVpbGRlcihidWlsZGVyKQogICAgIHsKICAg
ICB9CiAKQEAgLTcyMiwxMSArNzIzLDEyIEBAIHN0cnVjdCBHYXRoZXJIZWFwU25hcHNob3REYXRh
IDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7CiAgICAgewogICAgICAgICBpZiAoaXNKU0Nl
bGxLaW5kKGtpbmQpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxK
U0NlbGwqPihoZWFwQ2VsbCk7Ci0gICAgICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5oZWFw
U25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgICAgIGNlbGwtPm1ldGhvZFRhYmxl
KG1fdm0pLT5oZWFwU25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKKyAgICBWTSYgbV92
bTsKICAgICBIZWFwU25hcHNob3RCdWlsZGVyJiBtX2J1aWxkZXI7CiB9OwogCkBAIC03MzQsNyAr
NzM2LDcgQEAgdm9pZCBIZWFwOjpnYXRoZXJFeHRyYUhlYXBTbmFwc2hvdERhdGEoSGVhcFByb2Zp
bGVyJiBoZWFwUHJvZmlsZXIpCiB7CiAgICAgaWYgKEhlYXBTbmFwc2hvdEJ1aWxkZXIqIGJ1aWxk
ZXIgPSBoZWFwUHJvZmlsZXIuYWN0aXZlU25hcHNob3RCdWlsZGVyKCkpIHsKICAgICAgICAgSGVh
cEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgICAgIEdhdGhl
ckhlYXBTbmFwc2hvdERhdGEgZnVuY3RvcigqYnVpbGRlcik7CisgICAgICAgIEdhdGhlckhlYXBT
bmFwc2hvdERhdGEgZnVuY3RvcigqbV92bSwgKmJ1aWxkZXIpOwogICAgICAgICBtX29iamVjdFNw
YWNlLmZvckVhY2hMaXZlQ2VsbChoZWFwSXRlcmF0aW9uU2NvcGUsIGZ1bmN0b3IpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAKaW5kZXggNjVmNjMzZmFjZGEyYzc4NTY4MGE4NWU3ODlmOGFlZjQ4OTc5MjY0My4uNGQ0
NmVhZjNmN2ZkNmU0ZGFlMTFiNzBkZDA5YmY1MTIxNTIwMTViMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTI0MCw3ICsy
NDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihzdGQ6OmZ1bmN0aW9uPGJv
b2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYQogICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwogICAgICAgICBqc29uLmFwcGVuZE51bWJlcihub2RlLmlkZW50aWZpZXIpOwogICAgICAgICBq
c29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihub2RlLmNlbGwtPmVz
dGltYXRlZFNpemVJbkJ5dGVzKCkpOworICAgICAgICBqc29uLmFwcGVuZE51bWJlcihub2RlLmNl
bGwtPmVzdGltYXRlZFNpemVJbkJ5dGVzKHZtKSk7CiAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7
CiAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGNsYXNzTmFtZUluZGV4KTsKICAgICAgICAganNv
bi5hcHBlbmQoJywnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcAppbmRleCA0Nzc0NzUwNTQ5MTEyODNhZDMwZmM4N2UwY2ViMzU4MmRlOThh
ZGIxLi43ZTkxOTUwOWI2MGFlZjc0MzhlMmI1ODE1OTQwYTBjMDVjMDYwMzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC01NDgs
NyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGlmIChVTkxJS0VMWShjdXN0b21Kb2luQ2Fz
ZSkpIHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltv
YmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVj
dCwgdm0pLCAiXSIpKTsKICAgICB9CiAKICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBj
YWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJy
YXkgYXMgdGhlIHRoaXMgdmFsdWUgYW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBkNWNmZmI2OTAzYjUwMmM1
NmU5OWY4MTVjYzMwZGQxNjNkYWU5NmRkLi5kODI1YTkxZDI0YzJiYWFiM2RhY2QxNzBkZGI3ZjVj
MzhlZmYxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFz
c0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApA
QCAtODksNyArODksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIEdldFByb3BlcnR5TmFt
ZXNGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGdldFN0cnVjdHVyZVByb3BlcnR5
TmFtZXMpOwogICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxF
X0VOVFJZKGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKTsKIAotICAgIHVzaW5nIENsYXNzTmFtZUZ1
bmN0aW9uUHRyID0gU3RyaW5nICgqKShjb25zdCBKU09iamVjdCopOworICAgIHVzaW5nIENsYXNz
TmFtZUZ1bmN0aW9uUHRyID0gU3RyaW5nICgqKShjb25zdCBKU09iamVjdCosIFZNJik7CiAgICAg
Q2xhc3NOYW1lRnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShjbGFzc05hbWUpOwog
CiAgICAgdXNpbmcgVG9TdHJpbmdOYW1lRnVuY3Rpb25QdHIgPSBTdHJpbmcgKCopKGNvbnN0IEpT
T2JqZWN0KiwgRXhlY1N0YXRlKik7CkBAIC0xMTksNyArMTE5LDcgQEAgc3RydWN0IE1ldGhvZFRh
YmxlIHsKICAgICB1c2luZyBIZWFwU25hcHNob3RGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2Vs
bCosIEhlYXBTbmFwc2hvdEJ1aWxkZXImKTsKICAgICBIZWFwU25hcHNob3RGdW5jdGlvblB0ciBX
VEZfTUVUSE9EX1RBQkxFX0VOVFJZKGhlYXBTbmFwc2hvdCk7CiAKLSAgICB1c2luZyBFc3RpbWF0
ZWRTaXplRnVuY3Rpb25QdHIgPSBzaXplX3QgKCopKEpTQ2VsbCopOworICAgIHVzaW5nIEVzdGlt
YXRlZFNpemVGdW5jdGlvblB0ciA9IHNpemVfdCAoKikoSlNDZWxsKiwgVk0mKTsKICAgICBFc3Rp
bWF0ZWRTaXplRnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShlc3RpbWF0ZWRTaXpl
KTsKIAogICAgIHVzaW5nIFZpc2l0T3V0cHV0Q29uc3RyYWludHNQdHIgPSB2b2lkICgqKShKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RpcmVjdEFyZ3VtZW50cy5jcHAKaW5kZXggZjkxMGYwOTBmNTUzOTY1Mzg0YWUxMTkxNjAyODc5
YzgxNjcxY2Y4OC4uZTAwMWJlMjk0YjY2ODI5ZDEzN2FmY2I3YjFiMjBkZmVmMzIzY2M2NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3Bw
CkBAIC04MywxMiArODMsMTIgQEAgRGlyZWN0QXJndW1lbnRzKiBEaXJlY3RBcmd1bWVudHM6OmNy
ZWF0ZUJ5Q29weWluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c2l6ZV90IERpcmVjdEFyZ3VtZW50czo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXpl
X3QgRGlyZWN0QXJndW1lbnRzOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQog
ewogICAgIERpcmVjdEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxEaXJlY3RBcmd1bWVu
dHMqPihjZWxsKTsKICAgICBzaXplX3QgbWFwcGVkQXJndW1lbnRzU2l6ZSA9IHRoaXNPYmplY3Qt
Pm1fbWFwcGVkQXJndW1lbnRzID8gdGhpc09iamVjdC0+bWFwcGVkQXJndW1lbnRzU2l6ZSgpICog
c2l6ZW9mKGJvb2wpIDogMDsKICAgICBzaXplX3QgbW9kaWZpZWRBcmd1bWVudHNTaXplID0gdGhp
c09iamVjdC0+bV9tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IgPyB0aGlzT2JqZWN0LT5tX2xl
bmd0aCAqIHNpemVvZihib29sKSA6IDA7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUo
Y2VsbCkgKyBtYXBwZWRBcmd1bWVudHNTaXplICsgbW9kaWZpZWRBcmd1bWVudHNTaXplOworICAg
IHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIG1hcHBlZEFyZ3VtZW50c1Np
emUgKyBtb2RpZmllZEFyZ3VtZW50c1NpemU7CiB9CiAKIHZvaWQgRGlyZWN0QXJndW1lbnRzOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc0NlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAppbmRleCA0
OGU5YmUwYTI2OWI1NjlkMmNkMTdlNGU4MWU3NWNhODYxMDI0Nzk4Li4xYTJjYzZmMTA1N2VmY2Rj
MWUzOTVlMmY1ZjVkZDc4N2YxZDhlZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RBcmd1bWVudHMuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBEaXJlY3RB
cmd1bWVudHMgZmluYWwgOiBwdWJsaWMgR2VuZXJpY0FyZ3VtZW50czxEaXJlY3RBcmd1bWVudHM+
IHsKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnkgY29weWluZyB0aGUgYXJn
dW1uZXRzIGZyb20gdGhlIHN0YWNrLgogICAgIHN0YXRpYyBEaXJlY3RBcmd1bWVudHMqIGNyZWF0
ZUJ5Q29weWluZyhFeGVjU3RhdGUqKTsKIAotICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6
ZShKU0NlbGwqKTsKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0m
KTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgCiAgICAgdWludDMyX3QgaW50ZXJuYWxMZW5ndGgoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuY3BwCmluZGV4IDVjNzU3ZTU1YWE5ZTUz
N2M4NjdkZjA5ZDllMmJjOTUwNjk2NGRjMzguLjNjMmE4MmI2MGEwZDM5MWRjM2I1M2MwMjM4YzVj
Y2ZkZGRjNThhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFw
SW1wbC5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0
Pjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG8KIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBCdWNrZXQ+Ci1zaXplX3QgSGFzaE1hcEltcGw8SGFz
aE1hcEJ1Y2tldD46OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQorc2l6ZV90IEhhc2hNYXBJ
bXBsPEhhc2hNYXBCdWNrZXQ+Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQog
ewotICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgc3RhdGljX2Nhc3Q8SGFz
aE1hcEltcGw8SGFzaE1hcEJ1Y2tldD4qPihjZWxsKS0+YXBwcm94aW1hdGVTaXplKCk7CisgICAg
cmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCwgdm0pICsgc3RhdGljX2Nhc3Q8SGFzaE1h
cEltcGw8SGFzaE1hcEJ1Y2tldD4qPihjZWxsKS0+YXBwcm94aW1hdGVTaXplKCk7CiB9CiAKIGNv
bnN0IENsYXNzSW5mbyogZ2V0SGFzaE1hcEJ1Y2tldEtleUNsYXNzSW5mbygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAppbmRleCA3ZDk0OWMyZTgyYjI3OTkx
NWIxODc0Yzc5ZWVlYzFkOTc5NzAyZjEyLi42OTJhNWY5NThlMzMxMWVmZDM4ZGNkNjcyZDBiMmJi
ZTgxMTFjYWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNo
TWFwSW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
LmgKQEAgLTM0Niw3ICszNDYsNyBAQCBjbGFzcyBIYXNoTWFwSW1wbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAotICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsK
KyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKIAogICAgIEhh
c2hNYXBJbXBsKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmNwcAppbmRleCAzYTY0YzM0ZjEwNzdkYzAzYzM3OWExZWI4NmVhNDM1ZWI3MmRhMDA5
Li42ZjdjNTI3ZjEzMjFiZjU1YTI4Mzc4ZmNkODI2ODBjMWYzZTFiN2I4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtNzgsMTEgKzc4
LDExIEBAIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgSlNBcnJheUJ1ZmZlcjo6c2hhcmluZ01vZGUo
KSBjb25zdAogICAgIHJldHVybiBpbXBsKCktPnNoYXJpbmdNb2RlKCk7CiB9CiAKLXNpemVfdCBK
U0FycmF5QnVmZmVyOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3NpemVfdCBKU0FycmF5
QnVmZmVyOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIEpTQXJy
YXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGNlbGwpOwogICAg
IHNpemVfdCBidWZmZXJFc3RpbWF0ZWRTaXplID0gdGhpc09iamVjdC0+aW1wbCgpLT5nY1NpemVF
c3RpbWF0ZUluQnl0ZXMoKTsKLSAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSAr
IGJ1ZmZlckVzdGltYXRlZFNpemU7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2Vs
bCwgdm0pICsgYnVmZmVyRXN0aW1hdGVkU2l6ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggMmY1
YTVmOTA2ZmYzMGRhODZmYzJjMDVmYTkwNTYxOTYwOTgzMWY2ZC4uOGZkZmM1M2NhYTRkMzc4OWQ2
NjZlNTg4YjJkYmZkMTkxZWE2N2VlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVy
IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBBcnJheUJ1ZmZl
ciogdG9XcmFwcGVkKFZNJiwgSlNWYWx1ZSk7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGlj
IHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1h
dGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogCiBwcml2YXRlOgogICAgIFBvaXNvbmVkPEpTQXJyYXlC
dWZmZXJQb2lzb24sIEFycmF5QnVmZmVyKj4gbV9pbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDI3ZGYxZjQxZGNhY2I5OWM2MjdlYzJlZjYyNDMx
Y2Y3ZmRjYWFlMGQuLmJhMzU1YmQ3NDNhM2U4NzY0ODA5YThmMjdkMzllZWE0YjY5ZTZhM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTExODMsOSAr
MTE4Myw5IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXNpemVfdCBKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3Qg
SlNCaWdJbnQ6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7Ci0gICAgcmV0
dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxsKS0+
bV9sZW5ndGggKiBzaXplb2YoRGlnaXQpOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwsIHZtKSArIGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpLT5tX2xlbmd0aCAqIHNpemVvZihE
aWdpdCk7CiB9CiAKIGRvdWJsZSBKU0JpZ0ludDo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggNGFmN2E1
ZjdmMjQzNjZjMzc0NTBjOTY0MmU0MTI2MDViMDYwNDNkNS4uNWI3ZGI3NDBmZTY3NzNkZDVlZDZj
NjA3Y2IzNzllMDc2NzViOWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25lLCBXaXRoWmVy
byB9OwogICAgIHZvaWQgaW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGUpOwogCi0gICAgc3Rh
dGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0
aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAppbmRleCA3MDU5YWI4YmRjYWQxY2FlMDIyNWQ2MGZkOWNiNzI4MTAy
YzRjMGMzLi4wNzMxODI3YWYyYTFkYTlhZWJkNTdkMmNjMWU4YjQwNDlkYjE1ZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9p
ZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIEpTQ2VsbDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG1ldGhvZFRhYmxlKCktPmR1bXBUb1N0cmVhbSh0
aGlzLCBvdXQpOworICAgIG1ldGhvZFRhYmxlKCp2bSgpKS0+ZHVtcFRvU3RyZWFtKHRoaXMsIG91
dCk7CiB9CiAKIHZvaWQgSlNDZWxsOjpkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQ
cmludFN0cmVhbSYgb3V0KQpAQCAtNTQsMTIgKzU0LDEyIEBAIHZvaWQgSlNDZWxsOjpkdW1wVG9T
dHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQcmludFN0cmVhbSYgb3V0KQogICAgIG91dC5wcmlu
dGYoIjwlcCwgJXM+IiwgY2VsbCwgY2VsbC0+Y2xhc3NOYW1lKCpjZWxsLT52bSgpKSk7CiB9CiAK
LXNpemVfdCBKU0NlbGw6OmVzdGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3QKK3NpemVfdCBKU0Nl
bGw6OmVzdGltYXRlZFNpemVJbkJ5dGVzKFZNJiB2bSkgY29uc3QKIHsKLSAgICByZXR1cm4gbWV0
aG9kVGFibGUoKS0+ZXN0aW1hdGVkU2l6ZShjb25zdF9jYXN0PEpTQ2VsbCo+KHRoaXMpKTsKKyAg
ICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5lc3RpbWF0ZWRTaXplKGNvbnN0X2Nhc3Q8SlNDZWxs
Kj4odGhpcyksIHZtKTsKIH0KIAotc2l6ZV90IEpTQ2VsbDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwq
IGNlbGwpCitzaXplX3QgSlNDZWxsOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mKQog
ewogICAgIHJldHVybiBjZWxsLT5jZWxsU2l6ZSgpOwogfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZv
aWQgSlNDZWxsOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotU3RyaW5nIEpTQ2VsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KikKK1N0cmluZyBK
U0NlbGw6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJikKIHsKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggOWVhNzBmZDJkNmI5MzQ2MDMzZjc0Mzc3YzRjNTE0
NGQ0OTVkMzMzZS4uOWU4YmE2MGQ5ZjYyMWU0OTg4MWZlMjIwMjZjYWZkYWE4ZWE3ZWRhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE3MCw4ICsxNzAsOCBAQCBj
bGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVh
bShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwogCi0gICAgc2l6ZV90IGVzdGltYXRlZFNp
emVJbkJ5dGVzKCkgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBl
c3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHNpemVfdCBlc3RpbWF0ZWRTaXplSW5CeXRlcyhW
TSYpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqLCBWTSYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTE4MCw3ICsxODAsNiBAQCBjbGFzcyBKU0Nl
bGwgOiBwdWJsaWMgSGVhcENlbGwgewogCiAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGgg
dGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KICAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbyhWTSYpIGNvbnN0OwotICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgp
IGNvbnN0OwogICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZShWTSYpIGNvbnN0Owog
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKQEAgLTI1OSw3ICsyNTgsNyBAQCBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVh
cENlbGwgewogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90
eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgYm9vbCk7CiAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggSlNWYWx1ZSBnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVj
U3RhdGUqKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7
CisgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggY2RhNmExZWNiOTliYzMzNjVhZTI2OWI2
YjI3MGYzODk4MGEzNTQ1Yy4uZjY5YjM4MDNkNmEyMjRmYzExYTY2Yjg5NWMxZGM2NjAxY2U1MmJi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApA
QCAtMjg3LDExICsyODcsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNDZWxsOjpzZXRTdHJ1Y3R1
cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB2bS5oZWFwLndyaXRlQmFycmll
cih0aGlzLCBzdHJ1Y3R1cmUpOwogfQogCi1pbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2Vs
bDo6bWV0aG9kVGFibGUoKSBjb25zdAotewotICAgIHJldHVybiBtZXRob2RUYWJsZSgqdm0oKSk7
Ci19Ci0KIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZShWTSYg
dm0pIGNvbnN0CiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZmZkZDhlNDQ4YzVlYjhmYWUwYTc3ZDU5YzRlYjg5YmIx
YjViMDEwMC4uODY0MjAzNTc2NzM3YzQxYWYwNDBlYTFlYjBjODUyYjEwNjY1NzQxNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCkBAIC0yODUsNyArMjg1LDcgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgIAogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRl
ZFNpemUoSlNDZWxsKik7CisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCos
IFZNJik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAxNDQ3NzNm
MmE2MDU5MDA3MjEyYjhhMmMxYjM3Y2E0MGI1ZTNiMTRkLi41YjJkMWZiZTU4N2JkM2QyZWE0ODky
Nzc0NGYzOGFjMzE5MDg4ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNTAw
LDE2ICs1MDAsMTYgQEAgdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0
T3duUHJvcGVydHlOYW1lcygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLXNpemVf
dCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwq
IGNlbGwpCitzaXplX3QgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmVzdGltYXRl
ZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsK
IAogICAgIGlmICh0aGlzT2JqZWN0LT5tX21vZGUgPT0gT3ZlcnNpemVUeXBlZEFycmF5KQotICAg
ICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0KSArIHRoaXNPYmplY3Qt
PmJ5dGVTaXplKCk7CisgICAgICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmpl
Y3QsIHZtKSArIHRoaXNPYmplY3QtPmJ5dGVTaXplKCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPm1f
bW9kZSA9PSBGYXN0VHlwZWRBcnJheSAmJiB0aGlzT2JqZWN0LT5tX3ZlY3RvcikKLSAgICAgICAg
cmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0LT5ieXRl
U2l6ZSgpOworICAgICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0LCB2
bSkgKyB0aGlzT2JqZWN0LT5ieXRlU2l6ZSgpOwogCi0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRl
ZFNpemUodGhpc09iamVjdCk7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09i
amVjdCwgdm0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDdkZGM4MjVjMDEwOTVlN2RhNmEy
Mjc5Yjg3M2RiMzFjYjRiMWY5MmYuLjE1ZTQxMWNhNDE5MWY4OTI0YWI3NGVhYzg2Yzg4NmRkZDI5
YmE5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTQyMywxMSArNDIzLDExIEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU09iamVjdDo6dmlz
aXRCdXR0ZXJmbHlJbXBsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHJldHVybiBzdHJ1Y3R1
cmU7CiB9CiAKLXNpemVfdCBKU09iamVjdDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitz
aXplX3QgSlNPYmplY3Q6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKLSAgICBz
aXplX3QgYnV0dGVyZmx5T3V0T2ZMaW5lU2l6ZSA9IHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ID8g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKSA6IDA7Ci0gICAgcmV0dXJu
IEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBidXR0ZXJmbHlPdXRPZkxpbmVTaXplOworICAg
IHNpemVfdCBidXR0ZXJmbHlPdXRPZkxpbmVTaXplID0gdGhpc09iamVjdC0+bV9idXR0ZXJmbHkg
PyB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVTaXplKCkgOiAwOworICAgIHJl
dHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIGJ1dHRlcmZseU91dE9mTGluZVNp
emU7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKQEAgLTUwNywxOCArNTA3LDE5IEBAIHZvaWQgSlNGaW5hbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogI2Vu
ZGlmCiB9CiAKLVN0cmluZyBKU09iamVjdDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QpCitTdHJpbmcgSlNPYmplY3Q6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBW
TSYgdm0pCiB7Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8o
Km9iamVjdC0+dm0oKSk7CisgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFz
c0luZm8odm0pOwogICAgIEFTU0VSVChpbmZvKTsKICAgICByZXR1cm4gaW5mby0+Y2xhc3NOYW1l
OwogfQogCi1TdHJpbmcgSlNPYmplY3Q6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqKQorU3RyaW5nIEpTT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIGNvbnN0IENsYXNzSW5mbyog
aW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKCpvYmplY3QtPnZtKCkpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8o
dm0pOwogICAgIEFTU0VSVChpbmZvKTsKLSAgICByZXR1cm4gaW5mby0+bWV0aG9kVGFibGUuY2xh
c3NOYW1lKG9iamVjdCk7CisgICAgcmV0dXJuIGluZm8tPm1ldGhvZFRhYmxlLmNsYXNzTmFtZShv
YmplY3QsIHZtKTsKIH0KIAogU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpT
T2JqZWN0KiBvYmplY3QpCkBAIC01NTIsNyArNTUzLDcgQEAgU3RyaW5nIEpTT2JqZWN0OjpjYWxj
dWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhj
ZXB0aW9uKCk7CiAKICAgICBpZiAocHJvdG90eXBlRnVuY3Rpb25OYW1lLmlzTnVsbCgpIHx8IHBy
b3RvdHlwZUZ1bmN0aW9uTmFtZSA9PSAiT2JqZWN0IikgewotICAgICAgICBTdHJpbmcgdGFibGVD
bGFzc05hbWUgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKG9iamVjdCk7Cisg
ICAgICAgIFN0cmluZyB0YWJsZUNsYXNzTmFtZSA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5j
bGFzc05hbWUob2JqZWN0LCB2bSk7CiAgICAgICAgIGlmICghdGFibGVDbGFzc05hbWUuaXNOdWxs
KCkgJiYgdGFibGVDbGFzc05hbWUgIT0gIk9iamVjdCIpCiAgICAgICAgICAgICByZXR1cm4gdGFi
bGVDbGFzc05hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmlu
ZGV4IDk0MTQxMmFiOWI2ZjE1YTMxMWRkN2YwZDg4MGJjNmY1ZGIxOWUzMzkuLmMxMWQwNTA5Mzdi
MjI0MTIwNGQwMzcwOWFhMGRjNWM4YzQwYjU4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtMTE0LDExICsxMTQsMTEgQEAgY2xhc3MgSlNPYmplY3QgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBp
cyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgogICAgIHN0YXRpYyBKU09iamVjdCogY3Jl
YXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRl
cmZseSogPSBudWxscHRyKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3Qg
ZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc2l6
ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaGVhcFNuYXBzaG90KEpTQ2VsbCosIEhlYXBTbmFw
c2hvdEJ1aWxkZXImKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJpbmcgY2FsY3VsYXRlZENsYXNzTmFtZShKU09iamVjdCopOwogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyB3aGF0IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSB3aWxs
IHVzZSB0byBnZXQgdGhlIG5hbWUgb2YKQEAgLTc2MCw3ICs3NjAsNyBAQCBjbGFzcyBKU09iamVj
dCA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIFlvdSBzaG91bGQgb25seSBjYWxsIGlzU3RydWN0
dXJlRXh0ZW5zaWJsZSgpIHdoZW46CiAgICAgLy8gLSBQZXJmb3JtaW5nIHRoaXMgY2hlY2sgaW4g
YSB3YXkgdGhhdCBpc24ndCBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24gCiAgICAgLy8g
ICBhcyBjYWxsaW5nIHRoZSB2aXJ0dWFsIFtbSXNFeHRlbnNpYmxlXV0gdHJhcC4KLSAgICAvLyAt
IFdoZW4geW91J3JlIGd1YXJhbnRlZWQgdGhhdCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmlzRXh0
ZW5zaWJsZSBpc24ndAorICAgIC8vIC0gV2hlbiB5b3UncmUgZ3VhcmFudGVlZCB0aGF0IG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5pc0V4dGVuc2libGUgaXNuJ3QKICAgICAvLyAgIG92ZXJyaWRk
ZW4uCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU3RydWN0dXJlRXh0ZW5zaWJsZShWTSYgdm0p
IHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpOyB9CiAgICAg
Ly8gWW91IHNob3VsZCBjYWxsIHRoaXMgd2hlbiBwZXJmb3JtaW5nIFtbSXNFeHRlbnNpYmxlXV0g
dHJhcCBpbiBhIHBsYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CmluZGV4IGRmMTM2ZmIzNmY1YjI0NzUzNDQwMzk2OTdjYjQzMmM3NWIxMzYzMTMuLmJmMTg3ZDhm
Zjg4NTI4NjhlOTM2OTRhNmQ2NjRiYjFkMGI3YTJlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC00OSwxMCArNDksMTAgQEAgdm9pZCBKU1Byb3h5Ojpz
ZXRUYXJnZXQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHNldFBy
b3RvdHlwZURpcmVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pKTsK
IH0KIAotU3RyaW5nIEpTUHJveHk6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQor
U3RyaW5nIEpTUHJveHk6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0p
CiB7CiAgICAgY29uc3QgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU1Byb3h5
Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxl
KCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT50YXJnZXQoKSk7CisgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT50YXJn
ZXQoKSwgdm0pOwogfQogCiBTdHJpbmcgSlNQcm94eTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJveHkuaAppbmRleCBiNDA3YWY3ZjNlNDRlOTg0OTQwM2ZlYmU2YTRlNTU2NWQwMjM4MzFm
Li4wYmQzNWM5ZDZmYTY3Yjg5MmI1Y2NhNjE2OWJlZDA3YjJmNjY4NTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIEpTUHJv
eHkgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmpl
Y3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25z
dCBKU09iamVjdCosIFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyB0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5jcHAKaW5kZXggNjQwYmI4NDhjYTZkYjllODY4NGMyZDZkN2E3MTg3YmYy
ZTk2MmI5Ni4uMDkyZDc0OTdlMmM5MTNlYTI3ZGVlMmZlMjlkY2Q2OWY3NTliNTU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAtODMsMTIgKzgzLDEy
IEBAIGJvb2wgSlNTdHJpbmc6OmVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmlu
Zyogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6ZXF1YWwoKnN0cjEuaW1wbCgpLCAqc3Ry
Mi5pbXBsKCkpOwogfQogCi1zaXplX3QgSlNTdHJpbmc6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBj
ZWxsKQorc2l6ZV90IEpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZt
KQogewogICAgIEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0gYXNTdHJpbmcoY2VsbCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzUm9wZSgpKQotICAgICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6
ZShjZWxsKTsKLSAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIHRoaXNPYmpl
Y3QtPm1fdmFsdWUuaW1wbCgpLT5jb3N0RHVyaW5nR0MoKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6
OmVzdGltYXRlZFNpemUoY2VsbCwgdm0pOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwsIHZtKSArIHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpLT5jb3N0RHVyaW5nR0MoKTsK
IH0KIAogdm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5k
ZXggYzc1NTkxMTgwNmEzOTU4NjA3NDU0ZDY0OGRjNzA3ZjUyZGJkMTQ5ZS4uN2M3NjkwOTQ3Mjkz
NzBjMDY1MmE3YmUwODY1NjYzM2Y5NmQ2MDE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC0xODUsNyArMTg1LDcgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgc3RhdGljIHZvaWQg
ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7Ci0gICAgc3RhdGljIHNp
emVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5jcHAKaW5kZXggNDFlMDA1ZTFhYzc1N2Y4YzBjNTA1YzNiNDQ1MWI4OTU4YWEy
MWFkZi4uMDUzOTliMjIxMjY2ZmYxYTFkMjlhOTA0ZTNiNDA1MTVkNzcxNzI3MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0yMzgsMTQgKzIzOCwxNCBAQCB2
b2lkIFJlZ0V4cDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+UmVnRXhw
Ojp+UmVnRXhwKCk7CiB9CiAKLXNpemVfdCBSZWdFeHA6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBj
ZWxsKQorc2l6ZV90IFJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2bSkK
IHsKICAgICBSZWdFeHAqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihjZWxsKTsK
ICAgICBzaXplX3QgcmVnZXhEYXRhU2l6ZSA9IHRoaXNPYmplY3QtPm1fcmVnRXhwQnl0ZWNvZGUg
PyB0aGlzT2JqZWN0LT5tX3JlZ0V4cEJ5dGVjb2RlLT5lc3RpbWF0ZWRTaXplSW5CeXRlcygpIDog
MDsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgcmVnZXhEYXRhU2l6ZSArPSB0aGlzT2JqZWN0
LT5tX3JlZ0V4cEpJVENvZGUuc2l6ZSgpOwogI2VuZGlmCi0gICAgcmV0dXJuIEJhc2U6OmVzdGlt
YXRlZFNpemUoY2VsbCkgKyByZWdleERhdGFTaXplOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0
ZWRTaXplKGNlbGwsIHZtKSArIHJlZ2V4RGF0YVNpemU7CiB9CiAKIFJlZ0V4cCogUmVnRXhwOjpj
cmVhdGVXaXRob3V0Q2FjaGluZyhWTSYgdm0sIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywg
UmVnRXhwRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmlu
ZGV4IDA1Y2U1YzBlYzVhMmVjZTk5ODlmOGUzZTg1MDdjYWNkZjc2ZmE3YjMuLmRlMjU2ZTFmMjVk
N2RlZDYyM2NhN2QwYWZlZDJiY2UwNGI1ZGI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShW
TSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwogICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7Ci0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAg
IHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqLCBQcmludFN0
cmVhbSYpOwogCiAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxh
Z0dsb2JhbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcEltcGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwu
Y3BwCmluZGV4IDBlMzFiZDY4M2Q2Yjc5YzY3OWU0ODQ5Zjg4ZmQxYmY0YzAyNWQ3MDguLmU3Y2Fj
YTkwY2Y2YzFiNzk3N2Q2MGQxZjJhODhmNmIyNTQxMmQ0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQCB2b2lk
IFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ+Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0bwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgV2Vha01hcEJ1Y2tl
dD4KLXNpemVfdCBXZWFrTWFwSW1wbDxXZWFrTWFwQnVja2V0Pjo6ZXN0aW1hdGVkU2l6ZShKU0Nl
bGwqIGNlbGwpCitzaXplX3QgV2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OmVzdGltYXRlZFNp
emUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYWtNYXBJbXBsKj4oY2VsbCk7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNp
emUodGhpc09iamVjdCkgKyAoc2l6ZW9mKFdlYWtNYXBJbXBsKSAtIHNpemVvZihCYXNlKSkgKyB0
aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6ZW9mKFdlYWtNYXBCdWNrZXQpOworICAgIHJldHVy
biBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QsIHZtKSArIChzaXplb2YoV2Vha01hcElt
cGwpIC0gc2l6ZW9mKEJhc2UpKSArIHRoaXNPYmplY3QtPm1fY2FwYWNpdHkgKiBzaXplb2YoV2Vh
a01hcEJ1Y2tldCk7CiB9CiAKIHRlbXBsYXRlIDw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcEltcGwuaAppbmRleCAwODhiYWM1ZmNmNjE2OTAxZWZkMzU3OTE1NzVjN2M0
NjJkZGEzMTE2Li41MjU4Y2JjMmQzZTEwN2I2ZjExODEzMmJjNjhmNmQyMGQ1ZTUxMDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgKQEAgLTIwMyw3ICsy
MDMsNyBAQCBjbGFzcyBXZWFrTWFwSW1wbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKLSAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CisgICAgc3RhdGlj
IHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZNJik7CiAKICAgICBXZWFrTWFwSW1wbChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFz
ZS5oCmluZGV4IGZlZTU2NDgzNTUzNWQ3ZWFmY2EwY2FlODc1MTAwZjVmNmI3NDk4MTUuLjRkODNh
ZWI3NDdkYzRhYTYzYzVjM2YwMWMyYzJkNGE2MjAwYzYxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yQmFzZSA6IHB1YmxpYyBKU0RPTU9iamVjdCB7CiAgICAg
ewogICAgIH0KIAotICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7
CisgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogICAg
IHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIEpTQzo6Q2FsbERhdGEm
KTsKIH07CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgaW5saW5lIEpTQzo6U3RydWN0dXJlKiBKU0RPTUNv
bnN0cnVjdG9yQmFzZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkoKICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKLWlubGluZSBTdHJpbmcgSlNET01Db25zdHJ1Y3RvckJhc2U6OmNsYXNzTmFtZShjb25z
dCBKU09iamVjdCopCitpbmxpbmUgU3RyaW5nIEpTRE9NQ29uc3RydWN0b3JCYXNlOjpjbGFzc05h
bWUoY29uc3QgSlNPYmplY3QqLCBWTSYpCiB7CiAgICAgcmV0dXJuICJGdW5jdGlvbiJfczsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuY3BwCmluZGV4IDc2NjllYzdmMmU3ZjA3YWUyNGUwMzZlMjI3MDNhMDhmMjg1NGJh
OGIuLjQwZjI2MTcxNDZhMjA2MTYzMTYwYzg1OGViYTg2NTM5MzI4MDRkNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmNwcApAQCAtMTY4LDcgKzE2OCw4IEBAIENhbGxUeXBlIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRD
YWxsRGF0YShKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBDYWxsRGF0YSYgY2FsbERhCiAgICAgaWYg
KEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmll
d0Jhc2UoZWxlbWVudCkpIHsKICAgICAgICAgQ2FsbERhdGEgc2NyaXB0T2JqZWN0Q2FsbERhdGE7
CiAgICAgICAgIAotICAgICAgICBpZiAoc2NyaXB0T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRD
YWxsRGF0YShzY3JpcHRPYmplY3QsIHNjcmlwdE9iamVjdENhbGxEYXRhKSA9PSBDYWxsVHlwZTo6
Tm9uZSkKKyAgICAgICAgVk0mIHZtID0gKnNjcmlwdE9iamVjdC0+dm0oKTsKKyAgICAgICAgaWYg
KHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShzY3JpcHRPYmplY3Qs
IHNjcmlwdE9iamVjdENhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJl
dHVybiBDYWxsVHlwZTo6Tm9uZTsKIAogICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsUGx1Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiNWVkNTA3YjE0MDY0MjA4NzFmOTk2MDNmMmE5ODI1NDM3
MDRhNmM0Li5kOWQ0NTgzMWVlOTExMGY1NWRmNGRiODhlOTQ0YTQ2OTQ3NDhlNTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtMjY1MCw3ICsyNjUwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogICAgIAogICAg
IGlmIChJbnN0YW5jZU5lZWRzRXN0aW1hdGVkU2l6ZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0Nl
bGwqKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBzaXpl
X3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBKU0M6OlZNJik7XG4iKTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKCEkaGFzUGFyZW50KSB7CkBAIC00NTA1LDEwICs0NTA1LDEwIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKEluc3RhbmNlTmVlZHNFc3RpbWF0ZWRT
aXplKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic2l6ZV90ICR7
Y2xhc3NOYW1lfTo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpXG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJzaXplX3QgJHtjbGFzc05hbWV9Ojplc3RpbWF0ZWRTaXplKEpTQ2Vs
bCogY2VsbCwgVk0mIHZtKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QsIHZtKSArIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5tZW1vcnlDb3N0KCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcAppbmRleCA5ZWI4
ZDI2NjVmMDg4YzkxMWZkMmZkNGZkNDJlNTBkMzkyNzYwNWZiLi5kOGMxMGEyYTliODlhZjA5MGY4
ZmEyZWRmZDEzNGU0MWYxNjlkMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcApAQCAtMTYyLDEw
ICsxNjIsMTAgQEAgdm9pZCBKU0ludGVyZmFjZU5hbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZCh0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpKTsKIH0KIAotc2l6ZV90
IEpTSW50ZXJmYWNlTmFtZTo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgSlNJ
bnRlcmZhY2VOYW1lOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNJbnRlcmZhY2VOYW1lKj4oY2VsbCk7Ci0gICAg
cmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0LT53cmFw
cGVkKCkubWVtb3J5Q29zdCgpOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNP
YmplY3QsIHZtKSArIHRoaXNPYmplY3QtPndyYXBwZWQoKS5tZW1vcnlDb3N0KCk7CiB9CiAKIGJv
b2wgSlNJbnRlcmZhY2VOYW1lT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJ
bnRlcmZhY2VOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNJbnRlcmZhY2VOYW1lLmgKaW5kZXggYTEyMzE0ODlmYWYyODJhMzU5YzE3NGEwY2IyOGI2NTYz
ZDZhNzA2Zi4uOWRkYmJjM2U4ZGQ4YTY5MDNiYzZmZDIzZmU5NGQ5M2E4YzQzNmJmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNl
TmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBKU0ludGVyZmFjZU5hbWUgOiBw
dWJsaWMgSlNET01XcmFwcGVyPEludGVyZmFjZU5hbWU+IHsKICAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CiAgICAgc3RhdGljIEludGVyZmFjZU5hbWUqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlND
OjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7Cisg
ICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIEpTQzo6Vk0mKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKICAgICBERUNMQVJFX0lORk87Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344756</attachid>
            <date>2018-07-10 22:55:15 -0700</date>
            <delta_ts>2018-07-11 09:25:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187548-20180711145514.patch</filename>
            <type>text/plain</type>
            <size>43499</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OWNhNTJlNmRlMTE2NTk0N2RlZTMzNTYwNTIzMmY1Nzc3MTJjYmQwLi5lMDA2ZWNlN2ZkYTYzZDIy
YzhkNmY0ZTM1MmJjNjBiYzE0NTlmOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOC0wNy0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaHJlYWQgVk0mIHRvIEpTQ2VsbDo6bWV0aG9kVGFibGUo
Vk0mKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCB0aHJlYWRzIFZNJiB0byBtZXRob2RUYWJsZShWTSYpIGFuZCByZW1vdmUgbWV0aG9k
VGFibGUoKS4KKyAgICAgICAgV2UgYWRkIFZNJiBwYXJhbWV0ZXIgdG8gZXN0aW1hdGVkU2l6ZSgp
IHRvIHRocmVhZCBWTSYgaW4gZXN0aW1hdGVkU2l6ZSBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBBUEkvQVBJQ2FzdC5oOgorICAgICAgICAodG9KUyk6CisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFtZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpjbGFzc05hbWUpOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpHYXRoZXJIZWFwU25hcHNob3REYXRhOjpHYXRoZXJIZWFwU25hcHNob3REYXRhKToKKyAgICAg
ICAgKEpTQzo6R2F0aGVySGVhcFNuYXBzaG90RGF0YTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkhlYXA6OmdhdGhlckV4dHJhSGVhcFNuYXBzaG90RGF0YSk6CisgICAgICAgICog
aGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90
QnVpbGRlcjo6anNvbik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwOgorICAg
ICAgICAoSlNDOjpEaXJlY3RBcmd1bWVudHM6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAqIHJ1
bnRpbWUvRGlyZWN0QXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9IYXNoTWFwSW1wbC5j
cHA6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ+Ojplc3RpbWF0ZWRT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6ZXN0aW1h
dGVkU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICog
cnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojplc3RpbWF0ZWRT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmR1bXAgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmVzdGltYXRlZFNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGFzc05hbWUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojplc3RpbWF0ZWRTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2xhc3NOYW1lKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94
eTo6Y2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmVzdGltYXRlZFNp
emUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBsLmNwcDoK
KyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OmVzdGltYXRlZFNpemUp
OgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcEltcGwuaDoKKwogMjAxOC0wNy0wNSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUg
Z2V0VHlwZWRBcnJheUltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1Njk1MTA2MTJlOTY0YjYzMDAzNDQxNTc1
NjQwMjI1YjE3ZGZjMWY2Li5hM2RhODNhMTI3M2NjMjFiNDg0MzZhOGQ5ZWFjZWQ3MDJhNWMzZTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMDctMTAgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gVGhyZWFkIFZNJiB0byBK
U0NlbGw6Om1ldGhvZFRhYmxlKFZNJikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NQ29uc3RydWN0b3JCYXNlOjpjbGFzc05hbWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIp
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0ludGVyZmFjZU5hbWU6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaDoKKwogMjAxOC0wNy0xMCAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBmZXRjaCgpIHVzZSAic2FtZS1v
cmlnaW4iIGNyZWRlbnRpYWxzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0
LmgKaW5kZXggN2Q2ZDNmNzQ5MDQwNzM3NjJmYjViYjcyZmMwNjU2OTJkMmJlNTAwYi4uMmMyMjk3
NWRjNzE0MDk1YTExZWNiNjY5MWJmMGY3Zjk1MWFiZmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYXN0LmgKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogdG9K
UyhKU09iamVjdFJlZiBvKQogewogICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHVuY2hlY2tl
ZFRvSlMobyk7CiAgICAgaWYgKG9iamVjdCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0
LT5tZXRob2RUYWJsZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0LT5tZXRob2RU
YWJsZSgqb2JqZWN0LT52bSgpKSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA5YzQ3OGNlM2EyMGE5
MWRmZTBlYjE3YTVlYzAwMGUzYzk5Y2Y1OTQ1Li4xNjM2NDY5NjM4OWRlYzkwZTA1MGVkMjAwMGVh
ZTcyYzFkNzkyMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaApAQCAtMTk0LDcgKzE5NCw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgZmluYWwg
OiBwdWJsaWMgUGFyZW50IHsKICAgICB1c2luZyBQYXJlbnQ6Om1ldGhvZFRhYmxlOwogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAg
c3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogCiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNGEwNTkwMjdjN2M0MmM5ODQx
ZTAwZDU5OGYzMDJlMjA4N2FlODkwZC4uMGIyZjA0ZWY2ZjgxMDM3NTE0MzI5ZWVmODBiMGM2YWM5
ZTllNGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzMCwxNCArMTMwLDE0IEBAIHZvaWQgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+Ojppbml0KEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogdGVtcGxhdGUgPGNs
YXNzIFBhcmVudD4KLVN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFtZShj
b25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIFZNJiB2bSkKIHsKICAgICBjb25zdCBK
U0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTQ2FsbGJhY2tPYmpl
Y3QqPihvYmplY3QpOwogICAgIFN0cmluZyB0aGlzQ2xhc3NOYW1lID0gdGhpc09iamVjdC0+Y2xh
c3NSZWYoKS0+Y2xhc3NOYW1lKCk7CiAgICAgaWYgKCF0aGlzQ2xhc3NOYW1lLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRoaXNDbGFzc05hbWU7CiAgICAgCi0gICAgcmV0dXJuIFBhcmVudDo6
Y2xhc3NOYW1lKG9iamVjdCk7CisgICAgcmV0dXJuIFBhcmVudDo6Y2xhc3NOYW1lKG9iamVjdCwg
dm0pOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2YjFiNTU0MDUxMzc3YTNmYTUxYTI1Zjk4
MmZmYmFhNjUxYmEwYmIzLi41NzM4Y2I5YWZhNjE0ZWU2MGQwNzg0NTJmNzQzNmMzNjRkNjU2YmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
OTk5LDEzICs5OTksMTMgQEAgQ29kZUJsb2NrKiBDb2RlQmxvY2s6OnNwZWNpYWxPU1JFbnRyeUJs
b2NrT3JOdWxsKCkKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH0KIAotc2l6ZV90IENvZGVC
bG9jazo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3QgQ29kZUJsb2NrOjplc3Rp
bWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIENvZGVCbG9jayogdGhpc09i
amVjdCA9IGpzQ2FzdDxDb2RlQmxvY2sqPihjZWxsKTsKICAgICBzaXplX3QgZXh0cmFNZW1vcnlB
bGxvY2F0ZWQgPSB0aGlzT2JqZWN0LT5tX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pOwogICAgIGlmICh0aGlzT2JqZWN0LT5tX2ppdENvZGUpCiAgICAgICAgIGV4dHJh
TWVtb3J5QWxsb2NhdGVkICs9IHRoaXNPYmplY3QtPm1faml0Q29kZS0+c2l6ZSgpOwotICAgIHJl
dHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgZXh0cmFNZW1vcnlBbGxvY2F0ZWQ7Cisg
ICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCwgdm0pICsgZXh0cmFNZW1vcnlBbGxv
Y2F0ZWQ7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggODUxYjU4YjRmZTJkYTIyZGFlMzNlNTBlZDFkMjJhYmQ2NWU0YTg2Yi4u
NjY3YmQ2YTlhNmMzODg5ZDk5OTA1MmVmZTBjM2M2YTk4MmJiMTNkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTg4LDcgKzE4OCw3IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM2NzcKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lVmVyc2lv
bigpOwogCi0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0
YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZN
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAppbmRleCBmNWIxYmY3ODM2YzQzYTExYjM4Y2UwMzg2N2FkYTgzMGMyNjI5ODk1
Li4yNDhjODgxZjE4MTZmNmRmMmViOTk1MjE2MGMwNWEzOTVjZmU0ZmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAg
LTk0LDExICs5NCwxMSBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHZpc2l0b3IucmVwb3J0
RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPm1fdW5saW5rZWRJbnN0cnVjdGlvbnMtPnNp
emVJbkJ5dGVzKCkpOwogfQogCi1zaXplX3QgVW5saW5rZWRDb2RlQmxvY2s6OmVzdGltYXRlZFNp
emUoSlNDZWxsKiBjZWxsKQorc2l6ZV90IFVubGlua2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXpl
KEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIFVubGlua2VkQ29kZUJsb2NrKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7CiAgICAgc2l6ZV90IGV4dHJh
U2l6ZSA9IHRoaXNPYmplY3QtPm1fdW5saW5rZWRJbnN0cnVjdGlvbnMgPyB0aGlzT2JqZWN0LT5t
X3VubGlua2VkSW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRlcygpIDogMDsKLSAgICByZXR1cm4gQmFz
ZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGV4dHJhU2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0
aW1hdGVkU2l6ZShjZWxsLCB2bSkgKyBleHRyYVNpemU7CiB9CiAKIGludCBVbmxpbmtlZENvZGVC
bG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAppbmRleCBkNzZmOGM5YmRkODFiZjY3YWNhNWQ4NDMyNzllYzdhZDIxMzk2NzQ5Li4wYmRh
NGY1NjZmNjY1MDIwNTlmOTczYzVjMzRjY2Y0MzQ5YmY0ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNTA5LDcgKzUw
OSw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7Ci0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRp
YyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogCiBwdWJsaWM6CiAgICAgREVD
TEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuY3BwCmluZGV4IGQ1NDA0YjU2M2I1ZDRiODE2ZmU1NGUyYTM5MmE2YjIyMWJiM2MxZjUu
LmU1YWRhZDk4MDQzYTg4ODI4ZDFkYWM3MjJiYjQ2MDY3ZDIwOWQ2ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBEZWJ1Z2dlclNjb3BlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXh0
KTsKIH0KIAotU3RyaW5nIERlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCog
b2JqZWN0KQorU3RyaW5nIERlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCog
b2JqZWN0LCBWTSYgdm0pCiB7CiAgICAgY29uc3QgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nh
c3Q8Y29uc3QgRGVidWdnZXJTY29wZSo+KG9iamVjdCk7CiAgICAgLy8gV2UgY2Fubm90IGFzc2Vy
dCB0aGF0IHNjb3BlLT5pc1ZhbGlkKCkgYmVjYXVzZSB0aGUgVHlwZVByb2ZpbGVyIG1heSBlbmNv
dW50ZXIgYW4gaW52YWxpZGF0ZWQKQEAgLTc0LDcgKzc0LDcgQEAgU3RyaW5nIERlYnVnZ2VyU2Nv
cGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQogICAgIGlmICghc2NvcGUtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpOworICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0
LCB2bSk7CiB9CiAKIGJvb2wgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmgKaW5kZXggYjcxODViY2U0MDMxNzU0NjU2ZmE4NDg4NTlhNTA0N2IwMTIy
OWU3YS4uY2IyMWJhNGFmZjZhMGYxMzI0OTg3OGIxNDhlYTQ2Mjc3ZjlhNTIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIERlYnVnZ2VyU2NvcGUqIGNyZWF0ZShW
TSYgdm0sIEpTU2NvcGUqIHNjb3BlKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25z
dCBKU09iamVjdCopOworICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
KiwgVk0mKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IGI2YmM4ZDk3ZmE1ZGJlYzVkNmNlNzQwNjVlOTJhOWIzMTA1ZmQ2ODMuLmFlZjQ0YzM4OTM4Zjk3
ODEwNDAxNzkxMGNkZmM5ODYwODI4N2QwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCkBAIC03MTMsOCArNzEzLDkgQEAgYm9vbCBIZWFwOjppc0hlYXBTbmFwc2hvdHRpbmcoKSBj
b25zdAogfQogCiBzdHJ1Y3QgR2F0aGVySGVhcFNuYXBzaG90RGF0YSA6IE1hcmtlZEJsb2NrOjpD
b3VudEZ1bmN0b3IgewotICAgIEdhdGhlckhlYXBTbmFwc2hvdERhdGEoSGVhcFNuYXBzaG90QnVp
bGRlciYgYnVpbGRlcikKLSAgICAgICAgOiBtX2J1aWxkZXIoYnVpbGRlcikKKyAgICBHYXRoZXJI
ZWFwU25hcHNob3REYXRhKFZNJiB2bSwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcikKKyAg
ICAgICAgOiBtX3ZtKHZtKQorICAgICAgICAsIG1fYnVpbGRlcihidWlsZGVyKQogICAgIHsKICAg
ICB9CiAKQEAgLTcyMiwxMSArNzIzLDEyIEBAIHN0cnVjdCBHYXRoZXJIZWFwU25hcHNob3REYXRh
IDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7CiAgICAgewogICAgICAgICBpZiAoaXNKU0Nl
bGxLaW5kKGtpbmQpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxK
U0NlbGwqPihoZWFwQ2VsbCk7Ci0gICAgICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5oZWFw
U25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgICAgIGNlbGwtPm1ldGhvZFRhYmxl
KG1fdm0pLT5oZWFwU25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKKyAgICBWTSYgbV92
bTsKICAgICBIZWFwU25hcHNob3RCdWlsZGVyJiBtX2J1aWxkZXI7CiB9OwogCkBAIC03MzQsNyAr
NzM2LDcgQEAgdm9pZCBIZWFwOjpnYXRoZXJFeHRyYUhlYXBTbmFwc2hvdERhdGEoSGVhcFByb2Zp
bGVyJiBoZWFwUHJvZmlsZXIpCiB7CiAgICAgaWYgKEhlYXBTbmFwc2hvdEJ1aWxkZXIqIGJ1aWxk
ZXIgPSBoZWFwUHJvZmlsZXIuYWN0aXZlU25hcHNob3RCdWlsZGVyKCkpIHsKICAgICAgICAgSGVh
cEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgICAgIEdhdGhl
ckhlYXBTbmFwc2hvdERhdGEgZnVuY3RvcigqYnVpbGRlcik7CisgICAgICAgIEdhdGhlckhlYXBT
bmFwc2hvdERhdGEgZnVuY3RvcigqbV92bSwgKmJ1aWxkZXIpOwogICAgICAgICBtX29iamVjdFNw
YWNlLmZvckVhY2hMaXZlQ2VsbChoZWFwSXRlcmF0aW9uU2NvcGUsIGZ1bmN0b3IpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAKaW5kZXggNjVmNjMzZmFjZGEyYzc4NTY4MGE4NWU3ODlmOGFlZjQ4OTc5MjY0My4uNGQ0
NmVhZjNmN2ZkNmU0ZGFlMTFiNzBkZDA5YmY1MTIxNTIwMTViMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTI0MCw3ICsy
NDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihzdGQ6OmZ1bmN0aW9uPGJv
b2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYQogICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwogICAgICAgICBqc29uLmFwcGVuZE51bWJlcihub2RlLmlkZW50aWZpZXIpOwogICAgICAgICBq
c29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihub2RlLmNlbGwtPmVz
dGltYXRlZFNpemVJbkJ5dGVzKCkpOworICAgICAgICBqc29uLmFwcGVuZE51bWJlcihub2RlLmNl
bGwtPmVzdGltYXRlZFNpemVJbkJ5dGVzKHZtKSk7CiAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7
CiAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGNsYXNzTmFtZUluZGV4KTsKICAgICAgICAganNv
bi5hcHBlbmQoJywnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcAppbmRleCA0Nzc0NzUwNTQ5MTEyODNhZDMwZmM4N2UwY2ViMzU4MmRlOThh
ZGIxLi43ZTkxOTUwOWI2MGFlZjc0MzhlMmI1ODE1OTQwYTBjMDVjMDYwMzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC01NDgs
NyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGlmIChVTkxJS0VMWShjdXN0b21Kb2luQ2Fz
ZSkpIHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltv
YmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVj
dCwgdm0pLCAiXSIpKTsKICAgICB9CiAKICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBj
YWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJy
YXkgYXMgdGhlIHRoaXMgdmFsdWUgYW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBkNWNmZmI2OTAzYjUwMmM1
NmU5OWY4MTVjYzMwZGQxNjNkYWU5NmRkLi5kODI1YTkxZDI0YzJiYWFiM2RhY2QxNzBkZGI3ZjVj
MzhlZmYxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFz
c0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApA
QCAtODksNyArODksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIEdldFByb3BlcnR5TmFt
ZXNGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGdldFN0cnVjdHVyZVByb3BlcnR5
TmFtZXMpOwogICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxF
X0VOVFJZKGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKTsKIAotICAgIHVzaW5nIENsYXNzTmFtZUZ1
bmN0aW9uUHRyID0gU3RyaW5nICgqKShjb25zdCBKU09iamVjdCopOworICAgIHVzaW5nIENsYXNz
TmFtZUZ1bmN0aW9uUHRyID0gU3RyaW5nICgqKShjb25zdCBKU09iamVjdCosIFZNJik7CiAgICAg
Q2xhc3NOYW1lRnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShjbGFzc05hbWUpOwog
CiAgICAgdXNpbmcgVG9TdHJpbmdOYW1lRnVuY3Rpb25QdHIgPSBTdHJpbmcgKCopKGNvbnN0IEpT
T2JqZWN0KiwgRXhlY1N0YXRlKik7CkBAIC0xMTksNyArMTE5LDcgQEAgc3RydWN0IE1ldGhvZFRh
YmxlIHsKICAgICB1c2luZyBIZWFwU25hcHNob3RGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2Vs
bCosIEhlYXBTbmFwc2hvdEJ1aWxkZXImKTsKICAgICBIZWFwU25hcHNob3RGdW5jdGlvblB0ciBX
VEZfTUVUSE9EX1RBQkxFX0VOVFJZKGhlYXBTbmFwc2hvdCk7CiAKLSAgICB1c2luZyBFc3RpbWF0
ZWRTaXplRnVuY3Rpb25QdHIgPSBzaXplX3QgKCopKEpTQ2VsbCopOworICAgIHVzaW5nIEVzdGlt
YXRlZFNpemVGdW5jdGlvblB0ciA9IHNpemVfdCAoKikoSlNDZWxsKiwgVk0mKTsKICAgICBFc3Rp
bWF0ZWRTaXplRnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShlc3RpbWF0ZWRTaXpl
KTsKIAogICAgIHVzaW5nIFZpc2l0T3V0cHV0Q29uc3RyYWludHNQdHIgPSB2b2lkICgqKShKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RpcmVjdEFyZ3VtZW50cy5jcHAKaW5kZXggZjkxMGYwOTBmNTUzOTY1Mzg0YWUxMTkxNjAyODc5
YzgxNjcxY2Y4OC4uZTAwMWJlMjk0YjY2ODI5ZDEzN2FmY2I3YjFiMjBkZmVmMzIzY2M2NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3Bw
CkBAIC04MywxMiArODMsMTIgQEAgRGlyZWN0QXJndW1lbnRzKiBEaXJlY3RBcmd1bWVudHM6OmNy
ZWF0ZUJ5Q29weWluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c2l6ZV90IERpcmVjdEFyZ3VtZW50czo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXpl
X3QgRGlyZWN0QXJndW1lbnRzOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQog
ewogICAgIERpcmVjdEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxEaXJlY3RBcmd1bWVu
dHMqPihjZWxsKTsKICAgICBzaXplX3QgbWFwcGVkQXJndW1lbnRzU2l6ZSA9IHRoaXNPYmplY3Qt
Pm1fbWFwcGVkQXJndW1lbnRzID8gdGhpc09iamVjdC0+bWFwcGVkQXJndW1lbnRzU2l6ZSgpICog
c2l6ZW9mKGJvb2wpIDogMDsKICAgICBzaXplX3QgbW9kaWZpZWRBcmd1bWVudHNTaXplID0gdGhp
c09iamVjdC0+bV9tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IgPyB0aGlzT2JqZWN0LT5tX2xl
bmd0aCAqIHNpemVvZihib29sKSA6IDA7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUo
Y2VsbCkgKyBtYXBwZWRBcmd1bWVudHNTaXplICsgbW9kaWZpZWRBcmd1bWVudHNTaXplOworICAg
IHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIG1hcHBlZEFyZ3VtZW50c1Np
emUgKyBtb2RpZmllZEFyZ3VtZW50c1NpemU7CiB9CiAKIHZvaWQgRGlyZWN0QXJndW1lbnRzOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc0NlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAppbmRleCA0
OGU5YmUwYTI2OWI1NjlkMmNkMTdlNGU4MWU3NWNhODYxMDI0Nzk4Li4xYTJjYzZmMTA1N2VmY2Rj
MWUzOTVlMmY1ZjVkZDc4N2YxZDhlZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RBcmd1bWVudHMuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBEaXJlY3RB
cmd1bWVudHMgZmluYWwgOiBwdWJsaWMgR2VuZXJpY0FyZ3VtZW50czxEaXJlY3RBcmd1bWVudHM+
IHsKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnkgY29weWluZyB0aGUgYXJn
dW1uZXRzIGZyb20gdGhlIHN0YWNrLgogICAgIHN0YXRpYyBEaXJlY3RBcmd1bWVudHMqIGNyZWF0
ZUJ5Q29weWluZyhFeGVjU3RhdGUqKTsKIAotICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6
ZShKU0NlbGwqKTsKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0m
KTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgCiAgICAgdWludDMyX3QgaW50ZXJuYWxMZW5ndGgoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuY3BwCmluZGV4IDVjNzU3ZTU1YWE5ZTUz
N2M4NjdkZjA5ZDllMmJjOTUwNjk2NGRjMzguLjNjMmE4MmI2MGEwZDM5MWRjM2I1M2MwMjM4YzVj
Y2ZkZGRjNThhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFw
SW1wbC5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0
Pjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG8KIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBCdWNrZXQ+Ci1zaXplX3QgSGFzaE1hcEltcGw8SGFz
aE1hcEJ1Y2tldD46OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQorc2l6ZV90IEhhc2hNYXBJ
bXBsPEhhc2hNYXBCdWNrZXQ+Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQog
ewotICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgc3RhdGljX2Nhc3Q8SGFz
aE1hcEltcGw8SGFzaE1hcEJ1Y2tldD4qPihjZWxsKS0+YXBwcm94aW1hdGVTaXplKCk7CisgICAg
cmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCwgdm0pICsgc3RhdGljX2Nhc3Q8SGFzaE1h
cEltcGw8SGFzaE1hcEJ1Y2tldD4qPihjZWxsKS0+YXBwcm94aW1hdGVTaXplKCk7CiB9CiAKIGNv
bnN0IENsYXNzSW5mbyogZ2V0SGFzaE1hcEJ1Y2tldEtleUNsYXNzSW5mbygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAppbmRleCA3ZDk0OWMyZTgyYjI3OTkx
NWIxODc0Yzc5ZWVlYzFkOTc5NzAyZjEyLi42OTJhNWY5NThlMzMxMWVmZDM4ZGNkNjcyZDBiMmJi
ZTgxMTFjYWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNo
TWFwSW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
LmgKQEAgLTM0Niw3ICszNDYsNyBAQCBjbGFzcyBIYXNoTWFwSW1wbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAotICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsK
KyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKIAogICAgIEhh
c2hNYXBJbXBsKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmNwcAppbmRleCAzYTY0YzM0ZjEwNzdkYzAzYzM3OWExZWI4NmVhNDM1ZWI3MmRhMDA5
Li42ZjdjNTI3ZjEzMjFiZjU1YTI4Mzc4ZmNkODI2ODBjMWYzZTFiN2I4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtNzgsMTEgKzc4
LDExIEBAIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgSlNBcnJheUJ1ZmZlcjo6c2hhcmluZ01vZGUo
KSBjb25zdAogICAgIHJldHVybiBpbXBsKCktPnNoYXJpbmdNb2RlKCk7CiB9CiAKLXNpemVfdCBK
U0FycmF5QnVmZmVyOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3NpemVfdCBKU0FycmF5
QnVmZmVyOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewogICAgIEpTQXJy
YXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGNlbGwpOwogICAg
IHNpemVfdCBidWZmZXJFc3RpbWF0ZWRTaXplID0gdGhpc09iamVjdC0+aW1wbCgpLT5nY1NpemVF
c3RpbWF0ZUluQnl0ZXMoKTsKLSAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSAr
IGJ1ZmZlckVzdGltYXRlZFNpemU7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2Vs
bCwgdm0pICsgYnVmZmVyRXN0aW1hdGVkU2l6ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggMmY1
YTVmOTA2ZmYzMGRhODZmYzJjMDVmYTkwNTYxOTYwOTgzMWY2ZC4uOGZkZmM1M2NhYTRkMzc4OWQ2
NjZlNTg4YjJkYmZkMTkxZWE2N2VlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVy
IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBBcnJheUJ1ZmZl
ciogdG9XcmFwcGVkKFZNJiwgSlNWYWx1ZSk7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGlj
IHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1h
dGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogCiBwcml2YXRlOgogICAgIFBvaXNvbmVkPEpTQXJyYXlC
dWZmZXJQb2lzb24sIEFycmF5QnVmZmVyKj4gbV9pbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDI3ZGYxZjQxZGNhY2I5OWM2MjdlYzJlZjYyNDMx
Y2Y3ZmRjYWFlMGQuLmJhMzU1YmQ3NDNhM2U4NzY0ODA5YThmMjdkMzllZWE0YjY5ZTZhM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTExODMsOSAr
MTE4Myw5IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXNpemVfdCBKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitzaXplX3Qg
SlNCaWdJbnQ6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7Ci0gICAgcmV0
dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxsKS0+
bV9sZW5ndGggKiBzaXplb2YoRGlnaXQpOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwsIHZtKSArIGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpLT5tX2xlbmd0aCAqIHNpemVvZihE
aWdpdCk7CiB9CiAKIGRvdWJsZSBKU0JpZ0ludDo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggNGFmN2E1
ZjdmMjQzNjZjMzc0NTBjOTY0MmU0MTI2MDViMDYwNDNkNS4uNWI3ZGI3NDBmZTY3NzNkZDVlZDZj
NjA3Y2IzNzllMDc2NzViOWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25lLCBXaXRoWmVy
byB9OwogICAgIHZvaWQgaW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGUpOwogCi0gICAgc3Rh
dGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0
aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAppbmRleCA3MDU5YWI4YmRjYWQxY2FlMDIyNWQ2MGZkOWNiNzI4MTAy
YzRjMGMzLi4wNzMxODI3YWYyYTFkYTlhZWJkNTdkMmNjMWU4YjQwNDlkYjE1ZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9p
ZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIEpTQ2VsbDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG1ldGhvZFRhYmxlKCktPmR1bXBUb1N0cmVhbSh0
aGlzLCBvdXQpOworICAgIG1ldGhvZFRhYmxlKCp2bSgpKS0+ZHVtcFRvU3RyZWFtKHRoaXMsIG91
dCk7CiB9CiAKIHZvaWQgSlNDZWxsOjpkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQ
cmludFN0cmVhbSYgb3V0KQpAQCAtNTQsMTIgKzU0LDEyIEBAIHZvaWQgSlNDZWxsOjpkdW1wVG9T
dHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQcmludFN0cmVhbSYgb3V0KQogICAgIG91dC5wcmlu
dGYoIjwlcCwgJXM+IiwgY2VsbCwgY2VsbC0+Y2xhc3NOYW1lKCpjZWxsLT52bSgpKSk7CiB9CiAK
LXNpemVfdCBKU0NlbGw6OmVzdGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3QKK3NpemVfdCBKU0Nl
bGw6OmVzdGltYXRlZFNpemVJbkJ5dGVzKFZNJiB2bSkgY29uc3QKIHsKLSAgICByZXR1cm4gbWV0
aG9kVGFibGUoKS0+ZXN0aW1hdGVkU2l6ZShjb25zdF9jYXN0PEpTQ2VsbCo+KHRoaXMpKTsKKyAg
ICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5lc3RpbWF0ZWRTaXplKGNvbnN0X2Nhc3Q8SlNDZWxs
Kj4odGhpcyksIHZtKTsKIH0KIAotc2l6ZV90IEpTQ2VsbDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwq
IGNlbGwpCitzaXplX3QgSlNDZWxsOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mKQog
ewogICAgIHJldHVybiBjZWxsLT5jZWxsU2l6ZSgpOwogfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZv
aWQgSlNDZWxsOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotU3RyaW5nIEpTQ2VsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KikKK1N0cmluZyBK
U0NlbGw6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJikKIHsKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggOWVhNzBmZDJkNmI5MzQ2MDMzZjc0Mzc3YzRjNTE0
NGQ0OTVkMzMzZS4uOWU4YmE2MGQ5ZjYyMWU0OTg4MWZlMjIwMjZjYWZkYWE4ZWE3ZWRhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE3MCw4ICsxNzAsOCBAQCBj
bGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVh
bShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwogCi0gICAgc2l6ZV90IGVzdGltYXRlZFNp
emVJbkJ5dGVzKCkgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBl
c3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHNpemVfdCBlc3RpbWF0ZWRTaXplSW5CeXRlcyhW
TSYpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqLCBWTSYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTE4MCw3ICsxODAsNiBAQCBjbGFzcyBKU0Nl
bGwgOiBwdWJsaWMgSGVhcENlbGwgewogCiAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGgg
dGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KICAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbyhWTSYpIGNvbnN0OwotICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgp
IGNvbnN0OwogICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZShWTSYpIGNvbnN0Owog
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKQEAgLTI1OSw3ICsyNTgsNyBAQCBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVh
cENlbGwgewogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90
eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgYm9vbCk7CiAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggSlNWYWx1ZSBnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVj
U3RhdGUqKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7
CisgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggY2RhNmExZWNiOTliYzMzNjVhZTI2OWI2
YjI3MGYzODk4MGEzNTQ1Yy4uZjY5YjM4MDNkNmEyMjRmYzExYTY2Yjg5NWMxZGM2NjAxY2U1MmJi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApA
QCAtMjg3LDExICsyODcsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNDZWxsOjpzZXRTdHJ1Y3R1
cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB2bS5oZWFwLndyaXRlQmFycmll
cih0aGlzLCBzdHJ1Y3R1cmUpOwogfQogCi1pbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2Vs
bDo6bWV0aG9kVGFibGUoKSBjb25zdAotewotICAgIHJldHVybiBtZXRob2RUYWJsZSgqdm0oKSk7
Ci19Ci0KIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZShWTSYg
dm0pIGNvbnN0CiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZmZkZDhlNDQ4YzVlYjhmYWUwYTc3ZDU5YzRlYjg5YmIx
YjViMDEwMC4uODY0MjAzNTc2NzM3YzQxYWYwNDBlYTFlYjBjODUyYjEwNjY1NzQxNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCkBAIC0yODUsNyArMjg1LDcgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgIAogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRl
ZFNpemUoSlNDZWxsKik7CisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCos
IFZNJik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAxNDQ3NzNm
MmE2MDU5MDA3MjEyYjhhMmMxYjM3Y2E0MGI1ZTNiMTRkLi41YjJkMWZiZTU4N2JkM2QyZWE0ODky
Nzc0NGYzOGFjMzE5MDg4ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNTAw
LDE2ICs1MDAsMTYgQEAgdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0
T3duUHJvcGVydHlOYW1lcygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLXNpemVf
dCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwq
IGNlbGwpCitzaXplX3QgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmVzdGltYXRl
ZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsK
IAogICAgIGlmICh0aGlzT2JqZWN0LT5tX21vZGUgPT0gT3ZlcnNpemVUeXBlZEFycmF5KQotICAg
ICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0KSArIHRoaXNPYmplY3Qt
PmJ5dGVTaXplKCk7CisgICAgICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmpl
Y3QsIHZtKSArIHRoaXNPYmplY3QtPmJ5dGVTaXplKCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPm1f
bW9kZSA9PSBGYXN0VHlwZWRBcnJheSAmJiB0aGlzT2JqZWN0LT5tX3ZlY3RvcikKLSAgICAgICAg
cmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0LT5ieXRl
U2l6ZSgpOworICAgICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0LCB2
bSkgKyB0aGlzT2JqZWN0LT5ieXRlU2l6ZSgpOwogCi0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRl
ZFNpemUodGhpc09iamVjdCk7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09i
amVjdCwgdm0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDdkZGM4MjVjMDEwOTVlN2RhNmEy
Mjc5Yjg3M2RiMzFjYjRiMWY5MmYuLjE1ZTQxMWNhNDE5MWY4OTI0YWI3NGVhYzg2Yzg4NmRkZDI5
YmE5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTQyMywxMSArNDIzLDExIEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU09iamVjdDo6dmlz
aXRCdXR0ZXJmbHlJbXBsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHJldHVybiBzdHJ1Y3R1
cmU7CiB9CiAKLXNpemVfdCBKU09iamVjdDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCitz
aXplX3QgSlNPYmplY3Q6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKLSAgICBz
aXplX3QgYnV0dGVyZmx5T3V0T2ZMaW5lU2l6ZSA9IHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ID8g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKSA6IDA7Ci0gICAgcmV0dXJu
IEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBidXR0ZXJmbHlPdXRPZkxpbmVTaXplOworICAg
IHNpemVfdCBidXR0ZXJmbHlPdXRPZkxpbmVTaXplID0gdGhpc09iamVjdC0+bV9idXR0ZXJmbHkg
PyB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVTaXplKCkgOiAwOworICAgIHJl
dHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwsIHZtKSArIGJ1dHRlcmZseU91dE9mTGluZVNp
emU7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKQEAgLTUwNywxOCArNTA3LDE5IEBAIHZvaWQgSlNGaW5hbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogI2Vu
ZGlmCiB9CiAKLVN0cmluZyBKU09iamVjdDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QpCitTdHJpbmcgSlNPYmplY3Q6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBW
TSYgdm0pCiB7Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8o
Km9iamVjdC0+dm0oKSk7CisgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFz
c0luZm8odm0pOwogICAgIEFTU0VSVChpbmZvKTsKICAgICByZXR1cm4gaW5mby0+Y2xhc3NOYW1l
OwogfQogCi1TdHJpbmcgSlNPYmplY3Q6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqKQorU3RyaW5nIEpTT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIGNvbnN0IENsYXNzSW5mbyog
aW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKCpvYmplY3QtPnZtKCkpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8o
dm0pOwogICAgIEFTU0VSVChpbmZvKTsKLSAgICByZXR1cm4gaW5mby0+bWV0aG9kVGFibGUuY2xh
c3NOYW1lKG9iamVjdCk7CisgICAgcmV0dXJuIGluZm8tPm1ldGhvZFRhYmxlLmNsYXNzTmFtZShv
YmplY3QsIHZtKTsKIH0KIAogU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpT
T2JqZWN0KiBvYmplY3QpCkBAIC01NTIsNyArNTUzLDcgQEAgU3RyaW5nIEpTT2JqZWN0OjpjYWxj
dWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhj
ZXB0aW9uKCk7CiAKICAgICBpZiAocHJvdG90eXBlRnVuY3Rpb25OYW1lLmlzTnVsbCgpIHx8IHBy
b3RvdHlwZUZ1bmN0aW9uTmFtZSA9PSAiT2JqZWN0IikgewotICAgICAgICBTdHJpbmcgdGFibGVD
bGFzc05hbWUgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKG9iamVjdCk7Cisg
ICAgICAgIFN0cmluZyB0YWJsZUNsYXNzTmFtZSA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5j
bGFzc05hbWUob2JqZWN0LCB2bSk7CiAgICAgICAgIGlmICghdGFibGVDbGFzc05hbWUuaXNOdWxs
KCkgJiYgdGFibGVDbGFzc05hbWUgIT0gIk9iamVjdCIpCiAgICAgICAgICAgICByZXR1cm4gdGFi
bGVDbGFzc05hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmlu
ZGV4IDk0MTQxMmFiOWI2ZjE1YTMxMWRkN2YwZDg4MGJjNmY1ZGIxOWUzMzkuLmMxMWQwNTA5Mzdi
MjI0MTIwNGQwMzcwOWFhMGRjNWM4YzQwYjU4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtMTE0LDExICsxMTQsMTEgQEAgY2xhc3MgSlNPYmplY3QgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBp
cyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgogICAgIHN0YXRpYyBKU09iamVjdCogY3Jl
YXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRl
cmZseSogPSBudWxscHRyKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3Qg
ZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc2l6
ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaGVhcFNuYXBzaG90KEpTQ2VsbCosIEhlYXBTbmFw
c2hvdEJ1aWxkZXImKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJpbmcgY2FsY3VsYXRlZENsYXNzTmFtZShKU09iamVjdCopOwogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyB3aGF0IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSB3aWxs
IHVzZSB0byBnZXQgdGhlIG5hbWUgb2YKQEAgLTc2MCw3ICs3NjAsNyBAQCBjbGFzcyBKU09iamVj
dCA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIFlvdSBzaG91bGQgb25seSBjYWxsIGlzU3RydWN0
dXJlRXh0ZW5zaWJsZSgpIHdoZW46CiAgICAgLy8gLSBQZXJmb3JtaW5nIHRoaXMgY2hlY2sgaW4g
YSB3YXkgdGhhdCBpc24ndCBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24gCiAgICAgLy8g
ICBhcyBjYWxsaW5nIHRoZSB2aXJ0dWFsIFtbSXNFeHRlbnNpYmxlXV0gdHJhcC4KLSAgICAvLyAt
IFdoZW4geW91J3JlIGd1YXJhbnRlZWQgdGhhdCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmlzRXh0
ZW5zaWJsZSBpc24ndAorICAgIC8vIC0gV2hlbiB5b3UncmUgZ3VhcmFudGVlZCB0aGF0IG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5pc0V4dGVuc2libGUgaXNuJ3QKICAgICAvLyAgIG92ZXJyaWRk
ZW4uCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU3RydWN0dXJlRXh0ZW5zaWJsZShWTSYgdm0p
IHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpOyB9CiAgICAg
Ly8gWW91IHNob3VsZCBjYWxsIHRoaXMgd2hlbiBwZXJmb3JtaW5nIFtbSXNFeHRlbnNpYmxlXV0g
dHJhcCBpbiBhIHBsYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CmluZGV4IGRmMTM2ZmIzNmY1YjI0NzUzNDQwMzk2OTdjYjQzMmM3NWIxMzYzMTMuLmJmMTg3ZDhm
Zjg4NTI4NjhlOTM2OTRhNmQ2NjRiYjFkMGI3YTJlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC00OSwxMCArNDksMTAgQEAgdm9pZCBKU1Byb3h5Ojpz
ZXRUYXJnZXQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHNldFBy
b3RvdHlwZURpcmVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pKTsK
IH0KIAotU3RyaW5nIEpTUHJveHk6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQor
U3RyaW5nIEpTUHJveHk6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0p
CiB7CiAgICAgY29uc3QgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU1Byb3h5
Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxl
KCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT50YXJnZXQoKSk7CisgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT50YXJn
ZXQoKSwgdm0pOwogfQogCiBTdHJpbmcgSlNQcm94eTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJveHkuaAppbmRleCBiNDA3YWY3ZjNlNDRlOTg0OTQwM2ZlYmU2YTRlNTU2NWQwMjM4MzFm
Li4wYmQzNWM5ZDZmYTY3Yjg5MmI1Y2NhNjE2OWJlZDA3YjJmNjY4NTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIEpTUHJv
eHkgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmpl
Y3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25z
dCBKU09iamVjdCosIFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyB0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5jcHAKaW5kZXggNjQwYmI4NDhjYTZkYjllODY4NGMyZDZkN2E3MTg3YmYy
ZTk2MmI5Ni4uMDkyZDc0OTdlMmM5MTNlYTI3ZGVlMmZlMjlkY2Q2OWY3NTliNTU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAtODMsMTIgKzgzLDEy
IEBAIGJvb2wgSlNTdHJpbmc6OmVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmlu
Zyogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6ZXF1YWwoKnN0cjEuaW1wbCgpLCAqc3Ry
Mi5pbXBsKCkpOwogfQogCi1zaXplX3QgSlNTdHJpbmc6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBj
ZWxsKQorc2l6ZV90IEpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZt
KQogewogICAgIEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0gYXNTdHJpbmcoY2VsbCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzUm9wZSgpKQotICAgICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6
ZShjZWxsKTsKLSAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIHRoaXNPYmpl
Y3QtPm1fdmFsdWUuaW1wbCgpLT5jb3N0RHVyaW5nR0MoKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6
OmVzdGltYXRlZFNpemUoY2VsbCwgdm0pOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwsIHZtKSArIHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpLT5jb3N0RHVyaW5nR0MoKTsK
IH0KIAogdm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5k
ZXggYzc1NTkxMTgwNmEzOTU4NjA3NDU0ZDY0OGRjNzA3ZjUyZGJkMTQ5ZS4uN2M3NjkwOTQ3Mjkz
NzBjMDY1MmE3YmUwODY1NjYzM2Y5NmQ2MDE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC0xODUsNyArMTg1LDcgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgc3RhdGljIHZvaWQg
ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7Ci0gICAgc3RhdGljIHNp
emVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5jcHAKaW5kZXggNDFlMDA1ZTFhYzc1N2Y4YzBjNTA1YzNiNDQ1MWI4OTU4YWEy
MWFkZi4uMDUzOTliMjIxMjY2ZmYxYTFkMjlhOTA0ZTNiNDA1MTVkNzcxNzI3MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0yMzgsMTQgKzIzOCwxNCBAQCB2
b2lkIFJlZ0V4cDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+UmVnRXhw
Ojp+UmVnRXhwKCk7CiB9CiAKLXNpemVfdCBSZWdFeHA6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBj
ZWxsKQorc2l6ZV90IFJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2bSkK
IHsKICAgICBSZWdFeHAqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihjZWxsKTsK
ICAgICBzaXplX3QgcmVnZXhEYXRhU2l6ZSA9IHRoaXNPYmplY3QtPm1fcmVnRXhwQnl0ZWNvZGUg
PyB0aGlzT2JqZWN0LT5tX3JlZ0V4cEJ5dGVjb2RlLT5lc3RpbWF0ZWRTaXplSW5CeXRlcygpIDog
MDsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgcmVnZXhEYXRhU2l6ZSArPSB0aGlzT2JqZWN0
LT5tX3JlZ0V4cEpJVENvZGUuc2l6ZSgpOwogI2VuZGlmCi0gICAgcmV0dXJuIEJhc2U6OmVzdGlt
YXRlZFNpemUoY2VsbCkgKyByZWdleERhdGFTaXplOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0
ZWRTaXplKGNlbGwsIHZtKSArIHJlZ2V4RGF0YVNpemU7CiB9CiAKIFJlZ0V4cCogUmVnRXhwOjpj
cmVhdGVXaXRob3V0Q2FjaGluZyhWTSYgdm0sIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywg
UmVnRXhwRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmlu
ZGV4IDA1Y2U1YzBlYzVhMmVjZTk5ODlmOGUzZTg1MDdjYWNkZjc2ZmE3YjMuLmRlMjU2ZTFmMjVk
N2RlZDYyM2NhN2QwYWZlZDJiY2UwNGI1ZGI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShW
TSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwogICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7Ci0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAg
IHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqLCBQcmludFN0
cmVhbSYpOwogCiAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxh
Z0dsb2JhbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcEltcGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwu
Y3BwCmluZGV4IDBlMzFiZDY4M2Q2Yjc5YzY3OWU0ODQ5Zjg4ZmQxYmY0YzAyNWQ3MDguLmU3Y2Fj
YTkwY2Y2YzFiNzk3N2Q2MGQxZjJhODhmNmIyNTQxMmQ0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQCB2b2lk
IFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ+Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0bwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgV2Vha01hcEJ1Y2tl
dD4KLXNpemVfdCBXZWFrTWFwSW1wbDxXZWFrTWFwQnVja2V0Pjo6ZXN0aW1hdGVkU2l6ZShKU0Nl
bGwqIGNlbGwpCitzaXplX3QgV2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OmVzdGltYXRlZFNp
emUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYWtNYXBJbXBsKj4oY2VsbCk7Ci0gICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNp
emUodGhpc09iamVjdCkgKyAoc2l6ZW9mKFdlYWtNYXBJbXBsKSAtIHNpemVvZihCYXNlKSkgKyB0
aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6ZW9mKFdlYWtNYXBCdWNrZXQpOworICAgIHJldHVy
biBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QsIHZtKSArIChzaXplb2YoV2Vha01hcElt
cGwpIC0gc2l6ZW9mKEJhc2UpKSArIHRoaXNPYmplY3QtPm1fY2FwYWNpdHkgKiBzaXplb2YoV2Vh
a01hcEJ1Y2tldCk7CiB9CiAKIHRlbXBsYXRlIDw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcEltcGwuaAppbmRleCAwODhiYWM1ZmNmNjE2OTAxZWZkMzU3OTE1NzVjN2M0
NjJkZGEzMTE2Li41MjU4Y2JjMmQzZTEwN2I2ZjExODEzMmJjNjhmNmQyMGQ1ZTUxMDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgKQEAgLTIwMyw3ICsy
MDMsNyBAQCBjbGFzcyBXZWFrTWFwSW1wbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKLSAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CisgICAgc3RhdGlj
IHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZNJik7CiAKICAgICBXZWFrTWFwSW1wbChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFz
ZS5oCmluZGV4IGZlZTU2NDgzNTUzNWQ3ZWFmY2EwY2FlODc1MTAwZjVmNmI3NDk4MTUuLmNkMjRj
MDgzNzAyZWM3MjllM2M0MmEzZmJiOTE3NTI5ZTVlODcxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yQmFzZSA6IHB1YmxpYyBKU0RPTU9iamVjdCB7CiAgICAg
ewogICAgIH0KIAotICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7
CisgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0M6OlZNJik7
CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgSlNDOjpDYWxs
RGF0YSYpOwogfTsKIApAQCAtNDYsNyArNDYsNyBAQCBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpT
RE9NQ29uc3RydWN0b3JCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6Sgog
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAotaW5saW5lIFN0cmluZyBKU0RPTUNvbnN0cnVjdG9yQmFzZTo6Y2xhc3NOYW1l
KGNvbnN0IEpTT2JqZWN0KikKK2lubGluZSBTdHJpbmcgSlNET01Db25zdHJ1Y3RvckJhc2U6OmNs
YXNzTmFtZShjb25zdCBKU09iamVjdCosIEpTQzo6Vk0mKQogewogICAgIHJldHVybiAiRnVuY3Rp
b24iX3M7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCA3NjY5ZWM3ZjJlN2YwN2FlMjRlMDM2ZTIyNzAz
YTA4ZjI4NTRiYThiLi40MGYyNjE3MTQ2YTIwNjE2MzE2MGM4NThlYmE4NjUzOTMyODA0ZDQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAKQEAgLTE2OCw3ICsxNjgsOCBAQCBDYWxsVHlwZSBwbHVnaW5FbGVtZW50
Q3VzdG9tR2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgQ2FsbERhdGEmIGNhbGxE
YQogICAgIGlmIChKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0RnJv
bVBsdWdpblZpZXdCYXNlKGVsZW1lbnQpKSB7CiAgICAgICAgIENhbGxEYXRhIHNjcmlwdE9iamVj
dENhbGxEYXRhOwogICAgICAgICAKLSAgICAgICAgaWYgKHNjcmlwdE9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0Q2FsbERhdGEoc2NyaXB0T2JqZWN0LCBzY3JpcHRPYmplY3RDYWxsRGF0YSkgPT0g
Q2FsbFR5cGU6Ok5vbmUpCisgICAgICAgIFZNJiB2bSA9ICpzY3JpcHRPYmplY3QtPnZtKCk7Cisg
ICAgICAgIGlmIChzY3JpcHRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoc2Ny
aXB0T2JqZWN0LCBzY3JpcHRPYmplY3RDYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAg
ICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7CiAKICAgICAgICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY2FsbFBsdWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjVlZDUwN2IxNDA2NDIwODcxZjk5NjAz
ZjJhOTgyNTQzNzA0YTZjNC4uZDlkNDU4MzFlZTkxMTBmNTVkZjRkYjg4ZTk0NGE0Njk0NzQ4ZTU2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KQEAgLTI2NTAsNyArMjY1MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0K
ICAgICAKICAgICBpZiAoSW5zdGFuY2VOZWVkc0VzdGltYXRlZFNpemUoJGludGVyZmFjZSkpIHsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRl
ZFNpemUoSlNDZWxsKik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgSlNDOjpWTSYpO1xuIik7CiAgICAg
fQogICAgIAogICAgIGlmICghJGhhc1BhcmVudCkgewpAQCAtNDUwNSwxMCArNDUwNSwxMCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU5lZWRz
RXN0aW1hdGVkU2l6ZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
InNpemVfdCAke2NsYXNzTmFtZX06OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKVxuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic2l6ZV90ICR7Y2xhc3NOYW1lfTo6ZXN0aW1hdGVk
U2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2bSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpICsg
dGhpc09iamVjdC0+d3JhcHBlZCgpLm1lbW9yeUNvc3QoKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0LCB2
bSkgKyB0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpO1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAK
aW5kZXggOWViOGQyNjY1ZjA4OGM5MTFmZDJmZDRmZDQyZTUwZDM5Mjc2MDVmYi4uZDhjMTBhMmE5
Yjg5YWYwOTBmOGZhMmVkZmQxMzRlNDFmMTY5ZDA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAK
QEAgLTE2MiwxMCArMTYyLDEwIEBAIHZvaWQgSlNJbnRlcmZhY2VOYW1lOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5yZXBvcnRF
eHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+d3JhcHBlZCgpLm1lbW9yeUNvc3QoKSk7CiB9
CiAKLXNpemVfdCBKU0ludGVyZmFjZU5hbWU6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQor
c2l6ZV90IEpTSW50ZXJmYWNlTmFtZTo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2
bSkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSW50ZXJmYWNlTmFtZSo+KGNl
bGwpOwotICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpICsgdGhpc09i
amVjdC0+d3JhcHBlZCgpLm1lbW9yeUNvc3QoKTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVk
U2l6ZSh0aGlzT2JqZWN0LCB2bSkgKyB0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgp
OwogfQogCiBib29sIEpTSW50ZXJmYWNlTmFtZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oCmluZGV4IGExMjMxNDg5ZmFmMjgyYTM1OWMxNzRh
MGNiMjhiNjU2M2Q2YTcwNmYuLjlkZGJiYzNlOGRkOGE2OTAzYmM2ZmQyM2ZlOTRkOTNhOGM0MzZi
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0ludGVyZmFjZU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNJbnRlcmZhY2VOYW1lLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSlNJbnRlcmZh
Y2VOYW1lIDogcHVibGljIEpTRE9NV3JhcHBlcjxJbnRlcmZhY2VOYW1lPiB7CiAgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBJbnRlcmZhY2VOYW1lKiB0b1dyYXBwZWQoSlND
OjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpT
Q2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBKU0M6OlZN
Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCiAgICAgREVDTEFS
RV9JTkZPOwo=
</data>
<flag name="review"
          id="362777"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>