<?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>45914</bug_id>
          
          <creation_ts>2010-09-16 12:11:07 -0700</creation_ts>
          <short_desc>[chromium] Expose separate GraphicsContext3DInternal.h</short_desc>
          <delta_ts>2010-09-16 12:31:39 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>45912</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>jamesr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>280258</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-16 12:11:07 -0700</bug_when>
    <thetext>Currently Chromium&apos;s GraphicsContext3DInternal, which holds the data members for the GraphicsContext3D implementation, is hidden within the GraphicsContext3D.cpp file. It is going to be necessary to add some accessors to this class which can be called from external code (specifically, the WebViewImpl), so it needs to be exposed in its own header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280261</commentid>
    <comment_count>1</comment_count>
      <attachid>67827</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-16 12:15:31 -0700</bug_when>
    <thetext>Created attachment 67827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280265</commentid>
    <comment_count>2</comment_count>
      <attachid>67827</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-16 12:18:49 -0700</bug_when>
    <thetext>Comment on attachment 67827
Patch

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

R=me

&gt; WebKit/chromium/src/GraphicsContext3DInternal.h:51
&gt; +    bool initialize(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow);

nit: don&apos;t name these params

&gt; WebKit/chromium/src/GraphicsContext3DInternal.h:62
&gt; +    void paintRenderingResultsToCanvas(CanvasRenderingContext* context);

nit: don&apos;t name param</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280276</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-16 12:31:39 -0700</bug_when>
    <thetext>Committed r67650: &lt;http://trac.webkit.org/changeset/67650&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67827</attachid>
            <date>2010-09-16 12:15:31 -0700</date>
            <delta_ts>2010-09-16 12:18:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc3d-internal.patch</filename>
            <type>text/plain</type>
            <size>25850</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc2NDYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDktMTYgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIHNlcGFyYXRlIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDU5MTQKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3Jj
L0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbC5oOiBBZGRlZC4KKwogMjAxMC0wOS0xNiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlz
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY3NjQzKQorKysgV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw2ICszMjcsNyBAQAogICAgICAgICAgICAgICAg
ICdzcmMvR0xFUzJDb250ZXh0SW50ZXJuYWwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0dM
RVMyQ29udGV4dEludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250
ZXh0M0QuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9ndGsvV2ViRm9udEluZm8uY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL2d0ay9XZWJGb250SW5mby5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDY3NjQzKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAt
NzksMjQyICs4MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBHcmFwaGljc0NvbnRleHQzREludGVybmFsCi0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWwgewotcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKLSAg
ICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwotCi0gICAgYm9vbCBpbml0aWFsaXplKEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93
KTsKLQotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCgpIGNvbnN0OwotICAgIFBsYXRmb3JtM0RPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29u
c3Q7Ci0KLSAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgaW50IHNpemVJbkJ5
dGVzKGludCB0eXBlKTsKLQotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwotCi0gICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0KTsKLSAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBj
b25zdDsKLQotICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKLQotI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLSAgICBXZWJHTExheWVyQ2hyb21pdW0qIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKLSNlbmRpZgotICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0OwotICAgIGJv
b2wgaXNHTEVTMk5QT1RTdHJpY3QoKSBjb25zdDsKLSAgICBib29sIGlzRXJyb3JHZW5lcmF0ZWRP
bk91dE9mQm91bmRzQWNjZXNzZXMoKSBjb25zdDsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAg
IC8vIEVudHJ5IHBvaW50cyBmb3IgV2ViR0wuCi0gICAgLy8KLSAgICB2b2lkIGFjdGl2ZVRleHR1
cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlKTsKLSAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKTsKLSAgICB2b2lkIGJp
bmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCB1bnNpZ25lZCBsb25nIGluZGV4LCBj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgYmluZEJ1ZmZlcih1bnNpZ25lZCBsb25nIHRh
cmdldCwgUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgdm9pZCBiaW5kRnJhbWVidWZmZXIodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOwotICAgIHZvaWQgYmluZFJlbmRlcmJ1
ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgdm9pZCBi
aW5kVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
KTsKLSAgICB2b2lkIGJsZW5kQ29sb3IoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUg
Ymx1ZSwgZG91YmxlIGFscGhhKTsKLSAgICB2b2lkIGJsZW5kRXF1YXRpb24odW5zaWduZWQgbG9u
ZyBtb2RlKTsKLSAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1bnNpZ25lZCBsb25nIG1v
ZGVSR0IsIHVuc2lnbmVkIGxvbmcgbW9kZUFscGhhKTsKLSAgICB2b2lkIGJsZW5kRnVuYyh1bnNp
Z25lZCBsb25nIHNmYWN0b3IsIHVuc2lnbmVkIGxvbmcgZGZhY3Rvcik7Ci0gICAgdm9pZCBibGVu
ZEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0Is
IHVuc2lnbmVkIGxvbmcgc3JjQWxwaGEsIHVuc2lnbmVkIGxvbmcgZHN0QWxwaGEpOwotCi0gICAg
dm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQg
bG9uZyB1c2FnZSk7Ci0gICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBp
bnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSk7Ci0gICAgdm9p
ZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgaW50IHNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpOwotCi0gICAgdW5zaWduZWQgbG9uZyBjaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KTsKLSAgICB2b2lkIGNsZWFyKHVuc2lnbmVk
IGxvbmcgbWFzayk7Ci0gICAgdm9pZCBjbGVhckNvbG9yKGRvdWJsZSByZWQsIGRvdWJsZSBncmVl
biwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7Ci0gICAgdm9pZCBjbGVhckRlcHRoKGRvdWJs
ZSBkZXB0aCk7Ci0gICAgdm9pZCBjbGVhclN0ZW5jaWwobG9uZyBzKTsKLSAgICB2b2lkIGNvbG9y
TWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKTsKLSAgICB2
b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0KLSAgICB2b2lkIGNvcHlUZXhJ
bWFnZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCBsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQsIGxvbmcgYm9yZGVyKTsKLSAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJE
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCBsb25nIHhvZmZzZXQsIGxvbmcgeW9m
ZnNldCwgbG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0KTsKLSAgICB2b2lkIGN1bGxGYWNlKHVuc2lnbmVkIGxvbmcgbW9kZSk7Ci0gICAgdm9p
ZCBkZXB0aEZ1bmModW5zaWduZWQgbG9uZyBmdW5jKTsKLSAgICB2b2lkIGRlcHRoTWFzayhib29s
IGZsYWcpOwotICAgIHZvaWQgZGVwdGhSYW5nZShkb3VibGUgek5lYXIsIGRvdWJsZSB6RmFyKTsK
LSAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0
KTsKLSAgICB2b2lkIGRpc2FibGUodW5zaWduZWQgbG9uZyBjYXApOwotICAgIHZvaWQgZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIHZvaWQgZHJhd0Fy
cmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3QsIGxvbmcgY291bnQpOwotICAgIHZv
aWQgZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwg
dW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCk7Ci0KLSAgICB2b2lkIGVuYWJsZSh1bnNp
Z25lZCBsb25nIGNhcCk7Ci0gICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICB2b2lkIGZpbmlzaCgpOwotICAgIHZvaWQgZmx1c2goKTsKLSAg
ICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0LCBsb25nIGxldmVsKTsKLSAgICB2b2lkIGZyb250RmFj
ZSh1bnNpZ25lZCBsb25nIG1vZGUpOwotICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodW5zaWduZWQg
bG9uZyB0YXJnZXQpOwotCi0gICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgYm9vbCBn
ZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBp
bmRleCwgQWN0aXZlSW5mbyYpOwotCi0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBpbnQgbWF4Q291bnQsIGludCogY291bnQsIHVuc2lnbmVkIGlu
dCogc2hhZGVycyk7Ci0KLSAgICBpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVj
dCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLQotICAgIHZvaWQgZ2V0Qm9vbGVhbnYodW5zaWduZWQg
bG9uZyBwbmFtZSwgdW5zaWduZWQgY2hhciogdmFsdWUpOwotCi0gICAgdm9pZCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50
KiB2YWx1ZSk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBnZXRDb250ZXh0
QXR0cmlidXRlcygpOwotCi0gICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwotCi0gICAgdm9p
ZCBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKLQotICAgIHZv
aWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2
YWx1ZSk7Ci0KLSAgICB2b2lkIGdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCog
dmFsdWUpOwotCi0gICAgdm9pZCBnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgIFN0cmluZyBnZXRQcm9n
cmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0KTsKLQotICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGlu
dCogdmFsdWUpOwotCi0gICAgdm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgIFN0cmluZyBnZXRTaGFkZXJJbmZv
TG9nKFBsYXRmb3JtM0RPYmplY3QpOwotCi0gICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0
Zm9ybTNET2JqZWN0KTsKLSAgICBTdHJpbmcgZ2V0U3RyaW5nKHVuc2lnbmVkIGxvbmcgbmFtZSk7
Ci0KLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
aXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUp
OwotCi0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBsb25n
IGxvY2F0aW9uLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSk7Ci0KLSAgICBsb25n
IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUp
OwotCi0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
aXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7
Ci0KLSAgICBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1
bnNpZ25lZCBsb25nIHBuYW1lKTsKLQotICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICBib29sIGlzQnVmZmVyKFBsYXRmb3JtM0RPYmpl
Y3QpOwotICAgIGJvb2wgaXNFbmFibGVkKHVuc2lnbmVkIGxvbmcgY2FwKTsKLSAgICBib29sIGlz
RnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc1Byb2dyYW0oUGxhdGZv
cm0zRE9iamVjdCk7Ci0gICAgYm9vbCBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsK
LSAgICBib29sIGlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOwotICAgIGJvb2wgaXNUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QpOwotICAgIHZvaWQgbGluZVdpZHRoKGRvdWJsZSk7Ci0gICAgdm9p
ZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICB2b2lkIHBpeGVsU3RvcmVpKHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGxvbmcgcGFyYW0pOwotICAgIHZvaWQgcG9seWdvbk9mZnNldChk
b3VibGUgZmFjdG9yLCBkb3VibGUgdW5pdHMpOwotCi0gICAgdm9pZCByZWFkUGl4ZWxzKGxvbmcg
eCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgdW5z
aWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgdm9pZCogZGF0YSk7Ci0KLSAg
ICB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwotICAgIHZvaWQgc2Ft
cGxlQ292ZXJhZ2UoZG91YmxlIHZhbHVlLCBib29sIGludmVydCk7Ci0gICAgdm9pZCBzY2lzc29y
KGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdo
dCk7Ci0gICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpOwotICAgIHZvaWQgc3RlbmNpbEZ1bmModW5zaWduZWQgbG9uZyBmdW5jLCBsb25n
IHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUo
dW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZ1bmMsIGxvbmcgcmVmLCB1bnNpZ25l
ZCBsb25nIG1hc2spOwotICAgIHZvaWQgc3RlbmNpbE1hc2sodW5zaWduZWQgbG9uZyBtYXNrKTsK
LSAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25l
ZCBsb25nIG1hc2spOwotICAgIHZvaWQgc3RlbmNpbE9wKHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5z
aWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcyk7Ci0gICAgdm9pZCBzdGVuY2ls
T3BTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWdu
ZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcyk7Ci0KLSAgICAvLyBUaGVzZSBuZXh0
IHNldmVyYWwgZnVuY3Rpb25zIHJldHVybiBhbiBlcnJvciBjb2RlICgwIGlmIG5vIGVycm9ycykg
cmF0aGVyIHRoYW4gdXNpbmcgYW4gRXhjZXB0aW9uQ29kZS4KLSAgICAvLyBDdXJyZW50bHkgdGhl
eSByZXR1cm4gLTEgb24gYW55IGVycm9yLgotICAgIGludCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRh
cmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsIHVuc2lnbmVkIGZvcm1hdCwg
dW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKTsKLQotICAgIHZvaWQgdGV4UGFyYW1ldGVyZih1
bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBmbG9hdCBwYXJhbSk7Ci0gICAgdm9pZCB0
ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgcG5hbWUsIGludCBwYXJhbSk7
Ci0KLSAgICBpbnQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVs
LCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCB1bnNpZ25lZCB3aWR0aCwgdW5z
aWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVs
cyk7Ci0KLSAgICB2b2lkIHVuaWZvcm0xZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4KTsKLSAgICB2
b2lkIHVuaWZvcm0xZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKLSAgICB2
b2lkIHVuaWZvcm0xaShsb25nIGxvY2F0aW9uLCBpbnQgeCk7Ci0gICAgdm9pZCB1bmlmb3JtMWl2
KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpOwotICAgIHZvaWQgdW5pZm9ybTJmKGxv
bmcgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIHZvaWQgdW5pZm9ybTJmdihsb25n
IGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpOwotICAgIHZvaWQgdW5pZm9ybTJpKGxvbmcg
bG9jYXRpb24sIGludCB4LCBpbnQgeSk7Ci0gICAgdm9pZCB1bmlmb3JtMml2KGxvbmcgbG9jYXRp
b24sIGludCogdiwgaW50IHNpemUpOwotICAgIHZvaWQgdW5pZm9ybTNmKGxvbmcgbG9jYXRpb24s
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotICAgIHZvaWQgdW5pZm9ybTNmdihsb25nIGxv
Y2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpOwotICAgIHZvaWQgdW5pZm9ybTNpKGxvbmcgbG9j
YXRpb24sIGludCB4LCBpbnQgeSwgaW50IHopOwotICAgIHZvaWQgdW5pZm9ybTNpdihsb25nIGxv
Y2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZvcm00Zihsb25nIGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKLSAgICB2b2lkIHVuaWZv
cm00ZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZv
cm00aShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6LCBpbnQgdyk7Ci0gICAgdm9p
ZCB1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpOwotICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZh
bHVlLCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKLSAgICB2b2lkIHVuaWZv
cm1NYXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwg
aW50IHNpemUpOwotCi0gICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwotICAg
IHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwotCi0gICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIxZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgpOwotICAgIHZvaWQgdmVydGV4
QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIyZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHkpOwotICAg
IHZvaWQgdmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7
Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHopOwotICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcg
aW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1bnNpZ25lZCBs
b25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOwotICAgIHZvaWQg
dmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7Ci0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgaW50IHNpemUsIGlu
dCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0KLSAgICB2b2lkIHZp
ZXdwb3J0KGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCk7Ci0KLSAgICB1bnNpZ25lZCBjcmVhdGVCdWZmZXIoKTsKLSAgICB1bnNpZ25lZCBj
cmVhdGVGcmFtZWJ1ZmZlcigpOwotICAgIHVuc2lnbmVkIGNyZWF0ZVByb2dyYW0oKTsKLSAgICB1
bnNpZ25lZCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXIo
dW5zaWduZWQgbG9uZyk7Ci0gICAgdW5zaWduZWQgY3JlYXRlVGV4dHVyZSgpOwotCi0gICAgdm9p
ZCBkZWxldGVCdWZmZXIodW5zaWduZWQpOwotICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodW5z
aWduZWQpOwotICAgIHZvaWQgZGVsZXRlUHJvZ3JhbSh1bnNpZ25lZCk7Ci0gICAgdm9pZCBkZWxl
dGVSZW5kZXJidWZmZXIodW5zaWduZWQpOwotICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVuc2lnbmVk
KTsKLSAgICB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQpOwotCi0gICAgdm9pZCBzeW50aGVz
aXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKLSAgICBib29sIHN1cHBvcnRzQkdSQSgp
OwotCi1wcml2YXRlOgotICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBt
X2ltcGw7Ci0gICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKLSNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4g
bV9jb21wb3NpdGluZ0xheWVyOwotI2VuZGlmCi0jaWYgUExBVEZPUk0oU0tJQSkKLSAgICAvLyBJ
ZiB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgQ2FudmFzJ3MgYmFja2luZyBzdG9yZSBkb24n
dAotICAgIC8vIG1hdGNoIHRob3NlIHRoYXQgd2Ugd2VyZSBnaXZlbiBpbiB0aGUgbW9zdCByZWNl
bnQgY2FsbCB0bwotICAgIC8vIHJlc2hhcGUoKSwgdGhlbiB3ZSBuZWVkIGFuIGludGVybWVkaWF0
ZSBiaXRtYXAgdG8gcmVhZCBiYWNrIHRoZQotICAgIC8vIGZyYW1lIGJ1ZmZlciBpbnRvLiBUaGlz
IHNlZW1zIHRvIGhhcHBlbiB3aGVuIENTUyBzdHlsZXMgYXJlCi0gICAgLy8gdXNlZCB0byByZXNp
emUgdGhlIENhbnZhcy4KLSAgICBTa0JpdG1hcCBtX3Jlc2l6aW5nQml0bWFwOwotI2VuZGlmCi0K
LSNpZiBQTEFURk9STShDRykKLSAgICB1bnNpZ25lZCBjaGFyKiBtX3JlbmRlck91dHB1dDsKLSNl
bmRpZgotfTsKLQogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbCgpCiAgICAgOiBtX3dlYlZpZXdJbXBsKDApCiAjaWYgUExBVEZPUk0oU0tJQSkKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRElu
dGVybmFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjg0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBH
cmFwaGljc0NvbnRleHQzREludGVybmFsX2gKKyNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbF9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKyNpZiBQTEFURk9STShTS0lBKQorI2luY2x1ZGUgIlNrQml0bWFwLmgiCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK2Ns
YXNzIFdlYlZpZXdJbXBsOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK2NsYXNzIFdlYkdMTGF5
ZXJDaHJvbWl1bTsKKyNlbmRpZgorCitjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsIHsK
K3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CisgICAgfkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CisKKyAgICBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25z
dDsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0OworCisgICAg
Ym9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGludCBzaXplSW5CeXRlcyhpbnQgdHlw
ZSk7CisKKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKworICAgIHZv
aWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCk7CisgICAgYm9vbCBwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3Q7CisKKyAg
ICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgV2ViR0xMYXllckNocm9taXVtKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisjZW5k
aWYKKyAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdDsKKyAgICBib29sIGlzR0xFUzJO
UE9UU3RyaWN0KCkgY29uc3Q7CisgICAgYm9vbCBpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5k
c0FjY2Vzc2VzKCkgY29uc3Q7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBFbnRyeSBw
b2ludHMgZm9yIFdlYkdMLgorICAgIC8vCisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVuc2lnbmVk
IGxvbmcgdGV4dHVyZSk7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcik7CisgICAgdm9pZCBiaW5kQXR0cmliTG9j
YXRpb24oUGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZyBpbmRleCwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKKyAgICB2b2lkIGJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRm
b3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZFRleHR1cmUo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSk7CisgICAgdm9p
ZCBibGVuZENvbG9yKGRvdWJsZSByZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJs
ZSBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKHVuc2lnbmVkIGxvbmcgbW9kZSk7Cisg
ICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodW5zaWduZWQgbG9uZyBtb2RlUkdCLCB1bnNp
Z25lZCBsb25nIG1vZGVBbHBoYSk7CisgICAgdm9pZCBibGVuZEZ1bmModW5zaWduZWQgbG9uZyBz
ZmFjdG9yLCB1bnNpZ25lZCBsb25nIGRmYWN0b3IpOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJh
dGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCB1bnNpZ25lZCBs
b25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25nIGRzdEFscGhhKTsKKworICAgIHZvaWQgYnVmZmVy
RGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2Up
OworICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIGNv
bnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyU3Vi
RGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIGludCBzaXplLCBjb25zdCB2
b2lkKiBkYXRhKTsKKworICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1
bnNpZ25lZCBsb25nIHRhcmdldCk7CisgICAgdm9pZCBjbGVhcih1bnNpZ25lZCBsb25nIG1hc2sp
OworICAgIHZvaWQgY2xlYXJDb2xvcihkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBi
bHVlLCBkb3VibGUgYWxwaGEpOworICAgIHZvaWQgY2xlYXJEZXB0aChkb3VibGUgZGVwdGgpOwor
ICAgIHZvaWQgY2xlYXJTdGVuY2lsKGxvbmcgcyk7CisgICAgdm9pZCBjb2xvck1hc2soYm9vbCBy
ZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSk7CisgICAgdm9pZCBjb21waWxl
U2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRCh1bnNp
Z25lZCBsb25nIHRhcmdldCwgbG9uZyBsZXZlbCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1h
dCwgbG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0LCBsb25nIGJvcmRlcik7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCBs
b25nIHRhcmdldCwgbG9uZyBsZXZlbCwgbG9uZyB4b2Zmc2V0LCBsb25nIHlvZmZzZXQsIGxvbmcg
eCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Cisg
ICAgdm9pZCBjdWxsRmFjZSh1bnNpZ25lZCBsb25nIG1vZGUpOworICAgIHZvaWQgZGVwdGhGdW5j
KHVuc2lnbmVkIGxvbmcgZnVuYyk7CisgICAgdm9pZCBkZXB0aE1hc2soYm9vbCBmbGFnKTsKKyAg
ICB2b2lkIGRlcHRoUmFuZ2UoZG91YmxlIHpOZWFyLCBkb3VibGUgekZhcik7CisgICAgdm9pZCBk
ZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9p
ZCBkaXNhYmxlKHVuc2lnbmVkIGxvbmcgY2FwKTsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIGRyYXdBcnJheXModW5zaWdu
ZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBsb25nIGNvdW50KTsKKyAgICB2b2lkIGRyYXdFbGVt
ZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxv
bmcgdHlwZSwgbG9uZyBvZmZzZXQpOworCisgICAgdm9pZCBlbmFibGUodW5zaWduZWQgbG9uZyBj
YXApOworICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgdm9pZCBmaW5pc2goKTsKKyAgICB2b2lkIGZsdXNoKCk7CisgICAgdm9pZCBmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBh
dHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHRleHRhcmdldCwgUGxh
dGZvcm0zRE9iamVjdCwgbG9uZyBsZXZlbCk7CisgICAgdm9pZCBmcm9udEZhY2UodW5zaWduZWQg
bG9uZyBtb2RlKTsKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
KTsKKworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
dW5zaWduZWQgbG9uZyBpbmRleCwgQWN0aXZlSW5mbyYpOworICAgIGJvb2wgZ2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2
ZUluZm8mKTsKKworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgaW50IG1heENvdW50LCBpbnQqIGNvdW50LCB1bnNpZ25lZCBpbnQqIHNoYWRlcnMp
OworCisgICAgaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIGdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUs
IHVuc2lnbmVkIGNoYXIqIHZhbHVlKTsKKworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOwor
CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMo
KTsKKworICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKKworICAgIHZvaWQgZ2V0RmxvYXR2
KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7CisKKyAgICB2b2lkIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisg
ICAgdm9pZCBnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKwor
ICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2co
UGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsK
KworICAgIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9y
bTNET2JqZWN0KTsKKworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOworCisgICAgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgIHZv
aWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwg
ZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIGludCogdmFsdWUpOworCisgICAgbG9uZyBnZXRVbmlmb3Jt
TG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisgICAgbG9u
ZyBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSk7CisKKyAgICB2b2lkIGhpbnQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgbW9kZSk7CisgICAgYm9vbCBpc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBi
b29sIGlzRW5hYmxlZCh1bnNpZ25lZCBsb25nIGNhcCk7CisgICAgYm9vbCBpc0ZyYW1lYnVmZmVy
KFBsYXRmb3JtM0RPYmplY3QpOworICAgIGJvb2wgaXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3Qp
OworICAgIGJvb2wgaXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgYm9vbCBp
c1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBib29sIGlzVGV4dHVyZShQbGF0Zm9ybTNE
T2JqZWN0KTsKKyAgICB2b2lkIGxpbmVXaWR0aChkb3VibGUpOworICAgIHZvaWQgbGlua1Byb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1bnNpZ25lZCBsb25n
IHBuYW1lLCBsb25nIHBhcmFtKTsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoZG91YmxlIGZhY3Rv
ciwgZG91YmxlIHVuaXRzKTsKKworICAgIHZvaWQgcmVhZFBpeGVscyhsb25nIHgsIGxvbmcgeSwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVkIGxvbmcg
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHR5cGUsIHZvaWQqIGRhdGEpOworCisgICAgdm9pZCByZWxl
YXNlU2hhZGVyQ29tcGlsZXIoKTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdl
KGRvdWJsZSB2YWx1ZSwgYm9vbCBpbnZlcnQpOworICAgIHZvaWQgc2Npc3Nvcihsb25nIHgsIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworICAgIHZv
aWQgc2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgc3RyaW5nKTsK
KyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2ln
bmVkIGxvbmcgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxv
bmcgZmFjZSwgdW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNr
KTsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKHVuc2lnbmVkIGxvbmcgbWFzayk7CisgICAgdm9pZCBz
dGVuY2lsTWFza1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBtYXNr
KTsKKyAgICB2b2lkIHN0ZW5jaWxPcCh1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcg
emZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUo
dW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcgemZh
aWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOworCisgICAgLy8gVGhlc2UgbmV4dCBzZXZlcmFsIGZ1
bmN0aW9ucyByZXR1cm4gYW4gZXJyb3IgY29kZSAoMCBpZiBubyBlcnJvcnMpIHJhdGhlciB0aGFu
IHVzaW5nIGFuIEV4Y2VwdGlvbkNvZGUuCisgICAgLy8gQ3VycmVudGx5IHRoZXkgcmV0dXJuIC0x
IG9uIGFueSBlcnJvci4KKyAgICBpbnQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2ln
bmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2ln
bmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5
cGUsIHZvaWQqIHBpeGVscyk7CisKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodW5zaWduZWQgdGFy
Z2V0LCB1bnNpZ25lZCBwbmFtZSwgZmxvYXQgcGFyYW0pOworICAgIHZvaWQgdGV4UGFyYW1ldGVy
aSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBpbnQgcGFyYW0pOworCisgICAgaW50
IHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQg
eG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdo
dCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpOworCisgICAg
dm9pZCB1bmlmb3JtMWYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCk7CisgICAgdm9pZCB1bmlmb3Jt
MWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3Jt
MWkobG9uZyBsb2NhdGlvbiwgaW50IHgpOworICAgIHZvaWQgdW5pZm9ybTFpdihsb25nIGxvY2F0
aW9uLCBpbnQqIHYsIGludCBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0yZihsb25nIGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwg
ZmxvYXQqIHYsIGludCBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0yaShsb25nIGxvY2F0aW9uLCBp
bnQgeCwgaW50IHkpOworICAgIHZvaWQgdW5pZm9ybTJpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYs
IGludCBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0zZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgZmxv
YXQqIHYsIGludCBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQg
eCwgaW50IHksIGludCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgaW50
KiB2LCBpbnQgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGZ2KGxvbmcg
bG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtNGkobG9uZyBs
b2NhdGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgaW50IHcpOworICAgIHZvaWQgdW5pZm9ybTRp
dihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNp
emUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2
KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsK
KworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIHZhbGlk
YXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZvaWQgdmVydGV4QXR0cmliMWYo
dW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1
bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmli
MmYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQg
dmVydGV4QXR0cmliM2YodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0
KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmR4LCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YjRmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4
QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwgYm9v
bCBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHN0cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworCisgICAgdm9pZCB2aWV3cG9ydChsb25n
IHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwor
CisgICAgdW5zaWduZWQgY3JlYXRlQnVmZmVyKCk7CisgICAgdW5zaWduZWQgY3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVQcm9ncmFtKCk7CisgICAgdW5zaWduZWQgY3Jl
YXRlUmVuZGVyYnVmZmVyKCk7CisgICAgdW5zaWduZWQgY3JlYXRlU2hhZGVyKHVuc2lnbmVkIGxv
bmcpOworICAgIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoKTsKKworICAgIHZvaWQgZGVsZXRlQnVm
ZmVyKHVuc2lnbmVkKTsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkKTsKKyAg
ICB2b2lkIGRlbGV0ZVByb2dyYW0odW5zaWduZWQpOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVyKHVuc2lnbmVkKTsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1bnNpZ25lZCk7CisgICAgdm9p
ZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkKTsKKworICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3Io
dW5zaWduZWQgbG9uZyBlcnJvcik7CisKKyAgICB2b2lkIHN3YXBCdWZmZXJzKCk7CisKKyAgICBi
b29sIHN1cHBvcnRzQkdSQSgpOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEPiBtX2ltcGw7CisgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJW
aWV3SW1wbDsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVmUHRyPFdl
YkdMTGF5ZXJDaHJvbWl1bT4gbV9jb21wb3NpdGluZ0xheWVyOworI2VuZGlmCisjaWYgUExBVEZP
Uk0oU0tJQSkKKyAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgQ2FudmFzJ3Mg
YmFja2luZyBzdG9yZSBkb24ndAorICAgIC8vIG1hdGNoIHRob3NlIHRoYXQgd2Ugd2VyZSBnaXZl
biBpbiB0aGUgbW9zdCByZWNlbnQgY2FsbCB0bworICAgIC8vIHJlc2hhcGUoKSwgdGhlbiB3ZSBu
ZWVkIGFuIGludGVybWVkaWF0ZSBiaXRtYXAgdG8gcmVhZCBiYWNrIHRoZQorICAgIC8vIGZyYW1l
IGJ1ZmZlciBpbnRvLiBUaGlzIHNlZW1zIHRvIGhhcHBlbiB3aGVuIENTUyBzdHlsZXMgYXJlCisg
ICAgLy8gdXNlZCB0byByZXNpemUgdGhlIENhbnZhcy4KKyAgICBTa0JpdG1hcCBtX3Jlc2l6aW5n
Qml0bWFwOworI2VuZGlmCisKKyNpZiBQTEFURk9STShDRykKKyAgICB1bnNpZ25lZCBjaGFyKiBt
X3JlbmRlck91dHB1dDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0M0RfaAo=
</data>
<flag name="review"
          id="57242"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="57243"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>