<?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>87315</bug_id>
          
          <creation_ts>2012-05-23 15:34:27 -0700</creation_ts>
          <short_desc>[chromium] make WebTransformationMatrix object usable by non-webkit code</short_desc>
          <delta_ts>2012-05-29 16:42:50 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87788</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>632118</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-23 15:34:27 -0700</bug_when>
    <thetext>There are two ways to do this.  Given the pros and cons, I&apos;m opting for #1 since its a smaller change, and the end-state will be the same in both cases so I don&apos;t think it really matters.

Vollick@ FYI you&apos;ll encounter the same question when wrapping TransformOperations, KeframeList and Animation objects, and I think its trivial enough to do it in the first patch rather than how I did it in two separate patches =)


(1) use &quot;placement new&quot; syntax on the m_private pointer.

pros:
  much simpler code change
cons:
  requires a pointer and double[4][4], therefore will have awkward 68 or 72 byte size, as opposed to nice 64 byte size.
  the size of this data structure will have to change before migration is complete


(2) use #if WEBKIT_IMPLEMENTATION to define a transformationMatrix or a double[4][4], depending on which side of the code we&apos;re on.

pros:
  data structure remains the same size
  removes any pointer craziness in the class
cons:
  requires including TransformationMatrix.h in the WebTransformationMatrix.h file.  (guarded by #if WEBKIT_IMPLEMENTATION)
  larger code change from what it is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632208</commentid>
    <comment_count>1</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-23 17:03:40 -0700</bug_when>
    <thetext>Please disregard my above pros and cons, the are not fully correct.

It turns out I mis-understood what was really involved if we used the placement new approach, there was a big con that we would have to initialize a new local copy of WebCore::TransformationMatrix for every function, do the computation, and copy the data back to the WebTransformationMatrix.

Instead, it works nicely to do option #2, though the pros and cons still dno&apos;t really apply.

For sanity, I also did a quick hacky test, in chromium code that did not have WEBKIT_IMPLEMENTATION defined (render_widget.cc), and made sure WebTransformationMatrix object could be instantiated and used correctly.  It worked just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632210</commentid>
    <comment_count>2</comment_count>
      <attachid>143686</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-23 17:04:21 -0700</bug_when>
    <thetext>Created attachment 143686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632217</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 17:08:13 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632272</commentid>
    <comment_count>4</comment_count>
      <attachid>143686</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-23 18:16:28 -0700</bug_when>
    <thetext>Comment on attachment 143686
Patch

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

&gt; Source/Platform/chromium/public/WebTransformationMatrix.h:51
&gt; +    virtual ~WebTransformationMatrix() { }

I think no need for the virtual here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632358</commentid>
    <comment_count>5</comment_count>
      <attachid>143686</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-05-23 20:15:25 -0700</bug_when>
    <thetext>Comment on attachment 143686
Patch

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

&gt; Source/Platform/chromium/public/WebTransformationMatrix.h:152
&gt; +#if WEBKIT_IMPLEMENTATION

this probably deserves a comment.  shouldn&apos;t you also add a COMPILE_ASSERT ensuring that the sizes are the same?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636161</commentid>
    <comment_count>6</comment_count>
      <attachid>144576</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-29 10:05:34 -0700</bug_when>
    <thetext>Created attachment 144576
removed virtual, added comment, added compile assert

Thanks for the comments, here&apos;s the latest patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636507</commentid>
    <comment_count>7</comment_count>
      <attachid>144576</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-29 15:50:36 -0700</bug_when>
    <thetext>Comment on attachment 144576
removed virtual, added comment, added compile assert

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

&gt; Source/Platform/chromium/public/WebTransformationMatrix.h:52
&gt;      void reset();

do we still need a reset()? looks like there&apos;s no implementation or caller of it now and we have makeIdentity() to turn an instance into a default-constructed instance

&gt; Source/WebCore/platform/chromium/support/WebTransformationMatrix.cpp:67
&gt; +    bool isEqual = (m_private == t.m_private);
&gt;      return isEqual;

I would just do:

return m_private == other.m_private</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636514</commentid>
    <comment_count>8</comment_count>
      <attachid>144637</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-29 16:07:56 -0700</bug_when>
    <thetext>Created attachment 144637
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636553</commentid>
    <comment_count>9</comment_count>
      <attachid>144637</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-29 16:42:44 -0700</bug_when>
    <thetext>Comment on attachment 144637
Patch for landing

Clearing flags on attachment: 144637

Committed r118857: &lt;http://trac.webkit.org/changeset/118857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636554</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-29 16:42:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143686</attachid>
            <date>2012-05-23 17:04:21 -0700</date>
            <delta_ts>2012-05-29 10:05:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87315-20120523170420.patch</filename>
            <type>text/plain</type>
            <size>18761</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1MmJhNjQ2ZmQwNTM3
OWE4MDE4NmM3MmFhZjMwNTQ4MGI4ZWMxNmZiLi5lMjJkYmMwZWJiMTAyYmQwNGRhMjY4YWQ3MTc0
NWU4MTk1YWI0NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMyAg
U2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIG1ha2UgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggb2JqZWN0IHVzYWJsZSBieSBub24td2Vi
a2l0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3MzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6On5XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6
CisgICAgICAgIChXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisKIDIwMTItMDUtMjMgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMTgyMTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY3ODcyMmE4MjQzZWU1Mjk2
MGNiMDA5ZDM0YTUxYTg0Y2I3YWE0Zi4uM2MxZDBhNDRmZjE1NzVkZmI4ZmI4NGMyYmZiMjZhMjFh
ZTI0ZmIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTA1LTIzICBTaGF3biBT
aW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gbWFr
ZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvYmplY3QgdXNhYmxlIGJ5IG5vbi13ZWJraXQgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODczMTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNo
YW5nZSBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCBieSB3aGV0aGVyIGl0CisgICAg
ICAgIGNvbXBpbGVzLiBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlcyBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6aW52ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0
bzJkVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
Om11bHRpcGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1h
a2VJZGVudGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0
cmFuc2xhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJh
bnNsYXRlM2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJh
bnNsYXRlUmlnaHQzZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2Fs
ZU5vblVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2NhbGUzZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlM2Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tld1gpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tld1kpOgorICAgICAgICAo
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YXBwbHlQZXJzcGVjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpibGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpoYXNQZXJzcGVjdGl2ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0ludmVydGlibGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNCYWNrRmFjZVZpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJZGVudGl0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0lkZW50aXR5T3JUcmFu
c2xhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0lu
dGVnZXJUcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjptMTEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0
TTExKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0xMik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMTIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTEzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0xMyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMTQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6c2V0TTE0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg6Om0yMSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzZXRNMjEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTIy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0yMik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMjMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTIzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0yNCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMjQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6bTMxKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnNldE0zMSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjptMzIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTMy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0zMyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMzMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTM0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0zNCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4OjptNDEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6c2V0TTQxKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om00Mik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpz
ZXRNNDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTQzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE00Myk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptNDQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTQ0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6c2V0QSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpiKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNl
dEIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Yyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRDKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0RCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OjplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnNldEUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Zik6
CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRGKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvV2ViQ29yZVRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFBvaW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFF1YWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVjdFBvaW50KToKKwogMjAxMi0w
NS0yMyAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBb
Y2hyb21pdW1dIERvbVN0b3JhZ2UgZXZlbnRzIGhhbmRsaW5nIG5lZWRzIFRMQyAoMykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXguaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaAppbmRleCBhYzRhMmMwNTEwZTljZjdmZmRiZDM3YzM0NGY5N2NlZjdkMGJlODgw
Li5kMWZmY2U0YTQ1MmE0OWQ2ZTQ4NWI2OTYzY2EzNTA3MTJiYzRmZjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oCkBAIC0zNSwxNSArMzUsMTIgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5j
bHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNlbmRpZgogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CiAjaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHsKQEAgLTUxLDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3Vi
bGUgZik7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmKTsKLSAgICB+V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSB7IHJlc2V0KCk7IH0K
KyAgICB2aXJ0dWFsIH5XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpIHsgfQogICAgIHZvaWQgcmVz
ZXQoKTsKIAogICAgIC8vIE9wZXJhdGlvbnMgdGhhdCByZXR1cm4gYSBzZXBhcmF0ZSBtYXRyaXgg
YW5kIGRvIG5vdCBtb2RpZnkgdGhpcyBvbmUuCkBAIC0xMzYsNyArMTMzLDcgQEAgcHVibGljOgog
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIC8vIENvbnZlcnNpb25zIGJldHdlZW4gV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmQgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXgKICAgICBleHBsaWNpdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0b1dlYkNvcmVUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0b1dlYkNvcmVUcmFuc2Zvcm0oKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiB0
aGVzZSBtYXAgZnVuY3Rpb25zIHNob3VsZCBub3QgZXhpc3QsIHNob3VsZCBiZSB1c2luZyBDQ01h
dGhVdGlsCiAgICAgLy8gaW5zdGVhZC4gRXZlbnR1YWxseSBDQ01hdGhVdGlsIGZ1bmN0aW9ucyBj
b3VsZCBiZSBtZXJnZWQgaGVyZSwgYnV0IGl0cwpAQCAtMTUxLDcgKzE0OCwxMiBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFdlYlByaXZhdGVPd25QdHI8V2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg+IG1fcHJpdmF0ZTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJpdmF0ZTsKKyNlbHNlCisg
ICAgZG91YmxlIG1fbWF0cml4WzRdWzRdOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggYmM4NmE1
ZTJlOWQ0ZWE1NjA4MTY2NjY2OTAwNDkwNGQ3ODA3MTNlZS4uOTFmMjU4MWI1OTVjZjQ5MTE3NmU4
YWFiOWRmYTcyZTU3N2I4MGVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAKQEAgLTM2LDM5ICszNiwzNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vICAgICAgICBh
cyBwb3NzaWJsZS4KIAogV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4KCkKLSAgICA6IG1fcHJpdmF0ZShuZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkKKyAg
ICA6IG1fcHJpdmF0ZSgpCiB7CiB9CiAKIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwg
ZG91YmxlIGUsIGRvdWJsZSBmKQotICAgIDogbV9wcml2YXRlKG5ldyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeChhLCBiLCBjLCBkLCBlLCBmKSkKKyAgICA6IG1fcHJpdmF0ZShhLCBiLCBjLCBkLCBlLCBm
KQogewogfQogCiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCi0gICAgOiBtX3ByaXZhdGUobmV3
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCp0Lm1fcHJpdmF0ZS5nZXQoKSkpCisgICAgOiBtX3ByaXZh
dGUodC5tX3ByaXZhdGUpCiB7CiB9CiAKIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKLSAgICA6IG1f
cHJpdmF0ZShuZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgodCkpCisgICAgOiBtX3ByaXZhdGUodCkK
IHsKIH0KIAotdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVzZXQoKQotewotICAgIG1f
cHJpdmF0ZS5yZXNldCgwKTsKLX0KLQogV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvcj0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHQpCiB7Ci0gICAgKm1fcHJpdmF0ZS5nZXQoKSA9ICp0Lm1fcHJpdmF0ZS5nZXQoKTsKKyAgICBt
X3ByaXZhdGUgPSB0Lm1fcHJpdmF0ZTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIGJvb2wgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yPT0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpIGNvbnN0CiB7Ci0gICAgYm9vbCBpc0VxdWFsID0gKCptX3ByaXZhdGUuZ2V0KCkg
PT0gKnQubV9wcml2YXRlLmdldCgpKTsKKyAgICBib29sIGlzRXF1YWwgPSAobV9wcml2YXRlID09
IHQubV9wcml2YXRlKTsKICAgICByZXR1cm4gaXNFcXVhbDsKIH0KIApAQCAtODIsMzgwICs3Nywz
ODAgQEAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9w
ZXJhdG9yKihjb25zdCBXZWJUcmFuc2Zvcm1hdGkKIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCByZXN1bHQ7Ci0gICAgKnJlc3VsdC5tX3ByaXZhdGUuZ2V0KCkgPSBtX3By
aXZhdGUtPmludmVyc2UoKTsKKyAgICByZXN1bHQubV9wcml2YXRlID0gbV9wcml2YXRlLmludmVy
c2UoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dG8yZFRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggcmVzdWx0OwotICAgICpyZXN1bHQubV9wcml2YXRlLmdldCgp
ID0gbV9wcml2YXRlLT50bzJkVHJhbnNmb3JtKCk7CisgICAgcmVzdWx0Lm1fcHJpdmF0ZSA9IG1f
cHJpdmF0ZS50bzJkVHJhbnNmb3JtKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHkoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpCiB7Ci0gICAgbV9wcml2YXRlLT5tdWx0aXBseSgqdC5tX3ByaXZhdGUuZ2V0KCkp
OworICAgIG1fcHJpdmF0ZS5tdWx0aXBseSh0Lm1fcHJpdmF0ZSk7CiB9CiAKIHZvaWQgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om1ha2VJZGVudGl0eSgpCiB7Ci0gICAgbV9wcml2YXRlLT5tYWtl
SWRlbnRpdHkoKTsKKyAgICBtX3ByaXZhdGUubWFrZUlkZW50aXR5KCk7CiB9CiAKIHZvaWQgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSkKIHsK
LSAgICBtX3ByaXZhdGUtPnRyYW5zbGF0ZSh0eCwgdHkpOworICAgIG1fcHJpdmF0ZS50cmFuc2xh
dGUodHgsIHR5KTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJhbnNsYXRl
M2QoZG91YmxlIHR4LCBkb3VibGUgdHksIGRvdWJsZSB0eikKIHsKLSAgICBtX3ByaXZhdGUtPnRy
YW5zbGF0ZTNkKHR4LCB0eSwgdHopOworICAgIG1fcHJpdmF0ZS50cmFuc2xhdGUzZCh0eCwgdHks
IHR6KTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJhbnNsYXRlUmlnaHQz
ZChkb3VibGUgdHgsIGRvdWJsZSB0eSwgZG91YmxlIHR6KQogewotICAgIG1fcHJpdmF0ZS0+dHJh
bnNsYXRlUmlnaHQzZCh0eCwgdHksIHR6KTsKKyAgICBtX3ByaXZhdGUudHJhbnNsYXRlUmlnaHQz
ZCh0eCwgdHksIHR6KTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGUo
ZG91YmxlIHMpCiB7Ci0gICAgbV9wcml2YXRlLT5zY2FsZShzKTsKKyAgICBtX3ByaXZhdGUuc2Nh
bGUocyk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlTm9uVW5pZm9y
bShkb3VibGUgc3gsIGRvdWJsZSBzeSkKIHsKLSAgICBtX3ByaXZhdGUtPnNjYWxlTm9uVW5pZm9y
bShzeCwgc3kpOworICAgIG1fcHJpdmF0ZS5zY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKIH0KIAog
dm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGUzZChkb3VibGUgc3gsIGRvdWJsZSBz
eSwgZG91YmxlIHN6KQogewotICAgIG1fcHJpdmF0ZS0+c2NhbGUzZChzeCwgc3ksIHN6KTsKKyAg
ICBtX3ByaXZhdGUuc2NhbGUzZChzeCwgc3ksIHN6KTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6cm90YXRlKGRvdWJsZSBhbmdsZSkKIHsKLSAgICBtX3ByaXZhdGUtPnJvdGF0
ZShhbmdsZSk7CisgICAgbV9wcml2YXRlLnJvdGF0ZShhbmdsZSk7CiB9CiAKIHZvaWQgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRvdWJsZSByeCwgZG91YmxlIHJ5LCBkb3VibGUg
cnopCiB7Ci0gICAgbV9wcml2YXRlLT5yb3RhdGUzZChyeCwgcnksIHJ6KTsKKyAgICBtX3ByaXZh
dGUucm90YXRlM2QocngsIHJ5LCByeik7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnJvdGF0ZTNkKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkK
IHsKLSAgICBtX3ByaXZhdGUtPnJvdGF0ZTNkKHgsIHksIHosIGFuZ2xlKTsKKyAgICBtX3ByaXZh
dGUucm90YXRlM2QoeCwgeSwgeiwgYW5nbGUpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4Ojpza2V3WChkb3VibGUgYW5nbGUpCiB7Ci0gICAgbV9wcml2YXRlLT5za2V3WChhbmds
ZSk7CisgICAgbV9wcml2YXRlLnNrZXdYKGFuZ2xlKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKQogewotICAgIG1fcHJpdmF0ZS0+c2tld1ko
YW5nbGUpOworICAgIG1fcHJpdmF0ZS5za2V3WShhbmdsZSk7CiB9CiAKIHZvaWQgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6OmFwcGx5UGVyc3BlY3RpdmUoZG91YmxlIHApCiB7Ci0gICAgbV9wcml2
YXRlLT5hcHBseVBlcnNwZWN0aXZlKHApOworICAgIG1fcHJpdmF0ZS5hcHBseVBlcnNwZWN0aXZl
KHApOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpibGVuZChjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKQogewotICAgIG1fcHJp
dmF0ZS0+YmxlbmQoKmZyb20ubV9wcml2YXRlLmdldCgpLCBwcm9ncmVzcyk7CisgICAgbV9wcml2
YXRlLmJsZW5kKGZyb20ubV9wcml2YXRlLCBwcm9ncmVzcyk7CiB9CiAKIGJvb2wgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6Omhhc1BlcnNwZWN0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5oYXNQZXJzcGVjdGl2ZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUuaGFzUGVyc3Bl
Y3RpdmUoKTsKIH0KIAogYm9vbCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnZlcnRpYmxl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0ludmVydGlibGUoKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmlzSW52ZXJ0aWJsZSgpOwogfQogCiBib29sIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4Ojppc0JhY2tGYWNlVmlzaWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+aXNCYWNrRmFjZVZpc2libGUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmlzQmFja0Zh
Y2VWaXNpYmxlKCk7CiB9CiAKIGJvb2wgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSWRlbnRp
dHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmlzSWRlbnRpdHkoKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmlzSWRlbnRpdHkoKTsKIH0KIAogYm9vbCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6aXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpOwogfQogCiBib29sIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4Ojppc0ludGVnZXJUcmFuc2xhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+aXNJbnRlZ2VyVHJhbnNsYXRpb24oKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmlzSW50
ZWdlclRyYW5zbGF0aW9uKCk7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
bTExKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tMTEoKTsKKyAgICByZXR1cm4g
bV9wcml2YXRlLm0xMSgpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRN
MTEoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNMTEoZik7CisgICAgbV9wcml2YXRl
LnNldE0xMShmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMTIoKSBj
b25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0xMigpOworICAgIHJldHVybiBtX3ByaXZh
dGUubTEyKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0xMihkb3Vi
bGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE0xMihmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTEy
KGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0xMygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTEzKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tMTMo
KTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTEzKGRvdWJsZSBmKQog
ewotICAgIG1fcHJpdmF0ZS0+c2V0TTEzKGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMTMoZik7CiB9
CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTE0KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5tMTQoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm0xNCgpOwogfQog
CiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMTQoZG91YmxlIGYpCiB7Ci0gICAg
bV9wcml2YXRlLT5zZXRNMTQoZik7CisgICAgbV9wcml2YXRlLnNldE0xNChmKTsKIH0KIAogZG91
YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMjEoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPm0yMSgpOworICAgIHJldHVybiBtX3ByaXZhdGUubTIxKCk7CiB9CiAKIHZvaWQg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0yMShkb3VibGUgZikKIHsKLSAgICBtX3ByaXZh
dGUtPnNldE0yMShmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTIxKGYpOwogfQogCiBkb3VibGUgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om0yMigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bTIyKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tMjIoKTsKIH0KIAogdm9pZCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTIyKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0
TTIyKGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMjIoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6bTIzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tMjMo
KTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm0yMygpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXRNMjMoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNMjMoZik7
CisgICAgbV9wcml2YXRlLnNldE0yMyhmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjptMjQoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0yNCgpOworICAg
IHJldHVybiBtX3ByaXZhdGUubTI0KCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnNldE0yNChkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE0yNChmKTsKKyAgICBt
X3ByaXZhdGUuc2V0TTI0KGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
Om0zMSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTMxKCk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5tMzEoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0
TTMxKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTMxKGYpOworICAgIG1fcHJpdmF0
ZS5zZXRNMzEoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTMyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tMzIoKTsKKyAgICByZXR1cm4gbV9wcml2
YXRlLm0zMigpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMzIoZG91
YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNMzIoZik7CisgICAgbV9wcml2YXRlLnNldE0z
MihmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMzMoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0zMygpOworICAgIHJldHVybiBtX3ByaXZhdGUubTMz
KCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0zMyhkb3VibGUgZikK
IHsKLSAgICBtX3ByaXZhdGUtPnNldE0zMyhmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTMzKGYpOwog
fQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0zNCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS0+bTM0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tMzQoKTsKIH0K
IAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTM0KGRvdWJsZSBmKQogewotICAg
IG1fcHJpdmF0ZS0+c2V0TTM0KGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMzQoZik7CiB9CiAKIGRv
dWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTQxKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5tNDEoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm00MSgpOwogfQogCiB2b2lk
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNNDEoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2
YXRlLT5zZXRNNDEoZik7CisgICAgbV9wcml2YXRlLnNldE00MShmKTsKIH0KIAogZG91YmxlIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4OjptNDIoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZh
dGUtPm00MigpOworICAgIHJldHVybiBtX3ByaXZhdGUubTQyKCk7CiB9CiAKIHZvaWQgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNldE00Mihkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNl
dE00MihmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTQyKGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6Om00MygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTQz
KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tNDMoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6c2V0TTQzKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTQzKGYp
OworICAgIG1fcHJpdmF0ZS5zZXRNNDMoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6bTQ0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tNDQoKTsKKyAg
ICByZXR1cm4gbV9wcml2YXRlLm00NCgpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjpzZXRNNDQoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNNDQoZik7CisgICAg
bV9wcml2YXRlLnNldE00NChmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjphKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5hKCk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5hKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEEoZG91
YmxlIGEpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRBKGEpOworICAgIG1fcHJpdmF0ZS5zZXRBKGEp
OwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmIoKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGUtPmIoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmIoKTsKIH0KIAog
dm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Qihkb3VibGUgYikKIHsKLSAgICBtX3By
aXZhdGUtPnNldEIoYik7CisgICAgbV9wcml2YXRlLnNldEIoYik7CiB9CiAKIGRvdWJsZSBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6YygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
YygpOworICAgIHJldHVybiBtX3ByaXZhdGUuYygpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXRDKGRvdWJsZSBjKQogewotICAgIG1fcHJpdmF0ZS0+c2V0QyhjKTsKKyAg
ICBtX3ByaXZhdGUuc2V0QyhjKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5kKCk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5kKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEQoZG91
YmxlIGQpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXREKGQpOworICAgIG1fcHJpdmF0ZS5zZXREKGQp
OwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmUoKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGUtPmUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmUoKTsKIH0KIAog
dm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0RShkb3VibGUgZSkKIHsKLSAgICBtX3By
aXZhdGUtPnNldEUoZSk7CisgICAgbV9wcml2YXRlLnNldEUoZSk7CiB9CiAKIGRvdWJsZSBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
ZigpOworICAgIHJldHVybiBtX3ByaXZhdGUuZigpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXRGKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0RihmKTsKKyAg
ICBtX3ByaXZhdGUuc2V0RihmKTsKIH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXgmIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojp0b1dlYkNvcmVUcmFuc2Zvcm0oKSBjb25zdAorVHJhbnNmb3JtYXRp
b25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvV2ViQ29yZVRyYW5zZm9ybSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICptX3ByaXZhdGUuZ2V0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZTsKIH0KIAogRmxvYXRSZWN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXBSZWN0
KHJlY3QpOworICAgIHJldHVybiBtX3ByaXZhdGUubWFwUmVjdChyZWN0KTsKIH0KIAogSW50UmVj
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBj
b25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1hcFJlY3QocmVjdCk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5tYXBSZWN0KHJlY3QpOwogfQogCiBGbG9hdFBvaW50M0QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Om1hcFBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5tYXBQb2ludChwKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm1h
cFBvaW50KHApOwogfQogCiBGbG9hdFBvaW50IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQ
b2ludChjb25zdCBGbG9hdFBvaW50JiBwKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUt
Pm1hcFBvaW50KHApOworICAgIHJldHVybiBtX3ByaXZhdGUubWFwUG9pbnQocCk7CiB9CiAKIElu
dFBvaW50IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBJbnRQb2ludCYg
cCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXBQb2ludChwKTsKKyAgICByZXR1
cm4gbV9wcml2YXRlLm1hcFBvaW50KHApOwogfQogCiBGbG9hdFF1YWQgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg6Om1hcFF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPm1hcFF1YWQocXVhZCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBR
dWFkKHF1YWQpOwogfQogCiBGbG9hdFBvaW50IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpwcm9q
ZWN0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCwgYm9vbCogY2xhbXBlZCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5wcm9qZWN0UG9pbnQocCwgY2xhbXBlZCk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5wcm9qZWN0UG9pbnQocCwgY2xhbXBlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144576</attachid>
            <date>2012-05-29 10:05:34 -0700</date>
            <delta_ts>2012-05-29 16:07:52 -0700</delta_ts>
            <desc>removed virtual, added comment, added compile assert</desc>
            <filename>bug-87315-20120529100534.patch</filename>
            <type>text/plain</type>
            <size>19572</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YWE0M2MzMzI5ZWVm
MmZiZmMxYWZmNmU3YjY4YWMwYjMzNzczYjM5Li5kMTU4YWQ4OWIxZmY3OGFkYmRiNzhmOTkzZThh
OWNmNGE0NjZmOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMyAg
U2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIG1ha2UgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggb2JqZWN0IHVzYWJsZSBieSBub24td2Vi
a2l0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3MzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6On5XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6
CisgICAgICAgIChXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisKIDIwMTItMDUtMjUgIEtpbnVr
byBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRGVw
cmVjYXRlIEZpbGVVdGlsaXRpZXM6OmdldEZpbGVTaXplIGFuZCBnZXRGaWxlTW9kaWZpZWRUaW1l
IGluIGZhdm9yIG9mIGdldEZpbGVNZXRhZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdjMjcxM2E5OTQ1NTVi
MjA3ZjJlNmM5ODk4OTI2ZDdmOTZlNTA0Y2QuLjg5MjgxZjJmYmE5OTMzM2ZhMmE0OGNiOTc2Y2U5
MjExMWI2NGUyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAxMi0wNS0yMyAgU2hh
d24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IG1ha2UgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggb2JqZWN0IHVzYWJsZSBieSBub24td2Via2l0
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
MzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBhbmQgYnkgd2hldGhlciBpdAor
ICAgICAgICBjb21waWxlcy4gVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZXMgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9u
TWF0cml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6OmludmVyc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6dG8yZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjptdWx0aXBseSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjptYWtlSWRlbnRpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnRyYW5zbGF0ZTNkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnRyYW5zbGF0ZVJpZ2h0M2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2NhbGVOb25Vbmlmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnNjYWxlM2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
cm90YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0
ZTNkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXdYKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXdZKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmFwcGx5UGVyc3BlY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aGFzUGVyc3BlY3RpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnZlcnRpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzQmFja0ZhY2VWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSWRlbnRpdHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJZGVudGl0eU9y
VHJhbnNsYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
aXNJbnRlZ2VyVHJhbnNsYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6bTExKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNldE0xMSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMTIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTEyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0xMyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMTMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTE0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNldE0xNCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OjptMjEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2V0TTIxKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
Om0yMik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMjIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTIzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0yMyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMjQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTI0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om0zMSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXRNMzEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6bTMyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNl
dE0zMik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMzMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTMzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0zNCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMzQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTQxKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnNldE00MSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjptNDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6c2V0TTQyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om00
Myk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNNDMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTQ0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE00NCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjphKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNldEEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6Yik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzZXRCKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Qyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpzZXRFKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OmYpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Rik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0b1dlYkNvcmVUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBRdWFkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnByb2plY3RQb2ludCk6CisKIDIw
MTItMDUtMjkgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIxMDk3MjkpOiBUaGUgb3B0Z3JvdXAgZWxlbWVudCdzICJkaXNhYmxlZCIg
YXR0cmlidXRlIGhhcyBubyBlZmZlY3QgdG8gcmVuZGVyaW5nIGFuZCBzZWxlY3Rpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXguaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaAppbmRleCBhYzRhMmMwNTEwZTljZjdmZmRiZDM3YzM0NGY5N2NlZjdkMGJlODgw
Li40ODZkNzkwNmVlYWE1YmQ1ZjgyM2U0OWE0OWJmZDZkNzQwMTE4YjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oCkBAIC0zNSwxNSArMzUsMTIgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5j
bHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNlbmRpZgogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CiAjaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHsKQEAgLTUxLDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3Vi
bGUgZik7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmKTsKLSAgICB+V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSB7IHJlc2V0KCk7IH0K
KyAgICB+V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSB7IH0KICAgICB2b2lkIHJlc2V0KCk7CiAK
ICAgICAvLyBPcGVyYXRpb25zIHRoYXQgcmV0dXJuIGEgc2VwYXJhdGUgbWF0cml4IGFuZCBkbyBu
b3QgbW9kaWZ5IHRoaXMgb25lLgpAQCAtMTM2LDcgKzEzMyw3IEBAIHB1YmxpYzoKICNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KICAgICAvLyBDb252ZXJzaW9ucyBiZXR3ZWVuIFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggYW5kIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4CiAg
ICAgZXhwbGljaXQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKLSAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdG9X
ZWJDb3JlVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXggdG9XZWJDb3JlVHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogdGhlc2UgbWFw
IGZ1bmN0aW9ucyBzaG91bGQgbm90IGV4aXN0LCBzaG91bGQgYmUgdXNpbmcgQ0NNYXRoVXRpbAog
ICAgIC8vIGluc3RlYWQuIEV2ZW50dWFsbHkgQ0NNYXRoVXRpbCBmdW5jdGlvbnMgY291bGQgYmUg
bWVyZ2VkIGhlcmUsIGJ1dCBpdHMKQEAgLTE1MSw5ICsxNDgsMjcgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByb3RlY3RlZDoKLSAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4PiBtX3ByaXZhdGU7CisKKyAgICAvLyBXaGlsZSBtaWdyYXRpbmcgdGhpcyBjb2Rl
OiBDb2RlIHRoYXQgaXMgZXh0ZXJuYWwgdG8gV2ViS2l0IHNob3VsZCBoYXZlIG5vIGtub3dsZWRn
ZQorICAgIC8vIG9mIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4LiBCdXQgaW4gdGhvc2Ug
Y2FzZXMsIHRoaXMgY2xhc3Mgc3RpbGwgbmVlZHMgdG8KKyAgICAvLyBiZSB0aGUgc2FtZSBzaXpl
IHNvIHRoYXQgdGhlIGNsYXNzIGNhbiBiZSBwYXNzZWQgYmFjayBhbmQgZm9ydGggYmV0d2VlbiBX
ZWJLaXQgYW5kCisgICAgLy8gbm9uLVdlYktpdCBjb2RlLgorICAgIC8vCisgICAgLy8gVGhlIGVu
ZCBnb2FsIGlzIGV2ZW50dWFsbHkgZm9yIHRoaXMgY2xhc3MgdG8gb25seSBleGlzdCBhdCB0aGUg
QVBJIGJvdW5kYXJ5LCBhcyBhCisgICAgLy8gY29udmVyc2lvbiBiZXR3ZWVuIFdlYkNvcmUgVHJh
bnNmb3JtYXRpb25NYXRyaXggYW5kIHRoZSBjb21wb3NpdG9yJ3MgaW50ZXJuYWwKKyAgICAvLyBp
bXBsZW1lbnRhdGlvbiBvZiBtYXRyaXggdHJhbnNmb3Jtcy4KKyAgICAvLworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJpdmF0
ZTsKKyNlbHNlCisgICAgZG91YmxlIG1fbWF0cml4WzRdWzRdOworI2VuZGlmCiB9OwogCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCitDT01QSUxFX0FTU0VSVChzaXplb2YoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXgpID09IHNpemVvZihkb3VibGVbNF1bNF0pLCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeF9oYXNfdW5leHBlY3RlZF9zaXplKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
CmluZGV4IGJjODZhNWUyZTlkNGVhNTYwODE2NjY2NjkwMDQ5MDRkNzgwNzEzZWUuLjkxZjI1ODFi
NTk1Y2Y0OTExNzZlOGFhYjlkZmE3MmU1NzdiODBlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXguY3BwCkBAIC0zNiwzOSArMzYsMzQgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAvLyAgICAgICAgYXMgcG9zc2libGUuCiAKIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpCi0gICAgOiBtX3ByaXZhdGUobmV3IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpCisgICAgOiBtX3ByaXZhdGUoKQogewogfQogCiBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUg
YywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKLSAgICA6IG1fcHJpdmF0ZShuZXcgVHJh
bnNmb3JtYXRpb25NYXRyaXgoYSwgYiwgYywgZCwgZSwgZikpCisgICAgOiBtX3ByaXZhdGUoYSwg
YiwgYywgZCwgZSwgZikKIHsKIH0KIAogV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotICAgIDog
bV9wcml2YXRlKG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgqdC5tX3ByaXZhdGUuZ2V0KCkpKQor
ICAgIDogbV9wcml2YXRlKHQubV9wcml2YXRlKQogewogfQogCiBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHQpCi0gICAgOiBtX3ByaXZhdGUobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KHQpKQorICAgIDog
bV9wcml2YXRlKHQpCiB7CiB9CiAKLXZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlc2V0
KCkKLXsKLSAgICBtX3ByaXZhdGUucmVzZXQoMCk7Ci19Ci0KIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3I9KGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0KQogewotICAgICptX3ByaXZhdGUuZ2V0KCkgPSAqdC5tX3ByaXZhdGUu
Z2V0KCk7CisgICAgbV9wcml2YXRlID0gdC5tX3ByaXZhdGU7CiAgICAgcmV0dXJuICp0aGlzOwog
fQogCiBib29sIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvcj09KGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0KSBjb25zdAogewotICAgIGJvb2wgaXNFcXVhbCA9ICgqbV9w
cml2YXRlLmdldCgpID09ICp0Lm1fcHJpdmF0ZS5nZXQoKSk7CisgICAgYm9vbCBpc0VxdWFsID0g
KG1fcHJpdmF0ZSA9PSB0Lm1fcHJpdmF0ZSk7CiAgICAgcmV0dXJuIGlzRXF1YWw7CiB9CiAKQEAg
LTgyLDM4MCArNzcsMzgwIEBAIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpvcGVyYXRvciooY29uc3QgV2ViVHJhbnNmb3JtYXRpCiBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0CiB7CiAg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVzdWx0OwotICAgICpyZXN1bHQubV9wcml2YXRl
LmdldCgpID0gbV9wcml2YXRlLT5pbnZlcnNlKCk7CisgICAgcmVzdWx0Lm1fcHJpdmF0ZSA9IG1f
cHJpdmF0ZS5pbnZlcnNlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvMmRUcmFuc2Zvcm0oKSBjb25z
dAogewogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlc3VsdDsKLSAgICAqcmVzdWx0Lm1f
cHJpdmF0ZS5nZXQoKSA9IG1fcHJpdmF0ZS0+dG8yZFRyYW5zZm9ybSgpOworICAgIHJlc3VsdC5t
X3ByaXZhdGUgPSBtX3ByaXZhdGUudG8yZFRyYW5zZm9ybSgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5KGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0KQogewotICAgIG1fcHJpdmF0ZS0+bXVsdGlwbHkoKnQubV9w
cml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUubXVsdGlwbHkodC5tX3ByaXZhdGUpOwogfQog
CiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYWtlSWRlbnRpdHkoKQogewotICAgIG1f
cHJpdmF0ZS0+bWFrZUlkZW50aXR5KCk7CisgICAgbV9wcml2YXRlLm1ha2VJZGVudGl0eSgpOwog
fQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGUoZG91YmxlIHR4LCBk
b3VibGUgdHkpCiB7Ci0gICAgbV9wcml2YXRlLT50cmFuc2xhdGUodHgsIHR5KTsKKyAgICBtX3By
aXZhdGUudHJhbnNsYXRlKHR4LCB0eSk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnRyYW5zbGF0ZTNkKGRvdWJsZSB0eCwgZG91YmxlIHR5LCBkb3VibGUgdHopCiB7Ci0gICAg
bV9wcml2YXRlLT50cmFuc2xhdGUzZCh0eCwgdHksIHR6KTsKKyAgICBtX3ByaXZhdGUudHJhbnNs
YXRlM2QodHgsIHR5LCB0eik7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRy
YW5zbGF0ZVJpZ2h0M2QoZG91YmxlIHR4LCBkb3VibGUgdHksIGRvdWJsZSB0eikKIHsKLSAgICBt
X3ByaXZhdGUtPnRyYW5zbGF0ZVJpZ2h0M2QodHgsIHR5LCB0eik7CisgICAgbV9wcml2YXRlLnRy
YW5zbGF0ZVJpZ2h0M2QodHgsIHR5LCB0eik7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnNjYWxlKGRvdWJsZSBzKQogewotICAgIG1fcHJpdmF0ZS0+c2NhbGUocyk7CisgICAg
bV9wcml2YXRlLnNjYWxlKHMpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpz
Y2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpCiB7Ci0gICAgbV9wcml2YXRlLT5z
Y2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKKyAgICBtX3ByaXZhdGUuc2NhbGVOb25Vbmlmb3JtKHN4
LCBzeSk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlM2QoZG91Ymxl
IHN4LCBkb3VibGUgc3ksIGRvdWJsZSBzeikKIHsKLSAgICBtX3ByaXZhdGUtPnNjYWxlM2Qoc3gs
IHN5LCBzeik7CisgICAgbV9wcml2YXRlLnNjYWxlM2Qoc3gsIHN5LCBzeik7CiB9CiAKIHZvaWQg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZShkb3VibGUgYW5nbGUpCiB7Ci0gICAgbV9w
cml2YXRlLT5yb3RhdGUoYW5nbGUpOworICAgIG1fcHJpdmF0ZS5yb3RhdGUoYW5nbGUpOwogfQog
CiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgcngsIGRvdWJs
ZSByeSwgZG91YmxlIHJ6KQogewotICAgIG1fcHJpdmF0ZS0+cm90YXRlM2QocngsIHJ5LCByeik7
CisgICAgbV9wcml2YXRlLnJvdGF0ZTNkKHJ4LCByeSwgcnopOwogfQogCiB2b2lkIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBk
b3VibGUgYW5nbGUpCiB7Ci0gICAgbV9wcml2YXRlLT5yb3RhdGUzZCh4LCB5LCB6LCBhbmdsZSk7
CisgICAgbV9wcml2YXRlLnJvdGF0ZTNkKHgsIHksIHosIGFuZ2xlKTsKIH0KIAogdm9pZCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tld1goZG91YmxlIGFuZ2xlKQogewotICAgIG1fcHJpdmF0
ZS0+c2tld1goYW5nbGUpOworICAgIG1fcHJpdmF0ZS5za2V3WChhbmdsZSk7CiB9CiAKIHZvaWQg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXdZKGRvdWJsZSBhbmdsZSkKIHsKLSAgICBtX3By
aXZhdGUtPnNrZXdZKGFuZ2xlKTsKKyAgICBtX3ByaXZhdGUuc2tld1koYW5nbGUpOwogfQogCiB2
b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKGRvdWJsZSBwKQog
ewotICAgIG1fcHJpdmF0ZS0+YXBwbHlQZXJzcGVjdGl2ZShwKTsKKyAgICBtX3ByaXZhdGUuYXBw
bHlQZXJzcGVjdGl2ZShwKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Ymxl
bmQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykK
IHsKLSAgICBtX3ByaXZhdGUtPmJsZW5kKCpmcm9tLm1fcHJpdmF0ZS5nZXQoKSwgcHJvZ3Jlc3Mp
OworICAgIG1fcHJpdmF0ZS5ibGVuZChmcm9tLm1fcHJpdmF0ZSwgcHJvZ3Jlc3MpOwogfQogCiBi
b29sIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzUGVyc3BlY3RpdmUoKTsKKyAgICByZXR1cm4gbV9wcml2
YXRlLmhhc1BlcnNwZWN0aXZlKCk7CiB9CiAKIGJvb2wgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OmlzSW52ZXJ0aWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNJbnZlcnRp
YmxlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5pc0ludmVydGlibGUoKTsKIH0KIAogYm9vbCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNCYWNrRmFjZVZpc2libGUoKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGUtPmlzQmFja0ZhY2VWaXNpYmxlKCk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS5pc0JhY2tGYWNlVmlzaWJsZSgpOwogfQogCiBib29sIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4Ojppc0lkZW50aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0lkZW50
aXR5KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5pc0lkZW50aXR5KCk7CiB9CiAKIGJvb2wgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpOworICAgIHJl
dHVybiBtX3ByaXZhdGUuaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKTsKIH0KIAogYm9vbCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnRlZ2VyVHJhbnNsYXRpb24oKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGUtPmlzSW50ZWdlclRyYW5zbGF0aW9uKCk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5pc0ludGVnZXJUcmFuc2xhdGlvbigpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Om0xMSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTExKCk7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tMTEoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6c2V0TTExKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTExKGYpOwor
ICAgIG1fcHJpdmF0ZS5zZXRNMTEoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6bTEyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tMTIoKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLm0xMigpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzZXRNMTIoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNMTIoZik7CisgICAgbV9w
cml2YXRlLnNldE0xMihmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpt
MTMoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0xMygpOworICAgIHJldHVybiBt
X3ByaXZhdGUubTEzKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0x
Myhkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE0xMyhmKTsKKyAgICBtX3ByaXZhdGUu
c2V0TTEzKGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0xNCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTE0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS5tMTQoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTE0KGRvdWJs
ZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTE0KGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMTQo
Zik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTIxKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5tMjEoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm0yMSgp
OwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMjEoZG91YmxlIGYpCiB7
Ci0gICAgbV9wcml2YXRlLT5zZXRNMjEoZik7CisgICAgbV9wcml2YXRlLnNldE0yMShmKTsKIH0K
IAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMjIoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPm0yMigpOworICAgIHJldHVybiBtX3ByaXZhdGUubTIyKCk7CiB9CiAK
IHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0yMihkb3VibGUgZikKIHsKLSAgICBt
X3ByaXZhdGUtPnNldE0yMihmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTIyKGYpOwogfQogCiBkb3Vi
bGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0yMygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+bTIzKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tMjMoKTsKIH0KIAogdm9pZCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTIzKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0
ZS0+c2V0TTIzKGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMjMoZik7CiB9CiAKIGRvdWJsZSBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTI0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRl
LT5tMjQoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm0yNCgpOwogfQogCiB2b2lkIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpzZXRNMjQoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRN
MjQoZik7CisgICAgbV9wcml2YXRlLnNldE0yNChmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OjptMzEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0zMSgp
OworICAgIHJldHVybiBtX3ByaXZhdGUubTMxKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg6OnNldE0zMShkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE0zMShmKTsK
KyAgICBtX3ByaXZhdGUuc2V0TTMxKGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om0zMigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTMyKCk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS5tMzIoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6c2V0TTMyKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTMyKGYpOworICAgIG1f
cHJpdmF0ZS5zZXRNMzIoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
bTMzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tMzMoKTsKKyAgICByZXR1cm4g
bV9wcml2YXRlLm0zMygpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRN
MzMoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNMzMoZik7CisgICAgbV9wcml2YXRl
LnNldE0zMyhmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMzQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0zNCgpOworICAgIHJldHVybiBtX3ByaXZh
dGUubTM0KCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0zNChkb3Vi
bGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE0zNChmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTM0
KGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om00MSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTQxKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tNDEo
KTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTQxKGRvdWJsZSBmKQog
ewotICAgIG1fcHJpdmF0ZS0+c2V0TTQxKGYpOworICAgIG1fcHJpdmF0ZS5zZXRNNDEoZik7CiB9
CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTQyKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5tNDIoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm00MigpOwogfQog
CiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNNDIoZG91YmxlIGYpCiB7Ci0gICAg
bV9wcml2YXRlLT5zZXRNNDIoZik7CisgICAgbV9wcml2YXRlLnNldE00MihmKTsKIH0KIAogZG91
YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptNDMoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPm00MygpOworICAgIHJldHVybiBtX3ByaXZhdGUubTQzKCk7CiB9CiAKIHZvaWQg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE00Myhkb3VibGUgZikKIHsKLSAgICBtX3ByaXZh
dGUtPnNldE00MyhmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTQzKGYpOwogfQogCiBkb3VibGUgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om00NCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bTQ0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tNDQoKTsKIH0KIAogdm9pZCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTQ0KGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0
TTQ0KGYpOworICAgIG1fcHJpdmF0ZS5zZXRNNDQoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+YSgpOwor
ICAgIHJldHVybiBtX3ByaXZhdGUuYSgpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjpzZXRBKGRvdWJsZSBhKQogewotICAgIG1fcHJpdmF0ZS0+c2V0QShhKTsKKyAgICBtX3By
aXZhdGUuc2V0QShhKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpiKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5iKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS5iKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEIoZG91YmxlIGIp
CiB7Ci0gICAgbV9wcml2YXRlLT5zZXRCKGIpOworICAgIG1fcHJpdmF0ZS5zZXRCKGIpOwogfQog
CiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmMoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByaXZhdGUtPmMoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmMoKTsKIH0KIAogdm9pZCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Qyhkb3VibGUgYykKIHsKLSAgICBtX3ByaXZhdGUt
PnNldEMoYyk7CisgICAgbV9wcml2YXRlLnNldEMoYyk7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZCgpOwor
ICAgIHJldHVybiBtX3ByaXZhdGUuZCgpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjpzZXREKGRvdWJsZSBkKQogewotICAgIG1fcHJpdmF0ZS0+c2V0RChkKTsKKyAgICBtX3By
aXZhdGUuc2V0RChkKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjplKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5lKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS5lKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEUoZG91YmxlIGUp
CiB7Ci0gICAgbV9wcml2YXRlLT5zZXRFKGUpOworICAgIG1fcHJpdmF0ZS5zZXRFKGUpOwogfQog
CiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmYoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByaXZhdGUtPmYoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmYoKTsKIH0KIAogdm9pZCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Rihkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUt
PnNldEYoZik7CisgICAgbV9wcml2YXRlLnNldEYoZik7CiB9CiAKLVRyYW5zZm9ybWF0aW9uTWF0
cml4JiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dG9XZWJDb3JlVHJhbnNmb3JtKCkgY29uc3QK
K1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0b1dlYkNvcmVU
cmFuc2Zvcm0oKSBjb25zdAogewotICAgIHJldHVybiAqbV9wcml2YXRlLmdldCgpOworICAgIHJl
dHVybiBtX3ByaXZhdGU7CiB9CiAKIEZsb2F0UmVjdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
bWFwUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+bWFwUmVjdChyZWN0KTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm1hcFJlY3QocmVjdCk7
CiB9CiAKIEludFJlY3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXBSZWN0KHJlY3Qp
OworICAgIHJldHVybiBtX3ByaXZhdGUubWFwUmVjdChyZWN0KTsKIH0KIAogRmxvYXRQb2ludDNE
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHAp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFwUG9pbnQocCk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5tYXBQb2ludChwKTsKIH0KIAogRmxvYXRQb2ludCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wcml2YXRlLT5tYXBQb2ludChwKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm1hcFBvaW50
KHApOwogfQogCiBJbnRQb2ludCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29u
c3QgSW50UG9pbnQmIHApIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFwUG9pbnQo
cCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBQb2ludChwKTsKIH0KIAogRmxvYXRRdWFkIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXBRdWFkKHF1YWQpOworICAgIHJldHVybiBt
X3ByaXZhdGUubWFwUXVhZChxdWFkKTsKIH0KIAogRmxvYXRQb2ludCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6cHJvamVjdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHAsIGJvb2wqIGNsYW1wZWQp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+cHJvamVjdFBvaW50KHAsIGNsYW1wZWQp
OworICAgIHJldHVybiBtX3ByaXZhdGUucHJvamVjdFBvaW50KHAsIGNsYW1wZWQpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144637</attachid>
            <date>2012-05-29 16:07:56 -0700</date>
            <delta_ts>2012-05-29 16:42:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-87315-20120529160756.patch</filename>
            <type>text/plain</type>
            <size>19776</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YWE0M2MzMzI5ZWVm
MmZiZmMxYWZmNmU3YjY4YWMwYjMzNzczYjM5Li45ZTQyMGM1OGQyYTMyMzNlMGQ0M2U1ZWFhZDQz
ZTIxMzRkMTA3NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMyAg
U2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIG1ha2UgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggb2JqZWN0IHVzYWJsZSBieSBub24td2Vi
a2l0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3MzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6On5XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6
CisgICAgICAgIChXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisKIDIwMTItMDUtMjUgIEtpbnVr
byBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRGVw
cmVjYXRlIEZpbGVVdGlsaXRpZXM6OmdldEZpbGVTaXplIGFuZCBnZXRGaWxlTW9kaWZpZWRUaW1l
IGluIGZhdm9yIG9mIGdldEZpbGVNZXRhZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhZDk3NTAxMmJlOTg4
YTllY2I5OGVjNTBmMTZlOWUzYzc5YjdiMmMuLmQyODY4NTE3NjNjYjcxNTVmODIwNWExMDMyNzdj
MjkwMzU1OWZkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAxMi0wNS0yMyAgU2hh
d24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IG1ha2UgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggb2JqZWN0IHVzYWJsZSBieSBub24td2Via2l0
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
MzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBhbmQgYnkgd2hldGhlciBpdAor
ICAgICAgICBjb21waWxlcy4gVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZXMgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9u
TWF0cml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6OmludmVyc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6dG8yZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjptdWx0aXBseSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjptYWtlSWRlbnRpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnRyYW5zbGF0ZTNkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnRyYW5zbGF0ZVJpZ2h0M2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2NhbGVOb25Vbmlmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnNjYWxlM2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
cm90YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0
ZTNkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXdYKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXdZKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmFwcGx5UGVyc3BlY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aGFzUGVyc3BlY3RpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnZlcnRpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzQmFja0ZhY2VWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSWRlbnRpdHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJZGVudGl0eU9y
VHJhbnNsYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
aXNJbnRlZ2VyVHJhbnNsYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6bTExKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNldE0xMSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMTIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTEyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0xMyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMTMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTE0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNldE0xNCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OjptMjEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2V0TTIxKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
Om0yMik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMjIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTIzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0yMyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMjQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTI0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om0zMSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXRNMzEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6bTMyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNl
dE0zMik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMzMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTMzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0zNCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMzQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTQxKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnNldE00MSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjptNDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6c2V0TTQyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om00
Myk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNNDMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTQ0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE00NCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjphKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNldEEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6Yik6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzZXRCKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Qyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpzZXRFKToKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OmYpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Rik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0b1dlYkNvcmVUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBRdWFkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnByb2plY3RQb2ludCk6CisKIDIw
MTItMDUtMjkgIFZpY3RvciBDYXJidW5lICA8dmljdG9yQHJvc2VkdS5vcmc+CiAKICAgICAgICAg
RGlzcGxheSBjdWVzIGluIHRoZSBjb250cm9scyBhcmVhCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXgg
YWM0YTJjMDUxMGU5Y2Y3ZmZkYmQzN2MzNDRmOTdjZWY3ZDBiZTg4MC4uNTIzNjQ2ZWI3Y2IwYjU0
OGEyMTI1MThiNTZkN2VkOTg0MzE2NmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMzUsMTUg
KzM1LDEyIEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQz
RC5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYlBy
aXZhdGVPd25QdHIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVHJhbnNmb3JtYXRp
b25NYXRyaXg7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB7CkBAIC01MSw4ICs0OCw3IEBAIHB1YmxpYzoKICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpOwogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRvdWJsZSBhLCBkb3Vi
bGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOwogICAgIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAg
fldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkgeyByZXNldCgpOyB9Ci0gICAgdm9pZCByZXNldCgp
OworICAgIH5XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpIHsgfQogCiAgICAgLy8gT3BlcmF0aW9u
cyB0aGF0IHJldHVybiBhIHNlcGFyYXRlIG1hdHJpeCBhbmQgZG8gbm90IG1vZGlmeSB0aGlzIG9u
ZS4KICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlKCkgY29uc3Q7CkBAIC0xMzYs
NyArMTMyLDcgQEAgcHVibGljOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIC8vIENv
bnZlcnNpb25zIGJldHdlZW4gV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmQgV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgKICAgICBleHBsaWNpdCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0b1dlYkNvcmVUcmFuc2Zvcm0oKSBjb25zdDsKKyAg
ICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1dlYkNvcmVUcmFuc2Zvcm0oKSBjb25z
dDsKIAogICAgIC8vIEZJWE1FOiB0aGVzZSBtYXAgZnVuY3Rpb25zIHNob3VsZCBub3QgZXhpc3Qs
IHNob3VsZCBiZSB1c2luZyBDQ01hdGhVdGlsCiAgICAgLy8gaW5zdGVhZC4gRXZlbnR1YWxseSBD
Q01hdGhVdGlsIGZ1bmN0aW9ucyBjb3VsZCBiZSBtZXJnZWQgaGVyZSwgYnV0IGl0cwpAQCAtMTUx
LDkgKzE0NywyNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFdlYlByaXZh
dGVPd25QdHI8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+IG1fcHJpdmF0ZTsKKworICAg
IC8vIFdoaWxlIG1pZ3JhdGluZyB0aGlzIGNvZGU6IENvZGUgdGhhdCBpcyBleHRlcm5hbCB0byBX
ZWJLaXQgc2hvdWxkIGhhdmUgbm8ga25vd2xlZGdlCisgICAgLy8gb2YgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXguIEJ1dCBpbiB0aG9zZSBjYXNlcywgdGhpcyBjbGFzcyBzdGlsbCBuZWVk
cyB0bworICAgIC8vIGJlIHRoZSBzYW1lIHNpemUgc28gdGhhdCB0aGUgY2xhc3MgY2FuIGJlIHBh
c3NlZCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIFdlYktpdCBhbmQKKyAgICAvLyBub24tV2ViS2l0
IGNvZGUuCisgICAgLy8KKyAgICAvLyBUaGUgZW5kIGdvYWwgaXMgZXZlbnR1YWxseSBmb3IgdGhp
cyBjbGFzcyB0byBvbmx5IGV4aXN0IGF0IHRoZSBBUEkgYm91bmRhcnksIGFzIGEKKyAgICAvLyBj
b252ZXJzaW9uIGJldHdlZW4gV2ViQ29yZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmQgdGhlIGNv
bXBvc2l0b3IncyBpbnRlcm5hbAorICAgIC8vIGltcGxlbWVudGF0aW9uIG9mIG1hdHJpeCB0cmFu
c2Zvcm1zLgorICAgIC8vCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcml2YXRlOworI2Vsc2UKKyAgICBkb3VibGUgbV9tYXRy
aXhbNF1bNF07CisjZW5kaWYKIH07CiAKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK0NPTVBJ
TEVfQVNTRVJUKHNpemVvZihXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCkgPT0gc2l6ZW9m
KGRvdWJsZVs0XVs0XSksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4X2hhc191bmV4cGVjdGVkX3Np
emUpOworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggYmM4NmE1ZTJlOWQ0ZWE1NjA4MTY2
NjY2OTAwNDkwNGQ3ODA3MTNlZS4uNjA5Mjc1NzhkOWU5NmE5OTM4MTBkZjYxM2I4YWUwYjdhZThm
ZmRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTMyLDQ0
ICszMiwzNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLS8vIEZJWE1FOiBUaGUgb3ZlcmhlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpbiB0aGVzZSBjb25zdHJ1Y3RvcnMgbmVlZHMgdG8gZ28gYXdheSBhcyBzb29u
Ci0vLyAgICAgICAgYXMgcG9zc2libGUuCi0KIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpCi0gICAgOiBtX3ByaXZhdGUobmV3IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpCisgICAgOiBtX3ByaXZhdGUoKQogewogfQogCiBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUg
YywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKLSAgICA6IG1fcHJpdmF0ZShuZXcgVHJh
bnNmb3JtYXRpb25NYXRyaXgoYSwgYiwgYywgZCwgZSwgZikpCisgICAgOiBtX3ByaXZhdGUoYSwg
YiwgYywgZCwgZSwgZikKIHsKIH0KIAogV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotICAgIDog
bV9wcml2YXRlKG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgqdC5tX3ByaXZhdGUuZ2V0KCkpKQor
ICAgIDogbV9wcml2YXRlKHQubV9wcml2YXRlKQogewogfQogCiBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHQpCi0gICAgOiBtX3ByaXZhdGUobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KHQpKQotewotfQot
Ci12b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZXNldCgpCisgICAgOiBtX3ByaXZhdGUo
dCkKIHsKLSAgICBtX3ByaXZhdGUucmVzZXQoMCk7CiB9CiAKIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3I9KGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0KQogewotICAgICptX3ByaXZhdGUuZ2V0KCkgPSAqdC5tX3ByaXZhdGUu
Z2V0KCk7CisgICAgbV9wcml2YXRlID0gdC5tX3ByaXZhdGU7CiAgICAgcmV0dXJuICp0aGlzOwog
fQogCiBib29sIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvcj09KGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0KSBjb25zdAogewotICAgIGJvb2wgaXNFcXVhbCA9ICgqbV9w
cml2YXRlLmdldCgpID09ICp0Lm1fcHJpdmF0ZS5nZXQoKSk7Ci0gICAgcmV0dXJuIGlzRXF1YWw7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZSA9PSB0Lm1fcHJpdmF0ZTsKIH0KIAogV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKihjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkgY29uc3QKQEAgLTgyLDM4MCArNzMsMzgwIEBAIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvciooY29u
c3QgV2ViVHJhbnNmb3JtYXRpCiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggcmVzdWx0OwotICAgICpyZXN1bHQubV9wcml2YXRlLmdldCgpID0gbV9wcml2YXRlLT5pbnZl
cnNlKCk7CisgICAgcmVzdWx0Lm1fcHJpdmF0ZSA9IG1fcHJpdmF0ZS5pbnZlcnNlKCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OnRvMmRUcmFuc2Zvcm0oKSBjb25zdAogewogICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IHJlc3VsdDsKLSAgICAqcmVzdWx0Lm1fcHJpdmF0ZS5nZXQoKSA9IG1fcHJpdmF0
ZS0+dG8yZFRyYW5zZm9ybSgpOworICAgIHJlc3VsdC5tX3ByaXZhdGUgPSBtX3ByaXZhdGUudG8y
ZFRyYW5zZm9ybSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Om11bHRpcGx5KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQog
ewotICAgIG1fcHJpdmF0ZS0+bXVsdGlwbHkoKnQubV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3By
aXZhdGUubXVsdGlwbHkodC5tX3ByaXZhdGUpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjptYWtlSWRlbnRpdHkoKQogewotICAgIG1fcHJpdmF0ZS0+bWFrZUlkZW50aXR5KCk7
CisgICAgbV9wcml2YXRlLm1ha2VJZGVudGl0eSgpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4Ojp0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7Ci0gICAgbV9wcml2
YXRlLT50cmFuc2xhdGUodHgsIHR5KTsKKyAgICBtX3ByaXZhdGUudHJhbnNsYXRlKHR4LCB0eSk7
CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZTNkKGRvdWJsZSB0
eCwgZG91YmxlIHR5LCBkb3VibGUgdHopCiB7Ci0gICAgbV9wcml2YXRlLT50cmFuc2xhdGUzZCh0
eCwgdHksIHR6KTsKKyAgICBtX3ByaXZhdGUudHJhbnNsYXRlM2QodHgsIHR5LCB0eik7CiB9CiAK
IHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZVJpZ2h0M2QoZG91YmxlIHR4
LCBkb3VibGUgdHksIGRvdWJsZSB0eikKIHsKLSAgICBtX3ByaXZhdGUtPnRyYW5zbGF0ZVJpZ2h0
M2QodHgsIHR5LCB0eik7CisgICAgbV9wcml2YXRlLnRyYW5zbGF0ZVJpZ2h0M2QodHgsIHR5LCB0
eik7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlKGRvdWJsZSBzKQog
ewotICAgIG1fcHJpdmF0ZS0+c2NhbGUocyk7CisgICAgbV9wcml2YXRlLnNjYWxlKHMpOwogfQog
CiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4
LCBkb3VibGUgc3kpCiB7Ci0gICAgbV9wcml2YXRlLT5zY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsK
KyAgICBtX3ByaXZhdGUuc2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7CiB9CiAKIHZvaWQgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlM2QoZG91YmxlIHN4LCBkb3VibGUgc3ksIGRvdWJsZSBz
eikKIHsKLSAgICBtX3ByaXZhdGUtPnNjYWxlM2Qoc3gsIHN5LCBzeik7CisgICAgbV9wcml2YXRl
LnNjYWxlM2Qoc3gsIHN5LCBzeik7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnJvdGF0ZShkb3VibGUgYW5nbGUpCiB7Ci0gICAgbV9wcml2YXRlLT5yb3RhdGUoYW5nbGUpOwor
ICAgIG1fcHJpdmF0ZS5yb3RhdGUoYW5nbGUpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4Ojpyb3RhdGUzZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91YmxlIHJ6KQogewotICAg
IG1fcHJpdmF0ZS0+cm90YXRlM2QocngsIHJ5LCByeik7CisgICAgbV9wcml2YXRlLnJvdGF0ZTNk
KHJ4LCByeSwgcnopOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUz
ZChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpCiB7Ci0gICAgbV9w
cml2YXRlLT5yb3RhdGUzZCh4LCB5LCB6LCBhbmdsZSk7CisgICAgbV9wcml2YXRlLnJvdGF0ZTNk
KHgsIHksIHosIGFuZ2xlKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tl
d1goZG91YmxlIGFuZ2xlKQogewotICAgIG1fcHJpdmF0ZS0+c2tld1goYW5nbGUpOworICAgIG1f
cHJpdmF0ZS5za2V3WChhbmdsZSk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNrZXdZKGRvdWJsZSBhbmdsZSkKIHsKLSAgICBtX3ByaXZhdGUtPnNrZXdZKGFuZ2xlKTsKKyAg
ICBtX3ByaXZhdGUuc2tld1koYW5nbGUpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjphcHBseVBlcnNwZWN0aXZlKGRvdWJsZSBwKQogewotICAgIG1fcHJpdmF0ZS0+YXBwbHlQ
ZXJzcGVjdGl2ZShwKTsKKyAgICBtX3ByaXZhdGUuYXBwbHlQZXJzcGVjdGl2ZShwKTsKIH0KIAog
dm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQoY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICBtX3ByaXZhdGUtPmJsZW5k
KCpmcm9tLm1fcHJpdmF0ZS5nZXQoKSwgcHJvZ3Jlc3MpOworICAgIG1fcHJpdmF0ZS5ibGVuZChm
cm9tLm1fcHJpdmF0ZSwgcHJvZ3Jlc3MpOwogfQogCiBib29sIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjpoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFz
UGVyc3BlY3RpdmUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmhhc1BlcnNwZWN0aXZlKCk7CiB9
CiAKIGJvb2wgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSW52ZXJ0aWJsZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNJbnZlcnRpYmxlKCk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS5pc0ludmVydGlibGUoKTsKIH0KIAogYm9vbCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
aXNCYWNrRmFjZVZpc2libGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmlzQmFj
a0ZhY2VWaXNpYmxlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5pc0JhY2tGYWNlVmlzaWJsZSgp
OwogfQogCiBib29sIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0lkZW50aXR5KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0lkZW50aXR5KCk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS5pc0lkZW50aXR5KCk7CiB9CiAKIGJvb2wgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Omlz
SWRlbnRpdHlPclRyYW5zbGF0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5p
c0lkZW50aXR5T3JUcmFuc2xhdGlvbigpOworICAgIHJldHVybiBtX3ByaXZhdGUuaXNJZGVudGl0
eU9yVHJhbnNsYXRpb24oKTsKIH0KIAogYm9vbCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJ
bnRlZ2VyVHJhbnNsYXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmlzSW50
ZWdlclRyYW5zbGF0aW9uKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5pc0ludGVnZXJUcmFuc2xh
dGlvbigpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0xMSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTExKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5t
MTEoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTExKGRvdWJsZSBm
KQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTExKGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMTEoZik7
CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTEyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5tMTIoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm0xMigpOwog
fQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMTIoZG91YmxlIGYpCiB7Ci0g
ICAgbV9wcml2YXRlLT5zZXRNMTIoZik7CisgICAgbV9wcml2YXRlLnNldE0xMihmKTsKIH0KIAog
ZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMTMoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByaXZhdGUtPm0xMygpOworICAgIHJldHVybiBtX3ByaXZhdGUubTEzKCk7CiB9CiAKIHZv
aWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0xMyhkb3VibGUgZikKIHsKLSAgICBtX3By
aXZhdGUtPnNldE0xMyhmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTEzKGYpOwogfQogCiBkb3VibGUg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0xNCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+bTE0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tMTQoKTsKIH0KIAogdm9pZCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTE0KGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+
c2V0TTE0KGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMTQoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6bTIxKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5t
MjEoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm0yMSgpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OjpzZXRNMjEoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNMjEo
Zik7CisgICAgbV9wcml2YXRlLnNldE0yMShmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjptMjIoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0yMigpOwor
ICAgIHJldHVybiBtX3ByaXZhdGUubTIyKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnNldE0yMihkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE0yMihmKTsKKyAg
ICBtX3ByaXZhdGUuc2V0TTIyKGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6Om0yMygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTIzKCk7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS5tMjMoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2V0TTIzKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTIzKGYpOworICAgIG1fcHJp
dmF0ZS5zZXRNMjMoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTI0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tMjQoKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLm0yNCgpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMjQo
ZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNMjQoZik7CisgICAgbV9wcml2YXRlLnNl
dE0yNChmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMzEoKSBjb25z
dAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm0zMSgpOworICAgIHJldHVybiBtX3ByaXZhdGUu
bTMxKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0zMShkb3VibGUg
ZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE0zMShmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTMxKGYp
OwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om0zMigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTMyKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tMzIoKTsK
IH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTMyKGRvdWJsZSBmKQogewot
ICAgIG1fcHJpdmF0ZS0+c2V0TTMyKGYpOworICAgIG1fcHJpdmF0ZS5zZXRNMzIoZik7CiB9CiAK
IGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bTMzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wcml2YXRlLT5tMzMoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm0zMygpOwogfQogCiB2
b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNMzMoZG91YmxlIGYpCiB7Ci0gICAgbV9w
cml2YXRlLT5zZXRNMzMoZik7CisgICAgbV9wcml2YXRlLnNldE0zMyhmKTsKIH0KIAogZG91Ymxl
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptMzQoKSBjb25zdAogewotICAgIHJldHVybiBtX3By
aXZhdGUtPm0zNCgpOworICAgIHJldHVybiBtX3ByaXZhdGUubTM0KCk7CiB9CiAKIHZvaWQgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE0zNChkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUt
PnNldE0zNChmKTsKKyAgICBtX3ByaXZhdGUuc2V0TTM0KGYpOwogfQogCiBkb3VibGUgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om00MSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
bTQxKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tNDEoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6c2V0TTQxKGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTQx
KGYpOworICAgIG1fcHJpdmF0ZS5zZXRNNDEoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bTQyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tNDIoKTsK
KyAgICByZXR1cm4gbV9wcml2YXRlLm00MigpOwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpzZXRNNDIoZG91YmxlIGYpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRNNDIoZik7Cisg
ICAgbV9wcml2YXRlLnNldE00MihmKTsKIH0KIAogZG91YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OjptNDMoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm00MygpOworICAgIHJl
dHVybiBtX3ByaXZhdGUubTQzKCk7CiB9CiAKIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNldE00Myhkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldE00MyhmKTsKKyAgICBtX3By
aXZhdGUuc2V0TTQzKGYpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om00
NCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bTQ0KCk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5tNDQoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TTQ0
KGRvdWJsZSBmKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TTQ0KGYpOworICAgIG1fcHJpdmF0ZS5z
ZXRNNDQoZik7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+YSgpOworICAgIHJldHVybiBtX3ByaXZhdGUuYSgp
OwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRBKGRvdWJsZSBhKQogewot
ICAgIG1fcHJpdmF0ZS0+c2V0QShhKTsKKyAgICBtX3ByaXZhdGUuc2V0QShhKTsKIH0KIAogZG91
YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpiKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5iKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5iKCk7CiB9CiAKIHZvaWQgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNldEIoZG91YmxlIGIpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRC
KGIpOworICAgIG1fcHJpdmF0ZS5zZXRCKGIpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg6OmMoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmMoKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmMoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2V0Qyhkb3VibGUgYykKIHsKLSAgICBtX3ByaXZhdGUtPnNldEMoYyk7CisgICAgbV9wcml2YXRl
LnNldEMoYyk7CiB9CiAKIGRvdWJsZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUuZCgp
OwogfQogCiB2b2lkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXREKGRvdWJsZSBkKQogewot
ICAgIG1fcHJpdmF0ZS0+c2V0RChkKTsKKyAgICBtX3ByaXZhdGUuc2V0RChkKTsKIH0KIAogZG91
YmxlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5lKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5lKCk7CiB9CiAKIHZvaWQgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNldEUoZG91YmxlIGUpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRF
KGUpOworICAgIG1fcHJpdmF0ZS5zZXRFKGUpOwogfQogCiBkb3VibGUgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg6OmYoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmYoKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmYoKTsKIH0KIAogdm9pZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2V0Rihkb3VibGUgZikKIHsKLSAgICBtX3ByaXZhdGUtPnNldEYoZik7CisgICAgbV9wcml2YXRl
LnNldEYoZik7CiB9CiAKLVRyYW5zZm9ybWF0aW9uTWF0cml4JiBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6dG9XZWJDb3JlVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0b1dlYkNvcmVUcmFuc2Zvcm0oKSBjb25zdAogewotICAg
IHJldHVybiAqbV9wcml2YXRlLmdldCgpOworICAgIHJldHVybiBtX3ByaXZhdGU7CiB9CiAKIEZs
b2F0UmVjdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFwUmVjdChyZWN0KTsKKyAg
ICByZXR1cm4gbV9wcml2YXRlLm1hcFJlY3QocmVjdCk7CiB9CiAKIEludFJlY3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6Om1hcFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5tYXBSZWN0KHJlY3QpOworICAgIHJldHVybiBtX3ByaXZhdGUu
bWFwUmVjdChyZWN0KTsKIH0KIAogRmxvYXRQb2ludDNEIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHApIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+bWFwUG9pbnQocCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBQb2ludChwKTsK
IH0KIAogRmxvYXRQb2ludCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3Qg
RmxvYXRQb2ludCYgcCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXBQb2ludChw
KTsKKyAgICByZXR1cm4gbV9wcml2YXRlLm1hcFBvaW50KHApOwogfQogCiBJbnRQb2ludCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFwUG9pbnQocCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS5tYXBQb2ludChwKTsKIH0KIAogRmxvYXRRdWFkIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpt
YXBRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5tYXBRdWFkKHF1YWQpOworICAgIHJldHVybiBtX3ByaXZhdGUubWFwUXVhZChxdWFkKTsK
IH0KIAogRmxvYXRQb2ludCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVjdFBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmIHAsIGJvb2wqIGNsYW1wZWQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+cHJvamVjdFBvaW50KHAsIGNsYW1wZWQpOworICAgIHJldHVybiBtX3ByaXZhdGUu
cHJvamVjdFBvaW50KHAsIGNsYW1wZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>