<?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>53813</bug_id>
          
          <creation_ts>2011-02-04 14:44:23 -0800</creation_ts>
          <short_desc>Second IndexedDB events overhaul patch</short_desc>
          <delta_ts>2011-02-04 17:29:12 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53795</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>345809</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-04 14:44:23 -0800</bug_when>
    <thetext>Second IndexedDB events overhaul patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345811</commentid>
    <comment_count>1</comment_count>
      <attachid>81288</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-04 14:46:10 -0800</bug_when>
    <thetext>Created attachment 81288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345812</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-04 14:46:46 -0800</bug_when>
    <thetext>please review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345872</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-04 15:45:40 -0800</bug_when>
    <thetext>Committed r77689: &lt;http://trac.webkit.org/changeset/77689&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345950</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-04 17:29:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/77689 might have broken Qt Linux Release
The following tests are not passing:
media/video-frame-accurate-seek.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81288</attachid>
            <date>2011-02-04 14:46:10 -0800</date>
            <delta_ts>2011-02-04 15:36:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53813-20110204144609.patch</filename>
            <type>text/plain</type>
            <size>36847</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZTM3ODVjOGE2ZDQyMzllNGM0MWMwMjg4ZjkyNDMxZjUyYzQyZTU4Li4zNjg2NTY5
MGQzNmZlNWVmZTljYTk1M2QyODJlZWQyN2VmMzMyZWI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAK
IDIwMTEtMDItMDQgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vjb25kIEluZGV4ZWRE
QiBldmVudHMgb3ZlcmhhdWwgcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUzODEzCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXF1
ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sOiBBZGRlZC4KKwor
MjAxMS0wMi0wNCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KIAogICAgICAgICBGaXJzdCBzdGVwIHRvd2FyZHMg
ZXZlbnQgcHJvcG9nYXRpb24gd2l0aGluIEluZGV4ZWREQgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWE1Y2QyMGY4NDRlZTdiOTFlMGFlZjk4OTk0
ZjU1ZDI4NDgxOWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MTUgQEAKK1Rlc3QgZXZlbnQgcHJvcG9nYXRpb24gb24gSURCUmVxdWVzdC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCduYW1lJykKK1BBU1Mg
J29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBp
cyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hv
dWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0
JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAn
bWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1
ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGlu
IGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMg
dHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZl
bnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworZGIgPSBldmVudC5y
ZXN1bHQKK2RiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKK1BBU1MgJ29uc3VjY2VzcycgaW4g
cmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdy
ZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRs
eS4uLgorCitzZXRWZXJzaW9uU3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1Mg
J3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UK
K1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50
IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNj
ZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFy
Z2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQ
QVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK3RyYW5z
ID0gZXZlbnQucmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK3RyYW5zLm9uY29t
cGxldGUgPSBzdGFydFRlc3QKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQorc3RvcmUuYWRkKHt4OiAndmFs
dWUnLCB5OiAnenp6J30sICdrZXknKQorVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBhbmQgdGhh
dCBub3QgcHJldmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Cit0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFtdLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQordHJh
bnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZAordHJhbnMub25jb21wbGV0ZSA9IHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrCit0cmFucy5vbmVycm9yID0gYWxsb3dEZWZhdWx0CitzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorc3RvcmUuYWRkKHt4OiAndmFsdWUn
LCB5OiAnenp6J30sICdrZXknKQorUEFTUyBFdmVudCBoYW5kbGVyIGZpcmVkCitEb2luZyBub3Ro
aW5nIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uCitQQVNTIGhhbmRsZXJGaXJlZCBp
cyB0cnVlCisKK1ZlcmlmaW5nIGVycm9yCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFtdLCB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQordHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9u
QWJvcnRlZDIKK3RyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjawordHJh
bnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkK
K3RyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JCdWJibGVDYWxsYmFjaywgZmFs
c2UpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorc3RvcmUuYWRkKHt4
OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKQorCitJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBj
YXB0dXJlCitQQVNTIGNhcHR1cmVGaXJlZCBpcyBmYWxzZQorUEFTUyByZXF1ZXN0RmlyZWQgaXMg
ZmFsc2UKK1BBU1MgYnViYmxlRmlyZWQgaXMgZmFsc2UKKworSW4gSURCUmVxdWVzdCBoYW5kbGVy
CitQQVNTIGNhcHR1cmVGaXJlZCBpcyB0cnVlCitQQVNTIHJlcXVlc3RGaXJlZCBpcyBmYWxzZQor
UEFTUyBidWJibGVGaXJlZCBpcyBmYWxzZQorCitJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBidWJi
bGUKK1BBU1MgY2FwdHVyZUZpcmVkIGlzIHRydWUKK1BBU1MgcmVxdWVzdEZpcmVkIGlzIHRydWUK
K1BBU1MgYnViYmxlRmlyZWQgaXMgZmFsc2UKKworVHJhbnNhY3Rpb24gYWJvcnRlZAorUEFTUyBj
YXB0dXJlRmlyZWQgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0RmlyZWQgaXMgdHJ1ZQorUEFTUyBidWJi
bGVGaXJlZCBpcyB0cnVlCisKK1ZlcmlmaW5nIHN1Y2Nlc3MuCit0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFtdLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQordHJhbnMub25jb21wbGV0
ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGUKK3RyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjawordHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NDYXB0dXJl
Q2FsbGJhY2ssIHRydWUpCit0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgc3VjY2Vz
c0J1YmJsZUNhbGxiYWNrLCBmYWxzZSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpCitzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleTInKQorCitJbiBJ
REJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhcHR1cmUKK1BBU1MgY2FwdHVyZUZpcmVkIGlzIGZhbHNl
CitQQVNTIHJlcXVlc3RGaXJlZCBpcyBmYWxzZQorUEFTUyBidWJibGVGaXJlZCBpcyBmYWxzZQor
CitJbiBJREJSZXF1ZXN0IGhhbmRsZXIKK1BBU1MgY2FwdHVyZUZpcmVkIGlzIHRydWUKK1BBU1Mg
cmVxdWVzdEZpcmVkIGlzIGZhbHNlCitQQVNTIGJ1YmJsZUZpcmVkIGlzIGZhbHNlCisKK1RyYW5z
YWN0aW9uIGNvbXBsZXRlZAorUEFTUyBjYXB0dXJlRmlyZWQgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0
RmlyZWQgaXMgdHJ1ZQorUEFTUyBidWJibGVGaXJlZCBpcyBmYWxzZQorCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUxMjg0YjYxYTAxNzQ1NGEyZjkxMzRlNDIxMzEwNzNlMTAyNTk3NGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0
LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKQEAgLTAsMCArMSwxOTQgQEAKKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlc3VsdCA9IGV2YWxB
bmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKCduYW1lJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQo
cmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJz
aW9uKCkKK3sKKyAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC5yZXN1bHQiKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsK
KyAgICByZXN1bHQub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3Rp
bmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHZlcmlmeVN1
Y2Nlc3NFdmVudChldmVudCk7CisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYiwgY3JlYXRlT2JqZWN0U3RvcmUpOworfQorCitmdW5jdGlvbiBjcmVhdGVPYmpl
Y3RTdG9yZSgpCit7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzdGFydFRl
c3QoKQoreworICAgIGRlYnVnKCJWZXJpZnkgdGhhdCBoYW5kbGVyIGZpcmVzIGFuZCB0aGF0IG5v
dCBwcmV2ZW50aW5nIGRlZmF1bHQgd2lsbCByZXN1bHQgaW4gYW4gYWJvcnQiKTsKKyAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oW10sIHdlYmtpdElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRy
YW5zYWN0aW9uQWJvcnRlZCIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1
bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uZXJy
b3IgPSBhbGxvd0RlZmF1bHQiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlc3VsdC5v
bnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIGhhbmRsZXJGaXJlZCA9
IGZhbHNlOworfQorCitmdW5jdGlvbiBhbGxvd0RlZmF1bHQoKQoreworICAgIHRlc3RQYXNzZWQo
IkV2ZW50IGhhbmRsZXIgZmlyZWQiKTsKKyAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2
ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOworICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Cit9
CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJo
YW5kbGVyRmlyZWQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmaW5nIGVycm9y
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFtdLCB3
ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQyIik7CisgICAgZXZhbEFuZExvZygidHJhbnMu
b25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1
ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVy
cm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXN1bHQgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVzdWx0
Lm9uZXJyb3IgPSBlcnJvckZpcmVkQ2FsbGJhY2s7CisgICAgY2FwdHVyZUZpcmVkID0gZmFsc2U7
CisgICAgcmVxdWVzdEZpcmVkID0gZmFsc2U7CisgICAgYnViYmxlRmlyZWQgPSBmYWxzZTsKK30K
KworZnVuY3Rpb24gZXJyb3JDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiSW4gSURCVHJhbnNhY3Rpb24gZXJyb3IgY2FwdHVyZSIpOworICAgIHNob3VsZEJl
RmFsc2UoImNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIp
OworICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgY2FwdHVyZUZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1
ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICByZXF1ZXN0RmlyZWQgPSB0cnVl
OworfQorCitmdW5jdGlvbiBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIGJ1YmJsZUZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMigpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgc2hvdWxkQmVUcnVl
KCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiYnViYmxlRmlyZWQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IlZlcmlmaW5nIHN1Y2Nlc3MuIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFtdLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nl
c3NDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZl
bnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywg
eTogJ3p6eid9LCAna2V5MicpIik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gc3VjY2Vzc0ZpcmVkQ2FsbGJhY2s7
CisgICAgY2FwdHVyZUZpcmVkID0gZmFsc2U7CisgICAgcmVxdWVzdEZpcmVkID0gZmFsc2U7Cisg
ICAgYnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxs
YmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBz
dWNjZXNzIGNhcHR1cmUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJi
bGVGaXJlZCIpOworICAgIGNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nl
c3NGaXJlZENhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQlJl
cXVlc3QgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAg
c2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxl
RmlyZWQiKTsKKyAgICByZXF1ZXN0RmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBzdWNjZXNz
QnViYmxlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCVHJh
bnNhY3Rpb24gc3VjY2VzcyBidWJibGUiKTsKKyAgICB0ZXN0RmFpbGVkKCJTdWNjZXNzIGNhcHR1
cmUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7CisgICAgYnViYmxlRmlyZWQgPSB0cnVlOwor
fQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIlRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiY2Fw
dHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRvbmUoKTsK
KyAgICByZXR1cm47Cit9CisKK3Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQzYWJiNWU3
NzM0NTdhNWNiOGIxN2E2NDczMTYyZGJmZTAwYTk5YjguLjYxOGU4ZDQyZTQ3OGZiYTVmN2ViOGEx
YTcyYmQzMGM2Y2E5MGRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MSBAQAogMjAxMS0wMi0w
NCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWNvbmQgSW5kZXhlZERCIGV2ZW50cyBv
dmVyaGF1bCBwYXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTM4MTMKKworICAgICAgICBJZiBhbiBJREJSZXF1ZXN0IGhhcyBhIElEQlRyYW5zYWN0
aW9uLCBpdCBzaG91bGQgcHJvcG9nYXRlCisgICAgICAgIGV2ZW50cyB0aHJvdWdoIGl0LiBJbiBv
cmRlciB0byBkbyB0aGlzLCBJREJSZXF1ZXN0IG5lZWRzIHRvCisgICAgICAgIGhvbGQgYSB0cmFu
c2FjdGlvbiBmcm9udGVuZCBvYmplY3QgcmF0aGVyIHRoYW4gYSBiYWNrZW5kIG9uZS4KKworICAg
ICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0
bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6SURCQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnNldFNldFZl
cnNpb25UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y3JlYXRl
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjph
ZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6b3BlbkN1cnNvcik6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFn
ZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OnJlc2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlz
cGF0Y2hFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0Lmg6CisgICAgICAgICog
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb250ZXh0
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZl
bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9y
YWdlL0lEQlRyYW5zYWN0aW9uLmlkbDoKKworMjAxMS0wMi0wNCAgSmVyZW15IE9ybG93ICA8am9y
bG93QGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KIAog
ICAgICAgICBGaXJzdCBzdGVwIHRvd2FyZHMgZXZlbnQgcHJvcG9nYXRpb24gd2l0aGluIEluZGV4
ZWREQgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IDRiZTZmNGE1NTI0ODU5
NTQ2ODNiOTE2ODU3N2EyNDJiMzEyOTJjZTAuLjUzMWNhZTE0MGVmZmQwZmZkNDY3NDQ5Yjc1YzM2
ZGZjZDBjZmVhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKQEAgLTMzLDEz
ICszMywxMyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCQ3Vyc29yOjpJREJD
dXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJS
ZXF1ZXN0KiByZXF1ZXN0LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uKQorSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPiBiYWNrZW5kLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fcmVxdWVzdChyZXF1
ZXN0KQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkN1cnNvci5oCmluZGV4IDU0YmY1MWFhMzQ2NTY1NTI0MTY3NmVmYzM0MDkxNThjYjdiZDVhOGQu
LjlmNWZmYWQ1MzRmYjI1NTI4NGNlYzViMTQyNzQ1YWJhZTVmNWUzMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJDdXJzb3IuaApAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBJREJDYWxsYmFja3M7CiBj
bGFzcyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURC
UmVxdWVzdDsKK2NsYXNzIElEQlRyYW5zYWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZTsKIAogY2xhc3MgSURCQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8
SURCQ3Vyc29yPiB7CiBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
UFJFViA9IDIsCiAgICAgICAgIFBSRVZfTk9fRFVQTElDQVRFID0gMywKICAgICB9OwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJDdXJzb3I+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJh
Y2tlbmQsIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yKGJhY2tlbmQsIHJl
cXVlc3QsIHRyYW5zYWN0aW9uKSk7CiAgICAgfQpAQCAtNzAsMTEgKzcwLDExIEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgSURC
Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIElEQlJlcXVlc3Qq
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICBleHBsaWNpdCBJREJDdXJz
b3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVxdWVzdCosIElE
QlRyYW5zYWN0aW9uKik7CiAKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
bV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci0gICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGM5ZDk2ZmVj
YTgyMzU2ZWU1ZDAyMjFhY2M1NTFlZDhjYjA0NTVjMjQuLjZjYTJmNDJmYmM5YzUyODZkZWY0YmYx
Y2NiMGM4MTM2ZGNmYzAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQogewogfQogCi12
b2lkIElEQkRhdGFiYXNlOjpzZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3ZvaWQgSURCRGF0YWJhc2U6OnNldFNldFZl
cnNpb25UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7CiAgICAgbV9z
ZXRWZXJzaW9uVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKIH0KQEAgLTcxLDcgKzcxLDcgQEAg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAgICBvcHRpb25zLmdldEtleUJvb2woImF1dG9JbmNy
ZW1lbnQiLCBhdXRvSW5jcmVtZW50KTsKICAgICAvLyBGSVhNRTogTG9vayB1cCBldmljdGFibGUg
YW5kIHBhc3MgdGhhdCBvbiBhcyB3ZWxsLgogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2JhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3Jl
KG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uLmdl
dCgpLCBlYyk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2Jq
ZWN0U3RvcmUgPSBtX2JhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsIG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAg
ICBpZiAoIW9iamVjdFN0b3JlKSB7CiAgICAgICAgIEFTU0VSVChlYyk7CiAgICAgICAgIHJldHVy
biAwOwpAQCAtODYsNyArODYsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCBtX3NldFZl
cnNpb25UcmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0
U3RvcmUobmFtZSwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogfQog
CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggN2MzNWIwOWJm
MGFlMzJlODRhNTU3NDYyNzNlYjE0OWM0MTJjYWNlOS4uZDgyZWFkM2U0MzkxMmU5YTk0M2RkMTc3
NzkyYzFjMDgzNDNkM2MwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JREJEYXRhYmFzZSgpOwogCi0gICAg
dm9pZCBzZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CisgICAgdm9pZCBzZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24q
KTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgog
ICAgIElEQkRhdGFiYXNlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7
CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7Ci0g
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9zZXRWZXJzaW9uVHJh
bnNhY3Rpb247CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3NldFZlcnNpb25UcmFuc2Fj
dGlvbjsKIAogICAgIGJvb2wgbV9ub05ld1RyYW5zYWN0aW9uczsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXguY3BwCmluZGV4IDBjYzQ3MjY5MTE5NjViYjFlMjY0OTZlYTJlMmJmMzNkZWFm
NThmNmIuLjYxNTc2N2I3YzNkY2FiM2E4NjY1MjZmYmVhZDI2Y2U1OWFhZDgxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKICNpbmNsdWRlICJJ
REJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3Qu
aCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwogCi1J
REJJbmRleDo6SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJh
Y2tlbmQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCitJREJJ
bmRleDo6SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tl
bmQsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IG1fYmFja2VuZChiYWNrZW5k
KQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKIHsKQEAgLTYxLDcgKzYxLDcgQEAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXMKICAgICB9CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9iYWNrZW5kLT5vcGVuQ3Vyc29yKGtleVJh
bmdlLCBkaXJlY3Rpb24sIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKKyAgICBt
X2JhY2tlbmQtPm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgbV90cmFu
c2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTc2LDcgKzc2LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAogICAgIH0KIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVz
dDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdl
dCgpKTsKLSAgICBtX2JhY2tlbmQtPm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwg
cmVxdWVzdCwgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgIG1fYmFja2VuZC0+b3Blbktl
eUN1cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNr
ZW5kKCksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBy
ZXF1ZXN0OwpAQCAtODUsNyArODUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4
OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fYmFja2Vu
ZC0+Z2V0KGtleSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgIG1fYmFj
a2VuZC0+Z2V0KGtleSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTk0
LDcgKzk0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9iYWNrZW5kLT5nZXRLZXko
a2V5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CisgICAgbV9iYWNrZW5kLT5n
ZXRLZXkoa2V5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleC5oCmluZGV4IGFhZWIzNDg2MThhYjUzOTlmYWQ3NDE1YjE0MGY2MjRjMzgw
ZTUzNDMuLjEwYjQ2ZjFmMDQ1NDYyY2NjYjkxZmQ0YmNmYWI0YzE4MTk2NDU2M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkluZGV4LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJREJJbmRleCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkluZGV4PiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3Jl
YXRlKFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IElEQkluZGV4KGJhY2tlbmQsIHRyYW5zYWN0aW9uKSk7CiAgICAgfQpAQCAtNjQsMTAgKzY0LDEw
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAKIHBy
aXZhdGU6Ci0gICAgSURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKTsKKyAgICBJREJJ
bmRleChQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9u
Kik7CiAKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7Ci0g
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsK
KyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3Bw
CmluZGV4IGFjODYwYTI1NThiNGUzMjlmYWQ5ZDkwYmRiNDhhMTBlOTI1ZDFkYzQuLjFiYTg3MzMz
OTBjYjFjNGQxMjYwZmY4Zjc4NmFmZWM4MDY3MzkxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSURCSW5k
ZXguaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgotI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElE
QkN1cnNvcjo6TkVYVDsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK0lEQk9iamVjdFN0b3JlOjpJ
REJPYmplY3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
aWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IG1fb2Jq
ZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQogewpAQCAtNzAsNyArNzAsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVj
dFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCUmVxdWVz
dD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0
aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9vYmplY3RTdG9yZS0+Z2V0KGtleSwg
cmVxdWVzdCwgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgIG1fb2JqZWN0U3RvcmUtPmdl
dChrZXksIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChl
YykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwpAQCAt
NzksNyArNzksNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyks
IG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fb2JqZWN0U3RvcmUtPnB1dCh2YWx1ZSwga2V5
LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9ubHksIHJlcXVlc3QsIG1fdHJh
bnNhY3Rpb24uZ2V0KCksIGVjKTsKKyAgICBtX29iamVjdFN0b3JlLT5wdXQodmFsdWUsIGtleSwg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpBZGRPbmx5LCByZXF1ZXN0LCBtX3RyYW5z
YWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiByZXF1ZXN0OwpAQCAtODgsNyArODgsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fb2Jq
ZWN0U3RvcmUtPnB1dCh2YWx1ZSwga2V5LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6
OkFkZE9yVXBkYXRlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CisgICAgbV9v
YmplY3RTdG9yZS0+cHV0KHZhbHVlLCBrZXksIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZTo6QWRkT3JVcGRhdGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwog
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CkBAIC05
Nyw3ICs5Nyw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250
ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9v
YmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24oa2V5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdl
dCgpLCBlYyk7CisgICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24oa2V5LCByZXF1ZXN0
LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIHJldHVybiByZXF1ZXN0OwpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQ
dHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKICAgICBvcHRpb25zLmdl
dEtleUJvb2woInVuaXF1ZSIsIHVuaXF1ZSk7CiAKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBh
dGgsIHVuaXF1ZSwgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgIFJlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFt
ZSwga2V5UGF0aCwgdW5pcXVlLCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBB
U1NFUlQoIWluZGV4ICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5kZXgsIHdlIHNo
b3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCiAgICAg
aWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjYsNyArMTI2LDcgQEAgUGFzc1Jl
ZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYgZWMKIAogdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBtX29iamVjdFN0b3Jl
LT5kZWxldGVJbmRleChuYW1lLCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CisgICAgbV9vYmpl
Y3RTdG9yZS0+ZGVsZXRlSW5kZXgobmFtZSwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7
CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0x
MzgsNyArMTM4LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICB9CiAKICAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJB
bnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9vYmplY3RTdG9y
ZS0+b3BlbkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdl
dCgpLCBlYyk7CisgICAgbV9vYmplY3RTdG9yZS0+b3BlbkN1cnNvcihyYW5nZSwgZGlyZWN0aW9u
LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAppbmRleCA4YzA3NmM3YjEzMWM5OTgzNWM4MWU4
ZTc2YzJhMDBkZTQ2MGQ0Njg0Li40MzJjZjE5MGM4NjAwZmVkMGYyNzdjZjU5YWRjYTM5OTAzMWE4
ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC00NSwxMSAr
NDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xh
c3MgSURCQW55OwotY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogCiBjbGFz
cyBJREJPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmUo
aWRiT2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSk7CiAgICAgfQpAQCAtNzgsMTEgKzc3LDExIEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBk
aXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsgCiAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3Rv
cmUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKTsKKyAgICBJREJPYmplY3RTdG9yZShQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9u
Kik7CiAgICAgdm9pZCByZW1vdmVUcmFuc2FjdGlvbkZyb21QZW5kaW5nTGlzdCgpOwogCiAgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gbV9vYmplY3RTdG9yZTsKLSAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGY0
NWM0MzczNDAyMmQ5YWRlYWNiZTIxNTViZDA3N2RlOGIzNzdmYmIuLmM5ZjlhZWZhOTdhMTUzZjE2
MWYwZjU1NDkxMjFlNDhlMWRiMzU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmNwcApAQCAtNDYsMjYgKzQ2LDI2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVx
dWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB0cmFuc2FjdGlvbikp
OwogfQogCi1JREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24pCitJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlv
bikKICAgICAsIG1fcmVhZHlTdGF0ZShMT0FESU5HKQogewogICAgIGlmIChtX3RyYW5zYWN0aW9u
KQotICAgICAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpyZW1vdmVQZW5kaW5nVHJh
bnNhY3Rpb24obV90cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgICAgIElEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3I6OnJlbW92ZVBlbmRpbmdUcmFuc2FjdGlvbihtX3RyYW5zYWN0aW9uLT5iYWNr
ZW5kKCkpOwogfQogCiBJREJSZXF1ZXN0Ojp+SURCUmVxdWVzdCgpCiB7CiB9CiAKLWJvb2wgSURC
UmVxdWVzdDo6cmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24pCitib29sIElEQlJlcXVlc3Q6OnJlc2V0UmVhZHlTdGF0ZShJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBET05FKQpAQCAtNzQsNyArNzQsNyBAQCBib29s
IElEQlJlcXVlc3Q6OnJlc2V0UmVhZHlTdGF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uKQogICAgIG1fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKICAgICBt
X3JlYWR5U3RhdGUgPSBMT0FESU5HOwogCi0gICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
cjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJlbW92ZVBlbmRpbmdUcmFuc2FjdGlvbihtX3Ry
YW5zYWN0aW9uLT5iYWNrZW5kKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMTUsMTIg
KzExNSwxNCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwQmFja2VuZAogICAgICAgICByZXR1cm47CiAKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kID0gcHJwQmFj
a2VuZDsKLSAgICAvLyBUaGlzIGlzIG9ubHkgdXNlZCBieSBzZXRWZXJzaW9uIHdoaWNoIHdpbGwg
YWx3YXlzIGhhdmUgYSBzb3VyY2UgdGhhdCdzIGFuIElEQkRhdGFiYXNlLgotICAgIG1fc291cmNl
LT5pZGJEYXRhYmFzZSgpLT5zZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24oYmFja2VuZC5nZXQoKSk7
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElEQlRyYW5zYWN0aW9uOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBtX3NvdXJjZS0+aWRiRGF0
YWJhc2UoKS5nZXQoKSk7CiAgICAgYmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgp
KTsKLSAgICBtX3RyYW5zYWN0aW9uID0gYmFja2VuZDsKLSAgICBJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yOjpyZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24obV90cmFuc2FjdGlvbi5nZXQoKSk7
CisgICAgbV90cmFuc2FjdGlvbiA9IGZyb250ZW5kOworCisgICAgQVNTRVJUKG1fc291cmNlLT50
eXBlKCkgPT0gSURCQW55OjpJREJEYXRhYmFzZVR5cGUpOworICAgIG1fc291cmNlLT5pZGJEYXRh
YmFzZSgpLT5zZXRTZXRWZXJzaW9uVHJhbnNhY3Rpb24oZnJvbnRlbmQuZ2V0KCkpOworCisgICAg
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1f
dHJhbnNhY3Rpb24tPmJhY2tlbmQoKSk7CiAgICAgZW5xdWV1ZUV2ZW50KElEQlN1Y2Nlc3NFdmVu
dDo6Y3JlYXRlKG1fc291cmNlLCBJREJBbnk6OmNyZWF0ZShmcm9udGVuZC5yZWxlYXNlKCkpKSk7
CiB9CiAKQEAgLTE0MiwxNSArMTQ0LDE3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50VGFyZ2V0
PiA+IHRhcmdldHM7CiAgICAgdGFyZ2V0cy5hcHBlbmQodGhpcyk7CiAgICAgQVNTRVJUKGV2ZW50
LT50YXJnZXQoKSA9PSB0aGlzKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbikKKyAgICAgICAgdGFy
Z2V0cy5hcHBlbmQobV90cmFuc2FjdGlvbik7CisKICAgICBBU1NFUlQoZXZlbnQtPmlzSURCRXJy
b3JFdmVudCgpIHx8IGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgpKTsKICAgICBib29sIGRvbnRQ
cmV2ZW50RGVmYXVsdCA9IHN0YXRpY19jYXN0PElEQkV2ZW50Kj4oZXZlbnQuZ2V0KCkpLT5kaXNw
YXRjaCh0YXJnZXRzKTsKIAogICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIGlmIChk
b250UHJldmVudERlZmF1bHQgJiYgZXZlbnQtPmlzSURCRXJyb3JFdmVudCgpKQotICAgICAgICAg
ICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoKTsKLSAgICAgICAgbV90cmFuc2FjdGlvbi0+ZGlkQ29t
cGxldGVUYXNrRXZlbnRzKCk7CisgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkt
PmFib3J0KCk7CisgICAgICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS0+ZGlkQ29tcGxldGVU
YXNrRXZlbnRzKCk7CiAgICAgfQotCiAgICAgcmV0dXJuIGRvbnRQcmV2ZW50RGVmYXVsdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAppbmRleCA4NDllYjlhZDFlNGNlYWZiM2Rm
MWM3OTg0YjAwMzhiY2VkNWY1MWMzLi4yYzVmNDU0NWEzOGNjMWEzZTQyMjY5ODY1NjkwZDM5YjQ4
ZDJkY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApAQCAtNDIsMTEgKzQyLDEx
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkV2ZW50OwotY2xhc3MgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOworY2xhc3MgSURCVHJhbnNhY3Rpb247CiAKIGNsYXNz
IElEQlJlcXVlc3QgOiBwdWJsaWMgSURCQ2FsbGJhY2tzLCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwg
fklEQlJlcXVlc3QoKTsKIAogICAgIC8vIERlZmluZWQgaW4gdGhlIElETApAQCAtNTgsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdWNjZXNz
KTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKIAotICAgIGJv
b2wgcmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworICAg
IGJvb2wgcmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKik7CiAKICAgICAvLyBJREJDYWxs
YmFja3MKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+KTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVTaGFy
ZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbik7CisgICAgSURCUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb24qKTsKIAogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKIApA
QCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBl
bnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwot
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247
CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiAgICAgUmVhZHlT
dGF0ZSBtX3JlYWR5U3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5jcHAKaW5kZXggYjllMDE1NTAzMjMzYTFjZDZiOTIwMTk5ZmQ5Y2EzOTZmYjA1ZjU3Yi4uOWU4
OWFhYmRhMjE1YjE0MjZkOTI2NTNlMTBjNGMwMThkNjQ1YzFkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTUyLDcgKzUyLDkgQEAgSURCVHJhbnNhY3Rp
b246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCVHIKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9kYXRhYmFzZShk
YikKICAgICAsIG1fbW9kZShtX2JhY2tlbmQtPm1vZGUoKSkKKyAgICAsIG1fZmluaXNoZWQoZmFs
c2UpCiB7CisgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9u
TW9uaXRvcjo6YWRkUGVuZGluZ1RyYW5zYWN0aW9uKG1fYmFja2VuZC5nZXQoKSk7CiB9CiAKQEAg
LTczLDcgKzc1LDcgQEAgSURCRGF0YWJhc2UqIElEQlRyYW5zYWN0aW9uOjpkYigpCiBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBGSVhNRTogSXQnZCBiZSBi
ZXR0ZXIgKGJlY2F1c2UgaXQncyBtb3JlIGRldGVybWluaXN0aWMpIGlmIHdlIGRpZG4ndCBzdGFy
dCB0aHJvd2luZyB0aGlzIHVudGlsIHRoZSBjb21wbGV0ZSBvciBhYm9ydCBldmVudCBmaXJlcy4K
LSAgICBpZiAoIW1fYmFja2VuZCkgeworICAgIGlmIChtX2ZpbmlzaGVkKSB7CiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQpAQCAtODIsNyArODQsNyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcAogICAg
ICAgICBBU1NFUlQoZWMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0
U3RvcmVCYWNrZW5kLCBtX2JhY2tlbmQuZ2V0KCkpOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9y
ZT4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG9iamVjdFN0b3JlQmFja2Vu
ZCwgdGhpcyk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KIApAQCAtMTIw
LDcgKzEyMiw4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbnRleHREZXN0cm95ZWQoKQogICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gc2VsZlJlZiA9IHRoaXM7CiAgICAgaWYgKG1fYmFja2Vu
ZCkKICAgICAgICAgbV9iYWNrZW5kLT5hYm9ydCgpOwotICAgIG1fYmFja2VuZC5jbGVhcigpOwor
CisgICAgbV9maW5pc2hlZCA9IHRydWU7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmVucXVl
dWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKQEAgLTEyOCw5ICsxMzEsOSBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFTU0VSVChtX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZC5jbGVhcigpOwotICAgIAorICAgIEFT
U0VSVCghbV9maW5pc2hlZCk7CisgICAgbV9maW5pc2hlZCA9IHRydWU7CisKICAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwogICAgIEV2ZW50UXVldWUq
IGV2ZW50UXVldWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPmV2ZW50UXVldWUoKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDNmZGI5ZTUyMDAwYzZjMGQ3MDUx
MTllNTUxMzQwZTU3MTFiNzU2NGMuLjM4ZGIzYjZlZDBkNzQwNzFhNThjMGM4N2NkZDlhODk4OWY0
NmE4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTYyLDYg
KzYyLDcgQEAgcHVibGljOgogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihh
Ym9ydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb21wbGV0ZSk7Cisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CiAKICAgICAvLyBJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KCk7CkBAIC05Miw2
ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAg
ICB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CisgICAgYm9vbCBtX2ZpbmlzaGVkOwogCiAgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbi5pZGwKaW5kZXggY2YzYjFjZTgzNjVkMWYwNjE1ODI5YzY2ZGQ5MmQ1
MmM2NzBkYmJiYS4uMmYwMjE5NTQ0ZmY1M2ZhMDBhNjBlZTZjMDU3Yzc4NWI0NmMxMGU4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwKQEAgLTQ0LDYgKzQ0LDcg
QEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAvLyBFdmVudHMKICAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25jb21wbGV0ZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKICAg
ICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCg==
</data>
<flag name="review"
          id="72854"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>