<?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>222331</bug_id>
          
          <creation_ts>2021-02-23 13:34:59 -0800</creation_ts>
          <short_desc>Fix MetalANGLE backend crashes in video texture tests</short_desc>
          <delta_ts>2021-02-25 15:29:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220076</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kyle Piddington">kpiddington</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732673</commentid>
    <comment_count>0</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-02-23 13:34:59 -0800</bug_when>
    <thetext>Fix MetalANGLE backend crashes in video texture tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732674</commentid>
    <comment_count>1</comment_count>
      <attachid>421347</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-02-23 13:35:22 -0800</bug_when>
    <thetext>Created attachment 421347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732676</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-02-23 13:36:30 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733532</commentid>
    <comment_count>3</comment_count>
      <attachid>421569</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-02-25 14:48:17 -0800</bug_when>
    <thetext>Created attachment 421569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733539</commentid>
    <comment_count>4</comment_count>
      <attachid>421569</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-02-25 15:15:39 -0800</bug_when>
    <thetext>Comment on attachment 421569
Patch

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

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm:43
&gt; +// clang-format off

Did you mean to leave this in?

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/TextureMtl.mm:674
&gt; +    if(mState.getType() == gl::TextureType::Rectangle)
&gt; +    {
&gt; +        samplerDesc.normalizedCoordinates = NO;
&gt; +    }
&gt; +    else
&gt; +    {
&gt; +        samplerDesc.normalizedCoordinates = YES;
&gt; +    }

Use a ternary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733546</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-02-25 15:28:20 -0800</bug_when>
    <thetext>Committed r273516 (234591@main): &lt;https://commits.webkit.org/234591@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733549</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-25 15:29:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/74763493&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421347</attachid>
            <date>2021-02-23 13:35:22 -0800</date>
            <delta_ts>2021-02-25 14:48:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222331-20210223133521.patch</filename>
            <type>text/plain</type>
            <size>40363</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNDBlNWZjYjg0ZTBjZTQxMDNhYmUxMTY2YzAzZjUzNzk5NmZjMmZhMy4uYzgzM2I4YTllY2Fh
ZmEwNDJkYjQ0ODZkMWRjOWZlMGQxOWI0NzliYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAyLTIzICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGNyYXNoZXMgaW4gZmFzdC9jYW52YXMvd2Vi
Z2wvdGV4SW1hZ2UgdmlkZW8gdGVzdHMKKyAgICAgICAgUmVmYWN0b3IgSU9TdXJmYWNlU3VyZmFj
ZU10bCB0byBtYXRjaCBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgQWRkaXRp
b25hbCBjbGVhbnVwCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tOgorICAgICAg
ICAocng6OkNvbnRleHRNdGw6Om9uQmFja2J1ZmZlclJlc2l6ZWQpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tOgorICAgICAgICAocng6OkRpc3Bs
YXlNdGw6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKToKKyAgICAgICAgKHJ4OjpEaXNwbGF5TXRsOjpj
cmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmg6CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJN
dGw6OmdldEF0dGFjaGVkQmFja2J1ZmZlciBjb25zdCk6CisgICAgICAgICogc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLm1tOgorICAgICAgICAocng6OkZyYW1lYnVm
ZmVyTXRsOjpGcmFtZWJ1ZmZlck10bCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbToKKyAgICAgICAgKHJ4OjpJT1N1cmZh
Y2VTdXJmYWNlTXRsOjpJT1N1cmZhY2VTdXJmYWNlTXRsKToKKyAgICAgICAgKHJ4OjpJT1N1cmZh
Y2VTdXJmYWNlTXRsOjp+SU9TdXJmYWNlU3VyZmFjZU10bCk6CisgICAgICAgIChyeDo6SU9TdXJm
YWNlU3VyZmFjZU10bDo6YmluZFRleEltYWdlKToKKyAgICAgICAgKHJ4OjpJT1N1cmZhY2VTdXJm
YWNlTXRsOjpyZWxlYXNlVGV4SW1hZ2UpOgorICAgICAgICAocng6OklPU3VyZmFjZVN1cmZhY2VN
dGw6OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OklPU3VyZmFjZVN1
cmZhY2VNdGw6OmVuc3VyZUNvbG9yVGV4dHVyZUNyZWF0ZWQpOgorICAgICAgICAocng6OklPU3Vy
ZmFjZVN1cmZhY2VNdGw6OlZhbGlkYXRlQXR0cmlidXRlcyk6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwuaDoKKyAgICAgICAgKHJ4OjpTdXJmYWNlTXRs
OjpnZXRDb2xvclRleHR1cmUpOgorICAgICAgICAocng6OlN1cmZhY2VNdGw6OmdldFNhbXBsZXMg
Y29uc3QpOgorICAgICAgICAocng6OlN1cmZhY2VNdGw6Omhhc1JvYnVzdFJlc291cmNlSW5pdCBj
b25zdCk6CisgICAgICAgIChyeDo6V2luZG93U3VyZmFjZU10bDo6cHJlc2VydmVCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1t
OgorICAgICAgICAocng6OlN1cmZhY2VNdGw6OlN1cmZhY2VNdGwpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRsLmg6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL1RleHR1cmVNdGwubW06CisgICAgICAgIChyeDo6VGV4dHVyZU10
bDo6ZW5zdXJlVGV4dHVyZUNyZWF0ZWQpOgorICAgICAgICAocng6OlRleHR1cmVNdGw6OmVuc3Vy
ZVNhbXBsZXJTdGF0ZUNyZWF0ZWQpOgorICAgICAgICAocng6OlRleHR1cmVNdGw6OmJpbmRUZXhJ
bWFnZSk6CisgICAgICAgIChyeDo6VGV4dHVyZU10bDo6cmVsZWFzZVRleEltYWdlKToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KToKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oOgorCiAyMDIxLTAyLTE5
ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGluZ3RvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGEgbnVtYmVyIG9mIGZ1bmN0aW9uYWwgcmVncmVzc2lvbnMgY2F1c2VkIGJ5IGVuYWJsaW5nIHRo
ZSBNZXRhbCBBTkdMRSBiYWNrZW5kIGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRl
eHRNdGwuaAppbmRleCAyZjM5MzcxZDk4MzNkYTEzNjk1NjM2ZjgzNDAyMDMzMGNlYWFkY2Y5Li44
Mjg5NGZlYjQ1OTcxNDFmMWVmYWI3ZTYyNjIyN2I4ZGZiM2RiNmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9Db250ZXh0TXRsLmgKQEAgLTI5LDggKzI5LDggQEAgY2xhc3MgRnJhbWVidWZmZXJNdGw7
CiBjbGFzcyBWZXJ0ZXhBcnJheU10bDsKIGNsYXNzIFByb2dyYW1NdGw7CiBjbGFzcyBSZW5kZXJU
YXJnZXRNdGw7Ci1jbGFzcyBTdXJmYWNlTXRsUHJvdG9jb2w7CiBjbGFzcyBCdWZmZXJNdGw7Citj
bGFzcyBXaW5kb3dTdXJmYWNlTXRsOwogCiBjbGFzcyBDb250ZXh0TXRsIDogcHVibGljIENvbnRl
eHRJbXBsLCBwdWJsaWMgbXRsOjpDb250ZXh0CiB7CkBAIC0yOTIsNyArMjkyLDcgQEAgY2xhc3Mg
Q29udGV4dE10bCA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIG10bDo6Q29udGV4dAogICAg
IHZvaWQgb25EcmF3RnJhbWVCdWZmZXJDaGFuZ2VkU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZl
ck10bCAqZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHJlbmRlclBhc3NDaGFuZ2VkKTsKLSAgICB2b2lkIG9uQmFja2J1ZmZlclJlc2l6ZWQo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIFN1cmZhY2VNdGxQcm90b2NvbCAqYmFja2J1ZmZl
cik7CisgICAgdm9pZCBvbkJhY2tidWZmZXJSZXNpemVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0LCBXaW5kb3dTdXJmYWNlTXRsICpiYWNrYnVmZmVyKTsKIAogICAgIC8vIEludm9rZSBieSBR
dWVyeU10bAogICAgIGFuZ2xlOjpSZXN1bHQgb25PY2NsdXNpb25RdWVyeUJlZ2FuKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LCBRdWVyeU10bCAqcXVlcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwu
bW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
Q29udGV4dE10bC5tbQppbmRleCBlY2Y1ZmI3NjlhNWY5MzcyZTY4MDNjM2QxMzA2ZDRkYjM1ZTA0
YTk5Li5kMjUyY2ViNTJkNWZlYTU4ODEwMjY3MTBjZjE3YzJlNTQ1ZDAzNjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29u
dGV4dE10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbQpAQCAtMTkzMiw3ICsxOTMyLDcgQEAgdm9pZCBDb250
ZXh0TXRsOjpvbkRyYXdGcmFtZUJ1ZmZlckNoYW5nZWRTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4dE10bDo6b25CYWNrYnVmZmVyUmVzaXpl
ZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgU3VyZmFjZU10bFByb3RvY29sICpiYWNrYnVm
ZmVyKQordm9pZCBDb250ZXh0TXRsOjpvbkJhY2tidWZmZXJSZXNpemVkKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LCBXaW5kb3dTdXJmYWNlTXRsICpiYWNrYnVmZmVyKQogewogICAgIGNvbnN0
IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICA9IGdldFN0YXRlKCk7CiAgICAgRnJhbWVidWZmZXJNdGwg
KmZyYW1lYnVmZmVyID0gbXRsOjpHZXRJbXBsKGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL0Rpc3BsYXlNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQppbmRleCBhMmJjODJlOWQwNjVlYjAz
ZTE0YTg1ZmRmNTI3YWVmMTI0NmY3OGUxLi5hMzc4YjI0YmZlZWQ4ODBlMGFmNDliZGRkZTg0NmZj
ZjA1YThjNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQpAQCAtMjcwLDgg
KzI3MCw3IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5TXRsOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKIFN1cmZhY2VJbXBsICpEaXNwbGF5TXRsOjpj
cmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IFBCdWZmZXJTdXJm
YWNlTXRsKHRoaXMsIHN0YXRlLCBhdHRyaWJzKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlN
dGw6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRl
ICZzdGF0ZSwKQEAgLTI3OSw3ICsyNzgsMTUgQEAgU3VyZmFjZUltcGwgKkRpc3BsYXlNdGw6OmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICYKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQogewotICAgIHJldHVybiBuZXcgSU9TdXJmYWNlU3VyZmFjZU10bCh0aGlzLCBzdGF0ZSwgY2xp
ZW50QnVmZmVyLCBhdHRyaWJzKTsKKyAgICBzd2l0Y2ggKGJ1ZnR5cGUpCisgICAgeworICAgICAg
ICBjYXNlIEVHTF9JT1NVUkZBQ0VfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gbmV3IElPU3Vy
ZmFjZVN1cmZhY2VNdGwodGhpcywgc3RhdGUsIGNsaWVudEJ1ZmZlciwgYXR0cmlicyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIFN1cmZhY2VJbXBs
ICpEaXNwbGF5TXRsOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRl
ICZzdGF0ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9GcmFtZUJ1ZmZlck10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmgKaW5kZXggNWU1
Y2NlOWM1MWNmOGZiMmJmYmFkZmYxNTczMzVlYTczYTI0OThhMC4uOTEwNTk1ZWQzZmM0YWY5Yzk2
ZjgxMDA2YjkzYWQ3OTg3OGQ2MjhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVm
ZmVyTXRsLmgKQEAgLTIzLDE0ICsyMywxNCBAQCBuYW1lc3BhY2UgbXRsCiBjbGFzcyBSZW5kZXJD
b21tYW5kRW5jb2RlcjsKIH0gIC8vIG5hbWVzcGFjZSBtdGwKIGNsYXNzIENvbnRleHRNdGw7Ci1j
bGFzcyBTdXJmYWNlTXRsOworY2xhc3MgV2luZG93U3VyZmFjZU10bDsKIAogY2xhc3MgRnJhbWVi
dWZmZXJNdGwgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiB7CiAgIHB1YmxpYzoKICAgICBleHBs
aWNpdCBGcmFtZWJ1ZmZlck10bChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdXJmYWNlTXRsUHJvdG9jb2wgKmJhY2tidWZmZXIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdpbmRvd1N1cmZhY2VNdGwgKmJhY2tidWZmZXIpOwogICAgIH5GcmFt
ZWJ1ZmZlck10bCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVzdHJveShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKQEAgLTk5LDcgKzk5LDcgQEAgY2xhc3MgRnJhbWVidWZm
ZXJNdGwgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiAKICAgICBnbDo6UmVjdGFuZ2xlIGdldENv
bXBsZXRlUmVuZGVyQXJlYSgpIGNvbnN0OwogICAgIGludCBnZXRTYW1wbGVzKCkgY29uc3Q7Ci0g
ICAgU3VyZmFjZU10bFByb3RvY29sICpnZXRBdHRhY2hlZEJhY2tidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtQmFja2J1ZmZlcjsgfQorICAgIFdpbmRvd1N1cmZhY2VNdGwgKmdldEF0dGFjaGVkQmFj
a2J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1CYWNrYnVmZmVyOyB9CiAKICAgICBib29sIHJlbmRl
clBhc3NIYXNTdGFydGVkKENvbnRleHRNdGwgKmNvbnRleHRNdGwpIGNvbnN0OwogICAgIG10bDo6
UmVuZGVyQ29tbWFuZEVuY29kZXIgKmVuc3VyZVJlbmRlclBhc3NTdGFydGVkKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlck10
bCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckltcGwKICAgICAvLyBhcyBieSBhIGNvbXB1dGUgcGFzcy4K
ICAgICBib29sIG1SZW5kZXJQYXNzQ2xlYW5TdGFydCA9IGZhbHNlOwogCi0gICAgU3VyZmFjZU10
bFByb3RvY29sICptQmFja2J1ZmZlciA9IG51bGxwdHI7CisgICAgV2luZG93U3VyZmFjZU10bCAq
bUJhY2tidWZmZXIgPSBudWxscHRyOwogICAgIGNvbnN0IGJvb2wgbUZsaXBZICAgICAgICAgICAg
ICAgPSBmYWxzZTsKIAogICAgIG10bDo6QnVmZmVyUmVmIG1SZWFkUGl4ZWxCdWZmZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvRnJhbWVCdWZmZXJNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvRnJhbWVCdWZmZXJNdGwubW0KaW5kZXggMDk1OTQ4Yjc0MDRlNDgz
MDc2OWI1ZmQ2Zjk5MjVkYjIyODc3M2UyYS4uYzNjNzZjMjRkZTdlOTJiMTY2ODM1MGEwODlhOGRk
MTQyZWMwOGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9GcmFtZUJ1ZmZlck10bC5tbQpA
QCAtNTYsNyArNTYsNyBAQCBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJkdldFJlYWRBdHRhY2ht
ZW50SW5mbyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIC8vIEZyYW1lYnVmZmVyTXRsIGlt
cGxlbWVudGF0aW9uCiBGcmFtZWJ1ZmZlck10bDo6RnJhbWVidWZmZXJNdGwoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZmxpcFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZU10bFByb3Rv
Y29sICpiYWNrYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd1N1
cmZhY2VNdGwgKmJhY2tidWZmZXIpCiAgICAgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpLCBtQmFj
a2J1ZmZlcihiYWNrYnVmZmVyKSwgbUZsaXBZKGZsaXBZKQogewogICAgIHJlc2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwuaAppbmRleCA2ODYwYjBk
OTRkNjUyZWExMjcyZmZjOTE1Y2UwMmY0Y2MyY2ZlZjJhLi41N2IwYWY5NzU3MWE2NmJlY2ZhY2Q5
MDQzZDhhMjI2NTVlYzBlNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9JT1N1cmZh
Y2VTdXJmYWNlTXRsLmgKQEAgLTIyLDcgKzIyLDggQEAgbmFtZXNwYWNlIHJ4CiAKIGNsYXNzIERp
c3BsYXlNVEw7CiAKLWNsYXNzIElPU3VyZmFjZVN1cmZhY2VNdGwgOiBwdWJsaWMgU3VyZmFjZU10
bFByb3RvY29sCisvLyBPZmZzY3JlZW4gY3JlYXRlZCBmcm9tIElPU3VyZmFjZQorY2xhc3MgSU9T
dXJmYWNlU3VyZmFjZU10bCA6IHB1YmxpYyBPZmZzY3JlZW5TdXJmYWNlTXRsCiB7CiAgIHB1Ymxp
YzoKICAgICBJT1N1cmZhY2VTdXJmYWNlTXRsKERpc3BsYXlNdGwgKmRpc3BsYXksCkBAIC0zMSwz
OSArMzIsMTAgQEAgY2xhc3MgSU9TdXJmYWNlU3VyZmFjZU10bCA6IHB1YmxpYyBTdXJmYWNlTXRs
UHJvdG9jb2wKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdHRyaWJzKTsKICAgICB+SU9TdXJmYWNlU3VyZmFjZU10bCgpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkZXN0cm95KGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7Ci0KLSAg
ICBlZ2w6OkVycm9yIGluaXRpYWxpemUoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVy
cmlkZTsKLSAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRl
OwotCi0gICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciB1bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKLSAgICBlZ2w6OkVycm9yIHN3YXAoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwotICAgIGVnbDo6RXJyb3IgcG9zdFN1YkJ1ZmZlcihj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwotCi0gICAgZWdsOjpFcnJvciBxdWVy
eVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSBvdmVy
cmlkZTsKICAgICBlZ2w6OkVycm9yIGJpbmRUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKICAg
ICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
RUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciBnZXRTeW5jVmFsdWVzKEVH
THVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMpIG92
ZXJyaWRlOwotICAgIGVnbDo6RXJyb3IgZ2V0TXNjUmF0ZShFR0xpbnQgKm51bWVyYXRvciwgRUdM
aW50ICpkZW5vbWluYXRvcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdM
aW50IGludGVydmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEZpeGVkV2lkdGgoRUdMaW50IHdp
ZHRoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEZpeGVkSGVpZ2h0KEVHTGludCBoZWlnaHQpIG92
ZXJyaWRlOwotCi0gICAgLy8gV2lkdGggY2FuIGNoYW5nZSB3aGVuIHRoZSBjbGllbnQgd2luZG93
IHJlc2l6ZXMuCi0gICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8g
SGVpZ2h0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgY2xpZW50IHdpbmRvdyByZXNpemVzLgotICAgIEVH
TGludCBnZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEVHTGludCBpc1Bvc3RTdWJC
dWZmZXJTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2
aW9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBhbmdsZTo6UmVzdWx0IGdldEF0dGFjaG1lbnRS
ZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5kaW5nLApAQCAtNzEsNTUgKzQz
LDE0IEBAIGNsYXNzIElPU3VyZmFjZVN1cmZhY2VNdGwgOiBwdWJsaWMgU3VyZmFjZU10bFByb3Rv
Y29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOwogCi0gICAg
YW5nbGU6OlJlc3VsdCBlbnN1cmVDdXJyZW50RHJhd2FibGVPYnRhaW5lZChjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgYW5nbGU6OlJlc3VsdCBlbnN1cmVDdXJyZW50
RHJhd2FibGVPYnRhaW5lZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKm5ld0RyYXdhYmxlT3V0
KSBvdmVycmlkZTsKLSAgICBpbnQgZ2V0U2FtcGxlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IDE7IH0KLSAgICBib29sIHByZXNlcnZlQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBtdGw6OlRleHR1cmVSZWYgZ2V0VGV4dHVyZShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCk7Ci0gICAgYm9vbCBoYXNSb2J1c3RSZXNvdXJjZUluaXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlQ29sb3JUZXh0
dXJlUmVhZHlGb3JSZWFkUGl4ZWxzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotICAgIH0K
LSAgICBjb25zdCBtdGw6OlRleHR1cmVSZWYgJmdldENvbG9yVGV4dHVyZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1JT1N1cmZhY2VUZXh0dXJlOyB9CisgICAgc3RhdGljIGJvb2wgVmFsaWRhdGVBdHRy
aWJ1dGVzKEVHTENsaWVudEJ1ZmZlciBidWZmZXIsIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKTsKIAogICBwcml2YXRlOgotICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlVGV4dHVyZUNy
ZWF0ZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwotICAgIGFuZ2xlOjpSZXN1bHQgY3Jl
YXRlQmFja2luZ1RleHR1cmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwotICAgIGFuZ2xl
OjpSZXN1bHQgY3JlYXRlVGV4dHVyZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXRsOjpGb3JtYXQgJmZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgd2lkdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZW5kZXJUYXJnZXRPbmx5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtdGw6OlRleHR1cmVSZWYgKnRleHR1cmVPdXQpOwotCi0gICAgYW5nbGU6
OlJlc3VsdCBpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgdGV4dHVyZSk7CisgICAgYW5nbGU6OlJlc3VsdCBlbnN1cmVDb2xvclRleHR1cmVD
cmVhdGVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIAotI2lmIGRlZmluZWQoQU5HTEVf
UExBVEZPUk1fSU9TX1NJTVVMQVRPUikKLSAgICBJT1N1cmZhY2VMb2NrT3B0aW9ucyBnZXRJT1N1
cmZhY2VMb2NrT3B0aW9ucygpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBDb250ZXh0TXRsICpjb250
ZXh0TVRMOwogICAgIElPU3VyZmFjZVJlZiBtSU9TdXJmYWNlOwotICAgIEdMaW50IG1HTEludGVy
bmFsRm9ybWF0OwotICAgIG10bDo6VGV4dHVyZVJlZiBtSU9TdXJmYWNlVGV4dHVyZTsKLSAgICBt
dGw6OlRleHR1cmVSZWYgbUlPU3VyZmFjZVRleHR1cmVWaWV3OwotICAgIG10bDo6Rm9ybWF0IG1G
b3JtYXQ7Ci0gICAgbXRsOjpGb3JtYXQgbUludGVybmFsRm9ybWF0OwotICAgIFJlbmRlclRhcmdl
dE10bCBtUmVuZGVyVGFyZ2V0OwotICAgIGJvb2wgbUlPU3VyZmFjZVRleHR1cmVDcmVhdGVkOwot
ICAgIGludCBtV2lkdGg7Ci0gICAgaW50IG1IZWlnaHQ7Ci0gICAgaW50IG1QbGFuZTsKLSAgICBp
bnQgbUZvcm1hdEluZGV4OwotICAgIGludCBtUm93U3RyaWRlSW5QaXhlbHM7Ci0KLSNpZiBkZWZp
bmVkKEFOR0xFX1BMQVRGT1JNX0lPU19TSU1VTEFUT1IpCi0gICAgR0x1aW50IG1Cb3VuZFRleHR1
cmVJRDsKLSAgICBib29sIG1VcGxvYWRGcm9tSU9TdXJmYWNlOwotICAgIGJvb2wgbVJlYWRiYWNr
VG9JT1N1cmZhY2U7Ci0jZW5kaWYKKyAgICBOU1VJbnRlZ2VyIG1JT1N1cmZhY2VQbGFuZTsKKyAg
ICBpbnQgbUlPU3VyZmFjZUZvcm1hdElkeDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbQppbmRleCAzMzMx
YjFjOTc2YjRkZWJhM2JiZDgyNGMwMTcwMjQ0ZWZjNjUxNThjLi45OTI5MWIyOGJmNTczMzRlNmRk
YTIwNmU3OWU3YjVlZmZlNjk0OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9T
dXJmYWNlU3VyZmFjZU10bC5tbQpAQCAtMzUsMzggKzM1LDM4IEBAIHN0cnVjdCBJT1N1cmZhY2VG
b3JtYXRJbmZvCiB7CiAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0OwogICAgIEdMZW51bSB0eXBl
OwotICAgIGFuZ2xlOjpGb3JtYXRJRCBwaXhlbEZvcm1hdDsKLSAgICBhbmdsZTo6Rm9ybWF0SUQg
aW50ZXJuYWxQaXhlbEZvcm1hdDsKLX07CisgICAgc2l6ZV90IGNvbXBvbmVudEJ5dGVzOwogCi1z
dGF0aWMgY29uc3QgSU9TdXJmYWNlRm9ybWF0SW5mbyBrSU9TdXJmYWNlRm9ybWF0c1tdID0gewot
ICAgIHtHTF9SRUQsIEdMX1VOU0lHTkVEX0JZVEUsIGFuZ2xlOjpGb3JtYXRJRDo6UjhfVU5PUk0s
IGFuZ2xlOjpGb3JtYXRJRDo6UjhfVU5PUk19LAotICAgIHtHTF9SMTZVSSwgR0xfVU5TSUdORURf
U0hPUlQsIGFuZ2xlOjpGb3JtYXRJRDo6UjE2RzE2X1VJTlQsIGFuZ2xlOjpGb3JtYXRJRDo6UjE2
RzE2X1VJTlR9LAotICAgIHtHTF9SRywgR0xfVU5TSUdORURfQllURSwgYW5nbGU6OkZvcm1hdElE
OjpSOEc4X1VOT1JNLCBhbmdsZTo6Rm9ybWF0SUQ6OlI4RzhfVU5PUk19LAotICAgIHtHTF9SR0Is
IEdMX1VOU0lHTkVEX0JZVEUsIGFuZ2xlOjpGb3JtYXRJRDo6UjhHOEI4QThfVU5PUk0sIGFuZ2xl
OjpGb3JtYXRJRDo6QjhHOFI4QThfVU5PUk19LAotICAgIHtHTF9CR1JBX0VYVCwgR0xfVU5TSUdO
RURfQllURSwgYW5nbGU6OkZvcm1hdElEOjpCOEc4UjhBOF9VTk9STSwKLSAgICAgYW5nbGU6OkZv
cm1hdElEOjpCOEc4UjhBOF9VTk9STX0sCi0gICAge0dMX1JHQjEwX0EyLCBHTF9VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVYsIGFuZ2xlOjpGb3JtYXRJRDo6UjEwRzEwQjEwQTJfVU5PUk0sCi0g
ICAgIGFuZ2xlOjpGb3JtYXRJRDo6UjEwRzEwQjEwQTJfVU5PUk19LAotICAgIHtHTF9SR0JBLCBH
TF9IQUxGX0ZMT0FULCBhbmdsZTo6Rm9ybWF0SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAg
YW5nbGU6OkZvcm1hdElEOjpSMTZHMTZCMTZBMTZfRkxPQVR9LAorICAgIGFuZ2xlOjpGb3JtYXRJ
RCBuYXRpdmVBbmdsZUZvcm1hdElkOwogfTsKIAorLy8gY2xhbmctZm9ybWF0IG9mZgorLy8gTk9U
RShocWxlKTogU3VwcG9ydCBSMTZfVUlOVCBvbmNlIEdMRVMzIGlzIGNvbXBsZXRlLgorY29uc3Rl
eHByIHN0ZDo6YXJyYXk8SU9TdXJmYWNlRm9ybWF0SW5mbywgOD4ga0lPU3VyZmFjZUZvcm1hdHMg
PSB7eworICAgIHtHTF9SRUQsICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAx
LCBhbmdsZTo6Rm9ybWF0SUQ6OlI4X1VOT1JNfSwKKyAgICB7R0xfUkVELCAgICAgIEdMX1VOU0lH
TkVEX1NIT1JULCAgICAgICAgICAgICAgMiwgYW5nbGU6OkZvcm1hdElEOjpSMTZfVU5PUk19LAor
ICAgIHtHTF9SRywgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAyLCBhbmds
ZTo6Rm9ybWF0SUQ6OlI4RzhfVU5PUk19LAorICAgIHtHTF9SRywgICAgICAgR0xfVU5TSUdORURf
U0hPUlQsICAgICAgICAgICAgICA0LCBhbmdsZTo6Rm9ybWF0SUQ6OlIxNkcxNl9VTk9STX0sCisg
ICAge0dMX1JHQiwgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgIDQsIGFuZ2xl
OjpGb3JtYXRJRDo6QjhHOFI4QThfVU5PUk19LAorICAgIHtHTF9CR1JBX0VYVCwgR0xfVU5TSUdO
RURfQllURSwgICAgICAgICAgICAgICA0LCBhbmdsZTo6Rm9ybWF0SUQ6OkI4RzhSOEE4X1VOT1JN
fSwKKyAgICB7R0xfUkdCQSwgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgOCwg
YW5nbGU6OkZvcm1hdElEOjpSMTZHMTZCMTZBMTZfRkxPQVR9LAorICAgIHtHTF9SR0IxMF9BMiwg
R0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCA0LCBhbmdsZTo6Rm9ybWF0SUQ6OkIxMEcx
MFIxMEEyX1VOT1JNfSwKK319OworLy8gY2xhbmctZm9ybWF0IG9uCisKIGludCBGaW5kSU9TdXJm
YWNlRm9ybWF0SW5kZXgoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKIHsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHNpemVfdD4oQXJyYXlTaXplKGtJ
T1N1cmZhY2VGb3JtYXRzKSk7ICsraSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19j
YXN0PGludD4oa0lPU3VyZmFjZUZvcm1hdHMuc2l6ZSgpKTsgKytpKQogICAgIHsKICAgICAgICAg
Y29uc3QgYXV0byAmZm9ybWF0SW5mbyA9IGtJT1N1cmZhY2VGb3JtYXRzW2ldOwogICAgICAgICBp
ZiAoZm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCA9PSBpbnRlcm5hbEZvcm1hdCAmJiBmb3JtYXRJ
bmZvLnR5cGUgPT0gdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oaSk7CisgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4gLTE7CiB9CiAKLS8vIFRPRE8oamN1bm5pbmdoYW0pIDogcmVmYWN0b3IgdGhpcyBh
bmQgc3VyZmFjZW10bCB0byByZWR1Y2UgY29weStwYXN0ZWQgY29kZQotCiBBTkdMRV9NVExfVU5V
U0VECiBib29sIElzRnJhbWVDYXB0dXJlRW5hYmxlZCgpCiB7CkBAIC0yMzAsNDIgKzIzMCwyOCBA
QCB2b2lkIFN0b3BGcmFtZUNhcHR1cmUoKQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
Ky8vIElPU3VyZmFjZVN1cmZhY2VNdGwgaW1wbGVtZW50YXRpb24uCiBJT1N1cmZhY2VTdXJmYWNl
TXRsOjpJT1N1cmZhY2VTdXJmYWNlTXRsKERpc3BsYXlNdGwgKmRpc3BsYXksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZz
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50
QnVmZmVyIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBTdXJmYWNlTXRsUHJvdG9j
b2woc3RhdGUpCisgICAgOiBPZmZzY3JlZW5TdXJmYWNlTXRsKGRpc3BsYXksIHN0YXRlLCBhdHRy
aWJzKSwgbUlPU3VyZmFjZSgoX19icmlkZ2UgSU9TdXJmYWNlUmVmKShidWZmZXIpKQogewotICAg
IC8vIEtlZXAgcmVmZXJlbmNlIHRvIHRoZSBJT1N1cmZhY2Ugc28gaXQgZG9lc24ndCBnZXQgZGVs
ZXRlZCB3aGlsZSB0aGUgcGJ1ZmZlciBleGlzdHMuCi0gICAgbUlPU3VyZmFjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOwogICAgIENGUmV0YWluKG1JT1N1cmZhY2Up
OwogCi0gICAgLy8gRXh0cmFjdCBhdHRyaWJzIHVzZWZ1bCBmb3IgdGhlIGNhbGwgdG8gRUFHTFRl
eEltYWdlSU9TdXJmYWNlMkQKLSAgICBtV2lkdGggID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWJz
LmdldChFR0xfV0lEVEgpKTsKLSAgICBtSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWJz
LmdldChFR0xfSEVJR0hUKSk7Ci0gICAgbVBsYW5lICA9IHN0YXRpY19jYXN0PGludD4oYXR0cmli
cy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSkpOwotICAgIC8vIEhvcGVmdWxseSB0aGUg
bnVtYmVyIG9mIGJ5dGVzIHBlciByb3cgaXMgYWx3YXlzIGFuIGludGVnZXIgbnVtYmVyIG9mIHBp
eGVscy4gV2UgdXNlCi0gICAgLy8gZ2xSZWFkUGl4ZWxzIHRvIGZpbGwgdGhlIElPU3VyZmFjZSBp
biB0aGUgc2ltdWxhdG9yIGFuZCBpdCBjYW4gb25seSBzdXBwb3J0IHN0cmlkZXMgdGhhdCBhcmUK
LSAgICAvLyBhbiBpbnRlZ2VyIG51bWJlciBvZiBwaXhlbHMuCi0gICAgQVNTRVJUKElPU3VyZmFj
ZUdldEJ5dGVzUGVyUm93T2ZQbGFuZShtSU9TdXJmYWNlLCBtUGxhbmUpICUKLSAgICAgICAgICAg
ICAgIElPU3VyZmFjZUdldEJ5dGVzUGVyRWxlbWVudE9mUGxhbmUobUlPU3VyZmFjZSwgbVBsYW5l
KSA9PQotICAgICAgICAgICAwKTsKLSAgICBtUm93U3RyaWRlSW5QaXhlbHMgPSBzdGF0aWNfY2Fz
dDxpbnQ+KElPU3VyZmFjZUdldEJ5dGVzUGVyUm93T2ZQbGFuZShtSU9TdXJmYWNlLCBtUGxhbmUp
IC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPU3VyZmFjZUdl
dEJ5dGVzUGVyRWxlbWVudE9mUGxhbmUobUlPU3VyZmFjZSwgbVBsYW5lKSk7CisgICAgbUlPU3Vy
ZmFjZVBsYW5lID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BM
QU5FX0FOR0xFKSk7CiAKICAgICBFR0xBdHRyaWIgaW50ZXJuYWxGb3JtYXQgPSBhdHRyaWJzLmdl
dChFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUpOwogICAgIEVHTEF0dHJpYiB0eXBl
ICAgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX1RZUEVfQU5HTEUpOwotICAgIG1G
b3JtYXRJbmRleCA9CisgICAgbUlPU3VyZmFjZUZvcm1hdElkeCA9CiAgICAgICAgIEZpbmRJT1N1
cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFsRm9ybWF0KSwgc3Rh
dGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7Ci0gICAgQVNTRVJUKG1Gb3JtYXRJbmRleCA+PSAwKTsK
LSAgICBtRm9ybWF0ICAgICAgICAgPSBkaXNwbGF5LT5nZXRQaXhlbEZvcm1hdChrSU9TdXJmYWNl
Rm9ybWF0c1ttRm9ybWF0SW5kZXhdLnBpeGVsRm9ybWF0KTsKLSAgICBtSW50ZXJuYWxGb3JtYXQg
PSBkaXNwbGF5LT5nZXRQaXhlbEZvcm1hdChrSU9TdXJmYWNlRm9ybWF0c1ttRm9ybWF0SW5kZXhd
LmludGVybmFsUGl4ZWxGb3JtYXQpOwotICAgIG1HTEludGVybmFsRm9ybWF0ID0ga0lPU3VyZmFj
ZUZvcm1hdHNbbUZvcm1hdEluZGV4XS5pbnRlcm5hbEZvcm1hdDsKLX0KKyAgICBBU1NFUlQobUlP
U3VyZmFjZUZvcm1hdElkeCA+PSAwKTsKIAorICAgIG1Db2xvckZvcm1hdCA9CisgICAgICAgIGRp
c3BsYXktPmdldFBpeGVsRm9ybWF0KGtJT1N1cmZhY2VGb3JtYXRzW21JT1N1cmZhY2VGb3JtYXRJ
ZHhdLm5hdGl2ZUFuZ2xlRm9ybWF0SWQpOworfQogSU9TdXJmYWNlU3VyZmFjZU10bDo6fklPU3Vy
ZmFjZVN1cmZhY2VNdGwoKQogewotICAgIFN0b3BGcmFtZUNhcHR1cmUoKTsKICAgICBpZiAobUlP
U3VyZmFjZSAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgQ0ZSZWxlYXNlKG1JT1N1cmZhY2Up
OwpAQCAtMjczLDIwNSArMjU5LDEyNiBAQCBJT1N1cmZhY2VTdXJmYWNlTXRsOjp+SU9TdXJmYWNl
U3VyZmFjZU10bCgpCiAgICAgfQogfQogCi12b2lkIElPU3VyZmFjZVN1cmZhY2VNdGw6OmRlc3Ry
b3koY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSB7fQotCi1lZ2w6OkVycm9yIElPU3VyZmFj
ZVN1cmZhY2VNdGw6OmluaXRpYWxpemUoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQotewot
ICAgIERpc3BsYXlNdGwgKmRpc3BsYXlNdGwgICAgPSBtdGw6OkdldEltcGwoZGlzcGxheSk7Ci0g
ICAgaWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSA9IGRpc3BsYXlNdGwtPmdldE1ldGFsRGV2aWNl
KCk7Ci0KLSAgICBTdGFydEZyYW1lQ2FwdHVyZShtZXRhbERldmljZSwgZGlzcGxheU10bC0+Y21k
UXVldWUoKS5nZXQoKSk7Ci0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1GcmFtZWJ1
ZmZlckltcGwgKklPU3VyZmFjZVN1cmZhY2VNdGw6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0
YXRlICZzdGF0ZSkKLXsKLSAgICBhdXRvIGZibyA9IG5ldyBGcmFtZWJ1ZmZlck10bChzdGF0ZSwg
LyogZmxpcFkgKi8gdHJ1ZSwgLyogYmFja2J1ZmZlciAqLyB0aGlzKTsKLSAgICByZXR1cm4gZmJv
OwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VNdGw6Om1ha2VDdXJyZW50KGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0KQorZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlTXRsOjpi
aW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBidWZmZXIpCiB7
CiAgICAgQ29udGV4dE10bCAqY29udGV4dE10bCA9IG10bDo6R2V0SW1wbChjb250ZXh0KTsKICAg
ICBTdGFydEZyYW1lQ2FwdHVyZShjb250ZXh0TXRsKTsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9y
KCk7Ci19CiAKLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZU10bDo6dW5NYWtlQ3VycmVudChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICBTdG9wRnJhbWVDYXB0dXJlKCk7Ci0g
ICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZh
Y2VNdGw6OnN3YXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgU3RvcEZyYW1l
Q2FwdHVyZSgpOwotICAgIENvbnRleHRNdGwgKmNvbnRleHRNdGwgPSBtdGw6OkdldEltcGwoY29u
dGV4dCk7Ci0gICAgU3RhcnRGcmFtZUNhcHR1cmUoY29udGV4dE10bCk7Ci0gICAgcmV0dXJuIGVn
bDo6Tm9FcnJvcigpOwotfQorICAgIC8vIEluaXRpYWxpemUgb2Zmc2NyZWVuIHRleHR1cmUgaWYg
bmVlZGVkOgorICAgIEFOR0xFX1RPX0VHTF9UUlkoZW5zdXJlQ29sb3JUZXh0dXJlQ3JlYXRlZChj
b250ZXh0KSk7CiAKLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZU10bDo6cG9zdFN1YkJ1ZmZl
cihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RWdsQmFkQWNjZXNzKCk7CisgICAgcmV0dXJuIE9mZnNj
cmVlblN1cmZhY2VNdGw6OmJpbmRUZXhJbWFnZShjb250ZXh0LCB0ZXh0dXJlLCBidWZmZXIpOwog
fQogCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VNdGw6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJB
TkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCitlZ2w6OkVycm9yIElPU3VyZmFj
ZVN1cmZhY2VNdGw6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
RUdMaW50IGJ1ZmZlcikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6
RWdsQmFkQWNjZXNzKCk7CisgICAgZWdsOjpFcnJvciByZSA9IE9mZnNjcmVlblN1cmZhY2VNdGw6
OnJlbGVhc2VUZXhJbWFnZShjb250ZXh0LCBidWZmZXIpOworICAgIFN0b3BGcmFtZUNhcHR1cmUo
KTsKKyAgICByZXR1cm4gcmU7CiB9CiAKLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZU10bDo6
YmluZFRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYnVmZmVyKQor
YW5nbGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFy
Z2V0KAorICAgIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgIEdMZW51bSBiaW5kaW5n
LAorICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4LAorICAgIEdMc2l6ZWkgc2Ft
cGxlcywKKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKIHsK
KyAgICAvLyBJbml0aWFsaXplIG9mZnNjcmVlbiB0ZXh0dXJlIGlmIG5lZWRlZDoKKyAgICBBTkdM
RV9UUlkoZW5zdXJlQ29sb3JUZXh0dXJlQ3JlYXRlZChjb250ZXh0KSk7CiAKLSAgICBhbmdsZTo6
UmVzdWx0IHJlcyA9IGNyZWF0ZUJhY2tpbmdUZXh0dXJlKGNvbnRleHQpOwotICAgIGlmIChyZXMg
PT0gYW5nbGU6OlJlc3VsdDo6Q29udGludWUpCi0gICAgICAgIHJldHVybiBlZ2w6Ok5vRXJyb3Io
KTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBlZ2w6OkVnbEJhZEFjY2VzcygpOworICAgIHJl
dHVybiBPZmZzY3JlZW5TdXJmYWNlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnRl
eHQsIGJpbmRpbmcsIGltYWdlSW5kZXgsIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRPdXQpOwogfQogCi1lZ2w6OkVy
cm9yIElPU3VyZmFjZVN1cmZhY2VNdGw6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwgRUdMaW50IGJ1ZmZlcikKK2FuZ2xlOjpSZXN1bHQgSU9TdXJmYWNlU3VyZmFj
ZU10bDo6ZW5zdXJlQ29sb3JUZXh0dXJlQ3JlYXRlZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkKIHsKLSAgICAvLyBUaGlzIHdpbGwgbmVlZCBpbXBsZW1lbnRhdGlvbgotICAgIENvbnRleHRN
dGwgKmNvbnRleHRNdGwgPSBtdGw6OkdldEltcGwoY29udGV4dCk7Ci0gICAgaWYgKGNvbnRleHRN
dGwtPmZsdXNoKGNvbnRleHQpID09IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlKQorICAgIGlmICht
Q29sb3JUZXh0dXJlKQogICAgIHsKLSAgICAgICAgbUlPU3VyZmFjZVRleHR1cmVDcmVhdGVkID0g
ZmFsc2U7Ci0gICAgICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KLSAgICByZXR1cm4gZWdsOjpFZ2xCYWRBY2Nl
c3MoKTsKLX0KLQotZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRTeW5jVmFsdWVz
KEVHTHVpbnQ2NEtIUiAqdXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqbXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqc2JjKQotewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gZWdsOjpFZ2xCYWRBY2Nlc3MoKTsKLX0KLQotZWdsOjpFcnJvciBJ
T1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRNc2NSYXRlKEVHTGludCAqbnVtZXJhdG9yLCBFR0xpbnQg
KmRlbm9taW5hdG9yKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpF
Z2xCYWRBY2Nlc3MoKTsKLX0KLQotdm9pZCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpzZXRTd2FwSW50
ZXJ2YWwoRUdMaW50IGludGVydmFsKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLX0KKyAgICBD
b250ZXh0TXRsICpjb250ZXh0TXRsID0gbXRsOjpHZXRJbXBsKGNvbnRleHQpOworICAgIEFOR0xF
X01UTF9PQkpDX1NDT1BFCisgICAgeworICAgICAgICBhdXRvIHRleERlc2MgPQorICAgICAgICAg
ICAgW01UTFRleHR1cmVEZXNjcmlwdG9yIHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3Jt
YXQ6bUNvbG9yRm9ybWF0Lm1ldGFsRm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDptU2l6ZS53aWR0aAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQ6bVNpemUuaGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1pcG1hcHBlZDpOT107CiAKLXZvaWQgSU9TdXJmYWNl
U3VyZmFjZU10bDo6c2V0Rml4ZWRXaWR0aChFR0xpbnQgd2lkdGgpCi17Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotfQorICAgICAgICB0ZXhEZXNjLnVzYWdlID0gTVRMVGV4dHVyZVVzYWdlU2hhZGVy
UmVhZCB8IE1UTFRleHR1cmVVc2FnZVJlbmRlclRhcmdldDsKIAotdm9pZCBJT1N1cmZhY2VTdXJm
YWNlTXRsOjpzZXRGaXhlZEhlaWdodChFR0xpbnQgaGVpZ2h0KQotewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLX0KKyAgICAgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9CisgICAgICAgICAgICBb
Y29udGV4dE10bC0+Z2V0TWV0YWxEZXZpY2UoKSBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6dGV4
RGVzYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW9zdXJmYWNlOm1JT1N1cmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZTptSU9TdXJmYWNlUGxhbmVdOwog
Ci0vLyB3aWR0aCBhbmQgaGVpZ2h0IGNhbiBjaGFuZ2Ugd2l0aCBjbGllbnQgd2luZG93IHJlc2l6
aW5nCi1FR0xpbnQgSU9TdXJmYWNlU3VyZmFjZU10bDo6Z2V0V2lkdGgoKSBjb25zdAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFR0xpbnQ+KG1XaWR0aCk7Ci19CisgICAgICAgIG1Db2xvclRl
eHR1cmUgPSBtdGw6OlRleHR1cmU6Ok1ha2VGcm9tTWV0YWwoW3RleHR1cmUgQU5HTEVfTVRMX0FV
VE9SRUxFQVNFXSk7CisgICAgfQogCi1FR0xpbnQgSU9TdXJmYWNlU3VyZmFjZU10bDo6Z2V0SGVp
Z2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50PihtSGVpZ2h0KTsK
LX0KKyAgICBtQ29sb3JSZW5kZXJUYXJnZXQuc2V0KG1Db2xvclRleHR1cmUsIG10bDo6a1plcm9O
YXRpdmVNaXBMZXZlbCwgMCwgbUNvbG9yRm9ybWF0KTsKIAotRUdMaW50IElPU3VyZmFjZVN1cmZh
Y2VNdGw6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVH
TF9GQUxTRTsKLX0KKyAgICBpZiAoa0lPU3VyZmFjZUZvcm1hdHNbbUlPU3VyZmFjZUZvcm1hdElk
eF0uaW50ZXJuYWxGb3JtYXQgPT0gR0xfUkdCKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBmb3Jt
YXQgaGFzIGVtdWxhdGVkIGFscGhhIGNoYW5uZWwuIEluaXRpYWxpemUgdGV4dHVyZSdzIGFscGhh
IGNoYW5uZWwgdG8gMS4wLgorICAgICAgICBjb25zdCBtdGw6OkZvcm1hdCAmcmdiQ2xlYXJGb3Jt
YXQgPQorICAgICAgICAgICAgY29udGV4dE10bC0+Z2V0UGl4ZWxGb3JtYXQoYW5nbGU6OkZvcm1h
dElEOjpSOEc4QjhfVU5PUk0pOworICAgICAgICBBTkdMRV9UUlkobXRsOjpJbml0aWFsaXplVGV4
dHVyZUNvbnRlbnRzR1BVKAorICAgICAgICAgICAgY29udGV4dCwgbUNvbG9yVGV4dHVyZSwgcmdi
Q2xlYXJGb3JtYXQsCisgICAgICAgICAgICBtdGw6OkltYWdlTmF0aXZlSW5kZXg6OkZyb21CYXNl
WmVyb0dMSW5kZXgoZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRCgwKSksCisgICAgICAgICAgICBNVExD
b2xvcldyaXRlTWFza0FscGhhKSk7CiAKLUVHTGludCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRT
d2FwQmVoYXZpb3IoKSBjb25zdAotewotICAgIHJldHVybiBFR0xfQlVGRkVSX0RFU1RST1lFRDsK
LX0KKyAgICAgICAgLy8gRGlzYWJsZSBzdWJzZXF1ZW50IHJlbmRlcmluZyB0byBhbHBoYSBjaGFu
bmVsLgorICAgICAgICBtQ29sb3JUZXh0dXJlLT5zZXRDb2xvcldyaXRhYmxlTWFzayhNVExDb2xv
cldyaXRlTWFza0FsbCAmICh+TVRMQ29sb3JXcml0ZU1hc2tBbHBoYSkpOworICAgIH0KIAotYW5n
bGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0
KAotICAgIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgIEdMZW51bSBiaW5kaW5nLAot
ICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4LAotICAgIEdMc2l6ZWkgc2FtcGxl
cywKLSAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKLXsKLSAg
ICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUNyZWF0ZWQoY29udGV4dCkpOwotICAgICpydE91dCA9
ICZtUmVuZGVyVGFyZ2V0OwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
IAotYW5nbGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjplbnN1cmVDdXJyZW50RHJhd2Fi
bGVPYnRhaW5lZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9vbCAqbmV3RHJhd2FibGVP
dXQpCisvLyBzdGF0aWMKK2Jvb2wgSU9TdXJmYWNlU3VyZmFjZU10bDo6VmFsaWRhdGVBdHRyaWJ1
dGVzKEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci1hbmdsZTo6UmVzdWx0IElPU3Vy
ZmFjZVN1cmZhY2VNdGw6OmVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KQotewotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
LX0KKyAgICBJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gKF9fYnJpZGdlIElPU3VyZmFjZVJlZiko
YnVmZmVyKTsKIAotYW5nbGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpjcmVhdGVCYWNr
aW5nVGV4dHVyZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICBtdGw6OlRleHR1
cmVSZWYgbVRlbXBvcmFyeVN1cmZhY2VSZWY7Ci0gICAgQU5HTEVfVFJZKGNyZWF0ZVRleHR1cmUo
Y29udGV4dCwgbUZvcm1hdCwgbVdpZHRoLCBtSGVpZ2h0LCBmYWxzZSwgJm1UZW1wb3JhcnlTdXJm
YWNlUmVmKSk7Ci0gICAgLy8gQ3JlYXRlIHRleHR1cmUgdmlldyBhcm91bmQgdGhlIGJhc2UgZm9y
bWF0IG9mIHRoZSB0ZXh0dXJlLgotICAgIG1JT1N1cmZhY2VUZXh0dXJlID0KLSAgICAgICAgbVRl
bXBvcmFyeVN1cmZhY2VSZWYtPmNyZWF0ZVZpZXdXaXRoRGlmZmVyZW50Rm9ybWF0KE1UTFBpeGVs
Rm9ybWF0QkdSQThVbm9ybSk7Ci0gICAgbVJlbmRlclRhcmdldC5zZXQobUlPU3VyZmFjZVRleHR1
cmUsIG10bDo6a1plcm9OYXRpdmVNaXBMZXZlbCwgMCwgbUludGVybmFsRm9ybWF0KTsKLQotICAg
IGlmIChtR0xJbnRlcm5hbEZvcm1hdCA9PSBHTF9SR0IpCisgICAgLy8gVGhlIHBsYW5lIG11c3Qg
ZXhpc3QgZm9yIHRoaXMgSU9TdXJmYWNlLiBJT1N1cmZhY2VHZXRQbGFuZUNvdW50IGNhbiByZXR1
cm4gMCBmb3Igbm9uLXBsYW5hcgorICAgIC8vIGlvU3VyZmFjZXMgYnV0IHdlIHdpbGwgdHJlYXQg
bm9uLXBsYW5hciBsaWtlIGl0IGlzIGEgc2luZ2xlIHBsYW5lLgorICAgIHNpemVfdCBzdXJmYWNl
UGxhbmVDb3VudCA9IHN0ZDo6bWF4KHNpemVfdCgxKSwgSU9TdXJmYWNlR2V0UGxhbmVDb3VudChp
b1N1cmZhY2UpKTsKKyAgICBFR0xBdHRyaWIgcGxhbmUgICAgICAgICAgPSBhdHRyaWJzLmdldChF
R0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKTsKKyAgICBpZiAocGxhbmUgPCAwIHx8IHN0YXRpY19j
YXN0PHNpemVfdD4ocGxhbmUpID49IHN1cmZhY2VQbGFuZUNvdW50KQogICAgIHsKLSAgICAgICAg
Ly8gRGlzYWJsZSBzdWJzZXF1ZW50IHJlbmRlcmluZyB0byBhbHBoYSBjaGFubmVsLgotICAgICAg
ICAvLyBUT0RPOiBJbnZlc3RpZ2F0ZSBpZiB0aGlzIGFsbG93cyB0aGUgaGlnaGVyIGxldmVsIGFs
cGhhIG1hc2tzIGNhbgotICAgICAgICAvLyBiZSBkaXNhYmxlZCBvbmNlIHRoaXMgYmFja2VuZCBp
cyBsaXZlLgotICAgICAgICBtSU9TdXJmYWNlVGV4dHVyZS0+c2V0Q29sb3JXcml0YWJsZU1hc2so
TVRMQ29sb3JXcml0ZU1hc2tBbGwgJiAofk1UTENvbG9yV3JpdGVNYXNrQWxwaGEpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1JT1N1cmZhY2VUZXh0dXJlQ3JlYXRlZCA9
IHRydWU7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotfQorICAgIC8vIFRo
ZSB3aWR0aCBoZWlnaHQgc3BlY2lmaWVkIG11c3QgYmUgYXQgbGVhc3QgKDEsIDEpIGFuZCBhdCBt
b3N0IHRoZSBwbGFuZSBzaXplCisgICAgRUdMQXR0cmliIHdpZHRoICA9IGF0dHJpYnMuZ2V0KEVH
TF9XSURUSCk7CisgICAgRUdMQXR0cmliIGhlaWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQp
OworICAgIGlmICh3aWR0aCA8PSAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4od2lkdGgpID4gSU9T
dXJmYWNlR2V0V2lkdGhPZlBsYW5lKGlvU3VyZmFjZSwgcGxhbmUpIHx8CisgICAgICAgIGhlaWdo
dCA8PSAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4oaGVpZ2h0KSA+IElPU3VyZmFjZUdldEhlaWdo
dE9mUGxhbmUoaW9TdXJmYWNlLCBwbGFuZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogCi1hbmdsZTo6UmVzdWx0IElPU3VyZmFjZVN1cmZhY2VNdGw6OmVuc3VyZVRleHR1
cmVDcmVhdGVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQotewotICAgIGlmICghbUlPU3Vy
ZmFjZVRleHR1cmVDcmVhdGVkKQorICAgIC8vIEZpbmQgdGhpcyBJT1N1cmZhY2UgZm9ybWF0Cisg
ICAgRUdMQXR0cmliIGludGVybmFsRm9ybWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5U
RVJOQUxfRk9STUFUX0FOR0xFKTsKKyAgICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBhdHRy
aWJzLmdldChFR0xfVEVYVFVSRV9UWVBFX0FOR0xFKTsKKworICAgIGludCBmb3JtYXRJbmRleCA9
CisgICAgICAgIEZpbmRJT1N1cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGlu
dGVybmFsRm9ybWF0KSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7CisKKyAgICBpZiAoZm9y
bWF0SW5kZXggPCAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUJhY2tpbmdUZXh0dXJl
KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KIAotbXRsOjpUZXh0dXJlUmVmIElPU3VyZmFjZVN1cmZh
Y2VNdGw6OmdldFRleHR1cmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgaWYg
KGVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnRleHQpID09IGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlKQorICAgIC8vIENoZWNrIHRoYXQgdGhlIGZvcm1hdCBtYXRjaGVzIHRoaXMgSU9T
dXJmYWNlIHBsYW5lCisgICAgaWYgKElPU3VyZmFjZUdldEJ5dGVzUGVyRWxlbWVudE9mUGxhbmUo
aW9TdXJmYWNlLCBwbGFuZSkgIT0KKyAgICAgICAga0lPU3VyZmFjZUZvcm1hdHNbZm9ybWF0SW5k
ZXhdLmNvbXBvbmVudEJ5dGVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1JT1N1cmZhY2VUZXh0
dXJlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBudWxscHRyOwot
fQogCi1hbmdsZTo6UmVzdWx0IElPU3VyZmFjZVN1cmZhY2VNdGw6OmNyZWF0ZVRleHR1cmUoY29u
c3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbXRsOjpGb3JtYXQgJmZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCByZW5kZXJUYXJnZXRPbmx5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG10bDo6VGV4dHVyZVJlZiAqdGV4dHVyZU91dCkKLXsKLSAgICBDb250
ZXh0TXRsICpjb250ZXh0TXRsID0gbXRsOjpHZXRJbXBsKGNvbnRleHQpOwotICAgIEFOR0xFX1RS
WShtdGw6OlRleHR1cmU6Ok1ha2VJT1N1cmZhY2VUZXh0dXJlKGNvbnRleHRNdGwsIGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgbUlPU3VyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtUGxhbmUsIHRleHR1cmVPdXQpKTsKLSAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci19CisgICAgcmV0dXJuIHRydWU7Cit9fQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L1N1cmZhY2VNdGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9TdXJmYWNlTXRsLmgKaW5kZXggMGFkYzM2MDYwODZhOWQ4OGRjY2UzYjRjZjAx
ZWQ2ZDYzOTUwMDY4ZC4uNDY2NDYyMzkyMGYwMjgyMDZmZjk3NmYyNTMxMDhlNWU0ODlkYzU4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL1N1cmZhY2VNdGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5oCkBAIC0yNCwyNyArMjQsMTYgQEAgbmFt
ZXNwYWNlIHJ4CiAKIGNsYXNzIERpc3BsYXlNdGw7CiAKLWNsYXNzIFN1cmZhY2VNdGxQcm90b2Nv
bCA6IHB1YmxpYyBTdXJmYWNlSW1wbAotewotICBwdWJsaWM6Ci0gICAgU3VyZmFjZU10bFByb3Rv
Y29sKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSkgOiBTdXJmYWNlSW1wbChzdGF0ZSkg
e30KLSAgICB2aXJ0dWFsIGludCBnZXRTYW1wbGVzKCkgY29uc3QgICAgICA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHByZXNlcnZlQnVmZmVyKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBhbmds
ZTo6UmVzdWx0IGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJpbmRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmltYWdlSW5kZXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1w
bGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBvdmVycmlkZSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUm9idXN0UmVzb3VyY2VJbml0KCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYW5nbGU6OlJlc3VsdCBlbnN1cmVDdXJyZW50RHJhd2FibGVPYnRhaW5lZChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgPSAwOwotICAgIHZpcnR1YWwgYW5nbGU6OlJlc3Vs
dCBlbnN1cmVDdXJyZW50RHJhd2FibGVPYnRhaW5lZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCwgYm9vbCAqbmV3RHJhd2FibGVPdXQpID0gMDsKLSAgICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQg
ZW5zdXJlQ29sb3JUZXh0dXJlUmVhZHlGb3JSZWFkUGl4ZWxzKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KSA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBtdGw6OlRleHR1cmVSZWYgJiBnZXRDb2xv
clRleHR1cmUoKSA9IDA7Ci19OwotCi1jbGFzcyBTdXJmYWNlTXRsIDogcHVibGljIFN1cmZhY2VN
dGxQcm90b2NvbAorI2RlZmluZSBBTkdMRV9UT19FR0xfVFJZKEVYUFIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoQU5HTEVf
VU5MSUtFTFkoKEVYUFIpICE9IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlKSkgXAorICAgICAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6RWdsQmFkU3VyZmFjZSgpOyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK2NsYXNzIFN1cmZhY2VNdGwgOiBw
dWJsaWMgU3VyZmFjZUltcGwKIHsKICAgcHVibGljOgogICAgIFN1cmZhY2VNdGwoRGlzcGxheU10
bCAqZGlzcGxheSwKQEAgLTg3LDExICs3NiwxMSBAQCBjbGFzcyBTdXJmYWNlTXRsIDogcHVibGlj
IFN1cmZhY2VNdGxQcm90b2NvbAogICAgIGFuZ2xlOjpSZXN1bHQgaW5pdGlhbGl6ZUNvbnRlbnRz
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4KSBvdmVycmlkZTsKIAot
ICAgIGNvbnN0IG10bDo6VGV4dHVyZVJlZiAmZ2V0Q29sb3JUZXh0dXJlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbUNvbG9yVGV4dHVyZTsgfQorICAgIGNvbnN0IG10bDo6VGV4dHVyZVJlZiAmZ2V0Q29s
b3JUZXh0dXJlKCkgIHsgcmV0dXJuIG1Db2xvclRleHR1cmU7IH0KICAgICBjb25zdCBtdGw6OkZv
cm1hdCAmZ2V0Q29sb3JGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtQ29sb3JGb3JtYXQ7IH0KLSAg
ICBpbnQgZ2V0U2FtcGxlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1TYW1wbGVzOyB9Cisg
ICAgaW50IGdldFNhbXBsZXMoKSBjb25zdCAgeyByZXR1cm4gbVNhbXBsZXM7IH0KIAotICAgIGJv
b2wgaGFzUm9idXN0UmVzb3VyY2VJbml0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbVJvYnVz
dFJlc291cmNlSW5pdDsgfQorICAgIGJvb2wgaGFzUm9idXN0UmVzb3VyY2VJbml0KCkgY29uc3Qg
IHsgcmV0dXJuIG1Sb2J1c3RSZXNvdXJjZUluaXQ7IH0KIAogICAgIGFuZ2xlOjpSZXN1bHQgZ2V0
QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmRpbmcsCkBA
IC0xNjQsMTQgKzE1MywxNCBAQCBjbGFzcyBXaW5kb3dTdXJmYWNlTXRsIDogcHVibGljIFN1cmZh
Y2VNdGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGU7CiAKLSAg
ICBhbmdsZTo6UmVzdWx0IGVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IGVuc3VyZUN1cnJl
bnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKICAgICBhbmds
ZTo6UmVzdWx0IGVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCAqbmV3RHJhd2FibGVPdXQgLyoqIG51bGxhYmxlICovKSBvdmVycmlkZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKm5ld0RyYXdh
YmxlT3V0IC8qKiBudWxsYWJsZSAqLyk7CiAKICAgICAvLyBFbnN1cmUgdGhlIHRoZSB0ZXh0dXJl
IHJldHVybmVkIGZyb20gZ2V0Q29sb3JUZXh0dXJlKCkgaXMgcmVhZHkgZm9yIGdsUmVhZFBpeGVs
cygpLiBUaGlzCiAgICAgLy8gaW1wbGljaXRseSBjYWxscyBlbnN1cmVDdXJyZW50RHJhd2FibGVP
YnRhaW5lZCgpLgotICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlQ29sb3JUZXh0dXJlUmVhZHlGb3JS
ZWFkUGl4ZWxzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKLSAgICBib29s
IHByZXNlcnZlQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbVJldGFpbkJ1ZmZlcjsg
fQorICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlQ29sb3JUZXh0dXJlUmVhZHlGb3JSZWFkUGl4ZWxz
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKKyAgICBib29sIHByZXNlcnZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbVJldGFpbkJ1ZmZlcjsgfQogICBwcml2YXRlOgogICAgIGFuZ2xlOjpS
ZXN1bHQgc3dhcEltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwogICAgIGFuZ2xlOjpS
ZXN1bHQgb2J0YWluTmV4dERyYXdhYmxlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKQEAg
LTE5Myw3ICsxODIsNyBAQCBjbGFzcyBXaW5kb3dTdXJmYWNlTXRsIDogcHVibGljIFN1cmZhY2VN
dGwKICAgICBib29sIG1SZXRhaW5CdWZmZXIgPSBmYWxzZTsKIH07CiAKLS8vIE9mZnNjcmVlbiBz
dXJmYWNlLCBiYXNlIGNsYXNzIG9mIFBCdWZmZXIsIElPU3VyZmFjZS4KKy8vIE9mZnNjcmVlbiBz
dXJmYWNlLCBiYXNlIGNsYXNzIG9mIFBCdWZmZXIuCiBjbGFzcyBPZmZzY3JlZW5TdXJmYWNlTXRs
IDogcHVibGljIFN1cmZhY2VNdGwKIHsKICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3Vy
ZmFjZU10bC5tbQppbmRleCAxYjRjZDEwOGU4ZmYwNDk2YTdlYTY2MzY2ZDRjZjQ5MzVjNGFlMTY5
Li5kMTMxMzkwMGRhZTYzZTVmNDIwNDVhYzhiZDgxYWU1YWNlNDNmN2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFj
ZU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvU3VyZmFjZU10bC5tbQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgU3RvcEZyYW1l
Q2FwdHVyZSgpCiBTdXJmYWNlTXRsOjpTdXJmYWNlTXRsKERpc3BsYXlNdGwgKmRpc3BsYXksCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0g
ICAgOiBTdXJmYWNlTXRsUHJvdG9jb2woc3RhdGUpCisgICAgOiBTdXJmYWNlSW1wbChzdGF0ZSkK
IHsKICAgICBtUm9idXN0UmVzb3VyY2VJbml0ID0KICAgICAgICAgYXR0cmlicy5nZXQoRUdMX1JP
QlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRSwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJV
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9UZXh0dXJlTXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5oCmluZGV4IDVmNGIyZDQwZjcwM2U0N2Vk
OTFmYjliOWQ3ODBjMzU2MjljNGI4ZWQuLmRjNzRhMmY5ZDkwNjM3M2JhMWU5MzAwMzhmNGQ4ODI3
ZTQwMzI0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1RleHR1cmVNdGwuaApAQCAtMzE1LDcgKzMx
NSw3IEBAIGNsYXNzIFRleHR1cmVNdGwgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICBhbmdsZTo6
UmVzdWx0IGdlbmVyYXRlTWlwbWFwQ1BVKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIAog
ICAgIG10bDo6Rm9ybWF0IG1Gb3JtYXQ7Ci0gICAgU3VyZmFjZU10bFByb3RvY29sICptQm91bmRT
dXJmYWNlID0gbmlsOworICAgIFN1cmZhY2VNdGwgKm1Cb3VuZFN1cmZhY2UgPSBuaWw7CiAgICAg
Ly8gVGhlIHJlYWwgdGV4dHVyZSB1c2VkIGJ5IE1ldGFsIGRyYXcgY2FsbHMuCiAgICAgbXRsOjpU
ZXh0dXJlUmVmIG1OYXRpdmVUZXh0dXJlICAgICAgICAgPSBuaWw7CiAgICAgaWQ8TVRMU2FtcGxl
clN0YXRlPiBtTWV0YWxTYW1wbGVyU3RhdGUgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0
dXJlTXRsLm1tCmluZGV4IDNiMWM4YWY3MWViMzU4ZTdmYWY4YTBjZDRjNGEwZjRhOGY2MjBlNzQu
LmMyNDU4NmJhODY2ZjUyOGMwYWYxYmE4ODkxMzNmOWU5MmQxOGViMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0dXJl
TXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9UZXh0dXJlTXRsLm1tCkBAIC0yMCw4ICsyMCw4IEBACiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL0Rpc3BsYXlNdGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9GcmFtZUJ1ZmZlck10bC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0lP
U3VyZmFjZVN1cmZhY2VNdGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9T
YW1wbGVyTXRsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10
bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X3V0aWxzLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3V0aWxzLmgiCkBAIC01MzQsMTAgKzUz
NCw2IEBAIHZvaWQgVGV4dHVyZU10bDo6cmVsZWFzZVRleHR1cmUoYm9vbCByZWxlYXNlSW1hZ2Vz
LCBib29sIHJlbGVhc2VUZXh0dXJlT2JqZWN0c09uCiAKIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZU10
bDo6ZW5zdXJlVGV4dHVyZUNyZWF0ZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7Ci0g
ICAgaWYgKG1Cb3VuZFN1cmZhY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7Ci0gICAgfQogICAgIGlmIChtTmF0aXZlVGV4dHVyZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTY2OCw2ICs2NjQsOSBAQCBh
bmdsZTo6UmVzdWx0IFRleHR1cmVNdGw6OmVuc3VyZVNhbXBsZXJTdGF0ZUNyZWF0ZWQoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQpCiAKICAgICAgICAgc2FtcGxlckRlc2MubWF4QW5pc290cm9w
eSA9IDE7CiAgICAgfQorICAgIGlmKAorICAgICAgIAorICAgICAgICkKIAogICAgIG1NZXRhbFNh
bXBsZXJTdGF0ZSA9CiAgICAgICAgIGRpc3BsYXlNdGwtPmdldFN0YXRlQ2FjaGUoKS5nZXRTYW1w
bGVyU3RhdGUoZGlzcGxheU10bC0+Z2V0TWV0YWxEZXZpY2UoKSwgc2FtcGxlckRlc2MpOwpAQCAt
MTIxMSwxNSArMTIxMCwyNSBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVNdGw6OnNldEJhc2VMZXZl
bChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGJhc2VMZQogCiBhbmdsZTo6UmVz
dWx0IFRleHR1cmVNdGw6OmJpbmRUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
ZWdsOjpTdXJmYWNlICpzdXJmYWNlKQogewotICAgIElPU3VyZmFjZVN1cmZhY2VNdGwgKnN1cmZh
Y2VNdGwgPSAoSU9TdXJmYWNlU3VyZmFjZU10bCAqKW10bDo6R2V0SW1wbChzdXJmYWNlKTsKLSAg
ICBtQm91bmRTdXJmYWNlICAgICAgICAgICAgICAgICAgID0gc3VyZmFjZU10bDsKKyAgICByZWxl
YXNlVGV4dHVyZSh0cnVlKTsKKworICAgIGF1dG8gcEJ1ZmZlciAgICAgPSBHZXRJbXBsQXM8T2Zm
c2NyZWVuU3VyZmFjZU10bD4oc3VyZmFjZSk7CisgICAgbU5hdGl2ZVRleHR1cmUgICA9IHBCdWZm
ZXItPmdldENvbG9yVGV4dHVyZSgpOworICAgIG1Gb3JtYXQgICAgICAgICAgPSBwQnVmZmVyLT5n
ZXRDb2xvckZvcm1hdCgpOworICAgIGdsOjpFeHRlbnRzIHNpemUgPSBtTmF0aXZlVGV4dHVyZS0+
c2l6ZUF0MCgpOworICAgIG1Jc1BvdzIgICAgICAgICAgPSBnbDo6aXNQb3cyKHNpemUud2lkdGgp
ICYmIGdsOjppc1BvdzIoc2l6ZS5oZWlnaHQpICYmIGdsOjppc1BvdzIoc2l6ZS5kZXB0aCk7Cisg
ICAgQU5HTEVfVFJZKGVuc3VyZVNhbXBsZXJTdGF0ZUNyZWF0ZWQoY29udGV4dCkpOworCisgICAg
Ly8gVGVsbCBjb250ZXh0IHRvIHJlYmluZCB0ZXh0dXJlcworICAgIENvbnRleHRNdGwgKmNvbnRl
eHRNdGwgPSBtdGw6OkdldEltcGwoY29udGV4dCk7CisgICAgY29udGV4dE10bC0+aW52YWxpZGF0
ZUN1cnJlbnRUZXh0dXJlcygpOworCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OwogfQogCiBhbmdsZTo6UmVzdWx0IFRleHR1cmVNdGw6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBtQm91bmRTdXJmYWNlID0gbmlsOwotCisgICAg
cmVsZWFzZVRleHR1cmUodHJ1ZSk7CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OwogfQogCkBAIC0xMjI5LDEyICsxMjM4LDYgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlTXRsOjpn
ZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKIHsKLSAgICBp
ZiAobUJvdW5kU3VyZmFjZSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWSgKLSAgICAgICAgICAg
IG1Cb3VuZFN1cmZhY2UtPmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29udGV4dCwgYmluZGlu
ZywgaW1hZ2VJbmRleCwgc2FtcGxlcywgcnRPdXQpKTsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpS
ZXN1bHQ6OkNvbnRpbnVlOwotICAgIH0KICAgICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUNyZWF0
ZWQoY29udGV4dCkpOwogCiAgICAgQ29udGV4dE10bCAqY29udGV4dE10bCA9IG10bDo6R2V0SW1w
bChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oCmluZGV4IDllZWY4Mjk2
NjEwZTViNDEzY2RiMjM5MGY4MmFkZDk3NWE4YmM1NzMuLjA2NTE0NjUxMWJkNTFmNDlhYzU4MWMy
NTNkN2U3NDI2Y2JkZWFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaApAQCAt
MTEzLDcgKzExMyw2IEBAIGNsYXNzIFRleHR1cmVNdGw7CiBjbGFzcyBQcm9ncmFtTXRsOwogY2xh
c3MgU2FtcGxlck10bDsKIGNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrTXRsOwotY2xhc3MgU3VyZmFj
ZU10bFByb3RvY29sOwogCiBBTkdMRV9HTF9PQkpFQ1RTX1goQU5HTEVfUFJFX0RFQ0xBUkVfTVRM
X09CSkVDVCkKIApAQCAtMTcwLDExICsxNjksNiBAQCBzdHJ1Y3QgSW1wbFR5cGVIZWxwZXI8ZWds
OjpEaXNwbGF5PgogewogICAgIHVzaW5nIEltcGxUeXBlID0gRGlzcGxheU10bDsKIH07Ci10ZW1w
bGF0ZSA8Pgotc3RydWN0IEltcGxUeXBlSGVscGVyPGVnbDo6U3VyZmFjZT4KLXsKLSAgICB1c2lu
ZyBJbXBsVHlwZSA9IFN1cmZhY2VNdGxQcm90b2NvbDsKLX07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIHVzaW5nIEdldEltcGxUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVIZWxwZXI8VD46OkltcGxU
eXBlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421569</attachid>
            <date>2021-02-25 14:48:17 -0800</date>
            <delta_ts>2021-02-25 15:15:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222331-20210225144816.patch</filename>
            <type>text/plain</type>
            <size>42634</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNDBlNWZjYjg0ZTBjZTQxMDNhYmUxMTY2YzAzZjUzNzk5NmZjMmZhMy4uYzgzM2I4YTllY2Fh
ZmEwNDJkYjQ0ODZkMWRjOWZlMGQxOWI0NzliYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAyLTIzICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGNyYXNoZXMgaW4gZmFzdC9jYW52YXMvd2Vi
Z2wvdGV4SW1hZ2UgdmlkZW8gdGVzdHMKKyAgICAgICAgUmVmYWN0b3IgSU9TdXJmYWNlU3VyZmFj
ZU10bCB0byBtYXRjaCBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgQWRkaXRp
b25hbCBjbGVhbnVwCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tOgorICAgICAg
ICAocng6OkNvbnRleHRNdGw6Om9uQmFja2J1ZmZlclJlc2l6ZWQpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tOgorICAgICAgICAocng6OkRpc3Bs
YXlNdGw6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKToKKyAgICAgICAgKHJ4OjpEaXNwbGF5TXRsOjpj
cmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmg6CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJN
dGw6OmdldEF0dGFjaGVkQmFja2J1ZmZlciBjb25zdCk6CisgICAgICAgICogc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLm1tOgorICAgICAgICAocng6OkZyYW1lYnVm
ZmVyTXRsOjpGcmFtZWJ1ZmZlck10bCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbToKKyAgICAgICAgKHJ4OjpJT1N1cmZh
Y2VTdXJmYWNlTXRsOjpJT1N1cmZhY2VTdXJmYWNlTXRsKToKKyAgICAgICAgKHJ4OjpJT1N1cmZh
Y2VTdXJmYWNlTXRsOjp+SU9TdXJmYWNlU3VyZmFjZU10bCk6CisgICAgICAgIChyeDo6SU9TdXJm
YWNlU3VyZmFjZU10bDo6YmluZFRleEltYWdlKToKKyAgICAgICAgKHJ4OjpJT1N1cmZhY2VTdXJm
YWNlTXRsOjpyZWxlYXNlVGV4SW1hZ2UpOgorICAgICAgICAocng6OklPU3VyZmFjZVN1cmZhY2VN
dGw6OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OklPU3VyZmFjZVN1
cmZhY2VNdGw6OmVuc3VyZUNvbG9yVGV4dHVyZUNyZWF0ZWQpOgorICAgICAgICAocng6OklPU3Vy
ZmFjZVN1cmZhY2VNdGw6OlZhbGlkYXRlQXR0cmlidXRlcyk6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwuaDoKKyAgICAgICAgKHJ4OjpTdXJmYWNlTXRs
OjpnZXRDb2xvclRleHR1cmUpOgorICAgICAgICAocng6OlN1cmZhY2VNdGw6OmdldFNhbXBsZXMg
Y29uc3QpOgorICAgICAgICAocng6OlN1cmZhY2VNdGw6Omhhc1JvYnVzdFJlc291cmNlSW5pdCBj
b25zdCk6CisgICAgICAgIChyeDo6V2luZG93U3VyZmFjZU10bDo6cHJlc2VydmVCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1t
OgorICAgICAgICAocng6OlN1cmZhY2VNdGw6OlN1cmZhY2VNdGwpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRsLmg6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL1RleHR1cmVNdGwubW06CisgICAgICAgIChyeDo6VGV4dHVyZU10
bDo6ZW5zdXJlVGV4dHVyZUNyZWF0ZWQpOgorICAgICAgICAocng6OlRleHR1cmVNdGw6OmVuc3Vy
ZVNhbXBsZXJTdGF0ZUNyZWF0ZWQpOgorICAgICAgICAocng6OlRleHR1cmVNdGw6OmJpbmRUZXhJ
bWFnZSk6CisgICAgICAgIChyeDo6VGV4dHVyZU10bDo6cmVsZWFzZVRleEltYWdlKToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KToKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oOgorCiAyMDIxLTAyLTE5
ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGluZ3RvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGEgbnVtYmVyIG9mIGZ1bmN0aW9uYWwgcmVncmVzc2lvbnMgY2F1c2VkIGJ5IGVuYWJsaW5nIHRo
ZSBNZXRhbCBBTkdMRSBiYWNrZW5kIGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRl
eHRNdGwuaAppbmRleCAyZjM5MzcxZDk4MzNkYTEzNjk1NjM2ZjgzNDAyMDMzMGNlYWFkY2Y5Li44
Mjg5NGZlYjQ1OTcxNDFmMWVmYWI3ZTYyNjIyN2I4ZGZiM2RiNmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9Db250ZXh0TXRsLmgKQEAgLTI5LDggKzI5LDggQEAgY2xhc3MgRnJhbWVidWZmZXJNdGw7
CiBjbGFzcyBWZXJ0ZXhBcnJheU10bDsKIGNsYXNzIFByb2dyYW1NdGw7CiBjbGFzcyBSZW5kZXJU
YXJnZXRNdGw7Ci1jbGFzcyBTdXJmYWNlTXRsUHJvdG9jb2w7CiBjbGFzcyBCdWZmZXJNdGw7Citj
bGFzcyBXaW5kb3dTdXJmYWNlTXRsOwogCiBjbGFzcyBDb250ZXh0TXRsIDogcHVibGljIENvbnRl
eHRJbXBsLCBwdWJsaWMgbXRsOjpDb250ZXh0CiB7CkBAIC0yOTIsNyArMjkyLDcgQEAgY2xhc3Mg
Q29udGV4dE10bCA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIG10bDo6Q29udGV4dAogICAg
IHZvaWQgb25EcmF3RnJhbWVCdWZmZXJDaGFuZ2VkU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZl
ck10bCAqZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHJlbmRlclBhc3NDaGFuZ2VkKTsKLSAgICB2b2lkIG9uQmFja2J1ZmZlclJlc2l6ZWQo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIFN1cmZhY2VNdGxQcm90b2NvbCAqYmFja2J1ZmZl
cik7CisgICAgdm9pZCBvbkJhY2tidWZmZXJSZXNpemVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0LCBXaW5kb3dTdXJmYWNlTXRsICpiYWNrYnVmZmVyKTsKIAogICAgIC8vIEludm9rZSBieSBR
dWVyeU10bAogICAgIGFuZ2xlOjpSZXN1bHQgb25PY2NsdXNpb25RdWVyeUJlZ2FuKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LCBRdWVyeU10bCAqcXVlcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwu
bW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
Q29udGV4dE10bC5tbQppbmRleCBlY2Y1ZmI3NjlhNWY5MzcyZTY4MDNjM2QxMzA2ZDRkYjM1ZTA0
YTk5Li5kMjUyY2ViNTJkNWZlYTU4ODEwMjY3MTBjZjE3YzJlNTQ1ZDAzNjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29u
dGV4dE10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbQpAQCAtMTkzMiw3ICsxOTMyLDcgQEAgdm9pZCBDb250
ZXh0TXRsOjpvbkRyYXdGcmFtZUJ1ZmZlckNoYW5nZWRTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4dE10bDo6b25CYWNrYnVmZmVyUmVzaXpl
ZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgU3VyZmFjZU10bFByb3RvY29sICpiYWNrYnVm
ZmVyKQordm9pZCBDb250ZXh0TXRsOjpvbkJhY2tidWZmZXJSZXNpemVkKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LCBXaW5kb3dTdXJmYWNlTXRsICpiYWNrYnVmZmVyKQogewogICAgIGNvbnN0
IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICA9IGdldFN0YXRlKCk7CiAgICAgRnJhbWVidWZmZXJNdGwg
KmZyYW1lYnVmZmVyID0gbXRsOjpHZXRJbXBsKGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL0Rpc3BsYXlNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQppbmRleCBhMmJjODJlOWQwNjVlYjAz
ZTE0YTg1ZmRmNTI3YWVmMTI0NmY3OGUxLi5hMzc4YjI0YmZlZWQ4ODBlMGFmNDliZGRkZTg0NmZj
ZjA1YThjNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQpAQCAtMjcwLDgg
KzI3MCw3IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5TXRsOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKIFN1cmZhY2VJbXBsICpEaXNwbGF5TXRsOjpj
cmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IFBCdWZmZXJTdXJm
YWNlTXRsKHRoaXMsIHN0YXRlLCBhdHRyaWJzKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlN
dGw6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRl
ICZzdGF0ZSwKQEAgLTI3OSw3ICsyNzgsMTUgQEAgU3VyZmFjZUltcGwgKkRpc3BsYXlNdGw6OmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICYKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQogewotICAgIHJldHVybiBuZXcgSU9TdXJmYWNlU3VyZmFjZU10bCh0aGlzLCBzdGF0ZSwgY2xp
ZW50QnVmZmVyLCBhdHRyaWJzKTsKKyAgICBzd2l0Y2ggKGJ1ZnR5cGUpCisgICAgeworICAgICAg
ICBjYXNlIEVHTF9JT1NVUkZBQ0VfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gbmV3IElPU3Vy
ZmFjZVN1cmZhY2VNdGwodGhpcywgc3RhdGUsIGNsaWVudEJ1ZmZlciwgYXR0cmlicyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIFN1cmZhY2VJbXBs
ICpEaXNwbGF5TXRsOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRl
ICZzdGF0ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9GcmFtZUJ1ZmZlck10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmgKaW5kZXggNWU1
Y2NlOWM1MWNmOGZiMmJmYmFkZmYxNTczMzVlYTczYTI0OThhMC4uOTEwNTk1ZWQzZmM0YWY5Yzk2
ZjgxMDA2YjkzYWQ3OTg3OGQ2MjhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVm
ZmVyTXRsLmgKQEAgLTIzLDE0ICsyMywxNCBAQCBuYW1lc3BhY2UgbXRsCiBjbGFzcyBSZW5kZXJD
b21tYW5kRW5jb2RlcjsKIH0gIC8vIG5hbWVzcGFjZSBtdGwKIGNsYXNzIENvbnRleHRNdGw7Ci1j
bGFzcyBTdXJmYWNlTXRsOworY2xhc3MgV2luZG93U3VyZmFjZU10bDsKIAogY2xhc3MgRnJhbWVi
dWZmZXJNdGwgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiB7CiAgIHB1YmxpYzoKICAgICBleHBs
aWNpdCBGcmFtZWJ1ZmZlck10bChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdXJmYWNlTXRsUHJvdG9jb2wgKmJhY2tidWZmZXIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdpbmRvd1N1cmZhY2VNdGwgKmJhY2tidWZmZXIpOwogICAgIH5GcmFt
ZWJ1ZmZlck10bCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVzdHJveShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKQEAgLTk5LDcgKzk5LDcgQEAgY2xhc3MgRnJhbWVidWZm
ZXJNdGwgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiAKICAgICBnbDo6UmVjdGFuZ2xlIGdldENv
bXBsZXRlUmVuZGVyQXJlYSgpIGNvbnN0OwogICAgIGludCBnZXRTYW1wbGVzKCkgY29uc3Q7Ci0g
ICAgU3VyZmFjZU10bFByb3RvY29sICpnZXRBdHRhY2hlZEJhY2tidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtQmFja2J1ZmZlcjsgfQorICAgIFdpbmRvd1N1cmZhY2VNdGwgKmdldEF0dGFjaGVkQmFj
a2J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1CYWNrYnVmZmVyOyB9CiAKICAgICBib29sIHJlbmRl
clBhc3NIYXNTdGFydGVkKENvbnRleHRNdGwgKmNvbnRleHRNdGwpIGNvbnN0OwogICAgIG10bDo6
UmVuZGVyQ29tbWFuZEVuY29kZXIgKmVuc3VyZVJlbmRlclBhc3NTdGFydGVkKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlck10
bCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckltcGwKICAgICAvLyBhcyBieSBhIGNvbXB1dGUgcGFzcy4K
ICAgICBib29sIG1SZW5kZXJQYXNzQ2xlYW5TdGFydCA9IGZhbHNlOwogCi0gICAgU3VyZmFjZU10
bFByb3RvY29sICptQmFja2J1ZmZlciA9IG51bGxwdHI7CisgICAgV2luZG93U3VyZmFjZU10bCAq
bUJhY2tidWZmZXIgPSBudWxscHRyOwogICAgIGNvbnN0IGJvb2wgbUZsaXBZICAgICAgICAgICAg
ICAgPSBmYWxzZTsKIAogICAgIG10bDo6QnVmZmVyUmVmIG1SZWFkUGl4ZWxCdWZmZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvRnJhbWVCdWZmZXJNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvRnJhbWVCdWZmZXJNdGwubW0KaW5kZXggMDk1OTQ4Yjc0MDRlNDgz
MDc2OWI1ZmQ2Zjk5MjVkYjIyODc3M2UyYS4uYzNjNzZjMjRkZTdlOTJiMTY2ODM1MGEwODlhOGRk
MTQyZWMwOGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9GcmFtZUJ1ZmZlck10bC5tbQpA
QCAtNTYsNyArNTYsNyBAQCBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJkdldFJlYWRBdHRhY2ht
ZW50SW5mbyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIC8vIEZyYW1lYnVmZmVyTXRsIGlt
cGxlbWVudGF0aW9uCiBGcmFtZWJ1ZmZlck10bDo6RnJhbWVidWZmZXJNdGwoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZmxpcFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZU10bFByb3Rv
Y29sICpiYWNrYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd1N1
cmZhY2VNdGwgKmJhY2tidWZmZXIpCiAgICAgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpLCBtQmFj
a2J1ZmZlcihiYWNrYnVmZmVyKSwgbUZsaXBZKGZsaXBZKQogewogICAgIHJlc2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwuaAppbmRleCA2ODYwYjBk
OTRkNjUyZWExMjcyZmZjOTE1Y2UwMmY0Y2MyY2ZlZjJhLi41N2IwYWY5NzU3MWE2NmJlY2ZhY2Q5
MDQzZDhhMjI2NTVlYzBlNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9JT1N1cmZh
Y2VTdXJmYWNlTXRsLmgKQEAgLTIyLDcgKzIyLDggQEAgbmFtZXNwYWNlIHJ4CiAKIGNsYXNzIERp
c3BsYXlNVEw7CiAKLWNsYXNzIElPU3VyZmFjZVN1cmZhY2VNdGwgOiBwdWJsaWMgU3VyZmFjZU10
bFByb3RvY29sCisvLyBPZmZzY3JlZW4gY3JlYXRlZCBmcm9tIElPU3VyZmFjZQorY2xhc3MgSU9T
dXJmYWNlU3VyZmFjZU10bCA6IHB1YmxpYyBPZmZzY3JlZW5TdXJmYWNlTXRsCiB7CiAgIHB1Ymxp
YzoKICAgICBJT1N1cmZhY2VTdXJmYWNlTXRsKERpc3BsYXlNdGwgKmRpc3BsYXksCkBAIC0zMSwz
OSArMzIsMTAgQEAgY2xhc3MgSU9TdXJmYWNlU3VyZmFjZU10bCA6IHB1YmxpYyBTdXJmYWNlTXRs
UHJvdG9jb2wKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdHRyaWJzKTsKICAgICB+SU9TdXJmYWNlU3VyZmFjZU10bCgpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkZXN0cm95KGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7Ci0KLSAg
ICBlZ2w6OkVycm9yIGluaXRpYWxpemUoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVy
cmlkZTsKLSAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRl
OwotCi0gICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciB1bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKLSAgICBlZ2w6OkVycm9yIHN3YXAoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwotICAgIGVnbDo6RXJyb3IgcG9zdFN1YkJ1ZmZlcihj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwotCi0gICAgZWdsOjpFcnJvciBxdWVy
eVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSBvdmVy
cmlkZTsKICAgICBlZ2w6OkVycm9yIGJpbmRUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKICAg
ICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
RUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciBnZXRTeW5jVmFsdWVzKEVH
THVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMpIG92
ZXJyaWRlOwotICAgIGVnbDo6RXJyb3IgZ2V0TXNjUmF0ZShFR0xpbnQgKm51bWVyYXRvciwgRUdM
aW50ICpkZW5vbWluYXRvcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdM
aW50IGludGVydmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEZpeGVkV2lkdGgoRUdMaW50IHdp
ZHRoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEZpeGVkSGVpZ2h0KEVHTGludCBoZWlnaHQpIG92
ZXJyaWRlOwotCi0gICAgLy8gV2lkdGggY2FuIGNoYW5nZSB3aGVuIHRoZSBjbGllbnQgd2luZG93
IHJlc2l6ZXMuCi0gICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8g
SGVpZ2h0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgY2xpZW50IHdpbmRvdyByZXNpemVzLgotICAgIEVH
TGludCBnZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEVHTGludCBpc1Bvc3RTdWJC
dWZmZXJTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2
aW9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBhbmdsZTo6UmVzdWx0IGdldEF0dGFjaG1lbnRS
ZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5kaW5nLApAQCAtNzEsNTUgKzQz
LDE0IEBAIGNsYXNzIElPU3VyZmFjZVN1cmZhY2VNdGwgOiBwdWJsaWMgU3VyZmFjZU10bFByb3Rv
Y29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOwogCi0gICAg
YW5nbGU6OlJlc3VsdCBlbnN1cmVDdXJyZW50RHJhd2FibGVPYnRhaW5lZChjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgYW5nbGU6OlJlc3VsdCBlbnN1cmVDdXJyZW50
RHJhd2FibGVPYnRhaW5lZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKm5ld0RyYXdhYmxlT3V0
KSBvdmVycmlkZTsKLSAgICBpbnQgZ2V0U2FtcGxlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IDE7IH0KLSAgICBib29sIHByZXNlcnZlQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBtdGw6OlRleHR1cmVSZWYgZ2V0VGV4dHVyZShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCk7Ci0gICAgYm9vbCBoYXNSb2J1c3RSZXNvdXJjZUluaXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlQ29sb3JUZXh0
dXJlUmVhZHlGb3JSZWFkUGl4ZWxzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotICAgIH0K
LSAgICBjb25zdCBtdGw6OlRleHR1cmVSZWYgJmdldENvbG9yVGV4dHVyZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1JT1N1cmZhY2VUZXh0dXJlOyB9CisgICAgc3RhdGljIGJvb2wgVmFsaWRhdGVBdHRy
aWJ1dGVzKEVHTENsaWVudEJ1ZmZlciBidWZmZXIsIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKTsKIAogICBwcml2YXRlOgotICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlVGV4dHVyZUNy
ZWF0ZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwotICAgIGFuZ2xlOjpSZXN1bHQgY3Jl
YXRlQmFja2luZ1RleHR1cmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwotICAgIGFuZ2xl
OjpSZXN1bHQgY3JlYXRlVGV4dHVyZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXRsOjpGb3JtYXQgJmZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgd2lkdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZW5kZXJUYXJnZXRPbmx5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtdGw6OlRleHR1cmVSZWYgKnRleHR1cmVPdXQpOwotCi0gICAgYW5nbGU6
OlJlc3VsdCBpbml0aWFsaXplQWxwaGFDaGFubmVsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgdGV4dHVyZSk7CisgICAgYW5nbGU6OlJlc3VsdCBlbnN1cmVDb2xvclRleHR1cmVD
cmVhdGVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIAotI2lmIGRlZmluZWQoQU5HTEVf
UExBVEZPUk1fSU9TX1NJTVVMQVRPUikKLSAgICBJT1N1cmZhY2VMb2NrT3B0aW9ucyBnZXRJT1N1
cmZhY2VMb2NrT3B0aW9ucygpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBDb250ZXh0TXRsICpjb250
ZXh0TVRMOwogICAgIElPU3VyZmFjZVJlZiBtSU9TdXJmYWNlOwotICAgIEdMaW50IG1HTEludGVy
bmFsRm9ybWF0OwotICAgIG10bDo6VGV4dHVyZVJlZiBtSU9TdXJmYWNlVGV4dHVyZTsKLSAgICBt
dGw6OlRleHR1cmVSZWYgbUlPU3VyZmFjZVRleHR1cmVWaWV3OwotICAgIG10bDo6Rm9ybWF0IG1G
b3JtYXQ7Ci0gICAgbXRsOjpGb3JtYXQgbUludGVybmFsRm9ybWF0OwotICAgIFJlbmRlclRhcmdl
dE10bCBtUmVuZGVyVGFyZ2V0OwotICAgIGJvb2wgbUlPU3VyZmFjZVRleHR1cmVDcmVhdGVkOwot
ICAgIGludCBtV2lkdGg7Ci0gICAgaW50IG1IZWlnaHQ7Ci0gICAgaW50IG1QbGFuZTsKLSAgICBp
bnQgbUZvcm1hdEluZGV4OwotICAgIGludCBtUm93U3RyaWRlSW5QaXhlbHM7Ci0KLSNpZiBkZWZp
bmVkKEFOR0xFX1BMQVRGT1JNX0lPU19TSU1VTEFUT1IpCi0gICAgR0x1aW50IG1Cb3VuZFRleHR1
cmVJRDsKLSAgICBib29sIG1VcGxvYWRGcm9tSU9TdXJmYWNlOwotICAgIGJvb2wgbVJlYWRiYWNr
VG9JT1N1cmZhY2U7Ci0jZW5kaWYKKyAgICBOU1VJbnRlZ2VyIG1JT1N1cmZhY2VQbGFuZTsKKyAg
ICBpbnQgbUlPU3VyZmFjZUZvcm1hdElkeDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbQppbmRleCAzMzMx
YjFjOTc2YjRkZWJhM2JiZDgyNGMwMTcwMjQ0ZWZjNjUxNThjLi45OTI5MWIyOGJmNTczMzRlNmRk
YTIwNmU3OWU3YjVlZmZlNjk0OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9T
dXJmYWNlU3VyZmFjZU10bC5tbQpAQCAtMzUsMzggKzM1LDM4IEBAIHN0cnVjdCBJT1N1cmZhY2VG
b3JtYXRJbmZvCiB7CiAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0OwogICAgIEdMZW51bSB0eXBl
OwotICAgIGFuZ2xlOjpGb3JtYXRJRCBwaXhlbEZvcm1hdDsKLSAgICBhbmdsZTo6Rm9ybWF0SUQg
aW50ZXJuYWxQaXhlbEZvcm1hdDsKLX07CisgICAgc2l6ZV90IGNvbXBvbmVudEJ5dGVzOwogCi1z
dGF0aWMgY29uc3QgSU9TdXJmYWNlRm9ybWF0SW5mbyBrSU9TdXJmYWNlRm9ybWF0c1tdID0gewot
ICAgIHtHTF9SRUQsIEdMX1VOU0lHTkVEX0JZVEUsIGFuZ2xlOjpGb3JtYXRJRDo6UjhfVU5PUk0s
IGFuZ2xlOjpGb3JtYXRJRDo6UjhfVU5PUk19LAotICAgIHtHTF9SMTZVSSwgR0xfVU5TSUdORURf
U0hPUlQsIGFuZ2xlOjpGb3JtYXRJRDo6UjE2RzE2X1VJTlQsIGFuZ2xlOjpGb3JtYXRJRDo6UjE2
RzE2X1VJTlR9LAotICAgIHtHTF9SRywgR0xfVU5TSUdORURfQllURSwgYW5nbGU6OkZvcm1hdElE
OjpSOEc4X1VOT1JNLCBhbmdsZTo6Rm9ybWF0SUQ6OlI4RzhfVU5PUk19LAotICAgIHtHTF9SR0Is
IEdMX1VOU0lHTkVEX0JZVEUsIGFuZ2xlOjpGb3JtYXRJRDo6UjhHOEI4QThfVU5PUk0sIGFuZ2xl
OjpGb3JtYXRJRDo6QjhHOFI4QThfVU5PUk19LAotICAgIHtHTF9CR1JBX0VYVCwgR0xfVU5TSUdO
RURfQllURSwgYW5nbGU6OkZvcm1hdElEOjpCOEc4UjhBOF9VTk9STSwKLSAgICAgYW5nbGU6OkZv
cm1hdElEOjpCOEc4UjhBOF9VTk9STX0sCi0gICAge0dMX1JHQjEwX0EyLCBHTF9VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVYsIGFuZ2xlOjpGb3JtYXRJRDo6UjEwRzEwQjEwQTJfVU5PUk0sCi0g
ICAgIGFuZ2xlOjpGb3JtYXRJRDo6UjEwRzEwQjEwQTJfVU5PUk19LAotICAgIHtHTF9SR0JBLCBH
TF9IQUxGX0ZMT0FULCBhbmdsZTo6Rm9ybWF0SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAg
YW5nbGU6OkZvcm1hdElEOjpSMTZHMTZCMTZBMTZfRkxPQVR9LAorICAgIGFuZ2xlOjpGb3JtYXRJ
RCBuYXRpdmVBbmdsZUZvcm1hdElkOwogfTsKIAorLy8gY2xhbmctZm9ybWF0IG9mZgorLy8gTk9U
RShocWxlKTogU3VwcG9ydCBSMTZfVUlOVCBvbmNlIEdMRVMzIGlzIGNvbXBsZXRlLgorY29uc3Rl
eHByIHN0ZDo6YXJyYXk8SU9TdXJmYWNlRm9ybWF0SW5mbywgOD4ga0lPU3VyZmFjZUZvcm1hdHMg
PSB7eworICAgIHtHTF9SRUQsICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAx
LCBhbmdsZTo6Rm9ybWF0SUQ6OlI4X1VOT1JNfSwKKyAgICB7R0xfUkVELCAgICAgIEdMX1VOU0lH
TkVEX1NIT1JULCAgICAgICAgICAgICAgMiwgYW5nbGU6OkZvcm1hdElEOjpSMTZfVU5PUk19LAor
ICAgIHtHTF9SRywgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAyLCBhbmds
ZTo6Rm9ybWF0SUQ6OlI4RzhfVU5PUk19LAorICAgIHtHTF9SRywgICAgICAgR0xfVU5TSUdORURf
U0hPUlQsICAgICAgICAgICAgICA0LCBhbmdsZTo6Rm9ybWF0SUQ6OlIxNkcxNl9VTk9STX0sCisg
ICAge0dMX1JHQiwgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgIDQsIGFuZ2xl
OjpGb3JtYXRJRDo6QjhHOFI4QThfVU5PUk19LAorICAgIHtHTF9CR1JBX0VYVCwgR0xfVU5TSUdO
RURfQllURSwgICAgICAgICAgICAgICA0LCBhbmdsZTo6Rm9ybWF0SUQ6OkI4RzhSOEE4X1VOT1JN
fSwKKyAgICB7R0xfUkdCQSwgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgOCwg
YW5nbGU6OkZvcm1hdElEOjpSMTZHMTZCMTZBMTZfRkxPQVR9LAorICAgIHtHTF9SR0IxMF9BMiwg
R0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCA0LCBhbmdsZTo6Rm9ybWF0SUQ6OkIxMEcx
MFIxMEEyX1VOT1JNfSwKK319OworLy8gY2xhbmctZm9ybWF0IG9uCisKIGludCBGaW5kSU9TdXJm
YWNlRm9ybWF0SW5kZXgoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKIHsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHNpemVfdD4oQXJyYXlTaXplKGtJ
T1N1cmZhY2VGb3JtYXRzKSk7ICsraSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19j
YXN0PGludD4oa0lPU3VyZmFjZUZvcm1hdHMuc2l6ZSgpKTsgKytpKQogICAgIHsKICAgICAgICAg
Y29uc3QgYXV0byAmZm9ybWF0SW5mbyA9IGtJT1N1cmZhY2VGb3JtYXRzW2ldOwogICAgICAgICBp
ZiAoZm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCA9PSBpbnRlcm5hbEZvcm1hdCAmJiBmb3JtYXRJ
bmZvLnR5cGUgPT0gdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oaSk7CisgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4gLTE7CiB9CiAKLS8vIFRPRE8oamN1bm5pbmdoYW0pIDogcmVmYWN0b3IgdGhpcyBh
bmQgc3VyZmFjZW10bCB0byByZWR1Y2UgY29weStwYXN0ZWQgY29kZQotCiBBTkdMRV9NVExfVU5V
U0VECiBib29sIElzRnJhbWVDYXB0dXJlRW5hYmxlZCgpCiB7CkBAIC0yMzAsNDIgKzIzMCwyOCBA
QCB2b2lkIFN0b3BGcmFtZUNhcHR1cmUoKQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
Ky8vIElPU3VyZmFjZVN1cmZhY2VNdGwgaW1wbGVtZW50YXRpb24uCiBJT1N1cmZhY2VTdXJmYWNl
TXRsOjpJT1N1cmZhY2VTdXJmYWNlTXRsKERpc3BsYXlNdGwgKmRpc3BsYXksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZz
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50
QnVmZmVyIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBTdXJmYWNlTXRsUHJvdG9j
b2woc3RhdGUpCisgICAgOiBPZmZzY3JlZW5TdXJmYWNlTXRsKGRpc3BsYXksIHN0YXRlLCBhdHRy
aWJzKSwgbUlPU3VyZmFjZSgoX19icmlkZ2UgSU9TdXJmYWNlUmVmKShidWZmZXIpKQogewotICAg
IC8vIEtlZXAgcmVmZXJlbmNlIHRvIHRoZSBJT1N1cmZhY2Ugc28gaXQgZG9lc24ndCBnZXQgZGVs
ZXRlZCB3aGlsZSB0aGUgcGJ1ZmZlciBleGlzdHMuCi0gICAgbUlPU3VyZmFjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOwogICAgIENGUmV0YWluKG1JT1N1cmZhY2Up
OwogCi0gICAgLy8gRXh0cmFjdCBhdHRyaWJzIHVzZWZ1bCBmb3IgdGhlIGNhbGwgdG8gRUFHTFRl
eEltYWdlSU9TdXJmYWNlMkQKLSAgICBtV2lkdGggID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWJz
LmdldChFR0xfV0lEVEgpKTsKLSAgICBtSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWJz
LmdldChFR0xfSEVJR0hUKSk7Ci0gICAgbVBsYW5lICA9IHN0YXRpY19jYXN0PGludD4oYXR0cmli
cy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSkpOwotICAgIC8vIEhvcGVmdWxseSB0aGUg
bnVtYmVyIG9mIGJ5dGVzIHBlciByb3cgaXMgYWx3YXlzIGFuIGludGVnZXIgbnVtYmVyIG9mIHBp
eGVscy4gV2UgdXNlCi0gICAgLy8gZ2xSZWFkUGl4ZWxzIHRvIGZpbGwgdGhlIElPU3VyZmFjZSBp
biB0aGUgc2ltdWxhdG9yIGFuZCBpdCBjYW4gb25seSBzdXBwb3J0IHN0cmlkZXMgdGhhdCBhcmUK
LSAgICAvLyBhbiBpbnRlZ2VyIG51bWJlciBvZiBwaXhlbHMuCi0gICAgQVNTRVJUKElPU3VyZmFj
ZUdldEJ5dGVzUGVyUm93T2ZQbGFuZShtSU9TdXJmYWNlLCBtUGxhbmUpICUKLSAgICAgICAgICAg
ICAgIElPU3VyZmFjZUdldEJ5dGVzUGVyRWxlbWVudE9mUGxhbmUobUlPU3VyZmFjZSwgbVBsYW5l
KSA9PQotICAgICAgICAgICAwKTsKLSAgICBtUm93U3RyaWRlSW5QaXhlbHMgPSBzdGF0aWNfY2Fz
dDxpbnQ+KElPU3VyZmFjZUdldEJ5dGVzUGVyUm93T2ZQbGFuZShtSU9TdXJmYWNlLCBtUGxhbmUp
IC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPU3VyZmFjZUdl
dEJ5dGVzUGVyRWxlbWVudE9mUGxhbmUobUlPU3VyZmFjZSwgbVBsYW5lKSk7CisgICAgbUlPU3Vy
ZmFjZVBsYW5lID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BM
QU5FX0FOR0xFKSk7CiAKICAgICBFR0xBdHRyaWIgaW50ZXJuYWxGb3JtYXQgPSBhdHRyaWJzLmdl
dChFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUpOwogICAgIEVHTEF0dHJpYiB0eXBl
ICAgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX1RZUEVfQU5HTEUpOwotICAgIG1G
b3JtYXRJbmRleCA9CisgICAgbUlPU3VyZmFjZUZvcm1hdElkeCA9CiAgICAgICAgIEZpbmRJT1N1
cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFsRm9ybWF0KSwgc3Rh
dGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7Ci0gICAgQVNTRVJUKG1Gb3JtYXRJbmRleCA+PSAwKTsK
LSAgICBtRm9ybWF0ICAgICAgICAgPSBkaXNwbGF5LT5nZXRQaXhlbEZvcm1hdChrSU9TdXJmYWNl
Rm9ybWF0c1ttRm9ybWF0SW5kZXhdLnBpeGVsRm9ybWF0KTsKLSAgICBtSW50ZXJuYWxGb3JtYXQg
PSBkaXNwbGF5LT5nZXRQaXhlbEZvcm1hdChrSU9TdXJmYWNlRm9ybWF0c1ttRm9ybWF0SW5kZXhd
LmludGVybmFsUGl4ZWxGb3JtYXQpOwotICAgIG1HTEludGVybmFsRm9ybWF0ID0ga0lPU3VyZmFj
ZUZvcm1hdHNbbUZvcm1hdEluZGV4XS5pbnRlcm5hbEZvcm1hdDsKLX0KKyAgICBBU1NFUlQobUlP
U3VyZmFjZUZvcm1hdElkeCA+PSAwKTsKIAorICAgIG1Db2xvckZvcm1hdCA9CisgICAgICAgIGRp
c3BsYXktPmdldFBpeGVsRm9ybWF0KGtJT1N1cmZhY2VGb3JtYXRzW21JT1N1cmZhY2VGb3JtYXRJ
ZHhdLm5hdGl2ZUFuZ2xlRm9ybWF0SWQpOworfQogSU9TdXJmYWNlU3VyZmFjZU10bDo6fklPU3Vy
ZmFjZVN1cmZhY2VNdGwoKQogewotICAgIFN0b3BGcmFtZUNhcHR1cmUoKTsKICAgICBpZiAobUlP
U3VyZmFjZSAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgQ0ZSZWxlYXNlKG1JT1N1cmZhY2Up
OwpAQCAtMjczLDIwNSArMjU5LDEyNiBAQCBJT1N1cmZhY2VTdXJmYWNlTXRsOjp+SU9TdXJmYWNl
U3VyZmFjZU10bCgpCiAgICAgfQogfQogCi12b2lkIElPU3VyZmFjZVN1cmZhY2VNdGw6OmRlc3Ry
b3koY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSB7fQotCi1lZ2w6OkVycm9yIElPU3VyZmFj
ZVN1cmZhY2VNdGw6OmluaXRpYWxpemUoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQotewot
ICAgIERpc3BsYXlNdGwgKmRpc3BsYXlNdGwgICAgPSBtdGw6OkdldEltcGwoZGlzcGxheSk7Ci0g
ICAgaWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSA9IGRpc3BsYXlNdGwtPmdldE1ldGFsRGV2aWNl
KCk7Ci0KLSAgICBTdGFydEZyYW1lQ2FwdHVyZShtZXRhbERldmljZSwgZGlzcGxheU10bC0+Y21k
UXVldWUoKS5nZXQoKSk7Ci0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1GcmFtZWJ1
ZmZlckltcGwgKklPU3VyZmFjZVN1cmZhY2VNdGw6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0
YXRlICZzdGF0ZSkKLXsKLSAgICBhdXRvIGZibyA9IG5ldyBGcmFtZWJ1ZmZlck10bChzdGF0ZSwg
LyogZmxpcFkgKi8gdHJ1ZSwgLyogYmFja2J1ZmZlciAqLyB0aGlzKTsKLSAgICByZXR1cm4gZmJv
OwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VNdGw6Om1ha2VDdXJyZW50KGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0KQorZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlTXRsOjpi
aW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBidWZmZXIpCiB7
CiAgICAgQ29udGV4dE10bCAqY29udGV4dE10bCA9IG10bDo6R2V0SW1wbChjb250ZXh0KTsKICAg
ICBTdGFydEZyYW1lQ2FwdHVyZShjb250ZXh0TXRsKTsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9y
KCk7Ci19CiAKLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZU10bDo6dW5NYWtlQ3VycmVudChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICBTdG9wRnJhbWVDYXB0dXJlKCk7Ci0g
ICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZh
Y2VNdGw6OnN3YXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgU3RvcEZyYW1l
Q2FwdHVyZSgpOwotICAgIENvbnRleHRNdGwgKmNvbnRleHRNdGwgPSBtdGw6OkdldEltcGwoY29u
dGV4dCk7Ci0gICAgU3RhcnRGcmFtZUNhcHR1cmUoY29udGV4dE10bCk7Ci0gICAgcmV0dXJuIGVn
bDo6Tm9FcnJvcigpOwotfQorICAgIC8vIEluaXRpYWxpemUgb2Zmc2NyZWVuIHRleHR1cmUgaWYg
bmVlZGVkOgorICAgIEFOR0xFX1RPX0VHTF9UUlkoZW5zdXJlQ29sb3JUZXh0dXJlQ3JlYXRlZChj
b250ZXh0KSk7CiAKLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZU10bDo6cG9zdFN1YkJ1ZmZl
cihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCkKLXsKLSAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RWdsQmFkQWNjZXNzKCk7CisgICAgcmV0dXJuIE9mZnNj
cmVlblN1cmZhY2VNdGw6OmJpbmRUZXhJbWFnZShjb250ZXh0LCB0ZXh0dXJlLCBidWZmZXIpOwog
fQogCi1lZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VNdGw6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJB
TkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCitlZ2w6OkVycm9yIElPU3VyZmFj
ZVN1cmZhY2VNdGw6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
RUdMaW50IGJ1ZmZlcikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6
RWdsQmFkQWNjZXNzKCk7CisgICAgZWdsOjpFcnJvciByZSA9IE9mZnNjcmVlblN1cmZhY2VNdGw6
OnJlbGVhc2VUZXhJbWFnZShjb250ZXh0LCBidWZmZXIpOworICAgIFN0b3BGcmFtZUNhcHR1cmUo
KTsKKyAgICByZXR1cm4gcmU7CiB9CiAKLWVnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZU10bDo6
YmluZFRleEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYnVmZmVyKQor
YW5nbGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFy
Z2V0KAorICAgIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgIEdMZW51bSBiaW5kaW5n
LAorICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4LAorICAgIEdMc2l6ZWkgc2Ft
cGxlcywKKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKIHsK
KyAgICAvLyBJbml0aWFsaXplIG9mZnNjcmVlbiB0ZXh0dXJlIGlmIG5lZWRlZDoKKyAgICBBTkdM
RV9UUlkoZW5zdXJlQ29sb3JUZXh0dXJlQ3JlYXRlZChjb250ZXh0KSk7CiAKLSAgICBhbmdsZTo6
UmVzdWx0IHJlcyA9IGNyZWF0ZUJhY2tpbmdUZXh0dXJlKGNvbnRleHQpOwotICAgIGlmIChyZXMg
PT0gYW5nbGU6OlJlc3VsdDo6Q29udGludWUpCi0gICAgICAgIHJldHVybiBlZ2w6Ok5vRXJyb3Io
KTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBlZ2w6OkVnbEJhZEFjY2VzcygpOworICAgIHJl
dHVybiBPZmZzY3JlZW5TdXJmYWNlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnRl
eHQsIGJpbmRpbmcsIGltYWdlSW5kZXgsIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRPdXQpOwogfQogCi1lZ2w6OkVy
cm9yIElPU3VyZmFjZVN1cmZhY2VNdGw6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwgRUdMaW50IGJ1ZmZlcikKK2FuZ2xlOjpSZXN1bHQgSU9TdXJmYWNlU3VyZmFj
ZU10bDo6ZW5zdXJlQ29sb3JUZXh0dXJlQ3JlYXRlZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkKIHsKLSAgICAvLyBUaGlzIHdpbGwgbmVlZCBpbXBsZW1lbnRhdGlvbgotICAgIENvbnRleHRN
dGwgKmNvbnRleHRNdGwgPSBtdGw6OkdldEltcGwoY29udGV4dCk7Ci0gICAgaWYgKGNvbnRleHRN
dGwtPmZsdXNoKGNvbnRleHQpID09IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlKQorICAgIGlmICht
Q29sb3JUZXh0dXJlKQogICAgIHsKLSAgICAgICAgbUlPU3VyZmFjZVRleHR1cmVDcmVhdGVkID0g
ZmFsc2U7Ci0gICAgICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KLSAgICByZXR1cm4gZWdsOjpFZ2xCYWRBY2Nl
c3MoKTsKLX0KLQotZWdsOjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRTeW5jVmFsdWVz
KEVHTHVpbnQ2NEtIUiAqdXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqbXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqc2JjKQotewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gZWdsOjpFZ2xCYWRBY2Nlc3MoKTsKLX0KLQotZWdsOjpFcnJvciBJ
T1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRNc2NSYXRlKEVHTGludCAqbnVtZXJhdG9yLCBFR0xpbnQg
KmRlbm9taW5hdG9yKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpF
Z2xCYWRBY2Nlc3MoKTsKLX0KLQotdm9pZCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpzZXRTd2FwSW50
ZXJ2YWwoRUdMaW50IGludGVydmFsKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLX0KKyAgICBD
b250ZXh0TXRsICpjb250ZXh0TXRsID0gbXRsOjpHZXRJbXBsKGNvbnRleHQpOworICAgIEFOR0xF
X01UTF9PQkpDX1NDT1BFCisgICAgeworICAgICAgICBhdXRvIHRleERlc2MgPQorICAgICAgICAg
ICAgW01UTFRleHR1cmVEZXNjcmlwdG9yIHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3Jt
YXQ6bUNvbG9yRm9ybWF0Lm1ldGFsRm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDptU2l6ZS53aWR0aAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQ6bVNpemUuaGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1pcG1hcHBlZDpOT107CiAKLXZvaWQgSU9TdXJmYWNl
U3VyZmFjZU10bDo6c2V0Rml4ZWRXaWR0aChFR0xpbnQgd2lkdGgpCi17Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotfQorICAgICAgICB0ZXhEZXNjLnVzYWdlID0gTVRMVGV4dHVyZVVzYWdlU2hhZGVy
UmVhZCB8IE1UTFRleHR1cmVVc2FnZVJlbmRlclRhcmdldDsKIAotdm9pZCBJT1N1cmZhY2VTdXJm
YWNlTXRsOjpzZXRGaXhlZEhlaWdodChFR0xpbnQgaGVpZ2h0KQotewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLX0KKyAgICAgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9CisgICAgICAgICAgICBb
Y29udGV4dE10bC0+Z2V0TWV0YWxEZXZpY2UoKSBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6dGV4
RGVzYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW9zdXJmYWNlOm1JT1N1cmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZTptSU9TdXJmYWNlUGxhbmVdOwog
Ci0vLyB3aWR0aCBhbmQgaGVpZ2h0IGNhbiBjaGFuZ2Ugd2l0aCBjbGllbnQgd2luZG93IHJlc2l6
aW5nCi1FR0xpbnQgSU9TdXJmYWNlU3VyZmFjZU10bDo6Z2V0V2lkdGgoKSBjb25zdAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFR0xpbnQ+KG1XaWR0aCk7Ci19CisgICAgICAgIG1Db2xvclRl
eHR1cmUgPSBtdGw6OlRleHR1cmU6Ok1ha2VGcm9tTWV0YWwoW3RleHR1cmUgQU5HTEVfTVRMX0FV
VE9SRUxFQVNFXSk7CisgICAgfQogCi1FR0xpbnQgSU9TdXJmYWNlU3VyZmFjZU10bDo6Z2V0SGVp
Z2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50PihtSGVpZ2h0KTsK
LX0KKyAgICBtQ29sb3JSZW5kZXJUYXJnZXQuc2V0KG1Db2xvclRleHR1cmUsIG10bDo6a1plcm9O
YXRpdmVNaXBMZXZlbCwgMCwgbUNvbG9yRm9ybWF0KTsKIAotRUdMaW50IElPU3VyZmFjZVN1cmZh
Y2VNdGw6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVH
TF9GQUxTRTsKLX0KKyAgICBpZiAoa0lPU3VyZmFjZUZvcm1hdHNbbUlPU3VyZmFjZUZvcm1hdElk
eF0uaW50ZXJuYWxGb3JtYXQgPT0gR0xfUkdCKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBmb3Jt
YXQgaGFzIGVtdWxhdGVkIGFscGhhIGNoYW5uZWwuIEluaXRpYWxpemUgdGV4dHVyZSdzIGFscGhh
IGNoYW5uZWwgdG8gMS4wLgorICAgICAgICBjb25zdCBtdGw6OkZvcm1hdCAmcmdiQ2xlYXJGb3Jt
YXQgPQorICAgICAgICAgICAgY29udGV4dE10bC0+Z2V0UGl4ZWxGb3JtYXQoYW5nbGU6OkZvcm1h
dElEOjpSOEc4QjhfVU5PUk0pOworICAgICAgICBBTkdMRV9UUlkobXRsOjpJbml0aWFsaXplVGV4
dHVyZUNvbnRlbnRzR1BVKAorICAgICAgICAgICAgY29udGV4dCwgbUNvbG9yVGV4dHVyZSwgcmdi
Q2xlYXJGb3JtYXQsCisgICAgICAgICAgICBtdGw6OkltYWdlTmF0aXZlSW5kZXg6OkZyb21CYXNl
WmVyb0dMSW5kZXgoZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRCgwKSksCisgICAgICAgICAgICBNVExD
b2xvcldyaXRlTWFza0FscGhhKSk7CiAKLUVHTGludCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRT
d2FwQmVoYXZpb3IoKSBjb25zdAotewotICAgIHJldHVybiBFR0xfQlVGRkVSX0RFU1RST1lFRDsK
LX0KKyAgICAgICAgLy8gRGlzYWJsZSBzdWJzZXF1ZW50IHJlbmRlcmluZyB0byBhbHBoYSBjaGFu
bmVsLgorICAgICAgICBtQ29sb3JUZXh0dXJlLT5zZXRDb2xvcldyaXRhYmxlTWFzayhNVExDb2xv
cldyaXRlTWFza0FsbCAmICh+TVRMQ29sb3JXcml0ZU1hc2tBbHBoYSkpOworICAgIH0KIAotYW5n
bGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0
KAotICAgIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgIEdMZW51bSBiaW5kaW5nLAot
ICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4LAotICAgIEdMc2l6ZWkgc2FtcGxl
cywKLSAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKLXsKLSAg
ICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUNyZWF0ZWQoY29udGV4dCkpOwotICAgICpydE91dCA9
ICZtUmVuZGVyVGFyZ2V0OwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
IAotYW5nbGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjplbnN1cmVDdXJyZW50RHJhd2Fi
bGVPYnRhaW5lZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9vbCAqbmV3RHJhd2FibGVP
dXQpCisvLyBzdGF0aWMKK2Jvb2wgSU9TdXJmYWNlU3VyZmFjZU10bDo6VmFsaWRhdGVBdHRyaWJ1
dGVzKEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci1hbmdsZTo6UmVzdWx0IElPU3Vy
ZmFjZVN1cmZhY2VNdGw6OmVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KQotewotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
LX0KKyAgICBJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gKF9fYnJpZGdlIElPU3VyZmFjZVJlZiko
YnVmZmVyKTsKIAotYW5nbGU6OlJlc3VsdCBJT1N1cmZhY2VTdXJmYWNlTXRsOjpjcmVhdGVCYWNr
aW5nVGV4dHVyZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICBtdGw6OlRleHR1
cmVSZWYgbVRlbXBvcmFyeVN1cmZhY2VSZWY7Ci0gICAgQU5HTEVfVFJZKGNyZWF0ZVRleHR1cmUo
Y29udGV4dCwgbUZvcm1hdCwgbVdpZHRoLCBtSGVpZ2h0LCBmYWxzZSwgJm1UZW1wb3JhcnlTdXJm
YWNlUmVmKSk7Ci0gICAgLy8gQ3JlYXRlIHRleHR1cmUgdmlldyBhcm91bmQgdGhlIGJhc2UgZm9y
bWF0IG9mIHRoZSB0ZXh0dXJlLgotICAgIG1JT1N1cmZhY2VUZXh0dXJlID0KLSAgICAgICAgbVRl
bXBvcmFyeVN1cmZhY2VSZWYtPmNyZWF0ZVZpZXdXaXRoRGlmZmVyZW50Rm9ybWF0KE1UTFBpeGVs
Rm9ybWF0QkdSQThVbm9ybSk7Ci0gICAgbVJlbmRlclRhcmdldC5zZXQobUlPU3VyZmFjZVRleHR1
cmUsIG10bDo6a1plcm9OYXRpdmVNaXBMZXZlbCwgMCwgbUludGVybmFsRm9ybWF0KTsKLQotICAg
IGlmIChtR0xJbnRlcm5hbEZvcm1hdCA9PSBHTF9SR0IpCisgICAgLy8gVGhlIHBsYW5lIG11c3Qg
ZXhpc3QgZm9yIHRoaXMgSU9TdXJmYWNlLiBJT1N1cmZhY2VHZXRQbGFuZUNvdW50IGNhbiByZXR1
cm4gMCBmb3Igbm9uLXBsYW5hcgorICAgIC8vIGlvU3VyZmFjZXMgYnV0IHdlIHdpbGwgdHJlYXQg
bm9uLXBsYW5hciBsaWtlIGl0IGlzIGEgc2luZ2xlIHBsYW5lLgorICAgIHNpemVfdCBzdXJmYWNl
UGxhbmVDb3VudCA9IHN0ZDo6bWF4KHNpemVfdCgxKSwgSU9TdXJmYWNlR2V0UGxhbmVDb3VudChp
b1N1cmZhY2UpKTsKKyAgICBFR0xBdHRyaWIgcGxhbmUgICAgICAgICAgPSBhdHRyaWJzLmdldChF
R0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKTsKKyAgICBpZiAocGxhbmUgPCAwIHx8IHN0YXRpY19j
YXN0PHNpemVfdD4ocGxhbmUpID49IHN1cmZhY2VQbGFuZUNvdW50KQogICAgIHsKLSAgICAgICAg
Ly8gRGlzYWJsZSBzdWJzZXF1ZW50IHJlbmRlcmluZyB0byBhbHBoYSBjaGFubmVsLgotICAgICAg
ICAvLyBUT0RPOiBJbnZlc3RpZ2F0ZSBpZiB0aGlzIGFsbG93cyB0aGUgaGlnaGVyIGxldmVsIGFs
cGhhIG1hc2tzIGNhbgotICAgICAgICAvLyBiZSBkaXNhYmxlZCBvbmNlIHRoaXMgYmFja2VuZCBp
cyBsaXZlLgotICAgICAgICBtSU9TdXJmYWNlVGV4dHVyZS0+c2V0Q29sb3JXcml0YWJsZU1hc2so
TVRMQ29sb3JXcml0ZU1hc2tBbGwgJiAofk1UTENvbG9yV3JpdGVNYXNrQWxwaGEpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1JT1N1cmZhY2VUZXh0dXJlQ3JlYXRlZCA9
IHRydWU7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotfQorICAgIC8vIFRo
ZSB3aWR0aCBoZWlnaHQgc3BlY2lmaWVkIG11c3QgYmUgYXQgbGVhc3QgKDEsIDEpIGFuZCBhdCBt
b3N0IHRoZSBwbGFuZSBzaXplCisgICAgRUdMQXR0cmliIHdpZHRoICA9IGF0dHJpYnMuZ2V0KEVH
TF9XSURUSCk7CisgICAgRUdMQXR0cmliIGhlaWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQp
OworICAgIGlmICh3aWR0aCA8PSAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4od2lkdGgpID4gSU9T
dXJmYWNlR2V0V2lkdGhPZlBsYW5lKGlvU3VyZmFjZSwgcGxhbmUpIHx8CisgICAgICAgIGhlaWdo
dCA8PSAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4oaGVpZ2h0KSA+IElPU3VyZmFjZUdldEhlaWdo
dE9mUGxhbmUoaW9TdXJmYWNlLCBwbGFuZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogCi1hbmdsZTo6UmVzdWx0IElPU3VyZmFjZVN1cmZhY2VNdGw6OmVuc3VyZVRleHR1
cmVDcmVhdGVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQotewotICAgIGlmICghbUlPU3Vy
ZmFjZVRleHR1cmVDcmVhdGVkKQorICAgIC8vIEZpbmQgdGhpcyBJT1N1cmZhY2UgZm9ybWF0Cisg
ICAgRUdMQXR0cmliIGludGVybmFsRm9ybWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfSU5U
RVJOQUxfRk9STUFUX0FOR0xFKTsKKyAgICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBhdHRy
aWJzLmdldChFR0xfVEVYVFVSRV9UWVBFX0FOR0xFKTsKKworICAgIGludCBmb3JtYXRJbmRleCA9
CisgICAgICAgIEZpbmRJT1N1cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGlu
dGVybmFsRm9ybWF0KSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7CisKKyAgICBpZiAoZm9y
bWF0SW5kZXggPCAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUJhY2tpbmdUZXh0dXJl
KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KIAotbXRsOjpUZXh0dXJlUmVmIElPU3VyZmFjZVN1cmZh
Y2VNdGw6OmdldFRleHR1cmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgaWYg
KGVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnRleHQpID09IGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlKQorICAgIC8vIENoZWNrIHRoYXQgdGhlIGZvcm1hdCBtYXRjaGVzIHRoaXMgSU9T
dXJmYWNlIHBsYW5lCisgICAgaWYgKElPU3VyZmFjZUdldEJ5dGVzUGVyRWxlbWVudE9mUGxhbmUo
aW9TdXJmYWNlLCBwbGFuZSkgIT0KKyAgICAgICAga0lPU3VyZmFjZUZvcm1hdHNbZm9ybWF0SW5k
ZXhdLmNvbXBvbmVudEJ5dGVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1JT1N1cmZhY2VUZXh0
dXJlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBudWxscHRyOwot
fQogCi1hbmdsZTo6UmVzdWx0IElPU3VyZmFjZVN1cmZhY2VNdGw6OmNyZWF0ZVRleHR1cmUoY29u
c3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbXRsOjpGb3JtYXQgJmZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCByZW5kZXJUYXJnZXRPbmx5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG10bDo6VGV4dHVyZVJlZiAqdGV4dHVyZU91dCkKLXsKLSAgICBDb250
ZXh0TXRsICpjb250ZXh0TXRsID0gbXRsOjpHZXRJbXBsKGNvbnRleHQpOwotICAgIEFOR0xFX1RS
WShtdGw6OlRleHR1cmU6Ok1ha2VJT1N1cmZhY2VUZXh0dXJlKGNvbnRleHRNdGwsIGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgbUlPU3VyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtUGxhbmUsIHRleHR1cmVPdXQpKTsKLSAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci19CisgICAgcmV0dXJuIHRydWU7Cit9fQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L1N1cmZhY2VNdGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9TdXJmYWNlTXRsLmgKaW5kZXggMGFkYzM2MDYwODZhOWQ4OGRjY2UzYjRjZjAx
ZWQ2ZDYzOTUwMDY4ZC4uNDY2NDYyMzkyMGYwMjgyMDZmZjk3NmYyNTMxMDhlNWU0ODlkYzU4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL1N1cmZhY2VNdGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5oCkBAIC0yNCwyNyArMjQsMTYgQEAgbmFt
ZXNwYWNlIHJ4CiAKIGNsYXNzIERpc3BsYXlNdGw7CiAKLWNsYXNzIFN1cmZhY2VNdGxQcm90b2Nv
bCA6IHB1YmxpYyBTdXJmYWNlSW1wbAotewotICBwdWJsaWM6Ci0gICAgU3VyZmFjZU10bFByb3Rv
Y29sKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSkgOiBTdXJmYWNlSW1wbChzdGF0ZSkg
e30KLSAgICB2aXJ0dWFsIGludCBnZXRTYW1wbGVzKCkgY29uc3QgICAgICA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHByZXNlcnZlQnVmZmVyKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBhbmds
ZTo6UmVzdWx0IGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJpbmRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmltYWdlSW5kZXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1w
bGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBvdmVycmlkZSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUm9idXN0UmVzb3VyY2VJbml0KCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYW5nbGU6OlJlc3VsdCBlbnN1cmVDdXJyZW50RHJhd2FibGVPYnRhaW5lZChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgPSAwOwotICAgIHZpcnR1YWwgYW5nbGU6OlJlc3Vs
dCBlbnN1cmVDdXJyZW50RHJhd2FibGVPYnRhaW5lZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCwgYm9vbCAqbmV3RHJhd2FibGVPdXQpID0gMDsKLSAgICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQg
ZW5zdXJlQ29sb3JUZXh0dXJlUmVhZHlGb3JSZWFkUGl4ZWxzKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KSA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBtdGw6OlRleHR1cmVSZWYgJiBnZXRDb2xv
clRleHR1cmUoKSA9IDA7Ci19OwotCi1jbGFzcyBTdXJmYWNlTXRsIDogcHVibGljIFN1cmZhY2VN
dGxQcm90b2NvbAorI2RlZmluZSBBTkdMRV9UT19FR0xfVFJZKEVYUFIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoQU5HTEVf
VU5MSUtFTFkoKEVYUFIpICE9IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlKSkgXAorICAgICAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6RWdsQmFkU3VyZmFjZSgpOyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK2NsYXNzIFN1cmZhY2VNdGwgOiBw
dWJsaWMgU3VyZmFjZUltcGwKIHsKICAgcHVibGljOgogICAgIFN1cmZhY2VNdGwoRGlzcGxheU10
bCAqZGlzcGxheSwKQEAgLTg3LDExICs3NiwxMSBAQCBjbGFzcyBTdXJmYWNlTXRsIDogcHVibGlj
IFN1cmZhY2VNdGxQcm90b2NvbAogICAgIGFuZ2xlOjpSZXN1bHQgaW5pdGlhbGl6ZUNvbnRlbnRz
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4KSBvdmVycmlkZTsKIAot
ICAgIGNvbnN0IG10bDo6VGV4dHVyZVJlZiAmZ2V0Q29sb3JUZXh0dXJlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbUNvbG9yVGV4dHVyZTsgfQorICAgIGNvbnN0IG10bDo6VGV4dHVyZVJlZiAmZ2V0Q29s
b3JUZXh0dXJlKCkgIHsgcmV0dXJuIG1Db2xvclRleHR1cmU7IH0KICAgICBjb25zdCBtdGw6OkZv
cm1hdCAmZ2V0Q29sb3JGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtQ29sb3JGb3JtYXQ7IH0KLSAg
ICBpbnQgZ2V0U2FtcGxlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1TYW1wbGVzOyB9Cisg
ICAgaW50IGdldFNhbXBsZXMoKSBjb25zdCAgeyByZXR1cm4gbVNhbXBsZXM7IH0KIAotICAgIGJv
b2wgaGFzUm9idXN0UmVzb3VyY2VJbml0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbVJvYnVz
dFJlc291cmNlSW5pdDsgfQorICAgIGJvb2wgaGFzUm9idXN0UmVzb3VyY2VJbml0KCkgY29uc3Qg
IHsgcmV0dXJuIG1Sb2J1c3RSZXNvdXJjZUluaXQ7IH0KIAogICAgIGFuZ2xlOjpSZXN1bHQgZ2V0
QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmRpbmcsCkBA
IC0xNjQsMTQgKzE1MywxNCBAQCBjbGFzcyBXaW5kb3dTdXJmYWNlTXRsIDogcHVibGljIFN1cmZh
Y2VNdGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGU7CiAKLSAg
ICBhbmdsZTo6UmVzdWx0IGVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IGVuc3VyZUN1cnJl
bnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKICAgICBhbmds
ZTo6UmVzdWx0IGVuc3VyZUN1cnJlbnREcmF3YWJsZU9idGFpbmVkKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCAqbmV3RHJhd2FibGVPdXQgLyoqIG51bGxhYmxlICovKSBvdmVycmlkZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKm5ld0RyYXdh
YmxlT3V0IC8qKiBudWxsYWJsZSAqLyk7CiAKICAgICAvLyBFbnN1cmUgdGhlIHRoZSB0ZXh0dXJl
IHJldHVybmVkIGZyb20gZ2V0Q29sb3JUZXh0dXJlKCkgaXMgcmVhZHkgZm9yIGdsUmVhZFBpeGVs
cygpLiBUaGlzCiAgICAgLy8gaW1wbGljaXRseSBjYWxscyBlbnN1cmVDdXJyZW50RHJhd2FibGVP
YnRhaW5lZCgpLgotICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlQ29sb3JUZXh0dXJlUmVhZHlGb3JS
ZWFkUGl4ZWxzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKLSAgICBib29s
IHByZXNlcnZlQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbVJldGFpbkJ1ZmZlcjsg
fQorICAgIGFuZ2xlOjpSZXN1bHQgZW5zdXJlQ29sb3JUZXh0dXJlUmVhZHlGb3JSZWFkUGl4ZWxz
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKKyAgICBib29sIHByZXNlcnZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbVJldGFpbkJ1ZmZlcjsgfQogICBwcml2YXRlOgogICAgIGFuZ2xlOjpS
ZXN1bHQgc3dhcEltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwogICAgIGFuZ2xlOjpS
ZXN1bHQgb2J0YWluTmV4dERyYXdhYmxlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKQEAg
LTE5Myw3ICsxODIsNyBAQCBjbGFzcyBXaW5kb3dTdXJmYWNlTXRsIDogcHVibGljIFN1cmZhY2VN
dGwKICAgICBib29sIG1SZXRhaW5CdWZmZXIgPSBmYWxzZTsKIH07CiAKLS8vIE9mZnNjcmVlbiBz
dXJmYWNlLCBiYXNlIGNsYXNzIG9mIFBCdWZmZXIsIElPU3VyZmFjZS4KKy8vIE9mZnNjcmVlbiBz
dXJmYWNlLCBiYXNlIGNsYXNzIG9mIFBCdWZmZXIuCiBjbGFzcyBPZmZzY3JlZW5TdXJmYWNlTXRs
IDogcHVibGljIFN1cmZhY2VNdGwKIHsKICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3Vy
ZmFjZU10bC5tbQppbmRleCAxYjRjZDEwOGU4ZmYwNDk2YTdlYTY2MzY2ZDRjZjQ5MzVjNGFlMTY5
Li5kMTMxMzkwMGRhZTYzZTVmNDIwNDVhYzhiZDgxYWU1YWNlNDNmN2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFj
ZU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvU3VyZmFjZU10bC5tbQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgU3RvcEZyYW1l
Q2FwdHVyZSgpCiBTdXJmYWNlTXRsOjpTdXJmYWNlTXRsKERpc3BsYXlNdGwgKmRpc3BsYXksCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0g
ICAgOiBTdXJmYWNlTXRsUHJvdG9jb2woc3RhdGUpCisgICAgOiBTdXJmYWNlSW1wbChzdGF0ZSkK
IHsKICAgICBtUm9idXN0UmVzb3VyY2VJbml0ID0KICAgICAgICAgYXR0cmlicy5nZXQoRUdMX1JP
QlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRSwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJV
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9UZXh0dXJlTXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5oCmluZGV4IDVmNGIyZDQwZjcwM2U0N2Vk
OTFmYjliOWQ3ODBjMzU2MjljNGI4ZWQuLmRjNzRhMmY5ZDkwNjM3M2JhMWU5MzAwMzhmNGQ4ODI3
ZTQwMzI0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1RleHR1cmVNdGwuaApAQCAtMzE1LDcgKzMx
NSw3IEBAIGNsYXNzIFRleHR1cmVNdGwgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICBhbmdsZTo6
UmVzdWx0IGdlbmVyYXRlTWlwbWFwQ1BVKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIAog
ICAgIG10bDo6Rm9ybWF0IG1Gb3JtYXQ7Ci0gICAgU3VyZmFjZU10bFByb3RvY29sICptQm91bmRT
dXJmYWNlID0gbmlsOworICAgIFN1cmZhY2VNdGwgKm1Cb3VuZFN1cmZhY2UgPSBuaWw7CiAgICAg
Ly8gVGhlIHJlYWwgdGV4dHVyZSB1c2VkIGJ5IE1ldGFsIGRyYXcgY2FsbHMuCiAgICAgbXRsOjpU
ZXh0dXJlUmVmIG1OYXRpdmVUZXh0dXJlICAgICAgICAgPSBuaWw7CiAgICAgaWQ8TVRMU2FtcGxl
clN0YXRlPiBtTWV0YWxTYW1wbGVyU3RhdGUgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0
dXJlTXRsLm1tCmluZGV4IDNiMWM4YWY3MWViMzU4ZTdmYWY4YTBjZDRjNGEwZjRhOGY2MjBlNzQu
LjVlZTc3MWNmMzU5ZDM5YTE3OGVjOWU4MzFhMGIzNzNiMTk4NjU5NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0dXJl
TXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9UZXh0dXJlTXRsLm1tCkBAIC0yMCw4ICsyMCw4IEBACiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL0Rpc3BsYXlNdGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9GcmFtZUJ1ZmZlck10bC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0lP
U3VyZmFjZVN1cmZhY2VNdGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9T
YW1wbGVyTXRsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10
bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X3V0aWxzLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3V0aWxzLmgiCkBAIC01MzQsMTAgKzUz
NCw2IEBAIHZvaWQgVGV4dHVyZU10bDo6cmVsZWFzZVRleHR1cmUoYm9vbCByZWxlYXNlSW1hZ2Vz
LCBib29sIHJlbGVhc2VUZXh0dXJlT2JqZWN0c09uCiAKIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZU10
bDo6ZW5zdXJlVGV4dHVyZUNyZWF0ZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7Ci0g
ICAgaWYgKG1Cb3VuZFN1cmZhY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7Ci0gICAgfQogICAgIGlmIChtTmF0aXZlVGV4dHVyZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTY2OCw3ICs2NjQsMTQgQEAg
YW5nbGU6OlJlc3VsdCBUZXh0dXJlTXRsOjplbnN1cmVTYW1wbGVyU3RhdGVDcmVhdGVkKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0KQogCiAgICAgICAgIHNhbXBsZXJEZXNjLm1heEFuaXNvdHJv
cHkgPSAxOwogICAgIH0KLQorICAgIGlmKG1TdGF0ZS5nZXRUeXBlKCkgPT0gZ2w6OlRleHR1cmVU
eXBlOjpSZWN0YW5nbGUpCisgICAgeworICAgICAgICBzYW1wbGVyRGVzYy5ub3JtYWxpemVkQ29v
cmRpbmF0ZXMgPSBOTzsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc2FtcGxlckRl
c2Mubm9ybWFsaXplZENvb3JkaW5hdGVzID0gWUVTOworICAgIH0KICAgICBtTWV0YWxTYW1wbGVy
U3RhdGUgPQogICAgICAgICBkaXNwbGF5TXRsLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0U2FtcGxlclN0
YXRlKGRpc3BsYXlNdGwtPmdldE1ldGFsRGV2aWNlKCksIHNhbXBsZXJEZXNjKTsKIApAQCAtMTIx
MSwxNSArMTIxNCwyNSBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVNdGw6OnNldEJhc2VMZXZlbChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGJhc2VMZQogCiBhbmdsZTo6UmVzdWx0
IFRleHR1cmVNdGw6OmJpbmRUZXhJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgZWds
OjpTdXJmYWNlICpzdXJmYWNlKQogewotICAgIElPU3VyZmFjZVN1cmZhY2VNdGwgKnN1cmZhY2VN
dGwgPSAoSU9TdXJmYWNlU3VyZmFjZU10bCAqKW10bDo6R2V0SW1wbChzdXJmYWNlKTsKLSAgICBt
Qm91bmRTdXJmYWNlICAgICAgICAgICAgICAgICAgID0gc3VyZmFjZU10bDsKKyAgICByZWxlYXNl
VGV4dHVyZSh0cnVlKTsKKworICAgIGF1dG8gcEJ1ZmZlciAgICAgPSBHZXRJbXBsQXM8T2Zmc2Ny
ZWVuU3VyZmFjZU10bD4oc3VyZmFjZSk7CisgICAgbU5hdGl2ZVRleHR1cmUgICA9IHBCdWZmZXIt
PmdldENvbG9yVGV4dHVyZSgpOworICAgIG1Gb3JtYXQgICAgICAgICAgPSBwQnVmZmVyLT5nZXRD
b2xvckZvcm1hdCgpOworICAgIGdsOjpFeHRlbnRzIHNpemUgPSBtTmF0aXZlVGV4dHVyZS0+c2l6
ZUF0MCgpOworICAgIG1Jc1BvdzIgICAgICAgICAgPSBnbDo6aXNQb3cyKHNpemUud2lkdGgpICYm
IGdsOjppc1BvdzIoc2l6ZS5oZWlnaHQpICYmIGdsOjppc1BvdzIoc2l6ZS5kZXB0aCk7CisgICAg
QU5HTEVfVFJZKGVuc3VyZVNhbXBsZXJTdGF0ZUNyZWF0ZWQoY29udGV4dCkpOworCisgICAgLy8g
VGVsbCBjb250ZXh0IHRvIHJlYmluZCB0ZXh0dXJlcworICAgIENvbnRleHRNdGwgKmNvbnRleHRN
dGwgPSBtdGw6OkdldEltcGwoY29udGV4dCk7CisgICAgY29udGV4dE10bC0+aW52YWxpZGF0ZUN1
cnJlbnRUZXh0dXJlcygpOworCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
fQogCiBhbmdsZTo6UmVzdWx0IFRleHR1cmVNdGw6OnJlbGVhc2VUZXhJbWFnZShjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBtQm91bmRTdXJmYWNlID0gbmlsOwotCisgICAgcmVs
ZWFzZVRleHR1cmUodHJ1ZSk7CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
fQogCkBAIC0xMjI5LDEyICsxMjQyLDYgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlTXRsOjpnZXRB
dHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2Ft
cGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKIHsKLSAgICBpZiAo
bUJvdW5kU3VyZmFjZSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWSgKLSAgICAgICAgICAgIG1C
b3VuZFN1cmZhY2UtPmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29udGV4dCwgYmluZGluZywg
aW1hZ2VJbmRleCwgc2FtcGxlcywgcnRPdXQpKTsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwotICAgIH0KICAgICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUNyZWF0ZWQo
Y29udGV4dCkpOwogCiAgICAgQ29udGV4dE10bCAqY29udGV4dE10bCA9IG10bDo6R2V0SW1wbChj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oCmluZGV4IDllZWY4Mjk2NjEw
ZTViNDEzY2RiMjM5MGY4MmFkZDk3NWE4YmM1NzMuLjA2NTE0NjUxMWJkNTFmNDlhYzU4MWMyNTNk
N2U3NDI2Y2JkZWFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaApAQCAtMTEz
LDcgKzExMyw2IEBAIGNsYXNzIFRleHR1cmVNdGw7CiBjbGFzcyBQcm9ncmFtTXRsOwogY2xhc3Mg
U2FtcGxlck10bDsKIGNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrTXRsOwotY2xhc3MgU3VyZmFjZU10
bFByb3RvY29sOwogCiBBTkdMRV9HTF9PQkpFQ1RTX1goQU5HTEVfUFJFX0RFQ0xBUkVfTVRMX09C
SkVDVCkKIApAQCAtMTcwLDExICsxNjksNiBAQCBzdHJ1Y3QgSW1wbFR5cGVIZWxwZXI8ZWdsOjpE
aXNwbGF5PgogewogICAgIHVzaW5nIEltcGxUeXBlID0gRGlzcGxheU10bDsKIH07Ci10ZW1wbGF0
ZSA8Pgotc3RydWN0IEltcGxUeXBlSGVscGVyPGVnbDo6U3VyZmFjZT4KLXsKLSAgICB1c2luZyBJ
bXBsVHlwZSA9IFN1cmZhY2VNdGxQcm90b2NvbDsKLX07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IHVzaW5nIEdldEltcGxUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVIZWxwZXI8VD46OkltcGxUeXBl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX3N0YXRlX2NhY2hlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3N0YXRlX2NhY2hlLmgKaW5kZXggZTZiZjcx
ZDgyOWEzNWNlZmQ4ODFkMWM0MzBlMWRjNTE3MjgyODdiNy4uNmVmMmI1ZGIwZGM0MTgzMjdmZWU3
YmI1MzRjYjA3OWI1ZWUzZDgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9zdGF0ZV9jYWNoZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfc3RhdGVf
Y2FjaGUuaApAQCAtMTEzLDYgKzExMyw3IEBAIHN0cnVjdCBhbGlnbmFzKDQpIFNhbXBsZXJEZXNj
CiAgICAgdWludDhfdCBtaW5GaWx0ZXIgOiAxOwogICAgIHVpbnQ4X3QgbWFnRmlsdGVyIDogMTsK
ICAgICB1aW50OF90IG1pcEZpbHRlciA6IDI7CisgICAgdWludDhfdCBub3JtYWxpemVkQ29vcmRp
bmF0ZXM6IDE7CiAKICAgICB1aW50OF90IG1heEFuaXNvdHJvcHkgOiA1OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X3N0YXRlX2NhY2hlLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL210bF9zdGF0ZV9jYWNoZS5tbQppbmRleCA2OTg0ZGJkNjBjMzk1ZGNkNmFm
OTZiODE1MTEyYTIwYWI0YmU5YmIwLi5iZDdlNGE5OTRjYzJlOWQzZDI2ZTFmYmEyNGNlZGM5NzU4
ZGMzMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX3N0YXRlX2NhY2hlLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfc3RhdGVfY2FjaGUubW0KQEAg
LTc2LDYgKzc2LDcgQEAgTVRMU2FtcGxlckRlc2NyaXB0b3IgKlRvT2JqQyhjb25zdCBTYW1wbGVy
RGVzYyAmZGVzYykKICAgICBBTkdMRV9PQkpDX0NQX1BST1BFUlRZKG9iakNEZXNjLCBkZXNjLCBt
aXBGaWx0ZXIpOwogICAgIEFOR0xFX09CSkNfQ1BfUFJPUEVSVFkob2JqQ0Rlc2MsIGRlc2MsIG1h
eEFuaXNvdHJvcHkpOwogICAgIEFOR0xFX09CSkNfQ1BfUFJPUEVSVFkob2JqQ0Rlc2MsIGRlc2Ms
IGNvbXBhcmVGdW5jdGlvbik7CisgICAgQU5HTEVfT0JKQ19DUF9QUk9QRVJUWShvYmpDRGVzYywg
ZGVzYywgbm9ybWFsaXplZENvb3JkaW5hdGVzKTsKIAogICAgIHJldHVybiBbb2JqQ0Rlc2MgQU5H
TEVfTVRMX0FVVE9SRUxFQVNFXTsKIH0KQEAgLTQ2Myw2ICs0NjQsOCBAQCBTYW1wbGVyRGVzYzo6
U2FtcGxlckRlc2MoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmZ2xTdGF0ZSkgOiBTYW1wbGVyRGVz
YygpCiAgICAgbWF4QW5pc290cm9weSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihnbFN0YXRlLmdl
dE1heEFuaXNvdHJvcHkoKSk7CiAKICAgICBjb21wYXJlRnVuY3Rpb24gPSBHZXRDb21wYXJlRnVu
YyhnbFN0YXRlLmdldENvbXBhcmVGdW5jKCkpOworICAgIAorICAgIG5vcm1hbGl6ZWRDb29yZGlu
YXRlcyA9IFlFUzsKIH0KIAogU2FtcGxlckRlc2MgJlNhbXBsZXJEZXNjOjpvcGVyYXRvcj0oY29u
c3QgU2FtcGxlckRlc2MgJnNyYykKQEAgLTQ4MCwxMCArNDgzLDEyIEBAIHZvaWQgU2FtcGxlckRl
c2M6OnJlc2V0KCkKICAgICBtaW5GaWx0ZXIgPSBNVExTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVz
dDsKICAgICBtYWdGaWx0ZXIgPSBNVExTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVzdDsKICAgICBt
aXBGaWx0ZXIgPSBNVExTYW1wbGVyTWlwRmlsdGVyTmVhcmVzdDsKLQorICAgIAogICAgIG1heEFu
aXNvdHJvcHkgPSAxOwogCiAgICAgY29tcGFyZUZ1bmN0aW9uID0gTVRMQ29tcGFyZUZ1bmN0aW9u
TmV2ZXI7CisgICAgCisgICAgbm9ybWFsaXplZENvb3JkaW5hdGVzID0gWUVTOwogfQogCiBib29s
IFNhbXBsZXJEZXNjOjpvcGVyYXRvcj09KGNvbnN0IFNhbXBsZXJEZXNjICZyaHMpIGNvbnN0Cg==
</data>
<flag name="review"
          id="440445"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>