<?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>21321</bug_id>
          
          <creation_ts>2008-10-02 16:16:47 -0700</creation_ts>
          <short_desc>speed up JavaScriptCore by inlining Heap in JSGlobalData</short_desc>
          <delta_ts>2010-08-29 20:19:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93817</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-02 16:16:47 -0700</bug_when>
    <thetext>There&apos;s no reason that JSGlobalData should have a Heap* -- instead it should just contain the heap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93818</commentid>
    <comment_count>1</comment_count>
      <attachid>24032</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-02 16:22:12 -0700</bug_when>
    <thetext>Created attachment 24032
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93819</commentid>
    <comment_count>2</comment_count>
      <attachid>24032</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-02 16:32:38 -0700</bug_when>
    <thetext>Comment on attachment 24032
patch

Gotta destroy the heap before any other JSGlobalData tear-down happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93823</commentid>
    <comment_count>3</comment_count>
      <attachid>24033</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-02 16:39:33 -0700</bug_when>
    <thetext>Created attachment 24033
patch, with better destruction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93825</commentid>
    <comment_count>4</comment_count>
      <attachid>24033</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-02 16:43:10 -0700</bug_when>
    <thetext>Comment on attachment 24033
patch, with better destruction

-    RefPtr&lt;JSGlobalData&gt; protect(m_globalData);

Put this back and r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93826</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-02 16:49:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/37215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93848</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-02 23:01:49 -0700</bug_when>
    <thetext>The JSGlobalData destructor calls Heap::destroy(), which in turn ref&apos;s JSGlobalData. Normally, this should  cause an assertion in RefPtr::ref(), due to referencing an object that is being destroyed. This doesn&apos;t happen because (1) WebCore never destroys its global data and (2) API clients first destroy the heap in JSGlobalContextRelease(), so Heap::destroy() becomes a no-op.

This is safe in practice and a pre-existing issue (the code already did call Heap destructor from JSGlobalData destructor).

I think that the contract should be that clients should destroy the heap before releasing the last JSGlobalData reference.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24032</attachid>
            <date>2008-10-02 16:22:12 -0700</date>
            <delta_ts>2008-10-02 16:39:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>InlineHeapPatch.txt</filename>
            <type>text/plain</type>
            <size>26315</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMDgtMTAtMDIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzIxCisgICAgICAgICAgQnVnIDIxMzIxOiBzcGVlZCB1cCBKYXZhU2NyaXB0Q29yZSBieSBp
bmxpbmluZyBIZWFwIGluIEpTR2xvYmFsRGF0YQorCisgICAgICAgIDEuMDE5eCBhcyBmYXN0IG9u
IFN1blNwaWRlci4KKworICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAoSlNFdmFs
dWF0ZVNjcmlwdCk6IFVzZSBoZWFwLiBpbnN0ZWFkIG9mIGhlYXAtPiB0byB3b3JrIHdpdGggdGhl
IGhlYXAuCisgICAgICAgIChKU0NoZWNrU2NyaXB0U3ludGF4KTogRGl0dG8uCisgICAgICAgIChK
U0dhcmJhZ2VDb2xsZWN0KTogRGl0dG8uCisgICAgICAgIChKU1JlcG9ydEV4dHJhTWVtb3J5Q29z
dCk6IERpdHRvLgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNH
bG9iYWxDb250ZXh0UmV0YWluKTogRGl0dG8uCisgICAgICAgIChKU0dsb2JhbENvbnRleHRSZWxl
YXNlKTogR2V0IHJpZCBvZiBjb2RlIHRoYXQgZGVsZXRlcyB0aGUgaGVhcCBlYXJseQorICAgICAg
ICBoZXJlIC0tIGp1c3QgbGV0IH5KU0dMb2JhbERhdGEgdGFrZSBjYXJlIG9mIGl0LgorICAgICAg
ICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KTogVXNlIGhlYXAuIGluc3RlYWQgb2YgaGVhcC0+
IHRvIHdvcmsgd2l0aCB0aGUgaGVhcC4KKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgor
ICAgICAgICAoSlNPYmplY3RNYWtlKTogVXNlIGhlYXAuIGluc3RlYWQgb2YgaGVhcC0+IHRvIHdv
cmsgd2l0aCB0aGUgaGVhcC4KKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKTogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2VDb25zdHJ1Y3Rvcik6IERpdHRvLgor
ICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0
TWFrZUFycmF5KTogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2VEYXRlKTogRGl0dG8uCisg
ICAgICAgIChKU09iamVjdE1ha2VFcnJvcik6IERpdHRvLgorICAgICAgICAoSlNPYmplY3RNYWtl
UmVnRXhwKTogRGl0dG8uCisgICAgICAgIChKU09iamVjdEhhc1Byb3BlcnR5KTogRGl0dG8uCisg
ICAgICAgIChKU09iamVjdEdldFByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChKU09iamVjdFNl
dFByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5QXRJbmRleCk6
IERpdHRvLgorICAgICAgICAoSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgpOiBEaXR0by4KKyAg
ICAgICAgKEpTT2JqZWN0RGVsZXRlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0
b3IpOiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOiBEaXR0by4K
KyAgICAgICAgKEpTUHJvcGVydHlOYW1lQWNjdW11bGF0b3JBZGROYW1lKTogRGl0dG8uCisgICAg
ICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUlzRXF1YWwpOiBEaXR0
by4KKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3Rvcik6IERpdHRvLgorICAg
ICAgICAoSlNWYWx1ZU1ha2VOdW1iZXIpOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVNYWtlU3Ry
aW5nKTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVG9OdW1iZXIpOiBEaXR0by4KKyAgICAgICAg
KEpTVmFsdWVUb1N0cmluZ0NvcHkpOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVUb09iamVjdCk6
IERpdHRvLgorICAgICAgICAoSlNWYWx1ZVByb3RlY3QpOiBEaXR0by4KKyAgICAgICAgKEpTVmFs
dWVVbnByb3RlY3QpOiBEaXR0by4KKworICAgICAgICAqIGtqcy9FeGVjU3RhdGUuaDoKKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpoZWFwKTogVXBkYXRlIHRvIHVzZSB0aGUgJiBvcGVyYXRvci4K
KworICAgICAgICAqIGtqcy9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YSk6IFVwZGF0ZSB0byBpbml0aWFsaXplIGEgaGVhcCBtZW1iZXIK
KyAgICAgICAgaW5zdGVhZCBvZiBjYWxpbmcgbmV3IHRvIG1ha2UgYSBoZWFwLgorICAgICAgICAo
SlNDOjpKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEpOiBSZW1vdmUgZGVsZXRpb24gb2YgdGhl
IGhlYXAuCisgICAgICAgICoga2pzL0pTR2xvYmFsRGF0YS5oOiBDaGFuZ2UgZnJvbSBIZWFwKiB0
byBhIEhlYXAuCisgICAgICAgICoga2pzL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6Om1hcmspOiBVc2UgdGhlICYgb3BlcmF0b3IgaGVyZS4KKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om9wZXJhdG9yIG5ldyk6IFVzZSBoZWFwLiBpbnN0ZWFk
IG9mIGhlYXAtPiB0byB3b3JrCisgICAgICAgIHdpdGggdGhlIGhlYXAuCisKIDIwMDgtMTAtMDIg
IENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1z
dGFtcGVkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9u
IDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVmFsdWVSZWYgSlNFdmFs
dWF0ZVNjcmlwdChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51
bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsK
KyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9j
ayBsb2NrKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzVGhpc09iamVjdCA9IHRvSlModGhpc09i
amVjdCk7CkBAIC02OSw3ICs2OSw3IEBAIEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChKU0Nv
bnRleHRSZWYKIGJvb2wgSlNDaGVja1NjcmlwdFN5bnRheChKU0NvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBzY3JpcHQsIEpTU3RyaW5nUmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51
bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsK
KyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9j
ayBsb2NrKGV4ZWMpOwogCiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlw
dC0+dXN0cmluZygpLCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsK
QEAgLTk1LDEyICs5NSwxMSBAQCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXh0UmVmIGN0
eCkKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgSGVhcCogaGVhcCA9IGdsb2Jh
bERhdGEuaGVhcDsKIAogICAgIEpTTG9jayBsb2NrKGdsb2JhbERhdGEuaXNTaGFyZWRJbnN0YW5j
ZSk7CiAKLSAgICBpZiAoIWhlYXAtPmlzQnVzeSgpKQotICAgICAgICBoZWFwLT5jb2xsZWN0KCk7
CisgICAgaWYgKCFnbG9iYWxEYXRhLmhlYXAuaXNCdXN5KCkpCisgICAgICAgIGdsb2JhbERhdGEu
aGVhcC5jb2xsZWN0KCk7CiAKICAgICAvLyBGSVhNRTogUGVyaGFwcyB3ZSBzaG91bGQgdHJpZ2dl
ciBhIHNlY29uZCBtYXJrIGFuZCBzd2VlcAogICAgIC8vIG9uY2UgdGhlIGdhcmJhZ2UgY29sbGVj
dG9yIGlzIGRvbmUgaWYgdGhpcyBpcyBjYWxsZWQgd2hlbgpAQCAtMTEwLDggKzEwOSw4IEBAIHZv
aWQgSlNHYXJiYWdlQ29sbGVjdChKU0NvbnRleHRSZWYgY3R4KQogdm9pZCBKU1JlcG9ydEV4dHJh
TWVtb3J5Q29zdChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lz
dGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQo
KTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhl
YXAucmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemUpOwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgSlNHbG9iYWxD
b250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dFJldGFpbgogCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogCi0gICAgZ2xvYmFsRGF0YS5oZWFwLT5yZWdp
c3RlclRocmVhZCgpOworICAgIGdsb2JhbERhdGEuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogCiAg
ICAgZ2NQcm90ZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiAgICAgZ2xvYmFsRGF0
YS5yZWYoKTsKQEAgLTEwMiwxNyArMTAyLDcgQEAgdm9pZCBKU0dsb2JhbENvbnRleHRSZWxlYXNl
KEpTR2xvYmFsQ29udAogICAgIGdjVW5wcm90ZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSk7CiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7
Ci0gICAgaWYgKGdsb2JhbERhdGEucmVmQ291bnQoKSA9PSAyKSB7IC8vIE9uZSByZWZlcmVuY2Ug
aXMgaGVsZCBieSBKU0dsb2JhbE9iamVjdCwgYW5vdGhlciBhZGRlZCBieSBKU0dsb2JhbENvbnRl
eHRSZXRhaW4oKS4KLSAgICAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHdhcyByZWxlYXNlZCwg
dGhpcyBpcyBvdXIgbGFzdCBjaGFuY2UgdG8gY29sbGVjdC4KLSAgICAgICAgSGVhcCogaGVhcCA9
IGdsb2JhbERhdGEuaGVhcDsKLQotICAgICAgICBBU1NFUlQoIWhlYXAtPnByb3RlY3RlZE9iamVj
dENvdW50KCkpOwotICAgICAgICBBU1NFUlQoIWhlYXAtPmlzQnVzeSgpKTsKLQotICAgICAgICBk
ZWxldGUgaGVhcDsKLSAgICAgICAgZ2xvYmFsRGF0YS5oZWFwID0gMDsKLSAgICB9IGVsc2UKLSAg
ICAgICAgZ2xvYmFsRGF0YS5oZWFwLT5jb2xsZWN0KCk7CisgICAgZ2xvYmFsRGF0YS5oZWFwLmNv
bGxlY3QoKTsKIAogICAgIGdsb2JhbERhdGEuZGVyZWYoKTsKIH0KQEAgLTEyMCw3ICsxMTAsNyBA
QCB2b2lkIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250CiBKU09iamVjdFJlZiBK
U0NvbnRleHRHZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVmIGN0eCkKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lz
dGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQo
KTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBj
YWxsIHRvVGhpc09iamVjdCB0byBnZXQgdGhlIHdyYXBwZXIgb2JqZWN0IHdoZW4gdXNlZCB3aXRo
IFdlYkNvcmUuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDM3
MTk2KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEpTQ2xhc3NSZWxlYXNlKEpTQ2xhc3NSZWYganNDbGFz
cykKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZShKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVm
IGpzQ2xhc3MsIHZvaWQqIGRhdGEpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2so
ZXhlYyk7CiAKICAgICBpZiAoIWpzQ2xhc3MpCkBAIC04OSw3ICs4OSw3IEBAIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZShKU0NvbnRleHRSZWYgY3QKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1
bmN0aW9uV2l0aENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsIEpT
T2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlvbikKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJl
Z2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJl
YWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIElkZW50aWZpZXIgbmFtZUlEID0g
bmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoZXhlYykgOiBJZGVudGlmaWVyKGV4ZWMsICJhbm9ueW1v
dXMiKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlv
bldpdGhDYWxsCiBKU09iamVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1Y3RvcihKU0NvbnRleHRS
ZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxs
YmFjayBjYWxsQXNDb25zdHJ1Y3RvcikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9j
ayhleGVjKTsKIAogICAgIEpTVmFsdWUqIGpzUHJvdG90eXBlID0ganNDbGFzcyAKQEAgLTExNSw3
ICsxMTUsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1Y3RvcihKU0NvCiBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1Jl
ZiBuYW1lLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgY29uc3QgSlNTdHJpbmdSZWYgcGFyYW1l
dGVyTmFtZXNbXSwgSlNTdHJpbmdSZWYgYm9keSwgSlNTdHJpbmdSZWYgc291cmNlVVJMLCBpbnQg
c3RhcnRpbmdMaW5lTnVtYmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdp
c3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFk
KCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBJZGVudGlmaWVyIG5hbWVJRCA9IG5h
bWUgPyBuYW1lLT5pZGVudGlmaWVyKGV4ZWMpIDogSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3Vz
Iik7CkBAIC0xMzgsNyArMTM4LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24o
SlNDb250ZQogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwot
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhl
Yyk7CiAKICAgICBKU09iamVjdCogcmVzdWx0OwpAQCAtMTY0LDcgKzE2NCw3IEBAIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFIKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sICBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdp
c3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFk
KCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBBcmdMaXN0IGFyZ0xpc3Q7CkBAIC0x
ODUsNyArMTg1LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRSZQog
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAg
ICBBcmdMaXN0IGFyZ0xpc3Q7CkBAIC0yMDYsNyArMjA2LDcgQEAgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlRXJyb3IoSlNDb250ZXh0UgogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpT
Q29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCAgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJl
YWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAg
IEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgQXJnTGlzdCBhcmdMaXN0OwpAQCAtMjQxLDcgKzI0
MSw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmLCAKIGJvb2wgSlNP
YmplY3RIYXNQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
U3RyaW5nUmVmIHByb3BlcnR5TmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9j
ayhleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKQEAgLTI1
Miw3ICsyNTIsNyBAQCBib29sIEpTT2JqZWN0SGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0CiBK
U1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhl
YXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEpTT2Jq
ZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKQEAgLTI2OSw3ICsyNjksNyBAQCBKU1ZhbHVl
UmVmIEpTT2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0CiB2b2lkIEpTT2JqZWN0U2V0UHJvcGVy
dHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7Cisg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sg
bG9jayhleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKQEAg
LTI5Myw3ICsyOTMsNyBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0
CiBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVj
LT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxE
YXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAg
ICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwpAQCAtMzExLDcgKzMxMSw3IEBA
IEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlMKIHZvaWQgSlNPYmplY3RT
ZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1
bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChKU0NvbnRleAogYm9vbCBKU09iamVjdERlbGV0
ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdS
ZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3Rl
clRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7
CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pT
KG9iamVjdCk7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBKU09iamVjdElzRnVuY3Rpb24oSlND
b250ZXh0UmVmLCBKUwogSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsK
IAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKQEAgLTQxNiw3ICs0MTYs
NyBAQCBib29sIEpTT2JqZWN0SXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYsCiBKU09iamVjdFJl
ZiBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
IG9iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7Cisg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sg
bG9jayhleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKQEAg
LTQ1NSw3ICs0NTUsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29weVByb3Bl
CiB7CiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0
ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgp
OwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
ID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIEpTUHJvcGVy
dHlOYW1lQWNjdW11bGF0b3JBZGROYW1lKEpTCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkqIHBy
b3BlcnR5TmFtZXMgPSB0b0pTKGFycmF5KTsKIAotICAgIHByb3BlcnR5TmFtZXMtPmdsb2JhbERh
dGEoKS0+aGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBwcm9wZXJ0eU5hbWVzLT5nbG9iYWxE
YXRhKCktPmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhwcm9wZXJ0eU5h
bWVzLT5nbG9iYWxEYXRhKCktPmlzU2hhcmVkSW5zdGFuY2UpOwogCiAgICAgcHJvcGVydHlOYW1l
cy0+YWRkKHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcihwcm9wZXJ0eU5hbWVzLT5nbG9iYWxEYXRh
KCkpKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDM3MTk2KQor
KysgSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsNyArMTEyLDcgQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpTQ29udGV4dFJlZgog
Ym9vbCBKU1ZhbHVlSXNFcXVhbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIGEsIEpTVmFs
dWVSZWYgYiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQo
KTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpT
TG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSlNWYWx1ZSoganNBID0gdG9KUyhhKTsKQEAgLTEzOSw3
ICsxMzksNyBAQCBib29sIEpTVmFsdWVJc1N0cmljdEVxdWFsKEpTQ29udGV4dFJlZiwgCiBib29s
IEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU09iamVjdFJlZiBjb25zdHJ1Y3RvciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxE
YXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVh
cC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSlNWYWx1
ZSoganNWYWx1ZSA9IHRvSlModmFsdWUpOwpAQCAtMTczLDcgKzE3Myw3IEBAIEpTVmFsdWVSZWYg
SlNWYWx1ZU1ha2VCb29sZWFuKEpTQ29udGV4dFIKIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1i
ZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91YmxlIHZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJl
YWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAg
IEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgcmV0dXJuIHRvUmVmKGpzTnVtYmVyKGV4ZWMsIHZh
bHVlKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZU51bWJlcihK
U0NvbnRleHRSZQogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2so
ZXhlYyk7CiAKICAgICByZXR1cm4gdG9SZWYoanNTdHJpbmcoZXhlYywgc3RyaW5nLT51c3RyaW5n
KCkpKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBib29sIEpTVmFsdWVUb0Jvb2xlYW4oSlNDb250ZXh0
UmVmIGN0eCwgCiBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhy
ZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAg
ICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEpTVmFsdWUqIGpzVmFsdWUgPSB0b0pTKHZhbHVl
KTsKQEAgLTIxNiw3ICsyMTYsNyBAQCBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29udGV4dFJl
ZiBjdHgsCiBKU1N0cmluZ1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lz
dGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQo
KTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEpTVmFsdWUqIGpzVmFsdWUgPSB0b0pT
KHZhbHVlKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBKU1N0cmluZ1JlZiBKU1ZhbHVlVG9TdHJpbmdD
b3B5KEpTQ29udGV4CiBKU09iamVjdFJlZiBKU1ZhbHVlVG9PYmplY3QoSlNDb250ZXh0UmVmIGN0
eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVn
aXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVh
ZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSlNWYWx1ZSoganNWYWx1ZSA9IHRv
SlModmFsdWUpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVj
dChKU0NvbnRleHRSZWYKIHZvaWQgSlNWYWx1ZVByb3RlY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNW
YWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsK
IAogICAgIEpTVmFsdWUqIGpzVmFsdWUgPSB0b0pTKHZhbHVlKTsKQEAgLTI2Miw3ICsyNjIsNyBA
QCB2b2lkIEpTVmFsdWVQcm90ZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTCiB2b2lkIEpTVmFsdWVV
bnByb3RlY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJl
Z2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJl
YWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEpTVmFsdWUqIGpzVmFsdWUgPSB0
b0pTKHZhbHVlKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmgJKHJldmlzaW9uIDM3MTk2KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSogcmVnRXhwQ29uc3RydWN0b3JUYWJsZShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGV4ZWMt
Pm1fZ2xvYmFsRGF0YS0+cmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAgICBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlKiBzdHJpbmdUYWJsZShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGV4
ZWMtPm1fZ2xvYmFsRGF0YS0+c3RyaW5nVGFibGU7IH0KIAotICAgICAgICBIZWFwKiBoZWFwKCkg
Y29uc3QgeyByZXR1cm4gbV9nbG9iYWxEYXRhLT5oZWFwOyB9CisgICAgICAgIEhlYXAqIGhlYXAo
KSBjb25zdCB7IHJldHVybiAmbV9nbG9iYWxEYXRhLT5oZWFwOyB9CiAKICAgICBwcml2YXRlOgog
ICAgICAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yIHJlcXVpcmVkIGZvciBnY2MgMy4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw2IEBAIGV4dGVybiBjb25zdCBIYXNoVGFibGUgc3RyaW5nVGFibGU7CiAKIEpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKGJvb2wgaXNTaGFyZWQpCiAgICAgOiBtYWNoaW5lKG5ldyBNYWNoaW5l
KQotICAgICwgaGVhcChuZXcgSGVhcCh0aGlzKSkKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RI
UkVBRFMpCiAgICAgLCBhcnJheVRhYmxlKG5ldyBIYXNoVGFibGUoSlNDOjphcnJheVRhYmxlKSkK
ICAgICAsIGRhdGVUYWJsZShuZXcgSGFzaFRhYmxlKEpTQzo6ZGF0ZVRhYmxlKSkKQEAgLTg5LDE2
ICs4OCwxNSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShib29sIGlzU2hhcmVkCiAgICAg
LCBoZWFkKDApCiAgICAgLCBpc1NoYXJlZEluc3RhbmNlKGlzU2hhcmVkKQogICAgICwgY2xpZW50
RGF0YSgwKQorICAgICwgaGVhcCh0aGlzKQogewogfQogCiBKU0dsb2JhbERhdGE6On5KU0dsb2Jh
bERhdGEoKQogewotICAgIGRlbGV0ZSBoZWFwOwogICAgIGRlbGV0ZSBtYWNoaW5lOwogI2lmbmRl
ZiBOREVCVUcKICAgICAvLyBaZXJvaW5nIG91dCB0byBtYWtlIHRoZSBiZWhhdmlvciBtb3JlIHBy
ZWRpY3RhYmxlIHdoZW4gc29tZW9uZSBhdHRlbXB0cyB0byB1c2UgYSBkZWxldGVkIGluc3RhbmNl
LgotICAgIGhlYXAgPSAwOwogICAgIG1hY2hpbmUgPSAwOwogI2VuZGlmCiAKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsOSBAQAogI2Rl
ZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
ICJjb2xsZWN0b3IuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKIAogc3RydWN0IE9wYXF1
ZUpTQ2xhc3M7CkBAIC02NCw3ICs2Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB+SlNH
bG9iYWxEYXRhKCk7CiAKICAgICAgICAgTWFjaGluZSogbWFjaGluZTsKLSAgICAgICAgSGVhcCog
aGVhcDsKIAogICAgICAgICBjb25zdCBIYXNoVGFibGUqIGFycmF5VGFibGU7CiAgICAgICAgIGNv
bnN0IEhhc2hUYWJsZSogZGF0ZVRhYmxlOwpAQCAtMTA0LDYgKzEwMiw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBhcnJheVZpc2l0ZWRFbGVtZW50czsK
IAorICAgICAgICBIZWFwIGhlYXA7CisKICAgICBwcml2YXRlOgogICAgICAgICBKU0dsb2JhbERh
dGEoYm9vbCBpc1NoYXJlZCA9IGZhbHNlKTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pT
R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9i
YWxPYmplY3QuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjptYXJrKCkKIAogICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlID0g
Z2xvYmFsRGF0YSgpLT5tYWNoaW5lLT5yZWdpc3RlckZpbGUoKTsKICAgICBpZiAocmVnaXN0ZXJG
aWxlLmdsb2JhbE9iamVjdCgpID09IHRoaXMpCi0gICAgICAgIHJlZ2lzdGVyRmlsZS5tYXJrR2xv
YmFscyhnbG9iYWxEYXRhKCktPmhlYXApOworICAgICAgICByZWdpc3RlckZpbGUubWFya0dsb2Jh
bHMoJmdsb2JhbERhdGEoKS0+aGVhcCk7CiAKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5nbG9iYWxF
eGVjLT5leGNlcHRpb24oKSk7CiAKQEAgLTQ0OCw5ICs0NDgsOSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojpjb3B5R2xvYmFsc1RvKFJlZ2lzCiB2b2lkKiBKU0dsb2JhbE9iamVjdDo6b3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAjaWZkZWYgSkFW
QVNDUklQVENPUkVfQlVJTERJTkdfQUxMX0lOX09ORV9GSUxFCi0gICAgcmV0dXJuIGdsb2JhbERh
dGEtPmhlYXAtPmlubGluZUFsbG9jYXRlKHNpemUpOworICAgIHJldHVybiBnbG9iYWxEYXRhLT5o
ZWFwLmlubGluZUFsbG9jYXRlKHNpemUpOwogI2Vsc2UKLSAgICByZXR1cm4gZ2xvYmFsRGF0YS0+
aGVhcC0+YWxsb2NhdGUoc2l6ZSk7CisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmhlYXAuYWxsb2Nh
dGUoc2l6ZSk7CiAjZW5kaWYKIH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MTk2KQorKysgV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOC0xMC0wMiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzMjEKKyAgICAgICAgICBCdWcgMjEzMjE6IHNwZWVkIHVwIEphdmFTY3JpcHRDb3JlIGJ5
IGlubGluaW5nIEhlYXAgaW4gSlNHbG9iYWxEYXRhCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6IFVzZSBoZWFwLiBp
bnN0ZWFkIG9mIGhlYXAtPiB0byB3b3JrIHdpdGggdGhlIGhlYXAuCisgICAgICAgIChXZWJDb3Jl
OjpHQ0NvbnRyb2xsZXI6OmdjVGltZXJGaXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vdyk6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dTaGVsbDo6b3BlcmF0b3IgbmV3KTogRGl0dG8uCisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2UpOiBEaXR0by4KKwog
MjAwOC0xMC0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dD
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdGF0aWMgdm9pZCogY29sbGVjdCh2b2lkKikKIHsKICAgICBKU0xvY2sgbG9jayhm
YWxzZSk7Ci0gICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLT5jb2xs
ZWN0KCk7CisgICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmNvbGxl
Y3QoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzAsMTMgKzcwLDEzIEBAIHZvaWQgR0NDb250
cm9sbGVyOjpnYXJiYWdlQ29sbGVjdFNvb24oKQogdm9pZCBHQ0NvbnRyb2xsZXI6OmdjVGltZXJG
aXJlZChUaW1lcjxHQ0NvbnRyb2xsZXI+KikKIHsKICAgICBKU0xvY2sgbG9jayhmYWxzZSk7Ci0g
ICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLT5jb2xsZWN0KCk7Cisg
ICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmNvbGxlY3QoKTsKIH0K
IAogdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KCkKIHsKICAgICBKU0xvY2sg
bG9jayhmYWxzZSk7Ci0gICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFw
LT5jb2xsZWN0KCk7CisgICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFw
LmNvbGxlY3QoKTsKIH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0T25BbHRl
cm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw3ICsxNTMsNyBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OmNsZWFyKCkKIAogdm9pZCog
SlNET01XaW5kb3dTaGVsbDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKQogewotICAgIHJldHVy
biBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAtPmFsbG9jYXRlKHNpemUp
OworICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuYWxs
b2NhdGUoc2l6ZSk7CiB9CiAKIC8vIC0tLS0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNp
b24gMzcxOTYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjgsNyArMTI4LDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKERvY3VtZW50KiBkb2N1bWVu
dCwgYwogCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgLy8gRGF0YWJhc2Ug
Y29kZSB2aW9sYXRlcyB0aGUgbm9ybWFsIEpTQ29yZSBjb250cmFjdCBieSBjYWxsaW5nIGpzVW5w
cm90ZWN0IGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCBhbmQgdGh1cyBuZWVkcyBhZGRpdGlvbmFs
IGxvY2tpbmcuCi0gICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLT5z
ZXRHQ1Byb3RlY3ROZWVkc0xvY2tpbmcoKTsKKyAgICBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmhlYXAuc2V0R0NQcm90ZWN0TmVlZHNMb2NraW5nKCk7CiAKICAgICBtX2d1aWQg
PSBndWlkRm9yT3JpZ2luQW5kTmFtZShtX3NlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpLCBuYW1l
KTsKIApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MTk2KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOC0xMC0wMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjEK
KyAgICAgICAgICBCdWcgMjEzMjE6IHNwZWVkIHVwIEphdmFTY3JpcHRDb3JlIGJ5IGlubGluaW5n
IEhlYXAgaW4gSlNHbG9iYWxEYXRhCisKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNz
Lm1tOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBqYXZhU2NyaXB0T2JqZWN0c0NvdW50
XSk6IFVzZSBoZWFwLiBpbnN0ZWFkIG9mIGhlYXAtPiB0bworICAgICAgICB3b3JrIHdpdGggdGhl
IGhlYXAuCisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGphdmFTY3JpcHRHbG9iYWxPYmpl
Y3RzQ291bnRdKTogRGl0dG8uCisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGphdmFTY3Jp
cHRQcm90ZWN0ZWRPYmplY3RzQ291bnRdKTogRGl0dG8uCisgICAgICAgICgrW1dlYkNvcmVTdGF0
aXN0aWNzIGphdmFTY3JpcHRQcm90ZWN0ZWRHbG9iYWxPYmplY3RzQ291bnRdKTogRGl0dG8uCisg
ICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBl
Q291bnRzXSk6IERpdHRvLgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBqYXZhU2NyaXB0
UmVmZXJlbmNlZE9iamVjdHNDb3VudF0pOiBEaXR0by4KKwogMjAwOC0xMC0wMSAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyIGFuZCBDYW1lcm9uIFp3YXJpY2guCkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0
YXRpc3RpY3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0
aWNzLm1tCShyZXZpc2lvbiAzNzE5NikKKysrIFdlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlz
dGljcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQsMjUgKzU0LDI1IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogKyAoc2l6ZV90KWphdmFTY3JpcHRPYmplY3RzQ291bnQKIHsKICAgICBKU0xv
Y2sgbG9jayhmYWxzZSk7Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKS0+aGVhcC0+c2l6ZSgpOworICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmhlYXAuc2l6ZSgpOwogfQogCiArIChzaXplX3QpamF2YVNjcmlwdEdsb2JhbE9i
amVjdHNDb3VudAogewogICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKLSAgICByZXR1cm4gSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLT5nbG9iYWxPYmplY3RDb3VudCgpOwor
ICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuZ2xvYmFs
T2JqZWN0Q291bnQoKTsKIH0KIAogKyAoc2l6ZV90KWphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3Rz
Q291bnQKIHsKICAgICBKU0xvY2sgbG9jayhmYWxzZSk7Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93
Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC0+cHJvdGVjdGVkT2JqZWN0Q291bnQoKTsKKyAg
ICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLnByb3RlY3Rl
ZE9iamVjdENvdW50KCk7CiB9CiAKICsgKHNpemVfdClqYXZhU2NyaXB0UHJvdGVjdGVkR2xvYmFs
T2JqZWN0c0NvdW50CiB7CiAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwotICAgIHJldHVybiBKU0RP
TVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAtPnByb3RlY3RlZEdsb2JhbE9iamVj
dENvdW50KCk7CisgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+
aGVhcC5wcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpOwogfQogCiArIChOU0NvdW50ZWRTZXQg
KilqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cwpAQCAtODEsNyArODEsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAKICAgICBOU0NvdW50ZWRTZXQgKnJlc3VsdCA9
IFtOU0NvdW50ZWRTZXQgc2V0XTsKIAotICAgIE93blB0cjxIYXNoQ291bnRlZFNldDxjb25zdCBj
aGFyKj4gPiBjb3VudHMoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLT5w
cm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkpOworICAgIE93blB0cjxIYXNoQ291bnRlZFNldDxj
b25zdCBjaGFyKj4gPiBjb3VudHMoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5o
ZWFwLnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKSk7CiAgICAgSGFzaENvdW50ZWRTZXQ8Y29u
c3QgY2hhcio+OjppdGVyYXRvciBlbmQgPSBjb3VudHMtPmVuZCgpOwogICAgIGZvciAoSGFzaENv
dW50ZWRTZXQ8Y29uc3QgY2hhcio+OjppdGVyYXRvciBpdCA9IGNvdW50cy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXQtPnNlY29u
ZDsgKytpKQpAQCAtMTgxLDcgKzE4MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogKyAo
c2l6ZV90KWphdmFTY3JpcHRSZWZlcmVuY2VkT2JqZWN0c0NvdW50CiB7CiAgICAgSlNMb2NrIGxv
Y2soZmFsc2UpOwotICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkt
PmhlYXAtPnByb3RlY3RlZE9iamVjdENvdW50KCk7CisgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpj
b21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5wcm90ZWN0ZWRPYmplY3RDb3VudCgpOwogfQogCiAr
IChOU1NldCAqKWphdmFTY3JpcHRSb290T2JqZWN0Q2xhc3Nlcwo=
</data>
<flag name="review"
          id="10875"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24033</attachid>
            <date>2008-10-02 16:39:33 -0700</date>
            <delta_ts>2008-10-02 16:43:10 -0700</delta_ts>
            <desc>patch, with better destruction</desc>
            <filename>InlineHeapPatch.txt</filename>
            <type>text/plain</type>
            <size>28326</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MjE0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMDgtMTAtMDIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzIxCisgICAgICAgICAgQnVnIDIxMzIxOiBzcGVlZCB1cCBKYXZhU2NyaXB0Q29yZSBieSBp
bmxpbmluZyBIZWFwIGluIEpTR2xvYmFsRGF0YQorCisgICAgICAgIDEuMDE5eCBhcyBmYXN0IG9u
IFN1blNwaWRlci4KKworICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAoSlNFdmFs
dWF0ZVNjcmlwdCk6IFVzZSBoZWFwLiBpbnN0ZWFkIG9mIGhlYXAtPiB0byB3b3JrIHdpdGggdGhl
IGhlYXAuCisgICAgICAgIChKU0NoZWNrU2NyaXB0U3ludGF4KTogRGl0dG8uCisgICAgICAgIChK
U0dhcmJhZ2VDb2xsZWN0KTogRGl0dG8uCisgICAgICAgIChKU1JlcG9ydEV4dHJhTWVtb3J5Q29z
dCk6IERpdHRvLgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNH
bG9iYWxDb250ZXh0UmV0YWluKTogRGl0dG8uCisgICAgICAgIChKU0dsb2JhbENvbnRleHRSZWxl
YXNlKTogRGVzdHJveSB0aGUgaGVhcCB3aXRoIHRoZSBkZXN0cm95IGZ1bmN0aW9uIGluc3RlYWQK
KyAgICAgICAgb2YgdGhlIGRlbGV0ZSBvcGVyYXRvci4KKyAgICAgICAgKEpTQ29udGV4dEdldEds
b2JhbE9iamVjdCk6IFVzZSBoZWFwLiBpbnN0ZWFkIG9mIGhlYXAtPiB0byB3b3JrIHdpdGggdGhl
IGhlYXAuCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0
TWFrZSk6IFVzZSBoZWFwLiBpbnN0ZWFkIG9mIGhlYXAtPiB0byB3b3JrIHdpdGggdGhlIGhlYXAu
CisgICAgICAgIChKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayk6IERpdHRvLgorICAg
ICAgICAoSlNPYmplY3RNYWtlQ29uc3RydWN0b3IpOiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0
TWFrZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2VBcnJheSk6IERpdHRv
LgorICAgICAgICAoSlNPYmplY3RNYWtlRGF0ZSk6IERpdHRvLgorICAgICAgICAoSlNPYmplY3RN
YWtlRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0TWFrZVJlZ0V4cCk6IERpdHRvLgor
ICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoSlNPYmplY3RTZXRQcm9wZXJ0eSk6IERpdHRv
LgorICAgICAgICAoSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgpOiBEaXR0by4KKyAgICAgICAg
KEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KTogRGl0dG8uCisgICAgICAgIChKU09iamVjdERl
bGV0ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChKU09iamVjdENhbGxBc0Z1bmN0aW9uKTog
RGl0dG8uCisgICAgICAgIChKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKTogRGl0dG8uCisgICAg
ICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKTogRGl0dG8uCisgICAgICAgIChKU1Byb3Bl
cnR5TmFtZUFjY3VtdWxhdG9yQWRkTmFtZSk6IERpdHRvLgorICAgICAgICAqIEFQSS9KU1ZhbHVl
UmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc0VxdWFsKTogRGl0dG8uCisgICAgICAgIChKU1Zh
bHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IpOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVNYWtl
TnVtYmVyKTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlTWFrZVN0cmluZyk6IERpdHRvLgorICAg
ICAgICAoSlNWYWx1ZVRvTnVtYmVyKTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVG9TdHJpbmdD
b3B5KTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVG9PYmplY3QpOiBEaXR0by4KKyAgICAgICAg
KEpTVmFsdWVQcm90ZWN0KTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVW5wcm90ZWN0KTogRGl0
dG8uCisKKyAgICAgICAgKiBranMvRXhlY1N0YXRlLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6aGVhcCk6IFVwZGF0ZSB0byB1c2UgdGhlICYgb3BlcmF0b3IuCisKKyAgICAgICAgKiBranMv
SlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEpOiBVcGRhdGUgdG8gaW5pdGlhbGl6ZSBhIGhlYXAgbWVtYmVyCisgICAgICAgIGluc3RlYWQg
b2YgY2FsbGluZyBuZXcgdG8gbWFrZSBhIGhlYXAuCisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6fkpTR2xvYmFsRGF0YSk6IERlc3Ryb3kgdGhlIGhlYXAgd2l0aCB0aGUgZGVzdHJveQorICAg
ICAgICBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBkZWxldGUgb3BlcmF0b3IuCisgICAgICAgICog
a2pzL0pTR2xvYmFsRGF0YS5oOiBDaGFuZ2UgZnJvbSBIZWFwKiB0byBhIEhlYXAuCisgICAgICAg
ICoga2pzL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
Om1hcmspOiBVc2UgdGhlICYgb3BlcmF0b3IgaGVyZS4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Om9wZXJhdG9yIG5ldyk6IFVzZSBoZWFwLiBpbnN0ZWFkIG9mIGhlYXAtPiB0byB3b3Jr
CisgICAgICAgIHdpdGggdGhlIGhlYXAuCisKIDIwMDgtMTAtMDIgIENhbWVyb24gWndhcmljaCAg
PHp3YXJpY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJ
bmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENv
cmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChKU0NvbnRleHRSZWYg
Y3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5n
UmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9i
YWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCku
aGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSlNP
YmplY3QqIGpzVGhpc09iamVjdCA9IHRvSlModGhpc09iamVjdCk7CkBAIC02OSw3ICs2OSw3IEBA
IEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChKU0NvbnRleHRSZWYKIGJvb2wgSlNDaGVja1Nj
cmlwdFN5bnRheChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTU3RyaW5n
UmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9i
YWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCku
aGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgU291
cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+dXN0cmluZygpLCBzb3VyY2VVUkwt
PnVzdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKQEAgLTk1LDEyICs5NSwxMSBAQCB2b2lk
IEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXh0UmVmIGN0eCkKIAogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7Ci0gICAgSGVhcCogaGVhcCA9IGdsb2JhbERhdGEuaGVhcDsKIAogICAgIEpTTG9j
ayBsb2NrKGdsb2JhbERhdGEuaXNTaGFyZWRJbnN0YW5jZSk7CiAKLSAgICBpZiAoIWhlYXAtPmlz
QnVzeSgpKQotICAgICAgICBoZWFwLT5jb2xsZWN0KCk7CisgICAgaWYgKCFnbG9iYWxEYXRhLmhl
YXAuaXNCdXN5KCkpCisgICAgICAgIGdsb2JhbERhdGEuaGVhcC5jb2xsZWN0KCk7CiAKICAgICAv
LyBGSVhNRTogUGVyaGFwcyB3ZSBzaG91bGQgdHJpZ2dlciBhIHNlY29uZCBtYXJrIGFuZCBzd2Vl
cAogICAgIC8vIG9uY2UgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGRvbmUgaWYgdGhpcyBpcyBj
YWxsZWQgd2hlbgpAQCAtMTEwLDggKzEwOSw4IEBAIHZvaWQgSlNHYXJiYWdlQ29sbGVjdChKU0Nv
bnRleHRSZWYgY3R4KQogdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRSZWYg
Y3R4LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0g
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVj
KTsKIAotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qo
c2l6ZSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlDb3N0
KHNpemUpOwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9u
IDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg3LDcgKzg3LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4
dFJldGFpbgogCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOwogCi0gICAgZ2xvYmFsRGF0YS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGdsb2Jh
bERhdGEuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogCiAgICAgZ2NQcm90ZWN0KGV4ZWMtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKSk7CiAgICAgZ2xvYmFsRGF0YS5yZWYoKTsKQEAgLTEwNCwxNSArMTA0
LDExIEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShKU0dsb2JhbENvbnQKICAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgaWYgKGdsb2Jh
bERhdGEucmVmQ291bnQoKSA9PSAyKSB7IC8vIE9uZSByZWZlcmVuY2UgaXMgaGVsZCBieSBKU0ds
b2JhbE9iamVjdCwgYW5vdGhlciBhZGRlZCBieSBKU0dsb2JhbENvbnRleHRSZXRhaW4oKS4KICAg
ICAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHdhcyByZWxlYXNlZCwgdGhpcyBpcyBvdXIgbGFz
dCBjaGFuY2UgdG8gY29sbGVjdC4KLSAgICAgICAgSGVhcCogaGVhcCA9IGdsb2JhbERhdGEuaGVh
cDsKLQotICAgICAgICBBU1NFUlQoIWhlYXAtPnByb3RlY3RlZE9iamVjdENvdW50KCkpOwotICAg
ICAgICBBU1NFUlQoIWhlYXAtPmlzQnVzeSgpKTsKLQotICAgICAgICBkZWxldGUgaGVhcDsKLSAg
ICAgICAgZ2xvYmFsRGF0YS5oZWFwID0gMDsKKyAgICAgICAgQVNTRVJUKCFnbG9iYWxEYXRhLmhl
YXAucHJvdGVjdGVkT2JqZWN0Q291bnQoKSk7CisgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5o
ZWFwLmlzQnVzeSgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmRlc3Ryb3koKTsKICAgICB9
IGVsc2UKLSAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLT5jb2xsZWN0KCk7CisgICAgICAgIGdsb2Jh
bERhdGEuaGVhcC5jb2xsZWN0KCk7CiAKICAgICBnbG9iYWxEYXRhLmRlcmVmKCk7CiB9CkBAIC0x
MjAsNyArMTE2LDcgQEAgdm9pZCBKU0dsb2JhbENvbnRleHRSZWxlYXNlKEpTR2xvYmFsQ29udAog
SlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpCiB7
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJl
Z2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICAvLyBJdCBpcyBu
ZWNlc3NhcnkgdG8gY2FsbCB0b1RoaXNPYmplY3QgdG8gZ2V0IHRoZSB3cmFwcGVyIG9iamVjdCB3
aGVuIHVzZWQgd2l0aCBXZWJDb3JlLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBKU0NsYXNzUmVsZWFzZShKU0Ns
YXNzUmVmIGpzQ2xhc3MpCiBKU09iamVjdFJlZiBKU09iamVjdE1ha2UoSlNDb250ZXh0UmVmIGN0
eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJl
YWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAg
IEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgaWYgKCFqc0NsYXNzKQpAQCAtODksNyArODksNyBA
QCBKU09iamVjdFJlZiBKU09iamVjdE1ha2UoSlNDb250ZXh0UmVmIGN0CiBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmlu
Z1JlZiBuYW1lLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24p
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBJZGVudGlm
aWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKGV4ZWMpIDogSWRlbnRpZmllcihl
eGVjLCAiYW5vbnltb3VzIik7CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlRnVuY3Rpb25XaXRoQ2FsbAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0
b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0Nv
bnN0cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRo
cmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAg
ICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU1ZhbHVlKiBqc1Byb3RvdHlwZSA9IGpzQ2xh
c3MgCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0
b3IoSlNDbwogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0
eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIGNvbnN0IEpTU3Ry
aW5nUmVmIHBhcmFtZXRlck5hbWVzW10sIEpTU3RyaW5nUmVmIGJvZHksIEpTU3RyaW5nUmVmIHNv
dXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5y
ZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSWRlbnRpZmll
ciBuYW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcihleGVjKSA6IElkZW50aWZpZXIoZXhl
YywgImFub255bW91cyIpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZUZ1bmN0aW9uKEpTQ29udGUKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29u
dGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCAgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQo
KTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpT
TG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdDsKQEAgLTE2NCw3ICsxNjQs
NyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSCiBKU09iamVjdFJl
ZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCAgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5y
ZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgQXJnTGlzdCBh
cmdMaXN0OwpAQCAtMTg1LDcgKzE4NSw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUo
SlNDb250ZXh0UmUKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29udGV4dFJlZiBj
dHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCAg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2Nr
KGV4ZWMpOwogCiAgICAgQXJnTGlzdCBhcmdMaXN0OwpAQCAtMjA2LDcgKzIwNiw3IEBAIEpTT2Jq
ZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29udGV4dFIKIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAt
PnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJU
aHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEFyZ0xpc3QgYXJnTGlzdDsK
QEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpTQ29udGV4dFJl
ZiwgCiBib29sIEpTT2JqZWN0SGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRo
cmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAg
ICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9i
amVjdCk7CkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5KEpTQ29u
dGV4dFJlZiBjdAogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7
CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CkBAIC0yNjksNyArMjY5
LDcgQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5KEpTQ29udGV4dAogdm9pZCBKU09i
amVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNT
dHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmli
dXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3Rl
clRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7
CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pT
KG9iamVjdCk7CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpT
Q29udGV4dFJlZiBjdAogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9j
ayhleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKQEAgLTMx
MSw3ICszMTEsNyBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTCiB2
b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
LSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVj
LT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4
ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwpAQCAtMzI4LDcg
KzMyOCw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250ZXgKIGJvb2wg
SlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCku
aGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdp
c3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpz
T2JqZWN0ID0gdG9KUyhvYmplY3QpOwpAQCAtMzc4LDcgKzM3OCw3IEBAIGJvb2wgSlNPYmplY3RJ
c0Z1bmN0aW9uKEpTQ29udGV4dFJlZiwgSlMKIEpTVmFsdWVSZWYgSlNPYmplY3RDYWxsQXNGdW5j
dGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOwor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2Nr
IGxvY2soZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CkBA
IC00MTYsNyArNDE2LDcgQEAgYm9vbCBKU09iamVjdElzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVm
LAogSlNPYmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3Rl
clRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7
CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pT
KG9iamVjdCk7CkBAIC00NTUsNyArNDU1LDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09i
amVjdENvcHlQcm9wZQogewogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVn
aXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CkBAIC01MDAsNyArNTAwLDcgQEAg
dm9pZCBKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yQWRkTmFtZShKUwogewogICAgIFByb3BlcnR5
TmFtZUFycmF5KiBwcm9wZXJ0eU5hbWVzID0gdG9KUyhhcnJheSk7CiAKLSAgICBwcm9wZXJ0eU5h
bWVzLT5nbG9iYWxEYXRhKCktPmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgcHJvcGVydHlO
YW1lcy0+Z2xvYmFsRGF0YSgpLT5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxv
Y2socHJvcGVydHlOYW1lcy0+Z2xvYmFsRGF0YSgpLT5pc1NoYXJlZEluc3RhbmNlKTsKIAogICAg
IHByb3BlcnR5TmFtZXMtPmFkZChwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIocHJvcGVydHlOYW1l
cy0+Z2xvYmFsRGF0YSgpKSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZp
c2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhK
U0NvbnRleHRSZWYKIGJvb2wgSlNWYWx1ZUlzRXF1YWwoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1
ZVJlZiBhLCBKU1ZhbHVlUmVmIGIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJl
Z2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJl
YWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEpTVmFsdWUqIGpzQSA9IHRvSlMo
YSk7CkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBKU1ZhbHVlSXNTdHJpY3RFcXVhbChKU0NvbnRl
eHRSZWYsIAogYm9vbCBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoSlNDb250ZXh0UmVm
IGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNPYmplY3RSZWYgY29uc3RydWN0b3IsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsK
IAogICAgIEpTVmFsdWUqIGpzVmFsdWUgPSB0b0pTKHZhbHVlKTsKQEAgLTE3Myw3ICsxNzMsNyBA
QCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0NvbnRleHRSCiBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAt
PnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJU
aHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIHJldHVybiB0b1JlZihqc051
bWJlcihleGVjLCB2YWx1ZSkpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1
ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmUKIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlND
b250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJl
YWQoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwogICAg
IEpTTG9jayBsb2NrKGV4ZWMpOwogCiAgICAgcmV0dXJuIHRvUmVmKGpzU3RyaW5nKGV4ZWMsIHN0
cmluZy0+dXN0cmluZygpKSk7CkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBKU1ZhbHVlVG9Cb29s
ZWFuKEpTQ29udGV4dFJlZiBjdHgsIAogZG91YmxlIEpTVmFsdWVUb051bWJlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVy
VGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU1ZhbHVlKiBqc1ZhbHVl
ID0gdG9KUyh2YWx1ZSk7CkBAIC0yMTYsNyArMjE2LDcgQEAgZG91YmxlIEpTVmFsdWVUb051bWJl
cihKU0NvbnRleHRSZWYgY3R4LAogSlNTdHJpbmdSZWYgSlNWYWx1ZVRvU3RyaW5nQ29weShKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJl
Z2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU1ZhbHVlKiBq
c1ZhbHVlID0gdG9KUyh2YWx1ZSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgSlNTdHJpbmdSZWYgSlNW
YWx1ZVRvU3RyaW5nQ29weShKU0NvbnRleAogSlNPYmplY3RSZWYgSlNWYWx1ZVRvT2JqZWN0KEpT
Q29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAu
cmVnaXN0ZXJUaHJlYWQoKTsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKIAogICAgIEpTVmFsdWUq
IGpzVmFsdWUgPSB0b0pTKHZhbHVlKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCBKU09iamVjdFJlZiBK
U1ZhbHVlVG9PYmplY3QoSlNDb250ZXh0UmVmCiB2b2lkIEpTVmFsdWVQcm90ZWN0KEpTQ29udGV4
dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOwor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2Nr
IGxvY2soZXhlYyk7CiAKICAgICBKU1ZhbHVlKiBqc1ZhbHVlID0gdG9KUyh2YWx1ZSk7CkBAIC0y
NjIsNyArMjYyLDcgQEAgdm9pZCBKU1ZhbHVlUHJvdGVjdChKU0NvbnRleHRSZWYgY3R4LCBKUwog
dm9pZCBKU1ZhbHVlVW5wcm90ZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUp
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7CiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAKICAgICBKU1ZhbHVl
KiBqc1ZhbHVlID0gdG9KUyh2YWx1ZSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5oCShyZXZp
c2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoRXhlY1N0YXRlKiBleGVjKSB7
IHJldHVybiBleGVjLT5tX2dsb2JhbERhdGEtPnJlZ0V4cENvbnN0cnVjdG9yVGFibGU7IH0KICAg
ICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogc3RyaW5nVGFibGUoRXhlY1N0YXRlKiBleGVj
KSB7IHJldHVybiBleGVjLT5tX2dsb2JhbERhdGEtPnN0cmluZ1RhYmxlOyB9CiAKLSAgICAgICAg
SGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YS0+aGVhcDsgfQorICAgICAg
ICBIZWFwKiBoZWFwKCkgY29uc3QgeyByZXR1cm4gJm1fZ2xvYmFsRGF0YS0+aGVhcDsgfQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvciByZXF1aXJlZCBmb3Ig
Z2NjIDMuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMzcx
OTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNyArNTgsNiBAQCBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHN0cmluZ1RhYmxlOwog
CiBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShib29sIGlzU2hhcmVkKQogICAgIDogbWFjaGlu
ZShuZXcgTWFjaGluZSkKLSAgICAsIGhlYXAobmV3IEhlYXAodGhpcykpCiAjaWYgRU5BQkxFKEpT
Q19NVUxUSVBMRV9USFJFQURTKQogICAgICwgYXJyYXlUYWJsZShuZXcgSGFzaFRhYmxlKEpTQzo6
YXJyYXlUYWJsZSkpCiAgICAgLCBkYXRlVGFibGUobmV3IEhhc2hUYWJsZShKU0M6OmRhdGVUYWJs
ZSkpCkBAIC04OSwxNiArODgsMTYgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoYm9vbCBp
c1NoYXJlZAogICAgICwgaGVhZCgwKQogICAgICwgaXNTaGFyZWRJbnN0YW5jZShpc1NoYXJlZCkK
ICAgICAsIGNsaWVudERhdGEoMCkKKyAgICAsIGhlYXAodGhpcykKIHsKIH0KIAogSlNHbG9iYWxE
YXRhOjp+SlNHbG9iYWxEYXRhKCkKIHsKLSAgICBkZWxldGUgaGVhcDsKKyAgICBoZWFwLmRlc3Ry
b3koKTsKICAgICBkZWxldGUgbWFjaGluZTsKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gWmVyb2lu
ZyBvdXQgdG8gbWFrZSB0aGUgYmVoYXZpb3IgbW9yZSBwcmVkaWN0YWJsZSB3aGVuIHNvbWVvbmUg
YXR0ZW1wdHMgdG8gdXNlIGEgZGVsZXRlZCBpbnN0YW5jZS4KLSAgICBoZWFwID0gMDsKICAgICBt
YWNoaW5lID0gMDsKICNlbmRpZgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsRGF0YS5oCShy
ZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDkgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiY29sbGVjdG9yLmgiCiAjaW5jbHVk
ZSAiU21hbGxTdHJpbmdzLmgiCiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzOwpAQCAtNjQsNyArNjMs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfkpTR2xvYmFsRGF0YSgpOwogCiAgICAgICAg
IE1hY2hpbmUqIG1hY2hpbmU7Ci0gICAgICAgIEhlYXAqIGhlYXA7CiAKICAgICAgICAgY29uc3Qg
SGFzaFRhYmxlKiBhcnJheVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIGRhdGVUYWJs
ZTsKQEAgLTEwNCw2ICsxMDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBIYXNoU2V0
PEpTT2JqZWN0Kj4gYXJyYXlWaXNpdGVkRWxlbWVudHM7CiAKKyAgICAgICAgSGVhcCBoZWFwOwor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKGJvb2wgaXNTaGFyZWQgPSBmYWxz
ZSk7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24g
MzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6bWFyaygpCiAK
ICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSA9IGdsb2JhbERhdGEoKS0+bWFjaGluZS0+
cmVnaXN0ZXJGaWxlKCk7CiAgICAgaWYgKHJlZ2lzdGVyRmlsZS5nbG9iYWxPYmplY3QoKSA9PSB0
aGlzKQotICAgICAgICByZWdpc3RlckZpbGUubWFya0dsb2JhbHMoZ2xvYmFsRGF0YSgpLT5oZWFw
KTsKKyAgICAgICAgcmVnaXN0ZXJGaWxlLm1hcmtHbG9iYWxzKCZnbG9iYWxEYXRhKCktPmhlYXAp
OwogCiAgICAgbWFya0lmTmVlZGVkKGQoKS0+Z2xvYmFsRXhlYy0+ZXhjZXB0aW9uKCkpOwogCkBA
IC00NDgsOSArNDQ4LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y29weUdsb2JhbHNUbyhSZWdp
cwogdm9pZCogSlNHbG9iYWxPYmplY3Q6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQogewogI2lmZGVmIEpBVkFTQ1JJUFRDT1JFX0JVSUxESU5HX0FM
TF9JTl9PTkVfRklMRQotICAgIHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLT5pbmxpbmVBbGxvY2F0
ZShzaXplKTsKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+aGVhcC5pbmxpbmVBbGxvY2F0ZShzaXpl
KTsKICNlbHNlCi0gICAgcmV0dXJuIGdsb2JhbERhdGEtPmhlYXAtPmFsbG9jYXRlKHNpemUpOwor
ICAgIHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRlKHNpemUpOwogI2VuZGlmCiB9CiAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTMgKzEz
MywxMiBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICBtZW1zZXQo
Jm51bWJlckhlYXAsIDAsIHNpemVvZihDb2xsZWN0b3JIZWFwKSk7CiB9CiAKLUhlYXA6On5IZWFw
KCkKK3ZvaWQgSGVhcDo6ZGVzdHJveSgpCiB7CiAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwogCi0g
ICAgLy8gVGhlIGdsb2JhbCBvYmplY3QgaXMgbm90IEdDIHByb3RlY3RlZCBhdCB0aGlzIHBvaW50
LCBzbyBzd2VlcGluZyBtYXkgZGVsZXRlIGl0IChhbmQgdGh1cyB0aGUgZ2xvYmFsIGRhdGEpCi0g
ICAgLy8gYmVmb3JlIG90aGVyIG9iamVjdHMgdGhhdCBtYXkgdXNlIHRoZSBnbG9iYWwgZGF0YS4K
LSAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBwcm90ZWN0KG1fZ2xvYmFsRGF0YSk7CisgICAgaWYg
KCFtX2dsb2JhbERhdGEpCisgICAgICAgIHJldHVybjsKIAogICAgIGRlbGV0ZSBtX21hcmtMaXN0
U2V0OwogICAgIG1fbWFya0xpc3RTZXQgPSAwOwpAQCAtMTY2LDYgKzE2NSw4IEBAIEhlYXA6On5I
ZWFwKCkKICAgICAgICAgdCA9IG5leHQ7CiAgICAgfQogI2VuZGlmCisKKyAgICBtX2dsb2JhbERh
dGEgPSAwOwogfQogCiB0ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY2xhc3MgVGhyZWFkOwogICAgICAgICBlbnVtIEhlYXBUeXBlIHsgUHJp
bWFyeUhlYXAsIE51bWJlckhlYXAgfTsKIAorICAgICAgICB2b2lkIGRlc3Ryb3koKTsKKwogI2lm
ZGVmIEpBVkFTQ1JJUFRDT1JFX0JVSUxESU5HX0FMTF9JTl9PTkVfRklMRQogICAgICAgICAvLyBX
ZSBjYW4gaW5saW5lIHRoZXNlIGZ1bmN0aW9ucyBiZWNhdXNlIGV2ZXJ5dGhpbmcgaXMgY29tcGls
ZWQgYXMKICAgICAgICAgLy8gb25lIGZpbGUsIHNvIHRoZSBoZWFwQWxsb2NhdGUgdGVtcGxhdGUg
ZGVmaW5pdGlvbnMgYXJlIGF2YWlsYWJsZS4KQEAgLTc4LDggKzgwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgY29sbGVjdCgpOwogICAgICAgICBib29sIGlzQnVzeSgpOyAvLyB0
cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwogCi0gICAg
ICAgIH5IZWFwKCk7Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3RT
aXplID0gMjU2OwogCiAgICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBj
b3N0KTsKQEAgLTExOCw2ICsxMTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBmcmll
bmQgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSopOworICAg
ICAgICB+SGVhcCgpIHsgfQogCiAgICAgICAgIHZvaWQgcmVjb3JkRXh0cmFDb3N0KHNpemVfdCk7
CiAgICAgICAgIHZvaWQgbWFya1Byb3RlY3RlZE9iamVjdHMoKTsKSW5kZXg6IFdlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNzIxNCkK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MDgtMTAtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzIxCisgICAgICAgICAgQnVnIDIxMzIxOiBzcGVlZCB1cCBK
YXZhU2NyaXB0Q29yZSBieSBpbmxpbmluZyBIZWFwIGluIEpTR2xvYmFsRGF0YQorCisgICAgICAg
ICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxl
Y3QpOiBVc2UgaGVhcC4gaW5zdGVhZCBvZiBoZWFwLT4gdG8gd29yayB3aXRoIHRoZSBoZWFwLgor
ICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnY1RpbWVyRmlyZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3cpOiBEaXR0by4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93U2hlbGw6Om9wZXJhdG9yIG5ldyk6IERpdHRvLgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFi
YXNlKTogRGl0dG8uCisKIDIwMDgtMTAtMDIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHZvaWQqIGNvbGxlY3Qodm9pZCopCiB7
CiAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwotICAgIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2Jh
bERhdGEoKS0+aGVhcC0+Y29sbGVjdCgpOworICAgIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2Jh
bERhdGEoKS0+aGVhcC5jb2xsZWN0KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTcwLDEzICs3
MCwxMyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKCkKIHZvaWQgR0ND
b250cm9sbGVyOjpnY1RpbWVyRmlyZWQoVGltZXI8R0NDb250cm9sbGVyPiopCiB7CiAgICAgSlNM
b2NrIGxvY2soZmFsc2UpOwotICAgIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+
aGVhcC0+Y29sbGVjdCgpOworICAgIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+
aGVhcC5jb2xsZWN0KCk7CiB9CiAKIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5v
dygpCiB7CiAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwotICAgIEpTRE9NV2luZG93Ojpjb21tb25K
U0dsb2JhbERhdGEoKS0+aGVhcC0+Y29sbGVjdCgpOworICAgIEpTRE9NV2luZG93Ojpjb21tb25K
U0dsb2JhbERhdGEoKS0+aGVhcC5jb2xsZWN0KCk7CiB9CiAKIHZvaWQgR0NDb250cm9sbGVyOjpn
YXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGls
RG9uZSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2
aXNpb24gMzcxOTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxs
OjpjbGVhcigpCiAKIHZvaWQqIEpTRE9NV2luZG93U2hlbGw6Om9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSkKIHsKLSAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5o
ZWFwLT5hbGxvY2F0ZShzaXplKTsKKyAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRlKHNpemUpOwogfQogCiAvLyAtLS0tCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZS5jcHAJKHJldmlzaW9uIDM3MTk2KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIERhdGFiYXNlOjpEYXRhYmFz
ZShEb2N1bWVudCogZG9jdW1lbnQsIGMKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygp
OwogICAgIC8vIERhdGFiYXNlIGNvZGUgdmlvbGF0ZXMgdGhlIG5vcm1hbCBKU0NvcmUgY29udHJh
Y3QgYnkgY2FsbGluZyBqc1VucHJvdGVjdCBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgYW5kIHRo
dXMgbmVlZHMgYWRkaXRpb25hbCBsb2NraW5nLgotICAgIEpTRE9NV2luZG93Ojpjb21tb25KU0ds
b2JhbERhdGEoKS0+aGVhcC0+c2V0R0NQcm90ZWN0TmVlZHNMb2NraW5nKCk7CisgICAgSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLnNldEdDUHJvdGVjdE5lZWRzTG9ja2lu
ZygpOwogCiAgICAgbV9ndWlkID0gZ3VpZEZvck9yaWdpbkFuZE5hbWUobV9zZWN1cml0eU9yaWdp
bi0+dG9TdHJpbmcoKSwgbmFtZSk7CiAKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNzIxNCkKKysrIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDgtMTAt
MDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzIxCisgICAgICAgICAgQnVnIDIxMzIxOiBzcGVlZCB1cCBKYXZhU2Ny
aXB0Q29yZSBieSBpbmxpbmluZyBIZWFwIGluIEpTR2xvYmFsRGF0YQorCisgICAgICAgICogTWlz
Yy9XZWJDb3JlU3RhdGlzdGljcy5tbToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3RpY3MgamF2
YVNjcmlwdE9iamVjdHNDb3VudF0pOiBVc2UgaGVhcC4gaW5zdGVhZCBvZiBoZWFwLT4gdG8KKyAg
ICAgICAgd29yayB3aXRoIHRoZSBoZWFwLgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBq
YXZhU2NyaXB0R2xvYmFsT2JqZWN0c0NvdW50XSk6IERpdHRvLgorICAgICAgICAoK1tXZWJDb3Jl
U3RhdGlzdGljcyBqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0c0NvdW50XSk6IERpdHRvLgorICAg
ICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBqYXZhU2NyaXB0UHJvdGVjdGVkR2xvYmFsT2JqZWN0
c0NvdW50XSk6IERpdHRvLgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBqYXZhU2NyaXB0
UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50c10pOiBEaXR0by4KKyAgICAgICAgKCtbV2ViQ29yZVN0
YXRpc3RpY3MgamF2YVNjcmlwdFJlZmVyZW5jZWRPYmplY3RzQ291bnRdKTogRGl0dG8uCisKIDIw
MDgtMTAtMDIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxNApJbmRleDogV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvTWlz
Yy9XZWJDb3JlU3RhdGlzdGljcy5tbQkocmV2aXNpb24gMzcxOTYpCisrKyBXZWJLaXQvbWFjL01p
c2MvV2ViQ29yZVN0YXRpc3RpY3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0LDI1ICs1NCwyNSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICsgKHNpemVfdClqYXZhU2NyaXB0T2JqZWN0c0Nv
dW50CiB7CiAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwotICAgIHJldHVybiBKU0RPTVdpbmRvdzo6
Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAtPnNpemUoKTsKKyAgICByZXR1cm4gSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLnNpemUoKTsKIH0KIAogKyAoc2l6ZV90KWph
dmFTY3JpcHRHbG9iYWxPYmplY3RzQ291bnQKIHsKICAgICBKU0xvY2sgbG9jayhmYWxzZSk7Ci0g
ICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC0+Z2xvYmFs
T2JqZWN0Q291bnQoKTsKKyAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0
YSgpLT5oZWFwLmdsb2JhbE9iamVjdENvdW50KCk7CiB9CiAKICsgKHNpemVfdClqYXZhU2NyaXB0
UHJvdGVjdGVkT2JqZWN0c0NvdW50CiB7CiAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwotICAgIHJl
dHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAtPnByb3RlY3RlZE9i
amVjdENvdW50KCk7CisgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEo
KS0+aGVhcC5wcm90ZWN0ZWRPYmplY3RDb3VudCgpOwogfQogCiArIChzaXplX3QpamF2YVNjcmlw
dFByb3RlY3RlZEdsb2JhbE9iamVjdHNDb3VudAogewogICAgIEpTTG9jayBsb2NrKGZhbHNlKTsK
LSAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLT5wcm90
ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpOworICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9u
SlNHbG9iYWxEYXRhKCktPmhlYXAucHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKTsKIH0KIAog
KyAoTlNDb3VudGVkU2V0ICopamF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMKQEAg
LTgxLDcgKzgxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiAgICAgTlNDb3Vu
dGVkU2V0ICpyZXN1bHQgPSBbTlNDb3VudGVkU2V0IHNldF07CiAKLSAgICBPd25QdHI8SGFzaENv
dW50ZWRTZXQ8Y29uc3QgY2hhcio+ID4gY291bnRzKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2Jh
bERhdGEoKS0+aGVhcC0+cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpKTsKKyAgICBPd25QdHI8
SGFzaENvdW50ZWRTZXQ8Y29uc3QgY2hhcio+ID4gY291bnRzKEpTRE9NV2luZG93Ojpjb21tb25K
U0dsb2JhbERhdGEoKS0+aGVhcC5wcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkpOwogICAgIEhh
c2hDb3VudGVkU2V0PGNvbnN0IGNoYXIqPjo6aXRlcmF0b3IgZW5kID0gY291bnRzLT5lbmQoKTsK
ICAgICBmb3IgKEhhc2hDb3VudGVkU2V0PGNvbnN0IGNoYXIqPjo6aXRlcmF0b3IgaXQgPSBjb3Vu
dHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0LT5zZWNvbmQ7ICsraSkKQEAgLTE4MSw3ICsxODEsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICsgKHNpemVfdClqYXZhU2NyaXB0UmVmZXJlbmNlZE9iamVjdHNDb3VudAog
ewogICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKLSAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1v
bkpTR2xvYmFsRGF0YSgpLT5oZWFwLT5wcm90ZWN0ZWRPYmplY3RDb3VudCgpOworICAgIHJldHVy
biBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAucHJvdGVjdGVkT2JqZWN0
Q291bnQoKTsKIH0KIAogKyAoTlNTZXQgKilqYXZhU2NyaXB0Um9vdE9iamVjdENsYXNzZXMK
</data>
<flag name="review"
          id="10876"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>