<?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>211996</bug_id>
          
          <creation_ts>2020-05-17 07:15:32 -0700</creation_ts>
          <short_desc>[LFC][BFC] Introduce TableWrapperBlockFormattingContext</short_desc>
          <delta_ts>2020-05-17 09:18:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653405</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-05-17 07:15:32 -0700</bug_when>
    <thetext>The table generates a principal block container box called the table wrapper box that contains the table box itself and any caption boxes
(in document order). The table box is a block-level box that contains the table&apos;s internal table boxes.
The caption boxes are principal block-level boxes that retain their own content, padding, margin, and border areas, and are rendered
as normal block boxes inside the table wrapper box.

The table wrapper box is block-level for &apos;display: table&apos;, and inline-level; for &apos;display: inline-table&apos;. The table wrapper box establishes a block formatting context, and the table box establishes a table formatting context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653407</commentid>
    <comment_count>1</comment_count>
      <attachid>399590</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-05-17 07:54:48 -0700</bug_when>
    <thetext>Created attachment 399590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653410</commentid>
    <comment_count>2</comment_count>
      <attachid>399591</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-05-17 08:33:27 -0700</bug_when>
    <thetext>Created attachment 399591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653411</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-17 09:17:49 -0700</bug_when>
    <thetext>Committed r261793: &lt;https://trac.webkit.org/changeset/261793&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399591.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653412</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-17 09:18:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/63318145&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399590</attachid>
            <date>2020-05-17 07:54:48 -0700</date>
            <delta_ts>2020-05-17 08:33:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211996-20200517075447.patch</filename>
            <type>text/plain</type>
            <size>28836</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY3NWJmNzBjZGY5ZmQz
MGYwMjFhOTJhMWNkYmJjYzhkMTM5NjBhOC4uNmViN2RmZDhkZDg0MDRhMjI4YmNkNThmMzk2YWRm
ZWU5NWY3OTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA1LTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBJbnRyb2R1
Y2UgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTk2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGFibGUgd3JhcHBlciBib3ggZXN0YWJsaXNo
ZXMgYSBzcGVjaWFsIEJGQyB3aXRoIG9ubHkgY2FwdGlvbnMgYW5kIHRoZSBhY3R1YWwgdGFibGUg
Ym94IGluIGl0LgorICAgICAgICBJdCBtb3N0bHkgYmVoYXZlcyBsaWtlIGEgbm9ybWFsIEJGQyBi
dXQgdGhlIHRhYmxlIGJveCByZXF1aXJlcyBzb21lIHNwZWNpYWwgaGFuZGluZyB3aGVuIGl0IGNv
bWVzCisgICAgICAgIHRvIHBhZGRpbmcvYm9yZGVyIGFuZCB3aWR0aC9oZWlnaHQgY29tcHV0YXRp
b24uCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHRhYmxlIGJveCBzcGVjaWZpYyBjb2Rl
IGZyb20gZ2VuZXJpYyBCRkMgdG8gdGhpcyBuZXcgc3ViY2xhc3MuIAorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9M
YXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4
dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4pOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aEFuZE1hcmdp
bik6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpUYWJsZVdyYXBw
ZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dFRhYmxlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luRm9yVGFibGVC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVCb3gpOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9y
bWF0dGluZ0NvbnRleHQuaDogQWRkZWQuCisKIDIwMjAtMDUtMTYgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjI2MTc4NS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggY2Q3YjY1ZDQ5NzBlZTU2NDMyNzllMjI3ZjA4MTJiMGVlMWViOTJjNy4u
Y2U2YTExNDc3OTRlMzQzNDNkZDUzYTZmYWM2NWIyOTgxZTEzNDAyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTE0NjIsNiArMTQ2Miw3IEBAIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nU3RhdGUuY3BwCiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwCiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBz
ZS5jcHAKK2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJs
b2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5j
cHAKIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5jcHAKIGxheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZGZlZmI4NTljZGU3Y2JkZjE4M2Zj
NGNiZDExN2ViMTkzN2ZlYzE2Li44MWNhN2ZiNDQwMWZmNWNiZWY5ZDE1MGUyMGE0YTU4YjA4MmNk
NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMDQ4LDYgKzIwNDgsNyBAQAogCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQg
LyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTZGMEI5OEI1MjNGMjY4RUMwMEVFQzJGMiAvKiBM
YXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RjBCOThCMzIzRjI2OEVCMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJv
eC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZG
MENENjk1MjI5RUQzMjcwMEM1OTk0RSAvKiBJbmxpbmVMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYwQ0Q2OTQyMjlFRDMyNzAwQzU5
OTRFIC8qIElubGluZUxpbmVCdWlsZGVyLmggKi87IH07CisJCTZGMTcyNjRGMjQ3MEM2MEIwMDUx
OEM5NiAvKiBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjE3MjY0RTI0NzBDNjBBMDA1MThD
OTYgLyogVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGMUNDMURFMjI1RjhCNDkwMDcy
MEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkYxQ0MxREQyMjVGOEI0MjAwNzIwQUQyIC8qIElubGluZVRleHRJdGVt
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkYy
NkJCNkMyMzM0M0U2RjAwMkYyQkVBIC8qIExheW91dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMjZCQjZCMjMzNDNFNUIwMDJGMkJFQSAv
KiBMYXlvdXRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNkYyNkVCNDgyMzQwMDRBNTAwNjkwNkUyIC8qIExpbmVMYXlvdXRDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjI2RUI0
NjIzNDAwNEE1MDA2OTA2RTIgLyogTGluZUxheW91dENvbnRleHQuaCAqLzsgfTsKQEAgLTk0MTYs
NiArOTQxNyw4IEBACiAJCTZGMENENjkyMjI5RUQzMTkwMEM1OTk0RSAvKiBJbmxpbmVMaW5lQnVp
bGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVMaW5lQnVpbGRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMENENjk0MjI5RUQzMjcwMEM1OTk0RSAvKiBJbmxp
bmVMaW5lQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVM
aW5lQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjEwQjA4NjIyQjg1
NjhEMDA5MEU2OUMgLyogSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RjE3MjY0QzI0NzBDNUY3MDA1MThDOTYgLyogVGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZVdy
YXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkYxNzI2NEUyNDcwQzYwQTAwNTE4Qzk2IC8qIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RjFDQzFEQzIyNUY4QjQxMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5saW5lVGV4dEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RjFDQzFERDIyNUY4QjQyMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5saW5lVGV4dEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkYyMjJCNzQxQUI1MkQ2NDAwOTQ2NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNzA3Miw2ICsxNzA3NSw3IEBACiAJCTExNUNGQTk5MjA4QkMw
OUEwMDFFNjk5MSAvKiBibG9ja2Zvcm1hdHRpbmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTZGRDRGRTNFMjQ3MEIzQUQwMDczNzRDQyAvKiB0YWJsZXdy
YXBwZXIgKi8sCiAJCQkJMTE1Q0ZBNkQyMDhBRkFCNjAwMUU2OTkxIC8qIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwICovLAogCQkJCTExNUNGQTZDMjA4QUZBQjYwMDFFNjk5MSAvKiBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmggKi8sCiAJCQkJNkYwODMwREYyMEI0Njk1MTAwOEE5NDVCIC8qIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgKi8sCkBAIC0yMTI5MSw2ICsyMTI5NSwx
NSBAQAogCQkJcGF0aCA9IGZsb2F0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCTZGRDRGRTNFMjQ3MEIzQUQwMDczNzRDQyAvKiB0YWJsZXdyYXBwZXIgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZGMTcyNjRDMjQ3MEM1RjcwMDUx
OEM5NiAvKiBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCAqLywKKwkJCQk2
RjE3MjY0RTI0NzBDNjBBMDA1MThDOTYgLyogVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oICovLAorCQkJKTsKKwkJCXBhdGggPSB0YWJsZXdyYXBwZXI7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQk2RkU3RERERDIwRUM2RThCMDA4QjVCNEUgLyogdGV4dCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMzI3OCw2ICsz
MzI5MSw3IEBACiAJCQkJMEYwM0MwNzQxODg0Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZl
cnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGMDUxMEExNTRGMDkwMDBBNDIzNCAvKiBU
YWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkYxNzI2NEYyNDcwQzYwQjAwNTE4Qzk2
IC8qIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTNCQjZCODExMjJBN0QzMTMwMDNBMkE2OSAvKiBUYWJTaXplLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUIwQUJDQUUyMzZCQjQzMTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRl
eCBhYjAyMDNjY2E4YTM3NzBhZmZhZTRlNGM2ZWFlODM0ZWFjYzgwZmMxLi4wMGI4NzVjYWMwOWU3
ZjE0NDQ4MDc4MDg5NWUzZmUzMDljN2U5ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaApAQCAtMTYwLDEzICsxNjAsMTMgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgY29uc3RyYWludHNGb3JPdXRPZkZsb3dD
b250ZW50KGNvbnN0IENvbnRhaW5lckJveCYpOwogICAgICAgICBDb25zdHJhaW50c0ZvckluRmxv
d0NvbnRlbnQgY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYs
IE9wdGlvbmFsPEVzY2FwZVJlYXNvbj4gPSBXVEY6Om51bGxvcHQpOwogCisgICAgICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGNvbXB1dGVkSGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAg
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiwgTGF5b3V0
VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBGb3JtYXR0aW5nQ29udGV4dDsKICAgICAgICAgR2VvbWV0cnkoY29u
c3QgRm9ybWF0dGluZ0NvbnRleHQmKTsKIAotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBj
b21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5n
QmxvY2tIZWlnaHQgPSBXVEY6Om51bGxvcHQpIGNvbnN0OwotICAgICAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiBjb21wdXRlZFdpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Js
b2NrV2lkdGgpIGNvbnN0OwotCiAgICAgICAgIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQubGF5b3V0U3RhdGUoKTsgfQog
ICAgICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSB7IHJldHVybiBtX2Zvcm1hdHRpbmdD
b250ZXh0LmxheW91dFN0YXRlKCk7IH0KICAgICAgICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQm
IGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IDI4NGM2MjQwZTMy
Y2U3ZjYzZmQzNmNhZmJjODlhNTM5ZDkwNjZjOWIuLjJiNWE0ZmExMzZkMTYwMTUxYjNhMGFhOWUw
MGVjMWY4ODI4ZWJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAK
QEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0
dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTEyNCw2ICsxMjUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRl
eHQ+IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0CiAgICAgaWYg
KGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQo
KSkgewogICAgICAgICBBU1NFUlQoIWZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgICAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdT
dGF0ZSA9IGxheW91dFN0YXRlLmVuc3VyZUJsb2NrRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdD
b250ZXh0Um9vdCk7CisgICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuaXNUYWJsZVdy
YXBwZXJCb3goKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlV3JhcHBlckJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0
aW5nU3RhdGUpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDhmZDRmNmNhMDdhM2I1NDFi
MDEwNWVhYjUwYWEwZjVkMzE2NmZkYzUuLjRiZGRkNWFmMzViNGMxNTJlNzBmZWI4OTBkYjM3MTU3
YTYzMjMxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzcyLDMzICsz
NzIsMjIgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFy
Z2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdAogICAgICAgICByZXR1cm4geyB9OwogICAg
IH07CiAKLSAgICBhdXRvIHVzZWRIZWlnaHRWYWx1ZSA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsg
fTsKLSAgICBhdXRvIGlnbm9yZU1pbk1heEhlaWdodENvbXB1dGUgPSBmYWxzZTsKLSAgICBpZiAo
bGF5b3V0Qm94LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAg
IC8vIFRhYmxlIGlzIGEgc3BlY2lhbCBCRkMgY29udGVudC4gSXRzIGhlaWdodCBpcyBtYWlubHkg
ZHJpdmVuIGJ5IHRoZSBjb250ZW50LiBDb21wdXRlZCBoZWlnaHQsIG1pbi1oZWlnaHQgYW5kIG1h
eC1oZWlnaHQgYXJlIGFsbAotICAgICAgICAvLyBhbHJlYWR5IGJlZW4gdGFrZW4gaW50byBhY2Nv
dW50IGR1cmluZyB0aGUgVEZDIGxheW91dC4KLSAgICAgICAgdXNlZEhlaWdodFZhbHVlID0gZ2Vv
bWV0cnkoKS5jb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGRvd25jYXN0PENv
bnRhaW5lckJveD4obGF5b3V0Qm94KSk7Ci0gICAgICAgIGlnbm9yZU1pbk1heEhlaWdodENvbXB1
dGUgPSB0cnVlOwotICAgIH0KLQotICAgIGF1dG8gY29udGVudEhlaWdodEFuZE1hcmdpbiA9IGNv
bXB1dGUoeyB1c2VkSGVpZ2h0VmFsdWUgfSk7Ci0gICAgaWYgKCFpZ25vcmVNaW5NYXhIZWlnaHRD
b21wdXRlKSB7Ci0gICAgICAgIGlmIChhdXRvIG1heEhlaWdodCA9IGdlb21ldHJ5KCkuY29tcHV0
ZWRNYXhIZWlnaHQobGF5b3V0Qm94KSkgewotICAgICAgICAgICAgaWYgKGNvbnRlbnRIZWlnaHRB
bmRNYXJnaW4uY29udGVudEhlaWdodCA+ICptYXhIZWlnaHQpIHsKLSAgICAgICAgICAgICAgICBh
dXRvIG1heEhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUobWF4SGVpZ2h0KTsKLSAgICAgICAgICAg
ICAgICAvLyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgotICAgICAgICAgICAg
ICAgIEFTU0VSVCgobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiAobGF5b3V0Qm94Lmlz
Qm9keUJveCgpIHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8fCBtYXhIZWlnaHRBbmRN
YXJnaW4uY29udGVudEhlaWdodCA9PSAqbWF4SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBjb250
ZW50SGVpZ2h0QW5kTWFyZ2luID0geyAqbWF4SGVpZ2h0LCBtYXhIZWlnaHRBbmRNYXJnaW4ubm9u
Q29sbGFwc2VkTWFyZ2luIH07Ci0gICAgICAgICAgICB9CisgICAgYXV0byBjb250ZW50SGVpZ2h0
QW5kTWFyZ2luID0gY29tcHV0ZSh7IH0pOworICAgIGlmIChhdXRvIG1heEhlaWdodCA9IGdlb21l
dHJ5KCkuY29tcHV0ZWRNYXhIZWlnaHQobGF5b3V0Qm94KSkgeworICAgICAgICBpZiAoY29udGVu
dEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0ID4gKm1heEhlaWdodCkgeworICAgICAgICAg
ICAgYXV0byBtYXhIZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKG1heEhlaWdodCk7CisgICAgICAg
ICAgICAvLyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgorICAgICAgICAgICAg
QVNTRVJUKChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIChsYXlvdXRCb3guaXNCb2R5
Qm94KCkgfHwgbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSkpIHx8IG1heEhlaWdodEFuZE1hcmdp
bi5jb250ZW50SGVpZ2h0ID09ICptYXhIZWlnaHQpOworICAgICAgICAgICAgY29udGVudEhlaWdo
dEFuZE1hcmdpbiA9IHsgKm1heEhlaWdodCwgbWF4SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNl
ZE1hcmdpbiB9OwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIGlmIChhdXRvIG1pbkhlaWdo
dCA9IGdlb21ldHJ5KCkuY29tcHV0ZWRNaW5IZWlnaHQobGF5b3V0Qm94KSkgewotICAgICAgICAg
ICAgaWYgKGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCA8ICptaW5IZWlnaHQp
IHsKLSAgICAgICAgICAgICAgICBhdXRvIG1pbkhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUobWlu
SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICAvLyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRo
ZSBzYW1lLgotICAgICAgICAgICAgICAgIEFTU0VSVCgobGF5b3V0U3RhdGUoKS5pblF1aXJrc01v
ZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9keUJveCgpIHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94
KCkpKSB8fCBtaW5IZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCA9PSAqbWluSGVpZ2h0KTsK
LSAgICAgICAgICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0geyAqbWluSGVpZ2h0LCBt
aW5IZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luIH07Ci0gICAgICAgICAgICB9Cisg
ICAgaWYgKGF1dG8gbWluSGVpZ2h0ID0gZ2VvbWV0cnkoKS5jb21wdXRlZE1pbkhlaWdodChsYXlv
dXRCb3gpKSB7CisgICAgICAgIGlmIChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWln
aHQgPCAqbWluSGVpZ2h0KSB7CisgICAgICAgICAgICBhdXRvIG1pbkhlaWdodEFuZE1hcmdpbiA9
IGNvbXB1dGUobWluSGVpZ2h0KTsKKyAgICAgICAgICAgIC8vIFVzZWQgaGVpZ2h0IHNob3VsZCBy
ZW1haW4gdGhlIHNhbWUuCisgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRlKCkuaW5RdWly
a3NNb2RlKCkgJiYgKGxheW91dEJveC5pc0JvZHlCb3goKSB8fCBsYXlvdXRCb3guaXNEb2N1bWVu
dEJveCgpKSkgfHwgbWluSGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQgPT0gKm1pbkhlaWdo
dCk7CisgICAgICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0geyAqbWluSGVpZ2h0LCBt
aW5IZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luIH07CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZmEzZWEwMmI0MWVmMjE2YjgzNjZm
ZGZjZWQ1NGIzZjE4NmFiMWE1Yy4uNmMyZGE4MWNiM2U2ZGQ4MWQ3MTdmMDUyYWY4YjgyYTg1YmY1
YjQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQzLDE1ICs0MywxNCBAQCBj
bGFzcyBGbG9hdGluZ0NvbnRleHQ7CiAKIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgbGF5
b3V0IGxvZ2ljIGZvciBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzLgogLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRtbCNibG9jay1mb3JtYXR0aW5nCi1jbGFzcyBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKK2Ns
YXNzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmxvY2tGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJs
aWM6CiAgICAgQmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgQmxvY2tGb3JtYXR0aW5nU3RhdGUmKTsKIAogICAgIHZvaWQgbGF5
b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYpIG92ZXJyaWRlOwogCi1wcml2YXRlOgotCitwcm90ZWN0ZWQ6CiAgICAg
c3RydWN0IENvbnN0cmFpbnRzUGFpciB7CiAgICAgICAgIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCBmb3JtYXR0aW5nQ29udGV4dFJvb3Q7CiAgICAgICAgIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCBjb250YWluaW5nQmxvY2s7CkBAIC03NSw2ICs3NCw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0aW9uaW5nIGFuZCBzaXpp
bmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQu
CiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
IHsKICAgICBwdWJsaWM6CisgICAgICAgIEdlb21ldHJ5KGNvbnN0IEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQmKTsKKwogICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGluRmxvd0hlaWdodEFu
ZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBP
dmVycmlkZVZlcnRpY2FsVmFsdWVzJik7CiAgICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBp
bkZsb3dXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmKTsKIApAQCAtODUsMTMgKzg2LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKGNvbnN0IEJveCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ7Ci0gICAgICAgIEdlb21ldHJ5KGNvbnN0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmKTsKLQogICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFy
Z2luIGluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMmKTsKICAg
ICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJp
ZGVIb3Jpem9udGFsVmFsdWVzJikgY29uc3Q7CiAgICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdp
biBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJikg
Y29uc3Q7Ci0gICAgICAgIFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25l
ZChjb25zdCBCb3gmKSBjb25zdDsKIAogICAgICAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Zm9ybWF0dGluZ0Nv
bnRleHQoKSk7IH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmluZGV4IDkyYWRkZmMwNTc4MDA0OWZkYmFjOWQxNzhmMzVmNjI0ODY0NDJhZGMu
LjcxNjQ0MWRiY2E2NTJmZmEzYzQ5NGIzNGVmZTRkNWMyNjY5YzBmMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTI3OCwzMiArMjc4LDggQEAg
Q29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bkZsb3dXaWR0aEFuZE1hcmdpbihjb24KIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93
KCkpOwogCi0gICAgaWYgKCFsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKSB7Ci0gICAgICAgIGlm
ICghbGF5b3V0Qm94LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpKQotICAgICAg
ICAgICAgcmV0dXJuIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBo
b3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyk7Ci0gICAgICAg
IC8vIFRoaXMgaXMgYSBzcGVjaWFsIHRhYmxlICJmaXQtY29udGVudCBzaXplIiBiZWhhdmlvciBo
YW5kbGluZy4gTm90IGluIHRoZSBzcGVjIHRob3VnaC4KLSAgICAgICAgLy8gVGFibGUgcmV0dXJu
cyBpdHMgZmluYWwgd2lkdGggYXMgbWluL21heC4gVXNlIHRoaXMgZmluYWwgd2lkdGggdmFsdWUg
dG8gY29tcHV0ZWQgaG9yaXpvbnRhbCBtYXJnaW5zIGV0Yy4KLSAgICAgICAgaWYgKG92ZXJyaWRl
SG9yaXpvbnRhbFZhbHVlcy53aWR0aCkKLSAgICAgICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBPdmVy
cmlkZUhvcml6b250YWxWYWx1ZXMgeyBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMud2lkdGgsIG92
ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4gfSk7Ci0KLSAgICAgICAgYXV0byYgdGFibGVC
b3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCk7Ci0gICAgICAgIGF1dG8mIGZv
cm1hdHRpbmdTdGF0ZUZvclRhYmxlQm94ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVGb3JtYXR0aW5n
U3RhdGUodGFibGVCb3gpOwotICAgICAgICBhdXRvIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
PSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsgfTsKLSAgICAgICAgaWYgKGF1dG8gcHJlY29t
cHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ1N0YXRlRm9yVGFibGVC
b3guaW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpKQotICAgICAgICAgICAgaW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyA9ICpwcmVjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBMYXlv
dXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCh0YWJsZUJveCwgbGF5b3V0U3RhdGUo
KSktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwotICAgICAgICBhdXRvIGNv
bXB1dGVkVGFibGVXaWR0aCA9IGNvbXB1dGVkV2lkdGgodGFibGVCb3gsIGhvcml6b250YWxDb25z
dHJhaW50cy5sb2dpY2FsV2lkdGgpOwotICAgICAgICBhdXRvIHVzZWRXaWR0aCA9IGNvbXB1dGVk
VGFibGVXaWR0aDsKLSAgICAgICAgaWYgKGNvbXB1dGVkVGFibGVXaWR0aCAmJiBpbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzLm1pbmltdW0gPiBjb21wdXRlZFRhYmxlV2lkdGgpIHsKLSAgICAgICAg
ICAgIC8vIFRhYmxlIGNvbnRlbnQgbmVlZHMgbW9yZSBzcGFjZSB0aGFuIHRoZSB0YWJsZSBoYXMu
Ci0gICAgICAgICAgICB1c2VkV2lkdGggPSBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1pbmlt
dW07Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNvbXB1dGVkVGFibGVXaWR0aCkgewotICAgICAgICAg
ICAgLy8gVXNlIHRoZSBnZW5lcmljIHNocmluay10by1maXQtd2lkdGggbG9naWMuCi0gICAgICAg
ICAgICB1c2VkV2lkdGggPSBzdGQ6Om1pbihzdGQ6Om1heChpbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzLm1pbmltdW0sIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpLCBpbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzLm1heGltdW0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBp
bkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMgeyB1c2VkV2lkdGgsIG92ZXJyaWRlSG9y
aXpvbnRhbFZhbHVlcy5tYXJnaW4gfSk7Ci0gICAgfQorICAgIGlmICghbGF5b3V0Qm94LmlzUmVw
bGFjZWRCb3goKSkKKyAgICAgICAgcmV0dXJuIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlSG9yaXpvbnRhbFZh
bHVlcyk7CiAgICAgcmV0dXJuIGluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oZG93bmNhc3Q8
UmVwbGFjZWRCb3g+KGxheW91dEJveCksIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGVI
b3Jpem9udGFsVmFsdWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxl
d3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MjA5ZDE4Zjc3MGVjODhiYTA1MGY2MTQwODQwMjUyMGQ5MjQ4ZDEzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIv
VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTAsMCArMSwxMjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dCk7CisKK1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUpCisgICAgOiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgZm9ybWF0dGluZ1N0
YXRlKQoreworfQorCit2b2lkIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Omxh
eW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQoreworICAgIC8vIFRoZSB0YWJsZSBnZW5lcmF0
ZXMgYSBwcmluY2lwYWwgYmxvY2sgY29udGFpbmVyIGJveCBjYWxsZWQgdGhlIHRhYmxlIHdyYXBw
ZXIgYm94IHRoYXQgY29udGFpbnMgdGhlIHRhYmxlIGJveCBpdHNlbGYgYW5kIGFueSBjYXB0aW9u
IGJveGVzCisgICAgLy8gKGluIGRvY3VtZW50IG9yZGVyKS4gVGhlIHRhYmxlIGJveCBpcyBhIGJs
b2NrLWxldmVsIGJveCB0aGF0IGNvbnRhaW5zIHRoZSB0YWJsZSdzIGludGVybmFsIHRhYmxlIGJv
eGVzLgorICAgIC8vIFRoZSBjYXB0aW9uIGJveGVzIGFyZSBwcmluY2lwYWwgYmxvY2stbGV2ZWwg
Ym94ZXMgdGhhdCByZXRhaW4gdGhlaXIgb3duIGNvbnRlbnQsIHBhZGRpbmcsIG1hcmdpbiwgYW5k
IGJvcmRlciBhcmVhcywgYW5kIGFyZSByZW5kZXJlZAorICAgIC8vIGFzIG5vcm1hbCBibG9jayBi
b3hlcyBpbnNpZGUgdGhlIHRhYmxlIHdyYXBwZXIgYm94LiBXaGV0aGVyIHRoZSBjYXB0aW9uIGJv
eGVzIGFyZSBwbGFjZWQgYmVmb3JlIG9yIGFmdGVyIHRoZSB0YWJsZSBib3ggaXMgZGVjaWRlZCBi
eQorICAgIC8vIHRoZSAnY2FwdGlvbi1zaWRlJyBwcm9wZXJ0eSwgYXMgZGVzY3JpYmVkIGJlbG93
LgorICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxDb250YWluZXJCb3g+KHJv
b3QoKSkpIHsKKyAgICAgICAgaWYgKGNoaWxkLmlzVGFibGVCb3goKSkKKyAgICAgICAgICAgIGxh
eW91dFRhYmxlQm94KGNoaWxkLCBjb25zdHJhaW50cyk7CisgICAgICAgIGVsc2UgaWYgKGNoaWxk
LmlzVGFibGVDYXB0aW9uKCkpCisgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lF
VCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
VGFibGVCb3goY29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCwgY29uc3QgQ29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKK3sKKyAgICBjb21wdXRlQm9yZGVyQW5kUGFk
ZGluZyh0YWJsZUJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7CisgICAgY29tcHV0ZVN0YXRp
Y1ZlcnRpY2FsUG9zaXRpb24odGFibGVCb3gsIGNvbnN0cmFpbnRzLnZlcnRpY2FsKTsKKyAgICBj
b21wdXRlV2lkdGhBbmRNYXJnaW5Gb3JUYWJsZUJveCh0YWJsZUJveCwgY29uc3RyYWludHMpOwor
ICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24odGFibGVCb3gsIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwpOworCisgICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IEludmFsaWRhdGlv
blN0YXRlIHsgfTsKKyAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCh0
YWJsZUJveCwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9u
U3RhdGUsIGdlb21ldHJ5KCkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KHRhYmxlQm94KSk7
CisKKyAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVCb3godGFibGVCb3gsIGNvbnN0
cmFpbnRzKTsKK30KKwordm9pZCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlV2lkdGhBbmRNYXJnaW5Gb3JUYWJsZUJveChjb25zdCBDb250YWluZXJCb3gmIHRhYmxl
Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQorewor
ICAgIEFTU0VSVCh0YWJsZUJveC5pc1RhYmxlQm94KCkpOworICAgIC8vIFRoaXMgaXMgYSBzcGVj
aWFsIHRhYmxlICJmaXQtY29udGVudCBzaXplIiBiZWhhdmlvciBoYW5kbGluZy4gTm90IGluIHRo
ZSBzcGVjIHRob3VnaC4KKyAgICAvLyBUYWJsZSByZXR1cm5zIGl0cyBmaW5hbCB3aWR0aCBhcyBt
aW4vbWF4LiBVc2UgdGhpcyBmaW5hbCB3aWR0aCB2YWx1ZSB0byBjb21wdXRlZCBob3Jpem9udGFs
IG1hcmdpbnMgZXRjLgorICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZUZvclRhYmxlQm94ID0gbGF5
b3V0U3RhdGUoKS5lbnN1cmVGb3JtYXR0aW5nU3RhdGUodGFibGVCb3gpOworICAgIGF1dG8gaW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9Owor
ICAgIGlmIChhdXRvIHByZWNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGZvcm1h
dHRpbmdTdGF0ZUZvclRhYmxlQm94LmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSkKKyAgICAg
ICAgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9ICpwcmVjb21wdXRlZEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHM7CisgICAgZWxzZQorICAgICAgICBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91
dFN0YXRlKCkpLT5jb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsKKyAgICBhdXRv
IGNvbXB1dGVkVGFibGVXaWR0aCA9IGdlb21ldHJ5KCkuY29tcHV0ZWRXaWR0aCh0YWJsZUJveCwg
Y29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsV2lkdGgpOworICAgIGF1dG8gdXNlZFdpZHRo
ID0gY29tcHV0ZWRUYWJsZVdpZHRoOworICAgIGlmIChjb21wdXRlZFRhYmxlV2lkdGggJiYgaW50
cmluc2ljV2lkdGhDb25zdHJhaW50cy5taW5pbXVtID4gY29tcHV0ZWRUYWJsZVdpZHRoKSB7Cisg
ICAgICAgIC8vIFRhYmxlIGNvbnRlbnQgbmVlZHMgbW9yZSBzcGFjZSB0aGFuIHRoZSB0YWJsZSBo
YXMuCisgICAgICAgIHVzZWRXaWR0aCA9IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMubWluaW11
bTsKKyAgICB9IGVsc2UgaWYgKCFjb21wdXRlZFRhYmxlV2lkdGgpIHsKKyAgICAgICAgLy8gVXNl
IHRoZSBnZW5lcmljIHNocmluay10by1maXQtd2lkdGggbG9naWMuCisgICAgICAgIHVzZWRXaWR0
aCA9IHN0ZDo6bWluKHN0ZDo6bWF4KGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMubWluaW11bSwg
Y29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsV2lkdGgpLCBpbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzLm1heGltdW0pOworICAgIH0KKyAgICBhdXRvIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9
IGdlb21ldHJ5KCkuaW5GbG93V2lkdGhBbmRNYXJnaW4odGFibGVCb3gsIGNvbnN0cmFpbnRzLmhv
cml6b250YWwsIE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyB7IHVzZWRXaWR0aCwgeyB9IH0pOwor
CisgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3godGFi
bGVCb3gpOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGNvbnRlbnRXaWR0aEFu
ZE1hcmdpbi5jb250ZW50V2lkdGgpOworICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdp
bihjb250ZW50V2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbik7CisgICAgZGlzcGxheUJveC5zZXRI
b3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oY29udGVudFdpZHRoQW5kTWFyZ2luLmNvbXB1dGVkTWFy
Z2luKTsKK30KKwordm9pZCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVCb3goY29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJv
eCwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKK3sKKyAg
ICBBU1NFUlQodGFibGVCb3guaXNUYWJsZUJveCgpKTsKKyAgICAvLyBUYWJsZSBpcyBhIHNwZWNp
YWwgQkZDIGNvbnRlbnQuIEl0cyBoZWlnaHQgaXMgbWFpbmx5IGRyaXZlbiBieSB0aGUgY29udGVu
dC4gQ29tcHV0ZWQgaGVpZ2h0LCBtaW4taGVpZ2h0IGFuZCBtYXgtaGVpZ2h0IGFyZSBhbGwKKyAg
ICAvLyBhbHJlYWR5IGJlZW4gdGFrZW4gaW50byBhY2NvdW50IGR1cmluZyB0aGUgVEZDIGxheW91
dC4KKyAgICBhdXRvIHVzZWRIZWlnaHQgPSBnZW9tZXRyeSgpLmNvbnRlbnRIZWlnaHRGb3JGb3Jt
YXR0aW5nQ29udGV4dFJvb3QodGFibGVCb3gpOworICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0g
Z2VvbWV0cnkoKS5pbkZsb3dIZWlnaHRBbmRNYXJnaW4odGFibGVCb3gsIGNvbnN0cmFpbnRzLmhv
cml6b250YWwsIHsgdXNlZEhlaWdodCB9KTsKKworICAgIGF1dG8gbWFyZ2luQ29sbGFwc2UgPSB0
aGlzLT5tYXJnaW5Db2xsYXBzZSgpOworICAgIGF1dG8gY29sbGFwc2VkQW5kUG9zaXRpdmVOZWdh
dGl2ZVZhbHVlcyA9IG1hcmdpbkNvbGxhcHNlLmNvbGxhcHNlZFZlcnRpY2FsVmFsdWVzKHRhYmxl
Qm94LCBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luKTsKKyAgICAvLyBDYWNoZSB0
aGUgY29tcHV0ZWQgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdpbiB2YWx1ZSBwYWlyLgorICAg
IGZvcm1hdHRpbmdTdGF0ZSgpLnNldFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbih0
YWJsZUJveCwgY29sbGFwc2VkQW5kUG9zaXRpdmVOZWdhdGl2ZVZhbHVlcy5wb3NpdGl2ZUFuZE5l
Z2F0aXZlVmVydGljYWxWYWx1ZXMpOworICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBVc2VkVmVy
dGljYWxNYXJnaW4geyBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBz
ZWRBbmRQb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzLmNvbGxhcHNlZFZhbHVlcyB9OworCisgICAgYXV0
byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3godGFibGVCb3gpOwor
ICAgIGRpc3BsYXlCb3guc2V0VG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKHRhYmxlQm94
LCB2ZXJ0aWNhbE1hcmdpbiwgY29uc3RyYWludHMudmVydGljYWwpKTsKKyAgICBkaXNwbGF5Qm94
LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQpOworICAg
IGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOworICAgIC8vIEFk
anVzdCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBib3R0b20gbm93IHRoYXQgdGhpcyBi
b3gncyB2ZXJ0aWNhbCBtYXJnaW4gaXMgY29tcHV0ZWQuCisgICAgTWFyZ2luQ29sbGFwc2U6OnVw
ZGF0ZU1hcmdpbkFmdGVyRm9yUHJldmlvdXNTaWJsaW5nKCp0aGlzLCBtYXJnaW5Db2xsYXBzZSwg
dGFibGVCb3gpOworfQorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdmMGZmYjY4YWNkODNiMDZmODA4YmNhZTM4NGZhMmRlZGM1ZGQ1MWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3Jh
cHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
TGF5b3V0IHsKKworLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBzcGVjaWFsIGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dCBsYXlvdXQgbG9naWMgZm9yIHRoZSB0YWJsZSB3cmFwcGVyLgorLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3RhYmxlcy5odG1sI21vZGVsCitjbGFzcyBUYWJs
ZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dCk7CitwdWJsaWM6CisgICAgVGFibGVXcmFwcGVyQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
QmxvY2tGb3JtYXR0aW5nU3RhdGUmKTsKKworICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJ
bnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpIGZp
bmFsOworCitwcml2YXRlOgorICAgIHZvaWQgbGF5b3V0VGFibGVCb3goY29uc3QgQ29udGFpbmVy
Qm94JiB0YWJsZUJveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CisKKyAg
ICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbkZvclRhYmxlQm94KGNvbnN0IENvbnRhaW5lckJv
eCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpOworICAgIHZvaWQgY29tcHV0
ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KGNvbnN0IENvbnRhaW5lckJveCYsIGNvbnN0IENv
bnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpOworfTsKKworfQorfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399591</attachid>
            <date>2020-05-17 08:33:27 -0700</date>
            <delta_ts>2020-05-17 09:17:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211996-20200517083326.patch</filename>
            <type>text/plain</type>
            <size>29440</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY3NWJmNzBjZGY5ZmQz
MGYwMjFhOTJhMWNkYmJjYzhkMTM5NjBhOC4uODc0YjY2N2UxYzY5N2U1OTg5ZWU3ZjI2YzI4ODlk
ZWEyYjE4MDVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA1LTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBJbnRyb2R1
Y2UgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTk2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgVGFibGUgd3JhcHBlciBib3ggZXN0YWJsaXNo
ZXMgYSBzcGVjaWFsIEJGQyB3aXRoIG9ubHkgY2FwdGlvbnMgYW5kIHRoZSBhY3R1YWwgdGFibGUg
Ym94IGluIGl0LgorICAgICAgICBJdCBtb3N0bHkgYmVoYXZlcyBsaWtlIGEgbm9ybWFsIEJGQyBi
dXQgdGhlIHRhYmxlIGJveCByZXF1aXJlcyBzb21lIHNwZWNpYWwgaGFuZGluZyB3aGVuIGl0IGNv
bWVzCisgICAgICAgIHRvIHBhZGRpbmcvYm9yZGVyIGFuZCB3aWR0aC9oZWlnaHQgY29tcHV0YXRp
b24uCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHRhYmxlIGJveCBzcGVjaWZpYyBjb2Rl
IGZyb20gZ2VuZXJpYyBCRkMgdG8gdGhpcyBuZXcgc3ViY2xhc3MuIAorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9M
YXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4
dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4pOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aEFuZE1hcmdp
bik6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpUYWJsZVdyYXBw
ZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dFRhYmxlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luRm9yVGFibGVC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVCb3gpOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9y
bWF0dGluZ0NvbnRleHQuaDogQWRkZWQuCisKIDIwMjAtMDUtMTYgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjI2MTc4NS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggODNlYTQ5OTZlZDI1MWQ2ZmE3NTAwMDZiNzc5NTdiZWU0Nzc0
Yjg3ZS4uMWJiNjJiMTdjNzVlZmI3YzI0OWU4ODMwYWY4ODE3YmQwN2Q1MGRkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTEwMCw2ICsxMDAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy90YWJsZXdyYXBwZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9kaXNwbGF5
dHJlZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Zsb2F0cyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vbGF5b3V0L2lubGluZWZvcm1hdHRpbmciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGNkN2I2NWQ0
OTcwZWU1NjQzMjc5ZTIyN2YwODEyYjBlZTFlYjkyYzcuLmNlNmExMTQ3Nzk0ZTM0MzQzZGQ1M2E2
ZmFjNjViMjk4MWUxMzQwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNDYyLDYgKzE0NjIsNyBAQCBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcAogbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCitsYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCiBsYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUlubGluZUNvbnRlbnQuY3BwCiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYWRmZWZiODU5Y2RlN2NiZGYxODNmYzRjYmQxMTdlYjE5MzdmZWMxNi4uODFj
YTdmYjQ0MDFmZjVjYmVmOWQxNTBlMjBhNGE1OGIwODJjZDViYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA0OCw2ICsyMDQ4
LDcgQEAKIAkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVF
OEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovOyB9
OwogCQk2RjBCOThCNTIzRjI2OEVDMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJveC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYwQjk4QjMyM0Yy
NjhFQjAwRUVDMkYyIC8qIExheW91dElubGluZVRleHRCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUg
LyogSW5saW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZGMENENjk0MjI5RUQzMjcwMEM1OTk0RSAvKiBJbmxpbmVMaW5lQnVpbGRl
ci5oICovOyB9OworCQk2RjE3MjY0RjI0NzBDNjBCMDA1MThDOTYgLyogVGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkYxNzI2NEUyNDcwQzYwQTAwNTE4Qzk2IC8qIFRhYmxlV3JhcHBlckJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RjFDQzFERTIyNUY4QjQ5MDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMUNDMURE
MjI1RjhCNDIwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGMjZCQjZDMjMzNDNFNkYwMDJGMkJFQSAv
KiBMYXlvdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RjI2QkI2QjIzMzQzRTVCMDAyRjJCRUEgLyogTGF5b3V0Q29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGMjZFQjQ4MjM0
MDA0QTUwMDY5MDZFMiAvKiBMaW5lTGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYyNkVCNDYyMzQwMDRBNTAwNjkwNkUyIC8qIExp
bmVMYXlvdXRDb250ZXh0LmggKi87IH07CkBAIC05NDE2LDYgKzk0MTcsOCBAQAogCQk2RjBDRDY5
MjIyOUVEMzE5MDBDNTk5NEUgLyogSW5saW5lTGluZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5saW5lTGluZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RjBDRDY5NDIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGluZUJ1aWxkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZUJ1aWxkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYxMEIwODYyMkI4NTY4RDAwOTBFNjlDIC8qIElubGluZUZv
cm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUZvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkYx
NzI2NEMyNDcwQzVGNzAwNTE4Qzk2IC8qIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGMTcyNjRFMjQ3MEM2MEEw
MDUxOEM5NiAvKiBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYxQ0MxREMyMjVGOEI0MTAwNzIw
QUQyIC8qIElubGluZVRleHRJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZVRleHRJ
dGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYxQ0MxREQyMjVGOEI0MjAw
NzIwQUQyIC8qIElubGluZVRleHRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRJdGVt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMjIyQjc0MUFCNTJENjQwMDk0NjUx
QSAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTFZl
cnRleEFycmF5T2JqZWN0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcw
NzIsNiArMTcwNzUsNyBAQAogCQkxMTVDRkE5OTIwOEJDMDlBMDAxRTY5OTEgLyogYmxvY2tmb3Jt
YXR0aW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2
RkQ0RkUzRTI0NzBCM0FEMDA3Mzc0Q0MgLyogdGFibGV3cmFwcGVyICovLAogCQkJCTExNUNGQTZE
MjA4QUZBQjYwMDFFNjk5MSAvKiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCAqLywKIAkJCQkx
MTVDRkE2QzIwOEFGQUI2MDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oICovLAog
CQkJCTZGMDgzMERGMjBCNDY5NTEwMDhBOTQ1QiAvKiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwICovLApAQCAtMjEyOTEsNiArMjEyOTUsMTUgQEAKIAkJCXBhdGggPSBmbG9hdHM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk2RkQ0RkUzRTI0NzBCM0FEMDA3
Mzc0Q0MgLyogdGFibGV3cmFwcGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk2RjE3MjY0QzI0NzBDNUY3MDA1MThDOTYgLyogVGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCisJCQkJNkYxNzI2NEUyNDcwQzYwQTAwNTE4Qzk2
IC8qIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gdGFibGV3cmFwcGVyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
NkZFN0REREQyMEVDNkU4QjAwOEI1QjRFIC8qIHRleHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzMyNzgsNiArMzMyOTEsNyBAQAogCQkJCTBGMDNDMDc0
MTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0ZW1NZW1vcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTVE
NTk3NUIzMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZGMTcyNjRGMjQ3MEM2MEIwMDUxOEM5NiAvKiBUYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzQkI2QjgxMTIyQTdEMzEzMDAz
QTJBNjkgLyogVGFiU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzRUI2MjMxQjg3ODlFMDAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMEFCQ0FFMjM2
QkI0MzEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYWIwMjAzY2NhOGEzNzcwYWZmYWU0
ZTRjNmVhZTgzNGVhY2M4MGZjMS4uMDBiODc1Y2FjMDllN2YxNDQ0ODA3ODA4OTVlM2ZlMzA5Yzdl
OTg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTE2
MCwxMyArMTYwLDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgQ29uc3RyYWludHNGb3JPdXRPZkZs
b3dDb250ZW50IGNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBDb250YWluZXJC
b3gmKTsKICAgICAgICAgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IGNvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudChjb25zdCBDb250YWluZXJCb3gmLCBPcHRpb25hbDxFc2NhcGVSZWFzb24+
ID0gV1RGOjpudWxsb3B0KTsKIAorICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
ZEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tI
ZWlnaHQgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBjb21wdXRlZFdpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lk
dGgpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBmcmllbmQgY2xhc3MgRm9ybWF0
dGluZ0NvbnRleHQ7CiAgICAgICAgIEdlb21ldHJ5KGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0Jik7
CiAKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRIZWlnaHQoY29uc3QgQm94
JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gV1RGOjpudWxs
b3B0KSBjb25zdDsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRXaWR0aChj
b25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdDsKLQogICAg
ICAgICBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zv
cm1hdHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KICAgICAgICAgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlKCkgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRTdGF0ZSgpOyB9
CiAgICAgICAgIGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRDb250ZXh0LmNwcAppbmRleCAyODRjNjI0MGUzMmNlN2Y2M2ZkMzZjYWZiYzg5YTUzOWQ5
MDY2YzliLi4yYjVhNGZhMTM2ZDE2MDE1MWIzYTBhYTllMDBlYzFmODgyOGViYmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUg
IlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjQsNiArMTI1LDgg
QEAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRDb250ZXh0OjpjcmVh
dGVGb3JtYXR0aW5nQ29udGV4dChjb25zdAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKCFm
b3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgp
KTsKICAgICAgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lbnN1
cmVCbG9ja0Zvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAgICAgICBp
ZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmlzVGFibGVXcmFwcGVyQm94KCkpCisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRS
b290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcAppbmRleCA4ZmQ0ZjZjYTA3YTNiNTQxYjAxMDVlYWI1MGFhMGY1ZDMxNjZmZGM1
Li40YmRkZDVhZjM1YjRjMTUyZTcwZmViODkwZGIzNzE1N2E2MzIzMWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM3MiwzMyArMzcyLDIyIEBAIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9OwogCi0gICAgYXV0byB1c2VkSGVp
Z2h0VmFsdWUgPSBPcHRpb25hbDxMYXlvdXRVbml0PiB7IH07Ci0gICAgYXV0byBpZ25vcmVNaW5N
YXhIZWlnaHRDb21wdXRlID0gZmFsc2U7Ci0gICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc1Rh
YmxlRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICAvLyBUYWJsZSBpcyBhIHNwZWNpYWwg
QkZDIGNvbnRlbnQuIEl0cyBoZWlnaHQgaXMgbWFpbmx5IGRyaXZlbiBieSB0aGUgY29udGVudC4g
Q29tcHV0ZWQgaGVpZ2h0LCBtaW4taGVpZ2h0IGFuZCBtYXgtaGVpZ2h0IGFyZSBhbGwKLSAgICAg
ICAgLy8gYWxyZWFkeSBiZWVuIHRha2VuIGludG8gYWNjb3VudCBkdXJpbmcgdGhlIFRGQyBsYXlv
dXQuCi0gICAgICAgIHVzZWRIZWlnaHRWYWx1ZSA9IGdlb21ldHJ5KCkuY29udGVudEhlaWdodEZv
ckZvcm1hdHRpbmdDb250ZXh0Um9vdChkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkp
OwotICAgICAgICBpZ25vcmVNaW5NYXhIZWlnaHRDb21wdXRlID0gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBhdXRvIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKHsgdXNlZEhlaWdodFZhbHVl
IH0pOwotICAgIGlmICghaWdub3JlTWluTWF4SGVpZ2h0Q29tcHV0ZSkgewotICAgICAgICBpZiAo
YXV0byBtYXhIZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWF4SGVpZ2h0KGxheW91dEJveCkp
IHsKLSAgICAgICAgICAgIGlmIChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQg
PiAqbWF4SGVpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBtYXhIZWlnaHRBbmRNYXJnaW4g
PSBjb21wdXRlKG1heEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgLy8gVXNlZCBoZWlnaHQgc2hv
dWxkIHJlbWFpbiB0aGUgc2FtZS4KLSAgICAgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRl
KCkuaW5RdWlya3NNb2RlKCkgJiYgKGxheW91dEJveC5pc0JvZHlCb3goKSB8fCBsYXlvdXRCb3gu
aXNEb2N1bWVudEJveCgpKSkgfHwgbWF4SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQgPT0g
Km1heEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgY29udGVudEhlaWdodEFuZE1hcmdpbiA9IHsg
Km1heEhlaWdodCwgbWF4SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbiB9OwotICAg
ICAgICAgICAgfQorICAgIGF1dG8gY29udGVudEhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUoeyB9
KTsKKyAgICBpZiAoYXV0byBtYXhIZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWF4SGVpZ2h0
KGxheW91dEJveCkpIHsKKyAgICAgICAgaWYgKGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVu
dEhlaWdodCA+ICptYXhIZWlnaHQpIHsKKyAgICAgICAgICAgIGF1dG8gbWF4SGVpZ2h0QW5kTWFy
Z2luID0gY29tcHV0ZShtYXhIZWlnaHQpOworICAgICAgICAgICAgLy8gVXNlZCBoZWlnaHQgc2hv
dWxkIHJlbWFpbiB0aGUgc2FtZS4KKyAgICAgICAgICAgIEFTU0VSVCgobGF5b3V0U3RhdGUoKS5p
blF1aXJrc01vZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9keUJveCgpIHx8IGxheW91dEJveC5pc0Rv
Y3VtZW50Qm94KCkpKSB8fCBtYXhIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCA9PSAqbWF4
SGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSB7ICptYXhIZWln
aHQsIG1heEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4gfTsKICAgICAgICAgfQor
ICAgIH0KIAotICAgICAgICBpZiAoYXV0byBtaW5IZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVk
TWluSGVpZ2h0KGxheW91dEJveCkpIHsKLSAgICAgICAgICAgIGlmIChjb250ZW50SGVpZ2h0QW5k
TWFyZ2luLmNvbnRlbnRIZWlnaHQgPCAqbWluSGVpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBtaW5IZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKG1pbkhlaWdodCk7Ci0gICAgICAgICAgICAg
ICAgLy8gVXNlZCBoZWlnaHQgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZS4KLSAgICAgICAgICAgICAg
ICBBU1NFUlQoKGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkgJiYgKGxheW91dEJveC5pc0Jv
ZHlCb3goKSB8fCBsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKSkgfHwgbWluSGVpZ2h0QW5kTWFy
Z2luLmNvbnRlbnRIZWlnaHQgPT0gKm1pbkhlaWdodCk7Ci0gICAgICAgICAgICAgICAgY29udGVu
dEhlaWdodEFuZE1hcmdpbiA9IHsgKm1pbkhlaWdodCwgbWluSGVpZ2h0QW5kTWFyZ2luLm5vbkNv
bGxhcHNlZE1hcmdpbiB9OwotICAgICAgICAgICAgfQorICAgIGlmIChhdXRvIG1pbkhlaWdodCA9
IGdlb21ldHJ5KCkuY29tcHV0ZWRNaW5IZWlnaHQobGF5b3V0Qm94KSkgeworICAgICAgICBpZiAo
Y29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0IDwgKm1pbkhlaWdodCkgeworICAg
ICAgICAgICAgYXV0byBtaW5IZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKG1pbkhlaWdodCk7Cisg
ICAgICAgICAgICAvLyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgorICAgICAg
ICAgICAgQVNTRVJUKChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIChsYXlvdXRCb3gu
aXNCb2R5Qm94KCkgfHwgbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSkpIHx8IG1pbkhlaWdodEFu
ZE1hcmdpbi5jb250ZW50SGVpZ2h0ID09ICptaW5IZWlnaHQpOworICAgICAgICAgICAgY29udGVu
dEhlaWdodEFuZE1hcmdpbiA9IHsgKm1pbkhlaWdodCwgbWluSGVpZ2h0QW5kTWFyZ2luLm5vbkNv
bGxhcHNlZE1hcmdpbiB9OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oCmluZGV4IGZhM2VhMDJiNDFlZjIxNmI4MzY2ZmRmY2VkNTRiM2YxODZhYjFhNWMuLjZj
MmRhODFjYjNlNmRkODFkNzE3ZjA1MmFmOGI4MmE4NWJmNWI0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCkBAIC00MywxNSArNDMsMTQgQEAgY2xhc3MgRmxvYXRpbmdDb250ZXh0Owog
CiAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIGxheW91dCBsb2dpYyBmb3IgYmxvY2sgZm9y
bWF0dGluZyBjb250ZXh0cy4KIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVu
Lmh0bWwjYmxvY2stZm9ybWF0dGluZwotY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCBmaW5h
bCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CitjbGFzcyBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOwogcHVibGljOgogICAgIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlJik7CiAKICAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxp
ZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlk
ZTsKIAotcHJpdmF0ZToKLQorcHJvdGVjdGVkOgogICAgIHN0cnVjdCBDb25zdHJhaW50c1BhaXIg
ewogICAgICAgICBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgZm9ybWF0dGluZ0Nv
bnRleHRSb290OwogICAgICAgICBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgY29u
dGFpbmluZ0Jsb2NrOwpAQCAtNzUsNiArNzQsOCBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xh
c3MgaW1wbGVtZW50cyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0aWNpcGF0
aW5nIGluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgogICAgIGNsYXNzIEdlb21ldHJ5IDog
cHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7CiAgICAgcHVibGljOgorICAgICAg
ICBHZW9tZXRyeShjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Jik7CisKICAgICAgICAgQ29u
dGVudEhlaWdodEFuZE1hcmdpbiBpbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYp
OwogICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5GbG93V2lkdGhBbmRNYXJnaW4oY29u
c3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jp
em9udGFsVmFsdWVzJik7CiAKQEAgLTg1LDEzICs4Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBC
b3gmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OwotICAgICAgICBHZW9tZXRyeShjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Jik7Ci0KICAgICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhl
aWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBj
b25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJik7CiAgICAgICAgIENvbnRlbnRXaWR0aEFuZE1h
cmdpbiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyYpIGNv
bnN0OwogICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5GbG93UmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYs
IGNvbnN0IE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyYpIGNvbnN0OwotICAgICAgICBQb2ludCBz
dGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgQm94JikgY29uc3Q7CiAK
ICAgICAgICAgY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0PihGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZvcm1hdHRpbmdDb250ZXh0KCkpOyB9CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA5MmFkZGZj
MDU3ODAwNDlmZGJhYzlkMTc4ZjM1ZjYyNDg2NDQyYWRjLi43MTY0NDFkYmNhNjUyZmZhM2M0OTRi
MzRlZmU0ZDVjMjY2OWMwZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCkBAIC0yNzgsMzIgKzI3OCw4IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJnaW4oY29u
CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKIAotICAgIGlmICghbGF5b3V0
Qm94LmlzUmVwbGFjZWRCb3goKSkgewotICAgICAgICBpZiAoIWxheW91dEJveC5lc3RhYmxpc2hl
c1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIHJldHVybiBpbkZsb3dOb25S
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBv
dmVycmlkZUhvcml6b250YWxWYWx1ZXMpOwotICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCB0
YWJsZSAiZml0LWNvbnRlbnQgc2l6ZSIgYmVoYXZpb3IgaGFuZGxpbmcuIE5vdCBpbiB0aGUgc3Bl
YyB0aG91Z2guCi0gICAgICAgIC8vIFRhYmxlIHJldHVybnMgaXRzIGZpbmFsIHdpZHRoIGFzIG1p
bi9tYXguIFVzZSB0aGlzIGZpbmFsIHdpZHRoIHZhbHVlIHRvIGNvbXB1dGVkIGhvcml6b250YWwg
bWFyZ2lucyBldGMuCi0gICAgICAgIGlmIChvdmVycmlkZUhvcml6b250YWxWYWx1ZXMud2lkdGgp
Ci0gICAgICAgICAgICByZXR1cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlv
dXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzIHsg
b3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzLndpZHRoLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMu
bWFyZ2luIH0pOwotCi0gICAgICAgIGF1dG8mIHRhYmxlQm94ID0gZG93bmNhc3Q8Q29udGFpbmVy
Qm94PihsYXlvdXRCb3gpOwotICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGVGb3JUYWJsZUJv
eCA9IGxheW91dFN0YXRlKCkuZW5zdXJlRm9ybWF0dGluZ1N0YXRlKHRhYmxlQm94KTsKLSAgICAg
ICAgYXV0byBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyB7IH07Ci0gICAgICAgIGlmIChhdXRvIHByZWNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0ZUZvclRhYmxlQm94LmludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMoKSkKLSAgICAgICAgICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSAqcHJlY29t
cHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0
dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkpLT5jb21wdXRlZEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMoKTsKLSAgICAgICAgYXV0byBjb21wdXRlZFRhYmxlV2lkdGggPSBjb21w
dXRlZFdpZHRoKHRhYmxlQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsK
LSAgICAgICAgYXV0byB1c2VkV2lkdGggPSBjb21wdXRlZFRhYmxlV2lkdGg7Ci0gICAgICAgIGlm
IChjb21wdXRlZFRhYmxlV2lkdGggJiYgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5taW5pbXVt
ID4gY29tcHV0ZWRUYWJsZVdpZHRoKSB7Ci0gICAgICAgICAgICAvLyBUYWJsZSBjb250ZW50IG5l
ZWRzIG1vcmUgc3BhY2UgdGhhbiB0aGUgdGFibGUgaGFzLgotICAgICAgICAgICAgdXNlZFdpZHRo
ID0gaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5taW5pbXVtOwotICAgICAgICB9IGVsc2UgaWYg
KCFjb21wdXRlZFRhYmxlV2lkdGgpIHsKLSAgICAgICAgICAgIC8vIFVzZSB0aGUgZ2VuZXJpYyBz
aHJpbmstdG8tZml0LXdpZHRoIGxvZ2ljLgotICAgICAgICAgICAgdXNlZFdpZHRoID0gc3RkOjpt
aW4oc3RkOjptYXgoaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5taW5pbXVtLCBob3Jpem9udGFs
Q29uc3RyYWludHMubG9naWNhbFdpZHRoKSwgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5tYXhp
bXVtKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgT3ZlcnJpZGVIb3Jpem9u
dGFsVmFsdWVzIHsgdXNlZFdpZHRoLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMubWFyZ2luIH0p
OwotICAgIH0KKyAgICBpZiAoIWxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpCisgICAgICAgIHJl
dHVybiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOwogICAgIHJldHVybiBpbkZs
b3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRCb3gp
LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3
cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwOWQxOGY3NzBlYzg4YmEwNTBm
NjE0MDg0MDI1MjBkOTI0OGQxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOworCitUYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBCbG9ja0Zvcm1hdHRp
bmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorICAgIDogQmxvY2tGb3JtYXR0aW5nQ29udGV4dChm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIGZvcm1hdHRpbmdTdGF0ZSkKK3sKK30KKwordm9pZCBUYWJs
ZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFs
aWRhdGlvblN0YXRlJiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJh
aW50cykKK3sKKyAgICAvLyBUaGUgdGFibGUgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGJsb2NrIGNv
bnRhaW5lciBib3ggY2FsbGVkIHRoZSB0YWJsZSB3cmFwcGVyIGJveCB0aGF0IGNvbnRhaW5zIHRo
ZSB0YWJsZSBib3ggaXRzZWxmIGFuZCBhbnkgY2FwdGlvbiBib3hlcworICAgIC8vIChpbiBkb2N1
bWVudCBvcmRlcikuIFRoZSB0YWJsZSBib3ggaXMgYSBibG9jay1sZXZlbCBib3ggdGhhdCBjb250
YWlucyB0aGUgdGFibGUncyBpbnRlcm5hbCB0YWJsZSBib3hlcy4KKyAgICAvLyBUaGUgY2FwdGlv
biBib3hlcyBhcmUgcHJpbmNpcGFsIGJsb2NrLWxldmVsIGJveGVzIHRoYXQgcmV0YWluIHRoZWly
IG93biBjb250ZW50LCBwYWRkaW5nLCBtYXJnaW4sIGFuZCBib3JkZXIgYXJlYXMsIGFuZCBhcmUg
cmVuZGVyZWQKKyAgICAvLyBhcyBub3JtYWwgYmxvY2sgYm94ZXMgaW5zaWRlIHRoZSB0YWJsZSB3
cmFwcGVyIGJveC4gV2hldGhlciB0aGUgY2FwdGlvbiBib3hlcyBhcmUgcGxhY2VkIGJlZm9yZSBv
ciBhZnRlciB0aGUgdGFibGUgYm94IGlzIGRlY2lkZWQgYnkKKyAgICAvLyB0aGUgJ2NhcHRpb24t
c2lkZScgcHJvcGVydHksIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAgICBmb3IgKGF1dG8mIGNoaWxk
IDogY2hpbGRyZW5PZlR5cGU8Q29udGFpbmVyQm94Pihyb290KCkpKSB7CisgICAgICAgIGlmIChj
aGlsZC5pc1RhYmxlQm94KCkpCisgICAgICAgICAgICBsYXlvdXRUYWJsZUJveChjaGlsZCwgY29u
c3RyYWludHMpOworICAgICAgICBlbHNlIGlmIChjaGlsZC5pc1RhYmxlQ2FwdGlvbigpKQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIFRhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQm94KGNvbnN0IENvbnRhaW5l
ckJveCYgdGFibGVCb3gsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3Ry
YWludHMpCit7CisgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcodGFibGVCb3gsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwpOworICAgIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKHRhYmxl
Qm94LCBjb25zdHJhaW50cy52ZXJ0aWNhbCk7CisgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luRm9y
VGFibGVCb3godGFibGVCb3gsIGNvbnN0cmFpbnRzKTsKKyAgICBjb21wdXRlU3RhdGljSG9yaXpv
bnRhbFBvc2l0aW9uKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKKworICAgIGF1
dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBJbnZhbGlkYXRpb25TdGF0ZSB7IH07CisgICAgTGF5b3V0
Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkp
LT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBnZW9tZXRyeSgpLmNvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudCh0YWJsZUJveCkpOworCisgICAgY29tcHV0ZUhlaWdodEFu
ZE1hcmdpbkZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50cyk7Cit9CisKK3ZvaWQgVGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luRm9y
VGFibGVCb3goY29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCwgY29uc3QgQ29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKK3sKKyAgICBBU1NFUlQodGFibGVCb3guaXNU
YWJsZUJveCgpKTsKKyAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCB0YWJsZSAiZml0LWNvbnRlbnQg
c2l6ZSIgYmVoYXZpb3IgaGFuZGxpbmcuIE5vdCBpbiB0aGUgc3BlYyB0aG91Z2guCisgICAgLy8g
VGFibGUgcmV0dXJucyBpdHMgZmluYWwgd2lkdGggYXMgbWluL21heC4gVXNlIHRoaXMgZmluYWwg
d2lkdGggdmFsdWUgdG8gY29tcHV0ZWQgaG9yaXpvbnRhbCBtYXJnaW5zIGV0Yy4KKyAgICBhdXRv
JiBmb3JtYXR0aW5nU3RhdGVGb3JUYWJsZUJveCA9IGxheW91dFN0YXRlKCkuZW5zdXJlRm9ybWF0
dGluZ1N0YXRlKHRhYmxlQm94KTsKKyAgICBhdXRvIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
PSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsgfTsKKyAgICBpZiAoYXV0byBwcmVjb21wdXRl
ZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBmb3JtYXR0aW5nU3RhdGVGb3JUYWJsZUJveC5p
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkpCisgICAgICAgIGludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgPSAqcHJlY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOworICAgIGVsc2UK
KyAgICAgICAgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IExheW91dENvbnRleHQ6OmNyZWF0
ZUZvcm1hdHRpbmdDb250ZXh0KHRhYmxlQm94LCBsYXlvdXRTdGF0ZSgpKS0+Y29tcHV0ZWRJbnRy
aW5zaWNXaWR0aENvbnN0cmFpbnRzKCk7CisgICAgYXV0byBjb21wdXRlZFRhYmxlV2lkdGggPSBn
ZW9tZXRyeSgpLmNvbXB1dGVkV2lkdGgodGFibGVCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwu
bG9naWNhbFdpZHRoKTsKKyAgICBhdXRvIHVzZWRXaWR0aCA9IGNvbXB1dGVkVGFibGVXaWR0aDsK
KyAgICBpZiAoY29tcHV0ZWRUYWJsZVdpZHRoICYmIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMu
bWluaW11bSA+IGNvbXB1dGVkVGFibGVXaWR0aCkgeworICAgICAgICAvLyBUYWJsZSBjb250ZW50
IG5lZWRzIG1vcmUgc3BhY2UgdGhhbiB0aGUgdGFibGUgaGFzLgorICAgICAgICB1c2VkV2lkdGgg
PSBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1pbmltdW07CisgICAgfSBlbHNlIGlmICghY29t
cHV0ZWRUYWJsZVdpZHRoKSB7CisgICAgICAgIC8vIFVzZSB0aGUgZ2VuZXJpYyBzaHJpbmstdG8t
Zml0LXdpZHRoIGxvZ2ljLgorICAgICAgICB1c2VkV2lkdGggPSBzdGQ6Om1pbihzdGQ6Om1heChp
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1pbmltdW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwu
bG9naWNhbFdpZHRoKSwgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5tYXhpbXVtKTsKKyAgICB9
CisgICAgYXV0byBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmluRmxvd1dpZHRo
QW5kTWFyZ2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsLCBPdmVycmlkZUhvcml6
b250YWxWYWx1ZXMgeyB1c2VkV2lkdGgsIHsgfSB9KTsKKworICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5Qm94KHRhYmxlQm94KTsKKyAgICBkaXNwbGF5Qm94
LnNldENvbnRlbnRCb3hXaWR0aChjb250ZW50V2lkdGhBbmRNYXJnaW4uY29udGVudFdpZHRoKTsK
KyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4oY29udGVudFdpZHRoQW5kTWFyZ2lu
LnVzZWRNYXJnaW4pOworICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2lu
KGNvbnRlbnRXaWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbik7Cit9CisKK3ZvaWQgVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRh
YmxlQm94KGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVCb3gsIGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCit7CisgICAgQVNTRVJUKHRhYmxlQm94LmlzVGFi
bGVCb3goKSk7CisgICAgLy8gVGFibGUgaXMgYSBzcGVjaWFsIEJGQyBjb250ZW50LiBJdHMgaGVp
Z2h0IGlzIG1haW5seSBkcml2ZW4gYnkgdGhlIGNvbnRlbnQuIENvbXB1dGVkIGhlaWdodCwgbWlu
LWhlaWdodCBhbmQgbWF4LWhlaWdodCBhcmUgYWxsCisgICAgLy8gYWxyZWFkeSBiZWVuIHRha2Vu
IGludG8gYWNjb3VudCBkdXJpbmcgdGhlIFRGQyBsYXlvdXQuCisgICAgYXV0byB1c2VkSGVpZ2h0
ID0gZ2VvbWV0cnkoKS5jb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KHRhYmxl
Qm94KTsKKyAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuaW5GbG93SGVpZ2h0
QW5kTWFyZ2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsLCB7IHVzZWRIZWlnaHQg
fSk7CisKKyAgICBhdXRvIG1hcmdpbkNvbGxhcHNlID0gdGhpcy0+bWFyZ2luQ29sbGFwc2UoKTsK
KyAgICBhdXRvIGNvbGxhcHNlZEFuZFBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMgPSBtYXJnaW5Db2xs
YXBzZS5jb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyh0YWJsZUJveCwgaGVpZ2h0QW5kTWFyZ2luLm5v
bkNvbGxhcHNlZE1hcmdpbik7CisgICAgLy8gQ2FjaGUgdGhlIGNvbXB1dGVkIHBvc2l0aXZlIGFu
ZCBuZWdhdGl2ZSBtYXJnaW4gdmFsdWUgcGFpci4KKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5zZXRQ
b3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4odGFibGVCb3gsIGNvbGxhcHNlZEFuZFBv
c2l0aXZlTmVnYXRpdmVWYWx1ZXMucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsVmFsdWVzKTsK
KyAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luIHsgaGVpZ2h0QW5k
TWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkQW5kUG9zaXRpdmVOZWdhdGl2ZVZh
bHVlcy5jb2xsYXBzZWRWYWx1ZXMgfTsKKworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0
aW5nU3RhdGUoKS5kaXNwbGF5Qm94KHRhYmxlQm94KTsKKyAgICBkaXNwbGF5Qm94LnNldFRvcCh2
ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbih0YWJsZUJveCwgdmVydGljYWxNYXJnaW4sIGNvbnN0
cmFpbnRzLnZlcnRpY2FsKSk7CisgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGhl
aWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0KTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2Fs
TWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsKKyAgICAvLyBBZGp1c3QgdGhlIHByZXZpb3VzIHNpYmxp
bmcncyBtYXJnaW4gYm90dG9tIG5vdyB0aGF0IHRoaXMgYm94J3MgdmVydGljYWwgbWFyZ2luIGlz
IGNvbXB1dGVkLgorICAgIE1hcmdpbkNvbGxhcHNlOjp1cGRhdGVNYXJnaW5BZnRlckZvclByZXZp
b3VzU2libGluZygqdGhpcywgbWFyZ2luQ29sbGFwc2UsIHRhYmxlQm94KTsKK30KKworfQorfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjBmZmI2OGFjZDgzYjA2
ZjgwOGJjYWUzODRmYTJkZWRjNWRkNTFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVk
ZSAiQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKKy8vIFRoaXMgY2xh
c3MgaW1wbGVtZW50cyB0aGUgc3BlY2lhbCBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgbGF5b3V0
IGxvZ2ljIGZvciB0aGUgdGFibGUgd3JhcHBlci4KKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9D
U1MyMi90YWJsZXMuaHRtbCNtb2RlbAorY2xhc3MgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dCBmaW5hbCA6IHB1YmxpYyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0IHsKKyAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOwor
cHVibGljOgorICAgIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29u
dGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7
CisKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25z
dCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2
b2lkIGxheW91dFRhYmxlQm94KGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVCb3gsIGNvbnN0IENv
bnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpOworCisgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRN
YXJnaW5Gb3JUYWJsZUJveChjb25zdCBDb250YWluZXJCb3gmLCBjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQmKTsKKyAgICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJs
ZUJveChjb25zdCBDb250YWluZXJCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmKTsKK307CisKK30KK30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>