<?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>16860</bug_id>
          
          <creation_ts>2008-01-13 09:17:40 -0800</creation_ts>
          <short_desc>a bit of cleanup after the Activation optimization</short_desc>
          <delta_ts>2008-01-26 10:58:31 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>67115</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-13 09:17:40 -0800</bug_when>
    <thetext>Here&apos;s a bit of clean-up fro the just-landed Activation optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67116</commentid>
    <comment_count>1</comment_count>
      <attachid>18422</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-13 09:34:01 -0800</bug_when>
    <thetext>Created attachment 18422
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67123</commentid>
    <comment_count>2</comment_count>
      <attachid>18424</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-13 11:18:41 -0800</bug_when>
    <thetext>Created attachment 18424
patch (revised with a tiny change to pass all tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68232</commentid>
    <comment_count>3</comment_count>
      <attachid>18424</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-25 13:09:24 -0800</bug_when>
    <thetext>Comment on attachment 18424
patch (revised with a tiny change to pass all tests)

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68233</commentid>
    <comment_count>4</comment_count>
      <attachid>18424</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-25 13:10:35 -0800</bug_when>
    <thetext>Comment on attachment 18424
patch (revised with a tiny change to pass all tests)

I think this patch no longer cleanly applies because of the new activation stack. I&apos;ll find out when I get some time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68308</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-26 10:58:31 -0800</bug_when>
    <thetext>Committed revision 29810.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18422</attachid>
            <date>2008-01-13 09:34:01 -0800</date>
            <delta_ts>2008-01-13 11:18:41 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ActivationPatch.txt</filename>
            <type>text/plain</type>
            <size>28944</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5NDUwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzcgQEAKKzIwMDgtMDEtMTMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4NjAKKyAgICAgICAgICBhIGJpdCBvZiBjbGVhbnVwIGFmdGVyIHRoZSBBY3RpdmF0aW9uIG9w
dGltaXphdGlvbgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOiBFeHBvcnQgdGhlIEds
b2JhbEV4ZWNTdGF0ZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIHRoZSBnbG9iYWwg
Zmxhdm9yIG9mIHRoZSBFeGVjU3RhdGUgY29uc3RydWN0b3IuIEl0J2QgcHJvYmFibHkgYmUgY2xl
YW5lcgorICAgICAgICB0byBub3QgZXhwb3J0IGVpdGhlciBvbmUsIGJ1dCBKU0dsb2JhbE9iamVj
dCBpbmxpbmVzIHRoZSBjb2RlIHRoYXQKKyAgICAgICAgY29uc3RydWN0cyB0aGUgRXhlY1N0YXRl
LiBJZiB3ZSBjaGFuZ2VkIHRoYXQsIHdlIGNvdWxkIHJlbW92ZSB0aGlzIGV4cG9ydC4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlLXNvcnRl
ZCBhIGZldyB0aGluZ3MgYW5kCisgICAgICAgIHB1dCB0aGUgbmV3IHNvdXJjZSBmaWxlcyBpbnRv
IHRoZSBranMgZ3JvdXAgcmF0aGVyIHRoYW4gYXQgdGhlIHRvcCBsZXZlbC4KKworICAgICAgICAq
IGtqcy9FeGVjU3RhdGUuY3BwOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6OkV4ZWNTdGF0ZSk6
IE1hcmtlZCBpbmxpbmUgYW5kIHVwZGF0ZWQgZm9yIGRhdGEgbWVtYmVyCisgICAgICAgIG5hbWUg
Y2hhbmdlcy4gVGhpcyBpcyBub3cgb25seSBmb3IgdXNlIGZvciB0aGUgZGVyaXZlZCBjbGFzc2Vz
LiBBbHNvIHJlbW92ZWQKKyAgICAgICAgY29kZSB0aGF0IHNldHMgdGhlIHVudXNlZCBtX3NhdmVk
RXhlYyBkYXRhIG1lbWJlciBmb3IgdGhlIGdsb2JhbCBjYXNlLiBUaGF0CisgICAgICAgIGRhdGEg
bWVtYmVyIGlzIG9ubHkgdXNlZCBmb3IgdGhlIG90aGVyIHR3byB0eXBlcy4KKyAgICAgICAgKEtK
Uzo6RXhlY1N0YXRlOjp+RXhlY1N0YXRlKTogTWFya2VkIGlubGluZSBhbmQgcmVtb3ZlZCBhbGwg
dGhlIGNvZGUuCisgICAgICAgIFRoZSBkZXJpdmVkIGNsYXNzIGRlc3RydWN0b3JzIG5vdyBpbmNs
ZGUgdGhlIGFwcHJvcHJpYXRlIGNvZGUuCisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6bGV4aWNh
bEdsb2JhbE9iamVjdCk6IFJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlIGZvcgorICAgICAg
ICBhbiBlbXB0eSBzY29wZSBjaGFpbi4gVGhlIGJvdHRvbSBmdW5jdGlvbiBhbHJlYWR5IHJldHVy
bnMgMCBmb3IgdGhhdCBjYXNlLAorICAgICAgICBzbyB0aGUgZ2VuZXJhbCBjYXNlIGNvZGUgaGFu
ZGxlcyBpdCBmaW5lLiBBbHNvIGNoYW5nZWQgdG8gdXNlIGRhdGEgbWVtYmVycworICAgICAgICBk
aXJlY3RseSByYXRoZXIgdGhhbiBjYWxsaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKEtKUzo6R2xv
YmFsRXhlY1N0YXRlOjpHbG9iYWxFeGVjU3RhdGUpOiBBZGRlZC4gQ2FsbHMgdGhyb3VnaCB0byB0
aGUgYmFzZQorICAgICAgICBjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEtKUzo6R2xvYmFs
RXhlY1N0YXRlOjp+R2xvYmFsRXhlY1N0YXRlKTogQWRkZWQuIEVtcHR5LgorICAgICAgICAoS0pT
OjpFdmFsRXhlY1N0YXRlOjpFdmFsRXhlY1N0YXRlKTogQWRkZWQuIENhbGxzIHRocm91Z2ggdG8g
dGhlIGJhc2UgY2xhc3MKKyAgICAgICAgY29uc3RydWN0b3IuCisgICAgICAgIChLSlM6OkV2YWxF
eGVjU3RhdGU6On5FdmFsRXhlY1N0YXRlKTogQWRkZWQuIENvbnRhaW5zIHRoZSBjYWxsIHRvIHJl
c3RvcmUKKyAgICAgICAgdGhlIGN1cnJlbnRFeGVjIG9uIHRoZSBnbG9iYWwgb2JqZWN0LCBiZWNh
dXNlIHRoYXQncyBub3QgbmVlZGVkIGZvciBhCisgICAgICAgIEdsb2JhbEV4ZWNTdGF0ZSwgc28g
c2hvdWxkbid0IGJlIGluIHRoZSBiYXNlIGNsYXNzLgorICAgICAgICAoS0pTOjpGdW5jdGlvbkV4
ZWNTdGF0ZTo6RnVuY3Rpb25FeGVjU3RhdGUpOiBBZGRlZC4gQ2FsbHMgdGhyb3VnaCB0byB0aGUK
KyAgICAgICAgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEtKUzo6RnVuY3Rpb25F
eGVjU3RhdGU6On5GdW5jdGlvbkV4ZWNTdGF0ZSk6IEFkZGVkLiBDb250YWlucyBhbGwgdGhlIGNv
ZGUKKyAgICAgICAgdGhhdCB3YXMgZm9ybWVybHkgaW4gfkV4ZWNTdGF0ZSwgYnV0IHdpdGhvdXQg
aGF2aW5nIHRvIGNoZWNrIG1fY29kZVR5cGUuCisKKyAgICAgICAgKiBranMvRXhlY1N0YXRlLmg6
IFR3ZWFrZWQgdGhlIGhlYWRlciwgaW5jbHVkZXMsIGFuZCBkZWNsYXJhdGlvbnMgYSBiaXQuCisg
ICAgICAgIE1hZGUgRXhlY1N0YXRlIGluaGVyaXQgZnJvbSBOb25jb3B5YWJsZS4gUmVmb3JtYXR0
ZWQgc29tZSBjb21tZW50cyBhbmQKKyAgICAgICAgbWFkZSB0aGVtIGEgYml0IG1vcmUgYnJpZWYu
IFJlYXJyYW5nZWQgZGVjbGFyYXRpb25zIGEgbGl0dGxlIGJpdCBhbmQgcmVtb3ZlZAorICAgICAg
ICB1bnVzZWQgc2F2ZWRFeGVjIGZ1bmN0aW9uLiBDaGFuZ2VkIHNlZW5MYWJlbHMgZnVuY3Rpb24g
dG8gcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gTWFk
ZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3IgcHJvdGVjdGVkLCBhbmQgYWxzbworICAgICAg
ICBkaWQgdGhlIHNhbWUgd2l0aCBhbGwgZGF0YSBtZW1iZXJzLiBSZW5hbWVkIG1fdGhpc1ZhbCB0
byBtX3RoaXNWYWx1ZSBhbmQKKyAgICAgICAgbHMgdG8gbV9sYWJlbFN0YWNrLiBBZGRlZCB0aHJl
ZSBuZXcgZGVyaXZlZCBjbGFzc2VzIGZvciBlYWNoIG9mIHRoZQorICAgICAgICB0eXBlcyBvZiBF
eGVjU3RhdGUuIFRoZSBwcmltYXJ5IGdvYWwgaGVyZSB3YXMgdG8gcmVtb3ZlIGEgYnJhbmNoIGZy
b20gdGhlCisgICAgICAgIGNvZGUgaW4gdGhlIGRlc3RydWN0b3IsIGJ1dCBpdCdzIGFsc28gY2xl
YXJlciB0aGFuIG92ZXJsb2FkaW5nIHRoZSBhcmd1bWVudHMKKyAgICAgICAgdG8gdGhlIEV4ZWNT
dGF0ZSBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIGtqcy9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChLSlM6OmdldEN1cnJlbnRUaW1lKTogRml4ZWQgZm9ybWF0dGluZy4KKyAgICAgICAg
KEtKUzo6SlNHbG9iYWxPYmplY3Q6OnB1c2hBY3RpdmF0aW9uKTogUmVtb3ZlZCBwYXJlbnRoZXNl
cyB0aGF0IGRvbid0IG1ha2UKKyAgICAgICAgdGhlIGV4cHJlc3Npb24gY2xlYXJlciAtLSBvdGhl
ciBzaW1pbGFyIHNpdGVzIGRpZG4ndCBoYXZlIHRoZXNlIHBhcmVudGhlc2VzLAorICAgICAgICBl
dmVuIHRoZSBvbmUgYSBjb3VwbGUgbGluZXMgZWFybGllciB0aGF0IHNldHMgc3RhY2tFbnRyeS4K
KyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OnRlYXJPZmZBY3RpdmF0aW9uKTogR290IHJp
ZCBvZiB1bm5lZWRlZCBzdGF0aWNfY2FzdAorICAgICAgICAoSSB0aGluayBJIG1lbnRpb25lZCB0
aGlzIGR1cmluZyBwYXRjaCByZXZpZXcpIGFuZCB1c2VkIGFuIGVhcmx5IGV4aXQgc28gdGhhdAor
ICAgICAgICB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmdW5jdGlvbiBhcmVuJ3QgbmVzdGVk
IGluc2lkZSBhbiBpZiBzdGF0ZW1lbnQuCisgICAgICAgIEFsc28gcmVtb3ZlZCB0aGUgY2hlY2sg
b2YgY29kZVR5cGUsIGluc3RlYWQgY2hlY2tpbmcgQWN0aXZhdGlvbiBmb3IgMC4KKyAgICAgICAg
Rm9yIG5vdywgSSBrZXB0IHRoZSBjb2RlVHlwZSBjaGVjaywgYnV0IGluc2lkZSBhbiBhc3NlcnRp
b24uCisKKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3QuaDogQ2hhbmdlZCB0eXBlIG9mIGds
b2JhbEV4ZWMgdG8gR2xvYmFsRXhlY1N0YXRlLgorICAgICAgICAqIGtqcy9mdW5jdGlvbi5jcHA6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpjYWxsQXNGdW5jdGlvbik6IENoYW5nZWQgdHlw
ZSB0byBGdW5jdGlvbkV4ZWNTdGF0ZS4KKyAgICAgICAgKEtKUzo6R2xvYmFsRnVuY0ltcDo6Y2Fs
bEFzRnVuY3Rpb24pOiBDaGFuZ2VkIHR5cGUgdG8gRXZhbEV4ZWNTdGF0ZS4KKyAgICAgICAgKiBr
anMvaW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoS0pTOjpJbnRlcnByZXRlcjo6ZXZhbHVhdGUp
OiBDaGFuZ2VkIHR5cGUgdG8gR2xvYmFsRXhlY1N0YXRlLgorCisgICAgICAgICoga2pzL25vZGVz
LmNwcDoKKyAgICAgICAgKEtKUzo6Q29udGludWVOb2RlOjpleGVjdXRlKTogQ2hhbmdlZCBjb2Rl
IHNpbmNlIHNlZW5MYWJlbHMoKSByZXR1cm5zIGEKKyAgICAgICAgcmVmZXJlbmNlIG5vdyBpbnN0
ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKEtKUzo6QnJlYWtOb2RlOjpleGVjdXRlKTogRGl0
dG8uCisgICAgICAgIChLSlM6OkxhYmVsTm9kZTo6ZXhlY3V0ZSk6IERpdHRvLgorCiAyMDA4LTAx
LTEzICBNaWNoYWVsIEdvZGRhcmQgIDxtaWNoYWVsLmdvZGRhcmRAdHJvbGx0ZWNoLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCShyZXZpc2lvbiAyOTQ0OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw3IEBAIF9fWk4zS0pTMTRT
dHJpbmdJbnN0YW5jZTNwdXRFUE5TXzlFeGVjU3QKIF9fWk4zS0pTMTRTdHJpbmdJbnN0YW5jZTRp
bmZvRQogX19aTjNLSlMxNFN0cmluZ0luc3RhbmNlQzFFUE5TXzhKU09iamVjdEVSS05TXzdVU3Ry
aW5nRQogX19aTjNLSlMxNFN0cmluZ0luc3RhbmNlQzJFUE5TXzhKU09iamVjdEVSS05TXzdVU3Ry
aW5nRQorX19aTjNLSlMxNUdsb2JhbEV4ZWNTdGF0ZUMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBO
U184SlNPYmplY3RFUE5TXzExUHJvZ3JhbU5vZGVFCiBfX1pOM0tKUzE1SlNXcmFwcGVyT2JqZWN0
NG1hcmtFdgogX19aTjNLSlMxNVNhdmVkUHJvcGVydGllc0MxRXYKIF9fWk4zS0pTMTVTYXZlZFBy
b3BlcnRpZXNEMUV2CkBAIC0yMzEsOCArMjMyLDYgQEAgX19aTjNLSlM5Q29sbGVjdG9yNHNpemVF
dgogX19aTjNLSlM5Q29sbGVjdG9yN2NvbGxlY3RFdgogX19aTjNLSlM5Q29sbGVjdG9yN3Byb3Rl
Y3RFUE5TXzdKU1ZhbHVlRQogX19aTjNLSlM5Q29sbGVjdG9yOXVucHJvdGVjdEVQTlNfN0pTVmFs
dWVFCi1fX1pOM0tKUzlFeGVjU3RhdGVDMUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOEpTT2Jq
ZWN0RVBOU18xMVByb2dyYW1Ob2RlRQotX19aTjNLSlM5RXhlY1N0YXRlRDFFdgogX19aTjNLSlNl
cUVSS05TXzdVU3RyaW5nRVBLYwogX19aTjNXVEYxMGZhc3RDYWxsb2NFbW0KIF9fWk4zV1RGMTBm
YXN0TWFsbG9jRW0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjk0NDkpCisrKyBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzEsOCArNTMxLDggQEAKIAkJNzA3M0JFM0QwNTgxMjkxRTAwNUVFMkM5
IC8qIHJ1bnRpbWVfYXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gcnVudGltZV9hcnJheS5oOyBwYXRoID0gYmluZGluZ3MvcnVudGltZV9h
cnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTcwQjE2
QTI2MDU2OUExMDkwMERCNzU2RCAvKiBydW50aW1lX29iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBydW50aW1lX29iamVjdC5j
cHA7IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNzBCMTZBMjcwNTY5QTEwOTAwREI3NTZEIC8qIHJ1
bnRpbWVfb2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IHJ1bnRpbWVfb2JqZWN0Lmg7IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX29iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07Ci0JCTdFMkM2Qzk1
MEQzMUM2QUIwMDJENDRFMiAvKiBBY3RpdmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFjdGl2YXRpb24uaDsgcGF0aCA9IGtqcy9BY3RpdmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFMkM2Qzk4MEQzMUM2QjYwMDJENDRFMiAvKiBzY29wZV9j
aGFpbl9tYXJrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHNjb3BlX2NoYWlu
X21hcmsuaDsgcGF0aCA9IGtqcy9zY29wZV9jaGFpbl9tYXJrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdFMkM2Qzk1MEQzMUM2QUIwMDJENDRFMiAvKiBBY3RpdmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2YXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUyIC8qIHNjb3BlX2NoYWlu
X21hcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gc2NvcGVfY2hhaW5fbWFy
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEFCRjFERTA3MEI2MjhDMDBBM0FD
MDUgLyogbnBydW50aW1lX2ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBucHJ1bnRpbWVfaW1wbC5oOyBwYXRoID0gYmluZGluZ3MvbnBydW50
aW1lX2ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk5
MzAzRjU2NzA5OTExOEZBMDBBRDcxQjggLyogT3duUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE93blB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAz
RjU2OTA5OTExOTAwMDBBRDcxQjggLyogTm9uY29weWFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTm9uY29weWFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY5MCwxNyArNjkwLDE1IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBKYXZh
U2NyaXB0Q29yZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUyIC8qIHNjb3BlX2NoYWluX21hcmsuaCAqLywKLQkJ
CQk3RTJDNkM5NTBEMzFDNkFCMDAyRDQ0RTIgLyogQWN0aXZhdGlvbi5oICovLAogCQkJCTkzN0I2
M0NDMDlFNzY2RDIwMEE2NzFERCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLAogCQkJCTE0QjhF
Q0E2MEE1NjUzOTgwMDYyQkU1NCAvKiBKYXZhU2NyaXB0Q29yZS5leHAgKi8sCiAJCQkJRjVDMjkw
RTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCi0JCQkJMTQx
MjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovLAotCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCi0JCQkJNjU0MTcyMDAwMzlFMDFCQTAwNThCRkVCIC8qIGtqcyAq
LywKIAkJCQk2NTE2MkVGMTA4RTZBMjFDMDA3NTU2Q0QgLyogd3RmICovLAotCQkJCTUxODU2RDk1
MDU2MkVFOUMwMDhCOUQ4MyAvKiBiaW5kaW5ncyAqLywKIAkJCQk2NTQxNzIwMzAzOUUwMUY5MDA1
OEJGRUIgLyogcGNyZSAqLywKKwkJCQk2NTQxNzIwMDAzOUUwMUJBMDA1OEJGRUIgLyoga2pzICov
LAorCQkJCTUxODU2RDk1MDU2MkVFOUMwMDhCOUQ4MyAvKiBiaW5kaW5ncyAqLywKKwkJCQkxNDMy
RUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAorCQkJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4
MDI1NSAvKiB0ZXN0cyAqLywKIAkJCQk2NTBGREY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZl
ZCBTb3VyY2VzICovLAogCQkJCTkzMkZDM0MyMDgyNEJCNzAwMDVCM0M3NSAvKiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovLApAQCAtOTMw
LDcgKzkyOCw3IEBACiAJCTY1NDE3MjAwMDM5RTAxQkEwMDU4QkZFQiAvKiBranMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTE0RjI1MjYwMEQwOERGMkYw
MDRFQ0ZGRiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCAqLywKKwkJCQk3RTJDNkM5NTBEMzFDNkFC
MDAyRDQ0RTIgLyogQWN0aXZhdGlvbi5oICovLAogCQkJCTY1OTEyNkJDMEJERDE3MjgwMDE5MjFG
QiAvKiBBbGxJbk9uZUZpbGUuY3BwICovLAogCQkJCTkzQURGQ0U2MENDQkQ3QUMwMEQzMEIwOCAv
KiBhcnJheV9pbnN0YW5jZS5jcHAgKi8sCiAJCQkJOTM4NzcyRTUwMzhCRkUxOTAwODYzNUNFIC8q
IGFycmF5X2luc3RhbmNlLmggKi8sCkBAIC05NzgsNiArOTc2LDcgQEAKIAkJCQk2NUVBNEM5QTA5
MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmggKi8sCiAJCQkJMTRBQkI0NTQwOTlDMkEwRjAwRTJB
MjRGIC8qIEpTVHlwZS5oICovLAogCQkJCTE0ODJCNkVBMEE0MzAwQjMwMDUxN0NGQyAvKiBKU1Zh
bHVlUmVmLmggKi8sCisJCQkJMTRGMjUyNjAwRDA4REYyRjAwNEVDRkZGIC8qIEpTVmFyaWFibGVP
YmplY3QuY3BwICovLAogCQkJCTE0RjI1MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU1ZhcmlhYmxl
T2JqZWN0LmggKi8sCiAJCQkJNjVDN0ExNzEwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBlck9i
amVjdC5jcHAgKi8sCiAJCQkJNjVDN0ExNzIwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBlck9i
amVjdC5oICovLApAQCAtMTAxOSw2ICsxMDE4LDcgQEAKIAkJCQkxNEJENTM0QTBBM0UwQUVBMDBC
QUY1OUMgLyogU2F2ZWRCdWlsdGlucy5oICovLAogCQkJCTkzNzREM0E4MDM4RDlENzQwMDg2MzVD
RSAvKiBzY29wZV9jaGFpbi5jcHAgKi8sCiAJCQkJOTM3NEQzQTcwMzhEOUQ3NDAwODYzNUNFIC8q
IHNjb3BlX2NoYWluLmggKi8sCisJCQkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUyIC8qIHNjb3Bl
X2NoYWluX21hcmsuaCAqLywKIAkJCQlGNjkyQTg3RjAyNTU1OTdEMDFGRjYwRjcgLyogc3RyaW5n
X29iamVjdC5jcHAgKi8sCiAJCQkJRjY5MkE4ODAwMjU1NTk3RDAxRkY2MEY3IC8qIHN0cmluZ19v
YmplY3QuaCAqLywKIAkJCQkxNEEzOTZBNjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUu
aCAqLywKQEAgLTExMzUsNiArMTEzNSw4IEBACiAJCQkJMTQ4MkI2RUIwQTQzMDBCMzAwNTE3Q0ZD
IC8qIEpTVmFsdWVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RjI1MjU3MEQwOEREOEQwMDRF
Q0ZGRiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUM3QTE3NDBB
OEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkx
Q0FBOEI0QzBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUNBQThCNEQwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzJGNUI2MTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmVQcmVm
aXguaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QTdBNUUwMENEMUQ1MEUwMDA2MUY4RSAvKiBMYWJl
bFN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTdFQjc0NjBCNzA4RjU0MDA2MzQ2MUIgLyog
TGlzdEhhc2hTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTIzOCw4ICsxMjQwLDYgQEAKIAkJCQk5
M0UyNkJGRTA4QjE1MUQ0MDBGODUyMjYgLyogdWNwaW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMkY1QjVDMDgyMkExQzcwMDczNjk3NSAvKiB1c3RyaW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNEFCQjM2RjA5OUMwNzY0MDBFMkEyNEYgLyogdmFsdWUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTFDQUE4QjRDMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAq
LywKLQkJCQkxQ0FBOEI0RDBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5jcHAJKHJldmlzaW9uIDI5NDQ5
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsOSArMSw4IEBACiAvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KIC8q
Ci0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MSwyMCArNDAsMTkgQEAgc3RhdGljIGlubGluZSBM
aXN0KiBnbG9iYWxFbXB0eUxpc3QoKQogCiAvLyBFQ01BIDEwLjIKIAotRXhlY1N0YXRlOjpFeGVj
U3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIC8qdGhpc09iamVj
dCovLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUpCitpbmxpbmUgRXhlY1N0YXRlOjpFeGVjU3Rh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIC8qdGhpc09iamVjdCov
LCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCiAgICAgLCBtX2V4Y2VwdGlvbigwKQogICAgICwgbV9wcm9wZXJ0eU5hbWVzKENvbW1v
bklkZW50aWZpZXJzOjpzaGFyZWQoKSkKICAgICAsIG1fZW1wdHlMaXN0KGdsb2JhbEVtcHR5TGlz
dCgpKQogICAgICwgbV9jYWxsaW5nRXhlYygwKQotICAgICwgbV9zYXZlZEV4ZWMoMCkKICAgICAs
IG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV9mdW5jdGlvbigwKQogICAgICwgbV9h
cmd1bWVudHMoMCkKICAgICAsIG1fYWN0aXZhdGlvbigwKQogICAgICwgbV9sb2NhbFN0b3JhZ2Uo
Jmdsb2JhbE9iamVjdC0+bG9jYWxTdG9yYWdlKCkpCiAgICAgLCBtX3ZhcmlhYmxlT2JqZWN0KGds
b2JhbE9iamVjdCkKLSAgICAsIG1fdGhpc1ZhbChnbG9iYWxPYmplY3QpCisgICAgLCBtX3RoaXNW
YWx1ZShnbG9iYWxPYmplY3QpCiAgICAgLCBtX2l0ZXJhdGlvbkRlcHRoKDApCiAgICAgLCBtX3N3
aXRjaERlcHRoKDApIAogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQpAQCAtNjcsNyArNjUs
NyBAQCBFeGVjU3RhdGU6OkV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIGds
b2JhbE9iamVjdC0+c2V0Q3VycmVudEV4ZWModGhpcyk7CiB9CiAKLUV4ZWNTdGF0ZTo6RXhlY1N0
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2YWxOb2RlKiBldmFsTm9kZSwgRXhl
Y1N0YXRlKiBjYWxsaW5nRXhlYykKK2lubGluZSBFeGVjU3RhdGU6OkV4ZWNTdGF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmFsTm9kZSogZXZhbE5vZGUsIEV4ZWNTdGF0ZSogY2Fs
bGluZ0V4ZWMpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2V4
Y2VwdGlvbigwKQogICAgICwgbV9wcm9wZXJ0eU5hbWVzKGNhbGxpbmdFeGVjLT5tX3Byb3BlcnR5
TmFtZXMpCkBAIC04MSw3ICs3OSw3IEBAIEV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG8KICAgICAsIG1fbG9jYWxTdG9yYWdlKGNhbGxpbmdFeGVjLT5tX2xvY2FsU3RvcmFn
ZSkKICAgICAsIG1fc2NvcGVDaGFpbihjYWxsaW5nRXhlYy0+bV9zY29wZUNoYWluKQogICAgICwg
bV92YXJpYWJsZU9iamVjdChjYWxsaW5nRXhlYy0+bV92YXJpYWJsZU9iamVjdCkKLSAgICAsIG1f
dGhpc1ZhbChjYWxsaW5nRXhlYy0+bV90aGlzVmFsKQorICAgICwgbV90aGlzVmFsdWUoY2FsbGlu
Z0V4ZWMtPm1fdGhpc1ZhbHVlKQogICAgICwgbV9pdGVyYXRpb25EZXB0aCgwKQogICAgICwgbV9z
d2l0Y2hEZXB0aCgwKSAKICAgICAsIG1fY29kZVR5cGUoRXZhbENvZGUpCkBAIC04OSw5ICs4Nyw5
IEBAIEV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBnbG9iYWxP
YmplY3QtPnNldEN1cnJlbnRFeGVjKHRoaXMpOwogfQogCi1FeGVjU3RhdGU6OkV4ZWNTdGF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGhpc09iamVjdCwgCi0gICAg
ICAgICAgICAgICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHlOb2RlLCBFeGVj
U3RhdGUqIGNhbGxpbmdFeGVjLAotICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25JbXAqIGZ1
bmMsIGNvbnN0IExpc3QmIGFyZ3MpCitpbmxpbmUgRXhlY1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRoaXNPYmplY3QsIAorICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5Tm9kZSwgRXhlY1N0YXRlKiBjYWxsaW5nRXhl
YywKKyAgICAgICAgIEZ1bmN0aW9uSW1wKiBmdW5jLCBjb25zdCBMaXN0JiBhcmdzKQogICAgIDog
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICwgbV9leGNlcHRpb24oMCkKICAgICAs
IG1fcHJvcGVydHlOYW1lcyhjYWxsaW5nRXhlYy0+bV9wcm9wZXJ0eU5hbWVzKQpAQCAtMTAyLDcg
KzEwMCw3IEBAIEV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAs
IG1fZnVuY3Rpb24oZnVuYykKICAgICAsIG1fYXJndW1lbnRzKCZhcmdzKQogICAgICwgbV9zY29w
ZUNoYWluKGZ1bmMtPnNjb3BlKCkpCi0gICAgLCBtX3RoaXNWYWwodGhpc09iamVjdCkKKyAgICAs
IG1fdGhpc1ZhbHVlKHRoaXNPYmplY3QpCiAgICAgLCBtX2l0ZXJhdGlvbkRlcHRoKDApCiAgICAg
LCBtX3N3aXRjaERlcHRoKDApIAogICAgICwgbV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCkBAIC0x
MTUsMTIgKzExMyw4IEBAIEV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG8K
ICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFeGVjKHRoaXMpOwogfQogCi1FeGVjU3RhdGU6
On5FeGVjU3RhdGUoKQoraW5saW5lIEV4ZWNTdGF0ZTo6fkV4ZWNTdGF0ZSgpCiB7Ci0gICAgaWYg
KG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmIG1fYWN0aXZhdGlvbi0+bmVlZHNQb3AoKSkK
LSAgICAgICAgbV9nbG9iYWxPYmplY3QtPnBvcEFjdGl2YXRpb24oKTsKLSAgICAKLSAgICBtX2ds
b2JhbE9iamVjdC0+c2V0Q3VycmVudEV4ZWMobV9zYXZlZEV4ZWMpOwogfQogCiB2b2lkIEV4ZWNT
dGF0ZTo6bWFyaygpCkBAIC0xMzEsMTQgKzEyNSw0MiBAQCB2b2lkIEV4ZWNTdGF0ZTo6bWFyaygp
CiAKIEpTR2xvYmFsT2JqZWN0KiBFeGVjU3RhdGU6OmxleGljYWxHbG9iYWxPYmplY3QoKSBjb25z
dAogewotICAgIGlmIChzY29wZUNoYWluKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZHlu
YW1pY0dsb2JhbE9iamVjdCgpOwotICAgIAotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzY29wZUNo
YWluKCkuYm90dG9tKCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IG1fc2NvcGVDaGFpbi5ib3R0
b20oKTsKICAgICBpZiAob2JqZWN0ICYmIG9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICByZXR1
cm4gbV9nbG9iYWxPYmplY3Q7Cit9CiAKLSAgICByZXR1cm4gZHluYW1pY0dsb2JhbE9iamVjdCgp
OworR2xvYmFsRXhlY1N0YXRlOjpHbG9iYWxFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSkK
KyAgICA6IEV4ZWNTdGF0ZShnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb2dyYW1Ob2RlKQor
ewogfQogCitHbG9iYWxFeGVjU3RhdGU6On5HbG9iYWxFeGVjU3RhdGUoKQoreworfQorCitFdmFs
RXhlY1N0YXRlOjpFdmFsRXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2
YWxOb2RlKiBldmFsTm9kZSwgRXhlY1N0YXRlKiBjYWxsaW5nRXhlYykKKyAgICA6IEV4ZWNTdGF0
ZShnbG9iYWxPYmplY3QsIGV2YWxOb2RlLCBjYWxsaW5nRXhlYykKK3sKK30KKworRXZhbEV4ZWNT
dGF0ZTo6fkV2YWxFeGVjU3RhdGUoKQoreworICAgIG1fZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50
RXhlYyhtX3NhdmVkRXhlYyk7Cit9CisKK0Z1bmN0aW9uRXhlY1N0YXRlOjpGdW5jdGlvbkV4ZWNT
dGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGhpc09iamVjdCwg
CisgICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHlOb2RlLCBFeGVjU3RhdGUq
IGNhbGxpbmdFeGVjLAorICAgICAgICAgRnVuY3Rpb25JbXAqIGZ1bmMsIGNvbnN0IExpc3QmIGFy
Z3MpCisgICAgOiBFeGVjU3RhdGUoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBmdW5jdGlvbkJv
ZHlOb2RlLCBjYWxsaW5nRXhlYywgZnVuYywgYXJncykKK3sKK30KKworRnVuY3Rpb25FeGVjU3Rh
dGU6On5GdW5jdGlvbkV4ZWNTdGF0ZSgpCit7CisgICAgaWYgKG1fYWN0aXZhdGlvbi0+bmVlZHNQ
b3AoKSkKKyAgICAgICAgbV9nbG9iYWxPYmplY3QtPnBvcEFjdGl2YXRpb24oKTsKKyAgICBtX2ds
b2JhbE9iamVjdC0+c2V0Q3VycmVudEV4ZWMobV9zYXZlZEV4ZWMpOworfQogfSAvLyBuYW1lc3Bh
Y2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5oCShyZXZpc2lvbiAyOTQ0OSkKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMjIgKzIxLDE3
IEBACiAgKgogICovCiAKLSNpZm5kZWYgRXhlY1N0YXRlX0gKLSNkZWZpbmUgRXhlY1N0YXRlX0gK
KyNpZm5kZWYgRXhlY1N0YXRlX2gKKyNkZWZpbmUgRXhlY1N0YXRlX2gKIAogI2luY2x1ZGUgIkxh
YmVsU3RhY2suaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJjb21wbGV0
aW9uLmgiCisjaW5jbHVkZSAibGlzdC5oIgogI2luY2x1ZGUgInNjb3BlX2NoYWluLmgiCi0jaW5j
bHVkZSAidHlwZXMuaCIKIAogbmFtZXNwYWNlIEtKUyAgewogCi0gICAgZW51bSBDb2RlVHlwZSB7
Ci0gICAgICAgIEdsb2JhbENvZGUsCi0gICAgICAgIEV2YWxDb2RlLAotICAgICAgICBGdW5jdGlv
bkNvZGUsCi0gICAgfTsKLSAgICAKICAgICBjbGFzcyBBY3RpdmF0aW9uSW1wOwogICAgIGNsYXNz
IENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV2YWxOb2RlOwpAQCAtNDcsMjcgKzQyLDE4
IEBAIG5hbWVzcGFjZSBLSlMgIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFz
cyBKU1ZhcmlhYmxlT2JqZWN0OwogICAgIGNsYXNzIFByb2dyYW1Ob2RlOwotICAgIGNsYXNzIFNj
b3BlQ2hhaW47CiAgICAgY2xhc3MgU2NvcGVOb2RlOwotICAgIHN0cnVjdCBMb2NhbFN0b3JhZ2VF
bnRyeTsKICAgICAKLSAgICAvKioKLSAgICAgKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHN0YXRl
IG9mIHNjcmlwdCBleGVjdXRpb24uIFRoaXMgaXMKLSAgICAgKiBwYXNzZWQgYXMgdGhlIGZpcnN0
IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgotICAgICAqLwotICAgIGNsYXNzIEV4ZWNTdGF0
ZSB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBJbnRlcnByZXRlcjsKLSAgICAgICAgZnJpZW5kIGNs
YXNzIEZ1bmN0aW9uSW1wOwotICAgICAgICBmcmllbmQgY2xhc3MgR2xvYmFsRnVuY0ltcDsKKyAg
ICBlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9Owor
ICAgIAorICAgIC8vIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1
dGlvbi4KKyAgICAvLyBQYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rp
b25zLgorICAgIGNsYXNzIEV4ZWNTdGF0ZSA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIC8qKgotICAgICAgICAgKiBSZXR1cm5zIHRoZSBnbG9iYWwgb2JqZWN0IHRoYXQgd2Fz
IGluIHNjb3BlIHdoZW4gdGhlIGN1cnJlbnQgc2NyaXB0IHN0YXJ0ZWQgZXhlY3V0aW5nLgotICAg
ICAgICAgKi8KKyAgICAgICAgLy8gR2xvYmFsIG9iamVjdCB0aGF0IHdhcyBpbiBzY29wZSB3aGVu
IHRoZSBjdXJyZW50IHNjcmlwdCBzdGFydGVkIGV4ZWN1dGluZy4KICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVj
dDsgfQogICAgICAgICAKLSAgICAgICAgLyoqCi0gICAgICAgICAqIFJldHVybnMgdGhlIGdsb2Jh
bCBvYmplY3QgdGhhdCB3YXMgaW4gc2NvcGUgd2hlbiB0aGUgY3VycmVudCBib2R5IG9mIGNvZGUg
d2FzIGRlZmluZWQuCi0gICAgICAgICAqLworICAgICAgICAvLyBHbG9iYWwgb2JqZWN0IHRoYXQg
d2FzIGluIHNjb3BlIHdoZW4gdGhlIGN1cnJlbnQgYm9keSBvZiBjb2RlIHdhcyBkZWZpbmVkLgog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0OwogICAg
ICAgICAgICAgICAgIAogICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbihKU1ZhbHVlKiBlKSB7IG1f
ZXhjZXB0aW9uID0gZTsgfQpAQCAtNzcsMTUgKzYzLDE2IEBAIG5hbWVzcGFjZSBLSlMgIHsKICAg
ICAgICAgYm9vbCBoYWRFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiAhIW1fZXhjZXB0aW9uOyB9
CiAgICAgICAgIAogICAgICAgICBjb25zdCBTY29wZUNoYWluJiBzY29wZUNoYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9zY29wZUNoYWluOyB9CisgICAgICAgIHZvaWQgcHVzaFNjb3BlKEpTT2JqZWN0
KiBzKSB7IG1fc2NvcGVDaGFpbi5wdXNoKHMpOyB9CisgICAgICAgIHZvaWQgcG9wU2NvcGUoKSB7
IG1fc2NvcGVDaGFpbi5wb3AoKTsgfQogICAgICAgICB2b2lkIHJlcGxhY2VTY29wZUNoYWluVG9w
KEpTT2JqZWN0KiBvKSB7IG1fc2NvcGVDaGFpbi5yZXBsYWNlVG9wKG8pOyB9CiAgICAgICAgIAog
ICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiB2YXJpYWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFyaWFibGVPYmplY3Q7IH0KICAgICAgICAgdm9pZCBzZXRWYXJpYWJsZU9iamVjdChKU1Zh
cmlhYmxlT2JqZWN0KiB2KSB7IG1fdmFyaWFibGVPYmplY3QgPSB2OyB9CiAgICAgICAgIAotICAg
ICAgICBKU09iamVjdCogdGhpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aGlzVmFsOyB9Cisg
ICAgICAgIEpTT2JqZWN0KiB0aGlzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RoaXNWYWx1ZTsg
fQogICAgICAgICAKICAgICAgICAgRXhlY1N0YXRlKiBjYWxsaW5nRXhlY1N0YXRlKCkgeyByZXR1
cm4gbV9jYWxsaW5nRXhlYzsgfQotICAgICAgICBFeGVjU3RhdGUqIHNhdmVkRXhlYygpIHsgcmV0
dXJuIG1fc2F2ZWRFeGVjOyB9CiAgICAgICAgIAogICAgICAgICBBY3RpdmF0aW9uSW1wKiBhY3Rp
dmF0aW9uT2JqZWN0KCkgeyByZXR1cm4gbV9hY3RpdmF0aW9uOyB9CiAgICAgICAgIHZvaWQgc2V0
QWN0aXZhdGlvbk9iamVjdChBY3RpdmF0aW9uSW1wKiBhKSB7IG1fYWN0aXZhdGlvbiA9IGE7IH0K
QEAgLTk0LDkgKzgxLDcgQEAgbmFtZXNwYWNlIEtKUyAgewogICAgICAgICBGdW5jdGlvbkltcCog
ZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CiAgICAgICAgIGNvbnN0IExp
c3QqIGFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzOyB9CiAgICAgICAgIAot
ICAgICAgICB2b2lkIHB1c2hTY29wZShKU09iamVjdCogcykgeyBtX3Njb3BlQ2hhaW4ucHVzaChz
KTsgfQotICAgICAgICB2b2lkIHBvcFNjb3BlKCkgeyBtX3Njb3BlQ2hhaW4ucG9wKCk7IH0KLSAg
ICAgICAgTGFiZWxTdGFjayogc2VlbkxhYmVscygpIHsgcmV0dXJuICZsczsgfQorICAgICAgICBM
YWJlbFN0YWNrJiBzZWVuTGFiZWxzKCkgeyByZXR1cm4gbV9sYWJlbFN0YWNrOyB9CiAgICAgICAg
IAogICAgICAgICB2b2lkIHB1c2hJdGVyYXRpb24oKSB7IG1faXRlcmF0aW9uRGVwdGgrKzsgfQog
ICAgICAgICB2b2lkIHBvcEl0ZXJhdGlvbigpIHsgbV9pdGVyYXRpb25EZXB0aC0tOyB9CkBAIC0x
NzgsMTMgKzE2MywxMyBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfQogCisgICAgcHJvdGVjdGVkOgogICAgICAgICBFeGVjU3RhdGUoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvZ3JhbU5vZGUqKTsKICAgICAgICAgRXhl
Y1N0YXRlKEpTR2xvYmFsT2JqZWN0KiwgRXZhbE5vZGUqLCBFeGVjU3RhdGUqIGNhbGxpbmdFeGVj
U3RhdGUpOwogICAgICAgICBFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhp
c09iamVjdCwgRnVuY3Rpb25Cb2R5Tm9kZSosCiAgICAgICAgICAgICBFeGVjU3RhdGUqIGNhbGxp
bmdFeGVjU3RhdGUsIEZ1bmN0aW9uSW1wKiwgY29uc3QgTGlzdCYgYXJncyk7CiAgICAgICAgIH5F
eGVjU3RhdGUoKTsKIAotICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEV4ZWNTdGF0ZXMgYXJlIGFs
d2F5cyBzdGFjay1hbGxvY2F0ZWQsIGFuZCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKICAgICAgICAg
Ly8gbWFya3MgdGhlIHN0YWNrLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHByb3RlY3QgdGhlIG9iamVj
dHMgYmVsb3cgZnJvbSBHQy4KIApAQCAtMjA0LDkgKzE4OSw5IEBAIG5hbWVzcGFjZSBLSlMgIHsK
IAogICAgICAgICBTY29wZUNoYWluIG1fc2NvcGVDaGFpbjsKICAgICAgICAgSlNWYXJpYWJsZU9i
amVjdCogbV92YXJpYWJsZU9iamVjdDsKLSAgICAgICAgSlNPYmplY3QqIG1fdGhpc1ZhbDsKKyAg
ICAgICAgSlNPYmplY3QqIG1fdGhpc1ZhbHVlOwogICAgICAgICAKLSAgICAgICAgTGFiZWxTdGFj
ayBsczsKKyAgICAgICAgTGFiZWxTdGFjayBtX2xhYmVsU3RhY2s7CiAgICAgICAgIGludCBtX2l0
ZXJhdGlvbkRlcHRoOwogICAgICAgICBpbnQgbV9zd2l0Y2hEZXB0aDsKICAgICAgICAgQ29kZVR5
cGUgbV9jb2RlVHlwZTsKQEAgLTIxNSw2ICsyMDAsMjUgQEAgbmFtZXNwYWNlIEtKUyAgewogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBtX2JyZWFrT3JDb250aW51ZVRhcmdldDsKICAgICB9Owog
CisgICAgY2xhc3MgR2xvYmFsRXhlY1N0YXRlIDogcHVibGljIEV4ZWNTdGF0ZSB7CisgICAgcHVi
bGljOgorICAgICAgICBHbG9iYWxFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCog
dGhpc09iamVjdCwgUHJvZ3JhbU5vZGUqKTsKKyAgICAgICAgfkdsb2JhbEV4ZWNTdGF0ZSgpOwor
ICAgIH07CisKKyAgICBjbGFzcyBFdmFsRXhlY1N0YXRlIDogcHVibGljIEV4ZWNTdGF0ZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBFdmFsRXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiwgRXZhbE5v
ZGUqLCBFeGVjU3RhdGUqIGNhbGxpbmdFeGVjU3RhdGUpOworICAgICAgICB+RXZhbEV4ZWNTdGF0
ZSgpOworICAgIH07CisKKyAgICBjbGFzcyBGdW5jdGlvbkV4ZWNTdGF0ZSA6IHB1YmxpYyBFeGVj
U3RhdGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRnVuY3Rpb25FeGVjU3RhdGUoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogdGhpc09iamVjdCwgRnVuY3Rpb25Cb2R5Tm9kZSosCisgICAgICAg
ICAgICBFeGVjU3RhdGUqIGNhbGxpbmdFeGVjU3RhdGUsIEZ1bmN0aW9uSW1wKiwgY29uc3QgTGlz
dCYgYXJncyk7CisgICAgICAgIH5GdW5jdGlvbkV4ZWNTdGF0ZSgpOworICAgIH07CisKIH0gLy8g
bmFtZXNwYWNlIEtKUwogCi0jZW5kaWYgLy8gRXhlY1N0YXRlX0gKKyNlbmRpZiAvLyBFeGVjU3Rh
dGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAy
OTQ0OSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDcgKzczLDggQEAgc3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5lZWRlZChK
U1ZhbHVlKgogLy8gUmV0dXJucyB0aGUgY3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcwogLy8g
SXQgZG9lc24ndCBtYXR0ZXIgd2hhdCAiY3VycmVudCB0aW1lIiBpcyBoZXJlLCBqdXN0IGFzIGxv
bmcgYXMKIC8vIGl0J3MgcG9zc2libGUgdG8gbWVhc3VyZSB0aGUgdGltZSBkaWZmZXJlbmNlIGNv
cnJlY3RseS4KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZ2V0Q3VycmVudFRpbWUoKSB7CitzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGdldEN1cnJlbnRUaW1lKCkKK3sKICNpZiBIQVZFKFNZU19USU1F
X0gpCiAgICAgc3RydWN0IHRpbWV2YWwgdHY7CiAgICAgZ2V0dGltZW9mZGF5KCZ0diwgMCk7CkBA
IC01MjYsOCArNTI3LDcgQEAgQWN0aXZhdGlvbkltcCogSlNHbG9iYWxPYmplY3Q6OnB1c2hBY3Rp
dgogICAgIAogICAgIFN0YWNrQWN0aXZhdGlvbiogc3RhY2tFbnRyeSA9ICZkKCktPmFjdGl2YXRp
b25zLT5kYXRhW2QoKS0+YWN0aXZhdGlvbkNvdW50KytdOwogICAgIHN0YWNrRW50cnktPmFjdGl2
YXRpb25TdG9yYWdlLmluaXQoZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJuICYoc3RhY2tFbnRyeS0+
YWN0aXZhdGlvblN0b3JhZ2UpOworICAgIHJldHVybiAmc3RhY2tFbnRyeS0+YWN0aXZhdGlvblN0
b3JhZ2U7CiB9CiAKIGlubGluZSB2b2lkIEpTR2xvYmFsT2JqZWN0OjpjaGVja0FjdGl2YXRpb25D
b3VudCgpCkBAIC01NDgsMjIgKzU0OCwyNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpwb3BBY3Rp
dmF0aW9uKCkKIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6dGVhck9mZkFjdGl2YXRpb24oRXhlY1N0
YXRlKiBleGVjLCBib29sIGxlYXZlUmVsaWMpCiB7Ci0gICAgaWYgKGV4ZWMtPmNvZGVUeXBlKCkg
PT0gRnVuY3Rpb25Db2RlICYmIHN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihleGVjLT5hY3Rp
dmF0aW9uT2JqZWN0KCkpLT5pc09uU3RhY2soKSkgewotICAgICAgICBBY3RpdmF0aW9uSW1wKiBv
bGRBY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPmFjdGl2YXRp
b25PYmplY3QoKSk7Ci0gICAgICAgIEFjdGl2YXRpb25JbXAqIG5ld0FjdGl2YXRpb24gPSBuZXcg
QWN0aXZhdGlvbkltcCgqb2xkQWN0aXZhdGlvbi0+ZCgpLCBsZWF2ZVJlbGljKTsKLSAgICAgICAg
Ci0gICAgICAgIGlmICghbGVhdmVSZWxpYykgewotICAgICAgICAgICAgY2hlY2tBY3RpdmF0aW9u
Q291bnQoKTsKLSAgICAgICAgICAgIGQoKS0+YWN0aXZhdGlvbkNvdW50LS07Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIG9sZEFjdGl2YXRpb24tPmQoKS0+bG9jYWxTdG9yYWdlLnNocmlu
aygwKTsKLSAgICAgICAgCi0gICAgICAgIGV4ZWMtPnNldEFjdGl2YXRpb25PYmplY3QobmV3QWN0
aXZhdGlvbik7Ci0gICAgICAgIGV4ZWMtPnNldFZhcmlhYmxlT2JqZWN0KG5ld0FjdGl2YXRpb24p
OwotICAgICAgICBleGVjLT5zZXRMb2NhbFN0b3JhZ2UoJihuZXdBY3RpdmF0aW9uLT5sb2NhbFN0
b3JhZ2UoKSkpOwotICAgICAgICBleGVjLT5yZXBsYWNlU2NvcGVDaGFpblRvcChuZXdBY3RpdmF0
aW9uKTsKKyAgICBBY3RpdmF0aW9uSW1wKiBvbGRBY3RpdmF0aW9uID0gZXhlYy0+YWN0aXZhdGlv
bk9iamVjdCgpOworICAgIGlmICghb2xkQWN0aXZhdGlvbiB8fCAhb2xkQWN0aXZhdGlvbi0+aXNP
blN0YWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChleGVjLT5jb2RlVHlwZSgp
ID09IEZ1bmN0aW9uQ29kZSk7CisgICAgQWN0aXZhdGlvbkltcCogbmV3QWN0aXZhdGlvbiA9IG5l
dyBBY3RpdmF0aW9uSW1wKCpvbGRBY3RpdmF0aW9uLT5kKCksIGxlYXZlUmVsaWMpOworICAgIAor
ICAgIGlmICghbGVhdmVSZWxpYykgeworICAgICAgICBjaGVja0FjdGl2YXRpb25Db3VudCgpOwor
ICAgICAgICBkKCktPmFjdGl2YXRpb25Db3VudC0tOwogICAgIH0KKyAgICAKKyAgICBvbGRBY3Rp
dmF0aW9uLT5kKCktPmxvY2FsU3RvcmFnZS5zaHJpbmsoMCk7CisgICAgCisgICAgZXhlYy0+c2V0
QWN0aXZhdGlvbk9iamVjdChuZXdBY3RpdmF0aW9uKTsKKyAgICBleGVjLT5zZXRWYXJpYWJsZU9i
amVjdChuZXdBY3RpdmF0aW9uKTsKKyAgICBleGVjLT5zZXRMb2NhbFN0b3JhZ2UoJm5ld0FjdGl2
YXRpb24tPmxvY2FsU3RvcmFnZSgpKTsKKyAgICBleGVjLT5yZXBsYWNlU2NvcGVDaGFpblRvcChu
ZXdBY3RpdmF0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjk0NDkpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgICAgICAgIERlYnVnZ2VyKiBkZWJ1Z2dlcjsKICAgICAgICAgICAg
IENvbXBhdE1vZGUgY29tcGF0TW9kZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgRXhlY1N0
YXRlIGdsb2JhbEV4ZWM7CisgICAgICAgICAgICBHbG9iYWxFeGVjU3RhdGUgZ2xvYmFsRXhlYzsK
ICAgICAgICAgICAgIEV4ZWNTdGF0ZSogY3VycmVudEV4ZWM7CiAgICAgICAgICAgICBpbnQgcmVj
dXJzaW9uOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI5NDQ5KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIEZ1bmN0aW9uSW1wOjptYXJrKCkKIAogSlNWYWx1ZSogRnVuY3Rpb25J
bXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNv
bnN0IExpc3QmIGFyZ3MpCiB7Ci0gICAgRXhlY1N0YXRlIG5ld0V4ZWMoZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpLCB0aGlzT2JqLCBib2R5LmdldCgpLCBleGVjLCB0aGlzLCBhcmdzKTsKKyAg
ICBGdW5jdGlvbkV4ZWNTdGF0ZSBuZXdFeGVjKGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSwg
dGhpc09iaiwgYm9keS5nZXQoKSwgZXhlYywgdGhpcywgYXJncyk7CiAgICAgSlNWYWx1ZSogcmVz
dWx0ID0gYm9keS0+ZXhlY3V0ZSgmbmV3RXhlYyk7CiAgICAgaWYgKG5ld0V4ZWMuY29tcGxldGlv
blR5cGUoKSA9PSBUaHJvdykgewogICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24ocmVzdWx0KTsK
QEAgLTc1NCw3ICs3NTQsNyBAQCBKU1ZhbHVlKiBHbG9iYWxGdW5jSW1wOjpjYWxsQXNGdW5jdGlv
bihFCiAgICAgICAgICAgICBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPnRlYXJPZmZBY3Rp
dmF0aW9uKGV4ZWMpOwogICAgICAgICAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHN3aXRjaEdsb2JhbCA/IHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odGhpc09i
aikgOiBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIEV4ZWNTdGF0ZSBuZXdF
eGVjKGdsb2JhbE9iamVjdCwgZXZhbE5vZGUuZ2V0KCksIGV4ZWMpOworICAgICAgICBFdmFsRXhl
Y1N0YXRlIG5ld0V4ZWMoZ2xvYmFsT2JqZWN0LCBldmFsTm9kZS5nZXQoKSwgZXhlYyk7CiAgICAg
ICAgICAgCiAgICAgICAgIGlmIChzd2l0Y2hHbG9iYWwpIHsKICAgICAgICAgICAgIG5ld0V4ZWMu
cHVzaFNjb3BlKHRoaXNPYmopOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAyOTQ0OSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBDb21wbGV0aW9uIEludGVycHJldGVyOjpl
dmFsdWF0ZShFeGVjU3RhCiAgICAgICAgIHJlcyA9IENvbXBsZXRpb24oVGhyb3csIGV4ZWMtPmV4
Y2VwdGlvbigpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgY29kZQotICAg
ICAgICBFeGVjU3RhdGUgbmV3RXhlYyhnbG9iYWxPYmplY3QsIHRoaXNPYmosIHByb2dOb2RlLmdl
dCgpKTsKKyAgICAgICAgR2xvYmFsRXhlY1N0YXRlIG5ld0V4ZWMoZ2xvYmFsT2JqZWN0LCB0aGlz
T2JqLCBwcm9nTm9kZS5nZXQoKSk7CiAgICAgICAgIEpTVmFsdWUqIHZhbHVlID0gcHJvZ05vZGUt
PmV4ZWN1dGUoJm5ld0V4ZWMpOwogICAgICAgICByZXMgPSBDb21wbGV0aW9uKG5ld0V4ZWMuY29t
cGxldGlvblR5cGUoKSwgdmFsdWUpOwogICAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9u
b2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkocmV2
aXNpb24gMjk0NDkpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDEzLDExICsxMDEzLDExIEBAIEpTVmFsdWUqIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjppbmxpbmUKICAgICAgIGFyZ3MtPmV2YWx1YXRlTGlzdChleGVjLCBhcmdMaXN0KTsKICAg
ICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAgICAgICAgIAotICAgICAgSlNPYmplY3QgKnRo
aXNPYmogPSBiYXNlOworICAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBiYXNlOwogICAgICAgLy8g
RUNNQSAxMS4yLjMgc2F5cyB0aGF0IGluIHRoaXMgc2l0dWF0aW9uIHRoZSB0aGlzIHZhbHVlIHNo
b3VsZCBiZSBudWxsLgogICAgICAgLy8gSG93ZXZlciwgc2VjdGlvbiAxMC4yLjMgc2F5cyB0aGF0
IGluIHRoZSBjYXNlIHdoZXJlIHRoZSB2YWx1ZSBwcm92aWRlZAogICAgICAgLy8gYnkgdGhlIGNh
bGxlciBpcyBudWxsLCB0aGUgZ2xvYmFsIG9iamVjdCBzaG91bGQgYmUgdXNlZC4gSXQgYWxzbyBz
YXlzCi0gICAgICAvLyB0aGF0IHRoZSBzZWN0aW9uIGRvZXMgbm90IGFwcGx5IHRvIGludGVyYWwg
ZnVuY3Rpb25zLCBidXQgZm9yIHNpbXBsaWNpdHkKKyAgICAgIC8vIHRoYXQgdGhlIHNlY3Rpb24g
ZG9lcyBub3QgYXBwbHkgdG8gaW50ZXJuYWwgZnVuY3Rpb25zLCBidXQgZm9yIHNpbXBsaWNpdHkK
ICAgICAgIC8vIG9mIGltcGxlbWVudGF0aW9uIHdlIHVzZSB0aGUgZ2xvYmFsIG9iamVjdCBhbnl3
YXkgaGVyZS4gVGhpcyBndWFyYW50ZWVzCiAgICAgICAvLyB0aGF0IGluIGhvc3Qgb2JqZWN0cyB5
b3UgYWx3YXlzIGdldCBhIHZhbGlkIG9iamVjdCBmb3IgdGhpcy4KICAgICAgIGlmICh0aGlzT2Jq
LT5pc0FjdGl2YXRpb25PYmplY3QoKSkKQEAgLTM5NTMsNyArMzk1Myw3IEBAIEpTVmFsdWUqIENv
bnRpbnVlTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUKIHsKICAgaWYgKGlkZW50LmlzRW1wdHkoKSAm
JiAhZXhlYy0+aW5JdGVyYXRpb24oKSkKICAgICByZXR1cm4gc2V0RXJyb3JDb21wbGV0aW9uKGV4
ZWMsIFN5bnRheEVycm9yLCAiSW52YWxpZCBjb250aW51ZSBzdGF0ZW1lbnQuIik7Ci0gIGlmICgh
aWRlbnQuaXNFbXB0eSgpICYmICFleGVjLT5zZWVuTGFiZWxzKCktPmNvbnRhaW5zKGlkZW50KSkK
KyAgaWYgKCFpZGVudC5pc0VtcHR5KCkgJiYgIWV4ZWMtPnNlZW5MYWJlbHMoKS5jb250YWlucyhp
ZGVudCkpCiAgICAgcmV0dXJuIHNldEVycm9yQ29tcGxldGlvbihleGVjLCBTeW50YXhFcnJvciwg
IkxhYmVsICVzIG5vdCBmb3VuZC4iLCBpZGVudCk7CiAgIHJldHVybiBleGVjLT5zZXRDb250aW51
ZUNvbXBsZXRpb24oJmlkZW50KTsKIH0KQEAgLTM5NjUsNyArMzk2NSw3IEBAIEpTVmFsdWUqIEJy
ZWFrTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKmUKIHsKICAgaWYgKGlkZW50LmlzRW1wdHkoKSAm
JiAhZXhlYy0+aW5JdGVyYXRpb24oKSAmJiAhZXhlYy0+aW5Td2l0Y2goKSkKICAgICByZXR1cm4g
c2V0RXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiSW52YWxpZCBicmVhayBzdGF0
ZW1lbnQuIik7Ci0gIGlmICghaWRlbnQuaXNFbXB0eSgpICYmICFleGVjLT5zZWVuTGFiZWxzKCkt
PmNvbnRhaW5zKGlkZW50KSkKKyAgaWYgKCFpZGVudC5pc0VtcHR5KCkgJiYgIWV4ZWMtPnNlZW5M
YWJlbHMoKS5jb250YWlucyhpZGVudCkpCiAgICAgcmV0dXJuIHNldEVycm9yQ29tcGxldGlvbihl
eGVjLCBTeW50YXhFcnJvciwgIkxhYmVsICVzIG5vdCBmb3VuZC4iKTsKICAgcmV0dXJuIGV4ZWMt
PnNldEJyZWFrQ29tcGxldGlvbigmaWRlbnQpOwogfQpAQCAtNDE2MCwxMCArNDE2MCwxMCBAQCB2
b2lkIExhYmVsTm9kZTo6b3B0aW1pemVWYXJpYWJsZUFjY2VzcyhTCiAvLyBFQ01BIDEyLjEyCiBK
U1ZhbHVlKiBMYWJlbE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKQogewotICBpZiAoIWV4
ZWMtPnNlZW5MYWJlbHMoKS0+cHVzaChsYWJlbCkpCisgIGlmICghZXhlYy0+c2VlbkxhYmVscygp
LnB1c2gobGFiZWwpKQogICAgIHJldHVybiBzZXRFcnJvckNvbXBsZXRpb24oZXhlYywgU3ludGF4
RXJyb3IsICJEdXBsaWNhdGVkIGxhYmVsICVzIGZvdW5kLiIsIGxhYmVsKTsKICAgSlNWYWx1ZSog
cmVzdWx0ID0gc3RhdGVtZW50LT5leGVjdXRlKGV4ZWMpOwotICBleGVjLT5zZWVuTGFiZWxzKCkt
PnBvcCgpOworICBleGVjLT5zZWVuTGFiZWxzKCkucG9wKCk7CiAKICAgaWYgKGV4ZWMtPmNvbXBs
ZXRpb25UeXBlKCkgPT0gQnJlYWsgJiYgZXhlYy0+YnJlYWtPckNvbnRpbnVlVGFyZ2V0KCkgPT0g
bGFiZWwpCiAgICAgZXhlYy0+c2V0Q29tcGxldGlvblR5cGUoTm9ybWFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18424</attachid>
            <date>2008-01-13 11:18:41 -0800</date>
            <delta_ts>2008-01-25 13:09:24 -0800</delta_ts>
            <desc>patch (revised with a tiny change to pass all tests)</desc>
            <filename>ActivationPatch.txt</filename>
            <type>text/plain</type>
            <size>28977</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5NDUwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzcgQEAKKzIwMDgtMDEtMTMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4NjAKKyAgICAgICAgICBhIGJpdCBvZiBjbGVhbnVwIGFmdGVyIHRoZSBBY3RpdmF0aW9uIG9w
dGltaXphdGlvbgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOiBFeHBvcnQgdGhlIEds
b2JhbEV4ZWNTdGF0ZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIHRoZSBnbG9iYWwg
Zmxhdm9yIG9mIHRoZSBFeGVjU3RhdGUgY29uc3RydWN0b3IuIEl0J2QgcHJvYmFibHkgYmUgY2xl
YW5lcgorICAgICAgICB0byBub3QgZXhwb3J0IGVpdGhlciBvbmUsIGJ1dCBKU0dsb2JhbE9iamVj
dCBpbmxpbmVzIHRoZSBjb2RlIHRoYXQKKyAgICAgICAgY29uc3RydWN0cyB0aGUgRXhlY1N0YXRl
LiBJZiB3ZSBjaGFuZ2VkIHRoYXQsIHdlIGNvdWxkIHJlbW92ZSB0aGlzIGV4cG9ydC4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlLXNvcnRl
ZCBhIGZldyB0aGluZ3MgYW5kCisgICAgICAgIHB1dCB0aGUgbmV3IHNvdXJjZSBmaWxlcyBpbnRv
IHRoZSBranMgZ3JvdXAgcmF0aGVyIHRoYW4gYXQgdGhlIHRvcCBsZXZlbC4KKworICAgICAgICAq
IGtqcy9FeGVjU3RhdGUuY3BwOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6OkV4ZWNTdGF0ZSk6
IE1hcmtlZCBpbmxpbmUgYW5kIHVwZGF0ZWQgZm9yIGRhdGEgbWVtYmVyCisgICAgICAgIG5hbWUg
Y2hhbmdlcy4gVGhpcyBpcyBub3cgb25seSBmb3IgdXNlIGZvciB0aGUgZGVyaXZlZCBjbGFzc2Vz
LiBBbHNvIHJlbW92ZWQKKyAgICAgICAgY29kZSB0aGF0IHNldHMgdGhlIHVudXNlZCBtX3NhdmVk
RXhlYyBkYXRhIG1lbWJlciBmb3IgdGhlIGdsb2JhbCBjYXNlLiBUaGF0CisgICAgICAgIGRhdGEg
bWVtYmVyIGlzIG9ubHkgdXNlZCBmb3IgdGhlIG90aGVyIHR3byB0eXBlcy4KKyAgICAgICAgKEtK
Uzo6RXhlY1N0YXRlOjp+RXhlY1N0YXRlKTogTWFya2VkIGlubGluZSBhbmQgcmVtb3ZlZCBhbGwg
dGhlIGNvZGUuCisgICAgICAgIFRoZSBkZXJpdmVkIGNsYXNzIGRlc3RydWN0b3JzIG5vdyBpbmNs
ZGUgdGhlIGFwcHJvcHJpYXRlIGNvZGUuCisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6bGV4aWNh
bEdsb2JhbE9iamVjdCk6IFJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlIGZvcgorICAgICAg
ICBhbiBlbXB0eSBzY29wZSBjaGFpbi4gVGhlIGJvdHRvbSBmdW5jdGlvbiBhbHJlYWR5IHJldHVy
bnMgMCBmb3IgdGhhdCBjYXNlLAorICAgICAgICBzbyB0aGUgZ2VuZXJhbCBjYXNlIGNvZGUgaGFu
ZGxlcyBpdCBmaW5lLiBBbHNvIGNoYW5nZWQgdG8gdXNlIGRhdGEgbWVtYmVycworICAgICAgICBk
aXJlY3RseSByYXRoZXIgdGhhbiBjYWxsaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKEtKUzo6R2xv
YmFsRXhlY1N0YXRlOjpHbG9iYWxFeGVjU3RhdGUpOiBBZGRlZC4gQ2FsbHMgdGhyb3VnaCB0byB0
aGUgYmFzZQorICAgICAgICBjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEtKUzo6R2xvYmFs
RXhlY1N0YXRlOjp+R2xvYmFsRXhlY1N0YXRlKTogQWRkZWQuCisgICAgICAgIChLSlM6OkV2YWxF
eGVjU3RhdGU6OkV2YWxFeGVjU3RhdGUpOiBBZGRlZC4gQ2FsbHMgdGhyb3VnaCB0byB0aGUgYmFz
ZSBjbGFzcworICAgICAgICBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEtKUzo6RXZhbEV4ZWNTdGF0
ZTo6fkV2YWxFeGVjU3RhdGUpOiBBZGRlZC4gQ29udGFpbnMgdGhlIGNhbGwgdG8gcmVzdG9yZQor
ICAgICAgICB0aGUgY3VycmVudEV4ZWMgb24gdGhlIGdsb2JhbCBvYmplY3QsIGJlY2F1c2UgdGhh
dCdzIG5vdCBuZWVkZWQgZm9yIGEKKyAgICAgICAgR2xvYmFsRXhlY1N0YXRlLCBzbyBzaG91bGRu
J3QgYmUgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIChLSlM6OkZ1bmN0aW9uRXhlY1N0YXRl
OjpGdW5jdGlvbkV4ZWNTdGF0ZSk6IEFkZGVkLiBDYWxscyB0aHJvdWdoIHRvIHRoZQorICAgICAg
ICBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yLgorICAgICAgICAoS0pTOjpGdW5jdGlvbkV4ZWNTdGF0
ZTo6fkZ1bmN0aW9uRXhlY1N0YXRlKTogQWRkZWQuIENvbnRhaW5zIGFsbCB0aGUgY29kZQorICAg
ICAgICB0aGF0IHdhcyBmb3JtZXJseSBpbiB+RXhlY1N0YXRlLCBidXQgd2l0aG91dCBoYXZpbmcg
dG8gY2hlY2sgbV9jb2RlVHlwZS4KKworICAgICAgICAqIGtqcy9FeGVjU3RhdGUuaDogVHdlYWtl
ZCB0aGUgaGVhZGVyLCBpbmNsdWRlcywgYW5kIGRlY2xhcmF0aW9ucyBhIGJpdC4KKyAgICAgICAg
TWFkZSBFeGVjU3RhdGUgaW5oZXJpdCBmcm9tIE5vbmNvcHlhYmxlLiBSZWZvcm1hdHRlZCBzb21l
IGNvbW1lbnRzIGFuZAorICAgICAgICBtYWRlIHRoZW0gYSBiaXQgbW9yZSBicmllZi4gUmVhcnJh
bmdlZCBkZWNsYXJhdGlvbnMgYSBsaXR0bGUgYml0IGFuZCByZW1vdmVkCisgICAgICAgIHVudXNl
ZCBzYXZlZEV4ZWMgZnVuY3Rpb24uIENoYW5nZWQgc2VlbkxhYmVscyBmdW5jdGlvbiB0byByZXR1
cm4gYSByZWZlcmVuY2UKKyAgICAgICAgcmF0aGVyIHRoYW4gYSBwb2ludGVyLiBNYWRlIGNvbnN0
cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvciBwcm90ZWN0ZWQsIGFuZCBhbHNvCisgICAgICAgIGRpZCB0
aGUgc2FtZSB3aXRoIGFsbCBkYXRhIG1lbWJlcnMuIFJlbmFtZWQgbV90aGlzVmFsIHRvIG1fdGhp
c1ZhbHVlIGFuZAorICAgICAgICBscyB0byBtX2xhYmVsU3RhY2suIEFkZGVkIHRocmVlIG5ldyBk
ZXJpdmVkIGNsYXNzZXMgZm9yIGVhY2ggb2YgdGhlCisgICAgICAgIHR5cGVzIG9mIEV4ZWNTdGF0
ZS4gVGhlIHByaW1hcnkgZ29hbCBoZXJlIHdhcyB0byByZW1vdmUgYSBicmFuY2ggZnJvbSB0aGUK
KyAgICAgICAgY29kZSBpbiB0aGUgZGVzdHJ1Y3RvciwgYnV0IGl0J3MgYWxzbyBjbGVhcmVyIHRo
YW4gb3ZlcmxvYWRpbmcgdGhlIGFyZ3VtZW50cworICAgICAgICB0byB0aGUgRXhlY1N0YXRlIGNv
bnN0cnVjdG9yLgorCisgICAgICAgICoga2pzL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEtKUzo6Z2V0Q3VycmVudFRpbWUpOiBGaXhlZCBmb3JtYXR0aW5nLgorICAgICAgICAoS0pTOjpK
U0dsb2JhbE9iamVjdDo6cHVzaEFjdGl2YXRpb24pOiBSZW1vdmVkIHBhcmVudGhlc2VzIHRoYXQg
ZG9uJ3QgbWFrZQorICAgICAgICB0aGUgZXhwcmVzc2lvbiBjbGVhcmVyIC0tIG90aGVyIHNpbWls
YXIgc2l0ZXMgZGlkbid0IGhhdmUgdGhlc2UgcGFyZW50aGVzZXMsCisgICAgICAgIGV2ZW4gdGhl
IG9uZSBhIGNvdXBsZSBsaW5lcyBlYXJsaWVyIHRoYXQgc2V0cyBzdGFja0VudHJ5LgorICAgICAg
ICAoS0pTOjpKU0dsb2JhbE9iamVjdDo6dGVhck9mZkFjdGl2YXRpb24pOiBHb3QgcmlkIG9mIHVu
bmVlZGVkIHN0YXRpY19jYXN0CisgICAgICAgIChJIHRoaW5rIEkgbWVudGlvbmVkIHRoaXMgZHVy
aW5nIHBhdGNoIHJldmlldykgYW5kIHVzZWQgYW4gZWFybHkgZXhpdCBzbyB0aGF0CisgICAgICAg
IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZ1bmN0aW9uIGFyZW4ndCBuZXN0ZWQgaW5zaWRl
IGFuIGlmIHN0YXRlbWVudC4KKyAgICAgICAgQWxzbyByZW1vdmVkIHRoZSBjaGVjayBvZiBjb2Rl
VHlwZSwgaW5zdGVhZCBjaGVja2luZyBBY3RpdmF0aW9uIGZvciAwLgorICAgICAgICBGb3Igbm93
LCBJIGtlcHQgdGhlIGNvZGVUeXBlIGNoZWNrLCBidXQgaW5zaWRlIGFuIGFzc2VydGlvbi4KKwor
ICAgICAgICAqIGtqcy9KU0dsb2JhbE9iamVjdC5oOiBDaGFuZ2VkIHR5cGUgb2YgZ2xvYmFsRXhl
YyB0byBHbG9iYWxFeGVjU3RhdGUuCisgICAgICAgICoga2pzL2Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEtKUzo6RnVuY3Rpb25JbXA6OmNhbGxBc0Z1bmN0aW9uKTogQ2hhbmdlZCB0eXBlIHRvIEZ1
bmN0aW9uRXhlY1N0YXRlLgorICAgICAgICAoS0pTOjpHbG9iYWxGdW5jSW1wOjpjYWxsQXNGdW5j
dGlvbik6IENoYW5nZWQgdHlwZSB0byBFdmFsRXhlY1N0YXRlLgorICAgICAgICAqIGtqcy9pbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChLSlM6OkludGVycHJldGVyOjpldmFsdWF0ZSk6IENoYW5n
ZWQgdHlwZSB0byBHbG9iYWxFeGVjU3RhdGUuCisKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgor
ICAgICAgICAoS0pTOjpDb250aW51ZU5vZGU6OmV4ZWN1dGUpOiBDaGFuZ2VkIGNvZGUgc2luY2Ug
c2VlbkxhYmVscygpIHJldHVybnMgYQorICAgICAgICByZWZlcmVuY2Ugbm93IGluc3RlYWQgb2Yg
YSBwb2ludGVyLgorICAgICAgICAoS0pTOjpCcmVha05vZGU6OmV4ZWN1dGUpOiBEaXR0by4KKyAg
ICAgICAgKEtKUzo6TGFiZWxOb2RlOjpleGVjdXRlKTogRGl0dG8uCisKIDIwMDgtMDEtMTMgIE1p
Y2hhZWwgR29kZGFyZCAgPG1pY2hhZWwuZ29kZGFyZEB0cm9sbHRlY2guY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDI5NDQ5KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNiArMTUwLDcgQEAgX19aTjNLSlMxNFN0cmluZ0lu
c3RhbmNlM3B1dEVQTlNfOUV4ZWNTdAogX19aTjNLSlMxNFN0cmluZ0luc3RhbmNlNGluZm9FCiBf
X1pOM0tKUzE0U3RyaW5nSW5zdGFuY2VDMUVQTlNfOEpTT2JqZWN0RVJLTlNfN1VTdHJpbmdFCiBf
X1pOM0tKUzE0U3RyaW5nSW5zdGFuY2VDMkVQTlNfOEpTT2JqZWN0RVJLTlNfN1VTdHJpbmdFCitf
X1pOM0tKUzE1R2xvYmFsRXhlY1N0YXRlQzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzhKU09i
amVjdEVQTlNfMTFQcm9ncmFtTm9kZUUKIF9fWk4zS0pTMTVKU1dyYXBwZXJPYmplY3Q0bWFya0V2
CiBfX1pOM0tKUzE1U2F2ZWRQcm9wZXJ0aWVzQzFFdgogX19aTjNLSlMxNVNhdmVkUHJvcGVydGll
c0QxRXYKQEAgLTIzMSw4ICsyMzIsNiBAQCBfX1pOM0tKUzlDb2xsZWN0b3I0c2l6ZUV2CiBfX1pO
M0tKUzlDb2xsZWN0b3I3Y29sbGVjdEV2CiBfX1pOM0tKUzlDb2xsZWN0b3I3cHJvdGVjdEVQTlNf
N0pTVmFsdWVFCiBfX1pOM0tKUzlDb2xsZWN0b3I5dW5wcm90ZWN0RVBOU183SlNWYWx1ZUUKLV9f
Wk4zS0pTOUV4ZWNTdGF0ZUMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU184SlNPYmplY3RFUE5T
XzExUHJvZ3JhbU5vZGVFCi1fX1pOM0tKUzlFeGVjU3RhdGVEMUV2CiBfX1pOM0tKU2VxRVJLTlNf
N1VTdHJpbmdFUEtjCiBfX1pOM1dURjEwZmFzdENhbGxvY0VtbQogX19aTjNXVEYxMGZhc3RNYWxs
b2NFbQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTQ0OSkKKysrIEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTUzMSw4ICs1MzEsOCBAQAogCQk3MDczQkUzRDA1ODEyOTFFMDA1RUUyQzkgLyogcnVu
dGltZV9hcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBydW50aW1lX2FycmF5Lmg7IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX2FycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNzBCMTZBMjYwNTY5
QTEwOTAwREI3NTZEIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHJ1bnRpbWVfb2JqZWN0LmNwcDsgcGF0
aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB9OwogCQk3MEIxNkEyNzA1NjlBMTA5MDBEQjc1NkQgLyogcnVudGltZV9v
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gcnVudGltZV9vYmplY3QuaDsgcGF0aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJN0UyQzZDOTUwRDMxQzZB
QjAwMkQ0NEUyIC8qIEFjdGl2YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQWN0aXZhdGlvbi5oOyBwYXRoID0ga2pzL0FjdGl2YXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUyIC8qIHNjb3BlX2NoYWluX21h
cmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc2NvcGVfY2hhaW5fbWFyay5o
OyBwYXRoID0ga2pzL3Njb3BlX2NoYWluX21hcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0UyQzZDOTUwRDMxQzZBQjAwMkQ0NEUyIC8qIEFjdGl2YXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3RTJDNkM5ODBEMzFDNkI2MDAyRDQ0RTIgLyogc2NvcGVfY2hhaW5fbWFyay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzY29wZV9jaGFpbl9tYXJrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QUJGMURFMDcwQjYyOEMwMEEzQUMwNSAvKiBu
cHJ1bnRpbWVfaW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IG5wcnVudGltZV9pbXBsLmg7IHBhdGggPSBiaW5kaW5ncy9ucHJ1bnRpbWVfaW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkzMDNGNTY3
MDk5MTE4RkEwMEFENzFCOCAvKiBPd25QdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT3duUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDNGNTY5MDk5
MTE5MDAwMEFENzFCOCAvKiBOb25jb3B5YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb25jb3B5YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjkw
LDE3ICs2OTAsMTUgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIEphdmFTY3JpcHRD
b3JlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk3RTJD
NkM5ODBEMzFDNkI2MDAyRDQ0RTIgLyogc2NvcGVfY2hhaW5fbWFyay5oICovLAotCQkJCTdFMkM2
Qzk1MEQzMUM2QUIwMDJENDRFMiAvKiBBY3RpdmF0aW9uLmggKi8sCiAJCQkJOTM3QjYzQ0MwOUU3
NjZEMjAwQTY3MUREIC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCiAJCQkJMTRCOEVDQTYwQTU2
NTM5ODAwNjJCRTU0IC8qIEphdmFTY3JpcHRDb3JlLmV4cCAqLywKIAkJCQlGNUMyOTBFNjAyODRG
OThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKLQkJCQkxNDEyMTEwMDBB
NDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8sCi0JCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlG
IC8qIEFQSSAqLywKLQkJCQk2NTQxNzIwMDAzOUUwMUJBMDA1OEJGRUIgLyoga2pzICovLAogCQkJ
CTY1MTYyRUYxMDhFNkEyMUMwMDc1NTZDRCAvKiB3dGYgKi8sCi0JCQkJNTE4NTZEOTUwNTYyRUU5
QzAwOEI5RDgzIC8qIGJpbmRpbmdzICovLAogCQkJCTY1NDE3MjAzMDM5RTAxRjkwMDU4QkZFQiAv
KiBwY3JlICovLAorCQkJCTY1NDE3MjAwMDM5RTAxQkEwMDU4QkZFQiAvKiBranMgKi8sCisJCQkJ
NTE4NTZEOTUwNTYyRUU5QzAwOEI5RDgzIC8qIGJpbmRpbmdzICovLAorCQkJCTE0MzJFQkQ3MEEz
NENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCisJCQkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8q
IHRlc3RzICovLAogCQkJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8sCiAJCQkJOTMyRkMzQzIwODI0QkI3MDAwNUIzQzc1IC8qIFJlc291cmNlcyAqLywKIAkJ
CQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCkBAIC05MzAsNyArOTI4
LDcgQEAKIAkJNjU0MTcyMDAwMzlFMDFCQTAwNThCRkVCIC8qIGtqcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMTRGMjUyNjAwRDA4REYyRjAwNEVDRkZG
IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovLAorCQkJCTdFMkM2Qzk1MEQzMUM2QUIwMDJENDRF
MiAvKiBBY3RpdmF0aW9uLmggKi8sCiAJCQkJNjU5MTI2QkMwQkREMTcyODAwMTkyMUZCIC8qIEFs
bEluT25lRmlsZS5jcHAgKi8sCiAJCQkJOTNBREZDRTYwQ0NCRDdBQzAwRDMwQjA4IC8qIGFycmF5
X2luc3RhbmNlLmNwcCAqLywKIAkJCQk5Mzg3NzJFNTAzOEJGRTE5MDA4NjM1Q0UgLyogYXJyYXlf
aW5zdGFuY2UuaCAqLywKQEAgLTk3OCw2ICs5NzYsNyBAQAogCQkJCTY1RUE0QzlBMDkyQUY5RTIw
MDkzRDgwMCAvKiBKU0xvY2suaCAqLywKIAkJCQkxNEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYgLyog
SlNUeXBlLmggKi8sCiAJCQkJMTQ4MkI2RUEwQTQzMDBCMzAwNTE3Q0ZDIC8qIEpTVmFsdWVSZWYu
aCAqLywKKwkJCQkxNEYyNTI2MDBEMDhERjJGMDA0RUNGRkYgLyogSlNWYXJpYWJsZU9iamVjdC5j
cHAgKi8sCiAJCQkJMTRGMjUyNTYwRDA4REQ4RDAwNEVDRkZGIC8qIEpTVmFyaWFibGVPYmplY3Qu
aCAqLywKIAkJCQk2NUM3QTE3MTBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmNw
cCAqLywKIAkJCQk2NUM3QTE3MjBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0Lmgg
Ki8sCkBAIC0xMDE5LDYgKzEwMTgsNyBAQAogCQkJCTE0QkQ1MzRBMEEzRTBBRUEwMEJBRjU5QyAv
KiBTYXZlZEJ1aWx0aW5zLmggKi8sCiAJCQkJOTM3NEQzQTgwMzhEOUQ3NDAwODYzNUNFIC8qIHNj
b3BlX2NoYWluLmNwcCAqLywKIAkJCQk5Mzc0RDNBNzAzOEQ5RDc0MDA4NjM1Q0UgLyogc2NvcGVf
Y2hhaW4uaCAqLywKKwkJCQk3RTJDNkM5ODBEMzFDNkI2MDAyRDQ0RTIgLyogc2NvcGVfY2hhaW5f
bWFyay5oICovLAogCQkJCUY2OTJBODdGMDI1NTU5N0QwMUZGNjBGNyAvKiBzdHJpbmdfb2JqZWN0
LmNwcCAqLywKIAkJCQlGNjkyQTg4MDAyNTU1OTdEMDFGRjYwRjcgLyogc3RyaW5nX29iamVjdC5o
ICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovLApA
QCAtMTEzNSw2ICsxMTM1LDggQEAKIAkJCQkxNDgyQjZFQjBBNDMwMEIzMDA1MTdDRkMgLyogSlNW
YWx1ZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRGMjUyNTcwRDA4REQ4RDAwNEVDRkZGIC8q
IEpTVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QzdBMTc0MEE4RUFBQ0Iw
MEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQUE4QjRD
MEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQ0FB
OEI0RDBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMkY1QjYxMDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBN0E1RTAwQ0QxRDUwRTAwMDYxRjhFIC8qIExhYmVsU3RhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1N0VCNzQ2MEI3MDhGNTQwMDYzNDYxQiAvKiBMaXN0SGFz
aFNldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjM4LDggKzEyNDAsNiBAQAogCQkJCTkzRTI2QkZF
MDhCMTUxRDQwMEY4NTIyNiAvKiB1Y3BpbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMy
RjVCNUMwODIyQTFDNzAwNzM2OTc1IC8qIHVzdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
QUJCMzZGMDk5QzA3NjQwMEUyQTI0RiAvKiB2YWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUNB
QThCNEMwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTFDQUE4QjREMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmNwcAkocmV2aXNpb24gMjk0NDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsx
LDggQEAKIC8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQogLyoKLSAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcwogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQxLDIwICs0MCwxOSBAQCBzdGF0aWMgaW5saW5lIExpc3QqIGds
b2JhbEVtcHR5TGlzdCgpCiAKIC8vIEVDTUEgMTAuMgogCi1FeGVjU3RhdGU6OkV4ZWNTdGF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogLyp0aGlzT2JqZWN0Ki8sIFBy
b2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSkKK2lubGluZSBFeGVjU3RhdGU6OkV4ZWNTdGF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogLyp0aGlzT2JqZWN0Ki8sIFByb2dy
YW1Ob2RlKiBwcm9ncmFtTm9kZSkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkK
ICAgICAsIG1fZXhjZXB0aW9uKDApCiAgICAgLCBtX3Byb3BlcnR5TmFtZXMoQ29tbW9uSWRlbnRp
ZmllcnM6OnNoYXJlZCgpKQogICAgICwgbV9lbXB0eUxpc3QoZ2xvYmFsRW1wdHlMaXN0KCkpCiAg
ICAgLCBtX2NhbGxpbmdFeGVjKDApCi0gICAgLCBtX3NhdmVkRXhlYygwKQogICAgICwgbV9zY29w
ZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX2Z1bmN0aW9uKDApCiAgICAgLCBtX2FyZ3VtZW50
cygwKQogICAgICwgbV9hY3RpdmF0aW9uKDApCiAgICAgLCBtX2xvY2FsU3RvcmFnZSgmZ2xvYmFs
T2JqZWN0LT5sb2NhbFN0b3JhZ2UoKSkKICAgICAsIG1fdmFyaWFibGVPYmplY3QoZ2xvYmFsT2Jq
ZWN0KQotICAgICwgbV90aGlzVmFsKGdsb2JhbE9iamVjdCkKKyAgICAsIG1fdGhpc1ZhbHVlKGds
b2JhbE9iamVjdCkKICAgICAsIG1faXRlcmF0aW9uRGVwdGgoMCkKICAgICAsIG1fc3dpdGNoRGVw
dGgoMCkgCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCkBAIC02Nyw3ICs2NSw3IEBAIEV4
ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5zZXRDdXJyZW50RXhlYyh0aGlzKTsKIH0KIAotRXhlY1N0YXRlOjpFeGVjU3RhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZhbE5vZGUqIGV2YWxOb2RlLCBFeGVjU3RhdGUq
IGNhbGxpbmdFeGVjKQoraW5saW5lIEV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEV2YWxOb2RlKiBldmFsTm9kZSwgRXhlY1N0YXRlKiBjYWxsaW5nRXhl
YykKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAsIG1fZXhjZXB0aW9u
KDApCiAgICAgLCBtX3Byb3BlcnR5TmFtZXMoY2FsbGluZ0V4ZWMtPm1fcHJvcGVydHlOYW1lcykK
QEAgLTgxLDcgKzc5LDcgQEAgRXhlY1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGds
bwogICAgICwgbV9sb2NhbFN0b3JhZ2UoY2FsbGluZ0V4ZWMtPm1fbG9jYWxTdG9yYWdlKQogICAg
ICwgbV9zY29wZUNoYWluKGNhbGxpbmdFeGVjLT5tX3Njb3BlQ2hhaW4pCiAgICAgLCBtX3Zhcmlh
YmxlT2JqZWN0KGNhbGxpbmdFeGVjLT5tX3ZhcmlhYmxlT2JqZWN0KQotICAgICwgbV90aGlzVmFs
KGNhbGxpbmdFeGVjLT5tX3RoaXNWYWwpCisgICAgLCBtX3RoaXNWYWx1ZShjYWxsaW5nRXhlYy0+
bV90aGlzVmFsdWUpCiAgICAgLCBtX2l0ZXJhdGlvbkRlcHRoKDApCiAgICAgLCBtX3N3aXRjaERl
cHRoKDApIAogICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKQEAgLTg5LDkgKzg3LDkgQEAgRXhl
Y1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIGdsb2JhbE9iamVjdC0+
c2V0Q3VycmVudEV4ZWModGhpcyk7CiB9CiAKLUV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCAKLSAgICAgICAgICAg
ICAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keU5vZGUsIEV4ZWNTdGF0ZSog
Y2FsbGluZ0V4ZWMsCi0gICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkltcCogZnVuYywgY29u
c3QgTGlzdCYgYXJncykKK2lubGluZSBFeGVjU3RhdGU6OkV4ZWNTdGF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGhpc09iamVjdCwgCisgICAgICAgICBGdW5jdGlv
bkJvZHlOb2RlKiBmdW5jdGlvbkJvZHlOb2RlLCBFeGVjU3RhdGUqIGNhbGxpbmdFeGVjLAorICAg
ICAgICAgRnVuY3Rpb25JbXAqIGZ1bmMsIGNvbnN0IExpc3QmIGFyZ3MpCiAgICAgOiBtX2dsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2V4Y2VwdGlvbigwKQogICAgICwgbV9wcm9w
ZXJ0eU5hbWVzKGNhbGxpbmdFeGVjLT5tX3Byb3BlcnR5TmFtZXMpCkBAIC0xMDIsNyArMTAwLDcg
QEAgRXhlY1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICwgbV9mdW5j
dGlvbihmdW5jKQogICAgICwgbV9hcmd1bWVudHMoJmFyZ3MpCiAgICAgLCBtX3Njb3BlQ2hhaW4o
ZnVuYy0+c2NvcGUoKSkKLSAgICAsIG1fdGhpc1ZhbCh0aGlzT2JqZWN0KQorICAgICwgbV90aGlz
VmFsdWUodGhpc09iamVjdCkKICAgICAsIG1faXRlcmF0aW9uRGVwdGgoMCkKICAgICAsIG1fc3dp
dGNoRGVwdGgoMCkgCiAgICAgLCBtX2NvZGVUeXBlKEZ1bmN0aW9uQ29kZSkKQEAgLTExNSwxMiAr
MTEzLDggQEAgRXhlY1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIGds
b2JhbE9iamVjdC0+c2V0Q3VycmVudEV4ZWModGhpcyk7CiB9CiAKLUV4ZWNTdGF0ZTo6fkV4ZWNT
dGF0ZSgpCitpbmxpbmUgRXhlY1N0YXRlOjp+RXhlY1N0YXRlKCkKIHsKLSAgICBpZiAobV9jb2Rl
VHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9hY3RpdmF0aW9uLT5uZWVkc1BvcCgpKQotICAgICAg
ICBtX2dsb2JhbE9iamVjdC0+cG9wQWN0aXZhdGlvbigpOwotICAgIAotICAgIG1fZ2xvYmFsT2Jq
ZWN0LT5zZXRDdXJyZW50RXhlYyhtX3NhdmVkRXhlYyk7CiB9CiAKIHZvaWQgRXhlY1N0YXRlOjpt
YXJrKCkKQEAgLTEzMSwxNCArMTI1LDQzIEBAIHZvaWQgRXhlY1N0YXRlOjptYXJrKCkKIAogSlNH
bG9iYWxPYmplY3QqIEV4ZWNTdGF0ZTo6bGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKHNjb3BlQ2hhaW4oKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBkeW5hbWljR2xv
YmFsT2JqZWN0KCk7Ci0gICAgCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IHNjb3BlQ2hhaW4oKS5i
b3R0b20oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gbV9zY29wZUNoYWluLmJvdHRvbSgpOwog
ICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOworICAgIHJldHVybiBtX2ds
b2JhbE9iamVjdDsKK30KIAotICAgIHJldHVybiBkeW5hbWljR2xvYmFsT2JqZWN0KCk7CitHbG9i
YWxFeGVjU3RhdGU6Okdsb2JhbEV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlKQorICAgIDog
RXhlY1N0YXRlKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvZ3JhbU5vZGUpCit7CiB9CiAK
K0dsb2JhbEV4ZWNTdGF0ZTo6fkdsb2JhbEV4ZWNTdGF0ZSgpCit7CisgICAgbV9nbG9iYWxPYmpl
Y3QtPnNldEN1cnJlbnRFeGVjKDApOworfQorCitFdmFsRXhlY1N0YXRlOjpFdmFsRXhlY1N0YXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2YWxOb2RlKiBldmFsTm9kZSwgRXhlY1N0
YXRlKiBjYWxsaW5nRXhlYykKKyAgICA6IEV4ZWNTdGF0ZShnbG9iYWxPYmplY3QsIGV2YWxOb2Rl
LCBjYWxsaW5nRXhlYykKK3sKK30KKworRXZhbEV4ZWNTdGF0ZTo6fkV2YWxFeGVjU3RhdGUoKQor
eworICAgIG1fZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50RXhlYyhtX3NhdmVkRXhlYyk7Cit9CisK
K0Z1bmN0aW9uRXhlY1N0YXRlOjpGdW5jdGlvbkV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogdGhpc09iamVjdCwgCisgICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKiBmdW5jdGlvbkJvZHlOb2RlLCBFeGVjU3RhdGUqIGNhbGxpbmdFeGVjLAorICAgICAgICAg
RnVuY3Rpb25JbXAqIGZ1bmMsIGNvbnN0IExpc3QmIGFyZ3MpCisgICAgOiBFeGVjU3RhdGUoZ2xv
YmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBmdW5jdGlvbkJvZHlOb2RlLCBjYWxsaW5nRXhlYywgZnVu
YywgYXJncykKK3sKK30KKworRnVuY3Rpb25FeGVjU3RhdGU6On5GdW5jdGlvbkV4ZWNTdGF0ZSgp
Cit7CisgICAgaWYgKG1fYWN0aXZhdGlvbi0+bmVlZHNQb3AoKSkKKyAgICAgICAgbV9nbG9iYWxP
YmplY3QtPnBvcEFjdGl2YXRpb24oKTsKKyAgICBtX2dsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV4
ZWMobV9zYXZlZEV4ZWMpOworfQogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4
ZWNTdGF0ZS5oCShyZXZpc2lvbiAyOTQ0OSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3Rh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQg
KEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMjIgKzIxLDE3IEBACiAgKgogICovCiAKLSNpZm5kZWYg
RXhlY1N0YXRlX0gKLSNkZWZpbmUgRXhlY1N0YXRlX0gKKyNpZm5kZWYgRXhlY1N0YXRlX2gKKyNk
ZWZpbmUgRXhlY1N0YXRlX2gKIAogI2luY2x1ZGUgIkxhYmVsU3RhY2suaCIKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJjb21wbGV0aW9uLmgiCisjaW5jbHVkZSAibGlzdC5o
IgogI2luY2x1ZGUgInNjb3BlX2NoYWluLmgiCi0jaW5jbHVkZSAidHlwZXMuaCIKIAogbmFtZXNw
YWNlIEtKUyAgewogCi0gICAgZW51bSBDb2RlVHlwZSB7Ci0gICAgICAgIEdsb2JhbENvZGUsCi0g
ICAgICAgIEV2YWxDb2RlLAotICAgICAgICBGdW5jdGlvbkNvZGUsCi0gICAgfTsKLSAgICAKICAg
ICBjbGFzcyBBY3RpdmF0aW9uSW1wOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAg
IGNsYXNzIEV2YWxOb2RlOwpAQCAtNDcsMjcgKzQyLDE4IEBAIG5hbWVzcGFjZSBLSlMgIHsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0OwogICAg
IGNsYXNzIFByb2dyYW1Ob2RlOwotICAgIGNsYXNzIFNjb3BlQ2hhaW47CiAgICAgY2xhc3MgU2Nv
cGVOb2RlOwotICAgIHN0cnVjdCBMb2NhbFN0b3JhZ2VFbnRyeTsKICAgICAKLSAgICAvKioKLSAg
ICAgKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHNjcmlwdCBleGVjdXRpb24uIFRo
aXMgaXMKLSAgICAgKiBwYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rp
b25zLgotICAgICAqLwotICAgIGNsYXNzIEV4ZWNTdGF0ZSB7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBJbnRlcnByZXRlcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEZ1bmN0aW9uSW1wOwotICAgICAg
ICBmcmllbmQgY2xhc3MgR2xvYmFsRnVuY0ltcDsKKyAgICBlbnVtIENvZGVUeXBlIHsgR2xvYmFs
Q29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9OworICAgIAorICAgIC8vIFJlcHJlc2VudHMg
dGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KKyAgICAvLyBQYXNzZWQgYXMg
dGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgorICAgIGNsYXNzIEV4ZWNTdGF0
ZSA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIC8qKgotICAgICAgICAgKiBS
ZXR1cm5zIHRoZSBnbG9iYWwgb2JqZWN0IHRoYXQgd2FzIGluIHNjb3BlIHdoZW4gdGhlIGN1cnJl
bnQgc2NyaXB0IHN0YXJ0ZWQgZXhlY3V0aW5nLgotICAgICAgICAgKi8KKyAgICAgICAgLy8gR2xv
YmFsIG9iamVjdCB0aGF0IHdhcyBpbiBzY29wZSB3aGVuIHRoZSBjdXJyZW50IHNjcmlwdCBzdGFy
dGVkIGV4ZWN1dGluZy4KICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdDsgfQogICAgICAgICAKLSAgICAgICAg
LyoqCi0gICAgICAgICAqIFJldHVybnMgdGhlIGdsb2JhbCBvYmplY3QgdGhhdCB3YXMgaW4gc2Nv
cGUgd2hlbiB0aGUgY3VycmVudCBib2R5IG9mIGNvZGUgd2FzIGRlZmluZWQuCi0gICAgICAgICAq
LworICAgICAgICAvLyBHbG9iYWwgb2JqZWN0IHRoYXQgd2FzIGluIHNjb3BlIHdoZW4gdGhlIGN1
cnJlbnQgYm9keSBvZiBjb2RlIHdhcyBkZWZpbmVkLgogICAgICAgICBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0OwogICAgICAgICAgICAgICAgIAogICAgICAgICB2
b2lkIHNldEV4Y2VwdGlvbihKU1ZhbHVlKiBlKSB7IG1fZXhjZXB0aW9uID0gZTsgfQpAQCAtNzcs
MTUgKzYzLDE2IEBAIG5hbWVzcGFjZSBLSlMgIHsKICAgICAgICAgYm9vbCBoYWRFeGNlcHRpb24o
KSBjb25zdCB7IHJldHVybiAhIW1fZXhjZXB0aW9uOyB9CiAgICAgICAgIAogICAgICAgICBjb25z
dCBTY29wZUNoYWluJiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZUNoYWluOyB9
CisgICAgICAgIHZvaWQgcHVzaFNjb3BlKEpTT2JqZWN0KiBzKSB7IG1fc2NvcGVDaGFpbi5wdXNo
KHMpOyB9CisgICAgICAgIHZvaWQgcG9wU2NvcGUoKSB7IG1fc2NvcGVDaGFpbi5wb3AoKTsgfQog
ICAgICAgICB2b2lkIHJlcGxhY2VTY29wZUNoYWluVG9wKEpTT2JqZWN0KiBvKSB7IG1fc2NvcGVD
aGFpbi5yZXBsYWNlVG9wKG8pOyB9CiAgICAgICAgIAogICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0
KiB2YXJpYWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVPYmplY3Q7IH0KICAg
ICAgICAgdm9pZCBzZXRWYXJpYWJsZU9iamVjdChKU1ZhcmlhYmxlT2JqZWN0KiB2KSB7IG1fdmFy
aWFibGVPYmplY3QgPSB2OyB9CiAgICAgICAgIAotICAgICAgICBKU09iamVjdCogdGhpc1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV90aGlzVmFsOyB9CisgICAgICAgIEpTT2JqZWN0KiB0aGlzVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3RoaXNWYWx1ZTsgfQogICAgICAgICAKICAgICAgICAgRXhl
Y1N0YXRlKiBjYWxsaW5nRXhlY1N0YXRlKCkgeyByZXR1cm4gbV9jYWxsaW5nRXhlYzsgfQotICAg
ICAgICBFeGVjU3RhdGUqIHNhdmVkRXhlYygpIHsgcmV0dXJuIG1fc2F2ZWRFeGVjOyB9CiAgICAg
ICAgIAogICAgICAgICBBY3RpdmF0aW9uSW1wKiBhY3RpdmF0aW9uT2JqZWN0KCkgeyByZXR1cm4g
bV9hY3RpdmF0aW9uOyB9CiAgICAgICAgIHZvaWQgc2V0QWN0aXZhdGlvbk9iamVjdChBY3RpdmF0
aW9uSW1wKiBhKSB7IG1fYWN0aXZhdGlvbiA9IGE7IH0KQEAgLTk0LDkgKzgxLDcgQEAgbmFtZXNw
YWNlIEtKUyAgewogICAgICAgICBGdW5jdGlvbkltcCogZnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uOyB9CiAgICAgICAgIGNvbnN0IExpc3QqIGFyZ3VtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fYXJndW1lbnRzOyB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHB1c2hTY29wZShK
U09iamVjdCogcykgeyBtX3Njb3BlQ2hhaW4ucHVzaChzKTsgfQotICAgICAgICB2b2lkIHBvcFNj
b3BlKCkgeyBtX3Njb3BlQ2hhaW4ucG9wKCk7IH0KLSAgICAgICAgTGFiZWxTdGFjayogc2Vlbkxh
YmVscygpIHsgcmV0dXJuICZsczsgfQorICAgICAgICBMYWJlbFN0YWNrJiBzZWVuTGFiZWxzKCkg
eyByZXR1cm4gbV9sYWJlbFN0YWNrOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIHB1c2hJdGVy
YXRpb24oKSB7IG1faXRlcmF0aW9uRGVwdGgrKzsgfQogICAgICAgICB2b2lkIHBvcEl0ZXJhdGlv
bigpIHsgbV9pdGVyYXRpb25EZXB0aC0tOyB9CkBAIC0xNzgsMTMgKzE2MywxMyBAQCBuYW1lc3Bh
Y2UgS0pTICB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCisgICAgcHJvdGVj
dGVkOgogICAgICAgICBFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09i
amVjdCwgUHJvZ3JhbU5vZGUqKTsKICAgICAgICAgRXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0Kiwg
RXZhbE5vZGUqLCBFeGVjU3RhdGUqIGNhbGxpbmdFeGVjU3RhdGUpOwogICAgICAgICBFeGVjU3Rh
dGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iamVjdCwgRnVuY3Rpb25Cb2R5Tm9k
ZSosCiAgICAgICAgICAgICBFeGVjU3RhdGUqIGNhbGxpbmdFeGVjU3RhdGUsIEZ1bmN0aW9uSW1w
KiwgY29uc3QgTGlzdCYgYXJncyk7CiAgICAgICAgIH5FeGVjU3RhdGUoKTsKIAotICAgIHByaXZh
dGU6CiAgICAgICAgIC8vIEV4ZWNTdGF0ZXMgYXJlIGFsd2F5cyBzdGFjay1hbGxvY2F0ZWQsIGFu
ZCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKICAgICAgICAgLy8gbWFya3MgdGhlIHN0YWNrLCBzbyB3
ZSBkb24ndCBuZWVkIHRvIHByb3RlY3QgdGhlIG9iamVjdHMgYmVsb3cgZnJvbSBHQy4KIApAQCAt
MjA0LDkgKzE4OSw5IEBAIG5hbWVzcGFjZSBLSlMgIHsKIAogICAgICAgICBTY29wZUNoYWluIG1f
c2NvcGVDaGFpbjsKICAgICAgICAgSlNWYXJpYWJsZU9iamVjdCogbV92YXJpYWJsZU9iamVjdDsK
LSAgICAgICAgSlNPYmplY3QqIG1fdGhpc1ZhbDsKKyAgICAgICAgSlNPYmplY3QqIG1fdGhpc1Zh
bHVlOwogICAgICAgICAKLSAgICAgICAgTGFiZWxTdGFjayBsczsKKyAgICAgICAgTGFiZWxTdGFj
ayBtX2xhYmVsU3RhY2s7CiAgICAgICAgIGludCBtX2l0ZXJhdGlvbkRlcHRoOwogICAgICAgICBp
bnQgbV9zd2l0Y2hEZXB0aDsKICAgICAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKQEAgLTIxNSw2
ICsyMDAsMjUgQEAgbmFtZXNwYWNlIEtKUyAgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBt
X2JyZWFrT3JDb250aW51ZVRhcmdldDsKICAgICB9OwogCisgICAgY2xhc3MgR2xvYmFsRXhlY1N0
YXRlIDogcHVibGljIEV4ZWNTdGF0ZSB7CisgICAgcHVibGljOgorICAgICAgICBHbG9iYWxFeGVj
U3RhdGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvZ3JhbU5vZGUq
KTsKKyAgICAgICAgfkdsb2JhbEV4ZWNTdGF0ZSgpOworICAgIH07CisKKyAgICBjbGFzcyBFdmFs
RXhlY1N0YXRlIDogcHVibGljIEV4ZWNTdGF0ZSB7CisgICAgcHVibGljOgorICAgICAgICBFdmFs
RXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiwgRXZhbE5vZGUqLCBFeGVjU3RhdGUqIGNhbGxpbmdF
eGVjU3RhdGUpOworICAgICAgICB+RXZhbEV4ZWNTdGF0ZSgpOworICAgIH07CisKKyAgICBjbGFz
cyBGdW5jdGlvbkV4ZWNTdGF0ZSA6IHB1YmxpYyBFeGVjU3RhdGUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgRnVuY3Rpb25FeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09i
amVjdCwgRnVuY3Rpb25Cb2R5Tm9kZSosCisgICAgICAgICAgICBFeGVjU3RhdGUqIGNhbGxpbmdF
eGVjU3RhdGUsIEZ1bmN0aW9uSW1wKiwgY29uc3QgTGlzdCYgYXJncyk7CisgICAgICAgIH5GdW5j
dGlvbkV4ZWNTdGF0ZSgpOworICAgIH07CisKIH0gLy8gbmFtZXNwYWNlIEtKUwogCi0jZW5kaWYg
Ly8gRXhlY1N0YXRlX0gKKyNlbmRpZiAvLyBFeGVjU3RhdGVfaApJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyOTQ0OSkKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDggQEAg
c3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5lZWRlZChKU1ZhbHVlKgogLy8gUmV0dXJucyB0aGUg
Y3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcwogLy8gSXQgZG9lc24ndCBtYXR0ZXIgd2hhdCAi
Y3VycmVudCB0aW1lIiBpcyBoZXJlLCBqdXN0IGFzIGxvbmcgYXMKIC8vIGl0J3MgcG9zc2libGUg
dG8gbWVhc3VyZSB0aGUgdGltZSBkaWZmZXJlbmNlIGNvcnJlY3RseS4KLXN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgZ2V0Q3VycmVudFRpbWUoKSB7CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGdldEN1
cnJlbnRUaW1lKCkKK3sKICNpZiBIQVZFKFNZU19USU1FX0gpCiAgICAgc3RydWN0IHRpbWV2YWwg
dHY7CiAgICAgZ2V0dGltZW9mZGF5KCZ0diwgMCk7CkBAIC01MjYsOCArNTI3LDcgQEAgQWN0aXZh
dGlvbkltcCogSlNHbG9iYWxPYmplY3Q6OnB1c2hBY3RpdgogICAgIAogICAgIFN0YWNrQWN0aXZh
dGlvbiogc3RhY2tFbnRyeSA9ICZkKCktPmFjdGl2YXRpb25zLT5kYXRhW2QoKS0+YWN0aXZhdGlv
bkNvdW50KytdOwogICAgIHN0YWNrRW50cnktPmFjdGl2YXRpb25TdG9yYWdlLmluaXQoZXhlYyk7
Ci0gICAgCi0gICAgcmV0dXJuICYoc3RhY2tFbnRyeS0+YWN0aXZhdGlvblN0b3JhZ2UpOworICAg
IHJldHVybiAmc3RhY2tFbnRyeS0+YWN0aXZhdGlvblN0b3JhZ2U7CiB9CiAKIGlubGluZSB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpjaGVja0FjdGl2YXRpb25Db3VudCgpCkBAIC01NDgsMjIgKzU0OCwy
NCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpwb3BBY3RpdmF0aW9uKCkKIAogdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBib29sIGxlYXZlUmVs
aWMpCiB7Ci0gICAgaWYgKGV4ZWMtPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIHN0YXRp
Y19jYXN0PEFjdGl2YXRpb25JbXAqPihleGVjLT5hY3RpdmF0aW9uT2JqZWN0KCkpLT5pc09uU3Rh
Y2soKSkgewotICAgICAgICBBY3RpdmF0aW9uSW1wKiBvbGRBY3RpdmF0aW9uID0gc3RhdGljX2Nh
c3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPmFjdGl2YXRpb25PYmplY3QoKSk7Ci0gICAgICAgIEFj
dGl2YXRpb25JbXAqIG5ld0FjdGl2YXRpb24gPSBuZXcgQWN0aXZhdGlvbkltcCgqb2xkQWN0aXZh
dGlvbi0+ZCgpLCBsZWF2ZVJlbGljKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghbGVhdmVSZWxp
YykgewotICAgICAgICAgICAgY2hlY2tBY3RpdmF0aW9uQ291bnQoKTsKLSAgICAgICAgICAgIGQo
KS0+YWN0aXZhdGlvbkNvdW50LS07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG9sZEFj
dGl2YXRpb24tPmQoKS0+bG9jYWxTdG9yYWdlLnNocmluaygwKTsKLSAgICAgICAgCi0gICAgICAg
IGV4ZWMtPnNldEFjdGl2YXRpb25PYmplY3QobmV3QWN0aXZhdGlvbik7Ci0gICAgICAgIGV4ZWMt
PnNldFZhcmlhYmxlT2JqZWN0KG5ld0FjdGl2YXRpb24pOwotICAgICAgICBleGVjLT5zZXRMb2Nh
bFN0b3JhZ2UoJihuZXdBY3RpdmF0aW9uLT5sb2NhbFN0b3JhZ2UoKSkpOwotICAgICAgICBleGVj
LT5yZXBsYWNlU2NvcGVDaGFpblRvcChuZXdBY3RpdmF0aW9uKTsKKyAgICBBY3RpdmF0aW9uSW1w
KiBvbGRBY3RpdmF0aW9uID0gZXhlYy0+YWN0aXZhdGlvbk9iamVjdCgpOworICAgIGlmICghb2xk
QWN0aXZhdGlvbiB8fCAhb2xkQWN0aXZhdGlvbi0+aXNPblN0YWNrKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChleGVjLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CisgICAg
QWN0aXZhdGlvbkltcCogbmV3QWN0aXZhdGlvbiA9IG5ldyBBY3RpdmF0aW9uSW1wKCpvbGRBY3Rp
dmF0aW9uLT5kKCksIGxlYXZlUmVsaWMpOworICAgIAorICAgIGlmICghbGVhdmVSZWxpYykgewor
ICAgICAgICBjaGVja0FjdGl2YXRpb25Db3VudCgpOworICAgICAgICBkKCktPmFjdGl2YXRpb25D
b3VudC0tOwogICAgIH0KKyAgICAKKyAgICBvbGRBY3RpdmF0aW9uLT5kKCktPmxvY2FsU3RvcmFn
ZS5zaHJpbmsoMCk7CisgICAgCisgICAgZXhlYy0+c2V0QWN0aXZhdGlvbk9iamVjdChuZXdBY3Rp
dmF0aW9uKTsKKyAgICBleGVjLT5zZXRWYXJpYWJsZU9iamVjdChuZXdBY3RpdmF0aW9uKTsKKyAg
ICBleGVjLT5zZXRMb2NhbFN0b3JhZ2UoJm5ld0FjdGl2YXRpb24tPmxvY2FsU3RvcmFnZSgpKTsK
KyAgICBleGVjLT5yZXBsYWNlU2NvcGVDaGFpblRvcChuZXdBY3RpdmF0aW9uKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuaAkocmV2
aXNpb24gMjk0NDkpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAg
IERlYnVnZ2VyKiBkZWJ1Z2dlcjsKICAgICAgICAgICAgIENvbXBhdE1vZGUgY29tcGF0TW9kZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgRXhlY1N0YXRlIGdsb2JhbEV4ZWM7CisgICAgICAg
ICAgICBHbG9iYWxFeGVjU3RhdGUgZ2xvYmFsRXhlYzsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSog
Y3VycmVudEV4ZWM7CiAgICAgICAgICAgICBpbnQgcmVjdXJzaW9uOwogCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9mdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI5NDQ5KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEZ1bmN0aW9u
SW1wOjptYXJrKCkKIAogSlNWYWx1ZSogRnVuY3Rpb25JbXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmIGFyZ3MpCiB7Ci0gICAg
RXhlY1N0YXRlIG5ld0V4ZWMoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLCB0aGlzT2JqLCBi
b2R5LmdldCgpLCBleGVjLCB0aGlzLCBhcmdzKTsKKyAgICBGdW5jdGlvbkV4ZWNTdGF0ZSBuZXdF
eGVjKGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSwgdGhpc09iaiwgYm9keS5nZXQoKSwgZXhl
YywgdGhpcywgYXJncyk7CiAgICAgSlNWYWx1ZSogcmVzdWx0ID0gYm9keS0+ZXhlY3V0ZSgmbmV3
RXhlYyk7CiAgICAgaWYgKG5ld0V4ZWMuY29tcGxldGlvblR5cGUoKSA9PSBUaHJvdykgewogICAg
ICAgICBleGVjLT5zZXRFeGNlcHRpb24ocmVzdWx0KTsKQEAgLTc1NCw3ICs3NTQsNyBAQCBKU1Zh
bHVlKiBHbG9iYWxGdW5jSW1wOjpjYWxsQXNGdW5jdGlvbihFCiAgICAgICAgICAgICBleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCktPnRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMpOwogICAgICAgICAK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN3aXRjaEdsb2JhbCA/IHN0
YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odGhpc09iaikgOiBleGVjLT5keW5hbWljR2xvYmFs
T2JqZWN0KCk7Ci0gICAgICAgIEV4ZWNTdGF0ZSBuZXdFeGVjKGdsb2JhbE9iamVjdCwgZXZhbE5v
ZGUuZ2V0KCksIGV4ZWMpOworICAgICAgICBFdmFsRXhlY1N0YXRlIG5ld0V4ZWMoZ2xvYmFsT2Jq
ZWN0LCBldmFsTm9kZS5nZXQoKSwgZXhlYyk7CiAgICAgICAgICAgCiAgICAgICAgIGlmIChzd2l0
Y2hHbG9iYWwpIHsKICAgICAgICAgICAgIG5ld0V4ZWMucHVzaFNjb3BlKHRoaXNPYmopOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyOTQ0OSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsx
MTksNyBAQCBDb21wbGV0aW9uIEludGVycHJldGVyOjpldmFsdWF0ZShFeGVjU3RhCiAgICAgICAg
IHJlcyA9IENvbXBsZXRpb24oVGhyb3csIGV4ZWMtPmV4Y2VwdGlvbigpKTsKICAgICBlbHNlIHsK
ICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgY29kZQotICAgICAgICBFeGVjU3RhdGUgbmV3RXhlYyhn
bG9iYWxPYmplY3QsIHRoaXNPYmosIHByb2dOb2RlLmdldCgpKTsKKyAgICAgICAgR2xvYmFsRXhl
Y1N0YXRlIG5ld0V4ZWMoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqLCBwcm9nTm9kZS5nZXQoKSk7CiAg
ICAgICAgIEpTVmFsdWUqIHZhbHVlID0gcHJvZ05vZGUtPmV4ZWN1dGUoJm5ld0V4ZWMpOwogICAg
ICAgICByZXMgPSBDb21wbGV0aW9uKG5ld0V4ZWMuY29tcGxldGlvblR5cGUoKSwgdmFsdWUpOwog
ICAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkocmV2aXNpb24gMjk0NDkpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvbm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEzLDExICsxMDEzLDEx
IEBAIEpTVmFsdWUqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjppbmxpbmUKICAgICAgIGFyZ3Mt
PmV2YWx1YXRlTGlzdChleGVjLCBhcmdMaXN0KTsKICAgICAgIEtKU19DSEVDS0VYQ0VQVElPTlZB
TFVFCiAgICAgICAgIAotICAgICAgSlNPYmplY3QgKnRoaXNPYmogPSBiYXNlOworICAgICAgSlNP
YmplY3QqIHRoaXNPYmogPSBiYXNlOwogICAgICAgLy8gRUNNQSAxMS4yLjMgc2F5cyB0aGF0IGlu
IHRoaXMgc2l0dWF0aW9uIHRoZSB0aGlzIHZhbHVlIHNob3VsZCBiZSBudWxsLgogICAgICAgLy8g
SG93ZXZlciwgc2VjdGlvbiAxMC4yLjMgc2F5cyB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZSB2
YWx1ZSBwcm92aWRlZAogICAgICAgLy8gYnkgdGhlIGNhbGxlciBpcyBudWxsLCB0aGUgZ2xvYmFs
IG9iamVjdCBzaG91bGQgYmUgdXNlZC4gSXQgYWxzbyBzYXlzCi0gICAgICAvLyB0aGF0IHRoZSBz
ZWN0aW9uIGRvZXMgbm90IGFwcGx5IHRvIGludGVyYWwgZnVuY3Rpb25zLCBidXQgZm9yIHNpbXBs
aWNpdHkKKyAgICAgIC8vIHRoYXQgdGhlIHNlY3Rpb24gZG9lcyBub3QgYXBwbHkgdG8gaW50ZXJu
YWwgZnVuY3Rpb25zLCBidXQgZm9yIHNpbXBsaWNpdHkKICAgICAgIC8vIG9mIGltcGxlbWVudGF0
aW9uIHdlIHVzZSB0aGUgZ2xvYmFsIG9iamVjdCBhbnl3YXkgaGVyZS4gVGhpcyBndWFyYW50ZWVz
CiAgICAgICAvLyB0aGF0IGluIGhvc3Qgb2JqZWN0cyB5b3UgYWx3YXlzIGdldCBhIHZhbGlkIG9i
amVjdCBmb3IgdGhpcy4KICAgICAgIGlmICh0aGlzT2JqLT5pc0FjdGl2YXRpb25PYmplY3QoKSkK
QEAgLTM5NTMsNyArMzk1Myw3IEBAIEpTVmFsdWUqIENvbnRpbnVlTm9kZTo6ZXhlY3V0ZShFeGVj
U3RhdGUKIHsKICAgaWYgKGlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+aW5JdGVyYXRpb24oKSkK
ICAgICByZXR1cm4gc2V0RXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiSW52YWxp
ZCBjb250aW51ZSBzdGF0ZW1lbnQuIik7Ci0gIGlmICghaWRlbnQuaXNFbXB0eSgpICYmICFleGVj
LT5zZWVuTGFiZWxzKCktPmNvbnRhaW5zKGlkZW50KSkKKyAgaWYgKCFpZGVudC5pc0VtcHR5KCkg
JiYgIWV4ZWMtPnNlZW5MYWJlbHMoKS5jb250YWlucyhpZGVudCkpCiAgICAgcmV0dXJuIHNldEVy
cm9yQ29tcGxldGlvbihleGVjLCBTeW50YXhFcnJvciwgIkxhYmVsICVzIG5vdCBmb3VuZC4iLCBp
ZGVudCk7CiAgIHJldHVybiBleGVjLT5zZXRDb250aW51ZUNvbXBsZXRpb24oJmlkZW50KTsKIH0K
QEAgLTM5NjUsNyArMzk2NSw3IEBAIEpTVmFsdWUqIEJyZWFrTm9kZTo6ZXhlY3V0ZShFeGVjU3Rh
dGUgKmUKIHsKICAgaWYgKGlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+aW5JdGVyYXRpb24oKSAm
JiAhZXhlYy0+aW5Td2l0Y2goKSkKICAgICByZXR1cm4gc2V0RXJyb3JDb21wbGV0aW9uKGV4ZWMs
IFN5bnRheEVycm9yLCAiSW52YWxpZCBicmVhayBzdGF0ZW1lbnQuIik7Ci0gIGlmICghaWRlbnQu
aXNFbXB0eSgpICYmICFleGVjLT5zZWVuTGFiZWxzKCktPmNvbnRhaW5zKGlkZW50KSkKKyAgaWYg
KCFpZGVudC5pc0VtcHR5KCkgJiYgIWV4ZWMtPnNlZW5MYWJlbHMoKS5jb250YWlucyhpZGVudCkp
CiAgICAgcmV0dXJuIHNldEVycm9yQ29tcGxldGlvbihleGVjLCBTeW50YXhFcnJvciwgIkxhYmVs
ICVzIG5vdCBmb3VuZC4iKTsKICAgcmV0dXJuIGV4ZWMtPnNldEJyZWFrQ29tcGxldGlvbigmaWRl
bnQpOwogfQpAQCAtNDE2MCwxMCArNDE2MCwxMCBAQCB2b2lkIExhYmVsTm9kZTo6b3B0aW1pemVW
YXJpYWJsZUFjY2VzcyhTCiAvLyBFQ01BIDEyLjEyCiBKU1ZhbHVlKiBMYWJlbE5vZGU6OmV4ZWN1
dGUoRXhlY1N0YXRlICpleGVjKQogewotICBpZiAoIWV4ZWMtPnNlZW5MYWJlbHMoKS0+cHVzaChs
YWJlbCkpCisgIGlmICghZXhlYy0+c2VlbkxhYmVscygpLnB1c2gobGFiZWwpKQogICAgIHJldHVy
biBzZXRFcnJvckNvbXBsZXRpb24oZXhlYywgU3ludGF4RXJyb3IsICJEdXBsaWNhdGVkIGxhYmVs
ICVzIGZvdW5kLiIsIGxhYmVsKTsKICAgSlNWYWx1ZSogcmVzdWx0ID0gc3RhdGVtZW50LT5leGVj
dXRlKGV4ZWMpOwotICBleGVjLT5zZWVuTGFiZWxzKCktPnBvcCgpOworICBleGVjLT5zZWVuTGFi
ZWxzKCkucG9wKCk7CiAKICAgaWYgKGV4ZWMtPmNvbXBsZXRpb25UeXBlKCkgPT0gQnJlYWsgJiYg
ZXhlYy0+YnJlYWtPckNvbnRpbnVlVGFyZ2V0KCkgPT0gbGFiZWwpCiAgICAgZXhlYy0+c2V0Q29t
cGxldGlvblR5cGUoTm9ybWFsKTsK
</data>
<flag name="review"
          id="8053"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>