<?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>193059</bug_id>
          
          <creation_ts>2018-12-29 20:32:57 -0800</creation_ts>
          <short_desc>[LFC][BFC] Use computedValue and usedValue consistently</short_desc>
          <delta_ts>2019-01-04 07:23:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1491018</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-12-29 20:32:57 -0800</bug_when>
    <thetext>https://www.w3.org/TR/CSS22/cascade.html#value-stages
6.1.2 Computed values
Specified values are resolved to computed values during the cascade; for example URIs are made absolute and &apos;em&apos; and &apos;ex&apos; units are computed to pixel or absolute lengths. Computing a value never requires the user agent to render the document.
...

6.1.3 Used values
Computed values are processed as far as possible without formatting the document. Some values, however, can only be determined when the document is being laid out. For example, if the width of an element is set to be a certain percentage of its containing block, the width cannot be determined until the width of the containing block has been determined. The used value is the result of taking the computed value and resolving any remaining dependencies into an absolute value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491019</commentid>
    <comment_count>1</comment_count>
      <attachid>358145</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-29 20:35:58 -0800</bug_when>
    <thetext>Created attachment 358145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491454</commentid>
    <comment_count>2</comment_count>
      <attachid>358258</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-03 10:10:08 -0800</bug_when>
    <thetext>Created attachment 358258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491576</commentid>
    <comment_count>3</comment_count>
      <attachid>358299</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-03 18:22:06 -0800</bug_when>
    <thetext>Created attachment 358299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491630</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-01-04 07:21:53 -0800</bug_when>
    <thetext>Committed r239608: &lt;https://trac.webkit.org/changeset/239608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491632</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-04 07:23:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/47047946&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358145</attachid>
            <date>2018-12-29 20:35:58 -0800</date>
            <delta_ts>2019-01-03 10:10:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>48652</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMmVmZDYwOTQ1MC4uNTA2MzI5M2JlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxOC0xMi0yOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0JGQ10gVXNlIGNvbXB1dGVkVmFsdWUgYW5kIHVzZWRWYWx1ZSBjb25z
aXN0ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi9jYXNjYWRlLmh0bWwjdmFsdWUtc3RhZ2VzCisK
KyAgICAgICAgNi4xLjIgQ29tcHV0ZWQgdmFsdWVzCisgICAgICAgIFNwZWNpZmllZCB2YWx1ZXMg
YXJlIHJlc29sdmVkIHRvIGNvbXB1dGVkIHZhbHVlcyBkdXJpbmcgdGhlIGNhc2NhZGU7IGZvciBl
eGFtcGxlIFVSSXMgYXJlIG1hZGUgYWJzb2x1dGUgYW5kICdlbScgYW5kICdleCcgdW5pdHMKKyAg
ICAgICAgYXJlIGNvbXB1dGVkIHRvIHBpeGVsIG9yIGFic29sdXRlIGxlbmd0aHMuIENvbXB1dGlu
ZyBhIHZhbHVlIG5ldmVyIHJlcXVpcmVzIHRoZSB1c2VyIGFnZW50IHRvIHJlbmRlciB0aGUgZG9j
dW1lbnQuLi4KKworICAgICAgICA2LjEuMyBVc2VkIHZhbHVlcworICAgICAgICBDb21wdXRlZCB2
YWx1ZXMgYXJlIHByb2Nlc3NlZCBhcyBmYXIgYXMgcG9zc2libGUgd2l0aG91dCBmb3JtYXR0aW5n
IHRoZSBkb2N1bWVudC4gU29tZSB2YWx1ZXMsIGhvd2V2ZXIsIGNhbiBvbmx5IGJlIGRldGVybWlu
ZWQgd2hlbiB0aGUgZG9jdW1lbnQKKyAgICAgICAgaXMgYmVpbmcgbGFpZCBvdXQuIEZvciBleGFt
cGxlLCBpZiB0aGUgd2lkdGggb2YgYW4gZWxlbWVudCBpcyBzZXQgdG8gYmUgYSBjZXJ0YWluIHBl
cmNlbnRhZ2Ugb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2ssIHRoZSB3aWR0aCBjYW5ub3QgYmUgZGV0
ZXJtaW5lZCB1bnRpbCB0aGUgd2lkdGggb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaGFzIGJlZW4g
ZGV0ZXJtaW5lZC4gVGhlIHVzZWQgdmFsdWUgaXMgdGhlIHJlc3VsdCBvZiB0YWtpbmcgdGhlIGNv
bXB1dGVkIHZhbHVlIGFuZCByZXNvbHZpbmcgYW55IHJlbWFpbmluZyBkZXBlbmRlbmNpZXMgaW50
byBhbiBhYnNvbHV0ZSB2YWx1ZS4KKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9u
dGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6CisgICAg
ICAgICogbGF5b3V0L0xheW91dFVuaXRzLmg6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tC
b3hJbmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpCb3gpOgorICAg
ICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OnNldEhhc1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29tcHV0ZWRNYXJnaW5TdGFydCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmNvbXB1dGVkTWFyZ2luRW5k
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SGFzVmFsaWRIb3Jp
em9udGFsTm9uQ29tcHV0ZWRNYXJnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94OjpzZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpub25Db21wdXRlZE1hcmdpblN0YXJ0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bm9uQ29tcHV0ZWRN
YXJnaW5FbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRB
dm9pZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6bWFyZ2lu
U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEF2b2lkZXI6Om1h
cmdpbkVuZCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKwogMjAxOC0x
Mi0yOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JG
Q11bTWFyZ2luQ29sbGFwc2luZ10gQWRkIHN1cHBvcnQgZm9yIHBlY3VsaWFyIGNhc2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMTFlZmM0NjE4
YjkuLjVlNTM2YThiYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94KQogICAg
IH0KIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGxheW91dEJveCk7Ci0gICAgZGlzcGxheUJveC5zZXRMZWZ0KGhvcml6b250YWxHZW9t
ZXRyeS5sZWZ0ICsgaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLm1hcmdpbi5zdGFy
dCk7CisgICAgZGlzcGxheUJveC5zZXRMZWZ0KGhvcml6b250YWxHZW9tZXRyeS5sZWZ0ICsgaG9y
aXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uc3RhcnQpOwogICAgIGRp
c3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1h
cmdpbi53aWR0aCk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250
YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwotICAgIGRpc3BsYXlCb3guc2V0SG9y
aXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdp
bi5ub25Db21wdXRlZE1hcmdpbik7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2lu
KGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luKTsKKyAgICBkaXNw
bGF5Qm94LnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbihob3Jpem9udGFsR2VvbWV0cnkud2lk
dGhBbmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcAppbmRleCBjMzM5Zjk3ODBmYy4uMjE2MTExOGNlNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTM5
OCwxMCArMzk4LDEwIEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAgYXV0byBsZWZ0ID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUu
bG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHdpZHRoID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2VkV2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFs
dWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7Ci0gICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUu
bWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gbWFyZ2luRW5k
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0
LnZhbHVlT3IoMCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVuZCA9IG1hcmdpbkVuZC52
YWx1ZU9yKDApOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAg
IGF1dG8gY29tcHV0ZWRNYXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1h
cmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byB1c2VkTWFyZ2luU3Rh
cnQgPSBjb21wdXRlZE1hcmdpblN0YXJ0OworICAgIGF1dG8gdXNlZE1hcmdpbkVuZCA9IGNvbXB1
dGVkTWFyZ2luRW5kOwogICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNwbGF5Qm94LnBhZGRpbmdM
ZWZ0KCkudmFsdWVPcigwKTsKICAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGRpc3BsYXlCb3gucGFk
ZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94
LmJvcmRlckxlZnQoKTsKQEAgLTQxMSw4ICs0MTEsOCBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxH
ZQogICAgICAgICAvLyBJZiBhbGwgdGhyZWUgb2YgJ2xlZnQnLCAnd2lkdGgnLCBhbmQgJ3JpZ2h0
JyBhcmUgJ2F1dG8nOiBGaXJzdCBzZXQgYW55ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVm
dCcgYW5kICdtYXJnaW4tcmlnaHQnIHRvIDAuCiAgICAgICAgIC8vIFRoZW4sIGlmIHRoZSAnZGly
ZWN0aW9uJyBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCBlc3RhYmxpc2hpbmcgdGhlIHN0YXRpYy1w
b3NpdGlvbiBjb250YWluaW5nIGJsb2NrIGlzICdsdHInIHNldCAnbGVmdCcgdG8gdGhlIHN0YXRp
YwogICAgICAgICAvLyBwb3NpdGlvbiBhbmQgYXBwbHkgcnVsZSBudW1iZXIgdGhyZWUgYmVsb3c7
IG90aGVyd2lzZSwgc2V0ICdyaWdodCcgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbiBhbmQgYXBwbHkg
cnVsZSBudW1iZXIgb25lIGJlbG93LgotICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0
LnZhbHVlT3IoMCk7Ci0gICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOwor
ICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luU3RhcnQudmFsdWVPcigwKTsKKyAg
ICAgICAgdXNlZE1hcmdpbkVuZCA9IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsKIAogICAgICAg
ICBhdXRvIHN0YXRpY0hvcml6b250YWxQb3NpdGlvbiA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlv
bkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgICAg
IGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQpAQCAtNDI1LDg0ICs0MjUsODQgQEAgSG9yaXpv
bnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVw
bGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgLy8gc29sdmUgZm9yICdtYXJnaW4tcmlnaHQnICgn
bWFyZ2luLWxlZnQnKS4gSWYgb25lIG9mICdtYXJnaW4tbGVmdCcgb3IgJ21hcmdpbi1yaWdodCcg
aXMgJ2F1dG8nLCBzb2x2ZSB0aGUgZXF1YXRpb24gZm9yIHRoYXQgdmFsdWUuCiAgICAgICAgIC8v
IElmIHRoZSB2YWx1ZXMgYXJlIG92ZXItY29uc3RyYWluZWQsIGlnbm9yZSB0aGUgdmFsdWUgZm9y
ICdsZWZ0JyAoaW4gY2FzZSB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHkgb2YgdGhlIGNvbnRhaW5p
bmcgYmxvY2sgaXMgJ3J0bCcpIG9yICdyaWdodCcKICAgICAgICAgLy8gKGluIGNhc2UgJ2RpcmVj
dGlvbicgaXMgJ2x0cicpIGFuZCBzb2x2ZSBmb3IgdGhhdCB2YWx1ZS4KLSAgICAgICAgaWYgKCFt
YXJnaW5TdGFydCAmJiAhbWFyZ2luRW5kKSB7CisgICAgICAgIGlmICghdXNlZE1hcmdpblN0YXJ0
ICYmICF1c2VkTWFyZ2luRW5kKSB7CiAgICAgICAgICAgICBhdXRvIG1hcmdpblN0YXJ0QW5kRW5k
ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CiAgICAg
ICAgICAgICBpZiAobWFyZ2luU3RhcnRBbmRFbmQgPj0gMCkKLSAgICAgICAgICAgICAgICBtYXJn
aW5TdGFydCA9IG1hcmdpbkVuZCA9IG1hcmdpblN0YXJ0QW5kRW5kIC8gMjsgIAorICAgICAgICAg
ICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5FbmQgPSBtYXJnaW5TdGFydEFuZEVu
ZCAvIDI7ICAKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gMF9s
dTsKLSAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lk
dGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgICAgICAg
ICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IDBfbHU7CisgICAgICAgICAgICAgICAgICAgIHVzZWRN
YXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFyZ2luU3Rh
cnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICpyaWdodCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgbWFyZ2luRW5kID0gMF9sdTsKLSAgICAgICAgICAgICAgICAgICAgbWFyZ2lu
U3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVu
ZCArICpyaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQgPSAwX2x1Owor
ICAgICAgICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0
aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghbWFyZ2luU3RhcnQp
IHsKLSAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxl
ZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAgICB9IGVsc2UgaWYgKCF1
c2VkTWFyZ2luU3RhcnQpIHsKKyAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IGNvbnRhaW5p
bmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRo
ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7
CiAgICAgICAgICAgICAvLyBPdmVyY29uc3RyYWluZWQ/IElnbm9yZSByaWdodCAobGVmdCkuCi0g
ICAgICAgICAgICBpZiAoKm1hcmdpblN0YXJ0IDwgMCkgeworICAgICAgICAgICAgaWYgKCp1c2Vk
TWFyZ2luU3RhcnQgPCAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQpOworICAgICAgICAgICAgICAgICAg
ICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0
ICsgKnVzZWRNYXJnaW5FbmQpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChib3JkZXJMZWZ0ICsg
cGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJn
aW5FbmQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBj
b250YWluaW5nQmxvY2tXaWR0aCAtIChib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGgg
KyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kICsgKnJpZ2h0KTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghbWFyZ2luRW5kKSB7Ci0gICAgICAg
ICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5T
dGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgfSBlbHNlIGlmICghdXNlZE1hcmdpbkVu
ZCkgeworICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KCpsZWZ0ICsgKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3
aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAgICAgICAgICAg
IC8vIE92ZXJjb25zdHJhaW5lZD8gSWdub3JlIHJpZ2h0IChsZWZ0KS4KLSAgICAgICAgICAgIGlm
ICgqbWFyZ2luRW5kIDwgMCkgeworICAgICAgICAgICAgaWYgKCp1c2VkTWFyZ2luRW5kIDwgMCkg
ewogICAgICAgICAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQotICAgICAgICAg
ICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICpt
YXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9
IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRNYXJnaW5TdGFydCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9
IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsK
KyAgICAgICAgICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKCp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGgg
KyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBPdGhlcndpc2UsIHNldCAnYXV0bycg
dmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLCBhbmQgcGlj
ayB0aGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc2l4IHJ1bGVzIHRoYXQgYXBwbGllcy4KLSAgICAg
ICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5F
bmQgPSBtYXJnaW5FbmQudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gdXNl
ZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7CisgICAgICAgIHVzZWRNYXJnaW5FbmQgPSB1c2VkTWFy
Z2luRW5kLnZhbHVlT3IoMCk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1hcmdpblN0YXJ0KTsKLSAg
ICBBU1NFUlQobWFyZ2luRW5kKTsKKyAgICBBU1NFUlQodXNlZE1hcmdpblN0YXJ0KTsKKyAgICBB
U1NFUlQodXNlZE1hcmdpbkVuZCk7CiAKICAgICBpZiAoIWxlZnQgJiYgIXdpZHRoICYmIHJpZ2h0
KSB7CiAgICAgICAgIC8vICMxCiAgICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCAgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAg
ICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCAgKyBib3JkZXJSaWdo
dCArICp1c2VkTWFyZ2luRW5kICsgKnJpZ2h0KTsKICAgICB9IGVsc2UgaWYgKCFsZWZ0ICYmICFy
aWdodCAmJiB3aWR0aCkgewogICAgICAgICAvLyAjMgogICAgICAgICBhdXRvIHN0YXRpY0hvcml6
b250YWxQb3NpdGlvbiA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0
aW9uZWQobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICBsZWZ0ID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9u
OwotICAgICAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICpt
YXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAgICAgICAgICByaWdodCA9IGNv
bnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsg
KnVzZWRNYXJnaW5FbmQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmlnaHQgPSBz
dGF0aWNIb3Jpem9udGFsUG9zaXRpb247Ci0gICAgICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsK
KyAgICAgICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0
YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKCF3aWR0aCAmJiAhcmlnaHQgJiYgbGVmdCkgewogICAgICAgICAvLyAjMwogICAg
ICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0g
ICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luU3Rh
cnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICptYXJnaW5FbmQpOworICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9j
a1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5n
TGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5F
bmQpOwogICAgIH0gZWxzZSBpZiAoIWxlZnQgJiYgd2lkdGggJiYgcmlnaHQpIHsKICAgICAgICAg
Ly8gIzQKLSAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFy
dCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJv
cmRlclJpZ2h0ICsgKm1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgIGxlZnQgPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVu
ZCArICpyaWdodCk7CiAgICAgfSBlbHNlIGlmICghd2lkdGggJiYgbGVmdCAmJiByaWdodCkgewog
ICAgICAgICAvLyAjNQotICAgICAgICB3aWR0aCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCps
ZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1Jp
Z2h0ICArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgIHdpZHRo
ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9y
ZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICArIGJvcmRlclJpZ2h0ICsgKnVz
ZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgIH0gZWxzZSBpZiAoIXJpZ2h0ICYmIGxlZnQgJiYg
d2lkdGgpIHsKICAgICAgICAgLy8gIzYKLSAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tX
aWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
ICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAg
ICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0
YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CiAgICAgfQogCiAgICAgQVNTRVJUKGxlZnQp
OwogICAgIEFTU0VSVChyaWdodCk7CiAgICAgQVNTRVJUKHdpZHRoKTsKLSAgICBBU1NFUlQobWFy
Z2luU3RhcnQpOwotICAgIEFTU0VSVChtYXJnaW5FbmQpOworICAgIEFTU0VSVCh1c2VkTWFyZ2lu
U3RhcnQpOworICAgIEFTU0VSVCh1c2VkTWFyZ2luRW5kKTsKIAotICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtN
YXJnaW5dIC0+IG91dC1vZi1mbG93IG5vbi1yZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwg
InB4KSByaWdodCgiICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgp
IG1hcmdpbigiIDw8ICptYXJnaW5TdGFydCA8PCAicHgsICIgIDw8ICptYXJnaW5FbmQgPDwgInB4
KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsgKmxlZnQs
ICpyaWdodCwgeyAqd2lkdGgsIHsgKm1hcmdpblN0YXJ0LCAqbWFyZ2luRW5kIH0sIHsgbm9uQ29t
cHV0ZWRNYXJnaW5TdGFydCwgbm9uQ29tcHV0ZWRNYXJnaW5FbmQgfSB9IH07CisgICAgTE9HX1dJ
VEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1b
V2lkdGhdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IGxlZnQoIiA8PCAq
bGVmdCA8PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwgKndpZHRo
IDw8ICJweCkgbWFyZ2luKCIgPDwgKnVzZWRNYXJnaW5TdGFydCA8PCAicHgsICIgIDw8ICp1c2Vk
TWFyZ2luRW5kIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAg
IHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgKndpZHRoLCB7ICp1c2VkTWFyZ2luU3RhcnQsICp1
c2VkTWFyZ2luRW5kIH0sIHsgY29tcHV0ZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApLCBjb21wdXRl
ZE1hcmdpbkVuZC52YWx1ZU9yKDApIH0gfSB9OwogfQogCiBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5
KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9w
dGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQpCkBAIC01MjgsOCArNTI4LDggQEAgVmVydGlj
YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2Vk
VmVydGljYWxHZW9tZXRyeSgKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8o
c3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBib3R0
b20gPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20oKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRB
bmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZEhlaWdodCkuaGVpZ2h0OwotICAg
IGF1dG8gbWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5C
ZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKKyAgICBhdXRvIHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0
byB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFm
dGVyKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHBhZGRpbmdUb3AgPSBkaXNw
bGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9
IGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBib3JkZXJU
b3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpOwpAQCAtNTQyLDM2ICs1NDIsMzYgQEAgVmVydGlj
YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2Vk
VmVydGljYWxHZW9tZXRyeSgKIAogICAgIGlmICghYm90dG9tKSB7CiAgICAgICAgIC8vICMyCi0g
ICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOwotICAgICAgICBt
YXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CisgICAgICAgIHVzZWRNYXJnaW5C
ZWZvcmUgPSB1c2VkTWFyZ2luQmVmb3JlLnZhbHVlT3IoMCk7CisgICAgICAgIHVzZWRNYXJnaW5B
ZnRlciA9IHVzZWRNYXJnaW5BZnRlci52YWx1ZU9yKDApOwogICAgIH0KIAotICAgIGlmICghbWFy
Z2luQmVmb3JlICYmICFtYXJnaW5BZnRlcikgeworICAgIGlmICghdXNlZE1hcmdpbkJlZm9yZSAm
JiAhdXNlZE1hcmdpbkFmdGVyKSB7CiAgICAgICAgIC8vICMzCiAgICAgICAgIGF1dG8gbWFyZ2lu
QmVmb3JlQW5kQWZ0ZXIgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsg
KmJvdHRvbSk7Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkFmdGVyID0gbWFyZ2luQmVm
b3JlQW5kQWZ0ZXIgLyAyOworICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gdXNlZE1hcmdpbkFm
dGVyID0gbWFyZ2luQmVmb3JlQW5kQWZ0ZXIgLyAyOwogICAgIH0KIAogICAgIC8vICM0CiAgICAg
aWYgKCF0b3ApCi0gICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqbWFyZ2lu
QmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20g
KyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsKKyAgICAgICAgdG9wID0g
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsg
cGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNl
ZE1hcmdpbkFmdGVyICsgKmJvdHRvbSk7CiAKICAgICBpZiAoIWJvdHRvbSkKLSAgICAgICAgYm90
dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9y
ZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0
b20gKyAqbWFyZ2luQWZ0ZXIpOworICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWln
aHQgLSAoKnRvcCArICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCAr
IGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1hcmdpbkFmdGVy
KTsKIAotICAgIGlmICghbWFyZ2luQmVmb3JlKQotICAgICAgICBtYXJnaW5CZWZvcmUgPSBjb250
YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWln
aHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRv
bSk7CisgICAgaWYgKCF1c2VkTWFyZ2luQmVmb3JlKQorICAgICAgICB1c2VkTWFyZ2luQmVmb3Jl
ID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9w
ICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0
ZXIgKyAqYm90dG9tKTsKIAotICAgIGlmICghbWFyZ2luQWZ0ZXIpCi0gICAgICAgIG1hcmdpbkFm
dGVyID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9y
ZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0
b20gKyAqYm90dG9tKTsKKyAgICBpZiAoIXVzZWRNYXJnaW5BZnRlcikKKyAgICAgICAgdXNlZE1h
cmdpbkFmdGVyID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1hcmdpbkJl
Zm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsg
Ym9yZGVyQm90dG9tICsgKmJvdHRvbSk7CiAKICAgICAvLyAjNQotICAgIGF1dG8gYm94SGVpZ2h0
ID0gKnRvcCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0
ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlciArICpib3R0b207
CisgICAgYXV0byBib3hIZWlnaHQgPSAqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICp1c2VkTWFyZ2luQWZ0ZXIgKyAqYm90dG9tOwogICAgIGlmIChib3hIZWlnaHQgPiBjb250YWlu
aW5nQmxvY2tIZWlnaHQpCi0gICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQg
KyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyKTsgCisgICAgICAg
IGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZv
cmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJv
cmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIpOyAKIAotICAgIExPR19XSVRIX1NUUkVBTShG
b3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hlaWdodF1bTWFy
Z2luXSAtPiBvdXQtb2YtZmxvdyByZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8ICJweCkgYm90
dG9tKCIgIDw8ICpib3R0b20gPDwgInB4KSBoZWlnaHQoIiA8PCBoZWlnaHQgPDwgInB4KSBtYXJn
aW4oIiA8PCAqbWFyZ2luQmVmb3JlIDw8ICJweCwgIiAgPDwgKm1hcmdpbkFmdGVyIDw8ICJweCkg
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiB7ICp0b3AsICpi
b3R0b20sIHsgaGVpZ2h0LCB7IHsgKm1hcmdpbkJlZm9yZSwgKm1hcmdpbkFmdGVyIH0sIHsgfSB9
IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFjZWQg
LT4gdG9wKCIgPDwgKnRvcCA8PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8ICJweCkgaGVp
Z2h0KCIgPDwgaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKnVzZWRNYXJnaW5CZWZvcmUgPDwg
InB4LCAiICA8PCAqdXNlZE1hcmdpbkFmdGVyIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91
dEJveCA8PCAiKSIpOworICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgaGVpZ2h0LCB7IHsg
KnVzZWRNYXJnaW5CZWZvcmUsICp1c2VkTWFyZ2luQWZ0ZXIgfSwgeyB9IH0gfSB9OwogfQogCiBI
b3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCkBA
IC02MDAsMTAgKzYwMCwxMCBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogCiAgICAgYXV0byBs
ZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8o
c3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG1h
cmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBj
b250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBtYXJnaW5FbmQgPSBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAg
YXV0byBub25Db21wdXRlZE1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVPcigwKTsKLSAg
ICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7CisgICAg
YXV0byBjb21wdXRlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5t
YXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBjb21wdXRlZE1h
cmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkTWFy
Z2luU3RhcnQ7CisgICAgYXV0byB1c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRNYXJnaW5FbmQ7CiAg
ICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUs
IGxheW91dEJveCwgdXNlZFdpZHRoKS53aWR0aDsKICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlz
cGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQg
PSBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CkBAIC02MjEsNTUgKzYyMSw1
NSBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogCiAgICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkg
ewogICAgICAgICAvLyAjMgotICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVl
T3IoMCk7IAotICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVPcigwKTsgCisgICAg
ICAgIHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApOyAKKyAgICAg
ICAgdXNlZE1hcmdpbkVuZCA9IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsgCiAgICAgfQogCi0g
ICAgaWYgKCFtYXJnaW5TdGFydCAmJiAhbWFyZ2luRW5kKSB7CisgICAgaWYgKCF1c2VkTWFyZ2lu
U3RhcnQgJiYgIXVzZWRNYXJnaW5FbmQpIHsKICAgICAgICAgLy8gIzMKICAgICAgICAgYXV0byBt
YXJnaW5TdGFydEFuZEVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICpyaWdodCk7CiAgICAgICAgIGlmIChtYXJnaW5TdGFydEFuZEVuZCA+PSAwKQotICAgICAgICAg
ICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5FbmQgPSBtYXJnaW5TdGFydEFuZEVuZCAvIDI7CisgICAg
ICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luRW5kID0gbWFyZ2luU3RhcnRBbmRF
bmQgLyAyOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSAwX2x1OwotICAgICAgICAg
ICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdp
blN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0
ID0gMF9sdTsKKyAgICAgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IDBfbHU7Ci0gICAg
ICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCAr
IGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAgICAgICAgICB1c2VkTWFyZ2lu
RW5kID0gMF9sdTsKKyAgICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyAjNAogICAgIGlmICghbGVm
dCkKLSAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCAr
IGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdC
bG9ja1dpZHRoIC0gKCp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQg
KyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAq
cmlnaHQpOwogCiAgICAgaWYgKCFyaWdodCkKLSAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVm
dCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kKTsKKyAg
ICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFyZ2lu
U3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOwogCi0gICAgaWYgKCFtYXJnaW5TdGFydCkK
LSAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJv
cmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICBpZiAoIXVzZWRNYXJnaW5TdGFydCkKKyAg
ICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBi
b3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJp
Z2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogCi0gICAgaWYgKCFtYXJnaW5FbmQpCi0g
ICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdp
blN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgaWYgKCF1c2VkTWFyZ2luRW5kKQorICAgICAg
ICB1c2VkTWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1h
cmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmln
aHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CiAKLSAgICBhdXRvIGJveFdpZHRoID0gKCpsZWZ0
ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOworICAgIGF1dG8g
Ym94V2lkdGggPSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRp
bmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2lu
RW5kICsgKnJpZ2h0KTsKICAgICBpZiAoYm94V2lkdGggPiBjb250YWluaW5nQmxvY2tXaWR0aCkg
ewogICAgICAgICAvLyAjNSBPdmVyLWNvbnN0cmFpbmVkPwogICAgICAgICBpZiAoaXNMZWZ0VG9S
aWdodERpcmVjdGlvbikKLSAgICAgICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0
aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAgICAgICAg
ICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRNYXJnaW5TdGFy
dCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxl
ZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsg
cGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdp
bkVuZCArICpyaWdodCk7CisgICAgICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CiAg
ICAgfQogCiAgICAgQVNTRVJUKGxlZnQpOwogICAgIEFTU0VSVChyaWdodCk7Ci0gICAgQVNTRVJU
KG1hcmdpblN0YXJ0KTsKLSAgICBBU1NFUlQobWFyZ2luRW5kKTsKKyAgICBBU1NFUlQodXNlZE1h
cmdpblN0YXJ0KTsKKyAgICBBU1NFUlQodXNlZE1hcmdpbkVuZCk7CiAKLSAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtXaWR0
aF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyByZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwg
InB4KSByaWdodCgiICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8IHdpZHRoIDw8ICJweCkg
bWFyZ2luKCIgPDwgKm1hcmdpblN0YXJ0IDw8ICJweCwgIiAgPDwgKm1hcmdpbkVuZCA8PCAicHgp
IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4geyAqbGVmdCwg
KnJpZ2h0LCB7IHdpZHRoLCB7ICptYXJnaW5TdGFydCwgKm1hcmdpbkVuZCB9LCB7IG5vbkNvbXB1
dGVkTWFyZ2luU3RhcnQsIG5vbkNvbXB1dGVkTWFyZ2luRW5kIH0gfSB9OworICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dp
ZHRoXVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJlcGxhY2VkIC0+IGxlZnQoIiA8PCAqbGVmdCA8
PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwgd2lkdGggPDwgInB4
KSBtYXJnaW4oIiA8PCAqdXNlZE1hcmdpblN0YXJ0IDw8ICJweCwgIiAgPDwgKnVzZWRNYXJnaW5F
bmQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJu
IHsgKmxlZnQsICpyaWdodCwgeyB3aWR0aCwgeyAqdXNlZE1hcmdpblN0YXJ0LCAqdXNlZE1hcmdp
bkVuZCB9LCB7IGNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRNYXJnaW5F
bmQudmFsdWVPcigwKSB9IH0gfTsKIH0KIAogSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVp
Z2h0KQpAQCAtNjkzLDEyICs2OTMsMTIgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBMYXlvdXRTdGF0ZSYKICAgICBh
dXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250
ZW50Qm94V2lkdGgoKTsKIAogICAgIGF1dG8gaGVpZ2h0ID0gdXNlZEhlaWdodCA/IHVzZWRIZWln
aHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCwg
SGVpZ2h0VHlwZTo6Tm9ybWFsKTsKLSAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsK
LSAgICBhdXRvIG1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJn
aW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byB1c2VkTWFyZ2luQmVm
b3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAK
ICAgICAvLyAjMQotICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOwot
ICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKKyAgICB1c2VkTWFyZ2lu
QmVmb3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgIHVzZWRNYXJnaW5BZnRl
ciA9IHVzZWRNYXJnaW5BZnRlci52YWx1ZU9yKDApOwogICAgIC8vICMyCiAgICAgaWYgKCFoZWln
aHQpIHsKICAgICAgICAgQVNTRVJUKGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpKTsKQEAgLTcwNiwx
MSArNzA2LDExIEBAIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgTGF5b3V0U3RhdGUmCiAgICAgfQogCiAgICAgQVNTRVJU
KGhlaWdodCk7Ci0gICAgQVNTRVJUKG1hcmdpbkJlZm9yZSk7Ci0gICAgQVNTRVJUKG1hcmdpbkFm
dGVyKTsKKyAgICBBU1NFUlQodXNlZE1hcmdpbkJlZm9yZSk7CisgICAgQVNTRVJUKHVzZWRNYXJn
aW5BZnRlcik7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyBub24tcmVwbGFjZWQgLT4g
aGVpZ2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5CZWZvcmUgPDwg
InB4LCAiIDw8ICptYXJnaW5BZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRC
b3ggPDwgIikiKTsKLSAgICByZXR1cm4gSGVpZ2h0QW5kTWFyZ2luIHsgKmhlaWdodCwgeyB7ICpt
YXJnaW5CZWZvcmUsICptYXJnaW5BZnRlciB9LCB7IH0gfSB9OworICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+
IGZsb2F0aW5nIG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkgbWFy
Z2luKCIgPDwgKnVzZWRNYXJnaW5CZWZvcmUgPDwgInB4LCAiIDw8ICp1c2VkTWFyZ2luQWZ0ZXIg
PDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJu
IEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsgeyAqdXNlZE1hcmdpbkJlZm9yZSwgKnVzZWRN
YXJnaW5BZnRlciB9LCB7IH0gfSB9OwogfQogCiBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRV
bml0PiB1c2VkV2lkdGgpCkBAIC04NjksMjkgKzg2OSwyNCBAQCBXaWR0aEFuZE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29u
c3QgTAogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94Lndp
ZHRoKCk7CiAKLSAgICBhdXRvIGNvbXB1dGVNYXJnaW5FbmQgPSBbJl0oKSB7Ci0gICAgICAgIGlm
IChwcmVjb21wdXRlZE1hcmdpbkVuZCkKLSAgICAgICAgICAgIHJldHVybiBwcmVjb21wdXRlZE1h
cmdpbkVuZC52YWx1ZSgpOwotICAgICAgICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICAg
ICAgcmV0dXJuIG1hcmdpbkVuZC52YWx1ZU9yKDBfbHUpOwotICAgIH07Ci0KLSAgICBhdXRvIGNv
bXB1dGVNYXJnaW5TdGFydCA9IFsmXSgpIHsKKyAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IFsm
XSB7CiAgICAgICAgIGlmIChwcmVjb21wdXRlZE1hcmdpblN0YXJ0KQogICAgICAgICAgICAgcmV0
dXJuIHByZWNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWUoKTsKICAgICAgICAgYXV0byBtYXJnaW5T
dGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwogICAgICAgICByZXR1cm4gbWFyZ2luU3RhcnQudmFsdWVPcigwX2x1
KTsKICAgICB9OwogCisgICAgYXV0byB1c2VkTWFyZ2luRW5kID0gWyZdIHsKKyAgICAgICAgaWYg
KHByZWNvbXB1dGVkTWFyZ2luRW5kKQorICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFy
Z2luRW5kLnZhbHVlKCk7CisgICAgICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlm
Tm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgICAg
ICByZXR1cm4gbWFyZ2luRW5kLnZhbHVlT3IoMF9sdSk7CisgICAgfTsKKwogICAgIGF1dG8gcmVw
bGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKICAgICBBU1NFUlQocmVwbGFjZWQpOwogCi0g
ICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVNYXJnaW5TdGFydCgpOwotICAgIGF1dG8gbWFy
Z2luRW5kID0gY29tcHV0ZU1hcmdpbkVuZCgpOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5T
dGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVu
ZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0aCB7IHVzZWRXaWR0aC52YWx1ZSgpLCBGaXhlZCB9IDog
c3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLQogICAgIGF1dG8g
aGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRBdXRvKGxheW91dEJveCk7CiAgICAgYXV0byBoZWlnaHQg
PSBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6
Ok5vcm1hbCk7CiAKQEAgLTkxNiw4ICs5MTEsMTAgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEwK
IAogICAgIEFTU0VSVCh3aWR0aCk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0Nv
bnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNl
ZCAtPiB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IG1hcmdpblN0YXJ0IDw8
ICJweCwgIiA8PCBtYXJnaW5FbmQgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94
IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsgKndpZHRoLCB7IG1hcmdpblN0YXJ0LCBtYXJnaW5FbmQg
fSwgeyBub25Db21wdXRlZE1hcmdpblN0YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH07Cisg
ICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltX
aWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCAqd2lkdGggPDwg
InB4KSBtYXJnaW4oIiA8PCB1c2VkTWFyZ2luU3RhcnQoKSA8PCAicHgsICIgPDwgdXNlZE1hcmdp
bkVuZCgpIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAg
IGF1dG8gY29tcHV0ZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUu
bWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gY29tcHV0ZWRN
YXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7CisgICAgcmV0dXJuIHsgKndpZHRoLCB7IHVzZWRNYXJnaW5TdGFy
dCgpLCB1c2VkTWFyZ2luRW5kKCkgfSwgeyBjb21wdXRlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCks
IGNvbXB1dGVkTWFyZ2luRW5kLnZhbHVlT3IoMCkgfSB9OwogfQogCiBMYXlvdXRTaXplIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNv
bnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBjYzFkYmMwMzRlZS4uZmI2NDRlNzJm
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtNTQsNyArNTQsNyBA
QCBMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgQ29udGFpbmVyJiBpbml0aWFsQ29udGFp
bmluZ0Jsb2NrLCBjb25zdCBMYXlvdXRTaQogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAgICAgZGlzcGxheUJv
eC5zZXRIb3Jpem9udGFsTWFyZ2luKHsgfSk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFs
Tm9uQ29tcHV0ZWRNYXJnaW4oeyB9KTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxDb21w
dXRlZE1hcmdpbih7IH0pOwogICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyB9KTsK
ICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7IH0pOwogICAgIGRpc3BsYXlCb3guc2V0UGFkZGlu
Zyh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAppbmRleCBkNzZiNmEzODU2NS4u
NzBhZTJiYzQxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBAIC0xMDMsOSAr
MTAzLDggQEAgc3RydWN0IEVkZ2VzIHsKIAogc3RydWN0IFdpZHRoQW5kTWFyZ2luIHsKICAgICBM
YXlvdXRVbml0IHdpZHRoOwotICAgIEhvcml6b250YWxNYXJnaW4gbWFyZ2luOwotICAgIC8vIEZJ
WE1FOiBGaWd1cmUgb3V0IGlmIHdlIHJlYWxseSByZWFsbHkgbmVlZCB0aGlzLgotICAgIEhvcml6
b250YWxNYXJnaW4gbm9uQ29tcHV0ZWRNYXJnaW47CisgICAgSG9yaXpvbnRhbE1hcmdpbiB1c2Vk
TWFyZ2luOworICAgIEhvcml6b250YWxNYXJnaW4gY29tcHV0ZWRNYXJnaW47CiB9OwogCiBzdHJ1
Y3QgSGVpZ2h0QW5kTWFyZ2luIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9W
ZXJpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAK
aW5kZXggOGViMDU0NzQzYWYuLjQ5NDE1N2E5ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcApAQCAtMjQ3LDggKzI0Nyw4IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21h
dGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29u
CiAKICAgICAgICAgcmV0dXJuIERpc3BsYXk6OkJveDo6UmVjdCB7CiAgICAgICAgICAgICBib3Jk
ZXJCb3gudG9wKCkgLSBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpLAotICAg
ICAgICAgICAgYm9yZGVyQm94LmxlZnQoKSAtIGRpc3BsYXlCb3gubm9uQ29tcHV0ZWRNYXJnaW5T
dGFydCgpLAotICAgICAgICAgICAgZGlzcGxheUJveC5ub25Db21wdXRlZE1hcmdpblN0YXJ0KCkg
KyBib3JkZXJCb3gud2lkdGgoKSArIGRpc3BsYXlCb3gubm9uQ29tcHV0ZWRNYXJnaW5FbmQoKSwK
KyAgICAgICAgICAgIGJvcmRlckJveC5sZWZ0KCkgLSBkaXNwbGF5Qm94LmNvbXB1dGVkTWFyZ2lu
U3RhcnQoKSwKKyAgICAgICAgICAgIGRpc3BsYXlCb3guY29tcHV0ZWRNYXJnaW5TdGFydCgpICsg
Ym9yZGVyQm94LndpZHRoKCkgKyBkaXNwbGF5Qm94LmNvbXB1dGVkTWFyZ2luRW5kKCksCiAgICAg
ICAgICAgICBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpICsgYm9yZGVyQm94
LmhlaWdodCgpICsgZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5BZnRlcigpCiAgICAgICAg
IH07CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDkzNGJjNzhi
MDBjLi45Y2NkMTdlOTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0z
MzIsOSArMzMyLDkgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhB
bmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAKICAgICBhdXRvJiBkaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAg
IGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKLSAg
ICBkaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkod2lkdGhBbmRNYXJnaW4ubWFyZ2luLnN0YXJ0
KTsKLSAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4ubWFy
Z2luKTsKLSAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbih3aWR0
aEFuZE1hcmdpbi5ub25Db21wdXRlZE1hcmdpbik7CisgICAgZGlzcGxheUJveC5tb3ZlSG9yaXpv
bnRhbGx5KHdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uc3RhcnQpOworICAgIGRpc3BsYXlCb3gu
c2V0SG9yaXpvbnRhbE1hcmdpbih3aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luKTsKKyAgICBkaXNw
bGF5Qm94LnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbih3aWR0aEFuZE1hcmdpbi5jb21wdXRl
ZE1hcmdpbik7CiB9CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdo
dEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAwMDdmNzJhMzA0NC4uZGYyNmU3OGIz
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAg
LTE0MCwxMCArMTQwLDEwIEBAIFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luCiAgICAgICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJv
eCk7CiAKICAgICAgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFdp
ZHRoID8gTGVuZ3RoIHsgdXNlZFdpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2Fs
V2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgICAgICBhdXRvIG1hcmdpblN0YXJ0
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgICAgICBh
dXRvIG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZU9yKDApOwotICAg
ICAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7Cisg
ICAgICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8o
c3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgICAgICBhdXRv
IGNvbXB1dGVkTWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5F
bmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgICAgICBhdXRvIHVzZWRNYXJnaW5TdGFy
dCA9IGNvbXB1dGVkTWFyZ2luU3RhcnQ7CisgICAgICAgIGF1dG8gdXNlZE1hcmdpbkVuZCA9IGNv
bXB1dGVkTWFyZ2luRW5kOwogICAgICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJv
cmRlckxlZnQoKTsKICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVy
UmlnaHQoKTsKICAgICAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3BsYXlCb3gucGFkZGluZ0xl
ZnQoKS52YWx1ZU9yKDApOwpAQCAtMTUxLDUxICsxNTEsNTEgQEAgV2lkdGhBbmRNYXJnaW4gQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4KIAogICAgICAgICAvLyAjMQogICAgICAgICBpZiAod2lkdGgpIHsKLSAgICAgICAgICAg
IGF1dG8gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAo
bWFyZ2luU3RhcnQudmFsdWVPcigwKSArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0
aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgbWFyZ2luRW5kLnZhbHVlT3IoMCkpOwor
ICAgICAgICAgICAgYXV0byBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICh1c2VkTWFyZ2luU3RhcnQudmFsdWVPcigwKSArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZE1hcmdp
bkVuZC52YWx1ZU9yKDApKTsKICAgICAgICAgICAgIGlmIChob3Jpem9udGFsU3BhY2VGb3JNYXJn
aW4gPCAwKSB7Ci0gICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydC52YWx1
ZU9yKDApOwotICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDAp
OworICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5TdGFydC52YWx1
ZU9yKDApOworICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQgPSB1c2VkTWFyZ2luRW5kLnZh
bHVlT3IoMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyAjMgotICAg
ICAgICBpZiAod2lkdGggJiYgbWFyZ2luU3RhcnQgJiYgbWFyZ2luRW5kKSB7CisgICAgICAgIGlm
ICh3aWR0aCAmJiB1c2VkTWFyZ2luU3RhcnQgJiYgdXNlZE1hcmdpbkVuZCkgewogICAgICAgICAg
ICAgaWYgKGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1h
cmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0KTsKKyAgICAgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29u
dGFpbmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCAgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tX
aWR0aCAtIChib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArICptYXJnaW5FbmQpOworICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5T
dGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
ICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gIzMKLSAgICAgICAgaWYgKCFtYXJnaW5TdGFydCAmJiB3
aWR0aCAmJiBtYXJnaW5FbmQpCi0gICAgICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdC
bG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAgKyAqd2lkdGggKyBwYWRkaW5n
UmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQpOwotICAgICAgICBlbHNlIGlmIChtYXJn
aW5TdGFydCAmJiAhd2lkdGggJiYgbWFyZ2luRW5kKQotICAgICAgICAgICAgd2lkdGggPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQpOwotICAgICAgICBl
bHNlIGlmIChtYXJnaW5TdGFydCAmJiB3aWR0aCAmJiAhbWFyZ2luRW5kKQotICAgICAgICAgICAg
bWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1hcmdpblN0YXJ0ICsgYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQp
OworICAgICAgICBpZiAoIXVzZWRNYXJnaW5TdGFydCAmJiB3aWR0aCAmJiB1c2VkTWFyZ2luRW5k
KQorICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAo
Ym9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRl
clJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOworICAgICAgICBlbHNlIGlmICh1c2VkTWFyZ2luU3Rh
cnQgJiYgIXdpZHRoICYmIHVzZWRNYXJnaW5FbmQpCisgICAgICAgICAgICB3aWR0aCA9IGNvbnRh
aW5pbmdCbG9ja1dpZHRoIC0gKCp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGlu
Z0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKKyAg
ICAgICAgZWxzZSBpZiAodXNlZE1hcmdpblN0YXJ0ICYmIHdpZHRoICYmICF1c2VkTWFyZ2luRW5k
KQorICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCp1
c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCk7CiAKICAgICAgICAgLy8gIzQKICAgICAgICAgaWYgKCF3
aWR0aCkgewotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZU9yKDAp
OwotICAgICAgICAgICAgbWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7Ci0gICAgICAg
ICAgICB3aWR0aCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdp
bkVuZCk7CisgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luU3RhcnQudmFs
dWVPcigwKTsKKyAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQgPSB1c2VkTWFyZ2luRW5kLnZhbHVl
T3IoMCk7CisgICAgICAgICAgICB3aWR0aCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCp1c2Vk
TWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vICM1
Ci0gICAgICAgIGlmICghbWFyZ2luU3RhcnQgJiYgIW1hcmdpbkVuZCkgeworICAgICAgICBpZiAo
IXVzZWRNYXJnaW5TdGFydCAmJiAhdXNlZE1hcmdpbkVuZCkgewogICAgICAgICAgICAgYXV0byBo
b3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQp
OwotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5FbmQgPSBob3Jpem9udGFsU3BhY2VG
b3JNYXJnaW4gLyAyOworICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gdXNlZE1hcmdpbkVu
ZCA9IGhvcml6b250YWxTcGFjZUZvck1hcmdpbiAvIDI7CiAgICAgICAgIH0KIAogICAgICAgICBB
U1NFUlQod2lkdGgpOwotICAgICAgICBBU1NFUlQobWFyZ2luU3RhcnQpOwotICAgICAgICBBU1NF
UlQobWFyZ2luRW5kKTsKKyAgICAgICAgQVNTRVJUKHVzZWRNYXJnaW5TdGFydCk7CisgICAgICAg
IEFTU0VSVCh1c2VkTWFyZ2luRW5kKTsKIAotICAgICAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4g
eyAqd2lkdGgsIHsgKm1hcmdpblN0YXJ0LCAqbWFyZ2luRW5kIH0sIHsgbm9uQ29tcHV0ZWRNYXJn
aW5TdGFydCwgbm9uQ29tcHV0ZWRNYXJnaW5FbmQgfSB9OworICAgICAgICByZXR1cm4gV2lkdGhB
bmRNYXJnaW4geyAqd2lkdGgsIHsgKnVzZWRNYXJnaW5TdGFydCwgKnVzZWRNYXJnaW5FbmQgfSwg
eyBjb21wdXRlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkTWFyZ2luRW5kLnZhbHVl
T3IoMCkgfSB9OwogICAgIH07CiAKICAgICBhdXRvIHdpZHRoQW5kTWFyZ2luID0gY29tcHV0ZSgp
OwotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8IHdp
ZHRoQW5kTWFyZ2luLndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgd2lkdGhBbmRNYXJnaW4ubWFy
Z2luLnN0YXJ0IDw8ICJweCwgIiA8PCB3aWR0aEFuZE1hcmdpbi5tYXJnaW4uZW5kIDw8ICJweCkg
LT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4g
aW5mbG93IG5vbi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8IHdpZHRoQW5kTWFyZ2luLndpZHRoIDw8
ICJweCkgbWFyZ2luKCIgPDwgd2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbi5zdGFydCA8PCAicHgs
ICIgPDwgd2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbi5lbmQgPDwgInB4KSAtPiBsYXlvdXRCb3go
IiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHdpZHRoQW5kTWFyZ2luOwogfQog
CkBAIC0yMTMsOCArMjEzLDggQEAgV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY28KICAgICAvLyAjMgog
ICAgIGF1dG8gbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbiA9IGluRmxvd05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgd2lkdGgpOwogCi0gICAgTE9HX1dJ
VEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFy
Z2luXSAtPiBpbmZsb3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCB3aWR0aCA8PCAicHgpIG1hcmdp
bigiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ubWFyZ2luLnN0YXJ0IDw8ICJweCwgIiA8
PCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLm1hcmdpbi5lbmQgPDwgInB4KSAtPiBsYXlvdXRC
b3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsgd2lkdGgsIG5vblJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4ubWFyZ2luLCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLm5vbkNv
bXB1dGVkTWFyZ2luIH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgcmVwbGFjZWQgLT4gd2lk
dGgoIiA8PCB3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4udXNlZE1hcmdpbi5zdGFydCA8PCAicHgsICIgPDwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bi51c2VkTWFyZ2luLmVuZCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwg
IikiKTsKKyAgICByZXR1cm4geyB3aWR0aCwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi51c2Vk
TWFyZ2luLCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLmNvbXB1dGVkTWFyZ2luIH07CiB9CiAK
IFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbihj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCmluZGV4
IDZkYjdkZWRiMzdhLi42MzFlZjcxYjk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcApAQCAtNTksNyArNTksNyBAQCBCb3g6OkJveChj
b25zdCBCb3gmIG90aGVyKQogICAgICwgbV9jb250ZW50SGVpZ2h0KG90aGVyLm1fY29udGVudEhl
aWdodCkKICAgICAsIG1faG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hvcml6b250YWxNYXJnaW4p
CiAgICAgLCBtX3ZlcnRpY2FsTWFyZ2luKG90aGVyLm1fdmVydGljYWxNYXJnaW4pCi0gICAgLCBt
X2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihvdGhlci5tX2hvcml6b250YWxOb25Db21wdXRl
ZE1hcmdpbikKKyAgICAsIG1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKG90aGVyLm1faG9yaXpv
bnRhbENvbXB1dGVkTWFyZ2luKQogICAgICwgbV9oYXNDbGVhcmFuY2Uob3RoZXIubV9oYXNDbGVh
cmFuY2UpCiAgICAgLCBtX2JvcmRlcihvdGhlci5tX2JvcmRlcikKICAgICAsIG1fcGFkZGluZyhv
dGhlci5tX3BhZGRpbmcpCkBAIC02OSw3ICs2OSw3IEBAIEJveDo6Qm94KGNvbnN0IEJveCYgb3Ro
ZXIpCiAgICAgLCBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkSG9y
aXpvbnRhbE1hcmdpbikKICAgICAsIG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbihvdGhlci5tX2hh
c1ZhbGlkVmVydGljYWxNYXJnaW4pCiAgICAgLCBtX2hhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBz
ZWRNYXJnaW4ob3RoZXIubV9oYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKQotICAg
ICwgbV9oYXNWYWxpZEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihvdGhlci5tX2hhc1ZhbGlk
SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKQorICAgICwgbV9oYXNWYWxpZEhvcml6b250YWxD
b21wdXRlZE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKQog
ICAgICwgbV9oYXNWYWxpZEJvcmRlcihvdGhlci5tX2hhc1ZhbGlkQm9yZGVyKQogICAgICwgbV9o
YXNWYWxpZFBhZGRpbmcob3RoZXIubV9oYXNWYWxpZFBhZGRpbmcpCiAgICAgLCBtX2hhc1ZhbGlk
Q29udGVudEhlaWdodChvdGhlci5tX2hhc1ZhbGlkQ29udGVudEhlaWdodCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4IDVhY2IwODdmZmFi
Li4xNzQ2ZDlmMTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5oCkBAIC0xNDcsOCArMTQ3LDggQEAgcHVibGljOgogCiAgICAgTGF5b3V0VW5p
dCBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG5vbkNv
bGxhcHNlZE1hcmdpbkFmdGVyKCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBub25Db21wdXRlZE1h
cmdpblN0YXJ0KCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBub25Db21wdXRlZE1hcmdpbkVuZCgp
IGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0ZWRNYXJnaW5TdGFydCgpIGNvbnN0OworICAg
IExheW91dFVuaXQgY29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsKIAogICAgIExheW91dFVuaXQg
Ym9yZGVyVG9wKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBib3JkZXJMZWZ0KCkgY29uc3Q7CkBA
IC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdp
bihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAgIHZvaWQgc2V0VmVydGljYWxNYXJnaW4o
TGF5b3V0OjpWZXJ0aWNhbE1hcmdpbik7Ci0gICAgdm9pZCBzZXRIb3Jpem9udGFsTm9uQ29tcHV0
ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKKyAgICB2b2lkIHNldEhvcml6b250
YWxDb21wdXRlZE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAgIHZvaWQgc2V0
SGFzQ2xlYXJhbmNlKCkgeyBtX2hhc0NsZWFyYW5jZSA9IHRydWU7IH0KIAogICAgIHZvaWQgc2V0
Qm9yZGVyKExheW91dDo6RWRnZXMpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRIYXNWYWxpZExlZnQoKSB7IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsgfQogICAgIHZv
aWQgc2V0SGFzVmFsaWRWZXJ0aWNhbE1hcmdpbigpIHsgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2lu
ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0SGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdp
bigpIHsgbV9oYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luID0gdHJ1ZTsgfQotICAg
IHZvaWQgc2V0SGFzVmFsaWRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oKSB7IG1faGFzVmFs
aWRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4gPSB0cnVlOyB9CisgICAgdm9pZCBzZXRIYXNW
YWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbigpIHsgbV9oYXNWYWxpZEhvcml6b250YWxDb21w
dXRlZE1hcmdpbiA9IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdp
bigpIHsgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4gPSB0cnVlOyB9CiAKICAgICB2b2lkIHNl
dEhhc1ZhbGlkQm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gdHJ1ZTsgfQpAQCAtMjMxLDcg
KzIzMSw3IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbV9ob3Jp
em9udGFsTWFyZ2luOwogICAgIExheW91dDo6VmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdp
bjsKLSAgICBMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRN
YXJnaW47CisgICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbENvbXB1dGVk
TWFyZ2luOwogICAgIGJvb2wgbV9oYXNDbGVhcmFuY2U7CiAKICAgICBMYXlvdXQ6OkVkZ2VzIG1f
Ym9yZGVyOwpAQCAtMjQzLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1ZhbGlk
SG9yaXpvbnRhbE1hcmdpbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkVmVydGljYWxN
YXJnaW4geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2Vk
TWFyZ2luIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzVmFsaWRIb3Jpem9udGFsTm9uQ29tcHV0
ZWRNYXJnaW4geyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6b250YWxDb21wdXRl
ZE1hcmdpbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkQm9yZGVyIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzVmFsaWRQYWRkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFs
aWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKQEAgLTUzMSwxMiArNTMxLDEyIEBAIGlubGluZSB2
b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbiBtYXJnaW4p
CiAgICAgbV92ZXJ0aWNhbE1hcmdpbiA9IG1hcmdpbjsKIH0KIAotaW5saW5lIHZvaWQgQm94Ojpz
ZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1h
cmdpbikKK2lubGluZSB2b2lkIEJveDo6c2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKExheW91
dDo6SG9yaXpvbnRhbE1hcmdpbiBtYXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAg
IHNldEhhc1ZhbGlkSG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKCk7CisgICAgc2V0SGFzVmFs
aWRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oKTsKICNlbmRpZgotICAgIG1faG9yaXpvbnRhbE5v
bkNvbXB1dGVkTWFyZ2luID0gbWFyZ2luOworICAgIG1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2lu
ID0gbWFyZ2luOwogfQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldEJvcmRlcihMYXlvdXQ6OkVkZ2Vz
IGJvcmRlcikKQEAgLTYwNSwxNiArNjA1LDE2IEBAIGlubGluZSBMYXlvdXRVbml0IEJveDo6bm9u
Q29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2lu
Lm5vbkNvbGxhcHNlZFZhbHVlcygpLmFmdGVyOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBCb3g6
Om5vbkNvbXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdAoraW5saW5lIExheW91dFVuaXQgQm94Ojpj
b21wdXRlZE1hcmdpblN0YXJ0KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6
b250YWxOb25Db21wdXRlZE1hcmdpbik7Ci0gICAgcmV0dXJuIG1faG9yaXpvbnRhbE5vbkNvbXB1
dGVkTWFyZ2luLnN0YXJ0OworICAgIEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVk
TWFyZ2luKTsKKyAgICByZXR1cm4gbV9ob3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4uc3RhcnQ7CiB9
CiAKLWlubGluZSBMYXlvdXRVbml0IEJveDo6bm9uQ29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdAor
aW5saW5lIExheW91dFVuaXQgQm94Ojpjb21wdXRlZE1hcmdpbkVuZCgpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKG1faGFzVmFsaWRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4pOwotICAgIHJldHVy
biBtX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbi5lbmQ7CisgICAgQVNTRVJUKG1faGFzVmFs
aWRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4pOworICAgIHJldHVybiBtX2hvcml6b250YWxDb21w
dXRlZE1hcmdpbi5lbmQ7CiB9CiAKIGlubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3g6OnBh
ZGRpbmdUb3AoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdEF2b2lkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9p
ZGVyLmgKaW5kZXggN2Q0NjY5MDQ5NGQuLjhiNWNkODg0MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmgKQEAgLTcyLDggKzcyLDkgQEAgcHJvdGVjdGVk
OgogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5
Qm94KCkubWFyZ2luQmVmb3JlKCk7IH0KICAgICBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKCkgY29u
c3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm1hcmdpbkFmdGVyKCk7IH0KLSAgICBMYXlvdXRVbml0
IG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm5vbkNvbXB1dGVkTWFy
Z2luU3RhcnQoKTsgfQotICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3QgeyByZXR1cm4g
ZGlzcGxheUJveCgpLm5vbkNvbXB1dGVkTWFyZ2luRW5kKCk7IH0KKyAgICAvLyBEbyBub3QgdXNl
IHRoZSB1c2VkIHZhbHVlcyBoZXJlIGJlY2F1c2UgdGhleSBjb21wdXRlZCBhcyBpZiB0aGlzIGJv
eCB3YXMgbm90IGEgZmxvYXQgYXZvaWRlci4KKyAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLmNvbXB1dGVkTWFyZ2luU3RhcnQoKTsgfQorICAg
IExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLmNvbXB1
dGVkTWFyZ2luRW5kKCk7IH0KIAogICAgIExheW91dFVuaXQgbWFyZ2luQm94V2lkdGgoKSBjb25z
dCB7IHJldHVybiBtYXJnaW5TdGFydCgpICsgZGlzcGxheUJveCgpLndpZHRoKCkgKyBtYXJnaW5F
bmQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZTIxYjg3
NDA3MjcuLjVjNWYzZWRiNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC0zNDIsOCArMzQyLDggQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogCiAgICAgYXV0byYg
ZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aCh3aWR0aEFuZE1hcmdpbi53aWR0
aCk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm1h
cmdpbik7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4od2lk
dGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4pOworICAgIGRpc3BsYXlCb3guc2V0SG9yaXpv
bnRhbE1hcmdpbih3aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luKTsKKyAgICBkaXNwbGF5Qm94LnNl
dEhvcml6b250YWxDb21wdXRlZE1hcmdpbih3aWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbik7
CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358258</attachid>
            <date>2019-01-03 10:10:08 -0800</date>
            <delta_ts>2019-01-03 18:22:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193059-20190103101003.patch</filename>
            <type>text/plain</type>
            <size>58706</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxZjhkOTgyY2M4Mzk0
OTQwNzM0NzI4MDUyYWQ4MDA0ZGY2ZmE2OS4uNmQzNWNjYWZhNTRjOGI0M2I4MTAwZGZiOTI0ZWU0
NjA2NTZlOGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTAxLTAzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBVc2UgY29t
cHV0ZWRWYWx1ZSBhbmQgdXNlZFZhbHVlIGNvbnNpc3RlbnRseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMDU5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIy
L2Nhc2NhZGUuaHRtbCN2YWx1ZS1zdGFnZXMKKworICAgICAgICA2LjEuMiBDb21wdXRlZCB2YWx1
ZXMKKyAgICAgICAgU3BlY2lmaWVkIHZhbHVlcyBhcmUgcmVzb2x2ZWQgdG8gY29tcHV0ZWQgdmFs
dWVzIGR1cmluZyB0aGUgY2FzY2FkZTsgZm9yIGV4YW1wbGUgVVJJcyBhcmUgbWFkZSBhYnNvbHV0
ZSBhbmQgJ2VtJyBhbmQgJ2V4JyB1bml0cworICAgICAgICBhcmUgY29tcHV0ZWQgdG8gcGl4ZWwg
b3IgYWJzb2x1dGUgbGVuZ3Rocy4gQ29tcHV0aW5nIGEgdmFsdWUgbmV2ZXIgcmVxdWlyZXMgdGhl
IHVzZXIgYWdlbnQgdG8gcmVuZGVyIHRoZSBkb2N1bWVudC4uLgorCisgICAgICAgIDYuMS4zIFVz
ZWQgdmFsdWVzCisgICAgICAgIENvbXB1dGVkIHZhbHVlcyBhcmUgcHJvY2Vzc2VkIGFzIGZhciBh
cyBwb3NzaWJsZSB3aXRob3V0IGZvcm1hdHRpbmcgdGhlIGRvY3VtZW50LiBTb21lIHZhbHVlcywg
aG93ZXZlciwgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCB3aGVuIHRoZSBkb2N1bWVudAorICAgICAg
ICBpcyBiZWluZyBsYWlkIG91dC4gRm9yIGV4YW1wbGUsIGlmIHRoZSB3aWR0aCBvZiBhbiBlbGVt
ZW50IGlzIHNldCB0byBiZSBhIGNlcnRhaW4gcGVyY2VudGFnZSBvZiBpdHMgY29udGFpbmluZyBi
bG9jaywgdGhlIHdpZHRoIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGlsIHRoZSB3aWR0aCBvZiB0
aGUgY29udGFpbmluZyBibG9jayBoYXMgYmVlbiBkZXRlcm1pbmVkLiBUaGUgdXNlZCB2YWx1ZSBp
cyB0aGUgcmVzdWx0IG9mIHRha2luZyB0aGUgY29tcHV0ZWQgdmFsdWUgYW5kIHJlc29sdmluZyBh
bnkgcmVtYWluaW5nIGRlcGVuZGVuY2llcyBpbnRvIGFuIGFic29sdXRlIHZhbHVlLgorCisgICAg
ICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0
cnkgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFj
ZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcGxpY2F0ZWRDYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAg
ICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5
b3V0U3RhdGU6OkxheW91dFN0YXRlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoK
KyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVXaWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAg
ICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SGFzVmFsaWRI
b3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpzZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94Ojpjb21wdXRlZE1hcmdpblN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6Y29tcHV0ZWRNYXJnaW5FbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldEhvcml6b250YWxOb25D
b21wdXRlZE1hcmdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6
Om5vbkNvbXB1dGVkTWFyZ2luU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6Qm94Ojpub25Db21wdXRlZE1hcmdpbkVuZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRBdm9pZGVyOjptYXJnaW5TdGFydCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6bWFyZ2luRW5kIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lk
dGhBbmRNYXJnaW4gY29uc3QpOgorCiAyMDE5LTAxLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzkzMDYpOiBEb24ndCBk
aXNhYmxlIGZvbnQgc21vb3RoaW5nIGluIHRyYW5zcGFyZW50IGxheWVycyBvbiBtYWNPUyBNb2ph
dmUgYW5kIGxhdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCAxMWVmYzQ2MThiOTFhYThmNjFmZjAzMjVjYTc2NDgwZTQ4Yzk1OTI2Li41ZTUzNmE4
YmFlNzM1MWMzNWQzYTJmYTQzODUzOWMwNjc0NTgxOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lkIEZvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogICAgIH0KIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7Ci0gICAgZGlzcGxheUJveC5zZXRM
ZWZ0KGhvcml6b250YWxHZW9tZXRyeS5sZWZ0ICsgaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5k
TWFyZ2luLm1hcmdpbi5zdGFydCk7CisgICAgZGlzcGxheUJveC5zZXRMZWZ0KGhvcml6b250YWxH
ZW9tZXRyeS5sZWZ0ICsgaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLnVzZWRNYXJn
aW4uc3RhcnQpOwogICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGhvcml6b250YWxH
ZW9tZXRyeS53aWR0aEFuZE1hcmdpbi53aWR0aCk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9u
dGFsTWFyZ2luKGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwotICAg
IGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKGhvcml6b250YWxHZW9t
ZXRyeS53aWR0aEFuZE1hcmdpbi5ub25Db21wdXRlZE1hcmdpbik7CisgICAgZGlzcGxheUJveC5z
ZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi51c2Vk
TWFyZ2luKTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbihob3Jp
em9udGFsR2VvbWV0cnkud2lkdGhBbmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCiB2b2lk
IEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25z
dCBCb3gmIGxheW91dEJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBjMzM5Zjk3ODBmYzQwZWZmNjA4Zjky
NTc5Y2M0NzAwZDkxMWU0ZTNlLi5iNGQ4ZjRmNTRkYzAzODY5YzE5Mjc0ZjA1ZDA1ZTNlYWEwMzdl
YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCkBAIC0yODAsOCArMjgwLDEwIEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0
CiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3Ao
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsK
ICAgICBhdXRvIGhlaWdodCA9IHVzZWRIZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21w
dXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1h
bCk7Ci0gICAgYXV0byBtYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxl
Lm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBtYXJnaW5B
ZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7CisgICAgYXV0byBjb21wdXRlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byB1
c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRNYXJnaW5CZWZvcmU7CisgICAgYXV0byB1c2VkTWFy
Z2luQWZ0ZXIgPSBjb21wdXRlZE1hcmdpbkFmdGVyOwogICAgIGF1dG8gcGFkZGluZ1RvcCA9IGRp
c3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5nQm90dG9t
ID0gZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKICAgICBhdXRvIGJvcmRl
clRvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCk7CkBAIC0yOTEsNzIgKzI5Myw3MiBAQCBWZXJ0
aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVw
bGFjZWRWZXJ0aWNhbEdlb21ldAogICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
Rm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKIAogICAgIGlm
ICh0b3AgJiYgaGVpZ2h0ICYmIGJvdHRvbSkgewotICAgICAgICBpZiAoIW1hcmdpbkJlZm9yZSAm
JiAhbWFyZ2luQWZ0ZXIpIHsKKyAgICAgICAgaWYgKCF1c2VkTWFyZ2luQmVmb3JlICYmICF1c2Vk
TWFyZ2luQWZ0ZXIpIHsKICAgICAgICAgICAgIGF1dG8gbWFyZ2luQmVmb3JlQW5kQWZ0ZXIgPSBj
b250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAq
aGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICpib3R0b20pOwotICAgICAg
ICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQWZ0ZXIgPSBtYXJnaW5CZWZvcmVBbmRBZnRlciAv
IDI7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW1hcmdpbkJlZm9yZSkKLSAgICAgICAgICAgIG1hcmdp
bkJlZm9yZSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsgcGFk
ZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdp
bkFmdGVyICsgKmJvdHRvbSk7CisgICAgICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gdXNlZE1h
cmdpbkFmdGVyID0gbWFyZ2luQmVmb3JlQW5kQWZ0ZXIgLyAyOworICAgICAgICB9IGVsc2UgaWYg
KCF1c2VkTWFyZ2luQmVmb3JlKQorICAgICAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IGNvbnRh
aW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWln
aHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5BZnRlciArICpi
b3R0b20pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYXJnaW5BZnRlciA9IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRp
bmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICpib3R0b20p
OworICAgICAgICAgICAgdXNlZE1hcmdpbkFmdGVyID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0g
KCp0b3AgKyAqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVp
Z2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICpib3R0b20pOwogICAgICAgICAv
LyBPdmVyLWNvbnN0cmFpbmVkPwotICAgICAgICBhdXRvIGJveEhlaWdodCA9ICp0b3AgKyAqbWFy
Z2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90
dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbTsKKyAgICAgICAgYXV0
byBib3hIZWlnaHQgPSAqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRk
aW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1h
cmdpbkFmdGVyICsgKmJvdHRvbTsKICAgICAgICAgaWYgKGJveEhlaWdodCA+IGNvbnRhaW5pbmdC
bG9ja0hlaWdodCkKLSAgICAgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0
ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlcik7IAorICAgICAg
ICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1hcmdp
bkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRv
bSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAKICAgICBpZiAo
IXRvcCAmJiAhaGVpZ2h0ICYmIGJvdHRvbSkgewogICAgICAgICAvLyAjMQogICAgICAgICBoZWln
aHQgPSBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpOwotICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFsdWVPcigw
KTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZU9yKDApOwotICAgICAg
ICB0b3AgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKm1hcmdpbkJlZm9yZSArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICptYXJnaW5BZnRlciArICpib3R0b20pOyAKKyAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IHVz
ZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkFmdGVyID0gdXNl
ZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CisgICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCAtICgqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVp
Z2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIgKyAq
Ym90dG9tKTsgCiAgICAgfQogCiAgICAgaWYgKCF0b3AgJiYgIWJvdHRvbSAmJiBoZWlnaHQpIHsK
ICAgICAgICAgLy8gIzIKICAgICAgICAgdG9wID0gc3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91
dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdp
bkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9
IG1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7Ci0gICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9j
a0hlaWdodCAtICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3Ag
KyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlcik7
IAorICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDAp
OworICAgICAgICB1c2VkTWFyZ2luQWZ0ZXIgPSB1c2VkTWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsK
KyAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1h
cmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0Jv
dHRvbSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAKICAgICBp
ZiAoIWhlaWdodCAmJiAhYm90dG9tICYmIHRvcCkgewogICAgICAgICAvLyAjMwogICAgICAgICBo
ZWlnaHQgPSBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOwotICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFsdWVP
cigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZU9yKDApOwotICAg
ICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICptYXJnaW5CZWZv
cmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBi
b3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKKyAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9
IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkFmdGVyID0g
dXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CisgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdC
bG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRk
aW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1h
cmdpbkFmdGVyKTsgCiAgICAgfQogCiAgICAgaWYgKCF0b3AgJiYgaGVpZ2h0ICYmIGJvdHRvbSkg
ewogICAgICAgICAvLyAjNAotICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFs
dWVPcigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZU9yKDApOwot
ICAgICAgICB0b3AgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKm1hcmdpbkJlZm9yZSArIGJv
cmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJv
dHRvbSArICptYXJnaW5BZnRlciArICpib3R0b20pOyAKKyAgICAgICAgdXNlZE1hcmdpbkJlZm9y
ZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkFmdGVy
ID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CisgICAgICAgIHRvcCA9IGNvbnRhaW5pbmdC
bG9ja0hlaWdodCAtICgqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3Ag
KyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0
ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAgaWYgKCFoZWlnaHQgJiYgdG9wICYmIGJvdHRv
bSkgewogICAgICAgICAvLyAjNQotICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUu
dmFsdWVPcigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZU9yKDAp
OwotICAgICAgICBoZWlnaHQgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICptYXJn
aW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbSArIGJvcmRl
ckJvdHRvbSArICptYXJnaW5BZnRlciArICpib3R0b20pOyAKKyAgICAgICAgdXNlZE1hcmdpbkJl
Zm9yZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkFm
dGVyID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CisgICAgICAgIGhlaWdodCA9IGNvbnRh
aW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJUb3Ag
KyBwYWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2lu
QWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAgaWYgKCFib3R0b20gJiYgdG9wICYmIGhl
aWdodCkgewogICAgICAgICAvLyAjNgotICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZv
cmUudmFsdWVPcigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZU9y
KDApOwotICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICpt
YXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdC
b3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKKyAgICAgICAgdXNlZE1hcmdp
bkJlZm9yZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdp
bkFmdGVyID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CisgICAgICAgIGJvdHRvbSA9IGNv
bnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20g
KyAqdXNlZE1hcmdpbkFmdGVyKTsgCiAgICAgfQogCiAgICAgQVNTRVJUKHRvcCk7CiAgICAgQVNT
RVJUKGJvdHRvbSk7CiAgICAgQVNTRVJUKGhlaWdodCk7Ci0gICAgQVNTRVJUKG1hcmdpbkJlZm9y
ZSk7Ci0gICAgQVNTRVJUKG1hcmdpbkFmdGVyKTsKKyAgICBBU1NFUlQodXNlZE1hcmdpbkJlZm9y
ZSk7CisgICAgQVNTRVJUKHVzZWRNYXJnaW5BZnRlcik7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0o
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01h
cmdpbl0gLT4gb3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4
KSBib3R0b20oIiAgPDwgKmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4
KSBtYXJnaW4oIiA8PCAqbWFyZ2luQmVmb3JlIDw8ICJweCwgIiAgPDwgKm1hcmdpbkFmdGVyIDw8
ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiB7ICp0
b3AsICpib3R0b20sIHsgKmhlaWdodCwgeyB7ICptYXJnaW5CZWZvcmUsICptYXJnaW5BZnRlciB9
LCB7IH0gfSB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0XVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IG5v
bi1yZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8ICJweCkgYm90dG9tKCIgIDw8ICpib3R0b20g
PDwgInB4KSBoZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKnVzZWRNYXJn
aW5CZWZvcmUgPDwgInB4LCAiICA8PCAqdXNlZE1hcmdpbkFmdGVyIDw8ICJweCkgbGF5b3V0Qm94
KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsg
KmhlaWdodCwgeyB7ICp1c2VkTWFyZ2luQmVmb3JlLCAqdXNlZE1hcmdpbkFmdGVyIH0sIHsgfSB9
IH0gfTsKIH0KIAogSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNl
ZFdpZHRoKQpAQCAtMzk4LDEwICs0MDAsMTAgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKICAg
ICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxMZWZ0KCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJpZ2h0ID0gY29tcHV0ZWRWYWx1ZUlm
Tm90QXV0byhzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAg
IGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0aCB7
IHVzZWRXaWR0aC52YWx1ZSgpLCBGaXhlZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlm
Tm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAg
YXV0byBtYXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgp
LCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpblN0YXJ0
ID0gbWFyZ2luU3RhcnQudmFsdWVPcigwKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5k
ID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7CisgICAgYXV0byBjb21wdXRlZE1hcmdpblN0YXJ0ID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCk7CisgICAgYXV0byBjb21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRv
IHVzZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkTWFyZ2luU3RhcnQ7CisgICAgYXV0byB1c2VkTWFy
Z2luRW5kID0gY29tcHV0ZWRNYXJnaW5FbmQ7CiAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3Bs
YXlCb3gucGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0g
ZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gYm9yZGVyTGVm
dCA9IGRpc3BsYXlCb3guYm9yZGVyTGVmdCgpOwpAQCAtNDExLDggKzQxMyw4IEBAIEhvcml6b250
YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxh
Y2VkSG9yaXpvbnRhbEdlCiAgICAgICAgIC8vIElmIGFsbCB0aHJlZSBvZiAnbGVmdCcsICd3aWR0
aCcsIGFuZCAncmlnaHQnIGFyZSAnYXV0byc6IEZpcnN0IHNldCBhbnkgJ2F1dG8nIHZhbHVlcyBm
b3IgJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdpbi1yaWdodCcgdG8gMC4KICAgICAgICAgLy8gVGhl
biwgaWYgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGVzdGFibGlzaGlu
ZyB0aGUgc3RhdGljLXBvc2l0aW9uIGNvbnRhaW5pbmcgYmxvY2sgaXMgJ2x0cicgc2V0ICdsZWZ0
JyB0byB0aGUgc3RhdGljCiAgICAgICAgIC8vIHBvc2l0aW9uIGFuZCBhcHBseSBydWxlIG51bWJl
ciB0aHJlZSBiZWxvdzsgb3RoZXJ3aXNlLCBzZXQgJ3JpZ2h0JyB0byB0aGUgc3RhdGljIHBvc2l0
aW9uIGFuZCBhcHBseSBydWxlIG51bWJlciBvbmUgYmVsb3cuCi0gICAgICAgIG1hcmdpblN0YXJ0
ID0gbWFyZ2luU3RhcnQudmFsdWVPcigwKTsKLSAgICAgICAgbWFyZ2luRW5kID0gbWFyZ2luRW5k
LnZhbHVlT3IoMCk7CisgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5TdGFydC52
YWx1ZU9yKDApOworICAgICAgICB1c2VkTWFyZ2luRW5kID0gdXNlZE1hcmdpbkVuZC52YWx1ZU9y
KDApOwogCiAgICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uID0gc3RhdGljSG9y
aXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KTsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pCkBAIC00MjUsODQgKzQy
Nyw4NCBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpv
dXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogICAgICAgICAvLyBzb2x2ZSBmb3IgJ21h
cmdpbi1yaWdodCcgKCdtYXJnaW4tbGVmdCcpLiBJZiBvbmUgb2YgJ21hcmdpbi1sZWZ0JyBvciAn
bWFyZ2luLXJpZ2h0JyBpcyAnYXV0bycsIHNvbHZlIHRoZSBlcXVhdGlvbiBmb3IgdGhhdCB2YWx1
ZS4KICAgICAgICAgLy8gSWYgdGhlIHZhbHVlcyBhcmUgb3Zlci1jb25zdHJhaW5lZCwgaWdub3Jl
IHRoZSB2YWx1ZSBmb3IgJ2xlZnQnIChpbiBjYXNlIHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eSBv
ZiB0aGUgY29udGFpbmluZyBibG9jayBpcyAncnRsJykgb3IgJ3JpZ2h0JwogICAgICAgICAvLyAo
aW4gY2FzZSAnZGlyZWN0aW9uJyBpcyAnbHRyJykgYW5kIHNvbHZlIGZvciB0aGF0IHZhbHVlLgot
ICAgICAgICBpZiAoIW1hcmdpblN0YXJ0ICYmICFtYXJnaW5FbmQpIHsKKyAgICAgICAgaWYgKCF1
c2VkTWFyZ2luU3RhcnQgJiYgIXVzZWRNYXJnaW5FbmQpIHsKICAgICAgICAgICAgIGF1dG8gbWFy
Z2luU3RhcnRBbmRFbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsg
KnJpZ2h0KTsKICAgICAgICAgICAgIGlmIChtYXJnaW5TdGFydEFuZEVuZCA+PSAwKQotICAgICAg
ICAgICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luRW5kID0gbWFyZ2luU3RhcnRBbmRFbmQgLyAy
OyAgCisgICAgICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gdXNlZE1hcmdpbkVuZCA9IG1h
cmdpblN0YXJ0QW5kRW5kIC8gMjsgIAogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbWFy
Z2luU3RhcnQgPSAwX2x1OwotICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsK
KyAgICAgICAgICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gMF9sdTsKKyAgICAgICAgICAg
ICAgICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsg
KnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSAwX2x1OwotICAgICAgICAgICAg
ICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9y
ZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZE1hcmdp
bkVuZCA9IDBfbHU7CisgICAgICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IGNvbnRh
aW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdo
dCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KCFtYXJnaW5TdGFydCkgewotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAg
IH0gZWxzZSBpZiAoIXVzZWRNYXJnaW5TdGFydCkgeworICAgICAgICAgICAgdXNlZE1hcmdpblN0
YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGlu
Z0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2lu
RW5kICsgKnJpZ2h0KTsKICAgICAgICAgICAgIC8vIE92ZXJjb25zdHJhaW5lZD8gSWdub3JlIHJp
Z2h0IChsZWZ0KS4KLSAgICAgICAgICAgIGlmICgqbWFyZ2luU3RhcnQgPCAwKSB7CisgICAgICAg
ICAgICBpZiAoKnVzZWRNYXJnaW5TdGFydCA8IDApIHsKICAgICAgICAgICAgICAgICBpZiAoaXNM
ZWZ0VG9SaWdodERpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBj
b250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
ICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAg
ICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CiAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRl
clJpZ2h0ICsgKm1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHVzZWRN
YXJnaW5TdGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5n
TGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5F
bmQgKyAqcmlnaHQpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKCFtYXJnaW5F
bmQpIHsKLSAgICAgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCps
ZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAgICAgICB9IGVsc2UgaWYg
KCF1c2VkTWFyZ2luRW5kKSB7CisgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFpbmlu
Z0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQp
OwogICAgICAgICAgICAgLy8gT3ZlcmNvbnN0cmFpbmVkPyBJZ25vcmUgcmlnaHQgKGxlZnQpLgot
ICAgICAgICAgICAgaWYgKCptYXJnaW5FbmQgPCAwKSB7CisgICAgICAgICAgICBpZiAoKnVzZWRN
YXJnaW5FbmQgPCAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24pCi0gICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQpOworICAgICAgICAgICAgICAgICAgICB1
c2VkTWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdp
blN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgbWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1hcmdpblN0YXJ0ICsgYm9y
ZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFp
bmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5n
TGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE90aGVyd2lz
ZSwgc2V0ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQn
IHRvIDAsIGFuZCBwaWNrIHRoZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzaXggcnVsZXMgdGhhdCBh
cHBsaWVzLgotICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7Ci0g
ICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOworICAgICAgICB1c2VkTWFy
Z2luU3RhcnQgPSB1c2VkTWFyZ2luU3RhcnQudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdp
bkVuZCA9IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsKICAgICB9CiAKLSAgICBBU1NFUlQobWFy
Z2luU3RhcnQpOwotICAgIEFTU0VSVChtYXJnaW5FbmQpOworICAgIEFTU0VSVCh1c2VkTWFyZ2lu
U3RhcnQpOworICAgIEFTU0VSVCh1c2VkTWFyZ2luRW5kKTsKIAogICAgIGlmICghbGVmdCAmJiAh
d2lkdGggJiYgcmlnaHQpIHsKICAgICAgICAgLy8gIzEKICAgICAgICAgd2lkdGggPSBzaHJpbmtU
b0ZpdFdpZHRoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBsZWZ0ID0gY29udGFp
bmluZ0Jsb2NrV2lkdGggLSAoKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0
ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCArICpy
aWdodCk7CisgICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdp
blN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0
ICArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgIH0gZWxzZSBp
ZiAoIWxlZnQgJiYgIXJpZ2h0ICYmIHdpZHRoKSB7CiAgICAgICAgIC8vICMyCiAgICAgICAgIGF1
dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9y
T3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAgICAgICAgaWYg
KGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKICAgICAgICAgICAgIGxlZnQgPSBzdGF0aWNIb3Jp
em9udGFsUG9zaXRpb247Ci0gICAgICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kKTsKKyAgICAgICAg
ICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0
YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICByaWdodCA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbjsKLSAgICAgICAgICAgIGxlZnQg
PSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFk
ZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5F
bmQgKyAqcmlnaHQpOworICAgICAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KCp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBw
YWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kICsgKnJpZ2h0KTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoIXdpZHRoICYmICFyaWdodCAmJiBsZWZ0KSB7CiAgICAg
ICAgIC8vICMzCiAgICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKLSAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVm
dCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAgICAgIHJpZ2h0ID0g
Y29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQg
KyAqdXNlZE1hcmdpbkVuZCk7CiAgICAgfSBlbHNlIGlmICghbGVmdCAmJiB3aWR0aCAmJiByaWdo
dCkgewogICAgICAgICAvLyAjNAotICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFk
ZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAg
bGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICp1c2VkTWFyZ2luRW5kICsgKnJpZ2h0KTsKICAgICB9IGVsc2UgaWYgKCF3aWR0aCAmJiBsZWZ0
ICYmIHJpZ2h0KSB7CiAgICAgICAgIC8vICM1Ci0gICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyBwYWRkaW5nUmlnaHQgICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsK
KyAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFy
Z2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgICsgYm9y
ZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CiAgICAgfSBlbHNlIGlmICghcmln
aHQgJiYgbGVmdCAmJiB3aWR0aCkgewogICAgICAgICAvLyAjNgotICAgICAgICByaWdodCA9IGNv
bnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFy
Z2luRW5kKTsKKyAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCAr
ICp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBw
YWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKICAgICB9CiAKICAg
ICBBU1NFUlQobGVmdCk7CiAgICAgQVNTRVJUKHJpZ2h0KTsKICAgICBBU1NFUlQod2lkdGgpOwot
ICAgIEFTU0VSVChtYXJnaW5TdGFydCk7Ci0gICAgQVNTRVJUKG1hcmdpbkVuZCk7CisgICAgQVNT
RVJUKHVzZWRNYXJnaW5TdGFydCk7CisgICAgQVNTRVJUKHVzZWRNYXJnaW5FbmQpOwogCi0gICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3Np
dGlvbl1bV2lkdGhdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IGxlZnQo
IiA8PCAqbGVmdCA8PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwg
KndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpblN0YXJ0IDw8ICJweCwgIiAgPDwgKm1h
cmdpbkVuZCA8PCAicHgpIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICBy
ZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7ICp3aWR0aCwgeyAqbWFyZ2luU3RhcnQsICptYXJnaW5F
bmQgfSwgeyBub25Db21wdXRlZE1hcmdpblN0YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH0g
fTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8
PCAiW1Bvc2l0aW9uXVtXaWR0aF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24tcmVwbGFjZWQg
LT4gbGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmlnaHQoIiAgPDwgKnJpZ2h0IDw8ICJweCkgd2lk
dGgoIiA8PCAqd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCAqdXNlZE1hcmdpblN0YXJ0IDw8ICJw
eCwgIiAgPDwgKnVzZWRNYXJnaW5FbmQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94
IDw8ICIpIik7CisgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyAqd2lkdGgsIHsgKnVzZWRN
YXJnaW5TdGFydCwgKnVzZWRNYXJnaW5FbmQgfSwgeyBjb21wdXRlZE1hcmdpblN0YXJ0LnZhbHVl
T3IoMCksIGNvbXB1dGVkTWFyZ2luRW5kLnZhbHVlT3IoMCkgfSB9IH07CiB9CiAKIFZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gm
IGxheW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkKQEAgLTUyOCw4ICs1
MzAsMTAgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVk
VmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7
CiAgICAgYXV0byBib3R0b20gPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxC
b3R0b20oKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0ID0gaW5saW5l
UmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZEhlaWdo
dCkuaGVpZ2h0OwotICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8g
bWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVyKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIGNvbXB1dGVkTWFyZ2luQmVmb3JlID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAg
IGF1dG8gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkTWFyZ2luQmVmb3JlOworICAgIGF1dG8g
dXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRNYXJnaW5BZnRlcjsKICAgICBhdXRvIHBhZGRpbmdU
b3AgPSBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gcGFkZGlu
Z0JvdHRvbSA9IGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7CiAgICAgYXV0
byBib3JkZXJUb3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpOwpAQCAtNTQyLDM2ICs1NDYsMzYg
QEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKIAogICAgIGlmICghYm90dG9tKSB7CiAgICAgICAg
IC8vICMyCi0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOwot
ICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CisgICAgICAgIHVz
ZWRNYXJnaW5CZWZvcmUgPSB1c2VkTWFyZ2luQmVmb3JlLnZhbHVlT3IoMCk7CisgICAgICAgIHVz
ZWRNYXJnaW5BZnRlciA9IHVzZWRNYXJnaW5BZnRlci52YWx1ZU9yKDApOwogICAgIH0KIAotICAg
IGlmICghbWFyZ2luQmVmb3JlICYmICFtYXJnaW5BZnRlcikgeworICAgIGlmICghdXNlZE1hcmdp
bkJlZm9yZSAmJiAhdXNlZE1hcmdpbkFmdGVyKSB7CiAgICAgICAgIC8vICMzCiAgICAgICAgIGF1
dG8gbWFyZ2luQmVmb3JlQW5kQWZ0ZXIgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCAr
IGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVy
Qm90dG9tICsgKmJvdHRvbSk7Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkFmdGVyID0g
bWFyZ2luQmVmb3JlQW5kQWZ0ZXIgLyAyOworICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gdXNl
ZE1hcmdpbkFmdGVyID0gbWFyZ2luQmVmb3JlQW5kQWZ0ZXIgLyAyOwogICAgIH0KIAogICAgIC8v
ICM0CiAgICAgaWYgKCF0b3ApCi0gICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRp
bmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsKKyAgICAg
ICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp1c2VkTWFyZ2luQmVmb3JlICsgYm9y
ZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0
b20gKyAqdXNlZE1hcmdpbkFmdGVyICsgKmJvdHRvbSk7CiAKICAgICBpZiAoIWJvdHRvbSkKLSAg
ICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVm
b3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBi
b3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOworICAgICAgICBib3R0b20gPSBjb250YWluaW5n
QmxvY2tIZWlnaHQgLSAoKnRvcCArICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFk
ZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1h
cmdpbkFmdGVyKTsKIAotICAgIGlmICghbWFyZ2luQmVmb3JlKQotICAgICAgICBtYXJnaW5CZWZv
cmUgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdU
b3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVy
ICsgKmJvdHRvbSk7CisgICAgaWYgKCF1c2VkTWFyZ2luQmVmb3JlKQorICAgICAgICB1c2VkTWFy
Z2luQmVmb3JlID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJUb3AgKyBw
YWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICp1c2Vk
TWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsKIAotICAgIGlmICghbWFyZ2luQWZ0ZXIpCi0gICAgICAg
IG1hcmdpbkFmdGVyID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVm
b3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBi
b3JkZXJCb3R0b20gKyAqYm90dG9tKTsKKyAgICBpZiAoIXVzZWRNYXJnaW5BZnRlcikKKyAgICAg
ICAgdXNlZE1hcmdpbkFmdGVyID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNl
ZE1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5n
Qm90dG9tICsgYm9yZGVyQm90dG9tICsgKmJvdHRvbSk7CiAKICAgICAvLyAjNQotICAgIGF1dG8g
Ym94SGVpZ2h0ID0gKnRvcCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9w
ICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlciAr
ICpib3R0b207CisgICAgYXV0byBib3hIZWlnaHQgPSAqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUg
KyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRl
ckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIgKyAqYm90dG9tOwogICAgIGlmIChib3hIZWlnaHQg
PiBjb250YWluaW5nQmxvY2tIZWlnaHQpCi0gICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9j
a0hlaWdodCAtICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3Ag
KyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyKTsg
CisgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRN
YXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0Jv
dHRvbSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIpOyAKIAotICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hl
aWdodF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyByZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8
ICJweCkgYm90dG9tKCIgIDw8ICpib3R0b20gPDwgInB4KSBoZWlnaHQoIiA8PCBoZWlnaHQgPDwg
InB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luQmVmb3JlIDw8ICJweCwgIiAgPDwgKm1hcmdpbkFmdGVy
IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiB7
ICp0b3AsICpib3R0b20sIHsgaGVpZ2h0LCB7IHsgKm1hcmdpbkJlZm9yZSwgKm1hcmdpbkFmdGVy
IH0sIHsgfSB9IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cg
cmVwbGFjZWQgLT4gdG9wKCIgPDwgKnRvcCA8PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8
ICJweCkgaGVpZ2h0KCIgPDwgaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKnVzZWRNYXJnaW5C
ZWZvcmUgPDwgInB4LCAiICA8PCAqdXNlZE1hcmdpbkFmdGVyIDw8ICJweCkgbGF5b3V0Qm94KCIg
PDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgaGVp
Z2h0LCB7IHsgKnVzZWRNYXJnaW5CZWZvcmUsICp1c2VkTWFyZ2luQWZ0ZXIgfSwgeyB9IH0gfSB9
OwogfQogCiBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpv
dXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2Vk
V2lkdGgpCkBAIC02MDAsMTAgKzYwNCwxMCBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogCiAg
ICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgp
LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAg
ICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5T
dGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBtYXJnaW5FbmQgPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVP
cigwKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3Io
MCk7CisgICAgYXV0byBjb21wdXRlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBj
b21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5k
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IGNv
bXB1dGVkTWFyZ2luU3RhcnQ7CisgICAgYXV0byB1c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRNYXJn
aW5FbmQ7CiAgICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5
b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZFdpZHRoKS53aWR0aDsKICAgICBhdXRvIHBhZGRpbmdM
ZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRk
aW5nUmlnaHQgPSBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CkBAIC02MjEs
NTUgKzYyNSw1NSBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogCiAgICAgaWYgKCFsZWZ0IHx8
ICFyaWdodCkgewogICAgICAgICAvLyAjMgotICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0
YXJ0LnZhbHVlT3IoMCk7IAotICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVPcigw
KTsgCisgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5TdGFydC52YWx1ZU9yKDAp
OyAKKyAgICAgICAgdXNlZE1hcmdpbkVuZCA9IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsgCiAg
ICAgfQogCi0gICAgaWYgKCFtYXJnaW5TdGFydCAmJiAhbWFyZ2luRW5kKSB7CisgICAgaWYgKCF1
c2VkTWFyZ2luU3RhcnQgJiYgIXVzZWRNYXJnaW5FbmQpIHsKICAgICAgICAgLy8gIzMKICAgICAg
ICAgYXV0byBtYXJnaW5TdGFydEFuZEVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0
ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3Jk
ZXJSaWdodCArICpyaWdodCk7CiAgICAgICAgIGlmIChtYXJnaW5TdGFydEFuZEVuZCA+PSAwKQot
ICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5FbmQgPSBtYXJnaW5TdGFydEFuZEVuZCAv
IDI7CisgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luRW5kID0gbWFyZ2lu
U3RhcnRBbmRFbmQgLyAyOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSAwX2x1Owot
ICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0
ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgICAgICAgICAgdXNlZE1h
cmdpblN0YXJ0ID0gMF9sdTsKKyAgICAgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFp
bmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdo
dCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IDBf
bHU7Ci0gICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAt
ICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAgICAgICAgICB1
c2VkTWFyZ2luRW5kID0gMF9sdTsKKyAgICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBj
b250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
IHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpy
aWdodCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyAjNAogICAg
IGlmICghbGVmdCkKLSAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJn
aW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAgbGVmdCA9IGNv
bnRhaW5pbmdCbG9ja1dpZHRoIC0gKCp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFk
ZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJn
aW5FbmQgKyAqcmlnaHQpOwogCiAgICAgaWYgKCFyaWdodCkKLSAgICAgICAgcmlnaHQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBw
YWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2lu
RW5kKTsKKyAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1
c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRp
bmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOwogCi0gICAgaWYgKCFtYXJn
aW5TdGFydCkKLSAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgq
bGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICBpZiAoIXVzZWRNYXJnaW5T
dGFydCkKKyAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAo
KmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogCi0gICAgaWYgKCFtYXJn
aW5FbmQpCi0gICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0
ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgaWYgKCF1c2VkTWFyZ2luRW5k
KQorICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQg
KyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBw
YWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CiAKLSAgICBhdXRvIGJveFdpZHRo
ID0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lk
dGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOwor
ICAgIGF1dG8gYm94V2lkdGggPSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1
c2VkTWFyZ2luRW5kICsgKnJpZ2h0KTsKICAgICBpZiAoYm94V2lkdGggPiBjb250YWluaW5nQmxv
Y2tXaWR0aCkgewogICAgICAgICAvLyAjNSBPdmVyLWNvbnN0cmFpbmVkPwogICAgICAgICBpZiAo
aXNMZWZ0VG9SaWdodERpcmVjdGlvbikKLSAgICAgICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7Cisg
ICAgICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRN
YXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1Jp
Z2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3Jk
ZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0
ICsgKm1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
IHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpy
aWdodCk7CiAgICAgfQogCiAgICAgQVNTRVJUKGxlZnQpOwogICAgIEFTU0VSVChyaWdodCk7Ci0g
ICAgQVNTRVJUKG1hcmdpblN0YXJ0KTsKLSAgICBBU1NFUlQobWFyZ2luRW5kKTsKKyAgICBBU1NF
UlQodXNlZE1hcmdpblN0YXJ0KTsKKyAgICBBU1NFUlQodXNlZE1hcmdpbkVuZCk7CiAKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0
aW9uXVtXaWR0aF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyByZXBsYWNlZCAtPiBsZWZ0KCIgPDwg
KmxlZnQgPDwgInB4KSByaWdodCgiICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8IHdpZHRo
IDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpblN0YXJ0IDw8ICJweCwgIiAgPDwgKm1hcmdpbkVu
ZCA8PCAicHgpIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4g
eyAqbGVmdCwgKnJpZ2h0LCB7IHdpZHRoLCB7ICptYXJnaW5TdGFydCwgKm1hcmdpbkVuZCB9LCB7
IG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQsIG5vbkNvbXB1dGVkTWFyZ2luRW5kIH0gfSB9OworICAg
IExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9z
aXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJlcGxhY2VkIC0+IGxlZnQoIiA8
PCAqbGVmdCA8PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwgd2lk
dGggPDwgInB4KSBtYXJnaW4oIiA8PCAqdXNlZE1hcmdpblN0YXJ0IDw8ICJweCwgIiAgPDwgKnVz
ZWRNYXJnaW5FbmQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Cisg
ICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyB3aWR0aCwgeyAqdXNlZE1hcmdpblN0YXJ0LCAq
dXNlZE1hcmdpbkVuZCB9LCB7IGNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWVPcigwKSwgY29tcHV0
ZWRNYXJnaW5FbmQudmFsdWVPcigwKSB9IH0gfTsKIH0KIAogSGVpZ2h0QW5kTWFyZ2luIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0
PiB1c2VkSGVpZ2h0KQpAQCAtNjkzLDEyICs2OTcsMTMgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBMYXlvdXRTdGF0
ZSYKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29udGFpbmluZ0Jsb2NrRGlzcGxh
eUJveC5jb250ZW50Qm94V2lkdGgoKTsKIAogICAgIGF1dG8gaGVpZ2h0ID0gdXNlZEhlaWdodCA/
IHVzZWRIZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKLSAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKLSAgICBhdXRvIG1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhz
dHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBjb21w
dXRlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQmVm
b3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIGNvbXB1dGVkTWFyZ2luQWZ0
ZXIgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5p
bmdCbG9ja1dpZHRoKTsKIAogICAgIC8vICMxCi0gICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVm
b3JlLnZhbHVlT3IoMCk7Ci0gICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZU9yKDAp
OworICAgIGF1dG8gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkTWFyZ2luQmVmb3JlLnZhbHVl
T3IoMCk7CisgICAgYXV0byB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZE1hcmdpbkFmdGVyLnZh
bHVlT3IoMCk7CisKICAgICAvLyAjMgogICAgIGlmICghaGVpZ2h0KSB7CiAgICAgICAgIEFTU0VS
VChpc0hlaWdodEF1dG8obGF5b3V0Qm94KSk7CkBAIC03MDYsMTEgKzcxMSwxMSBAQCBIZWlnaHRB
bmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNv
bnN0IExheW91dFN0YXRlJgogICAgIH0KIAogICAgIEFTU0VSVChoZWlnaHQpOwotICAgIEFTU0VS
VChtYXJnaW5CZWZvcmUpOwotICAgIEFTU0VSVChtYXJnaW5BZnRlcik7CisgICAgQVNTRVJUKHVz
ZWRNYXJnaW5CZWZvcmUpOworICAgIEFTU0VSVCh1c2VkTWFyZ2luQWZ0ZXIpOwogCi0gICAgTE9H
X1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRd
W01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2VkIC0+IGhlaWdodCgiIDw8ICpoZWlnaHQg
PDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luQmVmb3JlIDw8ICJweCwgIiA8PCAqbWFyZ2luQWZ0
ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0
dXJuIEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsgeyAqbWFyZ2luQmVmb3JlLCAqbWFyZ2lu
QWZ0ZXIgfSwgeyB9IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyBub24tcmVwbGFj
ZWQgLT4gaGVpZ2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IHVzZWRNYXJnaW5C
ZWZvcmUgPDwgInB4LCAiIDw8IHVzZWRNYXJnaW5BZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgi
IDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICByZXR1cm4gSGVpZ2h0QW5kTWFyZ2luIHsgKmhl
aWdodCwgeyB7IHVzZWRNYXJnaW5CZWZvcmUsIHVzZWRNYXJnaW5BZnRlciB9LCB7IH0gfSB9Owog
fQogCiBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5n
Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCkBAIC04Njks
MjkgKzg3NCwyNCBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTAogICAgIGF1dG8mIGNvbnRhaW5p
bmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCps
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LndpZHRoKCk7CiAKLSAgICBhdXRvIGNvbXB1
dGVNYXJnaW5FbmQgPSBbJl0oKSB7Ci0gICAgICAgIGlmIChwcmVjb21wdXRlZE1hcmdpbkVuZCkK
LSAgICAgICAgICAgIHJldHVybiBwcmVjb21wdXRlZE1hcmdpbkVuZC52YWx1ZSgpOwotICAgICAg
ICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5k
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICAgICAgcmV0dXJuIG1hcmdpbkVuZC52YWx1
ZU9yKDBfbHUpOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXB1dGVNYXJnaW5TdGFydCA9IFsmXSgp
IHsKKyAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IFsmXSB7CiAgICAgICAgIGlmIChwcmVjb21w
dXRlZE1hcmdpblN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luU3Rh
cnQudmFsdWUoKTsKICAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgICAg
ICByZXR1cm4gbWFyZ2luU3RhcnQudmFsdWVPcigwX2x1KTsKICAgICB9OwogCisgICAgYXV0byB1
c2VkTWFyZ2luRW5kID0gWyZdIHsKKyAgICAgICAgaWYgKHByZWNvbXB1dGVkTWFyZ2luRW5kKQor
ICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luRW5kLnZhbHVlKCk7CisgICAgICAg
IGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQo
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgICAgICByZXR1cm4gbWFyZ2luRW5kLnZhbHVl
T3IoMF9sdSk7CisgICAgfTsKKwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFj
ZWQoKTsKICAgICBBU1NFUlQocmVwbGFjZWQpOwogCi0gICAgYXV0byBtYXJnaW5TdGFydCA9IGNv
bXB1dGVNYXJnaW5TdGFydCgpOwotICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZU1hcmdpbkVu
ZCgpOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3Io
MCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApOwog
ICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0
aCB7IHVzZWRXaWR0aC52YWx1ZSgpLCBGaXhlZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKTsKLQogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRB
dXRvKGxheW91dEJveCk7CiAgICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZEhlaWdodFZhbHVlKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CiAKQEAgLTkxNiw4ICs5
MTYsMTAgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojppbmxp
bmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEwKIAogICAgIEFTU0VSVCh3aWR0aCk7CiAK
LSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAi
W1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8ICp3aWR0aCA8
PCAicHgpIG1hcmdpbigiIDw8IG1hcmdpblN0YXJ0IDw8ICJweCwgIiA8PCBtYXJnaW5FbmQgPDwg
InB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsg
KndpZHRoLCB7IG1hcmdpblN0YXJ0LCBtYXJnaW5FbmQgfSwgeyBub25Db21wdXRlZE1hcmdpblN0
YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1h
dHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cg
cmVwbGFjZWQgLT4gd2lkdGgoIiA8PCAqd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCB1c2VkTWFy
Z2luU3RhcnQoKSA8PCAicHgsICIgPDwgdXNlZE1hcmdpbkVuZCgpIDw8ICJweCkgLT4gbGF5b3V0
Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5TdGFy
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5FbmQgPSBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAg
cmV0dXJuIHsgKndpZHRoLCB7IHVzZWRNYXJnaW5TdGFydCgpLCB1c2VkTWFyZ2luRW5kKCkgfSwg
eyBjb21wdXRlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkTWFyZ2luRW5kLnZhbHVl
T3IoMCkgfSB9OwogfQogCiBMYXlvdXRTaXplIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC0xMDM3LDExICsxMDM5LDExIEBAIFZlcnRp
Y2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkTm9uQ29sbGFwc2VkCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsK
ICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZv
ckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgo
KTsKIAotICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHls
ZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9sdSk7Ci0g
ICAgYXV0byBtYXJnaW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
QWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9sdSk7CisgICAgYXV0byB1
c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZv
cmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9sdSk7CisgICAgYXV0byB1c2Vk
TWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVyKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDBfbHUpOwogCi0gICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltNYXJnaW5dIC0+IG5vbiBj
b2xsYXBzZWQgdmVydGljYWwgLT4gbWFyZ2luKCIgPDwgbWFyZ2luQmVmb3JlIDw8ICJweCwgIiA8
PCBtYXJnaW5BZnRlciA8PCAicHgpIC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsKLSAg
ICByZXR1cm4geyBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyIH07CisgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltNYXJnaW5dIC0+IG5vbiBj
b2xsYXBzZWQgdmVydGljYWwgLT4gbWFyZ2luKCIgPDwgdXNlZE1hcmdpbkJlZm9yZSA8PCAicHgs
ICIgPDwgdXNlZE1hcmdpbkFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRC
b3gpOworICAgIHJldHVybiB7IHVzZWRNYXJnaW5CZWZvcmUsIHVzZWRNYXJnaW5BZnRlciB9Owog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBjYzFkYmMwMzRl
ZThiOTc3NjBlNjg2OWViODcyZjllMmNjOTc2ZTczLi5mYjY0NGU3MmZmNTE3ODI5MjFkMzlmNTJm
Mjc5MzBiM2UzMTI0M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKGNvbnN0IENvbnRhaW5lciYg
aW5pdGlhbENvbnRhaW5pbmdCbG9jaywgY29uc3QgTGF5b3V0U2kKIAogICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2spOwog
ICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwotICAgIGRpc3BsYXlCb3gu
c2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRI
b3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oeyB9KTsKICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2Fs
TWFyZ2luKHsgfSk7CiAgICAgZGlzcGxheUJveC5zZXRCb3JkZXIoeyB9KTsKICAgICBkaXNwbGF5
Qm94LnNldFBhZGRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5kZXgg
ZDc2YjZhMzg1NjVlZjM0YWZmNDRmOWY4MTBhYjY2ZTJmOWUxMTQyMi4uNzBhZTJiYzQxMTJkM2Ey
NTM4ZmVhNmM0NzdkMDYwMTQ1NTdiZWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRz
LmgKQEAgLTEwMyw5ICsxMDMsOCBAQCBzdHJ1Y3QgRWRnZXMgewogCiBzdHJ1Y3QgV2lkdGhBbmRN
YXJnaW4gewogICAgIExheW91dFVuaXQgd2lkdGg7Ci0gICAgSG9yaXpvbnRhbE1hcmdpbiBtYXJn
aW47Ci0gICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaWYgd2UgcmVhbGx5IHJlYWxseSBuZWVkIHRo
aXMuCi0gICAgSG9yaXpvbnRhbE1hcmdpbiBub25Db21wdXRlZE1hcmdpbjsKKyAgICBIb3Jpem9u
dGFsTWFyZ2luIHVzZWRNYXJnaW47CisgICAgSG9yaXpvbnRhbE1hcmdpbiBjb21wdXRlZE1hcmdp
bjsKIH07CiAKIHN0cnVjdCBIZWlnaHRBbmRNYXJnaW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcAppbmRleCA4ZWIwNTQ3NDNhZmEwZWM1YThmMmI4MzQ2OTRjNGU1ODcxOWZj
MmY3Li40OTQxNTdhOWVlNzViNzVmNDRjMjUzNjIyMmFjYTgyZTdkMDBmYzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMjQ3LDggKzI0Nyw4IEBAIHN0YXRpYyBi
b29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJl
YW0mIHN0cmVhbSwgY29uCiAKICAgICAgICAgcmV0dXJuIERpc3BsYXk6OkJveDo6UmVjdCB7CiAg
ICAgICAgICAgICBib3JkZXJCb3gudG9wKCkgLSBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdp
bkJlZm9yZSgpLAotICAgICAgICAgICAgYm9yZGVyQm94LmxlZnQoKSAtIGRpc3BsYXlCb3gubm9u
Q29tcHV0ZWRNYXJnaW5TdGFydCgpLAotICAgICAgICAgICAgZGlzcGxheUJveC5ub25Db21wdXRl
ZE1hcmdpblN0YXJ0KCkgKyBib3JkZXJCb3gud2lkdGgoKSArIGRpc3BsYXlCb3gubm9uQ29tcHV0
ZWRNYXJnaW5FbmQoKSwKKyAgICAgICAgICAgIGJvcmRlckJveC5sZWZ0KCkgLSBkaXNwbGF5Qm94
LmNvbXB1dGVkTWFyZ2luU3RhcnQoKSwKKyAgICAgICAgICAgIGRpc3BsYXlCb3guY29tcHV0ZWRN
YXJnaW5TdGFydCgpICsgYm9yZGVyQm94LndpZHRoKCkgKyBkaXNwbGF5Qm94LmNvbXB1dGVkTWFy
Z2luRW5kKCksCiAgICAgICAgICAgICBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkJlZm9y
ZSgpICsgYm9yZGVyQm94LmhlaWdodCgpICsgZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5B
ZnRlcigpCiAgICAgICAgIH07CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IDQyOWMwYTk4MTFhNDhkYmY0NTUxYTRiZTkyMTMwZjI1MDE0M2EzOGIuLmI4YmZhOTkx
OGFmNTI3ZTkxZWUxYTliOWEyYzI4OWYzODVkZWE1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtMzMxLDkgKzMzMSw5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogCiAg
ICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aCh3aWR0aEFuZE1h
cmdpbi53aWR0aCk7Ci0gICAgZGlzcGxheUJveC5tb3ZlSG9yaXpvbnRhbGx5KHdpZHRoQW5kTWFy
Z2luLm1hcmdpbi5zdGFydCk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHdp
ZHRoQW5kTWFyZ2luLm1hcmdpbik7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTm9uQ29t
cHV0ZWRNYXJnaW4od2lkdGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4pOworICAgIGRpc3Bs
YXlCb3gubW92ZUhvcml6b250YWxseSh3aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLnN0YXJ0KTsK
KyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4udXNlZE1h
cmdpbik7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4od2lkdGhB
bmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZWU0Mzg3
MmVhYjZlNTAwYmU4YWM3MmIxNWFmOTAxMGJlZWJmODEwNi4uNjRhNzc1ODQ5NjBjOTRjZTU3YjZl
MDdkNjUxNTY5MTg2YmRmMGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcApAQCAtMTQxLDEwICsxNDEsMTAgQEAgV2lkdGhBbmRNYXJnaW4gQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4KICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94KTsKIAogICAgICAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byh1c2VkV2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4ZWQg
fSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgICAg
IGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0
YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCk7Ci0gICAgICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0
LnZhbHVlT3IoMCk7Ci0gICAgICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5FbmQgPSBtYXJnaW5F
bmQudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBjb21wdXRlZE1hcmdpblN0YXJ0ID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7CisgICAgICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgICAgIGF1
dG8gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRNYXJnaW5TdGFydDsKKyAgICAgICAgYXV0byB1
c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRNYXJnaW5FbmQ7CiAgICAgICAgIGF1dG8gYm9yZGVyTGVm
dCA9IGRpc3BsYXlCb3guYm9yZGVyTGVmdCgpOwogICAgICAgICBhdXRvIGJvcmRlclJpZ2h0ID0g
ZGlzcGxheUJveC5ib3JkZXJSaWdodCgpOwogICAgICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlz
cGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CkBAIC0xNTIsNTEgKzE1Miw1MSBAQCBX
aWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbgogCiAgICAgICAgIC8vICMxCiAgICAgICAgIGlmICh3aWR0
aCkgewotICAgICAgICAgICAgYXV0byBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtIChtYXJnaW5TdGFydC52YWx1ZU9yKDApICsgYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyBtYXJnaW5F
bmQudmFsdWVPcigwKSk7CisgICAgICAgICAgICBhdXRvIGhvcml6b250YWxTcGFjZUZvck1hcmdp
biA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKHVzZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApICsg
Ym9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQgKyB1c2VkTWFyZ2luRW5kLnZhbHVlT3IoMCkpOwogICAgICAgICAgICAgaWYgKGhvcml6
b250YWxTcGFjZUZvck1hcmdpbiA8IDApIHsKLSAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9
IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gbWFy
Z2luRW5kLnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gdXNl
ZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9
IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIC8vICMyCi0gICAgICAgIGlmICh3aWR0aCAmJiBtYXJnaW5TdGFydCAmJiBtYXJnaW5F
bmQpIHsKKyAgICAgICAgaWYgKHdpZHRoICYmIHVzZWRNYXJnaW5TdGFydCAmJiB1c2VkTWFyZ2lu
RW5kKSB7CiAgICAgICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsg
KndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQpOworICAgICAgICAgICAgICAgIHVz
ZWRNYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsg
Ym9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRl
clJpZ2h0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9
IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0
aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAgICAgICAg
ICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAq
dXNlZE1hcmdpbkVuZCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyAjMwotICAgICAgICBpZiAo
IW1hcmdpblN0YXJ0ICYmIHdpZHRoICYmIG1hcmdpbkVuZCkKLSAgICAgICAgICAgIG1hcmdpblN0
YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICAr
ICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1hcmdpblN0YXJ0ICYmICF3aWR0aCAmJiBtYXJnaW5FbmQpCi0gICAgICAg
ICAgICB3aWR0aCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdp
bkVuZCk7Ci0gICAgICAgIGVsc2UgaWYgKG1hcmdpblN0YXJ0ICYmIHdpZHRoICYmICFtYXJnaW5F
bmQpCi0gICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFy
Z2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmln
aHQgKyBib3JkZXJSaWdodCk7CisgICAgICAgIGlmICghdXNlZE1hcmdpblN0YXJ0ICYmIHdpZHRo
ICYmIHVzZWRNYXJnaW5FbmQpCisgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtIChib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsgcGFk
ZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CisgICAgICAgIGVsc2Ug
aWYgKHVzZWRNYXJnaW5TdGFydCAmJiAhd2lkdGggJiYgdXNlZE1hcmdpbkVuZCkKKyAgICAgICAg
ICAgIHdpZHRoID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJv
cmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVz
ZWRNYXJnaW5FbmQpOworICAgICAgICBlbHNlIGlmICh1c2VkTWFyZ2luU3RhcnQgJiYgd2lkdGgg
JiYgIXVzZWRNYXJnaW5FbmQpCisgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFpbmlu
Z0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVm
dCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0KTsKIAogICAgICAgICAvLyAj
NAogICAgICAgICBpZiAoIXdpZHRoKSB7Ci0gICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdp
blN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFs
dWVPcigwKTsKLSAgICAgICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1h
cmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyAqbWFyZ2luRW5kKTsKKyAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IHVz
ZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApOworICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9IHVz
ZWRNYXJnaW5FbmQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
IHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gIzUKLSAgICAgICAgaWYgKCFtYXJnaW5TdGFydCAmJiAhbWFyZ2luRW5k
KSB7CisgICAgICAgIGlmICghdXNlZE1hcmdpblN0YXJ0ICYmICF1c2VkTWFyZ2luRW5kKSB7CiAg
ICAgICAgICAgICBhdXRvIGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdCbG9j
a1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAgKyAqd2lkdGggKyBwYWRkaW5nUmln
aHQgKyBib3JkZXJSaWdodCk7Ci0gICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpbkVuZCA9
IGhvcml6b250YWxTcGFjZUZvck1hcmdpbiAvIDI7CisgICAgICAgICAgICB1c2VkTWFyZ2luU3Rh
cnQgPSB1c2VkTWFyZ2luRW5kID0gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luIC8gMjsKICAgICAg
ICAgfQogCiAgICAgICAgIEFTU0VSVCh3aWR0aCk7Ci0gICAgICAgIEFTU0VSVChtYXJnaW5TdGFy
dCk7Ci0gICAgICAgIEFTU0VSVChtYXJnaW5FbmQpOworICAgICAgICBBU1NFUlQodXNlZE1hcmdp
blN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKHVzZWRNYXJnaW5FbmQpOwogCi0gICAgICAgIHJldHVy
biBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyAqbWFyZ2luU3RhcnQsICptYXJnaW5FbmQgfSwg
eyBub25Db21wdXRlZE1hcmdpblN0YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH07CisgICAg
ICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyAqdXNlZE1hcmdpblN0YXJ0LCAq
dXNlZE1hcmdpbkVuZCB9LCB7IGNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWVPcigwKSwgY29tcHV0
ZWRNYXJnaW5FbmQudmFsdWVPcigwKSB9IH07CiAgICAgfTsKIAogICAgIGF1dG8gd2lkdGhBbmRN
YXJnaW4gPSBjb21wdXRlKCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2Vk
IC0+IHdpZHRoKCIgPDwgd2lkdGhBbmRNYXJnaW4ud2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCB3
aWR0aEFuZE1hcmdpbi5tYXJnaW4uc3RhcnQgPDwgInB4LCAiIDw8IHdpZHRoQW5kTWFyZ2luLm1h
cmdpbi5lbmQgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Cisg
ICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltX
aWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHdpZHRoKCIgPDwgd2lkdGhB
bmRNYXJnaW4ud2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCB3aWR0aEFuZE1hcmdpbi51c2VkTWFy
Z2luLnN0YXJ0IDw8ICJweCwgIiA8PCB3aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLmVuZCA8PCAi
cHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gd2lk
dGhBbmRNYXJnaW47CiB9CiAKQEAgLTIxNCw4ICsyMTQsOCBAQCBXaWR0aEFuZE1hcmdpbiBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihjbwogICAgIC8vICMyCiAgICAgYXV0byBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luID0gaW5G
bG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB3aWR0
aCk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8IHdp
ZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5tYXJnaW4u
c3RhcnQgPDwgInB4LCAiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ubWFyZ2luLmVuZCA8
PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4g
eyB3aWR0aCwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5tYXJnaW4sIG5vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxv
dyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8IHdpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgbm9uUmVw
bGFjZWRXaWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLnN0YXJ0IDw8ICJweCwgIiA8PCBub25SZXBs
YWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uZW5kIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIg
PDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiB7IHdpZHRoLCBub25SZXBsYWNlZFdp
ZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4sIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4uY29tcHV0
ZWRNYXJnaW4gfTsKIH0KIAogUG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OnN0YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUJveC5jcHAKaW5kZXggMDI3YjQzNGJiYzZkNGMyZjU1MTBhZmNlOWM1MDc4MzllNjQ5ZTI0
NC4uMzE0MGE1NWFmYWI0Y2YxMmIzZjU1ZmZiN2IxMjYxZjFkNzk2ZjFhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcApAQCAtNTksNyAr
NTksNyBAQCBCb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwgbV9jb250ZW50SGVpZ2h0
KG90aGVyLm1fY29udGVudEhlaWdodCkKICAgICAsIG1faG9yaXpvbnRhbE1hcmdpbihvdGhlci5t
X2hvcml6b250YWxNYXJnaW4pCiAgICAgLCBtX3ZlcnRpY2FsTWFyZ2luKG90aGVyLm1fdmVydGlj
YWxNYXJnaW4pCi0gICAgLCBtX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihvdGhlci5tX2hv
cml6b250YWxOb25Db21wdXRlZE1hcmdpbikKKyAgICAsIG1faG9yaXpvbnRhbENvbXB1dGVkTWFy
Z2luKG90aGVyLm1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKQogICAgICwgbV9lc3RpbWF0ZWRN
YXJnaW5CZWZvcmUob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUpCiAgICAgLCBtX2JvcmRl
cihvdGhlci5tX2JvcmRlcikKICAgICAsIG1fcGFkZGluZyhvdGhlci5tX3BhZGRpbmcpCkBAIC02
OSw3ICs2OSw3IEBAIEJveDo6Qm94KGNvbnN0IEJveCYgb3RoZXIpCiAgICAgLCBtX2hhc1ZhbGlk
SG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbikKICAgICAs
IG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4p
CiAgICAgLCBtX2hhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4ob3RoZXIubV9oYXNW
YWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKQotICAgICwgbV9oYXNWYWxpZEhvcml6b250
YWxOb25Db21wdXRlZE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkSG9yaXpvbnRhbE5vbkNvbXB1dGVk
TWFyZ2luKQorICAgICwgbV9oYXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbihvdGhlci5t
X2hhc1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKQogICAgICwgbV9oYXNWYWxpZEJvcmRl
cihvdGhlci5tX2hhc1ZhbGlkQm9yZGVyKQogICAgICwgbV9oYXNWYWxpZFBhZGRpbmcob3RoZXIu
bV9oYXNWYWxpZFBhZGRpbmcpCiAgICAgLCBtX2hhc1ZhbGlkQ29udGVudEhlaWdodChvdGhlci5t
X2hhc1ZhbGlkQ29udGVudEhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUJveC5oCmluZGV4IDU2MzkyZjQ3ZWU3OWUzMGQzZjBlMjE4OTRkM2YxNGJi
ODc1ZDdlODkuLjc1ZWM3NzE4N2E0NmVjMmZmZGY4MWU1YmE3MTE4NzYzNGE3MzYzN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtMTQ2
LDggKzE0Niw4IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2lu
QmVmb3JlKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcigp
IGNvbnN0OwotICAgIExheW91dFVuaXQgbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCgpIGNvbnN0Owot
ICAgIExheW91dFVuaXQgbm9uQ29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsKKyAgICBMYXlvdXRV
bml0IGNvbXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVk
TWFyZ2luRW5kKCkgY29uc3Q7CiAKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRN
YXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsgfQog
CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1h
cmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAgIHZvaWQgc2V0VmVydGljYWxNYXJn
aW4oTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbik7Ci0gICAgdm9pZCBzZXRIb3Jpem9udGFsTm9uQ29t
cHV0ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKKyAgICB2b2lkIHNldEhvcml6
b250YWxDb21wdXRlZE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAgIHZvaWQg
c2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSB7IG1fZXN0
aW1hdGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CiAKICAgICB2b2lkIHNldEJvcmRl
cihMYXlvdXQ6OkVkZ2VzKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0SGFzVmFsaWRMZWZ0KCkgeyBtX2hhc1ZhbGlkTGVmdCA9IHRydWU7IH0KICAgICB2b2lkIHNl
dEhhc1ZhbGlkVmVydGljYWxNYXJnaW4oKSB7IG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbiA9IHRy
dWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4oKSB7
IG1faGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbiA9IHRydWU7IH0KLSAgICB2b2lk
IHNldEhhc1ZhbGlkSG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKCkgeyBtX2hhc1ZhbGlkSG9y
aXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SGFzVmFsaWRI
b3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oKSB7IG1faGFzVmFsaWRIb3Jpem9udGFsQ29tcHV0ZWRN
YXJnaW4gPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxpZEhvcml6b250YWxNYXJnaW4oKSB7
IG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRIYXNW
YWxpZEJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IHRydWU7IH0KQEAgLTIyNiw3ICsyMjYs
NyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRh
bE1hcmdpbjsKICAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1fdmVydGljYWxNYXJnaW47Ci0g
ICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2lu
OworICAgIExheW91dDo6SG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxDb21wdXRlZE1hcmdp
bjsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKIAog
ICAgIExheW91dDo6RWRnZXMgbV9ib3JkZXI7CkBAIC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luIHsgZmFsc2UgfTsKICAgICBib29s
IG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlk
VmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNWYWxp
ZEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Zh
bGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFs
aWRCb3JkZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9OwpAQCAtNTI1LDEy
ICs1MjUsMTIgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZl
cnRpY2FsTWFyZ2luIG1hcmdpbikKICAgICBtX3ZlcnRpY2FsTWFyZ2luID0gbWFyZ2luOwogfQog
Ci1pbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihMYXlvdXQ6
Okhvcml6b250YWxNYXJnaW4gbWFyZ2luKQoraW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFs
Q29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1hcmdpbikKIHsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgc2V0SGFzVmFsaWRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJn
aW4oKTsKKyAgICBzZXRIYXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbigpOwogI2VuZGlm
Ci0gICAgbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4gPSBtYXJnaW47CisgICAgbV9ob3Jp
em9udGFsQ29tcHV0ZWRNYXJnaW4gPSBtYXJnaW47CiB9CiAKIGlubGluZSB2b2lkIEJveDo6c2V0
Qm9yZGVyKExheW91dDo6RWRnZXMgYm9yZGVyKQpAQCAtNTkxLDE2ICs1OTEsMTYgQEAgaW5saW5l
IExheW91dFVuaXQgQm94Ojpub25Db2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCkuYWZ0ZXI7CiB9CiAKLWlu
bGluZSBMYXlvdXRVbml0IEJveDo6bm9uQ29tcHV0ZWRNYXJnaW5TdGFydCgpIGNvbnN0Citpbmxp
bmUgTGF5b3V0VW5pdCBCb3g6OmNvbXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdAogewotICAgIEFT
U0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKTsKLSAgICByZXR1cm4g
bV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4uc3RhcnQ7CisgICAgQVNTRVJUKG1faGFzVmFs
aWRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4pOworICAgIHJldHVybiBtX2hvcml6b250YWxDb21w
dXRlZE1hcmdpbi5zdGFydDsKIH0KIAotaW5saW5lIExheW91dFVuaXQgQm94Ojpub25Db21wdXRl
ZE1hcmdpbkVuZCgpIGNvbnN0CitpbmxpbmUgTGF5b3V0VW5pdCBCb3g6OmNvbXB1dGVkTWFyZ2lu
RW5kKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxOb25Db21wdXRl
ZE1hcmdpbik7Ci0gICAgcmV0dXJuIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luLmVuZDsK
KyAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbik7CisgICAgcmV0
dXJuIG1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luLmVuZDsKIH0KIAogaW5saW5lIE9wdGlvbmFs
PExheW91dFVuaXQ+IEJveDo6cGFkZGluZ1RvcCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaAppbmRleCA3ZDQ2NjkwNDk0ZDRlZTZiODFjMTgzYzI4
YTJkZTNiNGIyZmRhNjYyLi44YjVjZDg4NDA1ODQ3NzEzMTM5NWI0YTllNWEwZTgxYTZjMWE2Mjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmgKQEAgLTcy
LDggKzcyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBj
b25zdCB7IHJldHVybiBkaXNwbGF5Qm94KCkubWFyZ2luQmVmb3JlKCk7IH0KICAgICBMYXlvdXRV
bml0IG1hcmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm1hcmdpbkFmdGVy
KCk7IH0KLSAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gZGlzcGxh
eUJveCgpLm5vbkNvbXB1dGVkTWFyZ2luU3RhcnQoKTsgfQotICAgIExheW91dFVuaXQgbWFyZ2lu
RW5kKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm5vbkNvbXB1dGVkTWFyZ2luRW5kKCk7
IH0KKyAgICAvLyBEbyBub3QgdXNlIHRoZSB1c2VkIHZhbHVlcyBoZXJlIGJlY2F1c2UgdGhleSBj
b21wdXRlZCBhcyBpZiB0aGlzIGJveCB3YXMgbm90IGEgZmxvYXQgYXZvaWRlci4KKyAgICBMYXlv
dXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLmNvbXB1dGVk
TWFyZ2luU3RhcnQoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3QgeyByZXR1
cm4gZGlzcGxheUJveCgpLmNvbXB1dGVkTWFyZ2luRW5kKCk7IH0KIAogICAgIExheW91dFVuaXQg
bWFyZ2luQm94V2lkdGgoKSBjb25zdCB7IHJldHVybiBtYXJnaW5TdGFydCgpICsgZGlzcGxheUJv
eCgpLndpZHRoKCkgKyBtYXJnaW5FbmQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKaW5kZXggZTIxYjg3NDA3Mjc1NmFkZTE2NGJiOGY3MDYwNTc1OTgwNTA2OTc0My4u
NWM1ZjNlZGI3MjNiM2EyNmMxZTc2MGUxNmM5YmUwMDBkYmQwMGY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzQyLDggKzM0Miw4IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lk
dGgod2lkdGhBbmRNYXJnaW4ud2lkdGgpOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1h
cmdpbih3aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRh
bE5vbkNvbXB1dGVkTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm5vbkNvbXB1dGVkTWFyZ2luKTsKKyAg
ICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4udXNlZE1hcmdp
bik7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4od2lkdGhBbmRN
YXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358299</attachid>
            <date>2019-01-03 18:22:06 -0800</date>
            <delta_ts>2019-01-04 00:31:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193059-20190103182200.patch</filename>
            <type>text/plain</type>
            <size>58709</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UzMDI2M2RmYzlkNTUy
YzEzZDdkZDNiNDNhNzI5NTkwYzFiOTgyZC4uN2UzMjc1YTliMGNiNGM0ZTgzN2M2NjhlZDc4MDVk
NTVmYzgzZjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTAxLTAzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBVc2UgY29t
cHV0ZWRWYWx1ZSBhbmQgdXNlZFZhbHVlIGNvbnNpc3RlbnRseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMDU5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIy
L2Nhc2NhZGUuaHRtbCN2YWx1ZS1zdGFnZXMKKworICAgICAgICA2LjEuMiBDb21wdXRlZCB2YWx1
ZXMKKyAgICAgICAgU3BlY2lmaWVkIHZhbHVlcyBhcmUgcmVzb2x2ZWQgdG8gY29tcHV0ZWQgdmFs
dWVzIGR1cmluZyB0aGUgY2FzY2FkZTsgZm9yIGV4YW1wbGUgVVJJcyBhcmUgbWFkZSBhYnNvbHV0
ZSBhbmQgJ2VtJyBhbmQgJ2V4JyB1bml0cworICAgICAgICBhcmUgY29tcHV0ZWQgdG8gcGl4ZWwg
b3IgYWJzb2x1dGUgbGVuZ3Rocy4gQ29tcHV0aW5nIGEgdmFsdWUgbmV2ZXIgcmVxdWlyZXMgdGhl
IHVzZXIgYWdlbnQgdG8gcmVuZGVyIHRoZSBkb2N1bWVudC4uLgorCisgICAgICAgIDYuMS4zIFVz
ZWQgdmFsdWVzCisgICAgICAgIENvbXB1dGVkIHZhbHVlcyBhcmUgcHJvY2Vzc2VkIGFzIGZhciBh
cyBwb3NzaWJsZSB3aXRob3V0IGZvcm1hdHRpbmcgdGhlIGRvY3VtZW50LiBTb21lIHZhbHVlcywg
aG93ZXZlciwgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCB3aGVuIHRoZSBkb2N1bWVudAorICAgICAg
ICBpcyBiZWluZyBsYWlkIG91dC4gRm9yIGV4YW1wbGUsIGlmIHRoZSB3aWR0aCBvZiBhbiBlbGVt
ZW50IGlzIHNldCB0byBiZSBhIGNlcnRhaW4gcGVyY2VudGFnZSBvZiBpdHMgY29udGFpbmluZyBi
bG9jaywgdGhlIHdpZHRoIGNhbm5vdCBiZSBkZXRlcm1pbmVkCisgICAgICAgIHVudGlsIHRoZSB3
aWR0aCBvZiB0aGUgY29udGFpbmluZyBibG9jayBoYXMgYmVlbiBkZXRlcm1pbmVkLiBUaGUgdXNl
ZCB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIHRha2luZyB0aGUgY29tcHV0ZWQgdmFsdWUgYW5kIHJl
c29sdmluZyBhbnkgcmVtYWluaW5nCisgICAgICAgIGRlcGVuZGVuY2llcyBpbnRvIGFuIGFic29s
dXRlIHZhbHVlLgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZs
b3dIb3Jpem9udGFsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhv
cml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKToKKyAgICAgICAgKiBsYXlv
dXQvTGF5b3V0VW5pdHMuaDoKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0
aW9uSWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNlZFdp
ZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6c2V0SGFzVmFsaWRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94OjpzZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpjb21wdXRlZE1hcmdpblN0YXJ0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29tcHV0ZWRNYXJnaW5FbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZEhvcml6b250YWxOb25D
b21wdXRlZE1hcmdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6
OnNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6Om5vbkNvbXB1dGVkTWFyZ2luU3RhcnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpub25Db21wdXRlZE1hcmdpbkVuZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRBdm9pZGVyOjptYXJnaW5TdGFydCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6bWFyZ2luRW5kIGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorCiAyMDE5LTAxLTAzICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgTGVhayBvZiBXZWJDb3Jl
OjpMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JD
YWxsYmFjayAoNDggYnl0ZXMpIGluIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBydW5uaW5n
IFdlYktpdCBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDExZWZjNDYxOGI5MWFhOGY2MWZmMDMyNWNhNzY0ODBlNDhjOTU5MjYu
LjVlNTM2YThiYWU3MzUxYzM1ZDNhMmZhNDM4NTM5YzA2NzQ1ODE4YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtODcsMTAgKzg3LDEwIEBAIHZv
aWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnko
Y29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAgfQogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKLSAgICBkaXNwbGF5
Qm94LnNldExlZnQoaG9yaXpvbnRhbEdlb21ldHJ5LmxlZnQgKyBob3Jpem9udGFsR2VvbWV0cnku
d2lkdGhBbmRNYXJnaW4ubWFyZ2luLnN0YXJ0KTsKKyAgICBkaXNwbGF5Qm94LnNldExlZnQoaG9y
aXpvbnRhbEdlb21ldHJ5LmxlZnQgKyBob3Jpem9udGFsR2VvbWV0cnkud2lkdGhBbmRNYXJnaW4u
dXNlZE1hcmdpbi5zdGFydCk7CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgoaG9y
aXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLndpZHRoKTsKLSAgICBkaXNwbGF5Qm94LnNl
dEhvcml6b250YWxNYXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLm1hcmdp
bik7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oaG9yaXpv
bnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLm5vbkNvbXB1dGVkTWFyZ2luKTsKKyAgICBkaXNw
bGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFy
Z2luLnVzZWRNYXJnaW4pOworICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFy
Z2luKGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbik7CiB9
CiAKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21l
dHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGMzMzlmOTc4MGZjNDBl
ZmY2MDhmOTI1NzljYzQ3MDBkOTExZTRlM2UuLmNmMmUzNzdmM2Q4ZDg2Mjk1NWRiMGY4Mzc1YWJl
NWI4MTFhZTM4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTI4MCw4ICsyODAsMTAgQEAgVmVydGljYWxHZW9tZXRy
eSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGlj
YWxHZW9tZXQKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9n
aWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBib3R0b20gPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20oKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0ID0gdXNlZEhlaWdodCA/IHVzZWRIZWlnaHQudmFsdWUo
KSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCwgSGVpZ2h0VHlw
ZTo6Tm9ybWFsKTsKLSAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRv
IG1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigp
LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBjb21wdXRlZE1hcmdpbkJlZm9yZSA9
IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKKyAgICBhdXRvIGNvbXB1dGVkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAg
ICBhdXRvIHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZE1hcmdpbkJlZm9yZTsKKyAgICBhdXRv
IHVzZWRNYXJnaW5BZnRlciA9IGNvbXB1dGVkTWFyZ2luQWZ0ZXI7CiAgICAgYXV0byBwYWRkaW5n
VG9wID0gZGlzcGxheUJveC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAgICBhdXRvIHBhZGRp
bmdCb3R0b20gPSBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOwogICAgIGF1
dG8gYm9yZGVyVG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKTsKQEAgLTI5MSw3MiArMjkzLDcy
IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZs
b3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2Fs
UG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwog
CiAgICAgaWYgKHRvcCAmJiBoZWlnaHQgJiYgYm90dG9tKSB7Ci0gICAgICAgIGlmICghbWFyZ2lu
QmVmb3JlICYmICFtYXJnaW5BZnRlcikgeworICAgICAgICBpZiAoIXVzZWRNYXJnaW5CZWZvcmUg
JiYgIXVzZWRNYXJnaW5BZnRlcikgewogICAgICAgICAgICAgYXV0byBtYXJnaW5CZWZvcmVBbmRB
ZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGlu
Z1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKmJvdHRvbSk7
Ci0gICAgICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5BZnRlciA9IG1hcmdpbkJlZm9yZUFu
ZEFmdGVyIC8gMjsKLSAgICAgICAgfSBlbHNlIGlmICghbWFyZ2luQmVmb3JlKQotICAgICAgICAg
ICAgbWFyZ2luQmVmb3JlID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20g
KyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsKKyAgICAgICAgICAgIHVzZWRNYXJnaW5CZWZvcmUg
PSB1c2VkTWFyZ2luQWZ0ZXIgPSBtYXJnaW5CZWZvcmVBbmRBZnRlciAvIDI7CisgICAgICAgIH0g
ZWxzZSBpZiAoIXVzZWRNYXJnaW5CZWZvcmUpCisgICAgICAgICAgICB1c2VkTWFyZ2luQmVmb3Jl
ID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9w
ICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1hcmdpbkFm
dGVyICsgKmJvdHRvbSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1hcmdpbkFmdGVyID0g
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9w
ICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsg
KmJvdHRvbSk7CisgICAgICAgICAgICB1c2VkTWFyZ2luQWZ0ZXIgPSBjb250YWluaW5nQmxvY2tI
ZWlnaHQgLSAoKnRvcCArICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1Rv
cCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKmJvdHRvbSk7CiAg
ICAgICAgIC8vIE92ZXItY29uc3RyYWluZWQ/Ci0gICAgICAgIGF1dG8gYm94SGVpZ2h0ID0gKnRv
cCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBh
ZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tOworICAg
ICAgICBhdXRvIGJveEhlaWdodCA9ICp0b3AgKyAqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICp1c2VkTWFyZ2luQWZ0ZXIgKyAqYm90dG9tOwogICAgICAgICBpZiAoYm94SGVpZ2h0ID4gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0KQotICAgICAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2Nr
SGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCAr
ICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyKTsg
CisgICAgICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICp1
c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRk
aW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5BZnRlcik7IAogICAgIH0KIAog
ICAgIGlmICghdG9wICYmICFoZWlnaHQgJiYgYm90dG9tKSB7CiAgICAgICAgIC8vICMxCiAgICAg
ICAgIGhlaWdodCA9IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0
U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52
YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7
Ci0gICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqbWFyZ2luQmVmb3JlICsg
Ym9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVy
Qm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbSk7IAorICAgICAgICB1c2VkTWFyZ2luQmVm
b3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAgICB1c2VkTWFyZ2luQWZ0
ZXIgPSB1c2VkTWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgdG9wID0gY29udGFpbmlu
Z0Jsb2NrSGVpZ2h0IC0gKCp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1Rv
cCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5B
ZnRlciArICpib3R0b20pOyAKICAgICB9CiAKICAgICBpZiAoIXRvcCAmJiAhYm90dG9tICYmIGhl
aWdodCkgewogICAgICAgICAvLyAjMgogICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAg
ICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVlT3IoMCk7Ci0gICAgICAgIG1hcmdp
bkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKLSAgICAgICAgYm90dG9tID0gY29udGFp
bmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFk
ZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdp
bkFmdGVyKTsgCisgICAgICAgIHVzZWRNYXJnaW5CZWZvcmUgPSB1c2VkTWFyZ2luQmVmb3JlLnZh
bHVlT3IoMCk7CisgICAgICAgIHVzZWRNYXJnaW5BZnRlciA9IHVzZWRNYXJnaW5BZnRlci52YWx1
ZU9yKDApOworICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCAr
ICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBw
YWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5BZnRlcik7IAogICAgIH0K
IAogICAgIGlmICghaGVpZ2h0ICYmICFib3R0b20gJiYgdG9wKSB7CiAgICAgICAgIC8vICMzCiAg
ICAgICAgIGhlaWdodCA9IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5
b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9y
ZS52YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlT3Io
MCk7Ci0gICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1h
cmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0Jv
dHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlcik7IAorICAgICAgICB1c2VkTWFyZ2lu
QmVmb3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAgICB1c2VkTWFyZ2lu
QWZ0ZXIgPSB1c2VkTWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgYm90dG9tID0gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICp1c2VkTWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAKICAgICBpZiAoIXRvcCAmJiBoZWlnaHQgJiYg
Ym90dG9tKSB7CiAgICAgICAgIC8vICM0Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJl
Zm9yZS52YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVl
T3IoMCk7Ci0gICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqbWFyZ2luQmVm
b3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsg
Ym9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbSk7IAorICAgICAgICB1c2VkTWFy
Z2luQmVmb3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAgICB1c2VkTWFy
Z2luQWZ0ZXIgPSB1c2VkTWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgdG9wID0gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFk
ZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVzZWRN
YXJnaW5BZnRlciArICpib3R0b20pOyAKICAgICB9CiAKICAgICBpZiAoIWhlaWdodCAmJiB0b3Ag
JiYgYm90dG9tKSB7CiAgICAgICAgIC8vICM1Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdp
bkJlZm9yZS52YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZh
bHVlT3IoMCk7Ci0gICAgICAgIGhlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9w
ICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBwYWRkaW5nQm90dG9t
ICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbSk7IAorICAgICAgICB1c2Vk
TWFyZ2luQmVmb3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAgICB1c2Vk
TWFyZ2luQWZ0ZXIgPSB1c2VkTWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgaGVpZ2h0
ID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1hcmdpbkJlZm9yZSArIGJv
cmRlclRvcCArIHBhZGRpbmdUb3AgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVz
ZWRNYXJnaW5BZnRlciArICpib3R0b20pOyAKICAgICB9CiAKICAgICBpZiAoIWJvdHRvbSAmJiB0
b3AgJiYgaGVpZ2h0KSB7CiAgICAgICAgIC8vICM2Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1h
cmdpbkJlZm9yZS52YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVy
LnZhbHVlT3IoMCk7Ci0gICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgq
dG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsg
cGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlcik7IAorICAgICAgICB1
c2VkTWFyZ2luQmVmb3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAgICB1
c2VkTWFyZ2luQWZ0ZXIgPSB1c2VkTWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgYm90
dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1hcmdpbkJlZm9yZSAr
IGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRl
ckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAKICAgICBBU1NFUlQodG9wKTsK
ICAgICBBU1NFUlQoYm90dG9tKTsKICAgICBBU1NFUlQoaGVpZ2h0KTsKLSAgICBBU1NFUlQobWFy
Z2luQmVmb3JlKTsKLSAgICBBU1NFUlQobWFyZ2luQWZ0ZXIpOworICAgIEFTU0VSVCh1c2VkTWFy
Z2luQmVmb3JlKTsKKyAgICBBU1NFUlQodXNlZE1hcmdpbkFmdGVyKTsKIAotICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hl
aWdodF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24tcmVwbGFjZWQgLT4gdG9wKCIgPDwgKnRv
cCA8PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8ICJweCkgaGVpZ2h0KCIgPDwgKmhlaWdo
dCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5CZWZvcmUgPDwgInB4LCAiICA8PCAqbWFyZ2lu
QWZ0ZXIgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0
dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyAqaGVpZ2h0LCB7IHsgKm1hcmdpbkJlZm9yZSwgKm1hcmdp
bkFmdGVyIH0sIHsgfSB9IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRl
eHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4gb3V0LW9m
LWZsb3cgbm9uLXJlcGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20oIiAgPDwg
KmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAq
dXNlZE1hcmdpbkJlZm9yZSA8PCAicHgsICIgIDw8ICp1c2VkTWFyZ2luQWZ0ZXIgPDwgInB4KSBs
YXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIHsgKnRvcCwgKmJv
dHRvbSwgeyAqaGVpZ2h0LCB7IHsgKnVzZWRNYXJnaW5CZWZvcmUsICp1c2VkTWFyZ2luQWZ0ZXIg
fSwgeyB9IH0gfSB9OwogfQogCiBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRV
bml0PiB1c2VkV2lkdGgpCkBAIC0zOTgsMTAgKzQwMCwxMCBAQCBIb3Jpem9udGFsR2VvbWV0cnkg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250
YWxHZQogICAgIGF1dG8gbGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNh
bExlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7CiAgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFdpZHRoID8g
TGVuZ3RoIHsgdXNlZFdpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgo
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKLSAgICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFy
Z2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFy
Z2luU3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZU9yKDApOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRN
YXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVPcigwKTsKKyAgICBhdXRvIGNvbXB1dGVkTWFyZ2lu
U3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIGNvbXB1dGVkTWFyZ2luRW5kID0gY29tcHV0ZWRW
YWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwor
ICAgIGF1dG8gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRNYXJnaW5TdGFydDsKKyAgICBhdXRv
IHVzZWRNYXJnaW5FbmQgPSBjb21wdXRlZE1hcmdpbkVuZDsKICAgICBhdXRvIHBhZGRpbmdMZWZ0
ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5n
UmlnaHQgPSBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBi
b3JkZXJMZWZ0ID0gZGlzcGxheUJveC5ib3JkZXJMZWZ0KCk7CkBAIC00MTEsOCArNDEzLDggQEAg
SG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgLy8gSWYgYWxsIHRocmVlIG9mICdsZWZ0
JywgJ3dpZHRoJywgYW5kICdyaWdodCcgYXJlICdhdXRvJzogRmlyc3Qgc2V0IGFueSAnYXV0bycg
dmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLgogICAgICAg
ICAvLyBUaGVuLCBpZiB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgZXN0
YWJsaXNoaW5nIHRoZSBzdGF0aWMtcG9zaXRpb24gY29udGFpbmluZyBibG9jayBpcyAnbHRyJyBz
ZXQgJ2xlZnQnIHRvIHRoZSBzdGF0aWMKICAgICAgICAgLy8gcG9zaXRpb24gYW5kIGFwcGx5IHJ1
bGUgbnVtYmVyIHRocmVlIGJlbG93OyBvdGhlcndpc2UsIHNldCAncmlnaHQnIHRvIHRoZSBzdGF0
aWMgcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIG9uZSBiZWxvdy4KLSAgICAgICAgbWFy
Z2luU3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZU9yKDApOwotICAgICAgICBtYXJnaW5FbmQgPSBt
YXJnaW5FbmQudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gdXNlZE1hcmdp
blN0YXJ0LnZhbHVlT3IoMCk7CisgICAgICAgIHVzZWRNYXJnaW5FbmQgPSB1c2VkTWFyZ2luRW5k
LnZhbHVlT3IoMCk7CiAKICAgICAgICAgYXV0byBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24gPSBz
dGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOwogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikKQEAgLTQy
NSw4NCArNDI3LDg0IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAgICAgIC8vIHNvbHZl
IGZvciAnbWFyZ2luLXJpZ2h0JyAoJ21hcmdpbi1sZWZ0JykuIElmIG9uZSBvZiAnbWFyZ2luLWxl
ZnQnIG9yICdtYXJnaW4tcmlnaHQnIGlzICdhdXRvJywgc29sdmUgdGhlIGVxdWF0aW9uIGZvciB0
aGF0IHZhbHVlLgogICAgICAgICAvLyBJZiB0aGUgdmFsdWVzIGFyZSBvdmVyLWNvbnN0cmFpbmVk
LCBpZ25vcmUgdGhlIHZhbHVlIGZvciAnbGVmdCcgKGluIGNhc2UgdGhlICdkaXJlY3Rpb24nIHBy
b3BlcnR5IG9mIHRoZSBjb250YWluaW5nIGJsb2NrIGlzICdydGwnKSBvciAncmlnaHQnCiAgICAg
ICAgIC8vIChpbiBjYXNlICdkaXJlY3Rpb24nIGlzICdsdHInKSBhbmQgc29sdmUgZm9yIHRoYXQg
dmFsdWUuCi0gICAgICAgIGlmICghbWFyZ2luU3RhcnQgJiYgIW1hcmdpbkVuZCkgeworICAgICAg
ICBpZiAoIXVzZWRNYXJnaW5TdGFydCAmJiAhdXNlZE1hcmdpbkVuZCkgewogICAgICAgICAgICAg
YXV0byBtYXJnaW5TdGFydEFuZEVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsg
Ym9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQgKyAqcmlnaHQpOwogICAgICAgICAgICAgaWYgKG1hcmdpblN0YXJ0QW5kRW5kID49IDAp
Ci0gICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5FbmQgPSBtYXJnaW5TdGFydEFu
ZEVuZCAvIDI7ICAKKyAgICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2lu
RW5kID0gbWFyZ2luU3RhcnRBbmRFbmQgLyAyOyAgCiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICBtYXJnaW5TdGFydCA9IDBfbHU7Ci0gICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9
IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAq
cmlnaHQpOworICAgICAgICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSAwX2x1OworICAg
ICAgICAgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAo
KmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IDBfbHU7Ci0gICAg
ICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxl
ZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgICAgICB1
c2VkTWFyZ2luRW5kID0gMF9sdTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0
ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5k
ICsgKnJpZ2h0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAoIW1hcmdpblN0YXJ0KSB7Ci0gICAgICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRh
aW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsK
KyAgICAgICAgfSBlbHNlIGlmICghdXNlZE1hcmdpblN0YXJ0KSB7CisgICAgICAgICAgICB1c2Vk
TWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQg
KyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVz
ZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgICAgICAgICAgLy8gT3ZlcmNvbnN0cmFpbmVkPyBJ
Z25vcmUgcmlnaHQgKGxlZnQpLgotICAgICAgICAgICAgaWYgKCptYXJnaW5TdGFydCA8IDApIHsK
KyAgICAgICAgICAgIGlmICgqdXNlZE1hcmdpblN0YXJ0IDwgMCkgewogICAgICAgICAgICAgICAg
IGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICBtYXJnaW5T
dGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRp
bmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5k
KTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAgICAgICAgICAg
ICAgdXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNl
ZE1hcmdpbkVuZCArICpyaWdodCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
IW1hcmdpbkVuZCkgewotICAgICAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lk
dGggLSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAq
d2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoIXVzZWRNYXJnaW5FbmQpIHsKKyAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQgPSBj
b250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICpyaWdodCk7CiAgICAgICAgICAgICAvLyBPdmVyY29uc3RyYWluZWQ/IElnbm9yZSByaWdodCAo
bGVmdCkuCi0gICAgICAgICAgICBpZiAoKm1hcmdpbkVuZCA8IDApIHsKKyAgICAgICAgICAgIGlm
ICgqdXNlZE1hcmdpbkVuZCA8IDApIHsKICAgICAgICAgICAgICAgICBpZiAoaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCk7CisgICAgICAgICAgICAg
ICAgICAgIHVzZWRNYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1
c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3Rh
cnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQg
PSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmln
aHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBzZXQgJ2F1dG8nIHZhbHVlcyBmb3IgJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdp
bi1yaWdodCcgdG8gMCwgYW5kIHBpY2sgdGhlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHNpeCBydWxl
cyB0aGF0IGFwcGxpZXMuCi0gICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVP
cigwKTsKLSAgICAgICAgbWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7CisgICAgICAg
IHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApOworICAgICAgICB1
c2VkTWFyZ2luRW5kID0gdXNlZE1hcmdpbkVuZC52YWx1ZU9yKDApOwogICAgIH0KIAotICAgIEFT
U0VSVChtYXJnaW5TdGFydCk7Ci0gICAgQVNTRVJUKG1hcmdpbkVuZCk7CisgICAgQVNTRVJUKHVz
ZWRNYXJnaW5TdGFydCk7CisgICAgQVNTRVJUKHVzZWRNYXJnaW5FbmQpOwogCiAgICAgaWYgKCFs
ZWZ0ICYmICF3aWR0aCAmJiByaWdodCkgewogICAgICAgICAvLyAjMQogICAgICAgICB3aWR0aCA9
IHNocmlua1RvRml0V2lkdGgobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIGxlZnQg
PSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFk
ZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2lu
RW5kICsgKnJpZ2h0KTsKKyAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCp1
c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRk
aW5nUmlnaHQgICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CiAgICAg
fSBlbHNlIGlmICghbGVmdCAmJiAhcmlnaHQgJiYgd2lkdGgpIHsKICAgICAgICAgLy8gIzIKICAg
ICAgICAgYXV0byBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24gPSBzdGF0aWNIb3Jpem9udGFsUG9z
aXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogICAg
ICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgewogICAgICAgICAgICAgbGVmdCA9IHN0
YXRpY0hvcml6b250YWxQb3NpdGlvbjsKLSAgICAgICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQpOwor
ICAgICAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2Vk
TWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5n
UmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHJpZ2h0ID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uOwotICAgICAgICAg
ICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsg
Km1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3
aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmln
aHQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghd2lkdGggJiYgIXJpZ2h0ICYmIGxlZnQp
IHsKICAgICAgICAgLy8gIzMKICAgICAgICAgd2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kKTsKKyAgICAgICAg
cmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFyZ2luU3RhcnQg
KyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3Jk
ZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKICAgICB9IGVsc2UgaWYgKCFsZWZ0ICYmIHdpZHRo
ICYmIHJpZ2h0KSB7CiAgICAgICAgIC8vICM0Ci0gICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lk
dGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOwor
ICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCAr
IGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRl
clJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgIH0gZWxzZSBpZiAoIXdpZHRo
ICYmIGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgLy8gIzUKLSAgICAgICAgd2lkdGggPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBw
YWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCAgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAq
cmlnaHQpOworICAgICAgICB3aWR0aCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsg
KnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdo
dCAgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kICsgKnJpZ2h0KTsKICAgICB9IGVsc2Ug
aWYgKCFyaWdodCAmJiBsZWZ0ICYmIHdpZHRoKSB7CiAgICAgICAgIC8vICM2Ci0gICAgICAgIHJp
Z2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3Jk
ZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdo
dCArICptYXJnaW5FbmQpOworICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KCpsZWZ0ICsgKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3
aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOwogICAg
IH0KIAogICAgIEFTU0VSVChsZWZ0KTsKICAgICBBU1NFUlQocmlnaHQpOwogICAgIEFTU0VSVCh3
aWR0aCk7Ci0gICAgQVNTRVJUKG1hcmdpblN0YXJ0KTsKLSAgICBBU1NFUlQobWFyZ2luRW5kKTsK
KyAgICBBU1NFUlQodXNlZE1hcmdpblN0YXJ0KTsKKyAgICBBU1NFUlQodXNlZE1hcmdpbkVuZCk7
CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8
PCAiW1Bvc2l0aW9uXVtXaWR0aF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24tcmVwbGFjZWQg
LT4gbGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmlnaHQoIiAgPDwgKnJpZ2h0IDw8ICJweCkgd2lk
dGgoIiA8PCAqd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luU3RhcnQgPDwgInB4LCAi
ICA8PCAqbWFyZ2luRW5kIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIp
OwotICAgIHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgKndpZHRoLCB7ICptYXJnaW5TdGFydCwg
Km1hcmdpbkVuZCB9LCB7IG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQsIG5vbkNvbXB1dGVkTWFyZ2lu
RW5kIH0gfSB9OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IG5vbi1y
ZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4KSByaWdodCgiICA8PCAqcmlnaHQgPDwg
InB4KSB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8ICp1c2VkTWFyZ2luU3Rh
cnQgPDwgInB4LCAiICA8PCAqdXNlZE1hcmdpbkVuZCA8PCAicHgpIGxheW91dEJveCgiIDw8ICZs
YXlvdXRCb3ggPDwgIikiKTsKKyAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7ICp3aWR0aCwg
eyAqdXNlZE1hcmdpblN0YXJ0LCAqdXNlZE1hcmdpbkVuZCB9LCB7IGNvbXB1dGVkTWFyZ2luU3Rh
cnQudmFsdWVPcigwKSwgY29tcHV0ZWRNYXJnaW5FbmQudmFsdWVPcigwKSB9IH0gfTsKIH0KIAog
VmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1Jl
cGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KQpAQCAt
NTI4LDggKzUzMCwxMCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogICAgIGF1dG8gdG9wID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKICAgICBhdXRvIGJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUu
bG9naWNhbEJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBoZWlnaHQg
PSBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1
c2VkSGVpZ2h0KS5oZWlnaHQ7Ci0gICAgYXV0byBtYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0g
ICAgYXV0byBtYXJnaW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
QWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5C
ZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBjb21wdXRlZE1hcmdpbkFmdGVyID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7CisgICAgYXV0byB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRNYXJnaW5CZWZvcmU7Cisg
ICAgYXV0byB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZE1hcmdpbkFmdGVyOwogICAgIGF1dG8g
cGFkZGluZ1RvcCA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0
byBwYWRkaW5nQm90dG9tID0gZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsK
ICAgICBhdXRvIGJvcmRlclRvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCk7CkBAIC01NDIsMzYg
KzU0NiwzNiBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogCiAgICAgaWYgKCFib3R0b20pIHsK
ICAgICAgICAgLy8gIzIKLSAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVl
T3IoMCk7Ci0gICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKKyAg
ICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAg
ICAgICAgdXNlZE1hcmdpbkFmdGVyID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CiAgICAg
fQogCi0gICAgaWYgKCFtYXJnaW5CZWZvcmUgJiYgIW1hcmdpbkFmdGVyKSB7CisgICAgaWYgKCF1
c2VkTWFyZ2luQmVmb3JlICYmICF1c2VkTWFyZ2luQWZ0ZXIpIHsKICAgICAgICAgLy8gIzMKICAg
ICAgICAgYXV0byBtYXJnaW5CZWZvcmVBbmRBZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20g
KyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKLSAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2lu
QWZ0ZXIgPSBtYXJnaW5CZWZvcmVBbmRBZnRlciAvIDI7CisgICAgICAgIHVzZWRNYXJnaW5CZWZv
cmUgPSB1c2VkTWFyZ2luQWZ0ZXIgPSBtYXJnaW5CZWZvcmVBbmRBZnRlciAvIDI7CiAgICAgfQog
CiAgICAgLy8gIzQKICAgICBpZiAoIXRvcCkKLSAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2Nr
SGVpZ2h0IC0gKCptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0
ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlciArICpib3R0b20p
OworICAgICAgICB0b3AgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnVzZWRNYXJnaW5CZWZv
cmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJv
cmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsKIAogICAgIGlmICghYm90
dG9tKQotICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICpt
YXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0Jv
dHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlcik7CisgICAgICAgIGJvdHRvbSA9IGNv
bnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICp1c2VkTWFyZ2luQWZ0ZXIpOwogCi0gICAgaWYgKCFtYXJnaW5CZWZvcmUpCi0gICAgICAgIG1h
cmdpbkJlZm9yZSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsg
cGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFy
Z2luQWZ0ZXIgKyAqYm90dG9tKTsKKyAgICBpZiAoIXVzZWRNYXJnaW5CZWZvcmUpCisgICAgICAg
IHVzZWRNYXJnaW5CZWZvcmUgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRl
clRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9t
ICsgKnVzZWRNYXJnaW5BZnRlciArICpib3R0b20pOwogCi0gICAgaWYgKCFtYXJnaW5BZnRlcikK
LSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICpt
YXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0Jv
dHRvbSArIGJvcmRlckJvdHRvbSArICpib3R0b20pOworICAgIGlmICghdXNlZE1hcmdpbkFmdGVy
KQorICAgICAgICB1c2VkTWFyZ2luQWZ0ZXIgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRv
cCArICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCAr
IHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKIAogICAgIC8vICM1Ci0g
ICAgYXV0byBib3hIZWlnaHQgPSAqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBh
ZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdp
bkFmdGVyICsgKmJvdHRvbTsKKyAgICBhdXRvIGJveEhlaWdodCA9ICp0b3AgKyAqdXNlZE1hcmdp
bkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9t
ICsgYm9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5BZnRlciArICpib3R0b207CiAgICAgaWYgKGJv
eEhlaWdodCA+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkKLSAgICAgICAgYm90dG9tID0gY29udGFp
bmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFk
ZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2lu
QWZ0ZXIpOyAKKyAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3Ag
KyAqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBw
YWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5BZnRlcik7IAogCi0gICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3Np
dGlvbl1bSGVpZ2h0XVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJlcGxhY2VkIC0+IHRvcCgiIDw8
ICp0b3AgPDwgInB4KSBib3R0b20oIiAgPDwgKmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8IGhl
aWdodCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5CZWZvcmUgPDwgInB4LCAiICA8PCAqbWFy
Z2luQWZ0ZXIgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAg
cmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBoZWlnaHQsIHsgeyAqbWFyZ2luQmVmb3JlLCAqbWFy
Z2luQWZ0ZXIgfSwgeyB9IH0gfSB9OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hlaWdodF1bTWFyZ2luXSAtPiBvdXQt
b2YtZmxvdyByZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8ICJweCkgYm90dG9tKCIgIDw8ICpi
b3R0b20gPDwgInB4KSBoZWlnaHQoIiA8PCBoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAqdXNl
ZE1hcmdpbkJlZm9yZSA8PCAicHgsICIgIDw8ICp1c2VkTWFyZ2luQWZ0ZXIgPDwgInB4KSBsYXlv
dXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRv
bSwgeyBoZWlnaHQsIHsgeyAqdXNlZE1hcmdpbkJlZm9yZSwgKnVzZWRNYXJnaW5BZnRlciB9LCB7
IH0gfSB9IH07CiB9CiAKIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVu
aXQ+IHVzZWRXaWR0aCkKQEAgLTYwMCwxMCArNjA0LDEwIEBAIEhvcml6b250YWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdl
b21lCiAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2lj
YWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJpZ2h0ID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpOwotICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxl
Lm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG1hcmdpbkVu
ZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFy
dC52YWx1ZU9yKDApOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5FbmQgPSBtYXJnaW5FbmQu
dmFsdWVPcigwKTsKKyAgICBhdXRvIGNvbXB1dGVkTWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAg
ICBhdXRvIGNvbXB1dGVkTWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5t
YXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gdXNlZE1hcmdpblN0
YXJ0ID0gY29tcHV0ZWRNYXJnaW5TdGFydDsKKyAgICBhdXRvIHVzZWRNYXJnaW5FbmQgPSBjb21w
dXRlZE1hcmdpbkVuZDsKICAgICBhdXRvIHdpZHRoID0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgpLndpZHRoOwogICAgIGF1dG8g
cGFkZGluZ0xlZnQgPSBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKICAgICBh
dXRvIHBhZGRpbmdSaWdodCA9IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsK
QEAgLTYyMSw1NSArNjI1LDU1IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAKICAgICBpZiAo
IWxlZnQgfHwgIXJpZ2h0KSB7CiAgICAgICAgIC8vICMyCi0gICAgICAgIG1hcmdpblN0YXJ0ID0g
bWFyZ2luU3RhcnQudmFsdWVPcigwKTsgCi0gICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52
YWx1ZU9yKDApOyAKKyAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gdXNlZE1hcmdpblN0YXJ0LnZh
bHVlT3IoMCk7IAorICAgICAgICB1c2VkTWFyZ2luRW5kID0gdXNlZE1hcmdpbkVuZC52YWx1ZU9y
KDApOyAKICAgICB9CiAKLSAgICBpZiAoIW1hcmdpblN0YXJ0ICYmICFtYXJnaW5FbmQpIHsKKyAg
ICBpZiAoIXVzZWRNYXJnaW5TdGFydCAmJiAhdXNlZE1hcmdpbkVuZCkgewogICAgICAgICAvLyAj
MwogICAgICAgICBhdXRvIG1hcmdpblN0YXJ0QW5kRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdo
dCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAgICAgICAgaWYgKG1hcmdpblN0YXJ0QW5kRW5k
ID49IDApCi0gICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpbkVuZCA9IG1hcmdpblN0YXJ0
QW5kRW5kIC8gMjsKKyAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5FbmQg
PSBtYXJnaW5TdGFydEFuZEVuZCAvIDI7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYg
KGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9
IDBfbHU7Ci0gICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0
aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgICAgICAg
ICB1c2VkTWFyZ2luU3RhcnQgPSAwX2x1OworICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQg
PSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFyZ2luU3RhcnQgKyBib3Jk
ZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0
ICsgKnJpZ2h0KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWFyZ2lu
RW5kID0gMF9sdTsKLSAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdCbG9j
a1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAgICAg
ICAgICAgIHVzZWRNYXJnaW5FbmQgPSAwX2x1OworICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5T
dGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRp
bmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2lu
RW5kICsgKnJpZ2h0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIC8v
ICM0CiAgICAgaWYgKCFsZWZ0KQotICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAgICBs
ZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAq
dXNlZE1hcmdpbkVuZCArICpyaWdodCk7CiAKICAgICBpZiAoIXJpZ2h0KQotICAgICAgICByaWdo
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICptYXJnaW5FbmQpOworICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCps
ZWZ0ICsgKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRo
ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CiAKLSAgICBp
ZiAoIW1hcmdpblN0YXJ0KQotICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5n
UmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOworICAgIGlmICghdXNl
ZE1hcmdpblN0YXJ0KQorICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tX
aWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGlu
Z1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CiAKLSAgICBp
ZiAoIW1hcmdpbkVuZCkKLSAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0
aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICBpZiAoIXVzZWRN
YXJnaW5FbmQpCisgICAgICAgIHVzZWRNYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAt
ICgqbGVmdCArICp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3
aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKIAotICAgIGF1dG8g
Ym94V2lkdGggPSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCArICpy
aWdodCk7CisgICAgYXV0byBib3hXaWR0aCA9ICgqbGVmdCArICp1c2VkTWFyZ2luU3RhcnQgKyBi
b3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJp
Z2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgIGlmIChib3hXaWR0aCA+IGNvbnRh
aW5pbmdCbG9ja1dpZHRoKSB7CiAgICAgICAgIC8vICM1IE92ZXItY29uc3RyYWluZWQ/CiAgICAg
ICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQotICAgICAgICAgICAgcmlnaHQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBw
YWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2lu
RW5kKTsKKyAgICAgICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQg
KyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBw
YWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFy
dCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKKyAgICAgICAgICAgIGxlZnQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRp
bmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2lu
RW5kICsgKnJpZ2h0KTsKICAgICB9CiAKICAgICBBU1NFUlQobGVmdCk7CiAgICAgQVNTRVJUKHJp
Z2h0KTsKLSAgICBBU1NFUlQobWFyZ2luU3RhcnQpOwotICAgIEFTU0VSVChtYXJnaW5FbmQpOwor
ICAgIEFTU0VSVCh1c2VkTWFyZ2luU3RhcnQpOworICAgIEFTU0VSVCh1c2VkTWFyZ2luRW5kKTsK
IAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJlcGxhY2VkIC0+IGxl
ZnQoIiA8PCAqbGVmdCA8PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIg
PDwgd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luU3RhcnQgPDwgInB4LCAiICA8PCAq
bWFyZ2luRW5kIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAg
IHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgd2lkdGgsIHsgKm1hcmdpblN0YXJ0LCAqbWFyZ2lu
RW5kIH0sIHsgbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCwgbm9uQ29tcHV0ZWRNYXJnaW5FbmQgfSB9
IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0g
PDwgIltQb3NpdGlvbl1bV2lkdGhdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFjZWQgLT4g
bGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmlnaHQoIiAgPDwgKnJpZ2h0IDw8ICJweCkgd2lkdGgo
IiA8PCB3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8ICp1c2VkTWFyZ2luU3RhcnQgPDwgInB4LCAi
ICA8PCAqdXNlZE1hcmdpbkVuZCA8PCAicHgpIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwg
IikiKTsKKyAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7IHdpZHRoLCB7ICp1c2VkTWFyZ2lu
U3RhcnQsICp1c2VkTWFyZ2luRW5kIH0sIHsgY29tcHV0ZWRNYXJnaW5TdGFydC52YWx1ZU9yKDAp
LCBjb21wdXRlZE1hcmdpbkVuZC52YWx1ZU9yKDApIH0gfSB9OwogfQogCiBIZWlnaHRBbmRNYXJn
aW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExh
eW91dFVuaXQ+IHVzZWRIZWlnaHQpCkBAIC02OTMsMTIgKzY5NywxMyBAQCBIZWlnaHRBbmRNYXJn
aW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IExh
eW91dFN0YXRlJgogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5nQmxv
Y2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwogCiAgICAgYXV0byBoZWlnaHQgPSB1c2Vk
SGVpZ2h0ID8gdXNlZEhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwpOwotICAgIGF1dG8gbWFyZ2luQmVm
b3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBh
dXRvIGNvbXB1dGVkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5t
YXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gY29tcHV0ZWRN
YXJnaW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpOwogCiAgICAgLy8gIzEKLSAgICBtYXJnaW5CZWZvcmUgPSBt
YXJnaW5CZWZvcmUudmFsdWVPcigwKTsKLSAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZh
bHVlT3IoMCk7CisgICAgYXV0byB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRNYXJnaW5CZWZv
cmUudmFsdWVPcigwKTsKKyAgICBhdXRvIHVzZWRNYXJnaW5BZnRlciA9IGNvbXB1dGVkTWFyZ2lu
QWZ0ZXIudmFsdWVPcigwKTsKKwogICAgIC8vICMyCiAgICAgaWYgKCFoZWlnaHQpIHsKICAgICAg
ICAgQVNTRVJUKGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpKTsKQEAgLTcwNiwxMSArNzExLDkgQEAg
SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRD
YXNlcyhjb25zdCBMYXlvdXRTdGF0ZSYKICAgICB9CiAKICAgICBBU1NFUlQoaGVpZ2h0KTsKLSAg
ICBBU1NFUlQobWFyZ2luQmVmb3JlKTsKLSAgICBBU1NFUlQobWFyZ2luQWZ0ZXIpOwogCi0gICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWln
aHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2VkIC0+IGhlaWdodCgiIDw8ICpoZWln
aHQgPDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luQmVmb3JlIDw8ICJweCwgIiA8PCAqbWFyZ2lu
QWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAg
cmV0dXJuIEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsgeyAqbWFyZ2luQmVmb3JlLCAqbWFy
Z2luQWZ0ZXIgfSwgeyB9IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRl
eHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyBub24tcmVw
bGFjZWQgLT4gaGVpZ2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IHVzZWRNYXJn
aW5CZWZvcmUgPDwgInB4LCAiIDw8IHVzZWRNYXJnaW5BZnRlciA8PCAicHgpIC0+IGxheW91dEJv
eCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICByZXR1cm4gSGVpZ2h0QW5kTWFyZ2luIHsg
KmhlaWdodCwgeyB7IHVzZWRNYXJnaW5CZWZvcmUsIHVzZWRNYXJnaW5BZnRlciB9LCB7IH0gfSB9
OwogfQogCiBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCkBAIC04
NjksMjkgKzg3MiwyNCBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTAogICAgIGF1dG8mIGNvbnRh
aW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
V2lkdGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LndpZHRoKCk7CiAKLSAgICBhdXRvIGNv
bXB1dGVNYXJnaW5FbmQgPSBbJl0oKSB7Ci0gICAgICAgIGlmIChwcmVjb21wdXRlZE1hcmdpbkVu
ZCkKLSAgICAgICAgICAgIHJldHVybiBwcmVjb21wdXRlZE1hcmdpbkVuZC52YWx1ZSgpOwotICAg
ICAgICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
RW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICAgICAgcmV0dXJuIG1hcmdpbkVuZC52
YWx1ZU9yKDBfbHUpOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXB1dGVNYXJnaW5TdGFydCA9IFsm
XSgpIHsKKyAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IFsmXSB7CiAgICAgICAgIGlmIChwcmVj
b21wdXRlZE1hcmdpblN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2lu
U3RhcnQudmFsdWUoKTsKICAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAg
ICAgICByZXR1cm4gbWFyZ2luU3RhcnQudmFsdWVPcigwX2x1KTsKICAgICB9OwogCisgICAgYXV0
byB1c2VkTWFyZ2luRW5kID0gWyZdIHsKKyAgICAgICAgaWYgKHByZWNvbXB1dGVkTWFyZ2luRW5k
KQorICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luRW5kLnZhbHVlKCk7CisgICAg
ICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5F
bmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgICAgICByZXR1cm4gbWFyZ2luRW5kLnZh
bHVlT3IoMF9sdSk7CisgICAgfTsKKwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVw
bGFjZWQoKTsKICAgICBBU1NFUlQocmVwbGFjZWQpOwogCi0gICAgYXV0byBtYXJnaW5TdGFydCA9
IGNvbXB1dGVNYXJnaW5TdGFydCgpOwotICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZU1hcmdp
bkVuZCgpOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVl
T3IoMCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDAp
OwogICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExl
bmd0aCB7IHVzZWRXaWR0aC52YWx1ZSgpLCBGaXhlZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLQogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWln
aHRBdXRvKGxheW91dEJveCk7CiAgICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZEhlaWdodFZhbHVl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CiAKQEAgLTkxNiw4
ICs5MTQsMTAgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEwKIAogICAgIEFTU0VSVCh3aWR0aCk7
CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8
PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8ICp3aWR0
aCA8PCAicHgpIG1hcmdpbigiIDw8IG1hcmdpblN0YXJ0IDw8ICJweCwgIiA8PCBtYXJnaW5FbmQg
PDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJu
IHsgKndpZHRoLCB7IG1hcmdpblN0YXJ0LCBtYXJnaW5FbmQgfSwgeyBub25Db21wdXRlZE1hcmdp
blN0YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZv
cm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZs
b3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCAqd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCB1c2Vk
TWFyZ2luU3RhcnQoKSA8PCAicHgsICIgPDwgdXNlZE1hcmdpbkVuZCgpIDw8ICJweCkgLT4gbGF5
b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5T
dGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5FbmQgPSBjb21wdXRlZFZh
bHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Cisg
ICAgcmV0dXJuIHsgKndpZHRoLCB7IHVzZWRNYXJnaW5TdGFydCgpLCB1c2VkTWFyZ2luRW5kKCkg
fSwgeyBjb21wdXRlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkTWFyZ2luRW5kLnZh
bHVlT3IoMCkgfSB9OwogfQogCiBMYXlvdXRTaXplIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC0xMDM3LDExICsxMDM3LDExIEBAIFZl
cnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUo
KTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJv
eEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lk
dGgoKTsKIAotICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhz
dHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9sdSk7
Ci0gICAgYXV0byBtYXJnaW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFy
Z2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9sdSk7CisgICAgYXV0
byB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5C
ZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9sdSk7CisgICAgYXV0byB1
c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVy
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDBfbHUpOwogCi0gICAgTE9HX1dJVEhf
U1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltNYXJnaW5dIC0+IG5v
biBjb2xsYXBzZWQgdmVydGljYWwgLT4gbWFyZ2luKCIgPDwgbWFyZ2luQmVmb3JlIDw8ICJweCwg
IiA8PCBtYXJnaW5BZnRlciA8PCAicHgpIC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsK
LSAgICByZXR1cm4geyBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyIH07CisgICAgTE9HX1dJVEhf
U1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltNYXJnaW5dIC0+IG5v
biBjb2xsYXBzZWQgdmVydGljYWwgLT4gbWFyZ2luKCIgPDwgdXNlZE1hcmdpbkJlZm9yZSA8PCAi
cHgsICIgPDwgdXNlZE1hcmdpbkFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlv
dXRCb3gpOworICAgIHJldHVybiB7IHVzZWRNYXJnaW5CZWZvcmUsIHVzZWRNYXJnaW5BZnRlciB9
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBjYzFkYmMw
MzRlZThiOTc3NjBlNjg2OWViODcyZjllMmNjOTc2ZTczLi5mYjY0NGU3MmZmNTE3ODI5MjFkMzlm
NTJmMjc5MzBiM2UzMTI0M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKGNvbnN0IENvbnRhaW5l
ciYgaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgY29uc3QgTGF5b3V0U2kKIAogICAgIGF1dG8mIGRp
c3BsYXlCb3ggPSBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sp
OwogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwotICAgIGRpc3BsYXlC
b3guc2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKHsgfSk7CisgICAgZGlzcGxheUJveC5z
ZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oeyB9KTsKICAgICBkaXNwbGF5Qm94LnNldFZlcnRp
Y2FsTWFyZ2luKHsgfSk7CiAgICAgZGlzcGxheUJveC5zZXRCb3JkZXIoeyB9KTsKICAgICBkaXNw
bGF5Qm94LnNldFBhZGRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5k
ZXggZDc2YjZhMzg1NjVlZjM0YWZmNDRmOWY4MTBhYjY2ZTJmOWUxMTQyMi4uNzBhZTJiYzQxMTJk
M2EyNTM4ZmVhNmM0NzdkMDYwMTQ1NTdiZWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVu
aXRzLmgKQEAgLTEwMyw5ICsxMDMsOCBAQCBzdHJ1Y3QgRWRnZXMgewogCiBzdHJ1Y3QgV2lkdGhB
bmRNYXJnaW4gewogICAgIExheW91dFVuaXQgd2lkdGg7Ci0gICAgSG9yaXpvbnRhbE1hcmdpbiBt
YXJnaW47Ci0gICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaWYgd2UgcmVhbGx5IHJlYWxseSBuZWVk
IHRoaXMuCi0gICAgSG9yaXpvbnRhbE1hcmdpbiBub25Db21wdXRlZE1hcmdpbjsKKyAgICBIb3Jp
em9udGFsTWFyZ2luIHVzZWRNYXJnaW47CisgICAgSG9yaXpvbnRhbE1hcmdpbiBjb21wdXRlZE1h
cmdpbjsKIH07CiAKIHN0cnVjdCBIZWlnaHRBbmRNYXJnaW4gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
VmVyaWZpY2F0aW9uLmNwcAppbmRleCA4ZWIwNTQ3NDNhZmEwZWM1YThmMmI4MzQ2OTRjNGU1ODcx
OWZjMmY3Li40OTQxNTdhOWVlNzViNzVmNDRjMjUzNjIyMmFjYTgyZTdkMDBmYzU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMjQ3LDggKzI0Nyw4IEBAIHN0YXRp
YyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRT
dHJlYW0mIHN0cmVhbSwgY29uCiAKICAgICAgICAgcmV0dXJuIERpc3BsYXk6OkJveDo6UmVjdCB7
CiAgICAgICAgICAgICBib3JkZXJCb3gudG9wKCkgLSBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1h
cmdpbkJlZm9yZSgpLAotICAgICAgICAgICAgYm9yZGVyQm94LmxlZnQoKSAtIGRpc3BsYXlCb3gu
bm9uQ29tcHV0ZWRNYXJnaW5TdGFydCgpLAotICAgICAgICAgICAgZGlzcGxheUJveC5ub25Db21w
dXRlZE1hcmdpblN0YXJ0KCkgKyBib3JkZXJCb3gud2lkdGgoKSArIGRpc3BsYXlCb3gubm9uQ29t
cHV0ZWRNYXJnaW5FbmQoKSwKKyAgICAgICAgICAgIGJvcmRlckJveC5sZWZ0KCkgLSBkaXNwbGF5
Qm94LmNvbXB1dGVkTWFyZ2luU3RhcnQoKSwKKyAgICAgICAgICAgIGRpc3BsYXlCb3guY29tcHV0
ZWRNYXJnaW5TdGFydCgpICsgYm9yZGVyQm94LndpZHRoKCkgKyBkaXNwbGF5Qm94LmNvbXB1dGVk
TWFyZ2luRW5kKCksCiAgICAgICAgICAgICBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkJl
Zm9yZSgpICsgYm9yZGVyQm94LmhlaWdodCgpICsgZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJn
aW5BZnRlcigpCiAgICAgICAgIH07CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IDQyOWMwYTk4MTFhNDhkYmY0NTUxYTRiZTkyMTMwZjI1MDE0M2EzOGIuLmI4YmZh
OTkxOGFmNTI3ZTkxZWUxYTliOWEyYzI4OWYzODVkZWE1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMzMxLDkgKzMzMSw5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAog
CiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aCh3aWR0aEFu
ZE1hcmdpbi53aWR0aCk7Ci0gICAgZGlzcGxheUJveC5tb3ZlSG9yaXpvbnRhbGx5KHdpZHRoQW5k
TWFyZ2luLm1hcmdpbi5zdGFydCk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2lu
KHdpZHRoQW5kTWFyZ2luLm1hcmdpbik7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTm9u
Q29tcHV0ZWRNYXJnaW4od2lkdGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4pOworICAgIGRp
c3BsYXlCb3gubW92ZUhvcml6b250YWxseSh3aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLnN0YXJ0
KTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4udXNl
ZE1hcmdpbik7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4od2lk
dGhBbmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZWU0
Mzg3MmVhYjZlNTAwYmU4YWM3MmIxNWFmOTAxMGJlZWJmODEwNi4uNjRhNzc1ODQ5NjBjOTRjZTU3
YjZlMDdkNjUxNTY5MTg2YmRmMGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcApAQCAtMTQxLDEwICsxNDEsMTAgQEAgV2lkdGhBbmRNYXJnaW4gQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4KICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIAogICAgICAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRW
YWx1ZUlmTm90QXV0byh1c2VkV2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4
ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAg
ICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdp
blN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQg
PSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCk7Ci0gICAgICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0
YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5FbmQgPSBtYXJn
aW5FbmQudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBjb21wdXRlZE1hcmdpblN0YXJ0ID0gY29t
cHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCk7CisgICAgICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgICAg
IGF1dG8gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRNYXJnaW5TdGFydDsKKyAgICAgICAgYXV0
byB1c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRNYXJnaW5FbmQ7CiAgICAgICAgIGF1dG8gYm9yZGVy
TGVmdCA9IGRpc3BsYXlCb3guYm9yZGVyTGVmdCgpOwogICAgICAgICBhdXRvIGJvcmRlclJpZ2h0
ID0gZGlzcGxheUJveC5ib3JkZXJSaWdodCgpOwogICAgICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0g
ZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CkBAIC0xNTIsNTEgKzE1Miw1MSBA
QCBXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbgogCiAgICAgICAgIC8vICMxCiAgICAgICAgIGlmICh3
aWR0aCkgewotICAgICAgICAgICAgYXV0byBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtIChtYXJnaW5TdGFydC52YWx1ZU9yKDApICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyBtYXJn
aW5FbmQudmFsdWVPcigwKSk7CisgICAgICAgICAgICBhdXRvIGhvcml6b250YWxTcGFjZUZvck1h
cmdpbiA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKHVzZWRNYXJnaW5TdGFydC52YWx1ZU9yKDAp
ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyB1c2VkTWFyZ2luRW5kLnZhbHVlT3IoMCkpOwogICAgICAgICAgICAgaWYgKGhv
cml6b250YWxTcGFjZUZvck1hcmdpbiA8IDApIHsKLSAgICAgICAgICAgICAgICBtYXJnaW5TdGFy
dCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICAgICAgbWFyZ2luRW5kID0g
bWFyZ2luRW5kLnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0g
dXNlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgdXNlZE1hcmdpbkVu
ZCA9IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
CiAgICAgICAgIC8vICMyCi0gICAgICAgIGlmICh3aWR0aCAmJiBtYXJnaW5TdGFydCAmJiBtYXJn
aW5FbmQpIHsKKyAgICAgICAgaWYgKHdpZHRoICYmIHVzZWRNYXJnaW5TdGFydCAmJiB1c2VkTWFy
Z2luRW5kKSB7CiAgICAgICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQg
ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQpOworICAgICAgICAgICAgICAg
IHVzZWRNYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0
ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJv
cmRlclJpZ2h0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtYXJnaW5TdGFy
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3
aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAgICAg
ICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQg
KyAqdXNlZE1hcmdpbkVuZCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyAjMwotICAgICAgICBp
ZiAoIW1hcmdpblN0YXJ0ICYmIHdpZHRoICYmIG1hcmdpbkVuZCkKLSAgICAgICAgICAgIG1hcmdp
blN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0
ICArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7Ci0g
ICAgICAgIGVsc2UgaWYgKG1hcmdpblN0YXJ0ICYmICF3aWR0aCAmJiBtYXJnaW5FbmQpCi0gICAg
ICAgICAgICB3aWR0aCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCArIGJv
cmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1h
cmdpbkVuZCk7Ci0gICAgICAgIGVsc2UgaWYgKG1hcmdpblN0YXJ0ICYmIHdpZHRoICYmICFtYXJn
aW5FbmQpCi0gICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgq
bWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5n
UmlnaHQgKyBib3JkZXJSaWdodCk7CisgICAgICAgIGlmICghdXNlZE1hcmdpblN0YXJ0ICYmIHdp
ZHRoICYmIHVzZWRNYXJnaW5FbmQpCisgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtIChib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CisgICAgICAgIGVs
c2UgaWYgKHVzZWRNYXJnaW5TdGFydCAmJiAhd2lkdGggJiYgdXNlZE1hcmdpbkVuZCkKKyAgICAg
ICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCAr
IGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsg
KnVzZWRNYXJnaW5FbmQpOworICAgICAgICBlbHNlIGlmICh1c2VkTWFyZ2luU3RhcnQgJiYgd2lk
dGggJiYgIXVzZWRNYXJnaW5FbmQpCisgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFp
bmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5n
TGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0KTsKIAogICAgICAgICAv
LyAjNAogICAgICAgICBpZiAoIXdpZHRoKSB7Ci0gICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1h
cmdpblN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQu
dmFsdWVPcigwKTsKLSAgICAgICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAo
Km1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kKTsKKyAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9
IHVzZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApOworICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9
IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHdpZHRoID0gY29udGFpbmlu
Z0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVm
dCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gIzUKLSAgICAgICAgaWYgKCFtYXJnaW5TdGFydCAmJiAhbWFyZ2lu
RW5kKSB7CisgICAgICAgIGlmICghdXNlZE1hcmdpblN0YXJ0ICYmICF1c2VkTWFyZ2luRW5kKSB7
CiAgICAgICAgICAgICBhdXRvIGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdC
bG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAgKyAqd2lkdGggKyBwYWRkaW5n
UmlnaHQgKyBib3JkZXJSaWdodCk7Ci0gICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpbkVu
ZCA9IGhvcml6b250YWxTcGFjZUZvck1hcmdpbiAvIDI7CisgICAgICAgICAgICB1c2VkTWFyZ2lu
U3RhcnQgPSB1c2VkTWFyZ2luRW5kID0gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luIC8gMjsKICAg
ICAgICAgfQogCiAgICAgICAgIEFTU0VSVCh3aWR0aCk7Ci0gICAgICAgIEFTU0VSVChtYXJnaW5T
dGFydCk7Ci0gICAgICAgIEFTU0VSVChtYXJnaW5FbmQpOworICAgICAgICBBU1NFUlQodXNlZE1h
cmdpblN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKHVzZWRNYXJnaW5FbmQpOwogCi0gICAgICAgIHJl
dHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyAqbWFyZ2luU3RhcnQsICptYXJnaW5FbmQg
fSwgeyBub25Db21wdXRlZE1hcmdpblN0YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH07Cisg
ICAgICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyAqdXNlZE1hcmdpblN0YXJ0
LCAqdXNlZE1hcmdpbkVuZCB9LCB7IGNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWVPcigwKSwgY29t
cHV0ZWRNYXJnaW5FbmQudmFsdWVPcigwKSB9IH07CiAgICAgfTsKIAogICAgIGF1dG8gd2lkdGhB
bmRNYXJnaW4gPSBjb21wdXRlKCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxh
Y2VkIC0+IHdpZHRoKCIgPDwgd2lkdGhBbmRNYXJnaW4ud2lkdGggPDwgInB4KSBtYXJnaW4oIiA8
PCB3aWR0aEFuZE1hcmdpbi5tYXJnaW4uc3RhcnQgPDwgInB4LCAiIDw8IHdpZHRoQW5kTWFyZ2lu
Lm1hcmdpbi5lbmQgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7
CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltXaWR0aF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHdpZHRoKCIgPDwgd2lk
dGhBbmRNYXJnaW4ud2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCB3aWR0aEFuZE1hcmdpbi51c2Vk
TWFyZ2luLnN0YXJ0IDw8ICJweCwgIiA8PCB3aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLmVuZCA8
PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4g
d2lkdGhBbmRNYXJnaW47CiB9CiAKQEAgLTIxNCw4ICsyMTQsOCBAQCBXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihjbwogICAgIC8vICMyCiAgICAgYXV0byBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luID0g
aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB3
aWR0aCk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8
IHdpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5tYXJn
aW4uc3RhcnQgPDwgInB4LCAiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ubWFyZ2luLmVu
ZCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1
cm4geyB3aWR0aCwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5tYXJnaW4sIG5vblJlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0o
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGlu
ZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8IHdpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgbm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLnN0YXJ0IDw8ICJweCwgIiA8PCBub25S
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uZW5kIDw8ICJweCkgLT4gbGF5b3V0Qm94
KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiB7IHdpZHRoLCBub25SZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4sIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4uY29t
cHV0ZWRNYXJnaW4gfTsKIH0KIAogUG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OnN0YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5jcHAKaW5kZXggMDI3YjQzNGJiYzZkNGMyZjU1MTBhZmNlOWM1MDc4MzllNjQ5
ZTI0NC4uMzE0MGE1NWFmYWI0Y2YxMmIzZjU1ZmZiN2IxMjYxZjFkNzk2ZjFhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcApAQCAtNTks
NyArNTksNyBAQCBCb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwgbV9jb250ZW50SGVp
Z2h0KG90aGVyLm1fY29udGVudEhlaWdodCkKICAgICAsIG1faG9yaXpvbnRhbE1hcmdpbihvdGhl
ci5tX2hvcml6b250YWxNYXJnaW4pCiAgICAgLCBtX3ZlcnRpY2FsTWFyZ2luKG90aGVyLm1fdmVy
dGljYWxNYXJnaW4pCi0gICAgLCBtX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihvdGhlci5t
X2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbikKKyAgICAsIG1faG9yaXpvbnRhbENvbXB1dGVk
TWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKQogICAgICwgbV9lc3RpbWF0
ZWRNYXJnaW5CZWZvcmUob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUpCiAgICAgLCBtX2Jv
cmRlcihvdGhlci5tX2JvcmRlcikKICAgICAsIG1fcGFkZGluZyhvdGhlci5tX3BhZGRpbmcpCkBA
IC02OSw3ICs2OSw3IEBAIEJveDo6Qm94KGNvbnN0IEJveCYgb3RoZXIpCiAgICAgLCBtX2hhc1Zh
bGlkSG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbikKICAg
ICAsIG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkVmVydGljYWxNYXJn
aW4pCiAgICAgLCBtX2hhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4ob3RoZXIubV9o
YXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKQotICAgICwgbV9oYXNWYWxpZEhvcml6
b250YWxOb25Db21wdXRlZE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkSG9yaXpvbnRhbE5vbkNvbXB1
dGVkTWFyZ2luKQorICAgICwgbV9oYXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbihvdGhl
ci5tX2hhc1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKQogICAgICwgbV9oYXNWYWxpZEJv
cmRlcihvdGhlci5tX2hhc1ZhbGlkQm9yZGVyKQogICAgICwgbV9oYXNWYWxpZFBhZGRpbmcob3Ro
ZXIubV9oYXNWYWxpZFBhZGRpbmcpCiAgICAgLCBtX2hhc1ZhbGlkQ29udGVudEhlaWdodChvdGhl
ci5tX2hhc1ZhbGlkQ29udGVudEhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4IDU2MzkyZjQ3ZWU3OWUzMGQzZjBlMjE4OTRkM2Yx
NGJiODc1ZDdlODkuLjc1ZWM3NzE4N2E0NmVjMmZmZGY4MWU1YmE3MTE4NzYzNGE3MzYzN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAt
MTQ2LDggKzE0Niw4IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFy
Z2luQmVmb3JlKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRl
cigpIGNvbnN0OwotICAgIExheW91dFVuaXQgbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCgpIGNvbnN0
OwotICAgIExheW91dFVuaXQgbm9uQ29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsKKyAgICBMYXlv
dXRVbml0IGNvbXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1
dGVkTWFyZ2luRW5kKCkgY29uc3Q7CiAKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0
ZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsg
fQogCkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0SG9yaXpvbnRh
bE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAgIHZvaWQgc2V0VmVydGljYWxN
YXJnaW4oTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbik7Ci0gICAgdm9pZCBzZXRIb3Jpem9udGFsTm9u
Q29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKKyAgICB2b2lkIHNldEhv
cml6b250YWxDb21wdXRlZE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwogICAgIHZv
aWQgc2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSB7IG1f
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CiAKICAgICB2b2lkIHNldEJv
cmRlcihMYXlvdXQ6OkVkZ2VzKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0SGFzVmFsaWRMZWZ0KCkgeyBtX2hhc1ZhbGlkTGVmdCA9IHRydWU7IH0KICAgICB2b2lk
IHNldEhhc1ZhbGlkVmVydGljYWxNYXJnaW4oKSB7IG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbiA9
IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4o
KSB7IG1faGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbiA9IHRydWU7IH0KLSAgICB2
b2lkIHNldEhhc1ZhbGlkSG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKCkgeyBtX2hhc1ZhbGlk
SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SGFzVmFs
aWRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oKSB7IG1faGFzVmFsaWRIb3Jpem9udGFsQ29tcHV0
ZWRNYXJnaW4gPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxpZEhvcml6b250YWxNYXJnaW4o
KSB7IG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRI
YXNWYWxpZEJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IHRydWU7IH0KQEAgLTIyNiw3ICsy
MjYsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpv
bnRhbE1hcmdpbjsKICAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1fdmVydGljYWxNYXJnaW47
Ci0gICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFy
Z2luOworICAgIExheW91dDo6SG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxDb21wdXRlZE1h
cmdpbjsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsK
IAogICAgIExheW91dDo6RWRnZXMgbV9ib3JkZXI7CkBAIC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Zh
bGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNW
YWxpZEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hh
c1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFz
VmFsaWRCb3JkZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9OwpAQCAtNTI1
LDEyICs1MjUsMTIgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6
OlZlcnRpY2FsTWFyZ2luIG1hcmdpbikKICAgICBtX3ZlcnRpY2FsTWFyZ2luID0gbWFyZ2luOwog
fQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihMYXlv
dXQ6Okhvcml6b250YWxNYXJnaW4gbWFyZ2luKQoraW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9u
dGFsQ29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1hcmdpbikKIHsKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc2V0SGFzVmFsaWRIb3Jpem9udGFsTm9uQ29tcHV0ZWRN
YXJnaW4oKTsKKyAgICBzZXRIYXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbigpOwogI2Vu
ZGlmCi0gICAgbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4gPSBtYXJnaW47CisgICAgbV9o
b3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4gPSBtYXJnaW47CiB9CiAKIGlubGluZSB2b2lkIEJveDo6
c2V0Qm9yZGVyKExheW91dDo6RWRnZXMgYm9yZGVyKQpAQCAtNTkxLDE2ICs1OTEsMTYgQEAgaW5s
aW5lIExheW91dFVuaXQgQm94Ojpub25Db2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fdmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCkuYWZ0ZXI7CiB9CiAK
LWlubGluZSBMYXlvdXRVbml0IEJveDo6bm9uQ29tcHV0ZWRNYXJnaW5TdGFydCgpIGNvbnN0Citp
bmxpbmUgTGF5b3V0VW5pdCBCb3g6OmNvbXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdAogewotICAg
IEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKTsKLSAgICByZXR1
cm4gbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4uc3RhcnQ7CisgICAgQVNTRVJUKG1faGFz
VmFsaWRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4pOworICAgIHJldHVybiBtX2hvcml6b250YWxD
b21wdXRlZE1hcmdpbi5zdGFydDsKIH0KIAotaW5saW5lIExheW91dFVuaXQgQm94Ojpub25Db21w
dXRlZE1hcmdpbkVuZCgpIGNvbnN0CitpbmxpbmUgTGF5b3V0VW5pdCBCb3g6OmNvbXB1dGVkTWFy
Z2luRW5kKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxOb25Db21w
dXRlZE1hcmdpbik7Ci0gICAgcmV0dXJuIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luLmVu
ZDsKKyAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbik7CisgICAg
cmV0dXJuIG1faG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luLmVuZDsKIH0KIAogaW5saW5lIE9wdGlv
bmFsPExheW91dFVuaXQ+IEJveDo6cGFkZGluZ1RvcCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaAppbmRleCA3ZDQ2NjkwNDk0ZDRlZTZiODFjMTgz
YzI4YTJkZTNiNGIyZmRhNjYyLi44YjVjZDg4NDA1ODQ3NzEzMTM5NWI0YTllNWEwZTgxYTZjMWE2
MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmgKQEAg
LTcyLDggKzcyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUo
KSBjb25zdCB7IHJldHVybiBkaXNwbGF5Qm94KCkubWFyZ2luQmVmb3JlKCk7IH0KICAgICBMYXlv
dXRVbml0IG1hcmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm1hcmdpbkFm
dGVyKCk7IH0KLSAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gZGlz
cGxheUJveCgpLm5vbkNvbXB1dGVkTWFyZ2luU3RhcnQoKTsgfQotICAgIExheW91dFVuaXQgbWFy
Z2luRW5kKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm5vbkNvbXB1dGVkTWFyZ2luRW5k
KCk7IH0KKyAgICAvLyBEbyBub3QgdXNlIHRoZSB1c2VkIHZhbHVlcyBoZXJlIGJlY2F1c2UgdGhl
eSBjb21wdXRlZCBhcyBpZiB0aGlzIGJveCB3YXMgbm90IGEgZmxvYXQgYXZvaWRlci4KKyAgICBM
YXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLmNvbXB1
dGVkTWFyZ2luU3RhcnQoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3QgeyBy
ZXR1cm4gZGlzcGxheUJveCgpLmNvbXB1dGVkTWFyZ2luRW5kKCk7IH0KIAogICAgIExheW91dFVu
aXQgbWFyZ2luQm94V2lkdGgoKSBjb25zdCB7IHJldHVybiBtYXJnaW5TdGFydCgpICsgZGlzcGxh
eUJveCgpLndpZHRoKCkgKyBtYXJnaW5FbmQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggZTIxYjg3NDA3Mjc1NmFkZTE2NGJiOGY3MDYwNTc1OTgwNTA2OTc0
My4uNWM1ZjNlZGI3MjNiM2EyNmMxZTc2MGUxNmM5YmUwMDBkYmQwMGY3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzQyLDggKzM0Miw4IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91
dEJveCkgY29uc3QKIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94
V2lkdGgod2lkdGhBbmRNYXJnaW4ud2lkdGgpOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRh
bE1hcmdpbih3aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpv
bnRhbE5vbkNvbXB1dGVkTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm5vbkNvbXB1dGVkTWFyZ2luKTsK
KyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4udXNlZE1h
cmdpbik7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4od2lkdGhB
bmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAo=
</data>
<flag name="review"
          id="375142"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>