<?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>51291</bug_id>
          
          <creation_ts>2010-12-18 10:58:53 -0800</creation_ts>
          <short_desc>Move WebKitExamplePlugins to Examples</short_desc>
          <delta_ts>2010-12-19 22:45:45 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>324120</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-18 10:58:53 -0800</bug_when>
    <thetext>As discussed on webkit-dev</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324122</commentid>
    <comment_count>1</comment_count>
      <attachid>76940</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-18 11:03:21 -0800</bug_when>
    <thetext>Created attachment 76940
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324296</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-19 22:45:45 -0800</bug_when>
    <thetext>Thanks for the review!
Committed revision 74332.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76940</attachid>
            <date>2010-12-18 11:03:21 -0800</date>
            <delta_ts>2010-12-19 22:30:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>move-example</filename>
            <type>text/plain</type>
            <size>146259</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDc0MzE3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMTIt
MTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdlYktpdEV4YW1wbGVQbHVnaW5zIHRv
IEV4YW1wbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MTI5MQorCisgICAgICAgICogRXhhbXBsZXM6IENvcGllZCBmcm9tIFdlYktpdEV4YW1wbGVQ
bHVnaW5zLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW46IFJlbW92ZWQuCisg
ICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb2NvYVBsdWdpbi9FbmdsaXNo
Lmxwcm9qOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBl
Q29jb2FQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvY29hUGx1Z2luL0luZm8ucGxp
c3Q6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb2Nv
YVBsdWdpbi9NZW51SGFuZGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQ
bHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vTWVudUhhbmRsZXIubTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29j
b2FQbHVnaW4ueGNvZGVwcm9qOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVn
aW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05l
dHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1w
bGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vdGVzdC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2lu
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFu
aW1hdGlvbk1vdmllUGx1Z2luL0VuZ2xpc2gubHByb2o6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
S2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vRW5nbGlz
aC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRFeGFt
cGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9JbmZvLnBsaXN0OiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1h
dGlvbk1vdmllUGx1Z2luL01vdmllQ29udHJvbGxlckxheWVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4v
TW92aWVDb250cm9sbGVyTGF5ZXIubTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRFeGFtcGxl
UGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRzY2FwZUNvcmVBbmlt
YXRpb25Nb3ZpZVBsdWdpbi54Y29kZXByb2o6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhh
bXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0c2NhcGVDb3Jl
QW5pbWF0aW9uTW92aWVQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3Zp
ZVBsdWdpbi9QYXVzZS50aWZmOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVn
aW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1BsYXkudGlmZjogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3Zp
ZVBsdWdpbi9TbGlkZXJUcmFja0NlbnRlci50aWZmOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktp
dEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1NsaWRlclRy
YWNrTGVmdC50aWZmOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05l
dHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1NsaWRlclRyYWNrUmlnaHQudGlmZjogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRp
b25Nb3ZpZVBsdWdpbi9UaHVtYi50aWZmOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1w
bGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL21haW4ubTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25N
b3ZpZVBsdWdpbi90ZXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBs
dWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9Db21wb3NpdGlv
bi5xdHo6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVD
b3JlQW5pbWF0aW9uUGx1Z2luL0VuZ2xpc2gubHByb2o6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
S2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL0VuZ2xpc2gubHBy
b2ovSW5mb1BsaXN0LnN0cmluZ3M6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBs
dWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL0luZm8ucGxpc3Q6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2lu
L05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi54Y29kZXByb2o6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL05ldHNj
YXBlQ29yZUFuaW1hdGlvblBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvblBs
dWdpbi9tYWluLm06IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0
c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL3Rlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4v
RW5nbGlzaC5scHJvajogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9O
ZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M6
IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVJbnB1dE1l
dGhvZFBsdWdpbi9JbmZvLnBsaXN0OiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdEV4YW1wbGVQ
bHVnaW5zL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdp
bi54Y29kZXByb2o6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0
c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0RXhhbXBsZVBsdWdp
bnMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9tYWluLm06IFJlbW92ZWQuCisgICAgICAgICog
V2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi90ZXN0Lmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogY21ha2UvV2ViS2l0UGFja2FnaW5nLmNtYWtlOgorCiAyMDEw
LTEyLTE3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogQnVnc1NpdGUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEJ1Z3NTaXRlL0NoYW5nZUxvZwkocmV2aXNpb24gNzQzMTcpCisrKyBCdWdzU2l0ZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0xMi0xOCAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgV2ViS2l0RXhhbXBsZVBsdWdpbnMgdG8gRXhhbXBsZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMjkxCisK
KyAgICAgICAgKiBQcmV0dHlQYXRjaC9QcmV0dHlQYXRjaC5yYjoKKwogMjAxMC0xMi0xNyAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KSW5kZXg6IEJ1Z3NTaXRlL1ByZXR0eVBhdGNoL1ByZXR0eVBhdGNoLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEJ1Z3NTaXRlL1ByZXR0eVBhdGNoL1ByZXR0eVBhdGNoLnJiCShyZXZpc2lvbiA3
NDMxNCkKKysrIEJ1Z3NTaXRlL1ByZXR0eVBhdGNoL1ByZXR0eVBhdGNoLnJiCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSw3IEBAIHByaXZhdGUKIAogICAgIE9QRU5TT1VSQ0VfRElSUyA9IFNl
dC5uZXcgJXdbCiAgICAgICAgIEJ1Z3NTaXRlCisgICAgICAgIEV4YW1wbGVzCiAgICAgICAgIEph
dmFTY3JpcHRDb3JlCiAgICAgICAgIEphdmFTY3JpcHRHbHVlCiAgICAgICAgIExheW91dFRlc3Rz
CkBAIC03NSw3ICs3Niw2IEBAIHByaXZhdGUKICAgICAgICAgV2ViQ29yZQogICAgICAgICBXZWJL
aXQKICAgICAgICAgV2ViS2l0MgotICAgICAgICBXZWJLaXRFeGFtcGxlUGx1Z2lucwogICAgICAg
ICBXZWJLaXRMaWJyYXJpZXMKICAgICAgICAgV2ViS2l0U2l0ZQogICAgICAgICBhdXRvdG9vbHMK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc0MzE3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTAtMTItMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdlYktp
dEV4YW1wbGVQbHVnaW5zIHRvIEV4YW1wbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MTI5MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL2J1aWxkLnB5OgorCiAyMDEwLTEyLTE3ICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZGZpeCBhZnRl
ciByNzQzMDEuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVp
bGQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmln
L2J1aWxkLnB5CShyZXZpc2lvbiA3NDMxNCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NvbmZpZy9idWlsZC5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBkZWYg
X3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQodGFyZ2V0X3BsCiAgICAgICAgICgiUGFnZUxvYWRU
ZXN0cyIsIFtdKSwKICAgICAgICAgKCJQbGFuZXRXZWJLaXQiLCBbXSksCiAgICAgICAgICgiV2Vi
Q29yZS9tYW51YWwtdGVzdHMiLCBbXSksCi0gICAgICAgICgiV2ViS2l0RXhhbXBsZVBsdWdpbnMi
LCBbXSksCisgICAgICAgICgiRXhhbXBsZXMiLCBbXSksCiAgICAgICAgICgiV2ViS2l0U2l0ZSIs
IFtdKSwKICAgICAgICAgKCJhbmRyb2lkIiwgW10pLAogICAgICAgICAoImJyZXciLCBbXSksCklu
ZGV4OiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
RXhhbXBsZVBsdWdpbnMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDMxNCkKKysrIFdlYktpdEV4YW1w
bGVQbHVnaW5zL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzNTggKzAsMCBAQAotMjAx
MC0xMS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgVXBkYXRl
ZCBYY29kZSBwcm9qZWN0cyBieSBvcGVuaW5nIHRoZW0gd2l0aCBYY29kZSAzLjIuNC4KLSAgICAg
ICAgVXBkYXRlZCBzdm46aWdub3JlIGZvciBYY29kZSBwcm9qZWN0cy4KLQotICAgICAgICAqIE5l
dHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2o6IEFkZGVkIHBy
b3BlcnR5IHN2bjppZ25vcmUuCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9OZXRzY2Fw
ZUNvY29hUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFVwZGF0ZWQgd2l0aCBYY29k
ZSAzLjIuNC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRz
Y2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi54Y29kZXByb2o6IEFkZGVkIHByb3BlcnR5IHN2
bjppZ25vcmUuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0
c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
LSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0
aW9uUGx1Z2luLnhjb2RlcHJvajogQWRkZWQgcHJvcGVydHkgc3ZuOmlnbm9yZS4KLSAgICAgICAg
KiBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2lu
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0gICAgICAgICogTmV0c2NhcGVJbnB1dE1ldGhv
ZFBsdWdpbi9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luLnhjb2RlcHJvajogQWRkZWQgcHJvcGVy
dHkgc3ZuOmlnbm9yZS4KLSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL05ldHNj
YXBlSW5wdXRNZXRob2RQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogVXBkYXRlZCB3
aXRoIFhjb2RlIDMuMi40LgotCi0yMDEwLTA2LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+Ci0KLSAgICAgICAgRml4IGJ1aWxkLgotCi0gICAgICAgICogTmV0c2NhcGVD
b3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vbWFpbi5tOgotICAgICAgICAoTlBQX05ldyk6Ci0gICAg
ICAgIChOUFBfV3JpdGVSZWFkeSk6Ci0gICAgICAgIChOUFBfV3JpdGUpOgotICAgICAgICAoTlBQ
X0hhbmRsZUV2ZW50KToKLQotMjAxMC0wNi0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgotCi0gICAgICAgIEZpeCBidWlsZC4KLQotICAgICAgICAqIE5ldHNjYXBlQ29j
b2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgot
ICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tOgotICAgICAgICAoTlBQX05ldyk6
Ci0gICAgICAgIChOUFBfTmV3U3RyZWFtKToKLSAgICAgICAgKE5QUF9Xcml0ZVJlYWR5KToKLSAg
ICAgICAgKE5QUF9Xcml0ZSk6Ci0gICAgICAgIChOUFBfSGFuZGxlRXZlbnQpOgotCi0yMDEwLTAz
LTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgS2V2aW4gRGVja2VyLgotCi0gICAgICAgIE5QV2luZG93IGlzIG5vdyBudWxsIGlu
IHRoZSBDb2NvYSBldmVudCBtb2RlbC4KLQotICAgICAgICAqIE5ldHNjYXBlSW5wdXRNZXRob2RQ
bHVnaW4vbWFpbi5tOgotICAgICAgICAoaGFuZGxlRHJhdyk6Ci0gICAgICAgIChOUFBfSGFuZGxl
RXZlbnQpOgotCi0yMDA5LTA3LTEwICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KLQot
ICAgICAgICBTb3J0IGFsbCBvdXIgWGNvZGUgcHJvamVjdHMKLQotICAgICAgICBBY2NvbXBsaXNo
ZWQgdXNpbmcgc29ydC1YY29kZS1wcm9qZWN0LWZpbGUuCi0KLSAgICAgICAgUmVxdWVzdGVkIGJ5
IERhdmUgS2lsemVyLgotCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9OZXRzY2FwZUNv
Y29hUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0gICAgICAgICogTmV0c2NhcGVD
b3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4u
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRp
b25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6Ci0KLTIwMDktMDYtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIuCi0KLSAgICAgICAgQWRkIENv
cmUgQW5pbWF0aW9uIG1vdmllIHBsdWctaW4gZXhhbXBsZS4KLSAgICAgICAgCi0gICAgICAgICog
TmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW46IEFkZGVkLgotICAgICAgICAqIE5ldHNj
YXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL0VuZ2xpc2gubHByb2o6IEFkZGVkLgotICAgICAg
ICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1Bs
aXN0LnN0cmluZ3M6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmll
UGx1Z2luL0luZm8ucGxpc3Q6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlv
bk1vdmllUGx1Z2luL01vdmllQ29udHJvbGxlckxheWVyLmg6IEFkZGVkLgotICAgICAgICAqIE5l
dHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL01vdmllQ29udHJvbGxlckxheWVyLm06IEFk
ZGVkLgotICAgICAgICAoY3JlYXRlSW1hZ2VOYW1lZCk6Ci0gICAgICAgICgtW01vdmllQ29udHJv
bGxlckxheWVyIGluaXRdKToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5ZXIgZGVhbGxv
Y10pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfcGxheVBhdXNlQnV0dG9uUmVj
dF0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfc2xpZGVyUmVjdF0pOgotICAg
ICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfc2xpZGVyVGh1bWJSZWN0XSk6Ci0gICAgICAg
ICgtW01vdmllQ29udHJvbGxlckxheWVyIF9pbm5lclNsaWRlclJlY3RdKToKLSAgICAgICAgKC1b
TW92aWVDb250cm9sbGVyTGF5ZXIgX2RyYXdQbGF5UGF1c2VCdXR0b25JbkNvbnRleHQ6XSk6Ci0g
ICAgICAgICgtW01vdmllQ29udHJvbGxlckxheWVyIF9kcmF3U2xpZGVySW5Db250ZXh0Ol0pOgot
ICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBkcmF3SW5Db250ZXh0Ol0pOgotICAgICAg
ICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfY3VycmVudFRpbWVdKToKLSAgICAgICAgKC1bTW92
aWVDb250cm9sbGVyTGF5ZXIgX2R1cmF0aW9uXSk6Ci0gICAgICAgICgtW01vdmllQ29udHJvbGxl
ckxheWVyIF9pc1BsYXlpbmddKToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5ZXIgX3Vw
ZGF0ZVRpbWU6XSk6Ci0gICAgICAgICgtW01vdmllQ29udHJvbGxlckxheWVyIF9yYXRlRGlkQ2hh
bmdlOl0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfdGltZURpZENoYW5nZTpd
KToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5ZXIgYWN0aW9uRm9yS2V5Ol0pOgotICAg
ICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBzZXRNb3ZpZTpdKToKLSAgICAgICAgKC1bTW92
aWVDb250cm9sbGVyTGF5ZXIgX3NldE5ld1RpbWVGb3JUaHVtYkNlbnRlclg6XSk6Ci0gICAgICAg
ICgtW01vdmllQ29udHJvbGxlckxheWVyIGhhbmRsZU1vdXNlRG93bjpdKToKLSAgICAgICAgKC1b
TW92aWVDb250cm9sbGVyTGF5ZXIgaGFuZGxlTW91c2VVcDpdKToKLSAgICAgICAgKC1bTW92aWVD
b250cm9sbGVyTGF5ZXIgaGFuZGxlTW91c2VEcmFnZ2VkOl0pOgotICAgICAgICAqIE5ldHNjYXBl
Q29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2lu
Lnhjb2RlcHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQ
bHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVn
aW4vUGF1c2UudGlmZjogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92
aWVQbHVnaW4vUGxheS50aWZmOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRp
b25Nb3ZpZVBsdWdpbi9TbGlkZXJUcmFja0NlbnRlci50aWZmOiBBZGRlZC4KLSAgICAgICAgKiBO
ZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9TbGlkZXJUcmFja0xlZnQudGlmZjogQWRk
ZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vU2xpZGVyVHJh
Y2tSaWdodC50aWZmOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3Zp
ZVBsdWdpbi9UaHVtYi50aWZmOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRp
b25Nb3ZpZVBsdWdpbi9tYWluLm06IEFkZGVkLgotICAgICAgICAoTlBfSW5pdGlhbGl6ZSk6Ci0g
ICAgICAgIChOUF9HZXRFbnRyeVBvaW50cyk6Ci0gICAgICAgIChOUF9TaHV0ZG93bik6Ci0gICAg
ICAgIChOUFBfTmV3KToKLSAgICAgICAgKE5QUF9EZXN0cm95KToKLSAgICAgICAgKE5QUF9TZXRX
aW5kb3cpOgotICAgICAgICAoTlBQX05ld1N0cmVhbSk6Ci0gICAgICAgIChOUFBfRGVzdHJveVN0
cmVhbSk6Ci0gICAgICAgIChOUFBfV3JpdGVSZWFkeSk6Ci0gICAgICAgIChOUFBfV3JpdGUpOgot
ICAgICAgICAoTlBQX1N0cmVhbUFzRmlsZSk6Ci0gICAgICAgIChOUFBfUHJpbnQpOgotICAgICAg
ICAoaGFuZGxlTW91c2VEb3duKToKLSAgICAgICAgKHRvZ2dsZVBsYXlQYXVzZSk6Ci0gICAgICAg
IChoYW5kbGVNb3VzZVVwKToKLSAgICAgICAgKGhhbmRsZU1vdXNlRHJhZ2dlZCk6Ci0gICAgICAg
IChoYW5kbGVNb3VzZUVudGVyZWQpOgotICAgICAgICAoaGFuZGxlTW91c2VFeGl0ZWQpOgotICAg
ICAgICAoaGFuZGxlS2V5RG93bik6Ci0gICAgICAgIChoYW5kbGVTY3JvbGxFdmVudCk6Ci0gICAg
ICAgIChOUFBfSGFuZGxlRXZlbnQpOgotICAgICAgICAoTlBQX1VSTE5vdGlmeSk6Ci0gICAgICAg
IChOUFBfR2V0VmFsdWUpOgotICAgICAgICAoTlBQX1NldFZhbHVlKToKLSAgICAgICAgKiBOZXRz
Y2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi90ZXN0Lmh0bWw6IEFkZGVkLgotCi0yMDA5LTA0
LTI3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KLQotICAgICAgICBVcGRhdGUgdGhlIGV4YW1wbGUgcGx1Zy1p
biBmb3IgbmV3IGNoYW5nZXMgdG8gdGhlIENvY29hIGV2ZW50IG1vZGVsLgotICAgICAgICAKLSAg
ICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL21haW4ubToKLSAgICAgICAgKGhhbmRsZURyYXcp
OgotICAgICAgICAoaGFuZGxlTW91c2VFdmVudCk6Ci0gICAgICAgIChOUFBfSGFuZGxlRXZlbnQp
OgotCi0yMDA5LTAzLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gRGVja2VyLgotCi0gICAgICAgIFVwZGF0ZSB0byBt
YXRjaCBuZXcgQVBJLgotICAgICAgICAKLSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1
Z2luL21haW4ubToKLSAgICAgICAgKE5QUF9OZXcpOgotICAgICAgICAoTlBQX0Rlc3Ryb3kpOgot
ICAgICAgICAoTlBQX1NldFdpbmRvdyk6Ci0gICAgICAgIChoYW5kbGVEcmF3KToKLSAgICAgICAg
KGludmFsaWRhdGVQbHVnaW4pOgotICAgICAgICAoaGFuZGxlRm9jdXNDaGFuZ2VkKToKLSAgICAg
ICAgKGhhbmRsZU1vdXNlTW92ZWQpOgotICAgICAgICAoaGFuZGxlTW91c2VEb3duKToKLSAgICAg
ICAgKGhhbmRsZVRleHRGaWVsZEtleURvd24pOgotICAgICAgICAoaGFuZGxlVGV4dElucHV0KToK
LSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6Ci0gICAgICAgIChOUFBfVVJMTm90aWZ5KToKLSAg
ICAgICAgKE5QUF9HZXRWYWx1ZSk6Ci0gICAgICAgIChOUFBfU2V0VmFsdWUpOgotCi0yMDA4LTEy
LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGhvbGQg
b24gdG8gdGhlIFFDQ29tcG9zaXRpb24uIEFsc28sIHRvZ2dsZSBiZXR3ZWVuIGEgZ29sZCBhbmQg
c2lsdmVyIGNvbXBhc3MgCi0gICAgICAgIHdoZW4gYSBtb3VzZSBidXR0b24gaXMgcHJlc3NlZC4K
LSAgICAgICAgCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL0NvbXBvc2l0
aW9uLnF0ejoKLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vbWFpbi5tOgot
ICAgICAgICAoTlBQX0Rlc3Ryb3kpOgotICAgICAgICAoaGFuZGxlTW91c2VDbGljayk6Ci0gICAg
ICAgIChOUFBfR2V0VmFsdWUpOgotCi0yMDA4LTEyLTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2ZXJ0IHNvbWUgYWNjaWRlbnRhbGx5IGNvbW1p
dHRlZCBjaGFuZ2VzLgotICAgICAgICAKLSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL05l
dHNjYXBlQ29jb2FQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAgICAgICAgKiBO
ZXRzY2FwZUNvY29hUGx1Z2luL21haW4ubToKLSAgICAgICAgKGhhbmRsZURyYXcpOgotICAgICAg
ICAoaGFuZGxlTW91c2VFdmVudCk6Ci0gICAgICAgIChOUFBfSGFuZGxlRXZlbnQpOgotCi0yMDA4
LTEyLTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2V2aW4gRGVja2VyLgotCi0gICAgICAgIEFkZCBhIHNhbXBsZSBDb3JlIEFu
aW1hdGlvbiBOUEFQSSBwbHVnLWluLgotICAgICAgICAKLSAgICAgICAgKiBOZXRzY2FwZUNvY29h
UGx1Z2luL05ldHNjYXBlQ29jb2FQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAg
ICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL21haW4ubToKLSAgICAgICAgKGhhbmRsZURyYXcp
OgotICAgICAgICAoaGFuZGxlTW91c2VFdmVudCk6Ci0gICAgICAgIChOUFBfSGFuZGxlRXZlbnQp
OgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbjogQWRkZWQuCi0gICAgICAg
ICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL0NvbXBvc2l0aW9uLnF0ejogQWRkZWQuCi0g
ICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL0VuZ2xpc2gubHByb2o6IEFkZGVk
LgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9FbmdsaXNoLmxwcm9qL0lu
Zm9QbGlzdC5zdHJpbmdzOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25Q
bHVnaW4vSW5mby5wbGlzdDogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9u
UGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi54Y29kZXByb2o6IEFkZGVkLgotICAg
ICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25Q
bHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2Nh
cGVDb3JlQW5pbWF0aW9uUGx1Z2luL21haW4ubTogQWRkZWQuCi0gICAgICAgIChOUF9Jbml0aWFs
aXplKToKLSAgICAgICAgKE5QX0dldEVudHJ5UG9pbnRzKToKLSAgICAgICAgKE5QX1NodXRkb3du
KToKLSAgICAgICAgKE5QUF9OZXcpOgotICAgICAgICAoTlBQX0Rlc3Ryb3kpOgotICAgICAgICAo
TlBQX1NldFdpbmRvdyk6Ci0gICAgICAgIChOUFBfTmV3U3RyZWFtKToKLSAgICAgICAgKE5QUF9E
ZXN0cm95U3RyZWFtKToKLSAgICAgICAgKE5QUF9Xcml0ZVJlYWR5KToKLSAgICAgICAgKE5QUF9X
cml0ZSk6Ci0gICAgICAgIChOUFBfU3RyZWFtQXNGaWxlKToKLSAgICAgICAgKE5QUF9QcmludCk6
Ci0gICAgICAgIChoYW5kbGVNb3VzZUNsaWNrKToKLSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6
Ci0gICAgICAgIChOUFBfVVJMTm90aWZ5KToKLSAgICAgICAgKE5QUF9HZXRWYWx1ZSk6Ci0gICAg
ICAgIChOUFBfU2V0VmFsdWUpOgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdp
bi90ZXN0Lmh0bWw6IEFkZGVkLgotCi0yMDA4LTEyLTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+Ci0KLSAgICAgICAgQnVnIDIyNTU1OiBTb3J0ICJjaGlsZHJlbiIgc2VjdGlv
bnMgaW4gWGNvZGUgcHJvamVjdCBmaWxlcwotCi0gICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTU+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCi0KLSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29jb2FQbHVn
aW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogU29ydGVkLgotCi0yMDA4LTA4LTIwICBKb3No
IEFhcyAgPGpvc2htb3pAZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGFuZCBsYW5kZWQg
YnkgQW5kZXJzLgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTYzNjM2PiAKLSAgICAgICAg
cmVuYW1lIE5QQ29jb2FFdmVudCdzICJldmVudCIgc3RydWN0IHRvICJkYXRhIiAoMjA0NDYpCi0K
LSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL21haW4ubToKLSAgICAgICAgKGhhbmRsZU1v
dXNlRXZlbnQpOgotICAgICAgICAoaGFuZGxlS2V5Ym9hcmRFdmVudCk6Ci0gICAgICAgIChOUFBf
SGFuZGxlRXZlbnQpOgotCi0yMDA4LTA1LTIyICBKb3NoIEFhcyAgPGpvc2htb3pAZ21haWwuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycy4KLQotICAgICAgICBVc2UgY29ycmVjdCBl
bnVtLgotICAgICAgICAKLSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL21haW4ubToKLSAg
ICAgICAgKE5QUF9OZXcpOgotICAgICAgICAqIE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vbWFp
bi5tOgotICAgICAgICAoTlBQX05ldyk6Ci0KLTIwMDgtMDUtMTIgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkuCi0KLSAg
ICAgICAgQWRkIGlucHV0IG1ldGhvZCB0ZXN0IHBsdWctaW4uCi0gICAgICAgIAotICAgICAgICAq
IE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW46IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlSW5w
dXRNZXRob2RQbHVnaW4vRW5nbGlzaC5scHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVJ
bnB1dE1ldGhvZFBsdWdpbi9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOiBBZGRlZC4K
LSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL0luZm8ucGxpc3Q6IEFkZGVkLgot
ICAgICAgICAqIE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vTmV0c2NhcGVJbnB1dE1ldGhvZFBs
dWdpbi54Y29kZXByb2o6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlSW5wdXRNZXRob2RQbHVn
aW4vTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBB
ZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL21haW4ubTogQWRkZWQu
Ci0gICAgICAgIChOUF9Jbml0aWFsaXplKToKLSAgICAgICAgKE5QX0dldEVudHJ5UG9pbnRzKToK
LSAgICAgICAgKE5QX1NodXRkb3duKToKLSAgICAgICAgKE5QUF9OZXcpOgotICAgICAgICAoTlBQ
X0Rlc3Ryb3kpOgotICAgICAgICAoTlBQX1NldFdpbmRvdyk6Ci0gICAgICAgIChOUFBfTmV3U3Ry
ZWFtKToKLSAgICAgICAgKE5QUF9EZXN0cm95U3RyZWFtKToKLSAgICAgICAgKE5QUF9Xcml0ZVJl
YWR5KToKLSAgICAgICAgKE5QUF9Xcml0ZSk6Ci0gICAgICAgIChOUFBfU3RyZWFtQXNGaWxlKToK
LSAgICAgICAgKE5QUF9QcmludCk6Ci0gICAgICAgIChoYW5kbGVEcmF3KToKLSAgICAgICAgKGlu
dmFsaWRhdGVQbHVnaW4pOgotICAgICAgICAoaGFuZGxlRm9jdXNDaGFuZ2VkKToKLSAgICAgICAg
KGhhbmRsZU1vdXNlTW92ZWQpOgotICAgICAgICAoaGFuZGxlTW91c2VEb3duKToKLSAgICAgICAg
KE5QUF9IYW5kbGVFdmVudCk6Ci0gICAgICAgIChOUFBfVVJMTm90aWZ5KToKLSAgICAgICAgKHNl
bGVjdGlvblJhbmdlKToKLSAgICAgICAgKE5QUF9JbnNlcnRUZXh0KToKLSAgICAgICAgKE5QUF9E
b0NvbW1hbmRCeVNlbGVjdG9yKToKLSAgICAgICAgKG1hcmtlZFRleHRBdHRyaWJ1dGVzKToKLSAg
ICAgICAgKE5QUF9TZXRNYXJrZWRUZXh0KToKLSAgICAgICAgKE5QUF9Vbm1hcmtUZXh0KToKLSAg
ICAgICAgKE5QUF9IYXNNYXJrZWRUZXh0KToKLSAgICAgICAgKE5QUF9BdHRyaWJ1dGVkU3Vic3Ry
aW5nRnJvbVJhbmdlKToKLSAgICAgICAgKE5QUF9NYXJrZWRSYW5nZSk6Ci0gICAgICAgIChOUFBf
U2VsZWN0ZWRSYW5nZSk6Ci0gICAgICAgIChOUFBfRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Up
OgotICAgICAgICAocGx1Z2luVGV4dElucHV0RnVuY3MpOgotICAgICAgICAoTlBQX0dldFZhbHVl
KToKLSAgICAgICAgKE5QUF9TZXRWYWx1ZSk6Ci0gICAgICAgICogTmV0c2NhcGVJbnB1dE1ldGhv
ZFBsdWdpbi90ZXN0Lmh0bWw6IEFkZGVkLgotCi0yMDA4LTA1LTA2ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWl0ei4KLQotICAg
ICAgICBBZGQgTlBOX1BvcFVwQ29udGV4dE1lbnUgZXhhbXBsZS4KLSAgICAgICAgCi0gICAgICAg
ICogTmV0c2NhcGVDb2NvYVBsdWdpbi9NZW51SGFuZGxlci5oOiBBZGRlZC4KLSAgICAgICAgKiBO
ZXRzY2FwZUNvY29hUGx1Z2luL01lbnVIYW5kbGVyLm06IEFkZGVkLgotICAgICAgICAoLVtNZW51
SGFuZGxlciBfb3BlblVSTDpdKToKLSAgICAgICAgKC1bTWVudUhhbmRsZXIgX2Rpc2FibGVkSXRl
bTpdKToKLSAgICAgICAgKC1bTWVudUhhbmRsZXIgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpd
KToKLSAgICAgICAgKC1bTWVudUhhbmRsZXIgaW5pdFdpdGhCcm93c2VyRnVuY3M6aW5zdGFuY2U6
XSk6Ci0gICAgICAgICgtW01lbnVIYW5kbGVyIGRlYWxsb2NdKToKLSAgICAgICAgKC1bTWVudUhh
bmRsZXIgbWVudV0pOgotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2Nv
YVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAgICAgICAqIE5ldHNjYXBlQ29j
b2FQbHVnaW4vbWFpbi5tOgotICAgICAgICAoTlBQX0Rlc3Ryb3kpOgotICAgICAgICAoaGFuZGxl
TW91c2VFdmVudCk6Ci0KLTIwMDgtMDUtMDYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBKb24sIFRpbSBhbmQgTWFyay4KLQotICAg
ICAgICBBZGQgYSBzYW1wbGUgTlBBUEkgcGx1Z2luIHRoYXQgdXNlcyB0aGUgQ29jb2EgZXZlbnQg
bW9kZWwuCi0KLSAgICAgICAgKiAuOiBBZGRlZC4KLSAgICAgICAgKiBDaGFuZ2VMb2c6IEFkZGVk
LgotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW46IEFkZGVkLgotICAgICAgICAqIE5ldHNj
YXBlQ29jb2FQbHVnaW4vRW5nbGlzaC5scHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVD
b2NvYVBsdWdpbi9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOiBBZGRlZC4KLSAgICAg
ICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL0luZm8ucGxpc3Q6IEFkZGVkLgotICAgICAgICAqIE5l
dHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2o6IEFkZGVkLgot
ICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2lu
L21haW4ubTogQWRkZWQuCi0gICAgICAgIChOUF9Jbml0aWFsaXplKToKLSAgICAgICAgKE5QX0dl
dEVudHJ5UG9pbnRzKToKLSAgICAgICAgKE5QX1NodXRkb3duKToKLSAgICAgICAgKE5QUF9OZXcp
OgotICAgICAgICAoTlBQX0Rlc3Ryb3kpOgotICAgICAgICAoTlBQX1NldFdpbmRvdyk6Ci0gICAg
ICAgIChOUFBfTmV3U3RyZWFtKToKLSAgICAgICAgKE5QUF9EZXN0cm95U3RyZWFtKToKLSAgICAg
ICAgKE5QUF9Xcml0ZVJlYWR5KToKLSAgICAgICAgKE5QUF9Xcml0ZSk6Ci0gICAgICAgIChOUFBf
U3RyZWFtQXNGaWxlKToKLSAgICAgICAgKE5QUF9QcmludCk6Ci0gICAgICAgIChoYW5kbGVEcmF3
KToKLSAgICAgICAgKGV2ZW50VHlwZSk6Ci0gICAgICAgIChpbnZhbGlkYXRlUGx1Z2luKToKLSAg
ICAgICAgKGhhbmRsZU1vdXNlRXZlbnQpOgotICAgICAgICAoaGFuZGxlS2V5Ym9hcmRFdmVudCk6
Ci0gICAgICAgIChOUFBfSGFuZGxlRXZlbnQpOgotICAgICAgICAoTlBQX1VSTE5vdGlmeSk6Ci0g
ICAgICAgIChOUFBfR2V0VmFsdWUpOgotICAgICAgICAoTlBQX1NldFZhbHVlKToKLSAgICAgICAg
KiBOZXRzY2FwZUNvY29hUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCkluZGV4OiBXZWJLaXRFeGFt
cGxlUGx1Z2lucy9OZXRzY2FwZUNvY29hUGx1Z2luL0luZm8ucGxpc3QKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb2NvYVBsdWdpbi9JbmZvLnBsaXN0CShyZXZp
c2lvbiA3NDMxNCkKKysrIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4v
SW5mby5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBw
bGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0
eUxpc3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0PgotCTxrZXk+Q0ZC
dW5kbGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgotCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgot
CTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0JPHN0cmluZz5OZXRzY2FwZUNvY29hUGx1
Z2luPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUljb25GaWxlPC9rZXk+Ci0JPHN0cmluZz48L3N0
cmluZz4KLQk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+Y29tLmFwcGxl
Lm5ldHNjYXBlY29jb2FwbHVnaW48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25h
cnlWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlUGFj
a2FnZVR5cGU8L2tleT4KLQk8c3RyaW5nPkJSUEw8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2hv
cnRWZXJzaW9uU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4xLjA8L3N0cmluZz4KLQk8a2V5PkNGQnVu
ZGxlU2lnbmF0dXJlPC9rZXk+Ci0JPHN0cmluZz4/Pz8/PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRs
ZVZlcnNpb248L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5nPgotCTxrZXk+V2ViUGx1Z2luRGVz
Y3JpcHRpb248L2tleT4KLQk8c3RyaW5nPlNpbXBsZSBOZXRzY2FwZSBwbHVnLWluIHRoYXQgZHJh
d3MgdXNpbmcgQ29yZUdyYXBoaWNzIGFuZCBoYW5kbGVzIGV2ZW50cyB1c2luZyB0aGUgQ29jb2Eg
ZXZlbnQgbW9kZWw8L3N0cmluZz4KLQk8a2V5PldlYlBsdWdpbk1JTUVUeXBlczwva2V5PgotCTxk
aWN0PgotCQk8a2V5PnRlc3QveC1uZXRzY2FwZS1jb2NvYS1wbHVnaW48L2tleT4KLQkJPGRpY3Q+
Ci0JCQk8a2V5PldlYlBsdWdpblR5cGVEZXNjcmlwdGlvbjwva2V5PgotCQkJPHN0cmluZz5OZXRz
Y2FwZSBDb2NvYSBQbHVnLWluPC9zdHJpbmc+Ci0JCTwvZGljdD4KLQk8L2RpY3Q+Ci0JPGtleT5X
ZWJQbHVnaW5OYW1lPC9rZXk+Ci0JPHN0cmluZz5OZXRzY2FwZSBDb2NvYSBQbHVnLWluPC9zdHJp
bmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2Nh
cGVDb2NvYVBsdWdpbi9NZW51SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQ
bHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vTWVudUhhbmRsZXIuaAkocmV2aXNpb24gNzQzMTQp
CisrKyBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvY29hUGx1Z2luL01lbnVIYW5kbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSBJTVBPUlRBTlQ6ICBUaGlz
IEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgaW4KLSBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBm
b2xsb3dpbmcgdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCAKLSBtb2RpZmljYXRp
b24gb3IgcmVkaXN0cmlidXRpb24gb2YgdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBh
Y2NlcHRhbmNlIG9mIHRoZXNlIAotIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRo
ZXNlIHRlcm1zLCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAotIHJlZGlz
dHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgotIAotIEluIGNvbnNpZGVyYXRpb24gb2YgeW91
ciBhZ3JlZW1lbnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3Qg
dG8gdGhlc2UgCi0gdGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1
c2l2ZSBsaWNlbnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbiAKLSB0aGlzIG9yaWdp
bmFsIEFwcGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9k
dWNlLCBtb2RpZnkgYW5kIAotIHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGgg
b3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKLSBmb3Jt
czsgcHJvdmlkZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBp
biBpdHMgZW50aXJldHkgYW5kIHdpdGhvdXQgCi0gbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0
YWluIHRoaXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGlu
IGFsbCAKLSBzdWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0
aGVyIHRoZSBuYW1lLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIAotIG9yIGxvZ29zIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gCi0gdGhlIEFwcGxlIFNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGZyb20gQXBwbGUuIEV4Y2VwdCBhcyBleHByZXNzbHkK
LSBzdGF0ZWQgaW4gdGhpcyBub3RpY2UsIG5vIG90aGVyIHJpZ2h0cyBvciBsaWNlbnNlcywgZXhw
cmVzcyBvciBpbXBsaWVkLCBhcmUgZ3JhbnRlZCBieSBBcHBsZQotIGhlcmVpbiwgaW5jbHVkaW5n
IGJ1dCBub3QgbGltaXRlZCB0byBhbnkgcGF0ZW50IHJpZ2h0cyB0aGF0IG1heSBiZSBpbmZyaW5n
ZWQgYnkgeW91ciAKLSBkZXJpdmF0aXZlIHdvcmtzIG9yIGJ5IG90aGVyIHdvcmtzIGluIHdoaWNo
IHRoZSBBcHBsZSBTb2Z0d2FyZSBtYXkgYmUgaW5jb3Jwb3JhdGVkLgotIAotIFRoZSBBcHBsZSBT
b2Z0d2FyZSBpcyBwcm92aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUg
TUFLRVMgTk8gV0FSUkFOVElFUywgCi0gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lU
SE9VVCBMSU1JVEFUSU9OIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTk9OLUlORlJJTkdFTUVO
VCwgCi0gTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSwgUkVHQVJESU5HIFRIRSBBUFBMRSBTT0ZUV0FSRSBPUiBJVFMgCi0gVVNFIEFORCBPUEVSQVRJ
T04gQUxPTkUgT1IgSU4gQ09NQklOQVRJT04gV0lUSCBZT1VSIFBST0RVQ1RTLgotIAotIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNULCBJ
TkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgCi0gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgCi0gT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSwgCi0gUkVQUk9EVUNUSU9OLCBN
T0RJRklDQVRJT04gQU5EL09SIERJU1RSSUJVVElPTiBPRiBUSEUgQVBQTEUgU09GVFdBUkUsIEhP
V0VWRVIgQ0FVU0VEIEFORCAKLSBXSEVUSEVSIFVOREVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UpLCBTVFJJQ1QgTElBQklMSVRZIE9SIAotIE9USEVSV0lT
RSwgRVZFTiBJRiBBUFBMRSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgotI2ltcG9ydCA8V2Vi
S2l0L25wZnVuY3Rpb25zLmg+Ci0KLUBpbnRlcmZhY2UgTWVudUhhbmRsZXIgOiBOU09iamVjdCB7
Ci0gICAgTlNNZW51ICptZW51OwotICAgIE5QTmV0c2NhcGVGdW5jcyAqYnJvd3NlckZ1bmNzOwot
ICAgIE5QUCBpbnN0YW5jZTsKLX0KLQotLSAoaWQpaW5pdFdpdGhCcm93c2VyRnVuY3M6KE5QTmV0
c2NhcGVGdW5jcyAqKXRoZUJyb3dzZXJGdW5jcyBpbnN0YW5jZTooTlBQKXRoZUluc3RhbmNlOwot
Ci0tIChOU01lbnUgKiltZW51OwotCi1AZW5kCkluZGV4OiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9O
ZXRzY2FwZUNvY29hUGx1Z2luL01lbnVIYW5kbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0RXhh
bXBsZVBsdWdpbnMvTmV0c2NhcGVDb2NvYVBsdWdpbi9NZW51SGFuZGxlci5tCShyZXZpc2lvbiA3
NDMxNCkKKysrIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vTWVudUhh
bmRsZXIubQkod29ya2luZyBjb3B5KQpAQCAtMSw5OSArMCwwIEBACi0vKgotIElNUE9SVEFOVDog
IFRoaXMgQXBwbGUgc29mdHdhcmUgaXMgc3VwcGxpZWQgdG8geW91IGJ5IEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBpbgotIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8g
dGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sIAotIG1vZGlm
aWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJlIGNvbnN0aXR1
dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UgCi0gdGVybXMuICBJZiB5b3UgZG8gbm90IGFncmVlIHdp
dGggdGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2RpZnkgb3IgCi0g
cmVkaXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCi0gCi0gSW4gY29uc2lkZXJhdGlvbiBv
ZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQgc3Vi
amVjdCB0byB0aGVzZSAKLSB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNvbmFsLCBub24t
ZXhjbHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRzIGluIAotIHRoaXMg
b3JpZ2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCBy
ZXByb2R1Y2UsIG1vZGlmeSBhbmQgCi0gcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSwg
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5IAot
IGZvcm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3
YXJlIGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKLSBtb2RpZmljYXRpb25zLCB5b3UgbXVz
dCByZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgZGlzY2xhaW1l
cnMgaW4gYWxsIAotIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4g
IE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MgCi0gb3IgbG9nb3Mg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAKLSB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJl
c3NseQotIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2Vz
LCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCi0gaGVyZWluLCBpbmNs
dWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGlu
ZnJpbmdlZCBieSB5b3VyIAotIGRlcml2YXRpdmUgd29ya3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4g
d2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBpbmNvcnBvcmF0ZWQuCi0gCi0gVGhlIEFw
cGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBB
UFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLCAKLSBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO
RyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklO
R0VNRU5ULCAKLSBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRXQVJFIE9SIElUUyAKLSBVU0UgQU5EIE9Q
RVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCi0gCi0g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCAKLSBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyAKLSBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFLCAKLSBSRVBST0RVQ1RJ
T04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FS
RSwgSE9XRVZFUiBDQVVTRUQgQU5EIAotIFdIRVRIRVIgVU5ERVIgVEhFT1JZIE9GIENPTlRSQUNU
LCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksIFNUUklDVCBMSUFCSUxJVFkgT1IgCi0gT1RI
RVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIk1lbnVIYW5kbGVyLmgiCi0KLUBpbXBs
ZW1lbnRhdGlvbiBNZW51SGFuZGxlcgotCi0tICh2b2lkKV9vcGVuVVJMOihpZClzZW5kZXIKLXsK
LSAgICBicm93c2VyRnVuY3MtPmdldHVybChpbnN0YW5jZSwgImh0dHA6Ly93d3cuYXBwbGUuY29t
LyIsICJfYmxhbmsiKTsKLX0KLQotLSAodm9pZClfZGlzYWJsZWRJdGVtOihpZClzZW5kZXIKLXsK
LSAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQKLX0KLQotLSAoQk9PTCl2YWxpZGF0
ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4pYW5J
dGVtCi17Ci0gICAgU0VMIHNlbCA9IFthbkl0ZW0gYWN0aW9uXTsKLSAgICAKLSAgICBpZiAoc2Vs
ID09IEBzZWxlY3Rvcihfb3BlblVSTDopKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAg
IGlmIChzZWwgPT0gQHNlbGVjdG9yKF9kaXNhYmxlZEl0ZW06KSkKLSAgICAgICAgcmV0dXJuIE5P
OwotICAgIAotICAgIHJldHVybiBOTzsKLX0KLQotLSAoaWQpaW5pdFdpdGhCcm93c2VyRnVuY3M6
KE5QTmV0c2NhcGVGdW5jcyAqKXRoZUJyb3dzZXJGdW5jcyBpbnN0YW5jZTooTlBQKXRoZUluc3Rh
bmNlOwotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgYnJvd3NlckZ1bmNzID0gdGhlQnJvd3NlckZ1bmNzOwotICAg
IGluc3RhbmNlID0gdGhlSW5zdGFuY2U7Ci0gICAgCi0gICAgLy8gQ3JlYXRlIHRoZSBtZW51Ci0g
ICAgbWVudSA9IFtbTlNNZW51IGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiTWVudSJdOwotICAgIAot
ICAgIE5TTWVudUl0ZW0gKml0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6
QCJPcGVuIFVSTCIgYWN0aW9uOkBzZWxlY3Rvcihfb3BlblVSTDopIGtleUVxdWl2YWxlbnQ6QCIi
XTsKLSAgICBbaXRlbSBzZXRUYXJnZXQ6c2VsZl07ICAgCi0gICAgW21lbnUgYWRkSXRlbTppdGVt
XTsgICAgCi0gICAgW2l0ZW0gcmVsZWFzZV07Ci0gICAgCi0gICAgaXRlbSA9IFtbTlNNZW51SXRl
bSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIkRpc2FibGVkIEl0ZW0iIGFjdGlvbjpAc2VsZWN0b3Io
X2Rpc2FibGVkSXRlbTopIGtleUVxdWl2YWxlbnQ6QCIiXTsKLSAgICBbaXRlbSBzZXRUYXJnZXQ6
c2VsZl07ICAgCi0gICAgW21lbnUgYWRkSXRlbTppdGVtXTsgICAgCi0gICAgW2l0ZW0gcmVsZWFz
ZV07Ci0gICAgCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAg
IFttZW51IHJlbGVhc2VdOwotICAgIAotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotCi0tIChO
U01lbnUgKiltZW51Ci17Ci0gICAgcmV0dXJuIG1lbnU7Ci19Ci0KLUBlbmQKSW5kZXg6IFdlYktp
dEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tCShyZXZpc2lv
biA3NDMxNCkKKysrIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vbWFp
bi5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2OCArMCwwIEBACi0vKgotIElNUE9SVEFOVDogIFRo
aXMgQXBwbGUgc29mdHdhcmUgaXMgc3VwcGxpZWQgdG8geW91IGJ5IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBpbgotIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gdGhl
IGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sIAotIG1vZGlmaWNh
dGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJlIGNvbnN0aXR1dGVz
IGFjY2VwdGFuY2Ugb2YgdGhlc2UgCi0gdGVybXMuICBJZiB5b3UgZG8gbm90IGFncmVlIHdpdGgg
dGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2RpZnkgb3IgCi0gcmVk
aXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCi0gCi0gSW4gY29uc2lkZXJhdGlvbiBvZiB5
b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQgc3ViamVj
dCB0byB0aGVzZSAKLSB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNvbmFsLCBub24tZXhj
bHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRzIGluIAotIHRoaXMgb3Jp
Z2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXBy
b2R1Y2UsIG1vZGlmeSBhbmQgCi0gcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSwgd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5IAotIGZv
cm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJl
IGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKLSBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCBy
ZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgZGlzY2xhaW1lcnMg
aW4gYWxsIAotIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4gIE5l
aXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MgCi0gb3IgbG9nb3Mgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSAKLSB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3Ns
eQotIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBl
eHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCi0gaGVyZWluLCBpbmNsdWRp
bmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJp
bmdlZCBieSB5b3VyIAotIGRlcml2YXRpdmUgd29ya3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4gd2hp
Y2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBpbmNvcnBvcmF0ZWQuCi0gCi0gVGhlIEFwcGxl
IFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBM
RSBNQUtFUyBOTyBXQVJSQU5USUVTLCAKLSBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBX
SVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VN
RU5ULCAKLSBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRXQVJFIE9SIElUUyAKLSBVU0UgQU5EIE9QRVJB
VElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCi0gCi0gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCAKLSBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyAKLSBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFLCAKLSBSRVBST0RVQ1RJT04s
IE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwg
SE9XRVZFUiBDQVVTRUQgQU5EIAotIFdIRVRIRVIgVU5ERVIgVEhFT1JZIE9GIENPTlRSQUNULCBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksIFNUUklDVCBMSUFCSUxJVFkgT1IgCi0gT1RIRVJX
SVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFdlYktpdC9ucGFwaS5oPgotI2ltcG9ydCA8
V2ViS2l0L25wZnVuY3Rpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvbnBydW50aW1lLmg+Ci0KLSNp
bXBvcnQgPENvY29hL0NvY29hLmg+Ci0KLSNpbXBvcnQgIk1lbnVIYW5kbGVyLmgiCi0KLS8vIEJy
b3dzZXIgZnVuY3Rpb24gdGFibGUKLXN0YXRpYyBOUE5ldHNjYXBlRnVuY3MqIGJyb3dzZXI7Ci0K
LS8vIFN0cnVjdHVyZSBmb3IgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLXR5cGVkZWYgc3RydWN0IFBs
dWdpbk9iamVjdAotewotICAgIE5QUCBucHA7Ci0gICAgCi0gICAgTlBXaW5kb3cgd2luZG93Owot
ICAgIAotICAgIE5TU3RyaW5nICpzdHJpbmc7Ci0gICAgYm9vbCBoYXNGb2N1czsKLSAgICBib29s
IG1vdXNlSXNJbnNpZGVQbHVnaW47Ci0gICAgCi0gICAgTWVudUhhbmRsZXIgKm1lbnVIYW5kbGVy
OwotfSBQbHVnaW5PYmplY3Q7Ci0KLU5QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5
cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmdu
W10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKLU5QRXJyb3IgTlBQX0Rlc3Ry
b3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpOwotTlBFcnJvciBOUFBfU2V0V2lu
ZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5kb3cqIHdpbmRvdyk7Ci1OUEVycm9yIE5QUF9OZXdTdHJl
YW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9v
bCBzZWVrYWJsZSwgdWludDE2X3QqIHN0eXBlKTsKLU5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0o
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24pOwotaW50MzJf
dCBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0pOwotaW50MzJf
dCBOUFBfV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IG9mZnNl
dCwgaW50MzJfdCBsZW4sIHZvaWQqIGJ1ZmZlcik7Ci12b2lkIE5QUF9TdHJlYW1Bc0ZpbGUoTlBQ
IGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBmbmFtZSk7Ci12b2lkIE5Q
UF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOwotaW50MTZfdCBO
UFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVudCk7Ci12b2lkIE5QUF9VUkxO
b3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiBVUkwsIE5QUmVhc29uIHJlYXNvbiwgdm9p
ZCogbm90aWZ5RGF0YSk7Ci1OUEVycm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZh
cmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yIE5QUF9TZXRWYWx1ZShOUFAg
aW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci0KLSNwcmFnbWEg
ZXhwb3J0IG9uCi0vLyBNYWNoLW8gZW50cnkgcG9pbnRzCi1OUEVycm9yIE5QX0luaXRpYWxpemUo
TlBOZXRzY2FwZUZ1bmNzICpicm93c2VyRnVuY3MpOwotTlBFcnJvciBOUF9HZXRFbnRyeVBvaW50
cyhOUFBsdWdpbkZ1bmNzICpwbHVnaW5GdW5jcyk7Ci12b2lkIE5QX1NodXRkb3duKHZvaWQpOwot
I3ByYWdtYSBleHBvcnQgb2ZmCi0KLU5QRXJyb3IgTlBfSW5pdGlhbGl6ZShOUE5ldHNjYXBlRnVu
Y3MqIGJyb3dzZXJGdW5jcykKLXsKLSAgICBicm93c2VyID0gYnJvd3NlckZ1bmNzOwotICAgIHJl
dHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBOUF9HZXRFbnRyeVBvaW50cyhOUFBs
dWdpbkZ1bmNzKiBwbHVnaW5GdW5jcykKLXsKLSAgICBwbHVnaW5GdW5jcy0+dmVyc2lvbiA9IDEx
OwotICAgIHBsdWdpbkZ1bmNzLT5zaXplID0gc2l6ZW9mKHBsdWdpbkZ1bmNzKTsKLSAgICBwbHVn
aW5GdW5jcy0+bmV3cCA9IE5QUF9OZXc7Ci0gICAgcGx1Z2luRnVuY3MtPmRlc3Ryb3kgPSBOUFBf
RGVzdHJveTsKLSAgICBwbHVnaW5GdW5jcy0+c2V0d2luZG93ID0gTlBQX1NldFdpbmRvdzsKLSAg
ICBwbHVnaW5GdW5jcy0+bmV3c3RyZWFtID0gTlBQX05ld1N0cmVhbTsKLSAgICBwbHVnaW5GdW5j
cy0+ZGVzdHJveXN0cmVhbSA9IE5QUF9EZXN0cm95U3RyZWFtOwotICAgIHBsdWdpbkZ1bmNzLT5h
c2ZpbGUgPSBOUFBfU3RyZWFtQXNGaWxlOwotICAgIHBsdWdpbkZ1bmNzLT53cml0ZXJlYWR5ID0g
TlBQX1dyaXRlUmVhZHk7Ci0gICAgcGx1Z2luRnVuY3MtPndyaXRlID0gKE5QUF9Xcml0ZVByb2NQ
dHIpTlBQX1dyaXRlOwotICAgIHBsdWdpbkZ1bmNzLT5wcmludCA9IE5QUF9QcmludDsKLSAgICBw
bHVnaW5GdW5jcy0+ZXZlbnQgPSBOUFBfSGFuZGxlRXZlbnQ7Ci0gICAgcGx1Z2luRnVuY3MtPnVy
bG5vdGlmeSA9IE5QUF9VUkxOb3RpZnk7Ci0gICAgcGx1Z2luRnVuY3MtPmdldHZhbHVlID0gTlBQ
X0dldFZhbHVlOwotICAgIHBsdWdpbkZ1bmNzLT5zZXR2YWx1ZSA9IE5QUF9TZXRWYWx1ZTsKLSAg
ICAKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLXZvaWQgTlBfU2h1dGRvd24odm9p
ZCkKLXsKLQotfQotCi1OUEVycm9yIE5QUF9OZXcoTlBNSU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAg
aW5zdGFuY2UsIHVpbnQxNl90IG1vZGUsIGludDE2X3QgYXJnYywgY2hhciogYXJnbltdLCBjaGFy
KiBhcmd2W10sIE5QU2F2ZWREYXRhKiBzYXZlZCkKLXsKLSAgICAvLyBDcmVhdGUgcGVyLWluc3Rh
bmNlIHN0b3JhZ2UKLSAgICBQbHVnaW5PYmplY3QgKm9iaiA9IChQbHVnaW5PYmplY3QgKiltYWxs
b2Moc2l6ZW9mKFBsdWdpbk9iamVjdCkpOwotICAgIGJ6ZXJvKG9iaiwgc2l6ZW9mKFBsdWdpbk9i
amVjdCkpOwotICAgIAotICAgIG9iai0+bnBwID0gaW5zdGFuY2U7Ci0gICAgaW5zdGFuY2UtPnBk
YXRhID0gb2JqOwotICAgIAotICAgIC8vIEFzayB0aGUgYnJvd3NlciBpZiBpdCBzdXBwb3J0cyB0
aGUgQ29yZUdyYXBoaWNzIGRyYXdpbmcgbW9kZWwKLSAgICBOUEJvb2wgc3VwcG9ydHNDb3JlR3Jh
cGhpY3M7Ci0gICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKGluc3RhbmNlLCBOUE5Wc3VwcG9ydHND
b3JlR3JhcGhpY3NCb29sLCAmc3VwcG9ydHNDb3JlR3JhcGhpY3MpICE9IE5QRVJSX05PX0VSUk9S
KQotICAgICAgICBzdXBwb3J0c0NvcmVHcmFwaGljcyA9IEZBTFNFOwotICAgIAotICAgIGlmICgh
c3VwcG9ydHNDb3JlR3JhcGhpY3MpCi0gICAgICAgIHJldHVybiBOUEVSUl9JTkNPTVBBVElCTEVf
VkVSU0lPTl9FUlJPUjsKLSAgICAKLSAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUg
Q29yZUdyYXBoaWNzIGRyYXdpbmcgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBicm93c2VyLT5zZXR2
YWx1ZShpbnN0YW5jZSwgTlBQVnBsdWdpbkRyYXdpbmdNb2RlbCwgKHZvaWQgKilOUERyYXdpbmdN
b2RlbENvcmVHcmFwaGljcyk7Ci0KLSAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUg
Q29jb2EgZXZlbnQgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBOUEJvb2wgc3VwcG9ydHNDb2NvYTsK
LSAgICBpZiAoYnJvd3Nlci0+Z2V0dmFsdWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0c0NvY29hQm9v
bCwgJnN1cHBvcnRzQ29jb2EpICE9IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBzdXBwb3J0c0Nv
Y29hID0gRkFMU0U7Ci0gICAgCi0gICAgaWYgKCFzdXBwb3J0c0NvY29hKQotICAgICAgICByZXR1
cm4gTlBFUlJfSU5DT01QQVRJQkxFX1ZFUlNJT05fRVJST1I7Ci0gICAgCi0gICAgYnJvd3Nlci0+
c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5FdmVudE1vZGVsLCAodm9pZCAqKU5QRXZlbnRN
b2RlbENvY29hKTsKLSAgICAKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJy
b3IgTlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpCi17Ci0gICAg
Ly8gRnJlZSBwZXItaW5zdGFuY2Ugc3RvcmFnZQotICAgIFBsdWdpbk9iamVjdCAqb2JqID0gaW5z
dGFuY2UtPnBkYXRhOwotICAgIAotICAgIFtvYmotPnN0cmluZyByZWxlYXNlXTsKLSAgICBbb2Jq
LT5tZW51SGFuZGxlciByZWxlYXNlXTsKLSAgICAKLSAgICBmcmVlKG9iaik7Ci0gICAgCi0gICAg
cmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9TZXRXaW5kb3coTlBQIGlu
c3RhbmNlLCBOUFdpbmRvdyogd2luZG93KQotewotICAgIFBsdWdpbk9iamVjdCAqb2JqID0gaW5z
dGFuY2UtPnBkYXRhOwotICAgIG9iai0+d2luZG93ID0gKndpbmRvdzsKLQotICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKLX0KLSAKLQotTlBFcnJvciBOUFBfTmV3U3RyZWFtKE5QUCBpbnN0YW5j
ZSwgTlBNSU1FVHlwZSB0eXBlLCBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsIHVp
bnQxNl90KiBzdHlwZSkKLXsKLSAgICAqc3R5cGUgPSBOUF9BU0ZJTEVPTkxZOwotICAgIHJldHVy
biBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIE5QUmVhc29uIHJlYXNvbikKLXsKLSAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7Ci19Ci0KLWludDMyX3QgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNl
LCBOUFN0cmVhbSogc3RyZWFtKQotewotICAgIHJldHVybiAwOwotfQotCi1pbnQzMl90IE5QUF9X
cml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyX3Qgb2Zmc2V0LCBpbnQz
Ml90IGxlbiwgdm9pZCogYnVmZmVyKQotewotICAgIHJldHVybiAwOwotfQotCi12b2lkIE5QUF9T
dHJlYW1Bc0ZpbGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBm
bmFtZSkKLXsKLX0KLQotdm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0
Zm9ybVByaW50KQotewotCi19Ci0KLXN0YXRpYyB2b2lkIGhhbmRsZURyYXcoUGx1Z2luT2JqZWN0
ICpvYmosIE5QQ29jb2FFdmVudCAqZXZlbnQpCi17Ci0gICAgTlNHcmFwaGljc0NvbnRleHQgKm9s
ZENvbnRleHQgPSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSByZXRhaW5dOwot
ICAgIAotICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0
IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6ZXZlbnQtPmRhdGEuZHJhdy5jb250ZXh0
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxpcHBlZDpZRVNdOwotCi0gICAgW05TR3JhcGhpY3NDb250
ZXh0IHNldEN1cnJlbnRDb250ZXh0OmNvbnRleHRdOwotICAgIAotICAgIE5TUmVjdCByZWN0ID0g
TlNNYWtlUmVjdCgwLCAwLCBvYmotPndpbmRvdy53aWR0aCwgb2JqLT53aW5kb3cuaGVpZ2h0KTsK
LSAgICAKLSAgICBbW05TQ29sb3IgbGlnaHRHcmF5Q29sb3JdIHNldF07Ci0gICAgW05TQmV6aWVy
UGF0aCBmaWxsUmVjdDpyZWN0XTsKLQotICAgIC8vIElmIHRoZSBwbHVnaW4gaGFzIGZvY3VzLCBk
cmF3IGEgZm9jdXMgaW5kaWNhdG9yCi0gICAgaWYgKG9iai0+aGFzRm9jdXMpIHsKLSAgICAgICAg
W1tOU0NvbG9yIGJsYWNrQ29sb3JdIHNldF07Ci0gICAgICAgIE5TQmV6aWVyUGF0aCAqcGF0aCA9
IFtOU0JlemllclBhdGggYmV6aWVyUGF0aFdpdGhSZWN0OnJlY3RdOwotICAgICAgICBbcGF0aCBz
ZXRMaW5lV2lkdGg6NV07Ci0gICAgICAgIFtwYXRoIHN0cm9rZV07Ci0gICAgfQotICAgIAotICAg
IFtvYmotPnN0cmluZyBkcmF3QXRQb2ludDpOU01ha2VQb2ludCgxMCwgMTApIHdpdGhBdHRyaWJ1
dGVzOm5pbF07Ci0gICAgCi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0
Om9sZENvbnRleHRdOwotfQotCi1zdGF0aWMgTlNTdHJpbmcgKmV2ZW50VHlwZShOUENvY29hRXZl
bnRUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgTlBDb2Nv
YUV2ZW50U2Nyb2xsV2hlZWw6Ci0gICAgICAgICAgICByZXR1cm4gQCJOUENvY29hRXZlbnRTY3Jv
bGxXaGVlbCI7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEb3duOgotICAgICAgICAg
ICAgcmV0dXJuIEAiTlBDb2NvYUV2ZW50TW91c2VEb3duIjsKLSAgICAgICAgY2FzZSBOUENvY29h
RXZlbnRNb3VzZVVwOgotICAgICAgICAgICAgcmV0dXJuIEAiTlBDb2NvYUV2ZW50TW91c2VVcCI7
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VNb3ZlZDoKLSAgICAg
ICAgICAgIHJldHVybiBAIk5QQ29jb2FFdmVudE1vdXNlTW92ZWQiOyAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgICAgIHJldHVybiBA
Ik5QQ29jb2FFdmVudE1vdXNlRHJhZ2dlZCI7ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTlBD
b2NvYUV2ZW50TW91c2VFbnRlcmVkOgotICAgICAgICAgICAgcmV0dXJuIEAiTlBDb2NvYUV2ZW50
TW91c2VFbnRlcmVkIjsgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRNb3Vz
ZUV4aXRlZDoKLSAgICAgICAgICAgIHJldHVybiBAIk5QQ29jb2FFdmVudE1vdXNlRXhpdGVkIjsK
LSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRLZXlEb3duOgotICAgICAgICAgICAgcmV0dXJuIEAi
TlBDb2NvYUV2ZW50S2V5RG93biI7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50S2V5VXA6Ci0g
ICAgICAgICAgICByZXR1cm4gQCJOUENvY29hRXZlbnRLZXlVcCI7Ci0gICAgICAgIGNhc2UgTlBD
b2NvYUV2ZW50RmxhZ3NDaGFuZ2VkOgotICAgICAgICAgICAgcmV0dXJuIEAiTlBDb2NvYUV2ZW50
RmxhZ3NDaGFuZ2VkIjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBAInVu
a25vd24iOwotICAgIH0gICAgCi19Ci0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVQbHVnaW4oUGx1
Z2luT2JqZWN0ICpvYmopCi17Ci0gICAgTlBSZWN0IHJlY3Q7Ci0gICAgcmVjdC5sZWZ0ID0gMDsK
LSAgICByZWN0LnRvcCA9IDA7Ci0gICAgcmVjdC5yaWdodCA9IG9iai0+d2luZG93LndpZHRoOwot
ICAgIHJlY3QuYm90dG9tID0gb2JqLT53aW5kb3cuaGVpZ2h0OwotICAgIAotICAgIGJyb3dzZXIt
PmludmFsaWRhdGVyZWN0KG9iai0+bnBwLCAmcmVjdCk7ICAgIAotfQotCi0KLXN0YXRpYyB2b2lk
IGhhbmRsZU1vdXNlRXZlbnQoUGx1Z2luT2JqZWN0ICpvYmosIE5QQ29jb2FFdmVudCAqZXZlbnQp
Ci17Ci0gICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
VHlwZTogJUBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb2RpZmllciBmbGFnczogMHgleFxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvb3JkaW5hdGVzOiAoJWcsICVnKVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1dHRvbiBu
dW1iZXI6ICVkXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ2xpY2sgY291bnQ6ICVkXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiRGVsdGE6ICglZywgJWcsICVnKSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFR5cGUoZXZlbnQt
PnR5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50LT5kYXRhLm1vdXNlLm1vZGlmaWVyRmxhZ3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ZGF0YS5tb3VzZS5wbHVnaW5Y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnQtPmRhdGEubW91c2UucGx1Z2luWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kYXRhLm1vdXNlLmJ1dHRvbk51bWJlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kYXRh
Lm1vdXNlLmNsaWNrQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBldmVudC0+ZGF0YS5tb3VzZS5kZWx0YVgsIGV2ZW50LT5kYXRhLm1vdXNl
LmRlbHRhWSwgZXZlbnQtPmRhdGEubW91c2UuZGVsdGFaXTsKLSAgICAKLSAgICAKLSAgICBbb2Jq
LT5zdHJpbmcgcmVsZWFzZV07Ci0gICAgb2JqLT5zdHJpbmcgPSBbc3RyaW5nIHJldGFpbl07Ci0g
Ci0gICAgaW52YWxpZGF0ZVBsdWdpbihvYmopOwotICAgIAotICAgIGlmIChldmVudC0+ZGF0YS5t
b3VzZS5idXR0b25OdW1iZXIgPT0gMSkgewotICAgICAgICBpZiAoIW9iai0+bWVudUhhbmRsZXIp
Ci0gICAgICAgICAgICBvYmotPm1lbnVIYW5kbGVyID0gW1tNZW51SGFuZGxlciBhbGxvY10gaW5p
dFdpdGhCcm93c2VyRnVuY3M6YnJvd3NlciBpbnN0YW5jZTpvYmotPm5wcF07Ci0gICAgICAgIAot
ICAgICAgICBicm93c2VyLT5wb3B1cGNvbnRleHRtZW51KG9iai0+bnBwLCAoTlBOU01lbnUgKilb
b2JqLT5tZW51SGFuZGxlciBtZW51XSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBoYW5kbGVL
ZXlib2FyZEV2ZW50KFBsdWdpbk9iamVjdCAqb2JqLCBOUENvY29hRXZlbnQgKmV2ZW50KQotewot
ICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlR5cGU6
ICVAXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiTW9kaWZpZXIgZmxhZ3M6IDB4JXhcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICJDaGFyYWN0ZXJzOiAlQFxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgIkNoYXJhY3RlcnMgaWdub3JpbmcgbW9kaWZpZXJzOiAlQFxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgIklzIGEgcmVwZWF0OiAlQFxuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgIktleSBjb2RlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBldmVudFR5cGUo
ZXZlbnQtPnR5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kYXRhLmtleS5t
b2RpZmllckZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRhdGEua2V5LmNo
YXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ZGF0YS5rZXkuY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRh
dGEua2V5LmlzQVJlcGVhdCA/IEAiWUVTIiA6IEAiTk8iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQtPmRhdGEua2V5LmtleUNvZGVdOwotICAgIAotICAgIAotICAgIFtvYmotPnN0cmlu
ZyByZWxlYXNlXTsKLSAgICBvYmotPnN0cmluZyA9IFtzdHJpbmcgcmV0YWluXTsKLSAgICAKLSAg
ICBpbnZhbGlkYXRlUGx1Z2luKG9iaik7Ci19Ci0KLWludDE2X3QgTlBQX0hhbmRsZUV2ZW50KE5Q
UCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpCi17Ci0gICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0
YW5jZS0+cGRhdGE7Ci0KLSAgICBOUENvY29hRXZlbnQgKmNvY29hRXZlbnQgPSBldmVudDsKLSAg
ICAKLSAgICBzd2l0Y2goY29jb2FFdmVudC0+dHlwZSkgewotICAgICAgICBjYXNlIE5QQ29jb2FF
dmVudEZvY3VzQ2hhbmdlZDoKLSAgICAgICAgICAgIG9iai0+aGFzRm9jdXMgPSBjb2NvYUV2ZW50
LT5kYXRhLmZvY3VzLmhhc0ZvY3VzOwotICAgICAgICAgICAgaW52YWxpZGF0ZVBsdWdpbihvYmop
OwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOUENv
Y29hRXZlbnREcmF3UmVjdDoKLSAgICAgICAgICAgIGhhbmRsZURyYXcob2JqLCBjb2NvYUV2ZW50
KTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAKLSAgICAgICAgY2FzZSBOUENvY29h
RXZlbnRLZXlEb3duOgotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudEtleVVwOgotICAgICAgICBj
YXNlIE5QQ29jb2FFdmVudEZsYWdzQ2hhbmdlZDoKLSAgICAgICAgICAgIGhhbmRsZUtleWJvYXJk
RXZlbnQob2JqLCBjb2NvYUV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEb3duOgotICAgICAgICBjYXNlIE5Q
Q29jb2FFdmVudE1vdXNlVXA6Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IE5QQ29j
b2FFdmVudE1vdXNlTW92ZWQgaXMgY3VycmVudGx5IGRpc2FibGVkIGluIG9yZGVyIHRvIHNlZSBv
dGhlciBldmVudHMgbW9yZSBjbGVhcmx5Ci0gICAgICAgIC8vIHdpdGhvdXQgImRyb3duaW5nIiBp
biBtb3VzZSBtb3ZlZCBldmVudHMuCi0vLyAgICAgICAgY2FzZSBOUENvY29hRXZlbnRNb3VzZU1v
dmVkOgotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRW50ZXJlZDoKLSAgICAgICAgY2Fz
ZSBOUENvY29hRXZlbnRNb3VzZUV4aXRlZDoKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRNb3Vz
ZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50U2Nyb2xsV2hlZWw6Ci0gICAgICAg
ICAgICBoYW5kbGVNb3VzZUV2ZW50KG9iaiwgY29jb2FFdmVudCk7Ci0gICAgICAgICAgICByZXR1
cm4gMTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgTlBQX1VSTE5vdGlm
eShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBu
b3RpZnlEYXRhKQotewotCi19Ci0KLU5QRXJyb3IgTlBQX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwg
TlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQotewotICAgIHJldHVybiBOUEVSUl9H
RU5FUklDX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5Q
TlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKLXsKLSAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKLX0KSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQ
bHVnaW4vdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNj
YXBlQ29jb2FQbHVnaW4vdGVzdC5odG1sCShyZXZpc2lvbiA3NDMxNCkKKysrIFdlYktpdEV4YW1w
bGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0
LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy1odG1s
NDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkNvY29hIE5l
dHNjYXBlIFBsdWctSW48L3RpdGxlPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2PgotICAgIDxlbWJl
ZCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdHlwZT0idGVzdC94LW5ldHNjYXBlLWNvY29hLXBs
dWdpbiI+PC9lbWJlZD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogV2ViS2l0RXhh
bXBsZVBsdWdpbnMvTmV0c2NhcGVDb2NvYVBsdWdpbi9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5z
dHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KSW5kZXg6IFdl
YktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdp
bi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQ
bHVnaW5zL05ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NDMxNCkKKysrIFdlYktpdEV4YW1wbGVQbHVnaW5z
L05ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0NyArMCwwIEBACi0vLyAhJCpVVEY4KiQh
Ci17Ci0JYXJjaGl2ZVZlcnNpb24gPSAxOwotCWNsYXNzZXMgPSB7Ci0JfTsKLQlvYmplY3RWZXJz
aW9uID0gNDI7Ci0Jb2JqZWN0cyA9IHsKLQotLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KLQkJMUE2MjRFNTkwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAv
KiBtYWluLm0gKi87IH07Ci0JCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrICovOyB9OwotCQkxQUFE
NkEwOTBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIubSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUQ2QTA4MEREMERDNTIwMDM5ODVEQSAvKiBN
ZW51SGFuZGxlci5tICovOyB9OwotCQk4RDVCNDlBODA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1Bs
aXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLzsgfTsK
LS8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGaWxlUmVmZXJl
bmNlIHNlY3Rpb24gKi8KLQkJMDg5QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xp
c2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IG1haW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2
MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29j
b2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQkxQUFENkEwNzBE
RDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVudUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFB
RDZBMDgwREQwREM1MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMub2JqYzsgcGF0aCA9IE1lbnVIYW5kbGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCThENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZUNvY29hUGx1Z2luLnBs
dWdpbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3Jh
cHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gTmV0c2NhcGVDb2NvYVBs
dWdpbi5wbHVnaW47IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCThENTc2
MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdDsg
cGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0vKiBFbmQgUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KLQkJOEQ1NzYzMTMwNDg2NzdFQTAwRUE3N0NEIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTYyNTA0MjBEQ0JDODFCMDA2
ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9u
ICovCi0JCTA4OUMxNjZBRkU4NDEyMDlDMDJBQUMwNyAvKiBOZXRzY2FwZUNvY29hUGx1Z2luICov
ID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkwOEZCNzdBRkZF
ODQxNzNEQzAyQUFDMDcgLyogU291cmNlICovLAotCQkJCTA4OUMxNjdDRkU4NDEyNDFDMDJBQUMw
NyAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJMDg5QzE2NzFGRTg0MTIwOUMwMkFBQzA3IC8qIEV4dGVy
bmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAqLywKLQkJCQkxOUMyOEZCNkZFOUQ1MkIyMTFD
QTJDQkIgLyogUHJvZHVjdHMgKi8sCi0JCQkpOwotCQkJbmFtZSA9IE5ldHNjYXBlQ29jb2FQbHVn
aW47Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwODlDMTY3MUZFODQxMjA5
QzAyQUFDMDcgLyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0gewotCQkJ
aXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkxQTYyNTA0MTBEQ0JDODFCMDA2
ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrICovLAotCQkJKTsKLQkJCW5hbWUgPSAiRXh0ZXJuYWwg
RnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzIjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07Ci0JCTA4OUMxNjdDRkU4NDEyNDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCThENTc2MzE3MDQ4Njc3RUEwMEVB
NzdDRCAvKiBJbmZvLnBsaXN0ICovLAotCQkJCThENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJ
bmZvUGxpc3Quc3RyaW5ncyAqLywKLQkJCSk7Ci0JCQluYW1lID0gUmVzb3VyY2VzOwotCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDhGQjc3QUZGRTg0MTczREMwMkFBQzA3IC8q
IFNvdXJjZSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
MUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAqLywKLQkJCQkxQUFENkEwNzBERDBE
QzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIuaCAqLywKLQkJCQkxQUFENkEwODBERDBEQzUyMDAz
OTg1REEgLyogTWVudUhhbmRsZXIubSAqLywKLQkJCSk7Ci0JCQluYW1lID0gU291cmNlOwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JC
IC8qIFByb2R1Y3RzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgK
LQkJCQk4RDU3NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVDb2NvYVBsdWdpbi5wbHVn
aW4gKi8sCi0JCQkpOwotCQkJbmFtZSA9IFByb2R1Y3RzOwotCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKLQkJfTsKLS8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWE5h
dGl2ZVRhcmdldCBzZWN0aW9uICovCi0JCThENTc2MzBEMDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRz
Y2FwZUNvY29hUGx1Z2luICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyOTgzMDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiTmV0c2NhcGVDb2NvYVBsdWdp
biIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQk4RDU3NjMxMTA0ODY3N0VBMDBFQTc3Q0Qg
LyogU291cmNlcyAqLywKLQkJCQk4RDU3NjMwRjA0ODY3N0VBMDBFQTc3Q0QgLyogUmVzb3VyY2Vz
ICovLAotCQkJCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdDRCAvKiBGcmFtZXdvcmtzICovLAotCQkJ
KTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJKTsK
LQkJCW5hbWUgPSBOZXRzY2FwZUNvY29hUGx1Z2luOwotCQkJcHJvZHVjdEluc3RhbGxQYXRoID0g
IiQoSE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCXByb2R1Y3ROYW1lID0gTmV0c2NhcGVDb2Nv
YVBsdWdpbjsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSA4RDU3NjMxNjA0ODY3N0VBMDBFQTc3Q0Qg
LyogTmV0c2NhcGVDb2NvYVBsdWdpbi5wbHVnaW4gKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZSI7Ci0JCX07Ci0vKiBFbmQgUEJYTmF0aXZlVGFyZ2V0
IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0JCTA4OUMxNjY5
RkU4NDEyMDlDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJCWlzYSA9IFBCWFBy
b2plY3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODcwODkwMkM1MzAwOEE5
RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiTmV0c2NhcGVD
b2NvYVBsdWdpbiIgKi87Ci0JCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwot
CQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwotCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5n
cyA9IDE7Ci0JCQlrbm93blJlZ2lvbnMgPSAoCi0JCQkJRW5nbGlzaCwKLQkJCQlKYXBhbmVzZSwK
LQkJCQlGcmVuY2gsCi0JCQkJR2VybWFuLAotCQkJKTsKLQkJCW1haW5Hcm91cCA9IDA4OUMxNjZB
RkU4NDEyMDlDMDJBQUMwNyAvKiBOZXRzY2FwZUNvY29hUGx1Z2luICovOwotCQkJcHJvamVjdERp
clBhdGggPSAiIjsKLQkJCXByb2plY3RSb290ID0gIiI7Ci0JCQl0YXJnZXRzID0gKAotCQkJCThE
NTc2MzBEMDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZUNvY29hUGx1Z2luICovLAotCQkJKTsK
LQkJfTsKLS8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUmVzb3Vy
Y2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBS
ZXNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCThENUI0OUE4MDQ4
NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkp
OwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBF
bmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFNvdXJj
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NEIC8qIFNv
dXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTYyNEU1OTBEQ0JDN0Y2
MDA2ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUFBRDZBMDkwREQwREM1MjAw
Mzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhTb3VyY2Vz
QnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9u
ICovCi0JCThENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLyA9
IHsKLQkJCWlzYSA9IFBCWFZhcmlhbnRHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTA4OUMx
NjdFRkU4NDEyNDFDMDJBQUMwNyAvKiBFbmdsaXNoICovLAotCQkJKTsKLQkJCW5hbWUgPSBJbmZv
UGxpc3Quc3RyaW5nczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0vKiBFbmQg
UEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLwotCQkxNDlDMjk4NDA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0J
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwotCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1
bGw7Ci0JCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87Ci0JCQkJR0NDX0VOQUJMRV9GSVhfQU5E
X0NPTlRJTlVFID0gWUVTOwotCQkJCUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLQkJCQlHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMID0gMDsKLQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7Ci0J
CQkJSU5TVEFMTF9QQVRIID0gIiQoSE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCQlQUk9EVUNU
X05BTUUgPSBOZXRzY2FwZUNvY29hUGx1Z2luOwotCQkJCVdSQVBQRVJfRVhURU5TSU9OID0gcGx1
Z2luOwotCQkJCVpFUk9fTElOSyA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07
Ci0JCTE0OUMyOTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFSQ0hTID0g
KAotCQkJCQlwcGMsCi0JCQkJCWkzODYsCi0JCQkJKTsKLQkJCQlHQ0NfREVCVUdHSU5HX1NZTUJP
TFMgPSBmdWxsOwotCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IE5POwotCQkJ
CUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLQkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsK
LQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7Ci0JCQkJSU5TVEFMTF9QQVRIID0gIiQo
SE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCQlQUk9EVUNUX05BTUUgPSBOZXRzY2FwZUNvY29h
UGx1Z2luOwotCQkJCVdSQVBQRVJfRVhURU5TSU9OID0gcGx1Z2luOwotCQkJfTsKLQkJCW5hbWUg
PSBSZWxlYXNlOwotCQl9OwotCQkxNDlDMjk4ODA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8g
PSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7
Ci0JCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVRfUFJFX1hDT0RFXzNfMSkiOwot
CQkJCUFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVF9QUkVfWENPREVfM18xID0gInBwYyBpMzg2IHBw
YzY0IHg4Nl82NCI7Ci0JCQkJQVJDSFNfU1RBTkRBUkRfNjRfQklUX1BSRV9YQ09ERV8zXzEgPSB4
ODZfNjQ7Ci0JCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci0JCQkJR0NDX1dB
Uk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwotCQkJCVBSRUJJTkRJTkcgPSBOTzsKLQkJCX07Ci0J
CQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTE0OUMyOTg5MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxl
YXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRp
bmdzID0gewotCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUX1BSRV9YQ09ERV8z
XzEpIjsKLQkJCQlBUkNIU19TVEFOREFSRF8zMl82NF9CSVRfUFJFX1hDT0RFXzNfMSA9ICJwcGMg
aTM4NiBwcGM2NCB4ODZfNjQiOwotCQkJCUFSQ0hTX1NUQU5EQVJEXzY0X0JJVF9QUkVfWENPREVf
M18xID0geDg2XzY0OwotCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwotCQkJ
CUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKLQkJCQlQUkVCSU5ESU5HID0gTk87Ci0J
CQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
LQkJMTQ5QzI5ODMwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXRzY2FwZUNvY29hUGx1Z2luIiAqLyA9IHsKLQkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTE0
OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkxNDlDMjk4NTA4OTAyQzUz
MDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9
OwotCQkxNDlDMjk4NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJOZXRzY2FwZUNvY29hUGx1Z2luIiAqLyA9IHsKLQkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTE0OUMy
OTg4MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkxNDlDMjk4OTA4OTAyQzUzMDA4
QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9Owot
LyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCX07Ci0Jcm9vdE9iamVjdCA9
IDA4OUMxNjY5RkU4NDEyMDlDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLX0KSW5kZXg6
IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL0lu
Zm8ucGxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3Jl
QW5pbWF0aW9uTW92aWVQbHVnaW4vSW5mby5wbGlzdAkocmV2aXNpb24gNzQzMTQpCisrKyBXZWJL
aXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9JbmZvLnBs
aXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFRE
IFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0x
LjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5DRkJ1bmRsZURl
dmVsb3BtZW50UmVnaW9uPC9rZXk+Ci0JPHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+Ci0JPGtleT5D
RkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlQ29yZUFuaW1hdGlvbk1v
dmllUGx1Z2luPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUljb25GaWxlPC9rZXk+Ci0JPHN0cmlu
Zz48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+Y29t
LmFwcGxlLm5ldHNjYXBlY29yZWFuaW1hdGlvbm1vdmllcGx1Z2luPC9zdHJpbmc+Ci0JPGtleT5D
RkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVyc2lvbjwva2V5PgotCTxzdHJpbmc+Ni4wPC9zdHJpbmc+
Ci0JPGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+Ci0JPHN0cmluZz5CUlBMPC9zdHJpbmc+
Ci0JPGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+MS4wPC9z
dHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVNpZ25hdHVyZTwva2V5PgotCTxzdHJpbmc+Pz8/Pzwvc3Ry
aW5nPgotCTxrZXk+Q0ZCdW5kbGVWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz4xLjA8L3N0cmluZz4K
LQk8a2V5PldlYlBsdWdpbkRlc2NyaXB0aW9uPC9rZXk+Ci0JPHN0cmluZz5TaW1wbGUgTmV0c2Nh
cGUgcGx1Zy1pbiB0aGF0IGRyYXdzIHVzaW5nIENvcmUgQW5pbWF0aW9uIGFuZCBoYW5kbGVzIGV2
ZW50cyB1c2luZyB0aGUgQ29jb2EgZXZlbnQgbW9kZWw8L3N0cmluZz4KLQk8a2V5PldlYlBsdWdp
bk1JTUVUeXBlczwva2V5PgotCTxkaWN0PgotCQk8a2V5PnRlc3QveC1uZXRzY2FwZS1jb3JlLWFu
aW1hdGlvbi1tb3ZpZS1wbHVnaW48L2tleT4KLQkJPGRpY3Q+Ci0JCQk8a2V5PldlYlBsdWdpblR5
cGVEZXNjcmlwdGlvbjwva2V5PgotCQkJPHN0cmluZz5OZXRzY2FwZSBDb3JlIEFuaW1hdGlvbiBN
b3ZpZSBQbHVnLWluPC9zdHJpbmc+Ci0JCTwvZGljdD4KLQk8L2RpY3Q+Ci0JPGtleT5XZWJQbHVn
aW5OYW1lPC9rZXk+Ci0JPHN0cmluZz5OZXRzY2FwZSBDb3JlIEFuaW1hdGlvbiBNb3ZpZSBQbHVn
LWluPC9zdHJpbmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdp
bnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTW92aWVDb250cm9sbGVyTGF5ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRp
b25Nb3ZpZVBsdWdpbi9Nb3ZpZUNvbnRyb2xsZXJMYXllci5oCShyZXZpc2lvbiA3NDMxNCkKKysr
IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL01v
dmllQ29udHJvbGxlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzUgKzAsMCBAQAotLyoK
LSAgICAgRmlsZTogTW92aWVDb250cm9sbGVyTGF5ZXIuaAotIAotIERpc2NsYWltZXI6IElNUE9S
VEFOVDogIFRoaXMgQXBwbGUgc29mdHdhcmUgaXMgc3VwcGxpZWQgdG8geW91IGJ5IEFwcGxlCi0g
SW5jLiAoIkFwcGxlIikgaW4gY29uc2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byB0aGUg
Zm9sbG93aW5nCi0gdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCBtb2RpZmljYXRp
b24gb3IgcmVkaXN0cmlidXRpb24gb2YKLSB0aGlzIEFwcGxlIHNvZnR3YXJlIGNvbnN0aXR1dGVz
IGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMuICBJZiB5b3UgZG8KLSBub3QgYWdyZWUgd2l0aCB0
aGVzZSB0ZXJtcywgcGxlYXNlIGRvIG5vdCB1c2UsIGluc3RhbGwsIG1vZGlmeSBvcgotIHJlZGlz
dHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgotIAotIEluIGNvbnNpZGVyYXRpb24gb2YgeW91
ciBhZ3JlZW1lbnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kCi0gc3ViamVj
dCB0byB0aGVzZSB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNvbmFsLCBub24tZXhjbHVz
aXZlCi0gbGljZW5zZSwgdW5kZXIgQXBwbGUncyBjb3B5cmlnaHRzIGluIHRoaXMgb3JpZ2luYWwg
QXBwbGUgc29mdHdhcmUgKHRoZQotICJBcHBsZSBTb2Z0d2FyZSIpLCB0byB1c2UsIHJlcHJvZHVj
ZSwgbW9kaWZ5IGFuZCByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlCi0gU29mdHdhcmUsIHdpdGggb3Ig
d2l0aG91dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSBmb3JtczsKLSBw
cm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJlIGluIGl0
cyBlbnRpcmV0eSBhbmQKLSB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIHlvdSBtdXN0IHJldGFpbiB0
aGlzIG5vdGljZSBhbmQgdGhlIGZvbGxvd2luZwotIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFs
bCBzdWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuCi0gTmVpdGhlciB0
aGUgbmFtZSwgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcyBvciBsb2dvcyBvZiBBcHBsZSBJbmMu
IG1heQotIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGUgQXBwbGUgU29mdHdhcmUKLSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbiBmcm9tIEFwcGxlLiAgRXhjZXB0IGFzCi0gZXhwcmVzc2x5IHN0YXRlZCBpbiB0aGlz
IG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yCi0gaW1wbGll
ZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVk
IHRvIGFueQotIHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5mcmluZ2VkIGJ5IHlvdXIgZGVy
aXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlcgotIHdvcmtzIGluIHdoaWNoIHRoZSBBcHBsZSBTb2Z0
d2FyZSBtYXkgYmUgaW5jb3Jwb3JhdGVkLgotIAotIFRoZSBBcHBsZSBTb2Z0d2FyZSBpcyBwcm92
aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUKLSBNQUtFUyBOTyBXQVJS
QU5USUVTLCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04K
LSBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUwotIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUkVHQVJESU5HIFRI
RSBBUFBMRSBTT0ZUV0FSRSBPUiBJVFMgVVNFIEFORAotIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBD
T01CSU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCi0gCi0gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwKLSBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFLCBSRVBST0RVQ1RJT04sCi0gTU9ESUZJQ0FUSU9OIEFORC9P
UiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBIT1dFVkVSIENBVVNFRAotIEFO
RCBXSEVUSEVSIFVOREVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UpLAotIFNUUklDVCBMSUFCSUxJVFkgT1IgT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhB
UyBCRUVOIEFEVklTRUQgT0YgVEhFCi0gUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gCi0g
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAKLSAq
LwotCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1AY2xhc3MgUVRNb3Zp
ZTsKLQotQGludGVyZmFjZSBNb3ZpZUNvbnRyb2xsZXJMYXllciA6IENBTGF5ZXIgewotICAgIENH
SW1hZ2VSZWYgX3BsYXlJbWFnZTsKLSAgICBDR0ltYWdlUmVmIF9wYXVzZUltYWdlOwotICAgIAot
ICAgIENHSW1hZ2VSZWYgX3NsaWRlclRyYWNrTGVmdDsKLSAgICBDR0ltYWdlUmVmIF9zbGlkZXJU
cmFja1JpZ2h0OwotICAgIENHSW1hZ2VSZWYgX3NsaWRlclRyYWNrQ2VudGVyOwotICAgIAotICAg
IENHSW1hZ2VSZWYgX3RodW1iOwotICAgIAotICAgIFFUTW92aWUgKl9tb3ZpZTsKLSAgICBOU1Rp
bWVyICpfdXBkYXRlVGltZVRpbWVyOwotICAgIAotICAgIEJPT0wgX3dhc1BsYXlpbmdCZWZvcmVN
b3VzZURvd247Ci0gICAgQk9PTCBfaXNTY3J1YmJpbmc7Ci0gICAgQ0dGbG9hdCBfbW91c2VEb3du
WERlbHRhOwotfQotCi0tICh2b2lkKXNldE1vdmllOihRVE1vdmllICopbW92aWU7Ci0KLS0gKHZv
aWQpaGFuZGxlTW91c2VEb3duOihDR1BvaW50KXBvaW50OwotLSAodm9pZCloYW5kbGVNb3VzZVVw
OihDR1BvaW50KXBvaW50OwotLSAodm9pZCloYW5kbGVNb3VzZURyYWdnZWQ6KENHUG9pbnQpcG9p
bnQ7Ci0KLUBlbmQKSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1h
dGlvbk1vdmllUGx1Z2luL01vdmllQ29udHJvbGxlckxheWVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTW92aWVD
b250cm9sbGVyTGF5ZXIubQkocmV2aXNpb24gNzQzMTQpCisrKyBXZWJLaXRFeGFtcGxlUGx1Z2lu
cy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9Nb3ZpZUNvbnRyb2xsZXJMYXllci5t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1NSArMCwwIEBACi0vKgotICAgICBGaWxlOiBNb3ZpZUNv
bnRyb2xsZXJMYXllci5tCi0gCi0gRGlzY2xhaW1lcjogSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBz
b2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUKLSBJbmMuICgiQXBwbGUiKSBpbiBj
b25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcKLSB0ZXJtcywg
YW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlv
biBvZgotIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGVz
ZSB0ZXJtcy4gIElmIHlvdSBkbwotIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBwbGVhc2Ug
ZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yCi0gcmVkaXN0cmlidXRlIHRoaXMgQXBwbGUg
c29mdHdhcmUuCi0gCi0gSW4gY29uc2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlk
ZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQKLSBzdWJqZWN0IHRvIHRoZXNlIHRlcm1zLCBB
cHBsZSBncmFudHMgeW91IGEgcGVyc29uYWwsIG5vbi1leGNsdXNpdmUKLSBsaWNlbnNlLCB1bmRl
ciBBcHBsZSdzIGNvcHlyaWdodHMgaW4gdGhpcyBvcmlnaW5hbCBBcHBsZSBzb2Z0d2FyZSAodGhl
Ci0gIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kIHJlZGlz
dHJpYnV0ZSB0aGUgQXBwbGUKLSBTb2Z0d2FyZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv
bnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5IGZvcm1zOwotIHByb3ZpZGVkIHRoYXQgaWYgeW91
IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUgaW4gaXRzIGVudGlyZXR5IGFuZAotIHdp
dGhvdXQgbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNlIGFuZCB0aGUg
Zm9sbG93aW5nCi0gdGV4dCBhbmQgZGlzY2xhaW1lcnMgaW4gYWxsIHN1Y2ggcmVkaXN0cmlidXRp
b25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4KLSBOZWl0aGVyIHRoZSBuYW1lLCB0cmFkZW1hcmtz
LCBzZXJ2aWNlIG1hcmtzIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5Ci0gYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoZSBBcHBsZSBTb2Z0d2Fy
ZQotIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGZyb20gQXBwbGUu
ICBFeGNlcHQgYXMKLSBleHByZXNzbHkgc3RhdGVkIGluIHRoaXMgbm90aWNlLCBubyBvdGhlciBy
aWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3IKLSBpbXBsaWVkLCBhcmUgZ3JhbnRlZCBieSBB
cHBsZSBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55Ci0gcGF0ZW50IHJp
Z2h0cyB0aGF0IG1heSBiZSBpbmZyaW5nZWQgYnkgeW91ciBkZXJpdmF0aXZlIHdvcmtzIG9yIGJ5
IG90aGVyCi0gd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBpbmNvcnBv
cmF0ZWQuCi0gCi0gVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxlIG9uIGFu
ICJBUyBJUyIgYmFzaXMuICBBUFBMRQotIE1BS0VTIE5PIFdBUlJBTlRJRVMsIEVYUFJFU1MgT1Ig
SU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTgotIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCi0g
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRXQVJFIE9S
IElUUyBVU0UgQU5ECi0gT1BFUkFUSU9OIEFMT05FIE9SIElOIENPTUJJTkFUSU9OIFdJVEggWU9V
UiBQUk9EVUNUUy4KLSAKLSBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFO
WSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRBTAotIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gSU5URVJSVVBUSU9OKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UsIFJFUFJPRFVDVElPTiwKLSBNT0RJRklDQVRJT04gQU5EL09SIERJU1RSSUJVVElPTiBPRiBU
SEUgQVBQTEUgU09GVFdBUkUsIEhPV0VWRVIgQ0FVU0VECi0gQU5EIFdIRVRIRVIgVU5ERVIgVEhF
T1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksCi0gU1RSSUNUIExJ
QUJJTElUWSBPUiBPVEhFUldJU0UsIEVWRU4gSUYgQVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBU
SEUKLSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAKLSBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIAotICovCi0KLSNpbXBvcnQgIk1vdmll
Q29udHJvbGxlckxheWVyLmgiCi0KLSNpbXBvcnQgPFFUS2l0L1FUS2l0Lmg+Ci0KLUBpbnRlcmZh
Y2UgTW92aWVDb250cm9sbGVyTGF5ZXIgKCkKLS0gKEJPT0wpX2lzUGxheWluZzsKLS0gKE5TVGlt
ZUludGVydmFsKV9jdXJyZW50VGltZTsKLS0gKE5TVGltZUludGVydmFsKV9kdXJhdGlvbjsKLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIE1vdmllQ29udHJvbGxlckxheWVyCi0KLXN0YXRpYyBDR0lt
YWdlUmVmIGNyZWF0ZUltYWdlTmFtZWQoTlNTdHJpbmcgKm5hbWUpCi17Ci0gICAgTlNVUkwgKnVy
bCA9IFtbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W01vdmllQ29udHJvbGxlckxheWVyIGNsYXNz
XV0gVVJMRm9yUmVzb3VyY2U6bmFtZSB3aXRoRXh0ZW5zaW9uOkAidGlmZiJdOwotICAgIAotICAg
IGlmICghdXJsKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKLSAgICBDR0ltYWdlU291cmNl
UmVmIGltYWdlU291cmNlID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhVUkwoKENGVVJMUmVmKXVy
bCwgTlVMTCk7Ci0gICAgaWYgKCFpbWFnZVNvdXJjZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0g
ICAgCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5k
ZXgoaW1hZ2VTb3VyY2UsIDAsIE5VTEwpOwotICAgIENGUmVsZWFzZShpbWFnZVNvdXJjZSk7Ci0g
ICAgCi0gICAgcmV0dXJuIGltYWdlOwotfQotCi0tIChpZClpbml0Ci17Ci0gICAgaWYgKHNlbGYg
PSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgc2VsZi5uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5n
ZSA9IFlFUzsKLSAgICAgICAgc2VsZi5mcmFtZSA9IENHUmVjdE1ha2UoMCwgMCwgMCwgMjUpOwot
ICAgICAgICBzZWxmLmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZTsKLSAg
ICAgICAgCi0gICAgICAgIF9wbGF5SW1hZ2UgPSBjcmVhdGVJbWFnZU5hbWVkKEAiUGxheSIpOwot
ICAgICAgICBfcGF1c2VJbWFnZSA9IGNyZWF0ZUltYWdlTmFtZWQoQCJQYXVzZSIpOwotICAgICAg
ICBfc2xpZGVyVHJhY2tMZWZ0ID0gY3JlYXRlSW1hZ2VOYW1lZChAIlNsaWRlclRyYWNrTGVmdCIp
OwotICAgICAgICBfc2xpZGVyVHJhY2tSaWdodCA9IGNyZWF0ZUltYWdlTmFtZWQoQCJTbGlkZXJU
cmFja1JpZ2h0Iik7Ci0gICAgICAgIF9zbGlkZXJUcmFja0NlbnRlciA9IGNyZWF0ZUltYWdlTmFt
ZWQoQCJTbGlkZXJUcmFja0NlbnRlciIpOwotICAgICAgICAKLSAgICAgICAgX3RodW1iID0gY3Jl
YXRlSW1hZ2VOYW1lZChAIlRodW1iIik7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzZWxmOwot
fQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBDR0ltYWdlUmVsZWFzZShfcGxheUltYWdlKTsK
LSAgICBDR0ltYWdlUmVsZWFzZShfcGF1c2VJbWFnZSk7Ci0gICAgCi0gICAgQ0dJbWFnZVJlbGVh
c2UoX3NsaWRlclRyYWNrTGVmdCk7Ci0gICAgQ0dJbWFnZVJlbGVhc2UoX3NsaWRlclRyYWNrUmln
aHQpOwotICAgIENHSW1hZ2VSZWxlYXNlKF9zbGlkZXJUcmFja0NlbnRlcik7Ci0gICAgCi0gICAg
Q0dJbWFnZVJlbGVhc2UoX3RodW1iKTsKLSAgICAKLSAgICBbc2VsZiBzZXRNb3ZpZTpuaWxdOwot
ICAgIFtfdXBkYXRlVGltZVRpbWVyIGludmFsaWRhdGVdOwotCi0gICAgW3N1cGVyIGRlYWxsb2Nd
OwotfQotCi0jcHJhZ21hIG1hcmsgRHJhd2luZwotCi0tIChDR1JlY3QpX3BsYXlQYXVzZUJ1dHRv
blJlY3QKLXsKLSAgICByZXR1cm4gQ0dSZWN0TWFrZSgwLCAwLCAyNSwgMjUpOwotfQotCi0tIChD
R1JlY3QpX3NsaWRlclJlY3QKLXsKLSAgICBDR0Zsb2F0IHNsaWRlcllQb3NpdGlvbiA9IChzZWxm
LmJvdW5kcy5zaXplLmhlaWdodCAtIENHSW1hZ2VHZXRIZWlnaHQoX3NsaWRlclRyYWNrTGVmdCkp
IC8gMi4wOwotICAgIENHRmxvYXQgcGxheVBhdXNlQnV0dG9uV2lkdGggPSBbc2VsZiBfcGxheVBh
dXNlQnV0dG9uUmVjdF0uc2l6ZS53aWR0aDsKLSAgICAKLSAgICByZXR1cm4gQ0dSZWN0TWFrZShw
bGF5UGF1c2VCdXR0b25XaWR0aCwgc2xpZGVyWVBvc2l0aW9uLCAKLSAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmJvdW5kcy5zaXplLndpZHRoIC0gcGxheVBhdXNlQnV0dG9uV2lkdGggLSA3LCBD
R0ltYWdlR2V0SGVpZ2h0KF9zbGlkZXJUcmFja0xlZnQpKTsKLX0KLQotLSAoQ0dSZWN0KV9zbGlk
ZXJUaHVtYlJlY3QKLXsKLSAgICBDR1JlY3Qgc2xpZGVyUmVjdCA9IFtzZWxmIF9zbGlkZXJSZWN0
XTsKLQotICAgIENHRmxvYXQgZnJhY3Rpb24gPSAwLjA7Ci0gICAgaWYgKF9tb3ZpZSkKLSAgICAg
ICAgZnJhY3Rpb24gPSBbc2VsZiBfY3VycmVudFRpbWVdIC8gW3NlbGYgX2R1cmF0aW9uXTsKLSAg
Ci0gICAgQ0dGbG9hdCB4ID0gZnJhY3Rpb24gKiAoQ0dSZWN0R2V0V2lkdGgoc2xpZGVyUmVjdCkg
LSBDR0ltYWdlR2V0V2lkdGgoX3RodW1iKSk7Ci0gICAgCi0gICAgcmV0dXJuIENHUmVjdE1ha2Uo
Q0dSZWN0R2V0TWluWChzbGlkZXJSZWN0KSArIHgsIENHUmVjdEdldE1pblkoc2xpZGVyUmVjdCkg
LSAxLCAKLSAgICAgICAgICAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgoX3RodW1iKSwgQ0dJ
bWFnZUdldEhlaWdodChfdGh1bWIpKTsKLX0KLQotLSAoQ0dSZWN0KV9pbm5lclNsaWRlclJlY3QK
LXsKLSAgICByZXR1cm4gQ0dSZWN0SW5zZXQoW3NlbGYgX3NsaWRlclJlY3RdLCBDR1JlY3RHZXRX
aWR0aChbc2VsZiBfc2xpZGVyVGh1bWJSZWN0XSkgLyAyLCAwKTsKLX0KLQotLSAodm9pZClfZHJh
d1BsYXlQYXVzZUJ1dHRvbkluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKLXsKLSAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgW3NlbGYgX3BsYXlQYXVzZUJ1dHRvblJlY3RdLCBb
c2VsZiBfaXNQbGF5aW5nXSA/IF9wYXVzZUltYWdlIDogX3BsYXlJbWFnZSk7Ci19Ci0KLS0gKHZv
aWQpX2RyYXdTbGlkZXJJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0Ci17Ci0gICAgLy8g
RHJhdyB0aGUgdGh1bWIKLSAgICBDR1JlY3Qgc2xpZGVyVGh1bWJSZWN0ID0gW3NlbGYgX3NsaWRl
clRodW1iUmVjdF07Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIHNsaWRlclRodW1i
UmVjdCwgX3RodW1iKTsKLSAgICAKLSAgICBDR1JlY3Qgc2xpZGVyUmVjdCA9IFtzZWxmIF9zbGlk
ZXJSZWN0XTsKLSAgICAKLSAgICAvLyBEcmF3IGxlZnQgcGFydAotICAgIENHUmVjdCBzbGlkZXJM
ZWZ0VHJhY2tSZWN0ID0gQ0dSZWN0TWFrZShDR1JlY3RHZXRNaW5YKHNsaWRlclJlY3QpLCBDR1Jl
Y3RHZXRNaW5ZKHNsaWRlclJlY3QpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0dJbWFnZUdldFdpZHRoKF9zbGlkZXJUcmFja0xlZnQpLCBDR0ltYWdlR2V0
SGVpZ2h0KF9zbGlkZXJUcmFja0xlZnQpKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dCwgc2xpZGVyTGVmdFRyYWNrUmVjdCwgX3NsaWRlclRyYWNrTGVmdCk7Ci0gICAgCi0gICAgLy8g
RHJhdyBjZW50ZXIgcGFydAotICAgIENHUmVjdCBzbGlkZXJDZW50ZXJUcmFja1JlY3QgPSBDR1Jl
Y3RJbnNldChzbGlkZXJSZWN0LCBDR0ltYWdlR2V0V2lkdGgoX3NsaWRlclRyYWNrTGVmdCksIDAp
OwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBzbGlkZXJDZW50ZXJUcmFja1JlY3Qs
IF9zbGlkZXJUcmFja0NlbnRlcik7Ci0gICAgCi0gICAgLy8gRHJhdyByaWdodCBwYXJ0Ci0gICAg
Q0dSZWN0IHNsaWRlclJpZ2h0VHJhY2tSZWN0ID0gQ0dSZWN0TWFrZShDR1JlY3RHZXRNYXhYKHNs
aWRlckNlbnRlclRyYWNrUmVjdCksIENHUmVjdEdldE1pblkoc2xpZGVyUmVjdCksIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dJbWFnZUdldFdpZHRoKF9z
bGlkZXJUcmFja1JpZ2h0KSwgQ0dJbWFnZUdldEhlaWdodChfc2xpZGVyVHJhY2tSaWdodCkpOwot
ICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBzbGlkZXJSaWdodFRyYWNrUmVjdCwgX3Ns
aWRlclRyYWNrUmlnaHQpOwotICAgIAotfQotCi0tICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29u
dGV4dFJlZiljb250ZXh0Ci17Ci0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLSAg
ICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgQ0dDb2xvckdldENvbnN0
YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOwotICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQs
IHNlbGYuYm91bmRzKTsKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwotICAg
IAotICAgIFtzZWxmIF9kcmF3UGxheVBhdXNlQnV0dG9uSW5Db250ZXh0OmNvbnRleHRdOwotICAg
IFtzZWxmIF9kcmF3U2xpZGVySW5Db250ZXh0OmNvbnRleHRdOwotfQotCi0jcHJhZ21hIG1hcmsg
TW92aWUgaGFuZGxpbmcKLQotLSAoTlNUaW1lSW50ZXJ2YWwpX2N1cnJlbnRUaW1lCi17Ci0gICAg
aWYgKCFfbW92aWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFFUVGltZSB0aW1lID0g
W19tb3ZpZSBjdXJyZW50VGltZV07Ci0gICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsOwot
ICAgIGlmICghUVRHZXRUaW1lSW50ZXJ2YWwodGltZSwgJnRpbWVJbnRlcnZhbCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIHJldHVybiB0aW1lSW50ZXJ2YWw7Ci19Ci0KLS0gKE5TVGlt
ZUludGVydmFsKV9kdXJhdGlvbgotewotICAgIGlmICghX21vdmllKQotICAgICAgICByZXR1cm4g
MDsKLSAgICAKLSAgICBRVFRpbWUgdGltZSA9IFtfbW92aWUgZHVyYXRpb25dOwotICAgIE5TVGlt
ZUludGVydmFsIHRpbWVJbnRlcnZhbDsKLSAgICBpZiAoIVFUR2V0VGltZUludGVydmFsKHRpbWUs
ICZ0aW1lSW50ZXJ2YWwpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4gdGlt
ZUludGVydmFsOwotfQotCi0tIChCT09MKV9pc1BsYXlpbmcKLXsKLSAgICByZXR1cm4gW19tb3Zp
ZSByYXRlXSAhPSAwLjA7Ci19Ci0KLS0gKHZvaWQpX3VwZGF0ZVRpbWU6KE5TVGltZXIgKil0aW1l
cgotewotICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheV07Ci19Ci0KLS0gKHZvaWQpX3JhdGVEaWRD
aGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgZmxvYXQgcmF0ZSA9
IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OlFUTW92aWVSYXRlRGlkQ2hh
bmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyXSBmbG9hdFZhbHVlXTsKLSAgICAKLSAgICBpZiAocmF0
ZSA9PSAwLjApIHsKLSAgICAgICAgW191cGRhdGVUaW1lVGltZXIgaW52YWxpZGF0ZV07Ci0gICAg
ICAgIF91cGRhdGVUaW1lVGltZXIgPSBuaWw7Ci0gICAgfSBlbHNlCi0gICAgICAgIF91cGRhdGVU
aW1lVGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6MC4wMzUg
dGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF91cGRhdGVUaW1lOikgdXNlckluZm86bmls
IHJlcGVhdHM6WUVTXTsKLSAgICAKLSAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwotfQotCi0t
ICh2b2lkKV90aW1lRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewot
ICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheV07Ci19Ci0KLS0gKGlkPENBQWN0aW9uPilhY3Rpb25G
b3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhbmltYXRl
IHRoZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIuCi0gICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiY29udGVudHMiXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gW3N1
cGVyIGFjdGlvbkZvcktleTprZXldOwotfQotCi0tICh2b2lkKXNldE1vdmllOihRVE1vdmllICop
bW92aWUKLXsKLSAgICBpZiAoX21vdmllID09IG1vdmllKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgaWYgKF9tb3ZpZSkgewotICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6UVRNb3ZpZVJhdGVEaWRDaGFuZ2VO
b3RpZmljYXRpb24gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvYmplY3Q6X21vdmllXTsKLSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92aWVUaW1lRGlk
Q2hhbmdlTm90aWZpY2F0aW9uIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0Ol9tb3ZpZV07Ci0gICAgICAgIFtfbW92aWUgcmVsZWFz
ZV07Ci0gICAgfQotICAgIAotICAgIF9tb3ZpZSA9IFttb3ZpZSByZXRhaW5dOwotICAgIAotICAg
IGlmIChfbW92aWUpIHsKLSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSBhZGRPYnNlcnZlcjpzZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKF9yYXRlRGlkQ2hhbmdlOikgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6UVRN
b3ZpZVJhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6X21vdmllXTsKLSAgICAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVj
dG9yKF90aW1lRGlkQ2hhbmdlOikgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWU6UVRNb3ZpZVRpbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24g
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Q6X21vdmllXTsKLSAgICAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICB9Ci0gICAg
Ci19Ci0KLSMgcHJhZ21hIG1hcmsgRXZlbnQgaGFuZGxpbmcKLQotLSAodm9pZClfc2V0TmV3VGlt
ZUZvclRodW1iQ2VudGVyWDooQ0dGbG9hdCljZW50ZXJYCi17Ci0gICAgQ0dSZWN0IGlubmVyUmVj
dCA9IFtzZWxmIF9pbm5lclNsaWRlclJlY3RdOwotICAgIAotICAgIENHRmxvYXQgZnJhY3Rpb24g
PSAoY2VudGVyWCAtIENHUmVjdEdldE1pblgoaW5uZXJSZWN0KSkgLyBDR1JlY3RHZXRXaWR0aChp
bm5lclJlY3QpOwotICAgIGlmIChmcmFjdGlvbiA+IDEuMCkKLSAgICAgICAgZnJhY3Rpb24gPSAx
LjA7Ci0gICAgZWxzZSBpZiAoZnJhY3Rpb24gPCAwLjApCi0gICAgICAgIGZyYWN0aW9uID0gMC4w
OwotICAgIAotICAgIE5TVGltZUludGVydmFsIG5ld1RpbWUgPSBmcmFjdGlvbiAqIFtzZWxmIF9k
dXJhdGlvbl07Ci0gICAgCi0gICAgW19tb3ZpZSBzZXRDdXJyZW50VGltZTpRVE1ha2VUaW1lV2l0
aFRpbWVJbnRlcnZhbChuZXdUaW1lKV07Ci0gICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsgICAg
Ci19Ci0KLS0gKHZvaWQpaGFuZGxlTW91c2VEb3duOihDR1BvaW50KXBvaW50Ci17Ci0gICAgaWYg
KCFfbW92aWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChDR1JlY3RDb250YWluc1BvaW50
KFtzZWxmIF9zbGlkZXJSZWN0XSwgcG9pbnQpKSB7Ci0gICAgICAgIF93YXNQbGF5aW5nQmVmb3Jl
TW91c2VEb3duID0gW3NlbGYgX2lzUGxheWluZ107Ci0gICAgICAgIF9pc1NjcnViYmluZyA9IFlF
UzsKLQotICAgICAgICBbX21vdmllIHN0b3BdOwotICAgICAgICBpZiAoQ0dSZWN0Q29udGFpbnNQ
b2ludChbc2VsZiBfc2xpZGVyVGh1bWJSZWN0XSwgcG9pbnQpKQotICAgICAgICAgICAgX21vdXNl
RG93blhEZWx0YSA9IHBvaW50LnggLSBDR1JlY3RHZXRNaWRYKFtzZWxmIF9zbGlkZXJUaHVtYlJl
Y3RdKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBbc2VsZiBfc2V0TmV3VGltZUZvclRo
dW1iQ2VudGVyWDpwb2ludC54XTsKLSAgICAgICAgICAgIF9tb3VzZURvd25YRGVsdGEgPSAwOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0tICh2b2lkKWhhbmRsZU1vdXNlVXA6KENHUG9pbnQpcG9p
bnQKLXsKLSAgICBpZiAoIV9tb3ZpZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChf
aXNTY3J1YmJpbmcpIHsKLSAgICAgICAgX2lzU2NydWJiaW5nID0gTk87Ci0gICAgICAgIF9tb3Vz
ZURvd25YRGVsdGEgPSAwOwotICAgICAgICAKLSAgICAgICAgaWYgKF93YXNQbGF5aW5nQmVmb3Jl
TW91c2VEb3duKQotICAgICAgICAgICAgW19tb3ZpZSBwbGF5XTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBpZiAoQ0dSZWN0Q29udGFpbnNQb2ludChbc2VsZiBfcGxheVBhdXNl
QnV0dG9uUmVjdF0sIHBvaW50KSkgewotICAgICAgICBpZiAoW3NlbGYgX2lzUGxheWluZ10pCi0g
ICAgICAgICAgICBbX21vdmllIHN0b3BdOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbX21v
dmllIHBsYXldOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0tICh2b2lkKWhhbmRsZU1v
dXNlRHJhZ2dlZDooQ0dQb2ludClwb2ludAotewotICAgIGlmICghX21vdmllKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIV9pc1NjcnViYmluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
cG9pbnQueCAtPSBfbW91c2VEb3duWERlbHRhOwotCi0gICAgW3NlbGYgX3NldE5ld1RpbWVGb3JU
aHVtYkNlbnRlclg6cG9pbnQueF07Ci19Ci0KLUBlbmQKSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVn
aW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1BhdXNlLnRpZmYKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdp
bnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vUGxheS50aWZmCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5z
L05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1NsaWRlclRyYWNrQ2VudGVyLnRpZmYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpJbmRleDogV2ViS2l0RXhh
bXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vU2xpZGVyVHJhY2tM
ZWZ0LnRpZmYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpJbmRleDog
V2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vU2xp
ZGVyVHJhY2tSaWdodC50aWZmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0KSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmll
UGx1Z2luL1RodW1iLnRpZmYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQg
YXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQ
bHVnaW4vbWFpbi5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBl
Q29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL21haW4ubQkocmV2aXNpb24gNzQzMTQpCisrKyBXZWJL
aXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9tYWluLm0J
KHdvcmtpbmcgY29weSkKQEAgLTEsMzkzICswLDAgQEAKLS8qCi0gICAgIEZpbGU6IE1vdmllQ29u
dHJvbGxlckxheWVyLm0KLSAKLSBEaXNjbGFpbWVyOiBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxlIHNv
ZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBBcHBsZQotIEluYy4gKCJBcHBsZSIpIGluIGNv
bnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gdGhlIGZvbGxvd2luZwotIHRlcm1zLCBh
bmQgeW91ciB1c2UsIGluc3RhbGxhdGlvbiwgbW9kaWZpY2F0aW9uIG9yIHJlZGlzdHJpYnV0aW9u
IG9mCi0gdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRoZXNl
IHRlcm1zLiAgSWYgeW91IGRvCi0gbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMsIHBsZWFzZSBk
byBub3QgdXNlLCBpbnN0YWxsLCBtb2RpZnkgb3IKLSByZWRpc3RyaWJ1dGUgdGhpcyBBcHBsZSBz
b2Z0d2FyZS4KLSAKLSBJbiBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIGFiaWRl
IGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZAotIHN1YmplY3QgdG8gdGhlc2UgdGVybXMsIEFw
cGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZQotIGxpY2Vuc2UsIHVuZGVy
IEFwcGxlJ3MgY29weXJpZ2h0cyBpbiB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUK
LSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSBhbmQgcmVkaXN0
cmlidXRlIHRoZSBBcHBsZQotIFNvZnR3YXJlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u
cywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkgZm9ybXM7Ci0gcHJvdmlkZWQgdGhhdCBpZiB5b3Ug
cmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJldHkgYW5kCi0gd2l0
aG91dCBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCByZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBm
b2xsb3dpbmcKLSB0ZXh0IGFuZCBkaXNjbGFpbWVycyBpbiBhbGwgc3VjaCByZWRpc3RyaWJ1dGlv
bnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLgotIE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3Ms
IHNlcnZpY2UgbWFya3Mgb3IgbG9nb3Mgb2YgQXBwbGUgSW5jLiBtYXkKLSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhlIEFwcGxlIFNvZnR3YXJl
Ci0gd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4g
IEV4Y2VwdCBhcwotIGV4cHJlc3NseSBzdGF0ZWQgaW4gdGhpcyBub3RpY2UsIG5vIG90aGVyIHJp
Z2h0cyBvciBsaWNlbnNlcywgZXhwcmVzcyBvcgotIGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFw
cGxlIGhlcmVpbiwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBhbnkKLSBwYXRlbnQgcmln
aHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIGRlcml2YXRpdmUgd29ya3Mgb3IgYnkg
b3RoZXIKLSB3b3JrcyBpbiB3aGljaCB0aGUgQXBwbGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9y
YXRlZC4KLSAKLSBUaGUgQXBwbGUgU29mdHdhcmUgaXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4g
IkFTIElTIiBiYXNpcy4gIEFQUExFCi0gTUFLRVMgTk8gV0FSUkFOVElFUywgRVhQUkVTUyBPUiBJ
TVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OCi0gVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKLSBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FSRElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1Ig
SVRTIFVTRSBBTkQKLSBPUEVSQVRJT04gQUxPTkUgT1IgSU4gQ09NQklOQVRJT04gV0lUSCBZT1VS
IFBST0RVQ1RTLgotIAotIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIEJFIExJQUJMRSBGT1IgQU5Z
IFNQRUNJQUwsIElORElSRUNULCBJTkNJREVOVEFMCi0gT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSwgUkVQUk9EVUNUSU9OLAotIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVUSU9OIE9GIFRI
RSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQKLSBBTkQgV0hFVEhFUiBVTkRFUiBUSEVP
UlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwKLSBTVFJJQ1QgTElB
QklMSVRZIE9SIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRI
RQotIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIAotIENvcHlyaWdodCAoQykgMjAwOSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0
L25wYXBpLmg+Ci0jaW1wb3J0IDxXZWJLaXQvbnBmdW5jdGlvbnMuaD4KLSNpbXBvcnQgPFdlYktp
dC9ucHJ1bnRpbWUuaD4KLQotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1w
b3J0IDxRVEtpdC9RVEtpdC5oPgotCi0jaW1wb3J0ICJNb3ZpZUNvbnRyb2xsZXJMYXllci5oIgot
Ci0vLyBCcm93c2VyIGZ1bmN0aW9uIHRhYmxlCi1zdGF0aWMgTlBOZXRzY2FwZUZ1bmNzKiBicm93
c2VyOwotCi0vLyBTdHJ1Y3R1cmUgZm9yIHBlci1pbnN0YW5jZSBzdG9yYWdlCi10eXBlZGVmIHN0
cnVjdCBQbHVnaW5PYmplY3QKLXsKLSAgICBOUFAgbnBwOwotICAgIAotICAgIE5QV2luZG93IHdp
bmRvdzsKLSAgICAKLSAgICBDQUxheWVyICpyb290TGF5ZXI7Ci0gICAgTW92aWVDb250cm9sbGVy
TGF5ZXIgKmNvbnRyb2xsZXJMYXllcjsKLSAgICBRVE1vdmllTGF5ZXIgKm1vdmllTGF5ZXI7Ci0g
ICAgCi0gICAgQ0FMYXllciAqbW91c2VEb3duTGF5ZXI7Ci0gICAgCi0gICAgTlNVUkwgKm1vdmll
VVJMOwotICAgIFFUTW92aWUgKm1vdmllOwotfSBQbHVnaW5PYmplY3Q7Ci0KLU5QRXJyb3IgTlBQ
X05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2X3QgbW9kZSwg
aW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNh
dmVkKTsKLU5QRXJyb3IgTlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNh
dmUpOwotTlBFcnJvciBOUFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5kb3cqIHdpbmRv
dyk7Ci1OUEVycm9yIE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUs
IE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwgdWludDE2KiBzdHlwZSk7Ci1OUEVy
cm9yIE5QUF9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBS
ZWFzb24gcmVhc29uKTsKLWludDMyX3QgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0
cmVhbSogc3RyZWFtKTsKLWludDMyX3QgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0q
IHN0cmVhbSwgaW50MzJfdCBvZmZzZXQsIGludDMyX3QgbGVuLCB2b2lkKiBidWZmZXIpOwotdm9p
ZCBOUFBfU3RyZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgY29uc3Qg
Y2hhciogZm5hbWUpOwotdm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0
Zm9ybVByaW50KTsKLWludDE2X3QgTlBQX0hhbmRsZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCog
ZXZlbnQpOwotdm9pZCBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogVVJM
LCBOUFJlYXNvbiByZWFzb24sIHZvaWQqIG5vdGlmeURhdGEpOwotTlBFcnJvciBOUFBfR2V0VmFs
dWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOwotTlBF
cnJvciBOUFBfU2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9p
ZCAqdmFsdWUpOwotCi0jcHJhZ21hIGV4cG9ydCBvbgotLy8gTWFjaC1vIGVudHJ5IHBvaW50cwot
TlBFcnJvciBOUF9Jbml0aWFsaXplKE5QTmV0c2NhcGVGdW5jcyAqYnJvd3NlckZ1bmNzKTsKLU5Q
RXJyb3IgTlBfR2V0RW50cnlQb2ludHMoTlBQbHVnaW5GdW5jcyAqcGx1Z2luRnVuY3MpOwotdm9p
ZCBOUF9TaHV0ZG93bih2b2lkKTsKLSNwcmFnbWEgZXhwb3J0IG9mZgotCi1OUEVycm9yIE5QX0lu
aXRpYWxpemUoTlBOZXRzY2FwZUZ1bmNzKiBicm93c2VyRnVuY3MpCi17Ci0gICAgYnJvd3NlciA9
IGJyb3dzZXJGdW5jczsKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJyb3Ig
TlBfR2V0RW50cnlQb2ludHMoTlBQbHVnaW5GdW5jcyogcGx1Z2luRnVuY3MpCi17Ci0gICAgcGx1
Z2luRnVuY3MtPnZlcnNpb24gPSAxMTsKLSAgICBwbHVnaW5GdW5jcy0+c2l6ZSA9IHNpemVvZihw
bHVnaW5GdW5jcyk7Ci0gICAgcGx1Z2luRnVuY3MtPm5ld3AgPSBOUFBfTmV3OwotICAgIHBsdWdp
bkZ1bmNzLT5kZXN0cm95ID0gTlBQX0Rlc3Ryb3k7Ci0gICAgcGx1Z2luRnVuY3MtPnNldHdpbmRv
dyA9IE5QUF9TZXRXaW5kb3c7Ci0gICAgcGx1Z2luRnVuY3MtPm5ld3N0cmVhbSA9IE5QUF9OZXdT
dHJlYW07Ci0gICAgcGx1Z2luRnVuY3MtPmRlc3Ryb3lzdHJlYW0gPSBOUFBfRGVzdHJveVN0cmVh
bTsKLSAgICBwbHVnaW5GdW5jcy0+YXNmaWxlID0gTlBQX1N0cmVhbUFzRmlsZTsKLSAgICBwbHVn
aW5GdW5jcy0+d3JpdGVyZWFkeSA9IE5QUF9Xcml0ZVJlYWR5OwotICAgIHBsdWdpbkZ1bmNzLT53
cml0ZSA9IChOUFBfV3JpdGVQcm9jUHRyKU5QUF9Xcml0ZTsKLSAgICBwbHVnaW5GdW5jcy0+cHJp
bnQgPSBOUFBfUHJpbnQ7Ci0gICAgcGx1Z2luRnVuY3MtPmV2ZW50ID0gTlBQX0hhbmRsZUV2ZW50
OwotICAgIHBsdWdpbkZ1bmNzLT51cmxub3RpZnkgPSBOUFBfVVJMTm90aWZ5OwotICAgIHBsdWdp
bkZ1bmNzLT5nZXR2YWx1ZSA9IE5QUF9HZXRWYWx1ZTsKLSAgICBwbHVnaW5GdW5jcy0+c2V0dmFs
dWUgPSBOUFBfU2V0VmFsdWU7Ci0gICAgCi0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQot
Ci12b2lkIE5QX1NodXRkb3duKHZvaWQpCi17Ci0KLX0KLQotTlBFcnJvciBOUFBfTmV3KE5QTUlN
RVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3RhbmNlLCB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFy
Z2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2ZWQpCi17Ci0g
ICAgLy8gQ3JlYXRlIHBlci1pbnN0YW5jZSBzdG9yYWdlCi0gICAgUGx1Z2luT2JqZWN0ICpvYmog
PSAoUGx1Z2luT2JqZWN0ICopbWFsbG9jKHNpemVvZihQbHVnaW5PYmplY3QpKTsKLSAgICBiemVy
byhvYmosIHNpemVvZihQbHVnaW5PYmplY3QpKTsKLSAgICAKLSAgICBvYmotPm5wcCA9IGluc3Rh
bmNlOwotICAgIGluc3RhbmNlLT5wZGF0YSA9IG9iajsKLSAgICAKLSAgICAvLyBBc2sgdGhlIGJy
b3dzZXIgaWYgaXQgc3VwcG9ydHMgdGhlIENvcmUgQW5pbWF0aW9uIGRyYXdpbmcgbW9kZWwKLSAg
ICBOUEJvb2wgc3VwcG9ydHNDb3JlQW5pbWF0aW9uOwotICAgIGlmIChicm93c2VyLT5nZXR2YWx1
ZShpbnN0YW5jZSwgTlBOVnN1cHBvcnRzQ29yZUFuaW1hdGlvbkJvb2wsICZzdXBwb3J0c0NvcmVB
bmltYXRpb24pICE9IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBzdXBwb3J0c0NvcmVBbmltYXRp
b24gPSBGQUxTRTsKLSAgICAKLSAgICBpZiAoIXN1cHBvcnRzQ29yZUFuaW1hdGlvbikKLSAgICAg
ICAgcmV0dXJuIE5QRVJSX0lOQ09NUEFUSUJMRV9WRVJTSU9OX0VSUk9SOwotICAgIAotICAgIC8v
IElmIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb3JlIEFuaW1hdGlvbiBkcmF3aW5nIG1vZGVs
LCBlbmFibGUgaXQuCi0gICAgYnJvd3Nlci0+c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5E
cmF3aW5nTW9kZWwsICh2b2lkICopTlBEcmF3aW5nTW9kZWxDb3JlQW5pbWF0aW9uKTsKLQotICAg
IC8vIElmIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb2NvYSBldmVudCBtb2RlbCwgZW5hYmxl
IGl0LgotICAgIE5QQm9vbCBzdXBwb3J0c0NvY29hOwotICAgIGlmIChicm93c2VyLT5nZXR2YWx1
ZShpbnN0YW5jZSwgTlBOVnN1cHBvcnRzQ29jb2FCb29sLCAmc3VwcG9ydHNDb2NvYSkgIT0gTlBF
UlJfTk9fRVJST1IpCi0gICAgICAgIHN1cHBvcnRzQ29jb2EgPSBGQUxTRTsKLSAgICAKLSAgICBp
ZiAoIXN1cHBvcnRzQ29jb2EpCi0gICAgICAgIHJldHVybiBOUEVSUl9JTkNPTVBBVElCTEVfVkVS
U0lPTl9FUlJPUjsKLSAgICAKLSAgICBicm93c2VyLT5zZXR2YWx1ZShpbnN0YW5jZSwgTlBQVnBs
dWdpbkV2ZW50TW9kZWwsICh2b2lkICopTlBFdmVudE1vZGVsQ29jb2EpOwotICAgIAotICAgIGZv
ciAoaW50MTZfdCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBpZiAoc3RyY2FzZWNt
cChhcmduW2ldLCAibW92aWV1cmwiKSA9PSAwKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqdXJs
U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFyZ3ZbaV1dOwotICAgICAg
ICAgICAgaWYgKHVybFN0cmluZykgCi0gICAgICAgICAgICAgICAgb2JqLT5tb3ZpZVVSTCA9IFtb
TlNVUkwgVVJMV2l0aFN0cmluZzp1cmxTdHJpbmddIHJldGFpbl07Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIE5QRVJSX05P
X0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9EZXN0cm95KE5QUCBpbnN0YW5jZSwgTlBTYXZlZERh
dGEqKiBzYXZlKQotewotICAgIC8vIEZyZWUgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLSAgICBQbHVn
aW5PYmplY3QgKm9iaiA9IGluc3RhbmNlLT5wZGF0YTsKLQotICAgIFtvYmotPm1vdmllIHN0b3Bd
OwotICAgIFtvYmotPnJvb3RMYXllciByZWxlYXNlXTsKLSAgICAKLSAgICBmcmVlKG9iaik7Ci0g
ICAgCi0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9TZXRXaW5k
b3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KQotewotICAgIFBsdWdpbk9iamVjdCAq
b2JqID0gaW5zdGFuY2UtPnBkYXRhOwotICAgIG9iai0+d2luZG93ID0gKndpbmRvdzsKLQotICAg
IHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLSAKLQotTlBFcnJvciBOUFBfTmV3U3RyZWFtKE5Q
UCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLCBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vl
a2FibGUsIHVpbnQxNiogc3R5cGUpCi17Ci0gICAgKnN0eXBlID0gTlBfQVNGSUxFT05MWTsKLSAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0o
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24pCi17Ci0gICAg
cmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1pbnQzMl90IE5QUF9Xcml0ZVJlYWR5KE5QUCBp
bnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50MzJf
dCBOUFBfV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IG9mZnNl
dCwgaW50MzJfdCBsZW4sIHZvaWQqIGJ1ZmZlcikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9p
ZCBOUFBfU3RyZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgY29uc3Qg
Y2hhciogZm5hbWUpCi17Ci19Ci0KLXZvaWQgTlBQX1ByaW50KE5QUCBpbnN0YW5jZSwgTlBQcmlu
dCogcGxhdGZvcm1QcmludCkKLXsKLQotfQotCi1zdGF0aWMgdm9pZCBoYW5kbGVNb3VzZURvd24o
UGx1Z2luT2JqZWN0ICpvYmosIE5QQ29jb2FFdmVudCAqZXZlbnQpCi17Ci0gICAgQ0dQb2ludCBw
b2ludCA9IENHUG9pbnRNYWtlKGV2ZW50LT5kYXRhLm1vdXNlLnBsdWdpblgsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGbGlwIHRoZSB5IGNvb3JkaW5hdGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqLT53aW5kb3cuaGVpZ2h0IC0gZXZlbnQtPmRhdGEu
bW91c2UucGx1Z2luWSk7Ci0gICAgCi0gICAgb2JqLT5tb3VzZURvd25MYXllciA9IFtvYmotPnJv
b3RMYXllciBoaXRUZXN0OnBvaW50XTsKLSAgICBpZiAob2JqLT5tb3VzZURvd25MYXllciA9PSBv
YmotPmNvbnRyb2xsZXJMYXllcikgewotICAgICAgICBbb2JqLT5jb250cm9sbGVyTGF5ZXIgaGFu
ZGxlTW91c2VEb3duOltvYmotPnJvb3RMYXllciBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9MYXllcjpv
YmotPmNvbnRyb2xsZXJMYXllcl1dOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgICAKLX0KLQot
c3RhdGljIHZvaWQgdG9nZ2xlUGxheVBhdXNlKFBsdWdpbk9iamVjdCAqb2JqKQotewotICAgIGlm
ICghb2JqLT5tb3ZpZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChbb2JqLT5tb3Zp
ZSByYXRlXSA9PSAwKQotICAgICAgICBbb2JqLT5tb3ZpZSBwbGF5XTsKLSAgICBlbHNlCi0gICAg
ICAgIFtvYmotPm1vdmllIHN0b3BdOwotCi19Ci0KLXN0YXRpYyB2b2lkIGhhbmRsZU1vdXNlVXAo
UGx1Z2luT2JqZWN0ICpvYmosIE5QQ29jb2FFdmVudCAqZXZlbnQpCi17Ci0gICAgQ0dQb2ludCBw
b2ludCA9IENHUG9pbnRNYWtlKGV2ZW50LT5kYXRhLm1vdXNlLnBsdWdpblgsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGbGlwIHRoZSB5IGNvb3JkaW5hdGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqLT53aW5kb3cuaGVpZ2h0IC0gZXZlbnQtPmRhdGEu
bW91c2UucGx1Z2luWSk7Ci0KLSAgICBDQUxheWVyICptb3VzZURvd25MYXllciA9IG9iai0+bW91
c2VEb3duTGF5ZXI7Ci0gICAgb2JqLT5tb3VzZURvd25MYXllciA9IG5pbDsKLSAgICBpZiAobW91
c2VEb3duTGF5ZXIgPT0gb2JqLT5jb250cm9sbGVyTGF5ZXIpIHsKLSAgICAgICAgW29iai0+Y29u
dHJvbGxlckxheWVyIGhhbmRsZU1vdXNlVXA6W29iai0+cm9vdExheWVyIGNvbnZlcnRQb2ludDpw
b2ludCB0b0xheWVyOm9iai0+Y29udHJvbGxlckxheWVyXV07Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGhhbmRsZU1vdXNlRHJhZ2dlZChQbHVnaW5PYmplY3QgKm9i
aiwgTlBDb2NvYUV2ZW50ICpldmVudCkKLXsKLSAgICBDR1BvaW50IHBvaW50ID0gQ0dQb2ludE1h
a2UoZXZlbnQtPmRhdGEubW91c2UucGx1Z2luWCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEZsaXAgdGhlIHkgY29vcmRpbmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmotPndpbmRvdy5oZWlnaHQgLSBldmVudC0+ZGF0YS5tb3VzZS5wbHVnaW5ZKTsK
LSAgICAKLSAgICBpZiAob2JqLT5tb3VzZURvd25MYXllciA9PSBvYmotPmNvbnRyb2xsZXJMYXll
cikgewotICAgICAgICBbb2JqLT5jb250cm9sbGVyTGF5ZXIgaGFuZGxlTW91c2VEcmFnZ2VkOltv
YmotPnJvb3RMYXllciBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9MYXllcjpvYmotPmNvbnRyb2xsZXJM
YXllcl1dOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgICAKLX0KLQotc3RhdGljIHZvaWQgaGFu
ZGxlTW91c2VFbnRlcmVkKFBsdWdpbk9iamVjdCAqb2JqKQotewotICAgIC8vIFNob3cgdGhlIGNv
bnRyb2xsZXIgbGF5ZXIuCi0gICAgb2JqLT5jb250cm9sbGVyTGF5ZXIub3BhY2l0eSA9IDEuMDsK
LX0KLQotc3RhdGljIHZvaWQgaGFuZGxlTW91c2VFeGl0ZWQoUGx1Z2luT2JqZWN0ICpvYmopCi17
Ci0gICAgLy8gSGlkZSB0aGUgY29udHJvbGxlciBsYXllciBpZiB0aGUgbW92aWUgaXMgcGxheWlu
Zy4KLSAgICBpZiAoW29iai0+bW92aWUgcmF0ZV0pCi0gICAgICAgIG9iai0+Y29udHJvbGxlckxh
eWVyLm9wYWNpdHkgPSAwLjA7Ci19Ci0KLXN0YXRpYyBpbnQgaGFuZGxlS2V5RG93bihQbHVnaW5P
YmplY3QgKm9iaiwgTlBDb2NvYUV2ZW50ICpldmVudCkKLXsKLSAgICBOU1N0cmluZyAqY2hhcmFj
dGVycyA9IChOU1N0cmluZyAqKWV2ZW50LT5kYXRhLmtleS5jaGFyYWN0ZXJzOwotICAgIAotICAg
IGlmIChbY2hhcmFjdGVycyBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlcnMgY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSAnICcpIHsKLSAgICAgICAgdG9nZ2xlUGxheVBhdXNlKG9iaik7Ci0gICAgICAg
IHJldHVybiAxOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotCi1zdGF0aWMgaW50
IGhhbmRsZVNjcm9sbEV2ZW50KFBsdWdpbk9iamVjdCAqb2JqLCBOUENvY29hRXZlbnQgKmV2ZW50
KQotewotICAgIGRvdWJsZSBkZWx0YSA9IGV2ZW50LT5kYXRhLm1vdXNlLmRlbHRhWTsKLSAgICBp
ZiAoZGVsdGEgPCAwKQotICAgICAgICBbb2JqLT5tb3ZpZSBzdGVwRm9yd2FyZF07Ci0gICAgZWxz
ZQotICAgICAgICBbb2JqLT5tb3ZpZSBzdGVwQmFja3dhcmRdOwotICAgIHJldHVybiAwOwotfQot
Ci0KLQotaW50MTZfdCBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVudCkK
LXsKLSAgICBQbHVnaW5PYmplY3QgKm9iaiA9IGluc3RhbmNlLT5wZGF0YTsKLQotICAgIE5QQ29j
b2FFdmVudCAqY29jb2FFdmVudCA9IGV2ZW50OwotICAgIAotICAgIHN3aXRjaChjb2NvYUV2ZW50
LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEb3duOgotICAgICAgICAg
ICAgaGFuZGxlTW91c2VEb3duKG9iaiwgY29jb2FFdmVudCk7Ci0gICAgICAgICAgICByZXR1cm4g
MTsKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRNb3VzZVVwOgotICAgICAgICAgICAgaGFuZGxl
TW91c2VVcChvYmosIGNvY29hRXZlbnQpOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgaGFuZGxlTW91c2VE
cmFnZ2VkKG9iaiwgY29jb2FFdmVudCk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBOUENvY29hRXZlbnRNb3VzZUVudGVyZWQ6Ci0gICAgICAgICAgICBoYW5kbGVNb3VzZUVu
dGVyZWQob2JqKTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIE5QQ29jb2FF
dmVudE1vdXNlRXhpdGVkOgotICAgICAgICAgICAgaGFuZGxlTW91c2VFeGl0ZWQob2JqKTsKLSAg
ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudEtleURvd246Ci0g
ICAgICAgICAgICByZXR1cm4gaGFuZGxlS2V5RG93bihvYmosIGNvY29hRXZlbnQpOwotICAgICAg
ICBjYXNlIE5QQ29jb2FFdmVudFNjcm9sbFdoZWVsOgotICAgICAgICAgICAgcmV0dXJuIGhhbmRs
ZVNjcm9sbEV2ZW50KG9iaiwgY29jb2FFdmVudCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAw
OwotfQotCi12b2lkIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmws
IE5QUmVhc29uIHJlYXNvbiwgdm9pZCogbm90aWZ5RGF0YSkKLXsKLQotfQotCi1OUEVycm9yIE5Q
UF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1
ZSkKLXsKLSAgICBQbHVnaW5PYmplY3QgKm9iaiA9IGluc3RhbmNlLT5wZGF0YTsKLQotICAgIHN3
aXRjaCAodmFyaWFibGUpIHsKLSAgICAgICAgY2FzZSBOUFBWcGx1Z2luQ29yZUFuaW1hdGlvbkxh
eWVyOgotICAgICAgICAgICAgaWYgKCFvYmotPnJvb3RMYXllcikgewotICAgICAgICAgICAgICAg
IC8vIFNldHVwIGxheWVyIGhpZXJhcmNoeS4KLSAgICAgICAgICAgICAgICBvYmotPnJvb3RMYXll
ciA9IFtbQ0FMYXllciBsYXllcl0gcmV0YWluXTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBvYmotPm1vdmllTGF5ZXIgPSBbUVRNb3ZpZUxheWVyIGxheWVyXTsKLSAgICAgICAg
ICAgICAgICBvYmotPm1vdmllTGF5ZXIuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhT
aXphYmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlOwotICAgICAgICAgICAgICAgIFtvYmotPnJv
b3RMYXllciBhZGRTdWJsYXllcjpvYmotPm1vdmllTGF5ZXJdOwotCi0gICAgICAgICAgICAgICAg
b2JqLT5jb250cm9sbGVyTGF5ZXIgPSBbTW92aWVDb250cm9sbGVyTGF5ZXIgbGF5ZXJdOwotICAg
ICAgICAgICAgICAgIFtvYmotPnJvb3RMYXllciBhZGRTdWJsYXllcjpvYmotPmNvbnRyb2xsZXJM
YXllcl07Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG9iai0+bW92aWVV
UkwpIHsKLSAgICAgICAgICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOm9iai0+bW92aWVVUkwsIFFU
TW92aWVVUkxBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgUVRNb3ZpZU9wZW5Gb3JQ
bGF5YmFja0F0dHJpYnV0ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgUVRNb3ZpZUxvb3BzQXR0
cmlidXRlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF07Ci0gICAgICAgICAgICAgICAgICAgIG9iai0+bW92aWUgPSBbUVRNb3ZpZSBtb3ZpZVdp
dGhBdHRyaWJ1dGVzOmF0dHJpYnV0ZXMgZXJyb3I6bmlsXTsKLQotICAgICAgICAgICAgICAgICAg
ICBpZiAob2JqLT5tb3ZpZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgb2JqLT5tb3ZpZUxh
eWVyLm1vdmllID0gb2JqLT5tb3ZpZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFtvYmotPmNv
bnRyb2xsZXJMYXllciBzZXRNb3ZpZTpvYmotPm1vdmllXTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0byByZXR1cm4gYSByZXRh
aW5lZCBsYXllcgotICAgICAgICAgICAgKigoQ0FMYXllciAqKil2YWx1ZSkgPSBbb2JqLT5yb290
TGF5ZXIgcmV0YWluXTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05P
X0VSUk9SOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1
cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLSAgICB9Ci19Ci0KLU5QRXJyb3IgTlBQX1NldFZhbHVl
KE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQotewotICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotfQpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdp
bnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vdGVzdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2lu
L3Rlc3QuaHRtbAkocmV2aXNpb24gNzQzMTQpCisrKyBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRz
Y2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi90ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQu
MDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLWh0bWw0
MDEtMTk5OTEyMjQvbG9vc2UuZHRkIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+TmV0c2NhcGUg
Q29yZSBBbmltYXRpb24gTW92aWUgUGx1Zy1JbjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxk
aXY+Ci08IS0tCi0gICAgPGVtYmVkIHdpZHRoPSI4NDgiIGhlaWdodD0iNDgwIiBtb3ZpZXVybD0i
aHR0cDovL21vdmllcy5hcHBsZS5jb20vbW92aWVzL2Rpc25leS91cC91cC10bHIyXzQ4MHAubW92
IgotICAgICAgICB0eXBlPSJ0ZXN0L3gtbmV0c2NhcGUtY29yZS1hbmltYXRpb24tbW92aWUtcGx1
Z2luIj48L2VtYmVkPgotLS0+Ci0gICAgPGVtYmVkIHdpZHRoPSIxMjgwIiBoZWlnaHQ9IjcyMCIg
bW92aWV1cmw9Imh0dHA6Ly9tb3ZpZXMuYXBwbGUuY29tL21vdmllcy9kaXNuZXkvdXAvdXAtdGxy
Ml83MjBwLm1vdiIKLSAgICAgICAgdHlwZT0idGVzdC94LW5ldHNjYXBlLWNvcmUtYW5pbWF0aW9u
LW1vdmllLXBsdWdpbiI+PC9lbWJlZD4KLQotCi08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2lu
L0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3Jl
QW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4ueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRFeGFtcGxlUGx1Z2lu
cy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25N
b3ZpZVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NDMxNCkKKysr
IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL05l
dHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMjc5ICswLDAgQEAKLS8vICEkKlVURjgqJCEKLXsKLQlhcmNo
aXZlVmVyc2lvbiA9IDE7Ci0JY2xhc3NlcyA9IHsKLQl9OwotCW9iamVjdFZlcnNpb24gPSA0NjsK
LQlvYmplY3RzID0gewotCi0vKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTYy
NEU1OTBEQ0JDN0Y2MDA2ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAq
LzsgfTsKLQkJMUE2MjUwNDIwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjI1MDQxMERD
QkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07Ci0JCTFBODAwMDFCMEZEQjJD
ODUwMDBGMzY0NiAvKiBNb3ZpZUNvbnRyb2xsZXJMYXllci5tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MDAwMUEwRkRCMkM4NTAwMEYzNjQ2IC8qIE1v
dmllQ29udHJvbGxlckxheWVyLm0gKi87IH07Ci0JCTFBODAwMTFBMEZEQjJDQjIwMDBGMzY0NiAv
KiBQYXVzZS50aWZmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTgwMDExNDBGREIyQ0IyMDAwRjM2NDYgLyogUGF1c2UudGlmZiAqLzsgfTsKLQkJMUE4
MDAxMUIwRkRCMkNCMjAwMEYzNjQ2IC8qIFBsYXkudGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MDAxMTUwRkRCMkNCMjAwMEYzNjQ2IC8qIFBs
YXkudGlmZiAqLzsgfTsKLQkJMUE4MDAxMUMwRkRCMkNCMjAwMEYzNjQ2IC8qIFNsaWRlclRyYWNr
Q2VudGVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBODAwMTE2MEZEQjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFja0NlbnRlci50aWZmICov
OyB9OwotCQkxQTgwMDExRDBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tMZWZ0LnRpZmYg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODAwMTE3
MEZEQjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFja0xlZnQudGlmZiAqLzsgfTsKLQkJMUE4MDAx
MUUwRkRCMkNCMjAwMEYzNjQ2IC8qIFNsaWRlclRyYWNrUmlnaHQudGlmZiBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MDAxMTgwRkRCMkNCMjAwMEYz
NjQ2IC8qIFNsaWRlclRyYWNrUmlnaHQudGlmZiAqLzsgfTsKLQkJMUE4MDAxMUYwRkRCMkNCMjAw
MEYzNjQ2IC8qIFRodW1iLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBODAwMTE5MEZEQjJDQjIwMDBGMzY0NiAvKiBUaHVtYi50aWZmICovOyB9
OwotCQkxQTgwMDE0NzBGREIyRTY1MDAwRjM2NDYgLyogUVRLaXQuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MDAxNDYwRkRCMkU2
NTAwMEYzNjQ2IC8qIFFUS2l0LmZyYW1ld29yayAqLzsgfTsKLQkJMUE4Qzg3QUEwRUYyRkJCMzAw
M0Y2RTgxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4Qzg3QTkwRUYyRkJCMzAwM0Y2RTgxIC8qIFF1YXJ0
ekNvcmUuZnJhbWV3b3JrICovOyB9OwotCQk4RDVCNDlBODA0ODY3RkQzMDAwRTQ4REEgLyogSW5m
b1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLzsg
fTsKLS8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KLQkJMDg5QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVuZ2xpc2gg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVu
Z2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMub2JqYzsgcGF0aCA9IG1haW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQkxQTgwMDAx
OTBGREIyQzg1MDAwRjM2NDYgLyogTW92aWVDb250cm9sbGVyTGF5ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW92aWVDb250cm9sbGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUE4MDAwMUEwRkRCMkM4NTAwMEYzNjQ2IC8qIE1vdmllQ29udHJv
bGxlckxheWVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IE1vdmllQ29u
dHJvbGxlckxheWVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBODAwMTE0MEZE
QjJDQjIwMDBGMzY0NiAvKiBQYXVzZS50aWZmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UudGlmZjsgcGF0aCA9IFBhdXNlLnRpZmY7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBODAwMTE1MEZEQjJDQjIwMDBGMzY0NiAvKiBQbGF5
LnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS50aWZmOyBwYXRoID0gUGxheS50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQTgwMDExNjBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tDZW50ZXIudGlmZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7
IHBhdGggPSBTbGlkZXJUcmFja0NlbnRlci50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQTgwMDExNzBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tMZWZ0LnRpZmYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZm
OyBwYXRoID0gU2xpZGVyVHJhY2tMZWZ0LnRpZmY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFBODAwMTE4MEZEQjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFja1JpZ2h0LnRpZmYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZm
OyBwYXRoID0gU2xpZGVyVHJhY2tSaWdodC50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQTgwMDExOTBGREIyQ0IyMDAwRjM2NDYgLyogVGh1bWIudGlmZiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSBU
aHVtYi50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTgwMDE0NjBGREIyRTY1
MDAwRjM2NDYgLyogUVRLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRVEtpdC5mcmFt
ZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCTFBOEM4N0E5MEVGMkZCQjMwMDNGNkU4
MSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5m
cmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZy
YW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJOEQ1NzYzMTYwNDg2NzdF
QTAwRUE3N0NEIC8qIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luLnBsdWdpbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1
bmRsZTsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92
aWVQbHVnaW4ucGx1Z2luOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk4
RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0QgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxp
c3Q7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0JCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdDRCAvKiBGcmFtZXdv
cmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMUE2MjUwNDIwRENCQzgx
QjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJCTFBODAw
MTQ3MEZEQjJFNjUwMDBGMzY0NiAvKiBRVEtpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywK
LQkJCQkxQThDODdBQTBFRjJGQkIzMDAzRjZFODEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
Ci0KLS8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KLQkJMDg5QzE2NkFGRTg0MTIwOUMwMkFB
QzA3IC8qIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkwOEZCNzdBRkZFODQxNzNEQzAyQUFDMDcg
LyogU291cmNlICovLAotCQkJCTA4OUMxNjdDRkU4NDEyNDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMg
Ki8sCi0JCQkJMDg5QzE2NzFGRTg0MTIwOUMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3Mg
YW5kIExpYnJhcmllcyAqLywKLQkJCQkxOUMyOEZCNkZFOUQ1MkIyMTFDQTJDQkIgLyogUHJvZHVj
dHMgKi8sCi0JCQkJMUE4MDAxNDYwRkRCMkU2NTAwMEYzNjQ2IC8qIFFUS2l0LmZyYW1ld29yayAq
LywKLQkJCSk7Ci0JCQluYW1lID0gTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW47Ci0J
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwODlDMTY3MUZFODQxMjA5QzAyQUFD
MDcgLyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4Qzgg
LyogQ29jb2EuZnJhbWV3b3JrICovLAotCQkJCTFBOEM4N0E5MEVGMkZCQjMwMDNGNkU4MSAvKiBR
dWFydHpDb3JlLmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1l
d29ya3MgYW5kIExpYnJhcmllcyI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owot
CQkwODlDMTY3Q0ZFODQxMjQxQzAyQUFDMDcgLyogUmVzb3VyY2VzICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0Qg
LyogSW5mby5wbGlzdCAqLywKLQkJCQk4RDVCNDlBNzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1Bs
aXN0LnN0cmluZ3MgKi8sCi0JCQkJMUE4MDAxMTQwRkRCMkNCMjAwMEYzNjQ2IC8qIFBhdXNlLnRp
ZmYgKi8sCi0JCQkJMUE4MDAxMTUwRkRCMkNCMjAwMEYzNjQ2IC8qIFBsYXkudGlmZiAqLywKLQkJ
CQkxQTgwMDExNjBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tDZW50ZXIudGlmZiAqLywK
LQkJCQkxQTgwMDExNzBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tMZWZ0LnRpZmYgKi8s
Ci0JCQkJMUE4MDAxMTgwRkRCMkNCMjAwMEYzNjQ2IC8qIFNsaWRlclRyYWNrUmlnaHQudGlmZiAq
LywKLQkJCQkxQTgwMDExOTBGREIyQ0IyMDAwRjM2NDYgLyogVGh1bWIudGlmZiAqLywKLQkJCSk7
Ci0JCQluYW1lID0gUmVzb3VyY2VzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsK
LQkJMDhGQjc3QUZGRTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAqLyA9IHsKLQkJCWlzYSA9IFBC
WEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8q
IG1haW4ubSAqLywKLQkJCQkxQTgwMDAxOTBGREIyQzg1MDAwRjM2NDYgLyogTW92aWVDb250cm9s
bGVyTGF5ZXIuaCAqLywKLQkJCQkxQTgwMDAxQTBGREIyQzg1MDAwRjM2NDYgLyogTW92aWVDb250
cm9sbGVyTGF5ZXIubSAqLywKLQkJCSk7Ci0JCQluYW1lID0gU291cmNlOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFByb2R1
Y3RzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4RDU3
NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4u
cGx1Z2luICovLAotCQkJKTsKLQkJCW5hbWUgPSBQcm9kdWN0czsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07Ci0vKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwotCQk4RDU3NjMwRDA0ODY3N0VBMDBFQTc3Q0QgLyog
TmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4gKi8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODMwODkwMkM1MzAw
OEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJO
ZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbiIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgK
LQkJCQk4RDU3NjMxMTA0ODY3N0VBMDBFQTc3Q0QgLyogU291cmNlcyAqLywKLQkJCQk4RDU3NjMw
RjA0ODY3N0VBMDBFQTc3Q0QgLyogUmVzb3VyY2VzICovLAotCQkJCThENTc2MzEzMDQ4Njc3RUEw
MEVBNzdDRCAvKiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkp
OwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJKTsKLQkJCW5hbWUgPSBOZXRzY2FwZUNvcmVBbmlt
YXRpb25Nb3ZpZVBsdWdpbjsKLQkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIkKEhPTUUpL0xpYnJh
cnkvQnVuZGxlcyI7Ci0JCQlwcm9kdWN0TmFtZSA9IE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmll
UGx1Z2luOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDhENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAv
KiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi5wbHVnaW4gKi87Ci0JCQlwcm9kdWN0
VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZSI7Ci0JCX07Ci0vKiBFbmQgUEJY
TmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICov
Ci0JCTA4OUMxNjY5RkU4NDEyMDlDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJ
CWlzYSA9IFBCWFByb2plY3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODcw
ODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4iICovOwotCQkJY29tcGF0aWJpbGl0
eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsK
LQkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwotCQkJa25vd25SZWdpb25zID0gKAotCQkJ
CUVuZ2xpc2gsCi0JCQkJSmFwYW5lc2UsCi0JCQkJRnJlbmNoLAotCQkJCUdlcm1hbiwKLQkJCSk7
Ci0JCQltYWluR3JvdXAgPSAwODlDMTY2QUZFODQxMjA5QzAyQUFDMDcgLyogTmV0c2NhcGVDb3Jl
QW5pbWF0aW9uTW92aWVQbHVnaW4gKi87Ci0JCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJv
amVjdFJvb3QgPSAiIjsKLQkJCXRhcmdldHMgPSAoCi0JCQkJOEQ1NzYzMEQwNDg2NzdFQTAwRUE3
N0NEIC8qIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luICovLAotCQkJKTsKLQkJfTsK
LS8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0JCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNvdXJj
ZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCThENUI0OUE4MDQ4NjdGRDMw
MDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJMUE4MDAx
MUEwRkRCMkNCMjAwMEYzNjQ2IC8qIFBhdXNlLnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJCTFB
ODAwMTFCMEZEQjJDQjIwMDBGMzY0NiAvKiBQbGF5LnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJ
CTFBODAwMTFDMEZEQjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFja0NlbnRlci50aWZmIGluIFJl
c291cmNlcyAqLywKLQkJCQkxQTgwMDExRDBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tM
ZWZ0LnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJCTFBODAwMTFFMEZEQjJDQjIwMDBGMzY0NiAv
KiBTbGlkZXJUcmFja1JpZ2h0LnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJCTFBODAwMTFGMEZE
QjJDQjIwMDBGMzY0NiAvKiBUaHVtYi50aWZmIGluIFJlc291cmNlcyAqLywKLQkJCSk7Ci0JCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhS
ZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwotCQk4RDU3NjMxMTA0ODY3N0VBMDBFQTc3Q0QgLyogU291cmNlcyAq
LyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTFBNjI0RTU5MERDQkM3RjYwMDY4OThD
OCAvKiBtYWluLm0gaW4gU291cmNlcyAqLywKLQkJCQkxQTgwMDAxQjBGREIyQzg1MDAwRjM2NDYg
LyogTW92aWVDb250cm9sbGVyTGF5ZXIubSBpbiBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWFNvdXJj
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYVmFyaWFudEdyb3VwIHNlY3Rp
b24gKi8KLQkJOEQ1QjQ5QTcwNDg2N0ZEMzAwMEU0OERBIC8qIEluZm9QbGlzdC5zdHJpbmdzICov
ID0gewotCQkJaXNhID0gUEJYVmFyaWFudEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDg5
QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8sCi0JCQkpOwotCQkJbmFtZSA9IElu
Zm9QbGlzdC5zdHJpbmdzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLS8qIEVu
ZCBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJh
dGlvbiBzZWN0aW9uICovCi0JCTE0OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLyA9
IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsK
LQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJR0NDX0RFQlVHR0lOR19TWU1CT0xTID0g
ZnVsbDsKLQkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9B
TkRfQ09OVElOVUUgPSBZRVM7Ci0JCQkJR0NDX01PREVMX1RVTklORyA9IEc1OwotCQkJCUdDQ19P
UFRJTUlaQVRJT05fTEVWRUwgPSAwOwotCQkJCUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsK
LQkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9MaWJyYXJ5L0J1bmRsZXMiOwotCQkJCVBST0RV
Q1RfTkFNRSA9IE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luOwotCQkJCVdSQVBQRVJf
RVhURU5TSU9OID0gcGx1Z2luOwotCQkJCVpFUk9fTElOSyA9IFlFUzsKLQkJCX07Ci0JCQluYW1l
ID0gRGVidWc7Ci0JCX07Ci0JCTE0OUMyOTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICov
ID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0g
ewotCQkJCUFSQ0hTID0gKAotCQkJCQlwcGMsCi0JCQkJCWkzODYsCi0JCQkJKTsKLQkJCQlHQ0Nf
REVCVUdHSU5HX1NZTUJPTFMgPSBmdWxsOwotCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lN
Qk9MUyA9IE5POwotCQkJCUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLQkJCQlHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMID0gMDsKLQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7Ci0JCQkJSU5T
VEFMTF9QQVRIID0gIiQoSE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCQlQUk9EVUNUX05BTUUg
PSBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbjsKLQkJCQlXUkFQUEVSX0VYVEVOU0lP
TiA9IHBsdWdpbjsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJMTQ5QzI5ODgw
ODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfMzJfNjRfQklUKSI7Ci0JCQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9YQ09ERV8z
XzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKLQkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFS
RCA9IGM5OTsKLQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKLQkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0JCQkJUFJFQklORElORyA9IE5POwotCQkJCVNE
S1JPT1QgPSBtYWNvc3gxMC42OwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQ5
QzI5ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQVJDSFMgPSBpMzg2Owot
CQkJCUFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVF9QUkVfWENPREVfM18xID0gInBwYyBpMzg2IHBw
YzY0IHg4Nl82NCI7Ci0JCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci0JCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwotCQkJCVBSRUJJTkRJTkcgPSBOTzsKLQkJ
CX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlv
biBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwot
CQkxNDlDMjk4MzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIk5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luIiAqLyA9
IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAotCQkJCTE0OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkxNDlD
Mjk4NTA4OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBS
ZWxlYXNlOwotCQl9OwotCQkxNDlDMjk4NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBs
dWdpbiIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKLQkJCQkxNDlDMjk4ODA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8s
Ci0JCQkJMTQ5QzI5ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rp
b24gKi8KLQl9OwotCXJvb3RPYmplY3QgPSAwODlDMTY2OUZFODQxMjA5QzAyQUFDMDcgLyogUHJv
amVjdCBvYmplY3QgKi87Ci19CkluZGV4OiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNv
cmVBbmltYXRpb25QbHVnaW4vQ29tcG9zaXRpb24ucXR6Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0KSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29y
ZUFuaW1hdGlvblBsdWdpbi9JbmZvLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQ
bHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9JbmZvLnBsaXN0CShyZXZpc2lvbiA3
NDMxNCkKKysrIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdp
bi9JbmZvLnBsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9B
cHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3Bl
cnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5D
RkJ1bmRsZURldmVsb3BtZW50UmVnaW9uPC9rZXk+Ci0JPHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+
Ci0JPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlQ29yZUFu
aW1hdGlvblBsdWdpbjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJY29uRmlsZTwva2V5PgotCTxz
dHJpbmc+PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUlkZW50aWZpZXI8L2tleT4KLQk8c3RyaW5n
PmNvbS5hcHBsZS5uZXRzY2FwZWNvcmVhbmltYXRpb25wbHVnaW48L3N0cmluZz4KLQk8a2V5PkNG
QnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4K
LQk8a2V5PkNGQnVuZGxlUGFja2FnZVR5cGU8L2tleT4KLQk8c3RyaW5nPkJSUEw8L3N0cmluZz4K
LQk8a2V5PkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4xLjA8L3N0
cmluZz4KLQk8a2V5PkNGQnVuZGxlU2lnbmF0dXJlPC9rZXk+Ci0JPHN0cmluZz4/Pz8/PC9zdHJp
bmc+Ci0JPGtleT5DRkJ1bmRsZVZlcnNpb248L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5nPgot
CTxrZXk+V2ViUGx1Z2luRGVzY3JpcHRpb248L2tleT4KLQk8c3RyaW5nPlNpbXBsZSBOZXRzY2Fw
ZSBwbHVnLWluIHRoYXQgZHJhd3MgdXNpbmcgQ29yZSBBbmltYXRpb24gYW5kIGhhbmRsZXMgZXZl
bnRzIHVzaW5nIHRoZSBDb2NvYSBldmVudCBtb2RlbDwvc3RyaW5nPgotCTxrZXk+V2ViUGx1Z2lu
TUlNRVR5cGVzPC9rZXk+Ci0JPGRpY3Q+Ci0JCTxrZXk+dGVzdC94LW5ldHNjYXBlLWNvcmUtYW5p
bWF0aW9uLXBsdWdpbjwva2V5PgotCQk8ZGljdD4KLQkJCTxrZXk+V2ViUGx1Z2luVHlwZURlc2Ny
aXB0aW9uPC9rZXk+Ci0JCQk8c3RyaW5nPk5ldHNjYXBlIENvcmUgQW5pbWF0aW9uIFBsdWctaW48
L3N0cmluZz4KLQkJPC9kaWN0PgotCTwvZGljdD4KLQk8a2V5PldlYlBsdWdpbk5hbWU8L2tleT4K
LQk8c3RyaW5nPk5ldHNjYXBlIENvcmUgQW5pbWF0aW9uIFBsdWctaW48L3N0cmluZz4KLTwvZGlj
dD4KLTwvcGxpc3Q+CkluZGV4OiBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmlt
YXRpb25QbHVnaW4vbWFpbi5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQbHVnaW5zL05l
dHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9tYWluLm0JKHJldmlzaW9uIDc0MzE0KQorKysgV2Vi
S2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL21haW4ubQkod29y
a2luZyBjb3B5KQpAQCAtMSwyNDYgKzAsMCBAQAotLyoKLSBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxl
IHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgaW4KLSBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dp
bmcgdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCAKLSBtb2RpZmljYXRpb24gb3Ig
cmVkaXN0cmlidXRpb24gb2YgdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRh
bmNlIG9mIHRoZXNlIAotIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRl
cm1zLCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAotIHJlZGlzdHJpYnV0
ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgotIAotIEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3Jl
ZW1lbnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhl
c2UgCi0gdGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBs
aWNlbnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbiAKLSB0aGlzIG9yaWdpbmFsIEFw
cGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBt
b2RpZnkgYW5kIAotIHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0
aG91dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKLSBmb3JtczsgcHJv
dmlkZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMg
ZW50aXJldHkgYW5kIHdpdGhvdXQgCi0gbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRo
aXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAK
LSBzdWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRo
ZSBuYW1lLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIAotIG9yIGxvZ29zIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gCi0gdGhlIEFwcGxlIFNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uIGZyb20gQXBwbGUuIEV4Y2VwdCBhcyBleHByZXNzbHkKLSBzdGF0
ZWQgaW4gdGhpcyBub3RpY2UsIG5vIG90aGVyIHJpZ2h0cyBvciBsaWNlbnNlcywgZXhwcmVzcyBv
ciBpbXBsaWVkLCBhcmUgZ3JhbnRlZCBieSBBcHBsZQotIGhlcmVpbiwgaW5jbHVkaW5nIGJ1dCBu
b3QgbGltaXRlZCB0byBhbnkgcGF0ZW50IHJpZ2h0cyB0aGF0IG1heSBiZSBpbmZyaW5nZWQgYnkg
eW91ciAKLSBkZXJpdmF0aXZlIHdvcmtzIG9yIGJ5IG90aGVyIHdvcmtzIGluIHdoaWNoIHRoZSBB
cHBsZSBTb2Z0d2FyZSBtYXkgYmUgaW5jb3Jwb3JhdGVkLgotIAotIFRoZSBBcHBsZSBTb2Z0d2Fy
ZSBpcyBwcm92aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUgTUFLRVMg
Tk8gV0FSUkFOVElFUywgCi0gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBM
SU1JVEFUSU9OIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTk9OLUlORlJJTkdFTUVOVCwgCi0g
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUkVH
QVJESU5HIFRIRSBBUFBMRSBTT0ZUV0FSRSBPUiBJVFMgCi0gVVNFIEFORCBPUEVSQVRJT04gQUxP
TkUgT1IgSU4gQ09NQklOQVRJT04gV0lUSCBZT1VSIFBST0RVQ1RTLgotIAotIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNULCBJTkNJREVO
VEFMIE9SIENPTlNFUVVFTlRJQUwgCi0gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
Ci0gT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSwgCi0gUkVQUk9EVUNUSU9OLCBNT0RJRklD
QVRJT04gQU5EL09SIERJU1RSSUJVVElPTiBPRiBUSEUgQVBQTEUgU09GVFdBUkUsIEhPV0VWRVIg
Q0FVU0VEIEFORCAKLSBXSEVUSEVSIFVOREVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UpLCBTVFJJQ1QgTElBQklMSVRZIE9SIAotIE9USEVSV0lTRSwgRVZF
TiBJRiBBUFBMRSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0IDxXZWJLaXQvbnBhcGkuaD4KLSNpbXBvcnQgPFdlYktpdC9u
cGZ1bmN0aW9ucy5oPgotI2ltcG9ydCA8V2ViS2l0L25wcnVudGltZS5oPgotCi0jaW1wb3J0IDxD
b2NvYS9Db2NvYS5oPgotI2ltcG9ydCA8UXVhcnR6L1F1YXJ0ei5oPgotI2ltcG9ydCA8UXVhcnR6
Q29yZS9RdWFydHpDb3JlLmg+Ci0KLS8vIEJyb3dzZXIgZnVuY3Rpb24gdGFibGUKLXN0YXRpYyBO
UE5ldHNjYXBlRnVuY3MqIGJyb3dzZXI7Ci0KLS8vIFN0cnVjdHVyZSBmb3IgcGVyLWluc3RhbmNl
IHN0b3JhZ2UKLXR5cGVkZWYgc3RydWN0IFBsdWdpbk9iamVjdAotewotICAgIE5QUCBucHA7Ci0g
ICAgCi0gICAgTlBXaW5kb3cgd2luZG93OwotICAgIAotICAgIFFDQ29tcG9zaXRpb25MYXllciAq
bGF5ZXI7Ci0gICAgYm9vbCBnb2xkOwotfSBQbHVnaW5PYmplY3Q7Ci0KLU5QRXJyb3IgTlBQX05l
dyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2IG1vZGUsIGludDE2
IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2ZWQpOwot
TlBFcnJvciBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2ZSk7Ci1O
UEVycm9yIE5QUF9TZXRXaW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKLU5Q
RXJyb3IgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwgTlBTdHJl
YW0qIHN0cmVhbSwgTlBCb29sIHNlZWthYmxlLCB1aW50MTYqIHN0eXBlKTsKLU5QRXJyb3IgTlBQ
X0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiBy
ZWFzb24pOwotaW50MzIgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3Ry
ZWFtKTsKLWludDMyIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGlu
dDMyIG9mZnNldCwgaW50MzIgbGVuLCB2b2lkKiBidWZmZXIpOwotdm9pZCBOUFBfU3RyZWFtQXNG
aWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogZm5hbWUpOwot
dm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KTsKLWlu
dDE2IE5QUF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2ZW50KTsKLXZvaWQgTlBQ
X1VSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIFVSTCwgTlBSZWFzb24gcmVhc29u
LCB2b2lkKiBub3RpZnlEYXRhKTsKLU5QRXJyb3IgTlBQX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwg
TlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKLU5QRXJyb3IgTlBQX1NldFZhbHVl
KE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKLQotI3By
YWdtYSBleHBvcnQgb24KLS8vIE1hY2gtbyBlbnRyeSBwb2ludHMKLU5QRXJyb3IgTlBfSW5pdGlh
bGl6ZShOUE5ldHNjYXBlRnVuY3MgKmJyb3dzZXJGdW5jcyk7Ci1OUEVycm9yIE5QX0dldEVudHJ5
UG9pbnRzKE5QUGx1Z2luRnVuY3MgKnBsdWdpbkZ1bmNzKTsKLXZvaWQgTlBfU2h1dGRvd24odm9p
ZCk7Ci0jcHJhZ21hIGV4cG9ydCBvZmYKLQotTlBFcnJvciBOUF9Jbml0aWFsaXplKE5QTmV0c2Nh
cGVGdW5jcyogYnJvd3NlckZ1bmNzKQotewotICAgIGJyb3dzZXIgPSBicm93c2VyRnVuY3M7Ci0g
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QX0dldEVudHJ5UG9pbnRz
KE5QUGx1Z2luRnVuY3MqIHBsdWdpbkZ1bmNzKQotewotICAgIHBsdWdpbkZ1bmNzLT52ZXJzaW9u
ID0gMTE7Ci0gICAgcGx1Z2luRnVuY3MtPnNpemUgPSBzaXplb2YocGx1Z2luRnVuY3MpOwotICAg
IHBsdWdpbkZ1bmNzLT5uZXdwID0gTlBQX05ldzsKLSAgICBwbHVnaW5GdW5jcy0+ZGVzdHJveSA9
IE5QUF9EZXN0cm95OwotICAgIHBsdWdpbkZ1bmNzLT5zZXR3aW5kb3cgPSBOUFBfU2V0V2luZG93
OwotICAgIHBsdWdpbkZ1bmNzLT5uZXdzdHJlYW0gPSBOUFBfTmV3U3RyZWFtOwotICAgIHBsdWdp
bkZ1bmNzLT5kZXN0cm95c3RyZWFtID0gTlBQX0Rlc3Ryb3lTdHJlYW07Ci0gICAgcGx1Z2luRnVu
Y3MtPmFzZmlsZSA9IE5QUF9TdHJlYW1Bc0ZpbGU7Ci0gICAgcGx1Z2luRnVuY3MtPndyaXRlcmVh
ZHkgPSBOUFBfV3JpdGVSZWFkeTsKLSAgICBwbHVnaW5GdW5jcy0+d3JpdGUgPSAoTlBQX1dyaXRl
UHJvY1B0cilOUFBfV3JpdGU7Ci0gICAgcGx1Z2luRnVuY3MtPnByaW50ID0gTlBQX1ByaW50Owot
ICAgIHBsdWdpbkZ1bmNzLT5ldmVudCA9IE5QUF9IYW5kbGVFdmVudDsKLSAgICBwbHVnaW5GdW5j
cy0+dXJsbm90aWZ5ID0gTlBQX1VSTE5vdGlmeTsKLSAgICBwbHVnaW5GdW5jcy0+Z2V0dmFsdWUg
PSBOUFBfR2V0VmFsdWU7Ci0gICAgcGx1Z2luRnVuY3MtPnNldHZhbHVlID0gTlBQX1NldFZhbHVl
OwotICAgIAotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotdm9pZCBOUF9TaHV0ZG93
bih2b2lkKQotewotCi19Ci0KLU5QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUs
IE5QUCBpbnN0YW5jZSwgdWludDE2IG1vZGUsIGludDE2IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hh
ciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2ZWQpCi17Ci0gICAgLy8gQ3JlYXRlIHBlci1pbnN0
YW5jZSBzdG9yYWdlCi0gICAgUGx1Z2luT2JqZWN0ICpvYmogPSAoUGx1Z2luT2JqZWN0ICopbWFs
bG9jKHNpemVvZihQbHVnaW5PYmplY3QpKTsKLSAgICBiemVybyhvYmosIHNpemVvZihQbHVnaW5P
YmplY3QpKTsKLSAgICAKLSAgICBvYmotPm5wcCA9IGluc3RhbmNlOwotICAgIGluc3RhbmNlLT5w
ZGF0YSA9IG9iajsKLSAgICAKLSAgICAvLyBBc2sgdGhlIGJyb3dzZXIgaWYgaXQgc3VwcG9ydHMg
dGhlIENvcmUgQW5pbWF0aW9uIGRyYXdpbmcgbW9kZWwKLSAgICBOUEJvb2wgc3VwcG9ydHNDb3Jl
QW5pbWF0aW9uOwotICAgIGlmIChicm93c2VyLT5nZXR2YWx1ZShpbnN0YW5jZSwgTlBOVnN1cHBv
cnRzQ29yZUFuaW1hdGlvbkJvb2wsICZzdXBwb3J0c0NvcmVBbmltYXRpb24pICE9IE5QRVJSX05P
X0VSUk9SKQotICAgICAgICBzdXBwb3J0c0NvcmVBbmltYXRpb24gPSBGQUxTRTsKLSAgICAKLSAg
ICBpZiAoIXN1cHBvcnRzQ29yZUFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuIE5QRVJSX0lOQ09N
UEFUSUJMRV9WRVJTSU9OX0VSUk9SOwotICAgIAotICAgIC8vIElmIHRoZSBicm93c2VyIHN1cHBv
cnRzIHRoZSBDb3JlIEFuaW1hdGlvbiBkcmF3aW5nIG1vZGVsLCBlbmFibGUgaXQuCi0gICAgYnJv
d3Nlci0+c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5EcmF3aW5nTW9kZWwsICh2b2lkICop
TlBEcmF3aW5nTW9kZWxDb3JlQW5pbWF0aW9uKTsKLQotICAgIC8vIElmIHRoZSBicm93c2VyIHN1
cHBvcnRzIHRoZSBDb2NvYSBldmVudCBtb2RlbCwgZW5hYmxlIGl0LgotICAgIE5QQm9vbCBzdXBw
b3J0c0NvY29hOwotICAgIGlmIChicm93c2VyLT5nZXR2YWx1ZShpbnN0YW5jZSwgTlBOVnN1cHBv
cnRzQ29jb2FCb29sLCAmc3VwcG9ydHNDb2NvYSkgIT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAg
IHN1cHBvcnRzQ29jb2EgPSBGQUxTRTsKLSAgICAKLSAgICBpZiAoIXN1cHBvcnRzQ29jb2EpCi0g
ICAgICAgIHJldHVybiBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lPTl9FUlJPUjsKLSAgICAKLSAg
ICBicm93c2VyLT5zZXR2YWx1ZShpbnN0YW5jZSwgTlBQVnBsdWdpbkV2ZW50TW9kZWwsICh2b2lk
ICopTlBFdmVudE1vZGVsQ29jb2EpOwotICAgIAotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
LX0KLQotTlBFcnJvciBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2
ZSkKLXsKLSAgICAvLyBGcmVlIHBlci1pbnN0YW5jZSBzdG9yYWdlCi0gICAgUGx1Z2luT2JqZWN0
ICpvYmogPSBpbnN0YW5jZS0+cGRhdGE7Ci0KLSAgICBbb2JqLT5sYXllciByZWxlYXNlXTsKLSAg
ICAKLSAgICBmcmVlKG9iaik7Ci0gICAgCi0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQot
Ci1OUEVycm9yIE5QUF9TZXRXaW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KQot
ewotICAgIFBsdWdpbk9iamVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOwotICAgIG9iai0+d2lu
ZG93ID0gKndpbmRvdzsKLQotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLSAKLQotTlBF
cnJvciBOUFBfTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLCBOUFN0cmVh
bSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsIHVpbnQxNiogc3R5cGUpCi17Ci0gICAgKnN0eXBl
ID0gTlBfQVNGSUxFT05MWTsKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJy
b3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJl
YXNvbiByZWFzb24pCi17Ci0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1pbnQzMiBO
UFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0pCi17Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLWludDMyIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJl
YW0sIGludDMyIG9mZnNldCwgaW50MzIgbGVuLCB2b2lkKiBidWZmZXIpCi17Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLXZvaWQgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBz
dHJlYW0sIGNvbnN0IGNoYXIqIGZuYW1lKQotewotfQotCi12b2lkIE5QUF9QcmludChOUFAgaW5z
dGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpCi17Ci0KLX0KLQotc3RhdGljIHZvaWQgaGFu
ZGxlTW91c2VDbGljayhQbHVnaW5PYmplY3QgKm9iaiwgTlBDb2NvYUV2ZW50ICpldmVudCkKLXsK
LSAgICBvYmotPmdvbGQgPSAhb2JqLT5nb2xkOwotICAgIAotICAgIFtvYmotPmxheWVyIHNldFZh
bHVlOltOU051bWJlciBudW1iZXJXaXRoQm9vbDpvYmotPmdvbGRdIGZvcklucHV0S2V5OkAiZ29s
ZCJdOwotfQotCi1pbnQxNiBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVu
dCkKLXsKLSAgICBQbHVnaW5PYmplY3QgKm9iaiA9IGluc3RhbmNlLT5wZGF0YTsKLQotICAgIE5Q
Q29jb2FFdmVudCAqY29jb2FFdmVudCA9IGV2ZW50OwotICAgIAotICAgIHN3aXRjaChjb2NvYUV2
ZW50LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEb3duOgotICAgICAg
ICAgICAgaGFuZGxlTW91c2VDbGljayhvYmosIGNvY29hRXZlbnQpOwotICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAwOwotfQotCi12b2lkIE5QUF9VUkxOb3Rp
ZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSkKLXsKLQotfQotCi1OUEVycm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2Us
IE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKLXsKLSAgICBQbHVnaW5PYmplY3Qg
Km9iaiA9IGluc3RhbmNlLT5wZGF0YTsKLQotICAgIHN3aXRjaCAodmFyaWFibGUpIHsKLSAgICAg
ICAgY2FzZSBOUFBWcGx1Z2luQ29yZUFuaW1hdGlvbkxheWVyOgotICAgICAgICAgICAgaWYgKCFv
YmotPmxheWVyKSB7Ci0gICAgICAgICAgICAgICAgTlNTdHJpbmcgKnBhdGggPSBbW05TQnVuZGxl
IGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLm5ldHNjYXBlY29yZWFuaW1hdGlvbnBs
dWdpbiJdIHBhdGhGb3JSZXNvdXJjZTpAIkNvbXBvc2l0aW9uIiBvZlR5cGU6QCJxdHoiXTsKLQot
ICAgICAgICAgICAgICAgIFFDQ29tcG9zaXRpb24gKmNvbXBvc2l0aW9uID0gW1FDQ29tcG9zaXRp
b24gY29tcG9zaXRpb25XaXRoRmlsZTpwYXRoXTsKLSAgICAgICAgICAgICAgICBvYmotPmxheWVy
ID0gW1tRQ0NvbXBvc2l0aW9uTGF5ZXIgY29tcG9zaXRpb25MYXllcldpdGhDb21wb3NpdGlvbjpj
b21wb3NpdGlvbl0gcmV0YWluXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRvIHJldHVybiBhIHJldGFpbmVkIGxheWVyCi0gICAgICAgICAg
ICAqKChDQUxheWVyICoqKXZhbHVlKSA9IFtvYmotPmxheWVyIHJldGFpbl07Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICAgICAgICAgIAotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0g
ICAgfQotfQotCi1OUEVycm9yIE5QUF9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxl
IHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKLXsKLSAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJP
UjsKLX0KSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlQ29yZUFuaW1hdGlvblBs
dWdpbi90ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2Nh
cGVDb3JlQW5pbWF0aW9uUGx1Z2luL3Rlc3QuaHRtbAkocmV2aXNpb24gNzQzMTQpCisrKyBXZWJL
aXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vdGVzdC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9U
Ui8xOTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08aHRtbD4KLTxoZWFkPgot
PHRpdGxlPkNvY29hIE5ldHNjYXBlIFBsdWctSW48L3RpdGxlPgotPC9oZWFkPgotPGJvZHk+Ci08
ZGl2PgotICAgIDxlbWJlZCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdHlwZT0idGVzdC94LW5l
dHNjYXBlLWNvcmUtYW5pbWF0aW9uLXBsdWdpbiI+PC9lbWJlZD4KLTwvZGl2PgotPC9ib2R5Pgot
PC9odG1sPgpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVDb3JlQW5pbWF0aW9u
UGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2Nh
cGVDb3JlQW5pbWF0aW9uUGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQbHVnaW5zL05l
dHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4ueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzQzMTQpCisrKyBXZWJLaXRFeGFtcGxl
UGx1Z2lucy9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9u
UGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUx
ICswLDAgQEAKLS8vICEkKlVURjgqJCEKLXsKLQlhcmNoaXZlVmVyc2lvbiA9IDE7Ci0JY2xhc3Nl
cyA9IHsKLQl9OwotCW9iamVjdFZlcnNpb24gPSA0MjsKLQlvYmplY3RzID0gewotCi0vKiBCZWdp
biBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTFCQTE3NjBFRjJGQjMyMDA3NTQ0ODYgLyog
Q29tcG9zaXRpb24ucXR6IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTFCQTE3NTBFRjJGQjMyMDA3NTQ0ODYgLyogQ29tcG9zaXRpb24ucXR6ICovOyB9
OwotCQkxQTYyNEU1OTBEQ0JDN0Y2MDA2ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8q
IG1haW4ubSAqLzsgfTsKLQkJMUE2MjUwNDIwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
NjI1MDQxMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07Ci0JCTFBOEM4
NkFBMEVGMkZCOEYwMDNGNkU4MSAvKiBRdWFydHouZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4Qzg2QTkwRUYyRkI4RjAwM0Y2RTgx
IC8qIFF1YXJ0ei5mcmFtZXdvcmsgKi87IH07Ci0JCTFBOEM4N0FBMEVGMkZCQjMwMDNGNkU4MSAv
KiBRdWFydHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBOEM4N0E5MEVGMkZCQjMwMDNGNkU4MSAvKiBRdWFydHpDb3JlLmZy
YW1ld29yayAqLzsgfTsKLQkJOEQ1QjQ5QTgwNDg2N0ZEMzAwMEU0OERBIC8qIEluZm9QbGlzdC5z
dHJpbmdzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
RDVCNDlBNzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi87IH07Ci0vKiBF
bmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCi0JCTA4OUMxNjdFRkU4NDEyNDFDMDJBQUMwNyAvKiBFbmdsaXNoICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDEwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxw
cm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTFC
QTE3NTBFRjJGQjMyMDA3NTQ0ODYgLyogQ29tcG9zaXRpb24ucXR6ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBDb21w
b3NpdGlvbi5xdHo7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNjI0RTU4MERDQkM3
RjYwMDY4OThDOCAvKiBtYWluLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9
IG1haW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2MjUwNDEwRENCQzgxQjAw
Njg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3
b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQkxQThDODZBOTBFRjJGQjhGMDAzRjZFODEg
LyogUXVhcnR6LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6LmZyYW1ld29yazsg
cGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCTFBOEM4N0E5MEVGMkZCQjMwMDNGNkU4MSAvKiBR
dWFydHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5mcmFtZXdv
cms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29y
azsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJOEQ1NzYzMTYwNDg2NzdFQTAwRUE3
N0NEIC8qIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi5wbHVnaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi5wbHVnaW47
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCThENTc2MzE3MDQ4Njc3RUEw
MEVBNzdDRCAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdDsgcGF0aCA9IEluZm8u
cGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0vKiBFbmQgUEJYRmlsZVJlZmVyZW5j
ZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KLQkJOEQ1NzYzMTMwNDg2NzdFQTAwRUE3N0NEIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTYyNTA0MjBEQ0JDODFCMDA2ODk4QzggLyogQ29j
b2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkJMUE4Qzg2QUEwRUYyRkI4RjAwM0Y2
RTgxIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQkxQThDODdBQTBF
RjJGQkIzMDAzRjZFODEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywK
LQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsK
LS8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBC
WEdyb3VwIHNlY3Rpb24gKi8KLQkJMDg5QzE2NkFGRTg0MTIwOUMwMkFBQzA3IC8qIE5ldHNjYXBl
Q29yZUFuaW1hdGlvblBsdWdpbiAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMDhGQjc3QUZGRTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAqLywKLQkJCQkw
ODlDMTY3Q0ZFODQxMjQxQzAyQUFDMDcgLyogUmVzb3VyY2VzICovLAotCQkJCTA4OUMxNjcxRkU4
NDEyMDlDMDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMgKi8sCi0J
CQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFByb2R1Y3RzICovLAotCQkJKTsKLQkJCW5h
bWUgPSBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW47Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwotCQkwODlDMTY3MUZFODQxMjA5QzAyQUFDMDcgLyogRXh0ZXJuYWwgRnJhbWV3
b3JrcyBhbmQgTGlicmFyaWVzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJl
biA9ICgKLQkJCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrICov
LAotCQkJCTFBOEM4NkE5MEVGMkZCOEYwMDNGNkU4MSAvKiBRdWFydHouZnJhbWV3b3JrICovLAot
CQkJCTFBOEM4N0E5MEVGMkZCQjMwMDNGNkU4MSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLywK
LQkJCSk7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyI7Ci0J
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwODlDMTY3Q0ZFODQxMjQxQzAyQUFD
MDcgLyogUmVzb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9
ICgKLQkJCQkxQTFCQTE3NTBFRjJGQjMyMDA3NTQ0ODYgLyogQ29tcG9zaXRpb24ucXR6ICovLAot
CQkJCThENTc2MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJbmZvLnBsaXN0ICovLAotCQkJCThENUI0
OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLywKLQkJCSk7Ci0JCQlu
YW1lID0gUmVzb3VyY2VzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDhG
Qjc3QUZGRTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3Vw
OwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4u
bSAqLywKLQkJCSk7Ci0JCQluYW1lID0gU291cmNlOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFByb2R1Y3RzICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4RDU3NjMxNjA0ODY3N0VB
MDBFQTc3Q0QgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luLnBsdWdpbiAqLywKLQkJCSk7
Ci0JCQluYW1lID0gUHJvZHVjdHM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owot
LyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNl
Y3Rpb24gKi8KLQkJOEQ1NzYzMEQwNDg2NzdFQTAwRUE3N0NEIC8qIE5ldHNjYXBlQ29yZUFuaW1h
dGlvblBsdWdpbiAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxNDlDMjk4MzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIk5ldHNjYXBlQ29yZUFuaW1hdGlvblBs
dWdpbiIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQk4RDU3NjMxMTA0ODY3N0VBMDBFQTc3
Q0QgLyogU291cmNlcyAqLywKLQkJCQk4RDU3NjMwRjA0ODY3N0VBMDBFQTc3Q0QgLyogUmVzb3Vy
Y2VzICovLAotCQkJCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdDRCAvKiBGcmFtZXdvcmtzICovLAot
CQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJ
KTsKLQkJCW5hbWUgPSBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW47Ci0JCQlwcm9kdWN0SW5z
dGFsbFBhdGggPSAiJChIT01FKS9MaWJyYXJ5L0J1bmRsZXMiOwotCQkJcHJvZHVjdE5hbWUgPSBO
ZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW47Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gOEQ1NzYz
MTYwNDg2NzdFQTAwRUE3N0NEIC8qIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi5wbHVnaW4g
Ki87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZSI7Ci0J
CX07Ci0vKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJv
amVjdCBzZWN0aW9uICovCi0JCTA4OUMxNjY5RkU4NDEyMDlDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLyA9IHsKLQkJCWlzYSA9IFBCWFByb2plY3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQ5QzI5ODcwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luIiAqLzsKLQkJCWNv
bXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7Ci0JCQlkZXZlbG9wbWVudFJlZ2lvbiA9
IEVuZ2xpc2g7Ci0JCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKLQkJCWtub3duUmVnaW9u
cyA9ICgKLQkJCQlFbmdsaXNoLAotCQkJCUphcGFuZXNlLAotCQkJCUZyZW5jaCwKLQkJCQlHZXJt
YW4sCi0JCQkpOwotCQkJbWFpbkdyb3VwID0gMDg5QzE2NkFGRTg0MTIwOUMwMkFBQzA3IC8qIE5l
dHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbiAqLzsKLQkJCXByb2plY3REaXJQYXRoID0gIiI7Ci0J
CQlwcm9qZWN0Um9vdCA9ICIiOwotCQkJdGFyZ2V0cyA9ICgKLQkJCQk4RDU3NjMwRDA0ODY3N0VB
MDBFQTc3Q0QgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luICovLAotCQkJKTsKLQkJfTsK
LS8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0JCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNvdXJj
ZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTFBMUJBMTc2MEVGMkZCMzIw
MDc1NDQ4NiAvKiBDb21wb3NpdGlvbi5xdHogaW4gUmVzb3VyY2VzICovLAotCQkJCThENUI0OUE4
MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCi0J
CQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0v
KiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NEIC8q
IFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTYyNEU1OTBEQ0JD
N0Y2MDA2ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAq
LwotCQk4RDVCNDlBNzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhWYXJpYW50R3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkwODlDMTY3
RUZFODQxMjQxQzAyQUFDMDcgLyogRW5nbGlzaCAqLywKLQkJCSk7Ci0JCQluYW1lID0gSW5mb1Bs
aXN0LnN0cmluZ3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotLyogRW5kIFBC
WFZhcmlhbnRHcm91cCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KLQkJMTQ5QzI5ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovID0gewot
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCQlHQ0NfREVCVUdHSU5HX1NZTUJPTFMgPSBmdWxs
OwotCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwotCQkJCUdDQ19FTkFCTEVfRklYX0FORF9D
T05USU5VRSA9IFlFUzsKLQkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7Ci0JCQkJR0NDX09QVElN
SVpBVElPTl9MRVZFTCA9IDA7Ci0JCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwotCQkJ
CUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7Ci0JCQkJUFJPRFVDVF9O
QU1FID0gTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luOwotCQkJCVdSQVBQRVJfRVhURU5TSU9O
ID0gcGx1Z2luOwotCQkJCVpFUk9fTElOSyA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7
Ci0JCX07Ci0JCTE0OUMyOTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovID0gewotCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFS
Q0hTID0gKAotCQkJCQlwcGMsCi0JCQkJCWkzODYsCi0JCQkJKTsKLQkJCQlHQ0NfREVCVUdHSU5H
X1NZTUJPTFMgPSBmdWxsOwotCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IE5P
OwotCQkJCUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLQkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVM
ID0gMDsKLQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7Ci0JCQkJSU5TVEFMTF9QQVRI
ID0gIiQoSE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCQlQUk9EVUNUX05BTUUgPSBOZXRzY2Fw
ZUNvcmVBbmltYXRpb25QbHVnaW47Ci0JCQkJV1JBUFBFUl9FWFRFTlNJT04gPSBwbHVnaW47Ci0J
CQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTE0OUMyOTg4MDg5MDJDNTMwMDhBOUVG
QyAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVp
bGRTZXR0aW5ncyA9IHsKLQkJCQlBUkNIUyA9IGkzODY7Ci0JCQkJQVJDSFNfU1RBTkRBUkRfMzJf
NjRfQklUX1BSRV9YQ09ERV8zXzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKLQkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7Ci0JCQkJUFJFQklORElORyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsK
LQkJfTsKLQkJMTQ5QzI5ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQVJD
SFMgPSBpMzg2OwotCQkJCUFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVF9QUkVfWENPREVfM18xID0g
InBwYyBpMzg2IHBwYzY0IHg4Nl82NCI7Ci0JCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUg
PSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwotCQkJCVBSRUJJTkRJ
TkcgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0J1aWxk
Q29uZmlndXJhdGlvbiBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qg
c2VjdGlvbiAqLwotCQkxNDlDMjk4MzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIk5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdp
biIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKLQkJCQkxNDlDMjk4NDA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8sCi0J
CQkJMTQ5QzI5ODUwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJMTQ5QzI5ODcwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiTmV0c2NhcGVDb3JlQW5pbWF0aW9u
UGx1Z2luIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENv
bmZpZ3VyYXRpb25zID0gKAotCQkJCTE0OUMyOTg4MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAq
LywKLQkJCQkxNDlDMjk4OTA4OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0J
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwotLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2Vj
dGlvbiAqLwotCX07Ci0Jcm9vdE9iamVjdCA9IDA4OUMxNjY5RkU4NDEyMDlDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLzsKLX0KSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBl
SW5wdXRNZXRob2RQbHVnaW4vSW5mby5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRFeGFtcGxl
UGx1Z2lucy9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL0luZm8ucGxpc3QJKHJldmlzaW9uIDc0
MzE0KQorKysgV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9J
bmZvLnBsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBs
ZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5
TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5DRkJ1
bmRsZURldmVsb3BtZW50UmVnaW9uPC9rZXk+Ci0JPHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+Ci0J
PGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlSW5wdXRNZXRo
b2RQbHVnaW48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KLQk8c3RyaW5n
Pjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+Ci0JPHN0cmluZz5jb20u
YXBwbGUubmV0c2NhcGVpbnB1dG1ldGhvZHBsdWdpbjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJ
bmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KLQk8c3RyaW5nPjYuMDwvc3RyaW5nPgotCTxrZXk+
Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgotCTxzdHJpbmc+QlJQTDwvc3RyaW5nPgotCTxrZXk+
Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5nPgot
CTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8L2tleT4KLQk8c3RyaW5nPj8/Pz88L3N0cmluZz4KLQk8
a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgotCTxzdHJpbmc+MS4wPC9zdHJpbmc+Ci0JPGtleT5X
ZWJQbHVnaW5EZXNjcmlwdGlvbjwva2V5PgotCTxzdHJpbmc+U2ltcGxlIE5ldHNjYXBlIHBsdWct
aW4gdGhhdCBzaG93cyBob3cgdG8gdXNlIGlucHV0IG1ldGhvZHM8L3N0cmluZz4KLQk8a2V5Pldl
YlBsdWdpbk1JTUVUeXBlczwva2V5PgotCTxkaWN0PgotCQk8a2V5PnRlc3QveC1uZXRzY2FwZS1p
bnB1dC1tZXRob2QtcGx1Z2luPC9rZXk+Ci0JCTxkaWN0PgotCQkJPGtleT5XZWJQbHVnaW5UeXBl
RGVzY3JpcHRpb248L2tleT4KLQkJCTxzdHJpbmc+TmV0c2NhcGUgSW5wdXQgTWV0aG9kIFBsdWct
aW48L3N0cmluZz4KLQkJPC9kaWN0PgotCTwvZGljdD4KLQk8a2V5PldlYlBsdWdpbk5hbWU8L2tl
eT4KLQk8c3RyaW5nPk5ldHNjYXBlIElucHV0IE1ldGhvZCBQbHVnLWluPC9zdHJpbmc+Ci08L2Rp
Y3Q+Ci08L3BsaXN0PgpJbmRleDogV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVJbnB1dE1l
dGhvZFBsdWdpbi9tYWluLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0RXhhbXBsZVBsdWdpbnMvTmV0
c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9tYWluLm0JKHJldmlzaW9uIDc0MzE0KQorKysgV2ViS2l0
RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9tYWluLm0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzk4ICswLDAgQEAKLS8qCi0gSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0
d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IGluCi0gY29uc2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byB0aGUgZm9sbG93aW5nIHRl
cm1zLCBhbmQgeW91ciB1c2UsIGluc3RhbGxhdGlvbiwgCi0gbW9kaWZpY2F0aW9uIG9yIHJlZGlz
dHJpYnV0aW9uIG9mIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBv
ZiB0aGVzZSAKLSB0ZXJtcy4gIElmIHlvdSBkbyBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywg
cGxlYXNlIGRvIG5vdCB1c2UsIGluc3RhbGwsIG1vZGlmeSBvciAKLSByZWRpc3RyaWJ1dGUgdGhp
cyBBcHBsZSBzb2Z0d2FyZS4KLSAKLSBJbiBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50
IHRvIGFiaWRlIGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCBzdWJqZWN0IHRvIHRoZXNlIAot
IHRlcm1zLCBBcHBsZSBncmFudHMgeW91IGEgcGVyc29uYWwsIG5vbi1leGNsdXNpdmUgbGljZW5z
ZSwgdW5kZXIgQXBwbGXigJlzIGNvcHlyaWdodHMgaW4gCi0gdGhpcyBvcmlnaW5hbCBBcHBsZSBz
b2Z0d2FyZSAodGhlICJBcHBsZSBTb2Z0d2FyZSIpLCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5
IGFuZCAKLSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJlLCB3aXRoIG9yIHdpdGhvdXQg
bW9kaWZpY2F0aW9ucywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkgCi0gZm9ybXM7IHByb3ZpZGVk
IHRoYXQgaWYgeW91IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUgaW4gaXRzIGVudGly
ZXR5IGFuZCB3aXRob3V0IAotIG1vZGlmaWNhdGlvbnMsIHlvdSBtdXN0IHJldGFpbiB0aGlzIG5v
dGljZSBhbmQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCBkaXNjbGFpbWVycyBpbiBhbGwgCi0gc3Vj
aCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLiAgTmVpdGhlciB0aGUgbmFt
ZSwgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcyAKLSBvciBsb2dvcyBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIAotIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVzc2x5Ci0gc3RhdGVkIGlu
IHRoaXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3IgaW1w
bGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKLSBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90IGxp
bWl0ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5mcmluZ2VkIGJ5IHlvdXIg
Ci0gZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3aGljaCB0aGUgQXBwbGUg
U29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KLSAKLSBUaGUgQXBwbGUgU29mdHdhcmUgaXMg
cHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBiYXNpcy4gIEFQUExFIE1BS0VTIE5PIFdB
UlJBTlRJRVMsIAotIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRB
VElPTiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsIAotIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FSRElO
RyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTIAotIFVTRSBBTkQgT1BFUkFUSU9OIEFMT05FIE9S
IElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNUUy4KLSAKLSBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRBTCBP
UiBDT05TRVFVRU5USUFMIAotIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIAotIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsIAotIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FUSU9O
IEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBIT1dFVkVSIENBVVNF
RCBBTkQgCi0gV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUiAKLSBPVEhFUldJU0UsIEVWRU4gSUYg
QVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCA8V2ViS2l0L25wYXBpLmg+Ci0jaW1wb3J0IDxXZWJLaXQvbnBmdW5j
dGlvbnMuaD4KLSNpbXBvcnQgPFdlYktpdC9ucHJ1bnRpbWUuaD4KLQotI2ltcG9ydCA8Q29jb2Ev
Q29jb2EuaD4KLQotLy8gQnJvd3NlciBmdW5jdGlvbiB0YWJsZQotc3RhdGljIE5QTmV0c2NhcGVG
dW5jcyogYnJvd3NlcjsKLQotLy8gU3RydWN0dXJlIGZvciBwZXItaW5zdGFuY2Ugc3RvcmFnZQot
dHlwZWRlZiBzdHJ1Y3QgUGx1Z2luT2JqZWN0Ci17Ci0gICAgTlBQIG5wcDsKLSAgICAKLSAgICBO
UFdpbmRvdyB3aW5kb3c7Ci0gICAgCi0gICAgYm9vbCBwbHVnaW5IYXNGb2N1czsKLSAgICAKLSAg
ICBib29sIHRleHRGaWVsZEhhc0ZvY3VzOwotICAgIE5TUmVjdCB0ZXh0RmllbGRSZWN0OwotICAg
IAotICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZTsKLSAgICBOU1RleHRTdG9yYWdlICp0ZXh0U3Rv
cmFnZTsKLSAgICBOU0xheW91dE1hbmFnZXIgKmxheW91dE1hbmFnZXI7Ci0gICAgTlNUZXh0Q29u
dGFpbmVyICp0ZXh0Q29udGFpbmVyOwotICAgIAotfSBQbHVnaW5PYmplY3Q7Ci0KLU5QRXJyb3Ig
TlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2IG1vZGUs
IGludDE2IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2
ZWQpOwotTlBFcnJvciBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2
ZSk7Ci1OUEVycm9yIE5QUF9TZXRXaW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93
KTsKLU5QRXJyb3IgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwg
TlBTdHJlYW0qIHN0cmVhbSwgTlBCb29sIHNlZWthYmxlLCB1aW50MTYqIHN0eXBlKTsKLU5QRXJy
b3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJl
YXNvbiByZWFzb24pOwotaW50MzIgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVh
bSogc3RyZWFtKTsKLWludDMyIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJl
YW0sIGludDMyIG9mZnNldCwgaW50MzIgbGVuLCB2b2lkKiBidWZmZXIpOwotdm9pZCBOUFBfU3Ry
ZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogZm5h
bWUpOwotdm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50
KTsKLWludDE2IE5QUF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2ZW50KTsKLXZv
aWQgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIFVSTCwgTlBSZWFzb24g
cmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsKLU5QRXJyb3IgTlBQX0dldFZhbHVlKE5QUCBpbnN0
YW5jZSwgTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKTsKLU5QRXJyb3IgTlBQX1Nl
dFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKTsK
LQotI3ByYWdtYSBleHBvcnQgb24KLS8vIE1hY2gtbyBlbnRyeSBwb2ludHMKLU5QRXJyb3IgTlBf
SW5pdGlhbGl6ZShOUE5ldHNjYXBlRnVuY3MqIGJyb3dzZXJGdW5jcyk7Ci1OUEVycm9yIE5QX0dl
dEVudHJ5UG9pbnRzKE5QUGx1Z2luRnVuY3MqIHBsdWdpbkZ1bmNzKTsKLXZvaWQgTlBfU2h1dGRv
d24odm9pZCk7Ci0jcHJhZ21hIGV4cG9ydCBvZmYKLQotTlBFcnJvciBOUF9Jbml0aWFsaXplKE5Q
TmV0c2NhcGVGdW5jcyogYnJvd3NlckZ1bmNzKQotewotICAgIGJyb3dzZXIgPSBicm93c2VyRnVu
Y3M7Ci0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QX0dldEVudHJ5
UG9pbnRzKE5QUGx1Z2luRnVuY3MqIHBsdWdpbkZ1bmNzKQotewotICAgIHBsdWdpbkZ1bmNzLT52
ZXJzaW9uID0gMTE7Ci0gICAgcGx1Z2luRnVuY3MtPnNpemUgPSBzaXplb2YocGx1Z2luRnVuY3Mp
OwotICAgIHBsdWdpbkZ1bmNzLT5uZXdwID0gTlBQX05ldzsKLSAgICBwbHVnaW5GdW5jcy0+ZGVz
dHJveSA9IE5QUF9EZXN0cm95OwotICAgIHBsdWdpbkZ1bmNzLT5zZXR3aW5kb3cgPSBOUFBfU2V0
V2luZG93OwotICAgIHBsdWdpbkZ1bmNzLT5uZXdzdHJlYW0gPSBOUFBfTmV3U3RyZWFtOwotICAg
IHBsdWdpbkZ1bmNzLT5kZXN0cm95c3RyZWFtID0gTlBQX0Rlc3Ryb3lTdHJlYW07Ci0gICAgcGx1
Z2luRnVuY3MtPmFzZmlsZSA9IE5QUF9TdHJlYW1Bc0ZpbGU7Ci0gICAgcGx1Z2luRnVuY3MtPndy
aXRlcmVhZHkgPSBOUFBfV3JpdGVSZWFkeTsKLSAgICBwbHVnaW5GdW5jcy0+d3JpdGUgPSAoTlBQ
X1dyaXRlUHJvY1B0cilOUFBfV3JpdGU7Ci0gICAgcGx1Z2luRnVuY3MtPnByaW50ID0gTlBQX1By
aW50OwotICAgIHBsdWdpbkZ1bmNzLT5ldmVudCA9IE5QUF9IYW5kbGVFdmVudDsKLSAgICBwbHVn
aW5GdW5jcy0+dXJsbm90aWZ5ID0gTlBQX1VSTE5vdGlmeTsKLSAgICBwbHVnaW5GdW5jcy0+Z2V0
dmFsdWUgPSBOUFBfR2V0VmFsdWU7Ci0gICAgcGx1Z2luRnVuY3MtPnNldHZhbHVlID0gTlBQX1Nl
dFZhbHVlOwotICAgIAotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotdm9pZCBOUF9T
aHV0ZG93bih2b2lkKQotewotfQotCi1OUEVycm9yIE5QUF9OZXcoTlBNSU1FVHlwZSBwbHVnaW5U
eXBlLCBOUFAgaW5zdGFuY2UsIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10s
IGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKQotewotICAgIC8vIENyZWF0ZSBwZXIt
aW5zdGFuY2Ugc3RvcmFnZQotICAgIFBsdWdpbk9iamVjdCogb2JqID0gKFBsdWdpbk9iamVjdCop
bWFsbG9jKHNpemVvZihQbHVnaW5PYmplY3QpKTsKLSAgICBiemVybyhvYmosIHNpemVvZihQbHVn
aW5PYmplY3QpKTsKLSAgICAKLSAgICBvYmotPm5wcCA9IGluc3RhbmNlOwotICAgIGluc3RhbmNl
LT5wZGF0YSA9IG9iajsKLSAgICAKLSAgICAvLyBBc2sgdGhlIGJyb3dzZXIgaWYgaXQgc3VwcG9y
dHMgdGhlIENvcmVHcmFwaGljcyBkcmF3aW5nIG1vZGVsCi0gICAgTlBCb29sIHN1cHBvcnRzQ29y
ZUdyYXBoaWNzOwotICAgIGlmIChicm93c2VyLT5nZXR2YWx1ZShpbnN0YW5jZSwgTlBOVnN1cHBv
cnRzQ29yZUdyYXBoaWNzQm9vbCwgJnN1cHBvcnRzQ29yZUdyYXBoaWNzKSAhPSBOUEVSUl9OT19F
UlJPUikKLSAgICAgICAgc3VwcG9ydHNDb3JlR3JhcGhpY3MgPSBGQUxTRTsKLSAgICAKLSAgICBp
ZiAoIXN1cHBvcnRzQ29yZUdyYXBoaWNzKQotICAgICAgICByZXR1cm4gTlBFUlJfSU5DT01QQVRJ
QkxFX1ZFUlNJT05fRVJST1I7Ci0gICAgCi0gICAgLy8gSWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMg
dGhlIENvcmVHcmFwaGljcyBkcmF3aW5nIG1vZGVsLCBlbmFibGUgaXQuCi0gICAgYnJvd3Nlci0+
c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5EcmF3aW5nTW9kZWwsICh2b2lkKilOUERyYXdp
bmdNb2RlbENvcmVHcmFwaGljcyk7Ci0KLSAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0
aGUgQ29jb2EgZXZlbnQgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBOUEJvb2wgc3VwcG9ydHNDb2Nv
YTsKLSAgICBpZiAoYnJvd3Nlci0+Z2V0dmFsdWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0c0NvY29h
Qm9vbCwgJnN1cHBvcnRzQ29jb2EpICE9IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBzdXBwb3J0
c0NvY29hID0gRkFMU0U7Ci0gICAgCi0gICAgaWYgKCFzdXBwb3J0c0NvY29hKQotICAgICAgICBy
ZXR1cm4gTlBFUlJfSU5DT01QQVRJQkxFX1ZFUlNJT05fRVJST1I7Ci0gICAgCi0gICAgYnJvd3Nl
ci0+c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5FdmVudE1vZGVsLCAodm9pZCopTlBFdmVu
dE1vZGVsQ29jb2EpOwotCi0gICAgb2JqLT50ZXh0RmllbGRSZWN0ID0gTlNNYWtlUmVjdCgxMCwg
MTAsIDIwMCwgMTAwKTsKLQotICAgIG9iai0+dGV4dFN0b3JhZ2UgPSBbW05TVGV4dFN0b3JhZ2Ug
YWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl07Ci0gICAgb2JqLT5sYXlvdXRNYW5hZ2VyID0gW1tO
U0xheW91dE1hbmFnZXIgYWxsb2NdIGluaXRdOwotICAgIFtvYmotPnRleHRTdG9yYWdlIGFkZExh
eW91dE1hbmFnZXI6b2JqLT5sYXlvdXRNYW5hZ2VyXTsKLSAgICAKLSAgICBvYmotPnRleHRDb250
YWluZXIgPSBbW05TVGV4dENvbnRhaW5lciBhbGxvY10gaW5pdFdpdGhDb250YWluZXJTaXplOm9i
ai0+dGV4dEZpZWxkUmVjdC5zaXplXTsKLSAgICBbb2JqLT5sYXlvdXRNYW5hZ2VyIGFkZFRleHRD
b250YWluZXI6b2JqLT50ZXh0Q29udGFpbmVyXTsKLQotICAgIG9iai0+c2VsZWN0ZWRSYW5nZS5s
b2NhdGlvbiA9IFtvYmotPnRleHRTdG9yYWdlIGxlbmd0aF07Ci0gICAgCi0gICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9EZXN0cm95KE5QUCBpbnN0YW5jZSwgTlBT
YXZlZERhdGEqKiBzYXZlKQotewotICAgIC8vIEZyZWUgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLSAg
ICBQbHVnaW5PYmplY3QqIG9iaiA9IGluc3RhbmNlLT5wZGF0YTsKLSAgICAKLSAgICBbb2JqLT50
ZXh0U3RvcmFnZSByZWxlYXNlXTsKLSAgICBbb2JqLT5sYXlvdXRNYW5hZ2VyIHJlbGVhc2VdOwot
ICAgIAotICAgIGZyZWUob2JqKTsKLSAgICAKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19
Ci0KLU5QRXJyb3IgTlBQX1NldFdpbmRvdyhOUFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cp
Ci17Ci0gICAgUGx1Z2luT2JqZWN0KiBvYmogPSBpbnN0YW5jZS0+cGRhdGE7Ci0gICAgb2JqLT53
aW5kb3cgPSAqd2luZG93OwotCi0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotIAotCi1O
UEVycm9yIE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsIE5QU3Ry
ZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwgdWludDE2KiBzdHlwZSkKLXsKLSAgICAqc3R5
cGUgPSBOUF9BU0ZJTEVPTkxZOwotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBF
cnJvciBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIE5Q
UmVhc29uIHJlYXNvbikKLXsKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLWludDMy
IE5QUF9Xcml0ZVJlYWR5KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotaW50MzIgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0
cmVhbSwgaW50MzIgb2Zmc2V0LCBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcikKLXsKLSAgICByZXR1
cm4gMDsKLX0KLQotdm9pZCBOUFBfU3RyZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0q
IHN0cmVhbSwgY29uc3QgY2hhciogZm5hbWUpCi17Ci19Ci0KLXZvaWQgTlBQX1ByaW50KE5QUCBp
bnN0YW5jZSwgTlBQcmludCogcGxhdGZvcm1QcmludCkKLXsKLQotfQotCi1zdGF0aWMgdm9pZCBo
YW5kbGVEcmF3KFBsdWdpbk9iamVjdCogb2JqLCBOUENvY29hRXZlbnQgKmV2ZW50KQotewotICAg
IE5TR3JhcGhpY3NDb250ZXh0ICpvbGRDb250ZXh0ID0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0gcmV0YWluXTsKLSAgICAKLSAgICBOU0dyYXBoaWNzQ29udGV4dCAqY29udGV4
dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmV2
ZW50LT5kYXRhLmRyYXcuY29udGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsaXBwZWQ6WUVTXTsK
LQotCi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OmNvbnRleHRdOwot
ICAgIAotICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBvYmotPndpbmRvdy53aWR0
aCwgb2JqLT53aW5kb3cuaGVpZ2h0KTsKLSAgICAKLSAgICBbW05TQ29sb3IgbGlnaHRHcmF5Q29s
b3JdIHNldF07Ci0gICAgW05TQmV6aWVyUGF0aCBmaWxsUmVjdDpyZWN0XTsKLQotICAgIGlmIChv
YmotPnBsdWdpbkhhc0ZvY3VzKSB7Ci0gICAgICAgIFtbTlNDb2xvciBibGFja0NvbG9yXSBzZXRd
OwotICAgICAgICBbTlNCZXppZXJQYXRoIHN0cm9rZVJlY3Q6cmVjdF07Ci0gICAgfQotICAgIAot
ICAgIFtbTlNDb2xvciB3aGl0ZUNvbG9yXSBzZXRdOwotICAgIFtOU0JlemllclBhdGggZmlsbFJl
Y3Q6b2JqLT50ZXh0RmllbGRSZWN0XTsKLQotICAgIC8vIERyYXcgdGhlIHRleHQKLSAgICBOU1Jh
bmdlIGdseXBoUmFuZ2UgPSBbb2JqLT5sYXlvdXRNYW5hZ2VyIGdseXBoUmFuZ2VGb3JUZXh0Q29u
dGFpbmVyOm9iai0+dGV4dENvbnRhaW5lcl07Ci0gICAgaWYgKGdseXBoUmFuZ2UubGVuZ3RoID4g
MCkgewotICAgICAgICBbb2JqLT5sYXlvdXRNYW5hZ2VyIGRyYXdCYWNrZ3JvdW5kRm9yR2x5cGhS
YW5nZTpnbHlwaFJhbmdlIGF0UG9pbnQ6b2JqLT50ZXh0RmllbGRSZWN0Lm9yaWdpbl07Ci0gICAg
ICAgIFtvYmotPmxheW91dE1hbmFnZXIgZHJhd0dseXBoc0ZvckdseXBoUmFuZ2U6Z2x5cGhSYW5n
ZSBhdFBvaW50Om9iai0+dGV4dEZpZWxkUmVjdC5vcmlnaW5dOwotICAgIH0KLSAgICAKLSAgICBO
U0JlemllclBhdGggKnRleHRJbnB1dEJvcmRlciA9IFtOU0JlemllclBhdGggYmV6aWVyUGF0aFdp
dGhSZWN0Om9iai0+dGV4dEZpZWxkUmVjdF07Ci0gICAgW1tOU0NvbG9yIGJsYWNrQ29sb3JdIHNl
dF07Ci0gICAgCi0gICAgaWYgKG9iai0+cGx1Z2luSGFzRm9jdXMgJiYgb2JqLT50ZXh0RmllbGRI
YXNGb2N1cykKLSAgICAgICAgW3RleHRJbnB1dEJvcmRlciBzZXRMaW5lV2lkdGg6Ml07Ci0gICAg
ZWxzZQotICAgICAgICBbdGV4dElucHV0Qm9yZGVyIHNldExpbmVXaWR0aDoxXTsKLSAgICAKLSAg
ICBbdGV4dElucHV0Qm9yZGVyIHN0cm9rZV07Ci0gICAgCi0gICAgaWYgKG9iai0+cGx1Z2luSGFz
Rm9jdXMgJiYgb2JqLT50ZXh0RmllbGRIYXNGb2N1cykgewotICAgICAgICBOU1VJbnRlZ2VyIHJl
Y3RDb3VudDsKLSAgICAgICAgTlNSZWN0ICpyZWN0QXJyYXkgPSBbb2JqLT5sYXlvdXRNYW5hZ2Vy
IHJlY3RBcnJheUZvckNoYXJhY3RlclJhbmdlOm9iai0+c2VsZWN0ZWRSYW5nZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW5TZWxlY3RlZENoYXJhY3Rl
clJhbmdlOm9iai0+c2VsZWN0ZWRSYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpblRleHRDb250YWluZXI6b2JqLT50ZXh0Q29udGFp
bmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjdENvdW50OiZyZWN0Q291bnRdOwotICAgICAgICAKLSAgICAgICAgW1tO
U0NvbG9yIGJsYWNrQ29sb3JdIHNldF07Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWN0Q291bnQ7IGkrKykgewotICAgICAgICAgICAgTlNSZWN0IHJlY3QgPSByZWN0QXJyYXlb
aV07Ci0gICAgICAgICAgICByZWN0Lm9yaWdpbi54ICs9IG9iai0+dGV4dEZpZWxkUmVjdC5vcmln
aW4ueDsKLSAgICAgICAgICAgIHJlY3Qub3JpZ2luLnkgKz0gb2JqLT50ZXh0RmllbGRSZWN0Lm9y
aWdpbi55OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBbTlNCZXppZXJQYXRoIHN0cm9rZVJl
Y3Q6cmVjdF07Ci0gICAgICAgIH0gICAgICAgIAotICAgIH0KLSAgICAKLSAgICBbTlNHcmFwaGlj
c0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6b2xkQ29udGV4dF07Ci19Ci0KLXN0YXRpYyB2b2lk
IGludmFsaWRhdGVQbHVnaW4oUGx1Z2luT2JqZWN0KiBvYmopCi17Ci0gICAgTlBSZWN0IHJlY3Q7
Ci0gICAgcmVjdC5sZWZ0ID0gMDsKLSAgICByZWN0LnRvcCA9IDA7Ci0gICAgcmVjdC5yaWdodCA9
IG9iai0+d2luZG93LndpZHRoOwotICAgIHJlY3QuYm90dG9tID0gb2JqLT53aW5kb3cuaGVpZ2h0
OwotICAgIAotICAgIGJyb3dzZXItPmludmFsaWRhdGVyZWN0KG9iai0+bnBwLCAmcmVjdCk7ICAg
IAotfQotCi1zdGF0aWMgdm9pZCBoYW5kbGVGb2N1c0NoYW5nZWQoTlBDb2NvYUV2ZW50KiBjb2Nv
YUV2ZW50LCBQbHVnaW5PYmplY3QqIG9iaikKLXsKLSAgICBvYmotPnBsdWdpbkhhc0ZvY3VzID0g
Y29jb2FFdmVudC0+ZGF0YS5mb2N1cy5oYXNGb2N1czsKLSAgICAKLSAgICBpbnZhbGlkYXRlUGx1
Z2luKG9iaik7Ci19Ci0KLXN0YXRpYyB2b2lkIGhhbmRsZU1vdXNlTW92ZWQoTlBDb2NvYUV2ZW50
KiBjb2NvYUV2ZW50LCBQbHVnaW5PYmplY3QqIG9iaikKLXsKLSAgICBOU1BvaW50IHBvaW50ID0g
TlNNYWtlUG9pbnQoY29jb2FFdmVudC0+ZGF0YS5tb3VzZS5wbHVnaW5YLCBjb2NvYUV2ZW50LT5k
YXRhLm1vdXNlLnBsdWdpblkpOwotICAgIAotICAgIGlmIChOU1BvaW50SW5SZWN0KHBvaW50LCBv
YmotPnRleHRGaWVsZFJlY3QpKQotICAgICAgICBbW05TQ3Vyc29yIElCZWFtQ3Vyc29yXSBzZXRd
OwotICAgIGVsc2UKLSAgICAgICAgW1tOU0N1cnNvciBhcnJvd0N1cnNvcl0gc2V0XTsKLX0KLQot
c3RhdGljIHZvaWQgaGFuZGxlTW91c2VEb3duKE5QQ29jb2FFdmVudCogY29jb2FFdmVudCwgUGx1
Z2luT2JqZWN0KiBvYmopIAotewotICAgIE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludChjb2Nv
YUV2ZW50LT5kYXRhLm1vdXNlLnBsdWdpblgsIGNvY29hRXZlbnQtPmRhdGEubW91c2UucGx1Z2lu
WSk7Ci0gICAgCi0gICAgb2JqLT50ZXh0RmllbGRIYXNGb2N1cyA9IE5TUG9pbnRJblJlY3QocG9p
bnQsIG9iai0+dGV4dEZpZWxkUmVjdCk7Ci0gICAgCi0gICAgaW52YWxpZGF0ZVBsdWdpbihvYmop
OwotfQotCi1zdGF0aWMgaW50MTZfdCBoYW5kbGVUZXh0RmllbGRLZXlEb3duKE5QQ29jb2FFdmVu
dCogZXZlbnQsIFBsdWdpbk9iamVjdCogb2JqKQotewotICAgIE5TU3RyaW5nICpzdHJpbmcgPSAo
TlNTdHJpbmcgKilldmVudC0+ZGF0YS5rZXkuY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOwot
ICAgIAotICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcgbGVuZ3RoXSA+IDAgPyBbc3RyaW5nIGNoYXJh
Y3RlckF0SW5kZXg6MF0gOiAwOwotICAgIAotICAgIHN3aXRjaCAoYykgewotICAgICAgICBjYXNl
IE5TTGVmdEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBpZiAob2JqLT5zZWxlY3RlZFJh
bmdlLmxvY2F0aW9uID4gMCkgewotICAgICAgICAgICAgICAgIG9iai0+c2VsZWN0ZWRSYW5nZS5s
b2NhdGlvbi0tOwotICAgICAgICAgICAgICAgIGludmFsaWRhdGVQbHVnaW4ob2JqKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBpZiAob2JqLT5zZWxlY3Rl
ZFJhbmdlLmxvY2F0aW9uIDwgW29iai0+dGV4dFN0b3JhZ2UgbGVuZ3RoXSkgewotICAgICAgICAg
ICAgICAgIG9iai0+c2VsZWN0ZWRSYW5nZS5sb2NhdGlvbisrOyAgCi0gICAgICAgICAgICAgICAg
aW52YWxpZGF0ZVBsdWdpbihvYmopOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIC8vIFJldHVybiAwIGFuZCBsZXQgdGhlIHRleHQgaW5wdXQgc3lzdGVtIGhhbmRs
ZSBpdC4KLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotCi1zdGF0aWMgaW50MTZf
dCBoYW5kbGVUZXh0SW5wdXQoTlBDb2NvYUV2ZW50KiBldmVudCwgUGx1Z2luT2JqZWN0KiBvYmop
Ci17Ci0gICAgTlNTdHJpbmcgKnN0cmluZyA9IChOU1N0cmluZyAqKWV2ZW50LT5kYXRhLnRleHQu
dGV4dDsKLSAgICBOU1JhbmdlIHJhbmdlID0gb2JqLT5zZWxlY3RlZFJhbmdlOwotICAgICAgICAK
LSAgICBbb2JqLT50ZXh0U3RvcmFnZSByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6cmFuZ2Ugd2l0
aFN0cmluZzpzdHJpbmddOwotICAgICAgICAKLSAgICBvYmotPnNlbGVjdGVkUmFuZ2UubG9jYXRp
b24gPSByYW5nZS5sb2NhdGlvbiArIFtzdHJpbmcgbGVuZ3RoXTsKLSAgICBvYmotPnNlbGVjdGVk
UmFuZ2UubGVuZ3RoID0gMDsKLQotICAgIGludmFsaWRhdGVQbHVnaW4ob2JqKTsKLSAgICAKLSAg
ICByZXR1cm4gMTsKLX0KLQotaW50MTYgTlBQX0hhbmRsZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9p
ZCogZXZlbnQpCi17Ci0gICAgUGx1Z2luT2JqZWN0KiBvYmogPSBpbnN0YW5jZS0+cGRhdGE7Ci0K
LSAgICBOUENvY29hRXZlbnQqIGNvY29hRXZlbnQgPSBldmVudDsKLSAgICAKLSAgICBzd2l0Y2gg
KGNvY29hRXZlbnQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnREcmF3UmVjdDoK
LSAgICAgICAgICAgIGhhbmRsZURyYXcob2JqLCBjb2NvYUV2ZW50KTsKLSAgICAgICAgICAgIHJl
dHVybiAxOwotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudEZvY3VzQ2hhbmdlZDoKLSAgICAgICAg
ICAgIGhhbmRsZUZvY3VzQ2hhbmdlZChjb2NvYUV2ZW50LCBvYmopOwotICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VNb3ZlZDoKLSAgICAgICAgICAg
IGhhbmRsZU1vdXNlTW92ZWQoY29jb2FFdmVudCwgb2JqKTsKLSAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRG93bjoKLSAgICAgICAgICAgIGhhbmRs
ZU1vdXNlRG93bihjb2NvYUV2ZW50LCBvYmopOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgTlBDb2NvYUV2ZW50S2V5RG93bjoKLSAgICAgICAgICAgIC8vIElmIHRoZSB0ZXh0
IGZpZWxkIGhhcyBmb2N1cyB3ZSBpZ25vcmUgdGhlIGV2ZW50LCBjYXVzaW5nIGl0Ci0gICAgICAg
ICAgICAvLyB0byBiZSBzZW50IHRvIHRoZSBpbnB1dCBtYW5hZ2VyLgotICAgICAgICAgICAgaWYg
KG9iai0+dGV4dEZpZWxkSGFzRm9jdXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVRl
eHRGaWVsZEtleURvd24oY29jb2FFdmVudCwgb2JqKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRUZXh0SW5wdXQ6
Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlVGV4dElucHV0KGNvY29hRXZlbnQsIG9iaik7Ci0g
ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLXZvaWQgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNo
YXIqIHVybCwgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKQotewotfQotCi1OUEVy
cm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
KiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLX0KLQotTlBFcnJv
ciBOUFBfU2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCog
dmFsdWUpCi17Ci0gICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci19CkluZGV4OiBXZWJL
aXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL3Rlc3QuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2lu
L3Rlc3QuaHRtbAkocmV2aXNpb24gNzQzMTQpCisrKyBXZWJLaXRFeGFtcGxlUGx1Z2lucy9OZXRz
Y2FwZUlucHV0TWV0aG9kUGx1Z2luL3Rlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSAr
MCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFu
c2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMtaHRtbDQwMS0xOTk5
MTIyNC9sb29zZS5kdGQiPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5OZXRzY2FwZSBJbnB1dCBN
ZXRob2QgUGx1Zy1JbjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXY+Ci0gICAgPGVtYmVk
IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiB0eXBlPSJ0ZXN0L3gtbmV0c2NhcGUtaW5wdXQtbWV0
aG9kLXBsdWdpbiI+PC9lbWJlZD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogV2Vi
S2l0RXhhbXBsZVBsdWdpbnMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9FbmdsaXNoLmxwcm9q
L0luZm9QbGlzdC5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0KSW5kZXg6IFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4v
TmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4v
TmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA3NDMxNCkKKysrIFdlYktpdEV4YW1wbGVQbHVnaW5zL05ldHNjYXBlSW5wdXRNZXRob2RQ
bHVnaW4vTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0MyArMCwwIEBACi0vLyAhJCpVVEY4KiQhCi17Ci0JYXJj
aGl2ZVZlcnNpb24gPSAxOwotCWNsYXNzZXMgPSB7Ci0JfTsKLQlvYmplY3RWZXJzaW9uID0gNDI7
Ci0Jb2JqZWN0cyA9IHsKLQotLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMUE2
MjRFNTkwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0g
Ki87IH07Ci0JCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTYyNTA0MTBE
Q0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrICovOyB9OwotCQk4RDVCNDlBODA0ODY3
RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZv
UGxpc3Quc3RyaW5ncyAqLzsgfTsKLS8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCi0v
KiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJMDg5QzE2N0VGRTg0MTI0MUMw
MkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMTA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0g
RW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IG1haW4ubTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OwotCQk4RDU3NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVJbnB1dE1ldGhv
ZFBsdWdpbi5wbHVnaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IE5ldHNj
YXBlSW5wdXRNZXRob2RQbHVnaW4ucGx1Z2luOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwotCQk4RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0QgLyogSW5mby5wbGlzdCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQucGxpc3Q7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdD
RCAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7
Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMUE2
MjUwNDIwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9
OwotLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4g
UEJYR3JvdXAgc2VjdGlvbiAqLwotCQkwODlDMTY2QUZFODQxMjA5QzAyQUFDMDcgLyogTmV0c2Nh
cGVJbnB1dE1ldGhvZFBsdWdpbiAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMDhGQjc3QUZGRTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAqLywKLQkJCQkw
ODlDMTY3Q0ZFODQxMjQxQzAyQUFDMDcgLyogUmVzb3VyY2VzICovLAotCQkJCTA4OUMxNjcxRkU4
NDEyMDlDMDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMgKi8sCi0J
CQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFByb2R1Y3RzICovLAotCQkJKTsKLQkJCW5h
bWUgPSBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJMDg5QzE2NzFGRTg0MTIwOUMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29y
a3MgYW5kIExpYnJhcmllcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJMUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLywK
LQkJCSk7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyI7Ci0J
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwODlDMTY3Q0ZFODQxMjQxQzAyQUFD
MDcgLyogUmVzb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9
ICgKLQkJCQk4RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0QgLyogSW5mby5wbGlzdCAqLywKLQkJCQk4
RDVCNDlBNzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8sCi0JCQkpOwot
CQkJbmFtZSA9IFJlc291cmNlczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0J
CTA4RkI3N0FGRkU4NDE3M0RDMDJBQUMwNyAvKiBTb3VyY2UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhH
cm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAvKiBt
YWluLm0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IFNvdXJjZTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCX07Ci0JCTE5QzI4RkI2RkU5RDUyQjIxMUNBMkNCQiAvKiBQcm9kdWN0cyAqLyA9
IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJOEQ1NzYzMTYwNDg2
NzdFQTAwRUE3N0NEIC8qIE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4ucGx1Z2luICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBQcm9kdWN0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07
Ci0vKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQg
c2VjdGlvbiAqLwotCQk4RDU3NjMwRDA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVJbnB1dE1l
dGhvZFBsdWdpbiAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxNDlDMjk4MzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIk5ldHNjYXBlSW5wdXRNZXRob2RQbHVn
aW4iICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NE
IC8qIFNvdXJjZXMgKi8sCi0JCQkJOEQ1NzYzMEYwNDg2NzdFQTAwRUE3N0NEIC8qIFJlc291cmNl
cyAqLywKLQkJCQk4RDU3NjMxMzA0ODY3N0VBMDBFQTc3Q0QgLyogRnJhbWV3b3JrcyAqLywKLQkJ
CSk7Ci0JCQlidWlsZFJ1bGVzID0gKAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9ICgKLQkJCSk7
Ci0JCQluYW1lID0gTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbjsKLQkJCXByb2R1Y3RJbnN0YWxs
UGF0aCA9ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7Ci0JCQlwcm9kdWN0TmFtZSA9IE5ldHNj
YXBlSW5wdXRNZXRob2RQbHVnaW47Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gOEQ1NzYzMTYwNDg2
NzdFQTAwRUE3N0NEIC8qIE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4ucGx1Z2luICovOwotCQkJ
cHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5idW5kbGUiOwotCQl9OwotLyog
RW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFByb2plY3Qgc2Vj
dGlvbiAqLwotCQkwODlDMTY2OUZFODQxMjA5QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhQcm9qZWN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
OUMyOTg3MDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgIk5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4iICovOwotCQkJY29tcGF0aWJpbGl0
eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsK
LQkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwotCQkJa25vd25SZWdpb25zID0gKAotCQkJ
CUVuZ2xpc2gsCi0JCQkJSmFwYW5lc2UsCi0JCQkJRnJlbmNoLAotCQkJCUdlcm1hbiwKLQkJCSk7
Ci0JCQltYWluR3JvdXAgPSAwODlDMTY2QUZFODQxMjA5QzAyQUFDMDcgLyogTmV0c2NhcGVJbnB1
dE1ldGhvZFBsdWdpbiAqLzsKLQkJCXByb2plY3REaXJQYXRoID0gIiI7Ci0JCQlwcm9qZWN0Um9v
dCA9ICIiOwotCQkJdGFyZ2V0cyA9ICgKLQkJCQk4RDU3NjMwRDA0ODY3N0VBMDBFQTc3Q0QgLyog
TmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbiAqLywKLQkJCSk7Ci0JCX07Ci0vKiBFbmQgUEJYUHJv
amVjdCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwotCQk4RDU3NjMwRjA0ODY3N0VBMDBFQTc3Q0QgLyogUmVzb3VyY2VzICovID0gewotCQkJ
aXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk4RDVCNDlBODA0ODY3RkQzMDAwRTQ4REEgLyogSW5m
b1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWFJlc291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCi0JCThENTc2MzExMDQ4Njc3RUEwMEVBNzdDRCAvKiBTb3VyY2VzICovID0gewotCQkJaXNh
ID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwotCQkJZmlsZXMgPSAoCi0JCQkJMUE2MjRFNTkwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSBp
biBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwotCQl9OwotLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQot
LyogQmVnaW4gUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KLQkJOEQ1QjQ5QTcwNDg2N0ZEMzAw
MEU0OERBIC8qIEluZm9QbGlzdC5zdHJpbmdzICovID0gewotCQkJaXNhID0gUEJYVmFyaWFudEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDg5QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVu
Z2xpc2ggKi8sCi0JCQkpOwotCQkJbmFtZSA9IEluZm9QbGlzdC5zdHJpbmdzOwotCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLS8qIEVuZCBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAq
LwotCi0vKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCi0JCTE0OUMyOTg0
MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87
Ci0JCQkJR0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZnVsbDsKLQkJCQlHQ0NfRFlOQU1JQ19OT19Q
SUMgPSBOTzsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBZRVM7Ci0JCQkJR0ND
X01PREVMX1RVTklORyA9IEc1OwotCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwotCQkJ
CUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKLQkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01F
KS9MaWJyYXJ5L0J1bmRsZXMiOwotCQkJCVBST0RVQ1RfTkFNRSA9IE5ldHNjYXBlSW5wdXRNZXRo
b2RQbHVnaW47Ci0JCQkJV1JBUFBFUl9FWFRFTlNJT04gPSBwbHVnaW47Ci0JCQkJWkVST19MSU5L
ID0gWUVTOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQ5QzI5ODUwODkwMkM1
MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQVJDSFMgPSAoCi0JCQkJCXBwYywKLQkJCQkJ
aTM4NiwKLQkJCQkpOwotCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1bGw7Ci0JCQkJR0ND
X0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87Ci0JCQkJR0NDX01PREVMX1RVTklORyA9
IEc1OwotCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwotCQkJCUlORk9QTElTVF9GSUxF
ID0gSW5mby5wbGlzdDsKLQkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9MaWJyYXJ5L0J1bmRs
ZXMiOwotCQkJCVBST0RVQ1RfTkFNRSA9IE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW47Ci0JCQkJ
V1JBUFBFUl9FWFRFTlNJT04gPSBwbHVnaW47Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0J
CX07Ci0JCTE0OUMyOTg4MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlBUkNIUyA9
ICIkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVF9QUkVfWENPREVfM18xKSI7Ci0JCQkJQVJDSFNf
U1RBTkRBUkRfMzJfNjRfQklUX1BSRV9YQ09ERV8zXzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0
IjsKLQkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGM5OTsKLQkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
Ci0JCQkJUFJFQklORElORyA9IE5POwotCQkJCVNES1JPT1QgPSAvRGV2ZWxvcGVyL1NES3MvTWFj
T1NYMTAuNS5zZGs7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQkxNDlDMjk4OTA4
OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5E
QVJEXzMyXzY0X0JJVF9QUkVfWENPREVfM18xKSI7Ci0JCQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRf
QklUX1BSRV9YQ09ERV8zXzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKLQkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGM5OTsKLQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9
IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0JCQkJUFJFQklORElO
RyA9IE5POwotCQkJCVNES1JPT1QgPSAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGs7Ci0J
CQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
LQkJMTQ5QzI5ODMwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luIiAqLyA9IHsKLQkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAot
CQkJCTE0OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkxNDlDMjk4NTA4
OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJh
dGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNl
OwotCQl9OwotCQkxNDlDMjk4NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhQcm9qZWN0ICJOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luIiAqLyA9IHsK
LQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAotCQkJCTE0OUMyOTg4MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkxNDlDMjk4
OTA4OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxl
YXNlOwotCQl9OwotLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCX07Ci0J
cm9vdE9iamVjdCA9IDA4OUMxNjY5RkU4NDEyMDlDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKLX0KSW5kZXg6IGNtYWtlL1dlYktpdFBhY2thZ2luZy5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj
bWFrZS9XZWJLaXRQYWNrYWdpbmcuY21ha2UJKHJldmlzaW9uIDc0MzE0KQorKysgY21ha2UvV2Vi
S2l0UGFja2FnaW5nLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIElGKE5P
VCBERUZJTkVEIENQQUNLX1NPVVJDRV9JR05PUkVfRklMRVMKICAgICAjIFNWTi1vbmx5IGZpbGVz
IHNob3VsZCBiZSBpZ25vcmVkIChzaXRlLCBleGFtcGxlcy4uLikKICAgICAiL1BsYW5ldFdlYktp
dC8iCiAgICAgIi9TdW5TcGlkZXIvIgotICAgICIvV2ViS2l0RXhhbXBsZVBsdWdpbnMvIgorICAg
ICIvRXhhbXBsZXMvIgogICAgICIvV2ViS2l0U2l0ZS8iCiAgICAgIi9CdWdzU2l0ZS8iCiAK
</data>
<flag name="review"
          id="67965"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="67966"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>