<?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>27478</bug_id>
          
          <creation_ts>2009-07-20 19:14:52 -0700</creation_ts>
          <short_desc>All DOMConstructorObjects should hold a pointer to the JSDOMGlobalObject</short_desc>
          <delta_ts>2009-07-21 13:35:46 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>27088</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133331</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-20 19:14:52 -0700</bug_when>
    <thetext>All DOMConstructorObjects should hold a pointer to the JSDOMGlobalObject

All DOMConstructorObject subclasses are already passed a JSDOMGlobalObject* during construction.  Only 4 of them actually hold onto this pointer though.

We should make all constructor objects hold onto this pointer, and share the marking and casting code using a subclass instead of the current copy/paste code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133332</commentid>
    <comment_count>1</comment_count>
      <attachid>33135</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-20 19:19:09 -0700</bug_when>
    <thetext>Created attachment 33135
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133337</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-20 19:29:36 -0700</bug_when>
    <thetext>+ explicit DOMObjectWithGlobalPointer(PassRefPtr&lt;JSC::Structure&gt; structure, JSDOMGlobalObject* globalObject)

Explicit only makes sense for one-argument constructors.

WebCore/bindings/js/JSMessageChannelConstructor.cpp
+     , m_globalObject(globalObject)

Can&apos;t we remove this line now?

Maciej had some suggestions in the channel.  I&apos;ll wait for you to address those comments before reviewing this in more detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133351</commentid>
    <comment_count>3</comment_count>
      <attachid>33140</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-20 20:02:51 -0700</bug_when>
    <thetext>Created attachment 33140
Update patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133505</commentid>
    <comment_count>4</comment_count>
      <attachid>33140</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-21 10:19:06 -0700</bug_when>
    <thetext>Comment on attachment 33140
Update patch

This patch is awesome.  Redundant code: BE GONE!

+        I&apos;ve added two new classes: DOMObjectWithGlobalPointer and DOMConstructorObjectInDocument.

The ChangeLog uses the old class names.

+    class DOMConstructorWithDocument : public DOMConstructorObject {
+    public:
+        Document* document() const
+        {
+            return static_cast&lt;Document*&gt;(scriptExecutionContext());
+        }
+    protected:

Missing a blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133513</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-21 10:36:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 33140 [details])
&gt; This patch is awesome.  Redundant code: BE GONE!
&gt; 
&gt; +        I&apos;ve added two new classes: DOMObjectWithGlobalPointer and
&gt; DOMConstructorObjectInDocument.
&gt; 
&gt; The ChangeLog uses the old class names.

My bad.  Will fix.

&gt; +    class DOMConstructorWithDocument : public DOMConstructorObject {
&gt; +    public:
&gt; +        Document* document() const
&gt; +        {
&gt; +            return static_cast&lt;Document*&gt;(scriptExecutionContext());
&gt; +        }
&gt; +    protected:
&gt; 
&gt; Missing a blank line here.

Where?  Before protected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133517</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-21 10:52:31 -0700</bug_when>
    <thetext>&gt; Where?  Before protected?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133579</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-21 13:35:46 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSAudioConstructor.cpp
	M	WebCore/bindings/js/JSAudioConstructor.h
	M	WebCore/bindings/js/JSDOMBinding.h
	M	WebCore/bindings/js/JSImageConstructor.cpp
	M	WebCore/bindings/js/JSImageConstructor.h
	M	WebCore/bindings/js/JSMessageChannelConstructor.cpp
	M	WebCore/bindings/js/JSMessageChannelConstructor.h
	M	WebCore/bindings/js/JSOptionConstructor.cpp
	M	WebCore/bindings/js/JSOptionConstructor.h
	M	WebCore/bindings/js/JSWebKitCSSMatrixConstructor.cpp
	M	WebCore/bindings/js/JSWebKitPointConstructor.cpp
	M	WebCore/bindings/js/JSWorkerConstructor.cpp
	M	WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp
	M	WebCore/bindings/js/JSXMLHttpRequestConstructor.h
	M	WebCore/bindings/js/JSXSLTProcessorConstructor.cpp
Committed r46191
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSXMLHttpRequestConstructor.h
	M	WebCore/bindings/js/JSAudioConstructor.h
	M	WebCore/bindings/js/JSWorkerConstructor.cpp
	M	WebCore/bindings/js/JSOptionConstructor.h
	M	WebCore/bindings/js/JSWebKitPointConstructor.cpp
	M	WebCore/bindings/js/JSOptionConstructor.cpp
	M	WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp
	M	WebCore/bindings/js/JSImageConstructor.cpp
	M	WebCore/bindings/js/JSDOMBinding.h
	M	WebCore/bindings/js/JSMessageChannelConstructor.h
	M	WebCore/bindings/js/JSAudioConstructor.cpp
	M	WebCore/bindings/js/JSWebKitCSSMatrixConstructor.cpp
	M	WebCore/bindings/js/JSImageConstructor.h
	M	WebCore/bindings/js/JSXSLTProcessorConstructor.cpp
	M	WebCore/bindings/js/JSMessageChannelConstructor.cpp
r46191 = df9f155678da8d894d73bfb7bf58ab24e14fc872 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46191</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33135</attachid>
            <date>2009-07-20 19:19:09 -0700</date>
            <delta_ts>2009-07-20 20:02:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-27478-20090720191908.patch</filename>
            <type>text/plain</type>
            <size>20466</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODllYmUxMy4uMTU1N2NkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wNy0yMCAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsIERPTUNvbnN0cnVjdG9yT2JqZWN0cyBzaG91bGQgaG9sZCBhIHBvaW50
ZXIgdG8gdGhlIEpTRE9NR2xvYmFsT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ3OAorCisgICAgICAgIFRoaXMgaXMganVzdCBtb3Zpbmcg
Y29kZS4KKyAgICAgICAgSSd2ZSBhZGRlZCB0d28gbmV3IGNsYXNzZXM6IERPTU9iamVjdFdpdGhH
bG9iYWxQb2ludGVyIGFuZCBET01Db25zdHJ1Y3Rvck9iamVjdEluRG9jdW1lbnQuCisKKyAgICAg
ICAgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIgaXMgYSBuZXcgYmFzZWNsYXNzIGZvciBET01D
b25zdHJ1Y3Rvck9iamVjdC4KKyAgICAgICAgKEl0J3MgYSBiYXNlY2xhc3MgYmVjYXVzZSBldmVu
dHVhbGx5IGFsbCBET01PYmplY3RzIHdpbGwgaGF2ZSBhIGdsb2JhbCBwb2ludGVyLCBidXQKKyAg
ICAgICAgSSdsbCBiZSBtb3ZpbmcgdGhlbSBvbnRvIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
IGluIHN0YWdlcy4pCisKKyAgICAgICAgRE9NQ29uc3RydWN0b3JPYmplY3RJbkRvY3VtZW50IGlz
IGEgbmV3IGJhc2VjbGFzcyBmb3IgdGhlIDMgY29uc3RydWN0b3Igb2JqZWN0cworICAgICAgICB3
aGljaCByZXF1aXJlIGEgYmFja3BvaW50ZXIgdG8gdGhlIERvY3VtZW50IHRvIGZ1bmN0aW9uLiAg
SSBtYWRlIHRoaXMgYSBzdWJjbGFzcyBvZgorICAgICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCB0
byBtYWtlIGNsZWFyIHRoYXQgbW9zdCBjb25zdHJ1Y3RvcnMgY2FuIGhvbGQgbm8tc3VjaCBhc3N1
bXB0aW9ucworICAgICAgICBhYm91dCBoYXZpbmcgYSBiYWNrLXBvaW50ZXIgdG8gdGhlIERvY3Vt
ZW50IChzaW5jZSBtYW55IGNvbnN0cnVjdG9ycyBjYW4gYmUgdXNlZCBmcm9tIFdvcmtlcnMpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXVkaW9Db25zdHJ1Y3Rvcjo6SlNBdWRpb0NvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdFdpdGhHbG9i
YWxQb2ludGVyOjpnbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NT2JqZWN0V2l0
aEdsb2JhbFBvaW50ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXI6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyOjptYXJrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpET01Db25zdHJ1Y3Rvck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpET01Db25zdHJ1Y3Rvck9iamVjdEluRG9jdW1lbnQ6
OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yT2JqZWN0SW5Eb2N1
bWVudDo6RE9NQ29uc3RydWN0b3JPYmplY3RJbkRvY3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbWFnZUNv
bnN0cnVjdG9yOjpKU0ltYWdlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5u
ZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFubmVsQ29u
c3RydWN0b3I6OkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU09wdGlv
bkNvbnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU09wdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yOjpKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJLaXRQb2ludENvbnN0cnVjdG9yOjpKU1dlYktpdFBvaW50Q29uc3RydWN0b3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrZXJDb25zdHJ1Y3Rvcjo6SlNXb3JrZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6SlNYTUxIdHRwUmVx
dWVzdENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rv
cjo6SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IpOgorCiAyMDA5LTA3LTIwICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAppbmRleCBkYTM1
YmIxLi5iMTE4NTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3Iu
Y3BwCkBAIC00MiwyMSArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgQ2xhc3NJ
bmZvIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXVkaW9Db25zdHJ1Y3RvciIsIDAs
IDAsIDAgfTsKIAogSlNBdWRpb0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogRE9NQ29u
c3RydWN0b3JPYmplY3QoSlNBdWRpb0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCi0gICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCisgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdEluRG9jdW1lbnQoSlNBdWRpb0NvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSks
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwotICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLQogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBKU0hUTUxBdWRpb0VsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywg
Z2xvYmFsT2JqZWN0KSwgTm9uZSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDEpLCBSZWFkT25seXxEb250RGVsZXRlfERvbnRFbnVt
KTsKIH0KIAotRG9jdW1lbnQqIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6ZG9jdW1lbnQoKSBjb25zdAot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fZ2xvYmFsT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwotfQotCiBzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdEF1
ZGlvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQogewogICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIG5lZWQgdGhlIGNhbGwg
dG9KUyBvbiB0aGUgZG9jdW1lbnQgbGlrZSBKU0ltYWdlQ29uc3RydWN0b3I/CkBAIC04MCwxMyAr
NzEsNiBAQCBDb25zdHJ1Y3RUeXBlIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
SG9zdDsKIH0KIAotdm9pZCBKU0F1ZGlvQ29uc3RydWN0b3I6Om1hcmsoKQotewotICAgIERPTU9i
amVjdDo6bWFyaygpOwotICAgIGlmICghbV9nbG9iYWxPYmplY3QtPm1hcmtlZCgpKQotICAgICAg
ICBtX2dsb2JhbE9iamVjdC0+bWFyaygpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9Db25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3Ry
dWN0b3IuaAppbmRleCAzZDg0NTQ5Li4wZWM5N2ZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb0NvbnN0cnVjdG9yLmgKQEAgLTM0LDIxICszNCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICBjbGFzcyBKU0F1ZGlvQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0
b3JPYmplY3QgeworICAgIGNsYXNzIEpTQXVkaW9Db25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25z
dHJ1Y3Rvck9iamVjdEluRG9jdW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNBdWRpb0Nv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAotICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQogICAgICAgICBzdGF0aWMgY29uc3QgSlND
OjpDbGFzc0luZm8gc19pbmZvOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKIAogICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSAgICAg
ICAgSlNET01HbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0OwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDUzZDkyNTgu
LjZkMTZmOWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMiw2ICsyLDcgQEAK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBX
ZWluaWcgPHNhbUB3ZWJraXQub3JnPgorICogIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIz
LDcgQEAKICNkZWZpbmUgSlNET01CaW5kaW5nX2gKIAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIgLy8gRm9yIERPTUNvbnN0cnVjdG9yT2JqZWN0
SW5Eb2N1bWVudAogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvTG9va3VwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CkBAIC01OSw4
ICs2MSwzNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgLy8g
QmFzZSBjbGFzcyBmb3IgYWxsIGNvbnN0cnVjdG9yIG9iamVjdHMgaW4gdGhpcyBiaW5kaW5nIGV4
Y2VwdCBXaW5kb3cuCi0gICAgY2xhc3MgRE9NQ29uc3RydWN0b3JPYmplY3QgOiBwdWJsaWMgRE9N
T2JqZWN0IHsKKyAgICBjbGFzcyBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlciA6IHB1YmxpYyBE
T01PYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CisKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIGV4cGxpY2l0
IERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyKFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgIDog
RE9NT2JqZWN0KHN0cnVjdHVyZSkKKyAgICAgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBtYXJrKCkK
KyAgICAgICAgeworICAgICAgICAgICAgRE9NT2JqZWN0OjptYXJrKCk7CisgICAgICAgICAgICBp
ZiAoIW1fZ2xvYmFsT2JqZWN0LT5tYXJrZWQoKSkKKyAgICAgICAgICAgICAgICBtX2dsb2JhbE9i
amVjdC0+bWFyaygpOworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgSlNET01HbG9i
YWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0OworICAgIH07CisKKyAgICAvLyBCYXNlIGNsYXNzIGZv
ciBhbGwgY29uc3RydWN0b3Igb2JqZWN0cyBpbiB0aGUgSlNDIGJpbmRpbmdzLgorICAgIGNsYXNz
IERPTUNvbnN0cnVjdG9yT2JqZWN0IDogcHVibGljIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpAQCAt
NjgsOSArOTcsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IERPTUNvbnN0cnVjdG9yT2JqZWN0KFBhc3NSZWZQdHI8
SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogRE9NT2JqZWN0KHN0cnVj
dHVyZSkKKyAgICAgICAgZXhwbGljaXQgRE9NQ29uc3RydWN0b3JPYmplY3QoUGFzc1JlZlB0cjxK
U0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQorICAgICAgICAgICAgOiBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIENvbnN0
cnVjdG9ycyB1c2luZyB0aGlzIGJhc2UgY2xhc3MgZGVwZW5kIG9uIGJlaW5nIGluIGEgRG9jdW1l
bnQgYW5kCisgICAgLy8gY2FuIG5ldmVyIGJlIHVzZWQgZnJvbSBhIFdvcmtlckNvbnRleHQuCisg
ICAgY2xhc3MgRE9NQ29uc3RydWN0b3JPYmplY3RJbkRvY3VtZW50IDogcHVibGljIERPTUNvbnN0
cnVjdG9yT2JqZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIH0KKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIGV4cGxpY2l0IERPTUNvbnN0cnVjdG9yT2JqZWN0SW5Eb2N1bWVudChQYXNzUmVm
UHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgICAgICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIH0KICAgICB9
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggN2Ji
MmM1Zi4uNzFkZjZlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29u
c3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9y
LmNwcApAQCAtMzUsMjAgKzM1LDExIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNJbWFn
ZUNvbnN0cnVjdG9yKTsKIGNvbnN0IENsYXNzSW5mbyBKU0ltYWdlQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkltYWdlQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTSW1hZ2VDb25zdHJ1Y3Rv
cjo6SlNJbWFnZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKLSAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTSW1hZ2VDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQot
ICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NQ29uc3RydWN0b3JP
YmplY3RJbkRvY3VtZW50KEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgQVNTRVJU
KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7Ci0KICAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MSW1hZ2VF
bGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwogfQogCi1E
b2N1bWVudCogSlNJbWFnZUNvbnN0cnVjdG9yOjpkb2N1bWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9nbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7Ci19Ci0KIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0SW1hZ2UoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7
CiAgICAgYm9vbCB3aWR0aFNldCA9IGZhbHNlOwpAQCAtODcsMTEgKzc4LDQgQEAgQ29uc3RydWN0
VHlwZSBKU0ltYWdlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CiB9CiAKLXZvaWQg
SlNJbWFnZUNvbnN0cnVjdG9yOjptYXJrKCkKLXsKLSAgICBET01PYmplY3Q6Om1hcmsoKTsKLSAg
ICBpZiAoIW1fZ2xvYmFsT2JqZWN0LT5tYXJrZWQoKSkKLSAgICAgICAgbV9nbG9iYWxPYmplY3Qt
Pm1hcmsoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmgKaW5kZXggNTI4YTlkMi4uMzUwYTYxOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCkBAIC0yNSwxOSArMjUsMTQgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSlNJbWFnZUNvbnN0cnVjdG9yIDogcHVibGlj
IERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKKyAgICBjbGFzcyBKU0ltYWdlQ29uc3RydWN0b3IgOiBw
dWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3RJbkRvY3VtZW50IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
Kik7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRp
YyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgbWFyaygpOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZz
X2luZm87IH0KLQotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCmluZGV4IGMyMWU0ZWIuLmQ4Yzkz
YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbENvbnN0
cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3Qg
Q2xhc3NJbmZvIEpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiTWVzc2Fn
ZUNoYW5uZWxDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNNZXNzYWdlQ2hhbm5lbENvbnN0
cnVjdG9yOjpKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qo
SlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpCisgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChKU01lc3Nh
Z2VDaGFubmVsQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBKU01lc3NhZ2VDaGFubmVsUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5v
bmUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZWI2ODllNC4uN2E3ZjcwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlv
bkNvbnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zNSwyMSArMzUsMTIgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChK
U09wdGlvbkNvbnN0cnVjdG9yKTsKIGNvbnN0IENsYXNzSW5mbyBKU09wdGlvbkNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJPcHRpb25Db25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNPcHRpb25D
b25zdHJ1Y3Rvcjo6SlNPcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChKU09w
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSkpCi0gICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCisgICAgOiBET01D
b25zdHJ1Y3Rvck9iamVjdEluRG9jdW1lbnQoSlNPcHRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1l
bnQoKSk7Ci0KICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwg
SlNIVE1MT3B0aW9uRWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBO
b25lKTsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIoZXhlYywgNCksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwogfQogCi1Eb2N1bWVu
dCogSlNPcHRpb25Db25zdHJ1Y3Rvcjo6ZG9jdW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwotfQotCiBzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdEhUTUxPcHRpb25FbGVtZW50
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEpTT3B0aW9uQ29u
c3RydWN0b3IqPihjb25zdHJ1Y3RvciktPmRvY3VtZW50KCk7CkBAIC04NSwxMSArNzYsNSBAQCBD
b25zdHJ1Y3RUeXBlIEpTT3B0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYgY29uc3RydWN0RGF0YQogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0K
IAotdm9pZCBKU09wdGlvbkNvbnN0cnVjdG9yOjptYXJrKCkKLXsKLSAgICBET01PYmplY3Q6Om1h
cmsoKTsKLSAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0LT5tYXJrZWQoKSkKLSAgICAgICAgbV9nbG9i
YWxPYmplY3QtPm1hcmsoKTsKLX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmggYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAppbmRleCAwNDgzZmI2Li5iYTQxNTFiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaApAQCAtMjYsMTkgKzI2
LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEpTT3B0aW9uQ29uc3Ry
dWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworICAgIGNsYXNzIEpTT3B0aW9u
Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3RJbkRvY3VtZW50IHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEpTT3B0aW9uQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOwotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsK
IAogICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwotICAgICAgICAK
LSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0
YSYpOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIG1f
Z2xvYmFsT2JqZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDY3ZTc0NmUuLmYwYTJhOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjb25zdCBDbGFzc0luZm8gSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAK
IEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3I6OkpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAg
IDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQorICAgIDogRE9N
Q29uc3RydWN0b3JPYmplY3QoSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTV2ViS2l0
Q1NTTWF0cml4UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwogICAg
IHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCAx
KSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzcyNjczZS4uY2Q4ZTNiMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNw
cApAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogY29uc3QgQ2xhc3NJbmZv
IEpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiV2ViS2l0UG9pbnRDb25zdHJ1
Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yOjpKU1dlYktpdFBv
aW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQotICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNXZWJLaXRQb2ludENvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCisg
ICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChKU1dlYktpdFBvaW50Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0
KQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1dl
YktpdFBvaW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwogICAg
IHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCAy
KSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnN0cnVjdG9yLmNwcAppbmRleCA4OWMyOGQyLi5lNWE1NTZmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgQ2xhc3NJbmZvIEpTV29ya2VyQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIldvcmtlckNvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogCiBKU1dvcmtlckNv
bnN0cnVjdG9yOjpKU1dvcmtlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTV29y
a2VyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpKSkKKyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTV29ya2VyQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBKU1dvcmtlclByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKICAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywg
MSksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDM4MGI1NTQuLjZi
Zjg5OTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENv
bnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RD
b25zdHJ1Y3Rvci5jcHAKQEAgLTMzLDE3ICszMywxMSBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcik7CiBjb25zdCBDbGFzc0luZm8gSlNYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJYTUxIdHRwUmVxdWVzdENvbnN0cnVj
dG9yIiwgMCwgMCwgMCB9OwogCiBKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3I6OkpTWE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChKU1hNTEh0dHBSZXF1ZXN0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpKSkKLSAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICA6IERPTUNvbnN0
cnVjdG9yT2JqZWN0KEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTWE1MSHR0cFJlcXVl
c3RQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CiB9CiAKLVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0WE1M
SHR0cFJlcXVlc3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGNvbnN0
IEFyZ0xpc3QmKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDxKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IqPihjb25zdHJ1Y3RvciktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTYwLDExICs1NCw0IEBAIENvbnN0cnVjdFR5cGUgSlNY
TUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEm
IGNvbnN0CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQogCi12b2lkIEpTWE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6bWFyaygpCi17Ci0gICAgRE9NT2JqZWN0OjptYXJrKCk7Ci0g
ICAgaWYgKCFtX2dsb2JhbE9iamVjdC0+bWFya2VkKCkpCi0gICAgICAgIG1fZ2xvYmFsT2JqZWN0
LT5tYXJrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmggYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oCmluZGV4IGYwYjEwYzguLjJj
YzRmY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENv
bnN0cnVjdG9yLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29u
c3RydWN0b3IuaApAQCAtMjcsMTUgKzI3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVj
dCB7CiBwdWJsaWM6CiAgICAgSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsKLQotICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiBwcml2YXRlOgogICAg
IHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1
Y3REYXRhJik7CiAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQotCi0gICAgSlNET01HbG9iYWxPYmplY3QqIG1fZ2xv
YmFsT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcAppbmRleCAwNmVmZmFk
Li40ZmIxZTVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nv
ckNvbnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nv
ckNvbnN0cnVjdG9yLmNwcApAQCAtNDIsNyArNDIsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yKTsKIGNvbnN0IENsYXNzSW5mbyBKU1hTTFRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiWFNMVFByb2Nlc3NvckNvbnNydWN0b3Ii
LCAwLCAwLCAwIH07CiAKIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yOjpKU1hTTFRQcm9jZXNz
b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChKU1hTTFRQcm9jZXNzb3JDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQor
ICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBK
U1hTTFRQcm9jZXNzb3JQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7
CiB9
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33140</attachid>
            <date>2009-07-20 20:02:51 -0700</date>
            <delta_ts>2009-07-21 10:19:05 -0700</delta_ts>
            <desc>Update patch</desc>
            <filename>bug-27478-20090720200251.patch</filename>
            <type>text/plain</type>
            <size>22103</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODllYmUxMy4uMTU1N2NkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wNy0yMCAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsIERPTUNvbnN0cnVjdG9yT2JqZWN0cyBzaG91bGQgaG9sZCBhIHBvaW50
ZXIgdG8gdGhlIEpTRE9NR2xvYmFsT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ3OAorCisgICAgICAgIFRoaXMgaXMganVzdCBtb3Zpbmcg
Y29kZS4KKyAgICAgICAgSSd2ZSBhZGRlZCB0d28gbmV3IGNsYXNzZXM6IERPTU9iamVjdFdpdGhH
bG9iYWxQb2ludGVyIGFuZCBET01Db25zdHJ1Y3Rvck9iamVjdEluRG9jdW1lbnQuCisKKyAgICAg
ICAgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIgaXMgYSBuZXcgYmFzZWNsYXNzIGZvciBET01D
b25zdHJ1Y3Rvck9iamVjdC4KKyAgICAgICAgKEl0J3MgYSBiYXNlY2xhc3MgYmVjYXVzZSBldmVu
dHVhbGx5IGFsbCBET01PYmplY3RzIHdpbGwgaGF2ZSBhIGdsb2JhbCBwb2ludGVyLCBidXQKKyAg
ICAgICAgSSdsbCBiZSBtb3ZpbmcgdGhlbSBvbnRvIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
IGluIHN0YWdlcy4pCisKKyAgICAgICAgRE9NQ29uc3RydWN0b3JPYmplY3RJbkRvY3VtZW50IGlz
IGEgbmV3IGJhc2VjbGFzcyBmb3IgdGhlIDMgY29uc3RydWN0b3Igb2JqZWN0cworICAgICAgICB3
aGljaCByZXF1aXJlIGEgYmFja3BvaW50ZXIgdG8gdGhlIERvY3VtZW50IHRvIGZ1bmN0aW9uLiAg
SSBtYWRlIHRoaXMgYSBzdWJjbGFzcyBvZgorICAgICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCB0
byBtYWtlIGNsZWFyIHRoYXQgbW9zdCBjb25zdHJ1Y3RvcnMgY2FuIGhvbGQgbm8tc3VjaCBhc3N1
bXB0aW9ucworICAgICAgICBhYm91dCBoYXZpbmcgYSBiYWNrLXBvaW50ZXIgdG8gdGhlIERvY3Vt
ZW50IChzaW5jZSBtYW55IGNvbnN0cnVjdG9ycyBjYW4gYmUgdXNlZCBmcm9tIFdvcmtlcnMpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXVkaW9Db25zdHJ1Y3Rvcjo6SlNBdWRpb0NvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdFdpdGhHbG9i
YWxQb2ludGVyOjpnbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NT2JqZWN0V2l0
aEdsb2JhbFBvaW50ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXI6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyOjptYXJrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpET01Db25zdHJ1Y3Rvck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpET01Db25zdHJ1Y3Rvck9iamVjdEluRG9jdW1lbnQ6
OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yT2JqZWN0SW5Eb2N1
bWVudDo6RE9NQ29uc3RydWN0b3JPYmplY3RJbkRvY3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbWFnZUNv
bnN0cnVjdG9yOjpKU0ltYWdlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5u
ZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFubmVsQ29u
c3RydWN0b3I6OkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU09wdGlv
bkNvbnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU09wdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yOjpKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJLaXRQb2ludENvbnN0cnVjdG9yOjpKU1dlYktpdFBvaW50Q29uc3RydWN0b3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrZXJDb25zdHJ1Y3Rvcjo6SlNXb3JrZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6SlNYTUxIdHRwUmVx
dWVzdENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rv
cjo6SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IpOgorCiAyMDA5LTA3LTIwICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAppbmRleCBkYTM1
YmIxLi4wZTJlYTYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3Iu
Y3BwCkBAIC00MiwyMSArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgQ2xhc3NJ
bmZvIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXVkaW9Db25zdHJ1Y3RvciIsIDAs
IDAsIDAgfTsKIAogSlNBdWRpb0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogRE9NQ29u
c3RydWN0b3JPYmplY3QoSlNBdWRpb0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCi0gICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCisgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChKU0F1ZGlvQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xv
YmFsT2JqZWN0KQogewotICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7Ci0gICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc0RvY3VtZW50KCkpOwotCiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIEpTSFRNTEF1ZGlvRWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9i
YWxPYmplY3QpLCBOb25lKTsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoZXhlYywgMSksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwog
fQogCi1Eb2N1bWVudCogSlNBdWRpb0NvbnN0cnVjdG9yOjpkb2N1bWVudCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9nbG9iYWxPYmplY3QtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7Ci19Ci0KIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0QXVkaW8o
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgbmVlZCB0aGUgY2FsbCB0b0pT
IG9uIHRoZSBkb2N1bWVudCBsaWtlIEpTSW1hZ2VDb25zdHJ1Y3Rvcj8KQEAgLTgwLDEzICs3MSw2
IEBAIENvbnN0cnVjdFR5cGUgSlNBdWRpb0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKENv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0
OwogfQogCi12b2lkIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6bWFyaygpCi17Ci0gICAgRE9NT2JqZWN0
OjptYXJrKCk7Ci0gICAgaWYgKCFtX2dsb2JhbE9iamVjdC0+bWFya2VkKCkpCi0gICAgICAgIG1f
Z2xvYmFsT2JqZWN0LT5tYXJrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb0NvbnN0cnVjdG9yLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rv
ci5oCmluZGV4IDNkODQ1NDkuLjM0OTY4OTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnN0cnVjdG9yLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
Q29uc3RydWN0b3IuaApAQCAtMzQsMjEgKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGNsYXNzIEpTQXVkaW9Db25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9i
amVjdCB7CisgICAgY2xhc3MgSlNBdWRpb0NvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVj
dG9yV2l0aERvY3VtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEpTQXVkaW9Db25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKLSAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3Q7Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvIHNfaW5mbzsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
OjpDb25zdHJ1Y3REYXRhJik7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5m
byogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQotCi0gICAgICAgIEpTRE9N
R2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA1M2Q5MjU4Li42NDc1YmM0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTIsNiArMiw3IEBACiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxz
YW1Ad2Via2l0Lm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMyw3IEBACiAj
ZGVmaW5lIEpTRE9NQmluZGluZ19oCiAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiIC8vIEZvciBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudAog
I2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvTG9va3Vw
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CkBAIC01OSw4ICs2MSwzNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgLy8gQmFzZSBjbGFzcyBm
b3IgYWxsIGNvbnN0cnVjdG9yIG9iamVjdHMgaW4gdGhpcyBiaW5kaW5nIGV4Y2VwdCBXaW5kb3cu
Ci0gICAgY2xhc3MgRE9NQ29uc3RydWN0b3JPYmplY3QgOiBwdWJsaWMgRE9NT2JqZWN0IHsKKyAg
ICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgY29sYXBzZSBpbnRvIERPTU9iamVjdCBvbmNl
IGFsbCBET01PYmplY3RzIGFyZQorICAgIC8vIHVwZGF0ZWQgdG8gc3RvcmUgYSBnbG9iYWxPYmpl
Y3QgcG9pbnRlci4KKyAgICBjbGFzcyBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlciA6IHB1Ymxp
YyBET01PYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CisKKyAgICAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIERPTU9i
amVjdFdpdGhHbG9iYWxQb2ludGVyKFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgIDogRE9NT2Jq
ZWN0KHN0cnVjdHVyZSkKKyAgICAgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBtYXJrKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgRE9NT2JqZWN0OjptYXJrKCk7CisgICAgICAgICAgICBpZiAoIW1f
Z2xvYmFsT2JqZWN0LT5tYXJrZWQoKSkKKyAgICAgICAgICAgICAgICBtX2dsb2JhbE9iamVjdC0+
bWFyaygpOworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgSlNET01HbG9iYWxPYmpl
Y3QqIG1fZ2xvYmFsT2JqZWN0OworICAgIH07CisKKyAgICAvLyBCYXNlIGNsYXNzIGZvciBhbGwg
Y29uc3RydWN0b3Igb2JqZWN0cyBpbiB0aGUgSlNDIGJpbmRpbmdzLgorICAgIGNsYXNzIERPTUNv
bnN0cnVjdG9yT2JqZWN0IDogcHVibGljIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpAQCAtNjgsOSAr
OTksMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIGV4cGxpY2l0IERPTUNvbnN0cnVjdG9yT2JqZWN0KFBhc3NSZWZQdHI8SlNDOjpT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogRE9NT2JqZWN0KHN0cnVjdHVyZSkK
KyAgICAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QoUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4g
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAg
OiBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIENvbnN0cnVjdG9ycyB1c2luZyB0
aGlzIGJhc2UgY2xhc3MgZGVwZW5kIG9uIGJlaW5nIGluIGEgRG9jdW1lbnQgYW5kCisgICAgLy8g
Y2FuIG5ldmVyIGJlIHVzZWQgZnJvbSBhIFdvcmtlckNvbnRleHQuCisgICAgY2xhc3MgRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworICAg
IHB1YmxpYzoKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICAgICAgfQorICAgIHByb3RlY3RlZDoKKyAgICAgICAgRE9NQ29uc3Ry
dWN0b3JXaXRoRG9jdW1lbnQoUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgOiBET01Db25zdHJ1
Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKICAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3Vt
ZW50KCkpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdl
Q29uc3RydWN0b3IuY3BwCmluZGV4IDdiYjJjNWYuLjQ5MGU1MGUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDIwICszNSwxMSBAQCBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEpTSW1hZ2VDb25zdHJ1Y3Rvcik7CiBjb25zdCBDbGFzc0luZm8g
SlNJbWFnZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgMCwgMCwg
MCB9OwogCiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1
Y3Rvck9iamVjdChKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPm9iamVjdFByb3RvdHlwZSgpKSkKLSAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dCkKKyAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKLSAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzRG9jdW1lbnQoKSk7Ci0KICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgSlNIVE1MSW1hZ2VFbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9i
amVjdCksIE5vbmUpOwogfQogCi1Eb2N1bWVudCogSlNJbWFnZUNvbnN0cnVjdG9yOjpkb2N1bWVu
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9nbG9iYWxP
YmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci19Ci0KIHN0YXRpYyBKU09iamVjdCog
Y29uc3RydWN0SW1hZ2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgYm9vbCB3aWR0aFNldCA9IGZhbHNlOwpAQCAtODcs
MTEgKzc4LDQgQEAgQ29uc3RydWN0VHlwZSBKU0ltYWdlQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEoQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKICAgICByZXR1cm4gQ29uc3RydWN0
VHlwZUhvc3Q7CiB9CiAKLXZvaWQgSlNJbWFnZUNvbnN0cnVjdG9yOjptYXJrKCkKLXsKLSAgICBE
T01PYmplY3Q6Om1hcmsoKTsKLSAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0LT5tYXJrZWQoKSkKLSAg
ICAgICAgbV9nbG9iYWxPYmplY3QtPm1hcmsoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKaW5kZXggNTI4YTlkMi4u
MDUyNWY1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0
b3IuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCkBAIC0y
NSwxOSArMjUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSlNJbWFn
ZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKKyAgICBjbGFzcyBK
U0ltYWdlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqKTsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKLSAgICAgICAg
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERh
dGEmKTsKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQotCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBt
X2dsb2JhbE9iamVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggYzIxZTRlYi4uMmQ0NzYwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcApAQCAtMzgsOCArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjb25zdCBDbGFzc0luZm8gSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogCiBKU01l
c3NhZ2VDaGFubmVsQ29uc3RydWN0b3I6OkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBET01D
b25zdHJ1Y3Rvck9iamVjdChKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkKLSAgICAsIG1fZ2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCkKKyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTTWVzc2FnZUNo
YW5uZWxDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIEpTTWVzc2FnZUNoYW5uZWxQcm90b3R5cGU6OnNlbGYoZXhlYywg
Z2xvYmFsT2JqZWN0KSwgTm9uZSk7CiB9CkBAIC00OCwxMSArNDcsNiBAQCBKU01lc3NhZ2VDaGFu
bmVsQ29uc3RydWN0b3I6On5KU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IoKQogewogfQogCi1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3I6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCiBDb25zdHJ1Y3RUeXBlIEpTTWVzc2FnZUNo
YW5uZWxDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
OwpAQCAtNjgsMTEgKzYyLDQgQEAgSlNPYmplY3QqIEpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNvbnMKICAgICByZXR1cm4g
YXNPYmplY3QodG9KUyhleGVjLCBNZXNzYWdlQ2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQpKSk7CiB9
CiAKLXZvaWQgSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOjptYXJrKCkKLXsKLSAgICBET01P
YmplY3Q6Om1hcmsoKTsKLSAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0LT5tYXJrZWQoKSkKLSAgICAg
ICAgbV9nbG9iYWxPYmplY3QtPm1hcmsoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0
b3IuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmgK
aW5kZXggMTA5NmY1OS4uZDk1ODc2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5oCkBAIC0zNywxNiArMzcsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5m
bygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0KICAgICAgICAgdmlydHVhbCBib29sIGltcGxl
bWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3Qq
LCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKICAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5
cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKLQotICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFyaygpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNET01HbG9iYWxPYmpl
Y3QqIG1fZ2xvYmFsT2JqZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGViNjg5ZTQu
LjBlMGUwODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1
Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNw
cApAQCAtMzUsMjEgKzM1LDEyIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPcHRpb25D
b25zdHJ1Y3Rvcik7CiBjb25zdCBDbGFzc0luZm8gSlNPcHRpb25Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiT3B0aW9uQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTT3B0aW9uQ29uc3RydWN0
b3I6OkpTT3B0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQotICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNPcHRpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KQotICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NQ29uc3RydWN0
b3JXaXRoRG9jdW1lbnQoSlNPcHRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgQVNTRVJU
KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7Ci0KICAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MT3B0aW9u
RWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKICAgICBw
dXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgNCks
IFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwogfQogCi1Eb2N1bWVudCogSlNPcHRpb25D
b25zdHJ1Y3Rvcjo6ZG9jdW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotfQot
CiBzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdEhUTUxPcHRpb25FbGVtZW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEpTT3B0aW9uQ29uc3RydWN0b3IqPihj
b25zdHJ1Y3RvciktPmRvY3VtZW50KCk7CkBAIC04NSwxMSArNzYsNSBAQCBDb25zdHJ1Y3RUeXBl
IEpTT3B0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YQogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIAotdm9pZCBKU09w
dGlvbkNvbnN0cnVjdG9yOjptYXJrKCkKLXsKLSAgICBET01PYmplY3Q6Om1hcmsoKTsKLSAgICBp
ZiAoIW1fZ2xvYmFsT2JqZWN0LT5tYXJrZWQoKSkKLSAgICAgICAgbV9nbG9iYWxPYmplY3QtPm1h
cmsoKTsKLX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
T3B0aW9uQ29uc3RydWN0b3IuaAppbmRleCAwNDgzZmI2Li4yNDZlN2ZhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaApAQCAtMjYsMTkgKzI2LDE0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEpTT3B0aW9uQ29uc3RydWN0b3IgOiBwdWJs
aWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworICAgIGNsYXNzIEpTT3B0aW9uQ29uc3RydWN0b3Ig
OiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgewogICAgIHB1YmxpYzoKICAgICAg
ICAgSlNPcHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
Kik7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRp
YyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgbWFyaygpOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZz
X2luZm87IH0KLQotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjdlNzQ2ZS4uZjBh
MmE5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENv
bnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4
Q29uc3RydWN0b3IuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNv
bnN0IENsYXNzSW5mbyBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNXZWJLaXRDU1NNYXRy
aXhDb25zdHJ1Y3Rvcjo6SlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rv
ck9iamVjdChKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCisgICAgOiBET01Db25zdHJ1Y3Rvck9iamVj
dChKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNXZWJLaXRDU1NNYXRyaXhQcm90b3R5
cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDEpLCBSZWFkT25seXxEb250
RGVsZXRlfERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRQb2ludENvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2lu
dENvbnN0cnVjdG9yLmNwcAppbmRleCAzNzI2NzNlLi5jZDhlM2IzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBjb25zdCBDbGFzc0luZm8gSlNXZWJLaXRQb2ludENv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXZWJLaXRQb2ludENvbnN0cnVjdG9yIiwgMCwgMCwgMCB9
OwogCiBKU1dlYktpdFBvaW50Q29uc3RydWN0b3I6OkpTV2ViS2l0UG9pbnRDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBE
T01Db25zdHJ1Y3Rvck9iamVjdChKU1dlYktpdFBvaW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkKKyAgICA6IERPTUNvbnN0cnVj
dG9yT2JqZWN0KEpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGly
ZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTV2ViS2l0UG9pbnRQcm90b3R5
cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDIpLCBSZWFkT25seXxEb250
RGVsZXRlfERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0
b3IuY3BwCmluZGV4IDg5YzI4ZDIuLmU1YTU1NmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnN0cnVjdG9yLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiV29y
a2VyQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTV29ya2VyQ29uc3RydWN0b3I6OkpTV29y
a2VyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQotICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNXb3JrZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQorICAgIDog
RE9NQ29uc3RydWN0b3JPYmplY3QoSlNXb3JrZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTV29ya2VyUHJvdG90
eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwogICAgIHB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCAxKSwgUmVhZE9ubHl8RG9u
dERlbGV0ZXxEb250RW51bSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzgwYjU1NC4uNmJmODk5MCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcApA
QCAtMzMsMTcgKzMzLDExIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNYTUxIdHRwUmVx
dWVzdENvbnN0cnVjdG9yKTsKIGNvbnN0IENsYXNzSW5mbyBKU1hNTEh0dHBSZXF1ZXN0Q29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IiLCAwLCAwLCAwIH07
CiAKIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6SlNYTUxIdHRwUmVxdWVzdENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAg
ICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQotICAgICwgbV9n
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNY
TUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKSksIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3QoZXhlYy0+
cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNYTUxIdHRwUmVxdWVzdFByb3RvdHlwZTo6c2Vs
ZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9nbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLX0KLQogc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RYTUxIdHRwUmVxdWVzdChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgY29uc3QgQXJnTGlzdCYpCiB7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PEpTWE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3Rvcio+KGNvbnN0cnVjdG9yKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwpAQCAtNjAsMTEgKzU0LDQgQEAgQ29uc3RydWN0VHlwZSBKU1hNTEh0dHBSZXF1ZXN0Q29u
c3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYgY29uc3QKICAgICByZXR1
cm4gQ29uc3RydWN0VHlwZUhvc3Q7CiB9CiAKLXZvaWQgSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVj
dG9yOjptYXJrKCkKLXsKLSAgICBET01PYmplY3Q6Om1hcmsoKTsKLSAgICBpZiAoIW1fZ2xvYmFs
T2JqZWN0LT5tYXJrZWQoKSkKLSAgICAgICAgbV9nbG9iYWxPYmplY3QtPm1hcmsoKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yLmgKaW5kZXggZjBiMTBjOC4uMmNjNGZjZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oCkBAIC0y
NywxNSArMjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSlNYTUxIdHRwUmVxdWVz
dENvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICBKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwot
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKIHByaXZhdGU6CiAgICAgdmlydHVhbCBKU0M6OkNv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB2
aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAm
c19pbmZvOyB9Ci0KLSAgICBKU0RPTUdsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNY
U0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3BwCmluZGV4IDA2ZWZmYWQuLjRmYjFlNWQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNYU0xUUHJvY2Vz
c29yQ29uc3RydWN0b3IpOwogY29uc3QgQ2xhc3NJbmZvIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJYU0xUUHJvY2Vzc29yQ29uc3J1Y3RvciIsIDAsIDAsIDAgfTsKIAog
SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3I6OkpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IERP
TUNvbnN0cnVjdG9yT2JqZWN0KEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCisgICAgOiBET01Db25zdHJ1
Y3Rvck9iamVjdChKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTWFNMVFByb2Nlc3NvclBy
b3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKIH0=
</data>
<flag name="review"
          id="17464"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>