<?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>79478</bug_id>
          
          <creation_ts>2012-02-24 05:01:42 -0800</creation_ts>
          <short_desc>LayerTreeHostProxy uses Functional instead of MessageQueue for accumulating tasks.</short_desc>
          <delta_ts>2012-02-26 20:13:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>levin+threading</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564213</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 05:01:42 -0800</bug_when>
    <thetext>Add TaskQueue and apply it into LayerTreeHostProxy.

Both TaskQueue and MessageQueue are useful.
TaskQueue can reduces codes about boilerplate message definition.
MessageQueue can provide more functionality like remove.
LayerTreeHostProxy dose not require special funcionality of MessageQueue, so
TaskQueue can make LayerTreeHostProxy code more succinct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564217</commentid>
    <comment_count>1</comment_count>
      <attachid>128713</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 05:05:12 -0800</bug_when>
    <thetext>Created attachment 128713
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564219</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 05:06:07 -0800</bug_when>
    <thetext>I will apply TaskQueue to RunLoop and etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564220</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 05:07:00 -0800</bug_when>
    <thetext>Attachment 128713 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/wtf/TaskQueue.h:38:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564223</commentid>
    <comment_count>4</comment_count>
      <attachid>128715</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 05:09:52 -0800</bug_when>
    <thetext>Created attachment 128715
patch v.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564228</commentid>
    <comment_count>5</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 05:19:05 -0800</bug_when>
    <thetext>Chrome defines Function&lt;void()&gt; to Closure, and defines Deque&lt;Closure&gt; to TaskQueue in message_loop.h in chromium project.
I mimic that.

I will bring some functionalities from chrome to WebKit when I need them.
http://dev.chromium.org/developers/design-documents/threading</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564312</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-24 07:16:35 -0800</bug_when>
    <thetext>I&apos;m OK with the changes to LayerTreeHostProxy, but I don&apos;t get to review additions to WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564853</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 21:09:27 -0800</bug_when>
    <thetext>Thanks, Rosenthal.
I think it is hard to persuade to patch TaskQueue.
I postpone it next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564862</commentid>
    <comment_count>8</comment_count>
      <attachid>128851</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 21:38:47 -0800</bug_when>
    <thetext>Created attachment 128851
patch v.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564865</commentid>
    <comment_count>9</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 21:43:04 -0800</bug_when>
    <thetext>I focus on only LayerTreeHostProxy without unreasonable invasion to WTF.
I understand only one thread using LayerTreeHostProxy, so I do not use Mutex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564866</commentid>
    <comment_count>10</comment_count>
      <attachid>128853</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-24 21:47:52 -0800</bug_when>
    <thetext>Created attachment 128853
patch v.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564955</commentid>
    <comment_count>11</comment_count>
      <attachid>128853</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-25 07:55:01 -0800</bug_when>
    <thetext>Comment on attachment 128853
patch v.4

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

Awesome!
Some touch ups and we&apos;re good.

&gt; Source/WebKit2/ChangeLog:8
&gt; +        It is succinct to collect tasks using Functional because of reducing codes about
&gt; +        boilerplate message definition.

Please reword changelog (just an English touch-up):
Use Functional instead of a MessageQueue for messages to the LayerTreeHostProxy renderer. This makes a lot of the broilerplate code for message-passing unnecessary, and results in a much more succinct implementation.

&gt; Source/WebKit2/UIProcess/LayerTreeHostProxy.h:92
&gt; +    Vector&lt;Function&lt;void()&gt; &gt; m_functionQueue;

m_functionQueue -&gt; m_renderQueue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565214</commentid>
    <comment_count>12</comment_count>
      <attachid>128932</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-26 15:18:15 -0800</bug_when>
    <thetext>Created attachment 128932
patch v.5

Thanks for kind review. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565275</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 20:11:48 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 128932:

css3/filters/effect-contrast-hw.html bug 79618 (author: cmarrin@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565276</commentid>
    <comment_count>14</comment_count>
      <attachid>128932</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 20:13:48 -0800</bug_when>
    <thetext>Comment on attachment 128932
patch v.5

Clearing flags on attachment: 128932

Committed r108951: &lt;http://trac.webkit.org/changeset/108951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565277</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 20:13:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128713</attachid>
            <date>2012-02-24 05:05:12 -0800</date>
            <delta_ts>2012-02-24 05:09:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Add-TaskQueue-and-apply-it-into-LayerTreeHostProxy.patch</filename>
            <type>text/plain</type>
            <size>27629</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBmNzdmNTFiZjNkZDRiMGNjYzc2ODkzNmZmNDk0ZTk3OWI5MjY0MjQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IEZyaSwgMjQgRmViIDIwMTIgMjE6NTA6MzAgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBBZGQgVGFza1F1ZXVlIGFuZCBhcHBseSBpdCBpbnRvIExheWVyVHJlZUhvc3RQcm94eS4KIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ3OAoKQm90aCBUYXNrUXVl
dWUgYW5kIE1lc3NhZ2VRdWV1ZSBhcmUgdXNlZnVsLgpUYXNrUXVldWUgY2FuIHJlZHVjZXMgY29k
ZXMgYWJvdXQgYm9pbGVycGxhdGUgbWVzc2FnZSBkZWZpbml0aW9uLgpNZXNzYWdlUXVldWUgY2Fu
IHByb3ZpZGUgbW9yZSBmdW5jdGlvbmFsaXR5IGxpa2UgcmVtb3ZlLgpMYXllclRyZWVIb3N0UHJv
eHkgZG9zZSBub3QgcmVxdWlyZSBzcGVjaWFsIGZ1bmNpb25hbGl0eSBvZiBNZXNzYWdlUXVldWUs
IHNvClRhc2tRdWV1ZSBjYW4gbWFrZSBMYXllclRyZWVIb3N0UHJveHkgY29kZSBtb3JlIHN1Y2Np
bmN0LgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgICAyNyArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBp
ICAgICAgICAgIHwgICAgMSArCiAuLi4vSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qICAgICAgICAgICB8ICAgIDQgKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogICAgICAgfCAgICA0ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01h
a2VMaXN0cy50eHQgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1Rhc2tRdWV1ZS5oICAgICAgICAgICAgICB8ICAgOTkgKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysKIFNvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UYXNrUXVldWUuaCAgIHwgICAgNCArCiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmggICAgICB8ICAg
MTIgKy0KIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAg
IHwgIDIxOSArKy0tLS0tLS0tLS0tLS0tLS0tLQogMTEgZmlsZXMgY2hhbmdlZCwgMjE1IGluc2Vy
dGlvbnMoKyksIDIwNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1Rhc2tRdWV1ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Rhc2tRdWV1ZS5oCgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKaW5kZXggYTU2ZTEzMC4uZTg5ODYwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDItMjQgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29t
cGFueTEwMC5uZXQ+CisKKyAgICAgICAgQWRkIFRhc2tRdWV1ZSBhbmQgYXBwbHkgaXQgaW50byBM
YXllclRyZWVIb3N0UHJveHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03OTQ3OAorCisgICAgICAgIEJvdGggVGFza1F1ZXVlIGFuZCBNZXNzYWdlUXVl
dWUgYXJlIHVzZWZ1bC4KKyAgICAgICAgVGFza1F1ZXVlIGNhbiByZWR1Y2VzIGNvZGVzIGFib3V0
IGJvaWxlcnBsYXRlIG1lc3NhZ2UgZGVmaW5pdGlvbi4KKyAgICAgICAgTWVzc2FnZVF1ZXVlIGNh
biBwcm92aWRlIG1vcmUgZnVuY3Rpb25hbGl0eSBsaWtlIHJlbW92ZS4KKyAgICAgICAgTGF5ZXJU
cmVlSG9zdFByb3h5IGRvc2Ugbm90IHJlcXVpcmUgc3BlY2lhbCBmdW5jaW9uYWxpdHkgb2YgTWVz
c2FnZVF1ZXVlLCBzbworICAgICAgICBUYXNrUXVldWUgY2FuIG1ha2UgTGF5ZXJUcmVlSG9zdFBy
b3h5IGNvZGUgbW9yZSBzdWNjaW5jdC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIHd0Zi9UYXNrUXVldWUuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAg
ICAgICAoVGFza1F1ZXVlKToKKyAgICAgICAgKFdURjo6VGFza1F1ZXVlOjpUYXNrUXVldWUpOgor
ICAgICAgICAoV1RGOjpUYXNrUXVldWU6On5UYXNrUXVldWUpOgorICAgICAgICAoV1RGOjpUYXNr
UXVldWU6OmFwcGVuZCk6CisgICAgICAgIChXVEY6OlRhc2tRdWV1ZTo6cHJlcGVuZCk6CisgICAg
ICAgIChXVEY6OlRhc2tRdWV1ZTo6dHJ5R2V0VGFza3MpOgorICAgICAgICAoV1RGOjpUYXNrUXVl
dWU6OnBlcmZvcm1UYXNrcyk6CisKIDIwMTItMDItMjQgIEFuZHJldyBMbyAgPGFubG9AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRW5hYmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCBlMTlkZmI2Li43
YmM4ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAt
MjE0LDYgKzIxNCw3IEBACiAgICAgICAgICAgICAnd3RmL1N0ZExpYkV4dHJhcy5oJywKICAgICAg
ICAgICAgICd3dGYvU3RyaW5nRXh0cmFzLmgnLAogICAgICAgICAgICAgJ3d0Zi9TdHJpbmdIYXNo
ZXIuaCcsCisgICAgICAgICAgICAnd3RmL1Rhc2tRdWV1ZS5oJywKICAgICAgICAgICAgICd3dGYv
VGVtcG9yYXJ5Q2hhbmdlLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkU3BlY2lmaWMuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZj
cHJvagppbmRleCA1Njg5YjI2Li5iM2U1ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTEx
NTcsNiArMTE1NywxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHd0ZlxUYXNrUXVldWUuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVENQYWNrZWRDYWNoZS5oIgogCQkJPgogCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5ZDhlMTYuLmYwMTEzMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MjAsNiArNzIwLDcgQEAKIAkJQkMxOEM0Njgw
RTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z09iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDMThDNDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0M2MEUxNkVFMzMw
MEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAgLyogU3ltYm9s
VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDZDMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBUYXNrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZEQTQ3OTY1MENGQkNGNTYwMDkzMjhBMCAvKiBUYXNrUXVldWUuaCAqLzsgfTsKIAkJ
QkMxOEM0NkMwRTE2RjVDRDAwQjM0NDYwIC8qIFRDUGFja2VkQ2FjaGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEQTQ3OTY1MENGQkNGNTYwMDkzMjhB
MCAvKiBUQ1BhY2tlZENhY2hlLmggKi87IH07CiAJCUJDMThDNDZEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBUQ1BhZ2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NDFCRDZFMDhFODBBMTcwMDJDQkVFNyAvKiBUQ1BhZ2VNYXAuaCAqLzsgfTsKIAkJQkMx
OEM0NkUwRTE2RjVDRDAwQjM0NDYwIC8qIFRDU3BpbkxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDFCRDZGMDhFODBBMTcwMDJDQkVFNyAvKiBU
Q1NwaW5Mb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEyNjQsNiArMTI2NSw3IEBACiAJCTY1RUE0QzlBMDkyQUY5RTIwMDkzRDgwMCAvKiBK
U0xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNMb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJ
NjVFQTczNjIwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBD
b21tb25JZGVudGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
bW9uSWRlbnRpZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkRBNDc5NjUw
Q0ZCQ0Y1NjAwOTMyOEEwIC8qIFRhc2tRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUYXNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQz
NTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTcxODZBNkU4MTMxMDBCNTcwMDQ0
NzlFMSAvKiBIZXhOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV4
TnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxOEE4NDgyMTM0RjNBMTIw
MEI4NzUyOSAvKiBTdHJpbmdPcGVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU3RyaW5nT3BlcmF0b3JzLmg7IHBhdGggPSB0ZXh0L1N0cmluZ09wZXJhdG9ycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxNyw2ICsyMzE5LDcgQEAKIAkJCQlGRTFC
NDQ3OTBFQ0NENzNCMDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmggKi8sCiAJCQkJRTExRDUxNzUw
QjJFNzk4RDAwNTZDMTg4IC8qIFN0cmluZ0V4dHJhcy5oICovLAogCQkJCTVENjNFOUFDMTBGMkJE
NkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNoZXIuaCAqLywKKwkJCQk2REE0Nzk2NTBDRkJDRjU2MDA5
MzI4QTAgLyogVGFza1F1ZXVlLmggKi8sCiAJCQkJNURBNDc5NjUwQ0ZCQ0Y1NjAwOTMyOEEwIC8q
IFRDUGFja2VkQ2FjaGUuaCAqLywKIAkJCQk2NTQxQkQ2RTA4RTgwQTE3MDAyQ0JFRTcgLyogVENQ
YWdlTWFwLmggKi8sCiAJCQkJNjU0MUJENkYwOEU4MEExNzAwMkNCRUU3IC8qIFRDU3BpbkxvY2su
aCAqLywKQEAgLTMyODYsNiArMzI4OSw3IEBACiAJCQkJQkM5MDQxNDgwRUI5MjUwOTAwRkUyNkZB
IC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
Nzg0QTI2NDExRDE2NjIyMDA1Nzc2QUMgLyogU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0MxOEM0NkMwRTE2RjVDRDAwQjM0NDYwIC8qIFRhc2tRdWV1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NkMwRTE2RjVDRDAwQjM0NDYwIC8qIFRDUGFja2VkQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDZEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUQ1BhZ2VNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDZFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUQ1NwaW5Mb2Nr
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0
CmluZGV4IDYzZmM1OWMuLjgxZWFlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFr
ZUxpc3RzLnR4dApAQCAtODYsNiArODYsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBTdGRMaWJF
eHRyYXMuaAogICAgIFN0cmluZ0V4dHJhcy5oCiAgICAgU3RyaW5nSGFzaGVyLmgKKyAgICBUYXNr
UXVldWUuaAogICAgIFRDUGFja2VkQ2FjaGUuaAogICAgIFRDUGFnZU1hcC5oCiAgICAgVENTcGlu
TG9jay5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Rhc2tRdWV1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UYXNrUXVldWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41MjQ3YWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UYXNrUXVldWUuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIENvbXBhbnkxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGFza1F1ZXVlX2gKKyNkZWZpbmUgVGFza1F1ZXVlX2gKKworI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7Cisg
ICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkKCk+IFRhc2s7CisKKyAgICBjbGFzcyBUYXNrUXVldWUg
eworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUYXNrUXVldWUpOworICAgIHB1YmxpYzoK
KyAgICAgICAgVGFza1F1ZXVlKCkgeyB9CisgICAgICAgIH5UYXNrUXVldWUoKSB7IH0KKworICAg
ICAgICB2b2lkIGFwcGVuZChjb25zdCBUYXNrJik7CisgICAgICAgIHZvaWQgcHJlcGVuZChjb25z
dCBUYXNrJik7CisKKyAgICAgICAgVmVjdG9yPFRhc2s+IHRyeUdldFRhc2tzKCk7CisgICAgICAg
IHNpemVfdCBwZXJmb3JtVGFza3MoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE11dGV4IG1f
dGFza3NNdXRleDsKKyAgICAgICAgVmVjdG9yPFRhc2s+IG1fdGFza3M7CisgICAgfTsKKworICAg
IGlubGluZSB2b2lkIFRhc2tRdWV1ZTo6YXBwZW5kKGNvbnN0IFRhc2smIHRhc2spCisgICAgewor
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGFza3NNdXRleCk7CisgICAgICAgIG1fdGFza3Mu
YXBwZW5kKHRhc2spOworICAgIH0KKworICAgIGlubGluZSB2b2lkIFRhc2tRdWV1ZTo6cHJlcGVu
ZChjb25zdCBUYXNrJiB0YXNrKQorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3Rh
c2tzTXV0ZXgpOworICAgICAgICBtX3Rhc2tzLnByZXBlbmQodGFzayk7CisgICAgfQorCisgICAg
aW5saW5lIFZlY3RvcjxUYXNrPiBUYXNrUXVldWU6OnRyeUdldFRhc2tzKCkKKyAgICB7CisgICAg
ICAgIFZlY3RvcjxUYXNrPiB0YXNrczsKKyAgICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fdGFza3NNdXRleCk7CisgICAgICAgICAgICBtX3Rhc2tzLnN3YXAodGFza3Mp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0YXNrczsKKyAgICB9CisKKyAgICBpbmxpbmUg
c2l6ZV90IFRhc2tRdWV1ZTo6cGVyZm9ybVRhc2tzKCkKKyAgICB7CisgICAgICAgIFZlY3RvcjxU
YXNrPiB0YXNrczsKKyAgICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dGFza3NNdXRleCk7CisgICAgICAgICAgICBpZiAobV90YXNrcy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBtX3Rhc2tzLnN3YXAodGFza3MpOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0YXNrcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIHRhc2tzW2ldKCk7CisgICAgICAgIHJldHVybiB0YXNrcy5zaXplKCk7
CisgICAgfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpUYXNrUXVldWU7Cit1
c2luZyBXVEY6OlRhc2s7CisKKyNlbmRpZiAvLyBUYXNrUXVldWVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgz
MDU4ZTYuLjYyMzM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxMi0wMi0yNCAg
SHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBBZGQg
VGFza1F1ZXVlIGFuZCBhcHBseSBpdCBpbnRvIExheWVyVHJlZUhvc3RQcm94eS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDc4CisKKyAgICAgICAg
Qm90aCBUYXNrUXVldWUgYW5kIE1lc3NhZ2VRdWV1ZSBhcmUgdXNlZnVsLgorICAgICAgICBUYXNr
UXVldWUgY2FuIHJlZHVjZXMgY29kZXMgYWJvdXQgYm9pbGVycGxhdGUgbWVzc2FnZSBkZWZpbml0
aW9uLgorICAgICAgICBNZXNzYWdlUXVldWUgY2FuIHByb3ZpZGUgbW9yZSBmdW5jdGlvbmFsaXR5
IGxpa2UgcmVtb3ZlLgorICAgICAgICBMYXllclRyZWVIb3N0UHJveHkgZG9zZSBub3QgcmVxdWly
ZSBzcGVjaWFsIGZ1bmNpb25hbGl0eSBvZiBNZXNzYWdlUXVldWUsIHNvCisgICAgICAgIFRhc2tR
dWV1ZSBjYW4gbWFrZSBMYXllclRyZWVIb3N0UHJveHkgY29kZSBtb3JlIHN1Y2NpbmN0LgorCisg
ICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy93dGYvVGFza1F1ZXVlLmg6IEFkZGVkLgorCisyMDEyLTAyLTI0ICBIdWFuZyBEb25n
c3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFNjcm9sbFRocmVhZCB1
c2VzIFJ1bkxvb3AgaW5zdGVhZCBvZiBDRlJ1bkxvb3AuCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ2MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvVGFza1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOWFmOGUyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9UYXNrUXVldWUuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYg
V2ViQ29yZV9GV0RfVGFza1F1ZXVlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVGFza1F1ZXVlX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UYXNrUXVldWUuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDI2ZWZiNDAuLmY4NmE0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0w
Mi0yNCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAg
ICBBZGQgVGFza1F1ZXVlIGFuZCBhcHBseSBpdCBpbnRvIExheWVyVHJlZUhvc3RQcm94eS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDc4CisKKyAg
ICAgICAgQm90aCBUYXNrUXVldWUgYW5kIE1lc3NhZ2VRdWV1ZSBhcmUgdXNlZnVsLgorICAgICAg
ICBUYXNrUXVldWUgY2FuIHJlZHVjZXMgY29kZXMgYWJvdXQgYm9pbGVycGxhdGUgbWVzc2FnZSBk
ZWZpbml0aW9uLgorICAgICAgICBNZXNzYWdlUXVldWUgY2FuIHByb3ZpZGUgbW9yZSBmdW5jdGlv
bmFsaXR5IGxpa2UgcmVtb3ZlLgorICAgICAgICBMYXllclRyZWVIb3N0UHJveHkgZG9zZSBub3Qg
cmVxdWlyZSBzcGVjaWFsIGZ1bmNpb25hbGl0eSBvZiBNZXNzYWdlUXVldWUsIHNvCisgICAgICAg
IFRhc2tRdWV1ZSBjYW4gbWFrZSBMYXllclRyZWVIb3N0UHJveHkgY29kZSBtb3JlIHN1Y2NpbmN0
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhv
c3RQcm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUhvc3RQcm94eTo6dXBkYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3RQcm94eTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJv
eHk6OnN5bmNSZW1vdGVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFBy
b3h5OjpkaXNwYXRjaFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94
eTo6Y3JlYXRlVGlsZUZvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFBy
b3h5Ojp1cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
UHJveHk6OnJlbW92ZVRpbGVGb3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3RQcm94eTo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUhvc3RQcm94eTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0UHJveHk6OnN5bmNDb21wb3NpdGluZ0xheWVyU3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVEaXJlY3RseUNvbXBvc2l0ZWRJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6ZGVzdHJveURpcmVjdGx5
Q29tcG9zaXRlZEltYWdlKToKKwogMjAxMi0wMi0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFtzZXRTfHNddXBwcmVzc0luY3JlbWVudGFsUmVuZGVy
aW5nIHRvIFtzZXRTfHNddXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgYW5kIG1ha2UgaXQg
V2ViUHJlZmVyZW5jZXMgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJl
ZUhvc3RQcm94eS5oCmluZGV4IDJkMTcwZGIuLjA3YjJiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKLSNp
bmNsdWRlICJNZXNzYWdlUXVldWUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJX
ZWJMYXllclRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4K
QEAgLTMyLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvVGFza1F1ZXVlLmg+CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgpAQCAtNDQsOCArNDQsNiBAQCBjbGFzcyBMYXllckJhY2tpbmdTdG9yZTsK
IGNsYXNzIFdlYkxheWVySW5mbzsKIGNsYXNzIFdlYkxheWVyVXBkYXRlSW5mbzsKIAotY2xhc3Mg
TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI7Ci0KIGNsYXNzIExheWVyVHJlZUhvc3RQcm94eSA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBMYXll
clRyZWVIb3N0UHJveHkoRHJhd2luZ0FyZWFQcm94eSopOwpAQCAtOTEsOCArODksOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Zpc2libGVDb250ZW50c1JlY3Q7CiAgICAg
ZmxvYXQgbV9jb250ZW50c1NjYWxlOwogCi0gICAgTWVzc2FnZVF1ZXVlPExheWVyVHJlZU1lc3Nh
Z2VUb1JlbmRlcmVyPiBtX21lc3NhZ2VzVG9SZW5kZXJlcjsKLSAgICB2b2lkIHB1c2hVcGRhdGVU
b1F1ZXVlKFBhc3NPd25QdHI8TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI+KTsKKyAgICBUYXNr
UXVldWUgbV90YXNrUXVldWU7CisgICAgdm9pZCBkaXNwYXRjaFVwZGF0ZShjb25zdCBUYXNrJik7
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgT3duUHRyPFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKQEAgLTEwNiw4ICsxMDQsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBzeW5jTGF5ZXJQYXJhbWV0ZXJzKGNvbnN0IFdlYkxheWVySW5mbyYpOwogICAgIHZv
aWQgY3JlYXRlVGlsZShXZWJMYXllcklELCBpbnQsIGZsb2F0IHNjYWxlKTsKICAgICB2b2lkIHJl
bW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50KTsKLSAgICB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJ
RCwgaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFNoYXJlYWJsZUJpdG1hcCopOwotICAgIHZvaWQgY3JlYXRlSW1hZ2UoaW50NjRfdCwgU2hhcmVh
YmxlQml0bWFwKik7CisgICAgdm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4pOworICAgIHZvaWQgY3JlYXRlSW1hZ2UoaW50NjRfdCwgUGFzc1JlZlB0
cjxTaGFyZWFibGVCaXRtYXA+KTsKICAgICB2b2lkIGRlc3Ryb3lJbWFnZShpbnQ2NF90KTsKICAg
ICB2b2lkIGFzc2lnbkltYWdlVG9MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgaW50NjRf
dCBpbWFnZUlEKTsKICAgICB2b2lkIGZsdXNoTGF5ZXJDaGFuZ2VzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcAppbmRleCBl
Y2I0NmE2Li4wOTU0MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
TGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAKQEAgLTQxLDExMSArNDEsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXIgewotcHVibGlj
OgotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIERlbGV0ZUxheWVyLAotICAgICAgICBDcmVhdGVU
aWxlLAotICAgICAgICBSZW1vdmVUaWxlLAotICAgICAgICBVcGRhdGVUaWxlLAotICAgICAgICBD
cmVhdGVJbWFnZSwKLSAgICAgICAgRGVzdHJveUltYWdlLAotICAgICAgICBTeW5jTGF5ZXJQYXJh
bWV0ZXJzLAotICAgICAgICBGbHVzaExheWVyQ2hhbmdlcywKLSAgICAgICAgU2V0Um9vdExheWVy
Ci0gICAgfTsKLSAgICB2aXJ0dWFsIH5MYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcigpIHsgfQot
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwotfTsKLQogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXRlbXBsYXRlPGNsYXNzIE1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdl
VG9SZW5kZXJlcjo6VHlwZSBtZXNzYWdlVHlwZT4KLWNsYXNzIExheWVyVHJlZU1lc3NhZ2VUb1Jl
bmRlcmVyV2l0aERhdGEgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXIgewotcHVi
bGljOgotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbWVzc2FnZVR5cGU7
IH0KLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyPiBj
cmVhdGUoY29uc3QgTWVzc2FnZURhdGEmIGRhdGEgPSBNZXNzYWdlRGF0YSgpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhE
YXRhKGRhdGEpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBNZXNzYWdlRGF0YSYgZGF0YSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhKGNvbnN0IE1lc3NhZ2VEYXRhJiBkYXRh
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgIHsKLSAgICB9Ci0KLSAgICBNZXNzYWdlRGF0
YSBtX2RhdGE7Ci19OwotCi0KLW5hbWVzcGFjZSB7Ci1zdHJ1Y3QgQ3JlYXRlVGlsZU1lc3NhZ2VE
YXRhIHsKLSAgICBXZWJMYXllcklEIGxheWVySUQ7Ci0gICAgaW50IHJlbW90ZVRpbGVJRDsKLSAg
ICBmbG9hdCBzY2FsZTsKLX07Ci0KLXN0cnVjdCBVcGRhdGVUaWxlTWVzc2FnZURhdGEgewotICAg
IFdlYkxheWVySUQgbGF5ZXJJRDsKLSAgICBpbnQgcmVtb3RlVGlsZUlEOwotICAgIEludFJlY3Qg
c291cmNlUmVjdDsKLSAgICBJbnRSZWN0IHRhcmdldFJlY3Q7Ci0gICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwOwotfTsKLQotc3RydWN0IFJlbW92ZVRpbGVNZXNzYWdlRGF0YSB7Ci0g
ICAgV2ViTGF5ZXJJRCBsYXllcklEOwotICAgIGludCByZW1vdGVUaWxlSUQ7Ci19OwotCi1zdHJ1
Y3QgQ3JlYXRlSW1hZ2VNZXNzYWdlRGF0YSB7Ci0gICAgaW50NjRfdCBpbWFnZUlEOwotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcDsKLX07Ci0KLXN0cnVjdCBEZXN0cm95SW1hZ2VN
ZXNzYWdlRGF0YSB7Ci0gICAgaW50NjRfdCBpbWFnZUlEOwotfTsKLQotc3RydWN0IFN5bmNMYXll
clBhcmFtZXRlcnNNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5ZXJJbmZvIGxheWVySW5mbzsKLX07
Ci0KLXN0cnVjdCBFbXB0eU1lc3NhZ2VEYXRhIHsgfTsKLXN0cnVjdCBEZWxldGVMYXllck1lc3Nh
Z2VEYXRhIHsKLSAgICBXZWJMYXllcklEIGxheWVySUQ7Ci19Owotc3RydWN0IFNldFJvb3RMYXll
ck1lc3NhZ2VEYXRhIHsKLSAgICBXZWJMYXllcklEIGxheWVySUQ7Ci19OwotCi1jbGFzcyBDcmVh
dGVUaWxlTWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJl
cldpdGhEYXRhPENyZWF0ZVRpbGVNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVy
ZXI6OkNyZWF0ZVRpbGU+IHsgfTsKLWNsYXNzIFVwZGF0ZVRpbGVNZXNzYWdlCi0gICAgICAgIDog
cHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8VXBkYXRlVGlsZU1lc3Nh
Z2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6VXBkYXRlVGlsZT4geyB9OwotY2xh
c3MgUmVtb3ZlVGlsZU1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRv
UmVuZGVyZXJXaXRoRGF0YTxSZW1vdmVUaWxlTWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VU
b1JlbmRlcmVyOjpSZW1vdmVUaWxlPiB7IH07Ci1jbGFzcyBDcmVhdGVJbWFnZU1lc3NhZ2UKLSAg
ICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxDcmVhdGVJ
bWFnZU1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6Q3JlYXRlSW1hZ2U+
IHsgfTsKLWNsYXNzIERlc3Ryb3lJbWFnZU1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJU
cmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxEZXN0cm95SW1hZ2VNZXNzYWdlRGF0YSwgTGF5
ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkRlc3Ryb3lJbWFnZT4geyB9OwotY2xhc3MgRmx1c2hM
YXllckNoYW5nZXNNZXNzYWdlCi0gICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1Jl
bmRlcmVyV2l0aERhdGE8RW1wdHlNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVy
ZXI6OkZsdXNoTGF5ZXJDaGFuZ2VzPiB7IH07Ci1jbGFzcyBTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVz
c2FnZQotICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRh
PFN5bmNMYXllclBhcmFtZXRlcnNNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVy
ZXI6OlN5bmNMYXllclBhcmFtZXRlcnM+IHsgfTsKLWNsYXNzIERlbGV0ZUxheWVyTWVzc2FnZQot
ICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPERlbGV0
ZUxheWVyTWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpEZWxldGVMYXll
cj4geyB9OwotY2xhc3MgU2V0Um9vdExheWVyTWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXll
clRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPFNldFJvb3RMYXllck1lc3NhZ2VEYXRhLCBM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6U2V0Um9vdExheWVyPiB7IH07Ci19Ci0KIFBhc3NP
d25QdHI8R3JhcGhpY3NMYXllcj4gTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVMYXllcihXZWJM
YXllcklEIGxheWVySUQpCiB7CiAgICAgR3JhcGhpY3NMYXllciogbmV3TGF5ZXIgPSBuZXcgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIodGhpcyk7CkBAIC0zNjIsMTUgKzI1OSwxNyBAQCB2b2lk
IExheWVyVHJlZUhvc3RQcm94eTo6cmVtb3ZlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0
aWxlSUQpCiAgICAgZ2V0QmFja2luZ1N0b3JlKGxheWVySUQpLT5yZW1vdmVUaWxlKHRpbGVJRCk7
CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRhdGVUaWxlKFdlYkxheWVySUQgbGF5
ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0UmVjdCwgU2hhcmVhYmxlQml0bWFwKiBiaXRtYXApCit2b2lkIExheWVyVHJlZUhv
c3RQcm94eTo6dXBkYXRlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiB3ZWFrQml0bWFwKQogeworICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IHdlYWtCaXRtYXA7CiAgICAgUmVmUHRyPExheWVyQmFja2luZ1N0b3Jl
PiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUobGF5ZXJJRCk7Ci0gICAgYmFja2luZ1N0
b3JlLT51cGRhdGVUaWxlKHRpbGVJRCwgc291cmNlUmVjdCwgdGFyZ2V0UmVjdCwgYml0bWFwKTsK
KyAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGUodGlsZUlELCBzb3VyY2VSZWN0LCB0YXJnZXRS
ZWN0LCBiaXRtYXAuZ2V0KCkpOwogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVy
cy5hZGQoYmFja2luZ1N0b3JlKTsKIH0KIAotdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0
ZUltYWdlKGludDY0X3QgaW1hZ2VJRCwgU2hhcmVhYmxlQml0bWFwKiBiaXRtYXApCit2b2lkIExh
eWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlSW1hZ2UoaW50NjRfdCBpbWFnZUlELCBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gd2Vha0JpdG1hcCkKIHsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSB3ZWFrQml0bWFwOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZTo6Y3JlYXRlKCk7CiAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyhtX3RleHR1cmVN
YXBwZXIuZ2V0KCksIGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKS5nZXQoKSwgQml0bWFwVGV4dHVyZTo6
QkdSQUZvcm1hdCk7CiAgICAgbV9kaXJlY3RseUNvbXBvc2l0ZWRJbWFnZXMuc2V0KGltYWdlSUQs
IGJhY2tpbmdTdG9yZSk7CkBAIC00MjYsMTQxICszMjUsNjUgQEAgdm9pZCBMYXllclRyZWVIb3N0
UHJveHk6OnN5bmNSZW1vdGVDb250ZW50KCkKIHsKICAgICAvLyBXZSBlbnF1ZXVlIG1lc3NhZ2Vz
IGFuZCBleGVjdXRlIHRoZW0gZHVyaW5nIHBhaW50LCBhcyB0aGV5IHJlcXVpcmUgYW4gYWN0aXZl
IEdMIGNvbnRleHQuCiAgICAgZW5zdXJlUm9vdExheWVyKCk7Ci0KLSAgICB3aGlsZSAoT3duUHRy
PExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyPiBuZXh0TWVzc2FnZSA9IG1fbWVzc2FnZXNUb1Jl
bmRlcmVyLnRyeUdldE1lc3NhZ2UoKSkgewotICAgICAgICBzd2l0Y2ggKG5leHRNZXNzYWdlLT50
eXBlKCkpIHsKLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6U2V0Um9v
dExheWVyOiB7Ci0gICAgICAgICAgICBjb25zdCBTZXRSb290TGF5ZXJNZXNzYWdlRGF0YSYgZGF0
YSA9IHN0YXRpY19jYXN0PFNldFJvb3RMYXllck1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSkt
PmRhdGEoKTsKLSAgICAgICAgICAgIHNldFJvb3RMYXllcklEKGRhdGEubGF5ZXJJRCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2Fn
ZVRvUmVuZGVyZXI6OkRlbGV0ZUxheWVyOiB7Ci0gICAgICAgICAgICBjb25zdCBEZWxldGVMYXll
ck1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8RGVsZXRlTGF5ZXJNZXNzYWdlKj4obmV4
dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICBkZWxldGVMYXllcihkYXRhLmxh
eWVySUQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIExh
eWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpTeW5jTGF5ZXJQYXJhbWV0ZXJzOiB7Ci0gICAgICAg
ICAgICBjb25zdCBTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZURhdGEmIGRhdGEgPSBzdGF0aWNf
Y2FzdDxTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0
YSgpOwotICAgICAgICAgICAgc3luY0xheWVyUGFyYW1ldGVycyhkYXRhLmxheWVySW5mbyk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVz
c2FnZVRvUmVuZGVyZXI6OkNyZWF0ZVRpbGU6IHsKLSAgICAgICAgICAgIGNvbnN0IENyZWF0ZVRp
bGVNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PENyZWF0ZVRpbGVNZXNzYWdlKj4obmV4
dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICBjcmVhdGVUaWxlKGRhdGEubGF5
ZXJJRCwgZGF0YS5yZW1vdGVUaWxlSUQsIGRhdGEuc2NhbGUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpS
ZW1vdmVUaWxlOiB7Ci0gICAgICAgICAgICBjb25zdCBSZW1vdmVUaWxlTWVzc2FnZURhdGEmIGRh
dGEgPSBzdGF0aWNfY2FzdDxSZW1vdmVUaWxlTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+
ZGF0YSgpOwotICAgICAgICAgICAgcmVtb3ZlVGlsZShkYXRhLmxheWVySUQsIGRhdGEucmVtb3Rl
VGlsZUlEKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6VXBkYXRlVGlsZTogewotICAgICAgICAgICAgY29u
c3QgVXBkYXRlVGlsZU1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8VXBkYXRlVGlsZU1l
c3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAgICAgIHVwZGF0ZVRp
bGUoZGF0YS5sYXllcklELCBkYXRhLnJlbW90ZVRpbGVJRCwgZGF0YS5zb3VyY2VSZWN0LCBkYXRh
LnRhcmdldFJlY3QsIGRhdGEuYml0bWFwLmdldCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6Q3JlYXRl
SW1hZ2U6IHsKLSAgICAgICAgICAgIGNvbnN0IENyZWF0ZUltYWdlTWVzc2FnZURhdGEmIGRhdGEg
PSBzdGF0aWNfY2FzdDxDcmVhdGVJbWFnZU1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRh
dGEoKTsKLSAgICAgICAgICAgIGNyZWF0ZUltYWdlKGRhdGEuaW1hZ2VJRCwgZGF0YS5iaXRtYXAu
Z2V0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIExh
eWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpEZXN0cm95SW1hZ2U6IHsKLSAgICAgICAgICAgIGNv
bnN0IERlc3Ryb3lJbWFnZU1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8RGVzdHJveUlt
YWdlTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0YSgpOwotICAgICAgICAgICAgZGVz
dHJveUltYWdlKGRhdGEuaW1hZ2VJRCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkZsdXNoTGF5ZXJDaGFu
Z2VzOgotICAgICAgICAgICAgZmx1c2hMYXllckNoYW5nZXMoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQorICAgIG1fdGFza1F1ZXVlLnBlcmZvcm1UYXNrcygpOwogfQog
Ci12b2lkIExheWVyVHJlZUhvc3RQcm94eTo6cHVzaFVwZGF0ZVRvUXVldWUoUGFzc093blB0cjxM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcj4gbWVzc2FnZSkKK3ZvaWQgTGF5ZXJUcmVlSG9zdFBy
b3h5OjpkaXNwYXRjaFVwZGF0ZShjb25zdCBUYXNrJiB0YXNrKQogewotICAgIG1fbWVzc2FnZXNU
b1JlbmRlcmVyLmFwcGVuZChtZXNzYWdlKTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQodGFzayk7
CiAgICAgdXBkYXRlVmlld3BvcnQoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmNy
ZWF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpV
cGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewotICAgIENyZWF0ZVRpbGVNZXNzYWdlRGF0YSBkYXRh
OwotICAgIGRhdGEubGF5ZXJJRCA9IGxheWVySUQ7Ci0gICAgZGF0YS5yZW1vdGVUaWxlSUQgPSB0
aWxlSUQ7Ci0gICAgZGF0YS5zY2FsZSA9IHVwZGF0ZUluZm8udXBkYXRlU2NhbGVGYWN0b3I7Ci0g
ICAgcHVzaFVwZGF0ZVRvUXVldWUoQ3JlYXRlVGlsZU1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7Cisg
ICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVUaWxlLCB0
aGlzLCBsYXllcklELCB0aWxlSUQsIHVwZGF0ZUluZm8udXBkYXRlU2NhbGVGYWN0b3IpKTsKICAg
ICB1cGRhdGVUaWxlRm9yTGF5ZXIobGF5ZXJJRCwgdGlsZUlELCB1cGRhdGVJbmZvKTsKIH0KIAog
dm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwg
aW50IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewotICAg
IFVwZGF0ZVRpbGVNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEubGF5ZXJJRCA9IGxheWVySUQ7
Ci0gICAgZGF0YS5yZW1vdGVUaWxlSUQgPSB0aWxlSUQ7Ci0gICAgZGF0YS5iaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CiAgICAgQVNTRVJU
KHVwZGF0ZUluZm8udXBkYXRlUmVjdHMuc2l6ZSgpID09IDEpOwotICAgIGRhdGEuc291cmNlUmVj
dCA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdHMuZmlyc3QoKTsKLSAgICBkYXRhLnRhcmdldFJlY3Qg
PSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHM7Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoVXBk
YXRlVGlsZU1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0g
dXBkYXRlSW5mby51cGRhdGVSZWN0cy5maXJzdCgpOworICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9
IHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kczsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRs
ZSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRhdGVU
aWxlLCB0aGlzLCBsYXllcklELCB0aWxlSUQsIHNvdXJjZVJlY3QsIHRhcmdldFJlY3QsIGJpdG1h
cCkpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6cmVtb3ZlVGlsZUZvckxheWVyKGlu
dCBsYXllcklELCBpbnQgdGlsZUlEKQogewotICAgIFJlbW92ZVRpbGVNZXNzYWdlRGF0YSBkYXRh
OwotICAgIGRhdGEubGF5ZXJJRCA9IGxheWVySUQ7Ci0gICAgZGF0YS5yZW1vdGVUaWxlSUQgPSB0
aWxlSUQ7Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoUmVtb3ZlVGlsZU1lc3NhZ2U6OmNyZWF0ZShk
YXRhKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1v
dmVUaWxlLCB0aGlzLCBsYXllcklELCB0aWxlSUQpKTsKIH0KIAogCiB2b2lkIExheWVyVHJlZUhv
c3RQcm94eTo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEIGlkKQogewotICAgIERl
bGV0ZUxheWVyTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmxheWVySUQgPSBpZDsKLSAgICBw
dXNoVXBkYXRlVG9RdWV1ZShEZWxldGVMYXllck1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAg
ZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpkZWxldGVMYXllciwgdGhp
cywgaWQpKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldFJvb3RDb21wb3NpdGlu
Z0xheWVyKFdlYkxheWVySUQgaWQpCiB7Ci0gICAgU2V0Um9vdExheWVyTWVzc2FnZURhdGEgZGF0
YTsKLSAgICBkYXRhLmxheWVySUQgPSBpZDsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShTZXRSb290
TGF5ZXJNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxh
eWVyVHJlZUhvc3RQcm94eTo6c2V0Um9vdExheWVySUQsIHRoaXMsIGlkKSk7CiB9CiAKIHZvaWQg
TGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKGNvbnN0IFdlYkxh
eWVySW5mbyYgaW5mbykKIHsKLSAgICBTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZURhdGEgZGF0
YTsKLSAgICBkYXRhLmxheWVySW5mbyA9IGluZm87Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoU3lu
Y0xheWVyUGFyYW1ldGVyc01lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAgZGlzcGF0Y2hVcGRh
dGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jTGF5ZXJQYXJhbWV0ZXJzLCB0aGlzLCBp
bmZvKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpkaWRSZW5kZXJGcmFtZSgpCiB7
Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoRmx1c2hMYXllckNoYW5nZXNNZXNzYWdlOjpjcmVhdGUo
KSk7Ci0gICAgdXBkYXRlVmlld3BvcnQoKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXll
clRyZWVIb3N0UHJveHk6OmZsdXNoTGF5ZXJDaGFuZ2VzLCB0aGlzKSk7CiB9CiAKIHZvaWQgTGF5
ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2NF90IGtl
eSwgY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKQogewotICAg
IENyZWF0ZUltYWdlTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmltYWdlSUQgPSBrZXk7Ci0g
ICAgZGF0YS5iaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwotICAgIHB1
c2hVcGRhdGVUb1F1ZXVlKENyZWF0ZUltYWdlTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSho
YW5kbGUpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZUhvc3RQcm94eTo6Y3Jl
YXRlSW1hZ2UsIHRoaXMsIGtleSwgYml0bWFwKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFBy
b3h5OjpkZXN0cm95RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50NjRfdCBrZXkpCiB7Ci0gICAg
RGVzdHJveUltYWdlTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmltYWdlSUQgPSBrZXk7Ci0g
ICAgcHVzaFVwZGF0ZVRvUXVldWUoRGVzdHJveUltYWdlTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsK
KyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OmRlc3Ryb3lJbWFn
ZSwgdGhpcywga2V5KSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxl
Q29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128715</attachid>
            <date>2012-02-24 05:09:52 -0800</date>
            <delta_ts>2012-02-24 21:38:47 -0800</delta_ts>
            <desc>patch v.2</desc>
            <filename>0001-Add-TaskQueue-and-apply-it-into-LayerTreeHostProxy.patch</filename>
            <type>text/plain</type>
            <size>27445</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBlNDRmMTJiNTQ2ZTgzZThjMDM0MmQ4NDRmZjI1ZTkzZDZmMWY0OWYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IEZyaSwgMjQgRmViIDIwMTIgMjE6NTA6MzAgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBBZGQgVGFza1F1ZXVlIGFuZCBhcHBseSBpdCBpbnRvIExheWVyVHJlZUhvc3RQcm94eS4KIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ3OAoKQm90aCBUYXNrUXVl
dWUgYW5kIE1lc3NhZ2VRdWV1ZSBhcmUgdXNlZnVsLgpUYXNrUXVldWUgY2FuIHJlZHVjZXMgY29k
ZXMgYWJvdXQgYm9pbGVycGxhdGUgbWVzc2FnZSBkZWZpbml0aW9uLgpNZXNzYWdlUXVldWUgY2Fu
IHByb3ZpZGUgbW9yZSBmdW5jdGlvbmFsaXR5IGxpa2UgcmVtb3ZlLgpMYXllclRyZWVIb3N0UHJv
eHkgZG9zZSBub3QgcmVxdWlyZSBzcGVjaWFsIGZ1bmNpb25hbGl0eSBvZiBNZXNzYWdlUXVldWUs
IHNvClRhc2tRdWV1ZSBjYW4gbWFrZSBMYXllclRyZWVIb3N0UHJveHkgY29kZSBtb3JlIHN1Y2Np
bmN0LgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgICAyNyArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBp
ICAgICAgICAgIHwgICAgMSArCiAuLi4vSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qICAgICAgICAgICB8ICAgIDQgKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogICAgICAgfCAgICA0ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01h
a2VMaXN0cy50eHQgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1Rhc2tRdWV1ZS5oICAgICAgICAgICAgICB8ICAgOTkgKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysKIFNvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UYXNrUXVldWUuaCAgIHwgICAgNCArCiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmggICAgICB8ICAg
MTIgKy0KIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAg
IHwgIDIxOSArKy0tLS0tLS0tLS0tLS0tLS0tLQogMTEgZmlsZXMgY2hhbmdlZCwgMjE1IGluc2Vy
dGlvbnMoKyksIDIwNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1Rhc2tRdWV1ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Rhc2tRdWV1ZS5oCgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKaW5kZXggYTU2ZTEzMC4uZTg5ODYwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDItMjQgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29t
cGFueTEwMC5uZXQ+CisKKyAgICAgICAgQWRkIFRhc2tRdWV1ZSBhbmQgYXBwbHkgaXQgaW50byBM
YXllclRyZWVIb3N0UHJveHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03OTQ3OAorCisgICAgICAgIEJvdGggVGFza1F1ZXVlIGFuZCBNZXNzYWdlUXVl
dWUgYXJlIHVzZWZ1bC4KKyAgICAgICAgVGFza1F1ZXVlIGNhbiByZWR1Y2VzIGNvZGVzIGFib3V0
IGJvaWxlcnBsYXRlIG1lc3NhZ2UgZGVmaW5pdGlvbi4KKyAgICAgICAgTWVzc2FnZVF1ZXVlIGNh
biBwcm92aWRlIG1vcmUgZnVuY3Rpb25hbGl0eSBsaWtlIHJlbW92ZS4KKyAgICAgICAgTGF5ZXJU
cmVlSG9zdFByb3h5IGRvc2Ugbm90IHJlcXVpcmUgc3BlY2lhbCBmdW5jaW9uYWxpdHkgb2YgTWVz
c2FnZVF1ZXVlLCBzbworICAgICAgICBUYXNrUXVldWUgY2FuIG1ha2UgTGF5ZXJUcmVlSG9zdFBy
b3h5IGNvZGUgbW9yZSBzdWNjaW5jdC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIHd0Zi9UYXNrUXVldWUuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAg
ICAgICAoVGFza1F1ZXVlKToKKyAgICAgICAgKFdURjo6VGFza1F1ZXVlOjpUYXNrUXVldWUpOgor
ICAgICAgICAoV1RGOjpUYXNrUXVldWU6On5UYXNrUXVldWUpOgorICAgICAgICAoV1RGOjpUYXNr
UXVldWU6OmFwcGVuZCk6CisgICAgICAgIChXVEY6OlRhc2tRdWV1ZTo6cHJlcGVuZCk6CisgICAg
ICAgIChXVEY6OlRhc2tRdWV1ZTo6dHJ5R2V0VGFza3MpOgorICAgICAgICAoV1RGOjpUYXNrUXVl
dWU6OnBlcmZvcm1UYXNrcyk6CisKIDIwMTItMDItMjQgIEFuZHJldyBMbyAgPGFubG9AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRW5hYmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCBlMTlkZmI2Li43
YmM4ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAt
MjE0LDYgKzIxNCw3IEBACiAgICAgICAgICAgICAnd3RmL1N0ZExpYkV4dHJhcy5oJywKICAgICAg
ICAgICAgICd3dGYvU3RyaW5nRXh0cmFzLmgnLAogICAgICAgICAgICAgJ3d0Zi9TdHJpbmdIYXNo
ZXIuaCcsCisgICAgICAgICAgICAnd3RmL1Rhc2tRdWV1ZS5oJywKICAgICAgICAgICAgICd3dGYv
VGVtcG9yYXJ5Q2hhbmdlLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkU3BlY2lmaWMuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZj
cHJvagppbmRleCA1Njg5YjI2Li5iM2U1ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTEx
NTcsNiArMTE1NywxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHd0ZlxUYXNrUXVldWUuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVENQYWNrZWRDYWNoZS5oIgogCQkJPgogCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5ZDhlMTYuLmYwMTEzMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MjAsNiArNzIwLDcgQEAKIAkJQkMxOEM0Njgw
RTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z09iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDMThDNDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0M2MEUxNkVFMzMw
MEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAgLyogU3ltYm9s
VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDZDMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBUYXNrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZEQTQ3OTY1MENGQkNGNTYwMDkzMjhBMCAvKiBUYXNrUXVldWUuaCAqLzsgfTsKIAkJ
QkMxOEM0NkMwRTE2RjVDRDAwQjM0NDYwIC8qIFRDUGFja2VkQ2FjaGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEQTQ3OTY1MENGQkNGNTYwMDkzMjhB
MCAvKiBUQ1BhY2tlZENhY2hlLmggKi87IH07CiAJCUJDMThDNDZEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBUQ1BhZ2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NDFCRDZFMDhFODBBMTcwMDJDQkVFNyAvKiBUQ1BhZ2VNYXAuaCAqLzsgfTsKIAkJQkMx
OEM0NkUwRTE2RjVDRDAwQjM0NDYwIC8qIFRDU3BpbkxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDFCRDZGMDhFODBBMTcwMDJDQkVFNyAvKiBU
Q1NwaW5Mb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEyNjQsNiArMTI2NSw3IEBACiAJCTY1RUE0QzlBMDkyQUY5RTIwMDkzRDgwMCAvKiBK
U0xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNMb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJ
NjVFQTczNjIwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBD
b21tb25JZGVudGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
bW9uSWRlbnRpZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkRBNDc5NjUw
Q0ZCQ0Y1NjAwOTMyOEEwIC8qIFRhc2tRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUYXNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQz
NTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTcxODZBNkU4MTMxMDBCNTcwMDQ0
NzlFMSAvKiBIZXhOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV4
TnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxOEE4NDgyMTM0RjNBMTIw
MEI4NzUyOSAvKiBTdHJpbmdPcGVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU3RyaW5nT3BlcmF0b3JzLmg7IHBhdGggPSB0ZXh0L1N0cmluZ09wZXJhdG9ycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxNyw2ICsyMzE5LDcgQEAKIAkJCQlGRTFC
NDQ3OTBFQ0NENzNCMDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmggKi8sCiAJCQkJRTExRDUxNzUw
QjJFNzk4RDAwNTZDMTg4IC8qIFN0cmluZ0V4dHJhcy5oICovLAogCQkJCTVENjNFOUFDMTBGMkJE
NkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNoZXIuaCAqLywKKwkJCQk2REE0Nzk2NTBDRkJDRjU2MDA5
MzI4QTAgLyogVGFza1F1ZXVlLmggKi8sCiAJCQkJNURBNDc5NjUwQ0ZCQ0Y1NjAwOTMyOEEwIC8q
IFRDUGFja2VkQ2FjaGUuaCAqLywKIAkJCQk2NTQxQkQ2RTA4RTgwQTE3MDAyQ0JFRTcgLyogVENQ
YWdlTWFwLmggKi8sCiAJCQkJNjU0MUJENkYwOEU4MEExNzAwMkNCRUU3IC8qIFRDU3BpbkxvY2su
aCAqLywKQEAgLTMyODYsNiArMzI4OSw3IEBACiAJCQkJQkM5MDQxNDgwRUI5MjUwOTAwRkUyNkZB
IC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
Nzg0QTI2NDExRDE2NjIyMDA1Nzc2QUMgLyogU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0MxOEM0NkMwRTE2RjVDRDAwQjM0NDYwIC8qIFRhc2tRdWV1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NkMwRTE2RjVDRDAwQjM0NDYwIC8qIFRDUGFja2VkQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDZEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUQ1BhZ2VNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDZFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUQ1NwaW5Mb2Nr
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0
CmluZGV4IDYzZmM1OWMuLjgxZWFlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFr
ZUxpc3RzLnR4dApAQCAtODYsNiArODYsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBTdGRMaWJF
eHRyYXMuaAogICAgIFN0cmluZ0V4dHJhcy5oCiAgICAgU3RyaW5nSGFzaGVyLmgKKyAgICBUYXNr
UXVldWUuaAogICAgIFRDUGFja2VkQ2FjaGUuaAogICAgIFRDUGFnZU1hcC5oCiAgICAgVENTcGlu
TG9jay5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Rhc2tRdWV1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UYXNrUXVldWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mMTlkMWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UYXNrUXVldWUuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIENvbXBhbnkxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGFza1F1ZXVlX2gKKyNkZWZpbmUgVGFza1F1ZXVlX2gKKworI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7Cit0
eXBlZGVmIEZ1bmN0aW9uPHZvaWQoKT4gVGFzazsKKworY2xhc3MgVGFza1F1ZXVlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShUYXNrUXVldWUpOworcHVibGljOgorICAgIFRhc2tRdWV1ZSgp
IHsgfQorICAgIH5UYXNrUXVldWUoKSB7IH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFRhc2sm
KTsKKyAgICB2b2lkIHByZXBlbmQoY29uc3QgVGFzayYpOworCisgICAgVmVjdG9yPFRhc2s+IHRy
eUdldFRhc2tzKCk7CisgICAgc2l6ZV90IHBlcmZvcm1UYXNrcygpOworCitwcml2YXRlOgorICAg
IE11dGV4IG1fdGFza3NNdXRleDsKKyAgICBWZWN0b3I8VGFzaz4gbV90YXNrczsKK307CisKK2lu
bGluZSB2b2lkIFRhc2tRdWV1ZTo6YXBwZW5kKGNvbnN0IFRhc2smIHRhc2spCit7CisgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX3Rhc2tzTXV0ZXgpOworICAgIG1fdGFza3MuYXBwZW5kKHRhc2spOwor
fQorCitpbmxpbmUgdm9pZCBUYXNrUXVldWU6OnByZXBlbmQoY29uc3QgVGFzayYgdGFzaykKK3sK
KyAgICBNdXRleExvY2tlciBsb2NrKG1fdGFza3NNdXRleCk7CisgICAgbV90YXNrcy5wcmVwZW5k
KHRhc2spOworfQorCitpbmxpbmUgVmVjdG9yPFRhc2s+IFRhc2tRdWV1ZTo6dHJ5R2V0VGFza3Mo
KQoreworICAgIFZlY3RvcjxUYXNrPiB0YXNrczsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3Rhc2tzTXV0ZXgpOworICAgICAgICBtX3Rhc2tzLnN3YXAodGFza3MpOworICAg
IH0KKyAgICByZXR1cm4gdGFza3M7Cit9CisKK2lubGluZSBzaXplX3QgVGFza1F1ZXVlOjpwZXJm
b3JtVGFza3MoKQoreworICAgIFZlY3RvcjxUYXNrPiB0YXNrczsKKyAgICB7CisgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3Rhc2tzTXV0ZXgpOworICAgICAgICBpZiAobV90YXNrcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgbV90YXNrcy5zd2FwKHRhc2tz
KTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRhc2tzLnNpemUoKTsgKytp
KQorICAgICAgICB0YXNrc1tpXSgpOworICAgIHJldHVybiB0YXNrcy5zaXplKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlRhc2tRdWV1ZTsKK3VzaW5nIFdURjo6VGFz
azsKKworI2VuZGlmIC8vIFRhc2tRdWV1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwNThlNi4uNjIzMzRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDEyLTAyLTI0ICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIEFkZCBUYXNrUXVldWUgYW5k
IGFwcGx5IGl0IGludG8gTGF5ZXJUcmVlSG9zdFByb3h5LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0NzgKKworICAgICAgICBCb3RoIFRhc2tRdWV1
ZSBhbmQgTWVzc2FnZVF1ZXVlIGFyZSB1c2VmdWwuCisgICAgICAgIFRhc2tRdWV1ZSBjYW4gcmVk
dWNlcyBjb2RlcyBhYm91dCBib2lsZXJwbGF0ZSBtZXNzYWdlIGRlZmluaXRpb24uCisgICAgICAg
IE1lc3NhZ2VRdWV1ZSBjYW4gcHJvdmlkZSBtb3JlIGZ1bmN0aW9uYWxpdHkgbGlrZSByZW1vdmUu
CisgICAgICAgIExheWVyVHJlZUhvc3RQcm94eSBkb3NlIG5vdCByZXF1aXJlIHNwZWNpYWwgZnVu
Y2lvbmFsaXR5IG9mIE1lc3NhZ2VRdWV1ZSwgc28KKyAgICAgICAgVGFza1F1ZXVlIGNhbiBtYWtl
IExheWVyVHJlZUhvc3RQcm94eSBjb2RlIG1vcmUgc3VjY2luY3QuCisKKyAgICAgICAgTmVlZCBh
IHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9U
YXNrUXVldWUuaDogQWRkZWQuCisKKzIwMTItMDItMjQgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVs
bGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgU2Nyb2xsVGhyZWFkIHVzZXMgUnVuTG9vcCBp
bnN0ZWFkIG9mIENGUnVuTG9vcC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5NDYwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9UYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9UYXNrUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
YWY4ZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL1Rhc2tRdWV1ZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9U
YXNrUXVldWVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9UYXNrUXVldWVfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Rhc2tRdWV1ZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjZlZmI0MC4u
Zjg2YTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTI0ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIEFkZCBUYXNrUXVl
dWUgYW5kIGFwcGx5IGl0IGludG8gTGF5ZXJUcmVlSG9zdFByb3h5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0NzgKKworICAgICAgICBCb3RoIFRh
c2tRdWV1ZSBhbmQgTWVzc2FnZVF1ZXVlIGFyZSB1c2VmdWwuCisgICAgICAgIFRhc2tRdWV1ZSBj
YW4gcmVkdWNlcyBjb2RlcyBhYm91dCBib2lsZXJwbGF0ZSBtZXNzYWdlIGRlZmluaXRpb24uCisg
ICAgICAgIE1lc3NhZ2VRdWV1ZSBjYW4gcHJvdmlkZSBtb3JlIGZ1bmN0aW9uYWxpdHkgbGlrZSBy
ZW1vdmUuCisgICAgICAgIExheWVyVHJlZUhvc3RQcm94eSBkb3NlIG5vdCByZXF1aXJlIHNwZWNp
YWwgZnVuY2lvbmFsaXR5IG9mIE1lc3NhZ2VRdWV1ZSwgc28KKyAgICAgICAgVGFza1F1ZXVlIGNh
biBtYWtlIExheWVyVHJlZUhvc3RQcm94eSBjb2RlIG1vcmUgc3VjY2luY3QuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJU
cmVlSG9zdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTGF5ZXJUcmVlSG9z
dFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5
Ojp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVh
dGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6c3luY1JlbW90
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmRpc3BhdGNo
VXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVUaWxl
Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRp
bGVGb3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6cmVtb3Zl
VGlsZUZvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpkZWxl
dGVDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5
OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3RQcm94eTo6c3luY0NvbXBvc2l0aW5nTGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RQcm94eTo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0UHJveHk6OmNyZWF0ZURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95RGlyZWN0bHlDb21wb3NpdGVkSW1h
Z2UpOgorCiAyMDEyLTAyLTIzICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgW3NldFN8c111cHByZXNzSW5jcmVtZW50YWxSZW5kZXJpbmcgdG8gW3NldFN8
c111cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyBhbmQgbWFrZSBpdCBXZWJQcmVmZXJlbmNl
cyBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9z
dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgK
aW5kZXggMmQxNzBkYi4uMDdiMmJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXllclRyZWVIb3N0UHJveHkuaApAQCAtMjIsNyArMjIsNiBAQAogCiAjaW5jbHVkZSAiQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgotI2luY2x1ZGUgIk1lc3Nh
Z2VRdWV1ZS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUlu
Zm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtMzIsNiArMzEs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9UYXNrUXVldWUu
aD4KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgi
CkBAIC00NCw4ICs0NCw2IEBAIGNsYXNzIExheWVyQmFja2luZ1N0b3JlOwogY2xhc3MgV2ViTGF5
ZXJJbmZvOwogY2xhc3MgV2ViTGF5ZXJVcGRhdGVJbmZvOwogCi1jbGFzcyBMYXllclRyZWVNZXNz
YWdlVG9SZW5kZXJlcjsKLQogY2xhc3MgTGF5ZXJUcmVlSG9zdFByb3h5IDogcHVibGljIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIExheWVyVHJlZUhvc3RQcm94
eShEcmF3aW5nQXJlYVByb3h5Kik7CkBAIC05MSw4ICs4OSw4IEBAIHByb3RlY3RlZDoKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsKICAgICBmbG9hdCBtX2NvbnRl
bnRzU2NhbGU7CiAKLSAgICBNZXNzYWdlUXVldWU8TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI+
IG1fbWVzc2FnZXNUb1JlbmRlcmVyOwotICAgIHZvaWQgcHVzaFVwZGF0ZVRvUXVldWUoUGFzc093
blB0cjxMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcj4pOworICAgIFRhc2tRdWV1ZSBtX3Rhc2tR
dWV1ZTsKKyAgICB2b2lkIGRpc3BhdGNoVXBkYXRlKGNvbnN0IFRhc2smKTsKIAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUikKICAgICBPd25QdHI8V2ViQ29yZTo6VGV4dHVyZU1hcHBlcj4gbV90ZXh0
dXJlTWFwcGVyOwpAQCAtMTA2LDggKzEwNCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bmNM
YXllclBhcmFtZXRlcnMoY29uc3QgV2ViTGF5ZXJJbmZvJik7CiAgICAgdm9pZCBjcmVhdGVUaWxl
KFdlYkxheWVySUQsIGludCwgZmxvYXQgc2NhbGUpOwogICAgIHZvaWQgcmVtb3ZlVGlsZShXZWJM
YXllcklELCBpbnQpOwotICAgIHZvaWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgU2hhcmVhYmxlQml0
bWFwKik7Ci0gICAgdm9pZCBjcmVhdGVJbWFnZShpbnQ2NF90LCBTaGFyZWFibGVCaXRtYXAqKTsK
KyAgICB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
Pik7CisgICAgdm9pZCBjcmVhdGVJbWFnZShpbnQ2NF90LCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4pOwogICAgIHZvaWQgZGVzdHJveUltYWdlKGludDY0X3QpOwogICAgIHZvaWQgYXNzaWdu
SW1hZ2VUb0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBpbnQ2NF90IGltYWdlSUQpOwog
ICAgIHZvaWQgZmx1c2hMYXllckNoYW5nZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCmluZGV4IGVjYjQ2YTYuLjA5NTQw
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0
UHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhv
c3RQcm94eVF0LmNwcApAQCAtNDEsMTExICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBU
eXBlIHsKLSAgICAgICAgRGVsZXRlTGF5ZXIsCi0gICAgICAgIENyZWF0ZVRpbGUsCi0gICAgICAg
IFJlbW92ZVRpbGUsCi0gICAgICAgIFVwZGF0ZVRpbGUsCi0gICAgICAgIENyZWF0ZUltYWdlLAot
ICAgICAgICBEZXN0cm95SW1hZ2UsCi0gICAgICAgIFN5bmNMYXllclBhcmFtZXRlcnMsCi0gICAg
ICAgIEZsdXNoTGF5ZXJDaGFuZ2VzLAotICAgICAgICBTZXRSb290TGF5ZXIKLSAgICB9OwotICAg
IHZpcnR1YWwgfkxheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyKCkgeyB9Ci0gICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCA9IDA7Ci19OwotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
dGVtcGxhdGU8Y2xhc3MgTWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpU
eXBlIG1lc3NhZ2VUeXBlPgotY2xhc3MgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0
YSA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlciB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtZXNzYWdlVHlwZTsgfQotCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI+IGNyZWF0ZShjb25zdCBN
ZXNzYWdlRGF0YSYgZGF0YSA9IE1lc3NhZ2VEYXRhKCkpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGEoZGF0YSkpOwot
ICAgIH0KLQotICAgIGNvbnN0IE1lc3NhZ2VEYXRhJiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIExheWVyVHJlZU1lc3Nh
Z2VUb1JlbmRlcmVyV2l0aERhdGEoY29uc3QgTWVzc2FnZURhdGEmIGRhdGEpCi0gICAgICAgIDog
bV9kYXRhKGRhdGEpCi0gICAgewotICAgIH0KLQotICAgIE1lc3NhZ2VEYXRhIG1fZGF0YTsKLX07
Ci0KLQotbmFtZXNwYWNlIHsKLXN0cnVjdCBDcmVhdGVUaWxlTWVzc2FnZURhdGEgewotICAgIFdl
YkxheWVySUQgbGF5ZXJJRDsKLSAgICBpbnQgcmVtb3RlVGlsZUlEOwotICAgIGZsb2F0IHNjYWxl
OwotfTsKLQotc3RydWN0IFVwZGF0ZVRpbGVNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5ZXJJRCBs
YXllcklEOwotICAgIGludCByZW1vdGVUaWxlSUQ7Ci0gICAgSW50UmVjdCBzb3VyY2VSZWN0Owot
ICAgIEludFJlY3QgdGFyZ2V0UmVjdDsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXA7Ci19OwotCi1zdHJ1Y3QgUmVtb3ZlVGlsZU1lc3NhZ2VEYXRhIHsKLSAgICBXZWJMYXllcklE
IGxheWVySUQ7Ci0gICAgaW50IHJlbW90ZVRpbGVJRDsKLX07Ci0KLXN0cnVjdCBDcmVhdGVJbWFn
ZU1lc3NhZ2VEYXRhIHsKLSAgICBpbnQ2NF90IGltYWdlSUQ7Ci0gICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwOwotfTsKLQotc3RydWN0IERlc3Ryb3lJbWFnZU1lc3NhZ2VEYXRhIHsK
LSAgICBpbnQ2NF90IGltYWdlSUQ7Ci19OwotCi1zdHJ1Y3QgU3luY0xheWVyUGFyYW1ldGVyc01l
c3NhZ2VEYXRhIHsKLSAgICBXZWJMYXllckluZm8gbGF5ZXJJbmZvOwotfTsKLQotc3RydWN0IEVt
cHR5TWVzc2FnZURhdGEgeyB9Owotc3RydWN0IERlbGV0ZUxheWVyTWVzc2FnZURhdGEgewotICAg
IFdlYkxheWVySUQgbGF5ZXJJRDsKLX07Ci1zdHJ1Y3QgU2V0Um9vdExheWVyTWVzc2FnZURhdGEg
ewotICAgIFdlYkxheWVySUQgbGF5ZXJJRDsKLX07Ci0KLWNsYXNzIENyZWF0ZVRpbGVNZXNzYWdl
Ci0gICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8Q3Jl
YXRlVGlsZU1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6Q3JlYXRlVGls
ZT4geyB9OwotY2xhc3MgVXBkYXRlVGlsZU1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJU
cmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxVcGRhdGVUaWxlTWVzc2FnZURhdGEsIExheWVy
VHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpVcGRhdGVUaWxlPiB7IH07Ci1jbGFzcyBSZW1vdmVUaWxl
TWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhE
YXRhPFJlbW92ZVRpbGVNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlJl
bW92ZVRpbGU+IHsgfTsKLWNsYXNzIENyZWF0ZUltYWdlTWVzc2FnZQotICAgICAgICA6IHB1Ymxp
YyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPENyZWF0ZUltYWdlTWVzc2FnZURh
dGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpDcmVhdGVJbWFnZT4geyB9OwotY2xhc3Mg
RGVzdHJveUltYWdlTWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9S
ZW5kZXJlcldpdGhEYXRhPERlc3Ryb3lJbWFnZU1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdl
VG9SZW5kZXJlcjo6RGVzdHJveUltYWdlPiB7IH07Ci1jbGFzcyBGbHVzaExheWVyQ2hhbmdlc01l
c3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0
YTxFbXB0eU1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6Rmx1c2hMYXll
ckNoYW5nZXM+IHsgfTsKLWNsYXNzIFN5bmNMYXllclBhcmFtZXRlcnNNZXNzYWdlCi0gICAgICAg
IDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8U3luY0xheWVyUGFy
YW1ldGVyc01lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6U3luY0xheWVy
UGFyYW1ldGVycz4geyB9OwotY2xhc3MgRGVsZXRlTGF5ZXJNZXNzYWdlCi0gICAgICAgIDogcHVi
bGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8RGVsZXRlTGF5ZXJNZXNzYWdl
RGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkRlbGV0ZUxheWVyPiB7IH07Ci1jbGFz
cyBTZXRSb290TGF5ZXJNZXNzYWdlCi0gICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VU
b1JlbmRlcmVyV2l0aERhdGE8U2V0Um9vdExheWVyTWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3Nh
Z2VUb1JlbmRlcmVyOjpTZXRSb290TGF5ZXI+IHsgfTsKLX0KLQogUGFzc093blB0cjxHcmFwaGlj
c0xheWVyPiBMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUxheWVyKFdlYkxheWVySUQgbGF5ZXJJ
RCkKIHsKICAgICBHcmFwaGljc0xheWVyKiBuZXdMYXllciA9IG5ldyBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcih0aGlzKTsKQEAgLTM2MiwxNSArMjU5LDE3IEBAIHZvaWQgTGF5ZXJUcmVlSG9z
dFByb3h5OjpyZW1vdmVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCkKICAgICBn
ZXRCYWNraW5nU3RvcmUobGF5ZXJJRCktPnJlbW92ZVRpbGUodGlsZUlEKTsKIH0KIAotdm9pZCBM
YXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGls
ZUlELCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0
LCBTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRh
dGVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IHdlYWtCaXRtYXApCiB7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gd2Vha0JpdG1hcDsKICAgICBSZWZQdHI8TGF5ZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcklEKTsKLSAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZVRp
bGUodGlsZUlELCBzb3VyY2VSZWN0LCB0YXJnZXRSZWN0LCBiaXRtYXApOworICAgIGJhY2tpbmdT
dG9yZS0+dXBkYXRlVGlsZSh0aWxlSUQsIHNvdXJjZVJlY3QsIHRhcmdldFJlY3QsIGJpdG1hcC5n
ZXQoKSk7CiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmFkZChiYWNraW5n
U3RvcmUpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlSW1hZ2UoaW50NjRf
dCBpbWFnZUlELCBTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdFBy
b3h5OjpjcmVhdGVJbWFnZShpbnQ2NF90IGltYWdlSUQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiB3ZWFrQml0bWFwKQogeworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9
IHdlYWtCaXRtYXA7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4g
YmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
ICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKG1fdGV4dHVyZU1hcHBlci5nZXQoKSwg
Yml0bWFwLT5jcmVhdGVJbWFnZSgpLmdldCgpLCBCaXRtYXBUZXh0dXJlOjpCR1JBRm9ybWF0KTsK
ICAgICBtX2RpcmVjdGx5Q29tcG9zaXRlZEltYWdlcy5zZXQoaW1hZ2VJRCwgYmFja2luZ1N0b3Jl
KTsKQEAgLTQyNiwxNDEgKzMyNSw2NSBAQCB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c3luY1Jl
bW90ZUNvbnRlbnQoKQogewogICAgIC8vIFdlIGVucXVldWUgbWVzc2FnZXMgYW5kIGV4ZWN1dGUg
dGhlbSBkdXJpbmcgcGFpbnQsIGFzIHRoZXkgcmVxdWlyZSBhbiBhY3RpdmUgR0wgY29udGV4dC4K
ICAgICBlbnN1cmVSb290TGF5ZXIoKTsKLQotICAgIHdoaWxlIChPd25QdHI8TGF5ZXJUcmVlTWVz
c2FnZVRvUmVuZGVyZXI+IG5leHRNZXNzYWdlID0gbV9tZXNzYWdlc1RvUmVuZGVyZXIudHJ5R2V0
TWVzc2FnZSgpKSB7Ci0gICAgICAgIHN3aXRjaCAobmV4dE1lc3NhZ2UtPnR5cGUoKSkgewotICAg
ICAgICBjYXNlIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpTZXRSb290TGF5ZXI6IHsKLSAg
ICAgICAgICAgIGNvbnN0IFNldFJvb3RMYXllck1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nh
c3Q8U2V0Um9vdExheWVyTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0YSgpOwotICAg
ICAgICAgICAgc2V0Um9vdExheWVySUQoZGF0YS5sYXllcklEKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6
RGVsZXRlTGF5ZXI6IHsKLSAgICAgICAgICAgIGNvbnN0IERlbGV0ZUxheWVyTWVzc2FnZURhdGEm
IGRhdGEgPSBzdGF0aWNfY2FzdDxEZWxldGVMYXllck1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQo
KSktPmRhdGEoKTsKLSAgICAgICAgICAgIGRlbGV0ZUxheWVyKGRhdGEubGF5ZXJJRCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2Fn
ZVRvUmVuZGVyZXI6OlN5bmNMYXllclBhcmFtZXRlcnM6IHsKLSAgICAgICAgICAgIGNvbnN0IFN5
bmNMYXllclBhcmFtZXRlcnNNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PFN5bmNMYXll
clBhcmFtZXRlcnNNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAg
ICAgICBzeW5jTGF5ZXJQYXJhbWV0ZXJzKGRhdGEubGF5ZXJJbmZvKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJl
cjo6Q3JlYXRlVGlsZTogewotICAgICAgICAgICAgY29uc3QgQ3JlYXRlVGlsZU1lc3NhZ2VEYXRh
JiBkYXRhID0gc3RhdGljX2Nhc3Q8Q3JlYXRlVGlsZU1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQo
KSktPmRhdGEoKTsKLSAgICAgICAgICAgIGNyZWF0ZVRpbGUoZGF0YS5sYXllcklELCBkYXRhLnJl
bW90ZVRpbGVJRCwgZGF0YS5zY2FsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlJlbW92ZVRpbGU6IHsK
LSAgICAgICAgICAgIGNvbnN0IFJlbW92ZVRpbGVNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19j
YXN0PFJlbW92ZVRpbGVNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAg
ICAgICAgICByZW1vdmVUaWxlKGRhdGEubGF5ZXJJRCwgZGF0YS5yZW1vdGVUaWxlSUQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIExheWVyVHJlZU1lc3Nh
Z2VUb1JlbmRlcmVyOjpVcGRhdGVUaWxlOiB7Ci0gICAgICAgICAgICBjb25zdCBVcGRhdGVUaWxl
TWVzc2FnZURhdGEmIGRhdGEgPSBzdGF0aWNfY2FzdDxVcGRhdGVUaWxlTWVzc2FnZSo+KG5leHRN
ZXNzYWdlLmdldCgpKS0+ZGF0YSgpOwotICAgICAgICAgICAgdXBkYXRlVGlsZShkYXRhLmxheWVy
SUQsIGRhdGEucmVtb3RlVGlsZUlELCBkYXRhLnNvdXJjZVJlY3QsIGRhdGEudGFyZ2V0UmVjdCwg
ZGF0YS5iaXRtYXAuZ2V0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjYXNlIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpDcmVhdGVJbWFnZTogewotICAg
ICAgICAgICAgY29uc3QgQ3JlYXRlSW1hZ2VNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0
PENyZWF0ZUltYWdlTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0YSgpOwotICAgICAg
ICAgICAgY3JlYXRlSW1hZ2UoZGF0YS5pbWFnZUlELCBkYXRhLmJpdG1hcC5nZXQoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2Fn
ZVRvUmVuZGVyZXI6OkRlc3Ryb3lJbWFnZTogewotICAgICAgICAgICAgY29uc3QgRGVzdHJveUlt
YWdlTWVzc2FnZURhdGEmIGRhdGEgPSBzdGF0aWNfY2FzdDxEZXN0cm95SW1hZ2VNZXNzYWdlKj4o
bmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICBkZXN0cm95SW1hZ2UoZGF0
YS5pbWFnZUlEKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2Fz
ZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6Rmx1c2hMYXllckNoYW5nZXM6Ci0gICAgICAg
ICAgICBmbHVzaExheWVyQ2hhbmdlcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgbV90YXNrUXVldWUucGVyZm9ybVRhc2tzKCk7CiB9CiAKLXZvaWQgTGF5ZXJU
cmVlSG9zdFByb3h5OjpwdXNoVXBkYXRlVG9RdWV1ZShQYXNzT3duUHRyPExheWVyVHJlZU1lc3Nh
Z2VUb1JlbmRlcmVyPiBtZXNzYWdlKQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRpc3BhdGNo
VXBkYXRlKGNvbnN0IFRhc2smIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlc1RvUmVuZGVyZXIuYXBw
ZW5kKG1lc3NhZ2UpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZCh0YXNrKTsKICAgICB1cGRhdGVW
aWV3cG9ydCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlVGlsZUZvckxh
eWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJLaXQ6OlVwZGF0ZUluZm8mIHVw
ZGF0ZUluZm8pCiB7Ci0gICAgQ3JlYXRlVGlsZU1lc3NhZ2VEYXRhIGRhdGE7Ci0gICAgZGF0YS5s
YXllcklEID0gbGF5ZXJJRDsKLSAgICBkYXRhLnJlbW90ZVRpbGVJRCA9IHRpbGVJRDsKLSAgICBk
YXRhLnNjYWxlID0gdXBkYXRlSW5mby51cGRhdGVTY2FsZUZhY3RvcjsKLSAgICBwdXNoVXBkYXRl
VG9RdWV1ZShDcmVhdGVUaWxlTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBkaXNwYXRjaFVw
ZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZVRpbGUsIHRoaXMsIGxheWVySUQs
IHRpbGVJRCwgdXBkYXRlSW5mby51cGRhdGVTY2FsZUZhY3RvcikpOwogICAgIHVwZGF0ZVRpbGVG
b3JMYXllcihsYXllcklELCB0aWxlSUQsIHVwZGF0ZUluZm8pOwogfQogCiB2b2lkIExheWVyVHJl
ZUhvc3RQcm94eTo6dXBkYXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBj
b25zdCBXZWJLaXQ6OlVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7Ci0gICAgVXBkYXRlVGlsZU1l
c3NhZ2VEYXRhIGRhdGE7Ci0gICAgZGF0YS5sYXllcklEID0gbGF5ZXJJRDsKLSAgICBkYXRhLnJl
bW90ZVRpbGVJRCA9IHRpbGVJRDsKLSAgICBkYXRhLmJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKICAgICBBU1NFUlQodXBkYXRlSW5mby51
cGRhdGVSZWN0cy5zaXplKCkgPT0gMSk7Ci0gICAgZGF0YS5zb3VyY2VSZWN0ID0gdXBkYXRlSW5m
by51cGRhdGVSZWN0cy5maXJzdCgpOwotICAgIGRhdGEudGFyZ2V0UmVjdCA9IHVwZGF0ZUluZm8u
dXBkYXRlUmVjdEJvdW5kczsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShVcGRhdGVUaWxlTWVzc2Fn
ZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSB1cGRhdGVJbmZvLnVw
ZGF0ZVJlY3RzLmZpcnN0KCk7CisgICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gdXBkYXRlSW5mby51
cGRhdGVSZWN0Qm91bmRzOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKKyAgICBkaXNw
YXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRpbGUsIHRoaXMsIGxh
eWVySUQsIHRpbGVJRCwgc291cmNlUmVjdCwgdGFyZ2V0UmVjdCwgYml0bWFwKSk7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGlu
dCB0aWxlSUQpCiB7Ci0gICAgUmVtb3ZlVGlsZU1lc3NhZ2VEYXRhIGRhdGE7Ci0gICAgZGF0YS5s
YXllcklEID0gbGF5ZXJJRDsKLSAgICBkYXRhLnJlbW90ZVRpbGVJRCA9IHRpbGVJRDsKLSAgICBw
dXNoVXBkYXRlVG9RdWV1ZShSZW1vdmVUaWxlTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OnJlbW92ZVRpbGUsIHRoaXMs
IGxheWVySUQsIHRpbGVJRCkpOwogfQogCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpkZWxl
dGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQgaWQpCiB7Ci0gICAgRGVsZXRlTGF5ZXJNZXNz
YWdlRGF0YSBkYXRhOwotICAgIGRhdGEubGF5ZXJJRCA9IGlkOwotICAgIHB1c2hVcGRhdGVUb1F1
ZXVlKERlbGV0ZUxheWVyTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBkaXNwYXRjaFVwZGF0
ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OmRlbGV0ZUxheWVyLCB0aGlzLCBpZCkpOwogfQog
CiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViTGF5
ZXJJRCBpZCkKIHsKLSAgICBTZXRSb290TGF5ZXJNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEu
bGF5ZXJJRCA9IGlkOwotICAgIHB1c2hVcGRhdGVUb1F1ZXVlKFNldFJvb3RMYXllck1lc3NhZ2U6
OmNyZWF0ZShkYXRhKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFBy
b3h5OjpzZXRSb290TGF5ZXJJRCwgdGhpcywgaWQpKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0
UHJveHk6OnN5bmNDb21wb3NpdGluZ0xheWVyU3RhdGUoY29uc3QgV2ViTGF5ZXJJbmZvJiBpbmZv
KQogewotICAgIFN5bmNMYXllclBhcmFtZXRlcnNNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEu
bGF5ZXJJbmZvID0gaW5mbzsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShTeW5jTGF5ZXJQYXJhbWV0
ZXJzTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXll
clRyZWVIb3N0UHJveHk6OnN5bmNMYXllclBhcmFtZXRlcnMsIHRoaXMsIGluZm8pKTsKIH0KIAog
dm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1lKCkKIHsKLSAgICBwdXNoVXBk
YXRlVG9RdWV1ZShGbHVzaExheWVyQ2hhbmdlc01lc3NhZ2U6OmNyZWF0ZSgpKTsKLSAgICB1cGRh
dGVWaWV3cG9ydCgpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZUhvc3RQcm94
eTo6Zmx1c2hMYXllckNoYW5nZXMsIHRoaXMpKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJv
eHk6OmNyZWF0ZURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qga2V5LCBjb25zdCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgQ3JlYXRlSW1hZ2VN
ZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEuaW1hZ2VJRCA9IGtleTsKLSAgICBkYXRhLmJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7Ci0gICAgcHVzaFVwZGF0ZVRvUXVl
dWUoQ3JlYXRlSW1hZ2VNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7CisgICAg
ZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVJbWFnZSwgdGhp
cywga2V5LCBiaXRtYXApKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRlc3Ryb3lE
aXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2NF90IGtleSkKIHsKLSAgICBEZXN0cm95SW1hZ2VN
ZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEuaW1hZ2VJRCA9IGtleTsKLSAgICBwdXNoVXBkYXRl
VG9RdWV1ZShEZXN0cm95SW1hZ2VNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIGRpc3BhdGNo
VXBkYXRlKGJpbmQoJkxheWVyVHJlZUhvc3RQcm94eTo6ZGVzdHJveUltYWdlLCB0aGlzLCBrZXkp
KTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50UmVjdFRy
YWplY3RvcnlWZWN0b3IoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJh
amVjdG9yeVZlY3RvcikKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128851</attachid>
            <date>2012-02-24 21:38:47 -0800</date>
            <delta_ts>2012-02-24 21:47:52 -0800</delta_ts>
            <desc>patch v.3</desc>
            <filename>0001-LayerTreeHostProxy-uses-Functional-instead-of-Messag.patch</filename>
            <type>text/plain</type>
            <size>15658</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBjOTJiNjhkZTNkZjQyYTc2ZDMyOTY4NGU4ZDBmYTk4NzU4ODE0ZmVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFNhdCwgMjUgRmViIDIwMTIgMTQ6MjU6MDIgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBMYXllclRyZWVIb3N0UHJveHkgdXNlcyBGdW5jdGlvbmFsIGluc3RlYWQgb2YgTWVzc2FnZVF1
ZXVlCiBmb3IgYWNjdW11bGF0aW5nIHRhc2tzLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5NDc4CgpJdCBpcyBzdWNjaW5jdCB0byBjb2xsZWN0IHRhc2tzIHVzaW5n
IEZ1bmN0aW9uYWwgYmVjYXVzZSBvZiByZWR1Y2luZyBjb2RlcyBhYm91dApib2lsZXJwbGF0ZSBt
ZXNzYWdlIGRlZmluaXRpb24uCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
eWVyVHJlZUhvc3RQcm94eS5oICAgICAgfCAgIDEyICstCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwICB8ICAyMTkgKystLS0tLS0tLS0tLS0tLS0tLS0K
IDMgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMjA0IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAyNmVmYjQwLi5jZjk3ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTItMDItMjQgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisK
KyAgICAgICAgTGF5ZXJUcmVlSG9zdFByb3h5IHVzZXMgRnVuY3Rpb25hbCBpbnN0ZWFkIG9mIE1l
c3NhZ2VRdWV1ZSBmb3IgYWNjdW11bGF0aW5nCisgICAgICAgIHRhc2tzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0NzgKKworICAgICAgICBJdCBp
cyBzdWNjaW5jdCB0byBjb2xsZWN0IHRhc2tzIHVzaW5nIEZ1bmN0aW9uYWwgYmVjYXVzZSBvZiBy
ZWR1Y2luZyBjb2RlcyBhYm91dAorICAgICAgICBib2lsZXJwbGF0ZSBtZXNzYWdlIGRlZmluaXRp
b24uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvTGF5ZXJUcmVl
SG9zdFByb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlSG9zdFByb3h5Ojp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdFByb3h5OjpjcmVhdGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQ
cm94eTo6c3luY1JlbW90ZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
UHJveHk6OmRpc3BhdGNoVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFBy
b3h5OjpjcmVhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
UHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3RQcm94eTo6cmVtb3ZlVGlsZUZvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdFByb3h5OjpkZWxldGVDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6c3luY0NvbXBvc2l0aW5nTGF5ZXJTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZURpcmVjdGx5Q29tcG9zaXRlZElt
YWdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95RGlyZWN0
bHlDb21wb3NpdGVkSW1hZ2UpOgorCiAyMDEyLTAyLTIzICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgW3NldFN8c111cHByZXNzSW5jcmVtZW50YWxSZW5k
ZXJpbmcgdG8gW3NldFN8c111cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyBhbmQgbWFrZSBp
dCBXZWJQcmVmZXJlbmNlcyBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJU
cmVlSG9zdFByb3h5LmgKaW5kZXggMmQxNzBkYi4uMTcwZTJiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaApAQCAtMjIsNyArMjIsNiBAQAogCiAj
aW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgot
I2luY2x1ZGUgIk1lc3NhZ2VRdWV1ZS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUg
IldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5o
PgpAQCAtMzEsNiArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBV
U0UoVEVYVFVSRV9NQVBQRVIpCkBAIC00NCw4ICs0NCw2IEBAIGNsYXNzIExheWVyQmFja2luZ1N0
b3JlOwogY2xhc3MgV2ViTGF5ZXJJbmZvOwogY2xhc3MgV2ViTGF5ZXJVcGRhdGVJbmZvOwogCi1j
bGFzcyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjsKLQogY2xhc3MgTGF5ZXJUcmVlSG9zdFBy
b3h5IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgogICAg
IExheWVyVHJlZUhvc3RQcm94eShEcmF3aW5nQXJlYVByb3h5Kik7CkBAIC05MSw4ICs4OSw4IEBA
IHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsK
ICAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAKLSAgICBNZXNzYWdlUXVldWU8TGF5ZXJUcmVl
TWVzc2FnZVRvUmVuZGVyZXI+IG1fbWVzc2FnZXNUb1JlbmRlcmVyOwotICAgIHZvaWQgcHVzaFVw
ZGF0ZVRvUXVldWUoUGFzc093blB0cjxMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcj4pOworICAg
IFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gbV9mdW5jdGlvblF1ZXVlOworICAgIHZvaWQgZGlz
cGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCiAjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSKQogICAgIE93blB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBw
ZXI7CkBAIC0xMDYsOCArMTA0LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3luY0xheWVyUGFy
YW1ldGVycyhjb25zdCBXZWJMYXllckluZm8mKTsKICAgICB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5
ZXJJRCwgaW50LCBmbG9hdCBzY2FsZSk7CiAgICAgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQs
IGludCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTaGFyZWFibGVCaXRtYXAqKTsK
LSAgICB2b2lkIGNyZWF0ZUltYWdlKGludDY0X3QsIFNoYXJlYWJsZUJpdG1hcCopOworICAgIHZv
aWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKyAg
ICB2b2lkIGNyZWF0ZUltYWdlKGludDY0X3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7
CiAgICAgdm9pZCBkZXN0cm95SW1hZ2UoaW50NjRfdCk7CiAgICAgdm9pZCBhc3NpZ25JbWFnZVRv
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGludDY0X3QgaW1hZ2VJRCk7CiAgICAgdm9p
ZCBmbHVzaExheWVyQ2hhbmdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAKaW5kZXggZWNiNDZhNi4uYzI5YmNkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5
UXQuY3BwCkBAIC00MSwxMTEgKzQxLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgewot
ICAgICAgICBEZWxldGVMYXllciwKLSAgICAgICAgQ3JlYXRlVGlsZSwKLSAgICAgICAgUmVtb3Zl
VGlsZSwKLSAgICAgICAgVXBkYXRlVGlsZSwKLSAgICAgICAgQ3JlYXRlSW1hZ2UsCi0gICAgICAg
IERlc3Ryb3lJbWFnZSwKLSAgICAgICAgU3luY0xheWVyUGFyYW1ldGVycywKLSAgICAgICAgRmx1
c2hMYXllckNoYW5nZXMsCi0gICAgICAgIFNldFJvb3RMYXllcgotICAgIH07Ci0gICAgdmlydHVh
bCB+TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXIoKSB7IH0KLSAgICB2aXJ0dWFsIFR5cGUgdHlw
ZSgpIGNvbnN0ID0gMDsKLX07Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi10ZW1wbGF0
ZTxjbGFzcyBNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlR5cGUgbWVz
c2FnZVR5cGU+Ci1jbGFzcyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhIDogcHVi
bGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1lc3NhZ2VUeXBlOyB9Ci0KLSAgICBzdGF0aWMgUGFz
c093blB0cjxMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcj4gY3JlYXRlKGNvbnN0IE1lc3NhZ2VE
YXRhJiBkYXRhID0gTWVzc2FnZURhdGEoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YShkYXRhKSk7Ci0gICAgfQot
Ci0gICAgY29uc3QgTWVzc2FnZURhdGEmIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZGF0YTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTGF5ZXJUcmVlTWVzc2FnZVRvUmVu
ZGVyZXJXaXRoRGF0YShjb25zdCBNZXNzYWdlRGF0YSYgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEo
ZGF0YSkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVzc2FnZURhdGEgbV9kYXRhOwotfTsKLQotCi1u
YW1lc3BhY2Ugewotc3RydWN0IENyZWF0ZVRpbGVNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5ZXJJ
RCBsYXllcklEOwotICAgIGludCByZW1vdGVUaWxlSUQ7Ci0gICAgZmxvYXQgc2NhbGU7Ci19Owot
Ci1zdHJ1Y3QgVXBkYXRlVGlsZU1lc3NhZ2VEYXRhIHsKLSAgICBXZWJMYXllcklEIGxheWVySUQ7
Ci0gICAgaW50IHJlbW90ZVRpbGVJRDsKLSAgICBJbnRSZWN0IHNvdXJjZVJlY3Q7Ci0gICAgSW50
UmVjdCB0YXJnZXRSZWN0OwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcDsKLX07
Ci0KLXN0cnVjdCBSZW1vdmVUaWxlTWVzc2FnZURhdGEgewotICAgIFdlYkxheWVySUQgbGF5ZXJJ
RDsKLSAgICBpbnQgcmVtb3RlVGlsZUlEOwotfTsKLQotc3RydWN0IENyZWF0ZUltYWdlTWVzc2Fn
ZURhdGEgewotICAgIGludDY0X3QgaW1hZ2VJRDsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXA7Ci19OwotCi1zdHJ1Y3QgRGVzdHJveUltYWdlTWVzc2FnZURhdGEgewotICAgIGlu
dDY0X3QgaW1hZ2VJRDsKLX07Ci0KLXN0cnVjdCBTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZURh
dGEgewotICAgIFdlYkxheWVySW5mbyBsYXllckluZm87Ci19OwotCi1zdHJ1Y3QgRW1wdHlNZXNz
YWdlRGF0YSB7IH07Ci1zdHJ1Y3QgRGVsZXRlTGF5ZXJNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5
ZXJJRCBsYXllcklEOwotfTsKLXN0cnVjdCBTZXRSb290TGF5ZXJNZXNzYWdlRGF0YSB7Ci0gICAg
V2ViTGF5ZXJJRCBsYXllcklEOwotfTsKLQotY2xhc3MgQ3JlYXRlVGlsZU1lc3NhZ2UKLSAgICAg
ICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxDcmVhdGVUaWxl
TWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpDcmVhdGVUaWxlPiB7IH07
Ci1jbGFzcyBVcGRhdGVUaWxlTWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNz
YWdlVG9SZW5kZXJlcldpdGhEYXRhPFVwZGF0ZVRpbGVNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVz
c2FnZVRvUmVuZGVyZXI6OlVwZGF0ZVRpbGU+IHsgfTsKLWNsYXNzIFJlbW92ZVRpbGVNZXNzYWdl
Ci0gICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8UmVt
b3ZlVGlsZU1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6UmVtb3ZlVGls
ZT4geyB9OwotY2xhc3MgQ3JlYXRlSW1hZ2VNZXNzYWdlCi0gICAgICAgIDogcHVibGljIExheWVy
VHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8Q3JlYXRlSW1hZ2VNZXNzYWdlRGF0YSwgTGF5
ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkNyZWF0ZUltYWdlPiB7IH07Ci1jbGFzcyBEZXN0cm95
SW1hZ2VNZXNzYWdlCi0gICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVy
V2l0aERhdGE8RGVzdHJveUltYWdlTWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRl
cmVyOjpEZXN0cm95SW1hZ2U+IHsgfTsKLWNsYXNzIEZsdXNoTGF5ZXJDaGFuZ2VzTWVzc2FnZQot
ICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPEVtcHR5
TWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpGbHVzaExheWVyQ2hhbmdl
cz4geyB9OwotY2xhc3MgU3luY0xheWVyUGFyYW1ldGVyc01lc3NhZ2UKLSAgICAgICAgOiBwdWJs
aWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxTeW5jTGF5ZXJQYXJhbWV0ZXJz
TWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpTeW5jTGF5ZXJQYXJhbWV0
ZXJzPiB7IH07Ci1jbGFzcyBEZWxldGVMYXllck1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5
ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxEZWxldGVMYXllck1lc3NhZ2VEYXRhLCBM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6RGVsZXRlTGF5ZXI+IHsgfTsKLWNsYXNzIFNldFJv
b3RMYXllck1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVy
ZXJXaXRoRGF0YTxTZXRSb290TGF5ZXJNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVu
ZGVyZXI6OlNldFJvb3RMYXllcj4geyB9OwotfQotCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+
IExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlTGF5ZXIoV2ViTGF5ZXJJRCBsYXllcklEKQogewog
ICAgIEdyYXBoaWNzTGF5ZXIqIG5ld0xheWVyID0gbmV3IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKHRoaXMpOwpAQCAtMzYyLDE1ICsyNTksMTcgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6
OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQogICAgIGdldEJhY2tp
bmdTdG9yZShsYXllcklEKS0+cmVtb3ZlVGlsZSh0aWxlSUQpOwogfQogCi12b2lkIExheWVyVHJl
ZUhvc3RQcm94eTo6dXBkYXRlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIFNoYXJl
YWJsZUJpdG1hcCogYml0bWFwKQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRpbGUo
V2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
d2Vha0JpdG1hcCkKIHsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSB3ZWFr
Qml0bWFwOwogICAgIFJlZlB0cjxMYXllckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gZ2V0
QmFja2luZ1N0b3JlKGxheWVySUQpOwotICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSh0aWxl
SUQsIHNvdXJjZVJlY3QsIHRhcmdldFJlY3QsIGJpdG1hcCk7CisgICAgYmFja2luZ1N0b3JlLT51
cGRhdGVUaWxlKHRpbGVJRCwgc291cmNlUmVjdCwgdGFyZ2V0UmVjdCwgYml0bWFwLmdldCgpKTsK
ICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuYWRkKGJhY2tpbmdTdG9yZSk7
CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVJbWFnZShpbnQ2NF90IGltYWdl
SUQsIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwKQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmNy
ZWF0ZUltYWdlKGludDY0X3QgaW1hZ2VJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHdl
YWtCaXRtYXApCiB7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gd2Vha0Jp
dG1hcDsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogICAgIGJh
Y2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHMobV90ZXh0dXJlTWFwcGVyLmdldCgpLCBiaXRtYXAt
PmNyZWF0ZUltYWdlKCkuZ2V0KCksIEJpdG1hcFRleHR1cmU6OkJHUkFGb3JtYXQpOwogICAgIG1f
ZGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VzLnNldChpbWFnZUlELCBiYWNraW5nU3RvcmUpOwpAQCAt
NDI3LDE0MCArMzI2LDY2IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jUmVtb3RlQ29u
dGVudCgpCiAgICAgLy8gV2UgZW5xdWV1ZSBtZXNzYWdlcyBhbmQgZXhlY3V0ZSB0aGVtIGR1cmlu
ZyBwYWludCwgYXMgdGhleSByZXF1aXJlIGFuIGFjdGl2ZSBHTCBjb250ZXh0LgogICAgIGVuc3Vy
ZVJvb3RMYXllcigpOwogCi0gICAgd2hpbGUgKE93blB0cjxMYXllclRyZWVNZXNzYWdlVG9SZW5k
ZXJlcj4gbmV4dE1lc3NhZ2UgPSBtX21lc3NhZ2VzVG9SZW5kZXJlci50cnlHZXRNZXNzYWdlKCkp
IHsKLSAgICAgICAgc3dpdGNoIChuZXh0TWVzc2FnZS0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2Ug
TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlNldFJvb3RMYXllcjogewotICAgICAgICAgICAg
Y29uc3QgU2V0Um9vdExheWVyTWVzc2FnZURhdGEmIGRhdGEgPSBzdGF0aWNfY2FzdDxTZXRSb290
TGF5ZXJNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICBz
ZXRSb290TGF5ZXJJRChkYXRhLmxheWVySUQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLQotICAgICAgICBjYXNlIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpEZWxldGVMYXll
cjogewotICAgICAgICAgICAgY29uc3QgRGVsZXRlTGF5ZXJNZXNzYWdlRGF0YSYgZGF0YSA9IHN0
YXRpY19jYXN0PERlbGV0ZUxheWVyTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0YSgp
OwotICAgICAgICAgICAgZGVsZXRlTGF5ZXIoZGF0YS5sYXllcklEKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJl
cjo6U3luY0xheWVyUGFyYW1ldGVyczogewotICAgICAgICAgICAgY29uc3QgU3luY0xheWVyUGFy
YW1ldGVyc01lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8U3luY0xheWVyUGFyYW1ldGVy
c01lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAgICAgIHN5bmNM
YXllclBhcmFtZXRlcnMoZGF0YS5sYXllckluZm8pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYXNlIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpDcmVhdGVU
aWxlOiB7Ci0gICAgICAgICAgICBjb25zdCBDcmVhdGVUaWxlTWVzc2FnZURhdGEmIGRhdGEgPSBz
dGF0aWNfY2FzdDxDcmVhdGVUaWxlTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0YSgp
OwotICAgICAgICAgICAgY3JlYXRlVGlsZShkYXRhLmxheWVySUQsIGRhdGEucmVtb3RlVGlsZUlE
LCBkYXRhLnNjYWxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
Y2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6UmVtb3ZlVGlsZTogewotICAgICAgICAg
ICAgY29uc3QgUmVtb3ZlVGlsZU1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8UmVtb3Zl
VGlsZU1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAgICAgIHJl
bW92ZVRpbGUoZGF0YS5sYXllcklELCBkYXRhLnJlbW90ZVRpbGVJRCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVy
ZXI6OlVwZGF0ZVRpbGU6IHsKLSAgICAgICAgICAgIGNvbnN0IFVwZGF0ZVRpbGVNZXNzYWdlRGF0
YSYgZGF0YSA9IHN0YXRpY19jYXN0PFVwZGF0ZVRpbGVNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0
KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICB1cGRhdGVUaWxlKGRhdGEubGF5ZXJJRCwgZGF0YS5y
ZW1vdGVUaWxlSUQsIGRhdGEuc291cmNlUmVjdCwgZGF0YS50YXJnZXRSZWN0LCBkYXRhLmJpdG1h
cC5nZXQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2Ug
TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkNyZWF0ZUltYWdlOiB7Ci0gICAgICAgICAgICBj
b25zdCBDcmVhdGVJbWFnZU1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8Q3JlYXRlSW1h
Z2VNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICBjcmVh
dGVJbWFnZShkYXRhLmltYWdlSUQsIGRhdGEuYml0bWFwLmdldCgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJl
cjo6RGVzdHJveUltYWdlOiB7Ci0gICAgICAgICAgICBjb25zdCBEZXN0cm95SW1hZ2VNZXNzYWdl
RGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PERlc3Ryb3lJbWFnZU1lc3NhZ2UqPihuZXh0TWVzc2Fn
ZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAgICAgIGRlc3Ryb3lJbWFnZShkYXRhLmltYWdlSUQp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIExheWVyVHJl
ZU1lc3NhZ2VUb1JlbmRlcmVyOjpGbHVzaExheWVyQ2hhbmdlczoKLSAgICAgICAgICAgIGZsdXNo
TGF5ZXJDaGFuZ2VzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25RdWV1ZS5zaXplKCk7ICsraSkKKyAg
ICAgICAgbV9mdW5jdGlvblF1ZXVlW2ldKCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5
OjpwdXNoVXBkYXRlVG9RdWV1ZShQYXNzT3duUHRyPExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVy
PiBtZXNzYWdlKQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRpc3BhdGNoVXBkYXRlKGNvbnN0
IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogewotICAgIG1fbWVzc2FnZXNUb1JlbmRlcmVy
LmFwcGVuZChtZXNzYWdlKTsKKyAgICBtX2Z1bmN0aW9uUXVldWUuYXBwZW5kKGZ1bmN0aW9uKTsK
ICAgICB1cGRhdGVWaWV3cG9ydCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3Jl
YXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJLaXQ6OlVw
ZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7Ci0gICAgQ3JlYXRlVGlsZU1lc3NhZ2VEYXRhIGRhdGE7
Ci0gICAgZGF0YS5sYXllcklEID0gbGF5ZXJJRDsKLSAgICBkYXRhLnJlbW90ZVRpbGVJRCA9IHRp
bGVJRDsKLSAgICBkYXRhLnNjYWxlID0gdXBkYXRlSW5mby51cGRhdGVTY2FsZUZhY3RvcjsKLSAg
ICBwdXNoVXBkYXRlVG9RdWV1ZShDcmVhdGVUaWxlTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZVRpbGUsIHRo
aXMsIGxheWVySUQsIHRpbGVJRCwgdXBkYXRlSW5mby51cGRhdGVTY2FsZUZhY3RvcikpOwogICAg
IHVwZGF0ZVRpbGVGb3JMYXllcihsYXllcklELCB0aWxlSUQsIHVwZGF0ZUluZm8pOwogfQogCiB2
b2lkIExheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBp
bnQgdGlsZUlELCBjb25zdCBXZWJLaXQ6OlVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7Ci0gICAg
VXBkYXRlVGlsZU1lc3NhZ2VEYXRhIGRhdGE7Ci0gICAgZGF0YS5sYXllcklEID0gbGF5ZXJJRDsK
LSAgICBkYXRhLnJlbW90ZVRpbGVJRCA9IHRpbGVJRDsKLSAgICBkYXRhLmJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKICAgICBBU1NFUlQo
dXBkYXRlSW5mby51cGRhdGVSZWN0cy5zaXplKCkgPT0gMSk7Ci0gICAgZGF0YS5zb3VyY2VSZWN0
ID0gdXBkYXRlSW5mby51cGRhdGVSZWN0cy5maXJzdCgpOwotICAgIGRhdGEudGFyZ2V0UmVjdCA9
IHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kczsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShVcGRh
dGVUaWxlTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSB1
cGRhdGVJbmZvLnVwZGF0ZVJlY3RzLmZpcnN0KCk7CisgICAgSW50UmVjdCB0YXJnZXRSZWN0ID0g
dXBkYXRlSW5mby51cGRhdGVSZWN0Qm91bmRzOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxl
KTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRp
bGUsIHRoaXMsIGxheWVySUQsIHRpbGVJRCwgc291cmNlUmVjdCwgdGFyZ2V0UmVjdCwgYml0bWFw
KSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVUaWxlRm9yTGF5ZXIoaW50
IGxheWVySUQsIGludCB0aWxlSUQpCiB7Ci0gICAgUmVtb3ZlVGlsZU1lc3NhZ2VEYXRhIGRhdGE7
Ci0gICAgZGF0YS5sYXllcklEID0gbGF5ZXJJRDsKLSAgICBkYXRhLnJlbW90ZVRpbGVJRCA9IHRp
bGVJRDsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShSZW1vdmVUaWxlTWVzc2FnZTo6Y3JlYXRlKGRh
dGEpKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OnJlbW92
ZVRpbGUsIHRoaXMsIGxheWVySUQsIHRpbGVJRCkpOwogfQogCiAKIHZvaWQgTGF5ZXJUcmVlSG9z
dFByb3h5OjpkZWxldGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQgaWQpCiB7Ci0gICAgRGVs
ZXRlTGF5ZXJNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEubGF5ZXJJRCA9IGlkOwotICAgIHB1
c2hVcGRhdGVUb1F1ZXVlKERlbGV0ZUxheWVyTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OmRlbGV0ZUxheWVyLCB0aGlz
LCBpZCkpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c2V0Um9vdENvbXBvc2l0aW5n
TGF5ZXIoV2ViTGF5ZXJJRCBpZCkKIHsKLSAgICBTZXRSb290TGF5ZXJNZXNzYWdlRGF0YSBkYXRh
OwotICAgIGRhdGEubGF5ZXJJRCA9IGlkOwotICAgIHB1c2hVcGRhdGVUb1F1ZXVlKFNldFJvb3RM
YXllck1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRSb290TGF5ZXJJRCwgdGhpcywgaWQpKTsKIH0KIAogdm9pZCBM
YXllclRyZWVIb3N0UHJveHk6OnN5bmNDb21wb3NpdGluZ0xheWVyU3RhdGUoY29uc3QgV2ViTGF5
ZXJJbmZvJiBpbmZvKQogewotICAgIFN5bmNMYXllclBhcmFtZXRlcnNNZXNzYWdlRGF0YSBkYXRh
OwotICAgIGRhdGEubGF5ZXJJbmZvID0gaW5mbzsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShTeW5j
TGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAgICBkaXNwYXRjaFVwZGF0
ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OnN5bmNMYXllclBhcmFtZXRlcnMsIHRoaXMsIGlu
Zm8pKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1lKCkKIHsK
LSAgICBwdXNoVXBkYXRlVG9RdWV1ZShGbHVzaExheWVyQ2hhbmdlc01lc3NhZ2U6OmNyZWF0ZSgp
KTsKLSAgICB1cGRhdGVWaWV3cG9ydCgpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVy
VHJlZUhvc3RQcm94eTo6Zmx1c2hMYXllckNoYW5nZXMsIHRoaXMpKTsKIH0KIAogdm9pZCBMYXll
clRyZWVIb3N0UHJveHk6OmNyZWF0ZURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qga2V5
LCBjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAg
Q3JlYXRlSW1hZ2VNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEuaW1hZ2VJRCA9IGtleTsKLSAg
ICBkYXRhLmJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7Ci0gICAgcHVz
aFVwZGF0ZVRvUXVldWUoQ3JlYXRlSW1hZ2VNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhh
bmRsZSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVh
dGVJbWFnZSwgdGhpcywga2V5LCBiaXRtYXApKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJv
eHk6OmRlc3Ryb3lEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2NF90IGtleSkKIHsKLSAgICBE
ZXN0cm95SW1hZ2VNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEuaW1hZ2VJRCA9IGtleTsKLSAg
ICBwdXNoVXBkYXRlVG9RdWV1ZShEZXN0cm95SW1hZ2VNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOwor
ICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZUhvc3RQcm94eTo6ZGVzdHJveUltYWdl
LCB0aGlzLCBrZXkpKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVD
b250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128853</attachid>
            <date>2012-02-24 21:47:52 -0800</date>
            <delta_ts>2012-02-26 15:18:15 -0800</delta_ts>
            <desc>patch v.4</desc>
            <filename>0001-LayerTreeHostProxy-uses-Functional-instead-of-Messag.patch</filename>
            <type>text/plain</type>
            <size>15687</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSA5YzU2MDRhNWQxOGY3NjY0OGEyYzI1NTJlZDlmZjkwNTE1NmMxMTk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFNhdCwgMjUgRmViIDIwMTIgMTQ6MjU6MDIgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBMYXllclRyZWVIb3N0UHJveHkgdXNlcyBGdW5jdGlvbmFsIGluc3RlYWQgb2YgTWVzc2FnZVF1
ZXVlCiBmb3IgYWNjdW11bGF0aW5nIHRhc2tzLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5NDc4CgpJdCBpcyBzdWNjaW5jdCB0byBjb2xsZWN0IHRhc2tzIHVzaW5n
IEZ1bmN0aW9uYWwgYmVjYXVzZSBvZiByZWR1Y2luZyBjb2RlcyBhYm91dApib2lsZXJwbGF0ZSBt
ZXNzYWdlIGRlZmluaXRpb24uCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
eWVyVHJlZUhvc3RQcm94eS5oICAgICAgfCAgIDEyICstCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwICB8ICAyMTkgKystLS0tLS0tLS0tLS0tLS0tLQog
MyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAyMDMgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDI2ZWZiNDAuLmNmOTdmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAor
MjAxMi0wMi0yNCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwor
ICAgICAgICBMYXllclRyZWVIb3N0UHJveHkgdXNlcyBGdW5jdGlvbmFsIGluc3RlYWQgb2YgTWVz
c2FnZVF1ZXVlIGZvciBhY2N1bXVsYXRpbmcKKyAgICAgICAgdGFza3MuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ3OAorCisgICAgICAgIEl0IGlz
IHN1Y2NpbmN0IHRvIGNvbGxlY3QgdGFza3MgdXNpbmcgRnVuY3Rpb25hbCBiZWNhdXNlIG9mIHJl
ZHVjaW5nIGNvZGVzIGFib3V0CisgICAgICAgIGJvaWxlcnBsYXRlIG1lc3NhZ2UgZGVmaW5pdGlv
bi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9MYXllclRyZWVI
b3N0UHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0UHJveHk6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0UHJveHk6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFBy
b3h5OjpzeW5jUmVtb3RlQ29udGVudCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQ
cm94eTo6ZGlzcGF0Y2hVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJv
eHk6OmNyZWF0ZVRpbGVGb3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQ
cm94eTo6dXBkYXRlVGlsZUZvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dFByb3h5OjpyZW1vdmVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0UHJveHk6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0UHJveHk6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlRGlyZWN0bHlDb21wb3NpdGVkSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmRlc3Ryb3lEaXJlY3Rs
eUNvbXBvc2l0ZWRJbWFnZSk6CisKIDIwMTItMDItMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBbc2V0U3xzXXVwcHJlc3NJbmNyZW1lbnRhbFJlbmRl
cmluZyB0byBbc2V0U3xzXXVwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nIGFuZCBtYWtlIGl0
IFdlYlByZWZlcmVuY2VzIEFQSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRy
ZWVIb3N0UHJveHkuaAppbmRleCAyZDE3MGRiLi4xNzBlMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCkBAIC0yMiw3ICsyMiw2IEBACiAKICNp
bmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCi0j
aW5jbHVkZSAiTWVzc2FnZVF1ZXVlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAi
V2ViTGF5ZXJUcmVlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CkBAIC0zMSw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIFVT
RShURVhUVVJFX01BUFBFUikKQEAgLTQ0LDggKzQ0LDYgQEAgY2xhc3MgTGF5ZXJCYWNraW5nU3Rv
cmU7CiBjbGFzcyBXZWJMYXllckluZm87CiBjbGFzcyBXZWJMYXllclVwZGF0ZUluZm87CiAKLWNs
YXNzIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOwotCiBjbGFzcyBMYXllclRyZWVIb3N0UHJv
eHkgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
TGF5ZXJUcmVlSG9zdFByb3h5KERyYXdpbmdBcmVhUHJveHkqKTsKQEAgLTkxLDggKzg5LDggQEAg
cHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0Owog
ICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKIAotICAgIE1lc3NhZ2VRdWV1ZTxMYXllclRyZWVN
ZXNzYWdlVG9SZW5kZXJlcj4gbV9tZXNzYWdlc1RvUmVuZGVyZXI7Ci0gICAgdm9pZCBwdXNoVXBk
YXRlVG9RdWV1ZShQYXNzT3duUHRyPExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyPik7CisgICAg
VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4gPiBtX2Z1bmN0aW9uUXVldWU7CisgICAgdm9pZCBkaXNw
YXRjaFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAKICNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCiAgICAgT3duUHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBl
cjsKQEAgLTEwNiw4ICsxMDQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW5jTGF5ZXJQYXJh
bWV0ZXJzKGNvbnN0IFdlYkxheWVySW5mbyYpOwogICAgIHZvaWQgY3JlYXRlVGlsZShXZWJMYXll
cklELCBpbnQsIGZsb2F0IHNjYWxlKTsKICAgICB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwg
aW50KTsKLSAgICB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNoYXJlYWJsZUJpdG1hcCopOwot
ICAgIHZvaWQgY3JlYXRlSW1hZ2UoaW50NjRfdCwgU2hhcmVhYmxlQml0bWFwKik7CisgICAgdm9p
ZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOworICAg
IHZvaWQgY3JlYXRlSW1hZ2UoaW50NjRfdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsK
ICAgICB2b2lkIGRlc3Ryb3lJbWFnZShpbnQ2NF90KTsKICAgICB2b2lkIGFzc2lnbkltYWdlVG9M
YXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgaW50NjRfdCBpbWFnZUlEKTsKICAgICB2b2lk
IGZsdXNoTGF5ZXJDaGFuZ2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcAppbmRleCBlY2I0NmE2Li4wOTIzMWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlR
dC5jcHAKQEAgLTQxLDExMSArNDEsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3Mg
TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXIgewotcHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0g
ICAgICAgIERlbGV0ZUxheWVyLAotICAgICAgICBDcmVhdGVUaWxlLAotICAgICAgICBSZW1vdmVU
aWxlLAotICAgICAgICBVcGRhdGVUaWxlLAotICAgICAgICBDcmVhdGVJbWFnZSwKLSAgICAgICAg
RGVzdHJveUltYWdlLAotICAgICAgICBTeW5jTGF5ZXJQYXJhbWV0ZXJzLAotICAgICAgICBGbHVz
aExheWVyQ2hhbmdlcywKLSAgICAgICAgU2V0Um9vdExheWVyCi0gICAgfTsKLSAgICB2aXJ0dWFs
IH5MYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcigpIHsgfQotICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3QgPSAwOwotfTsKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXRlbXBsYXRl
PGNsYXNzIE1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6VHlwZSBtZXNz
YWdlVHlwZT4KLWNsYXNzIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGEgOiBwdWJs
aWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbWVzc2FnZVR5cGU7IH0KLQotICAgIHN0YXRpYyBQYXNz
T3duUHRyPExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyPiBjcmVhdGUoY29uc3QgTWVzc2FnZURh
dGEmIGRhdGEgPSBNZXNzYWdlRGF0YSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhKGRhdGEpKTsKLSAgICB9Ci0K
LSAgICBjb25zdCBNZXNzYWdlRGF0YSYgZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9kYXRhOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBMYXllclRyZWVNZXNzYWdlVG9SZW5k
ZXJlcldpdGhEYXRhKGNvbnN0IE1lc3NhZ2VEYXRhJiBkYXRhKQotICAgICAgICA6IG1fZGF0YShk
YXRhKQotICAgIHsKLSAgICB9Ci0KLSAgICBNZXNzYWdlRGF0YSBtX2RhdGE7Ci19OwotCi0KLW5h
bWVzcGFjZSB7Ci1zdHJ1Y3QgQ3JlYXRlVGlsZU1lc3NhZ2VEYXRhIHsKLSAgICBXZWJMYXllcklE
IGxheWVySUQ7Ci0gICAgaW50IHJlbW90ZVRpbGVJRDsKLSAgICBmbG9hdCBzY2FsZTsKLX07Ci0K
LXN0cnVjdCBVcGRhdGVUaWxlTWVzc2FnZURhdGEgewotICAgIFdlYkxheWVySUQgbGF5ZXJJRDsK
LSAgICBpbnQgcmVtb3RlVGlsZUlEOwotICAgIEludFJlY3Qgc291cmNlUmVjdDsKLSAgICBJbnRS
ZWN0IHRhcmdldFJlY3Q7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwOwotfTsK
LQotc3RydWN0IFJlbW92ZVRpbGVNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5ZXJJRCBsYXllcklE
OwotICAgIGludCByZW1vdGVUaWxlSUQ7Ci19OwotCi1zdHJ1Y3QgQ3JlYXRlSW1hZ2VNZXNzYWdl
RGF0YSB7Ci0gICAgaW50NjRfdCBpbWFnZUlEOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcDsKLX07Ci0KLXN0cnVjdCBEZXN0cm95SW1hZ2VNZXNzYWdlRGF0YSB7Ci0gICAgaW50
NjRfdCBpbWFnZUlEOwotfTsKLQotc3RydWN0IFN5bmNMYXllclBhcmFtZXRlcnNNZXNzYWdlRGF0
YSB7Ci0gICAgV2ViTGF5ZXJJbmZvIGxheWVySW5mbzsKLX07Ci0KLXN0cnVjdCBFbXB0eU1lc3Nh
Z2VEYXRhIHsgfTsKLXN0cnVjdCBEZWxldGVMYXllck1lc3NhZ2VEYXRhIHsKLSAgICBXZWJMYXll
cklEIGxheWVySUQ7Ci19Owotc3RydWN0IFNldFJvb3RMYXllck1lc3NhZ2VEYXRhIHsKLSAgICBX
ZWJMYXllcklEIGxheWVySUQ7Ci19OwotCi1jbGFzcyBDcmVhdGVUaWxlTWVzc2FnZQotICAgICAg
ICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPENyZWF0ZVRpbGVN
ZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkNyZWF0ZVRpbGU+IHsgfTsK
LWNsYXNzIFVwZGF0ZVRpbGVNZXNzYWdlCi0gICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3Nh
Z2VUb1JlbmRlcmVyV2l0aERhdGE8VXBkYXRlVGlsZU1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNz
YWdlVG9SZW5kZXJlcjo6VXBkYXRlVGlsZT4geyB9OwotY2xhc3MgUmVtb3ZlVGlsZU1lc3NhZ2UK
LSAgICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxSZW1v
dmVUaWxlTWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpSZW1vdmVUaWxl
PiB7IH07Ci1jbGFzcyBDcmVhdGVJbWFnZU1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJU
cmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxDcmVhdGVJbWFnZU1lc3NhZ2VEYXRhLCBMYXll
clRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6Q3JlYXRlSW1hZ2U+IHsgfTsKLWNsYXNzIERlc3Ryb3lJ
bWFnZU1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJX
aXRoRGF0YTxEZXN0cm95SW1hZ2VNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVy
ZXI6OkRlc3Ryb3lJbWFnZT4geyB9OwotY2xhc3MgRmx1c2hMYXllckNoYW5nZXNNZXNzYWdlCi0g
ICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8RW1wdHlN
ZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkZsdXNoTGF5ZXJDaGFuZ2Vz
PiB7IH07Ci1jbGFzcyBTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZQotICAgICAgICA6IHB1Ymxp
YyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPFN5bmNMYXllclBhcmFtZXRlcnNN
ZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlN5bmNMYXllclBhcmFtZXRl
cnM+IHsgfTsKLWNsYXNzIERlbGV0ZUxheWVyTWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXll
clRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPERlbGV0ZUxheWVyTWVzc2FnZURhdGEsIExh
eWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpEZWxldGVMYXllcj4geyB9OwotY2xhc3MgU2V0Um9v
dExheWVyTWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJl
cldpdGhEYXRhPFNldFJvb3RMYXllck1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9SZW5k
ZXJlcjo6U2V0Um9vdExheWVyPiB7IH07Ci19Ci0KIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4g
TGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVMYXllcihXZWJMYXllcklEIGxheWVySUQpCiB7CiAg
ICAgR3JhcGhpY3NMYXllciogbmV3TGF5ZXIgPSBuZXcgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIodGhpcyk7CkBAIC0zNjIsMTUgKzI1OSwxNyBAQCB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6
cmVtb3ZlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQpCiAgICAgZ2V0QmFja2lu
Z1N0b3JlKGxheWVySUQpLT5yZW1vdmVUaWxlKHRpbGVJRCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVl
SG9zdFByb3h5Ojp1cGRhdGVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgU2hhcmVh
YmxlQml0bWFwKiBiaXRtYXApCit2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlVGlsZShX
ZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiB3
ZWFrQml0bWFwKQogeworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IHdlYWtC
aXRtYXA7CiAgICAgUmVmUHRyPExheWVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBnZXRC
YWNraW5nU3RvcmUobGF5ZXJJRCk7Ci0gICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxlKHRpbGVJ
RCwgc291cmNlUmVjdCwgdGFyZ2V0UmVjdCwgYml0bWFwKTsKKyAgICBiYWNraW5nU3RvcmUtPnVw
ZGF0ZVRpbGUodGlsZUlELCBzb3VyY2VSZWN0LCB0YXJnZXRSZWN0LCBiaXRtYXAuZ2V0KCkpOwog
ICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5hZGQoYmFja2luZ1N0b3JlKTsK
IH0KIAotdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUltYWdlKGludDY0X3QgaW1hZ2VJ
RCwgU2hhcmVhYmxlQml0bWFwKiBiaXRtYXApCit2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3Jl
YXRlSW1hZ2UoaW50NjRfdCBpbWFnZUlELCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gd2Vh
a0JpdG1hcCkKIHsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSB3ZWFrQml0
bWFwOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdT
dG9yZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CiAgICAgYmFj
a2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyhtX3RleHR1cmVNYXBwZXIuZ2V0KCksIGJpdG1hcC0+
Y3JlYXRlSW1hZ2UoKS5nZXQoKSwgQml0bWFwVGV4dHVyZTo6QkdSQUZvcm1hdCk7CiAgICAgbV9k
aXJlY3RseUNvbXBvc2l0ZWRJbWFnZXMuc2V0KGltYWdlSUQsIGJhY2tpbmdTdG9yZSk7CkBAIC00
MjcsMTQwICszMjYsNjggQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnN5bmNSZW1vdGVDb250
ZW50KCkKICAgICAvLyBXZSBlbnF1ZXVlIG1lc3NhZ2VzIGFuZCBleGVjdXRlIHRoZW0gZHVyaW5n
IHBhaW50LCBhcyB0aGV5IHJlcXVpcmUgYW4gYWN0aXZlIEdMIGNvbnRleHQuCiAgICAgZW5zdXJl
Um9vdExheWVyKCk7CiAKLSAgICB3aGlsZSAoT3duUHRyPExheWVyVHJlZU1lc3NhZ2VUb1JlbmRl
cmVyPiBuZXh0TWVzc2FnZSA9IG1fbWVzc2FnZXNUb1JlbmRlcmVyLnRyeUdldE1lc3NhZ2UoKSkg
ewotICAgICAgICBzd2l0Y2ggKG5leHRNZXNzYWdlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6U2V0Um9vdExheWVyOiB7Ci0gICAgICAgICAgICBj
b25zdCBTZXRSb290TGF5ZXJNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PFNldFJvb3RM
YXllck1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAgICAgIHNl
dFJvb3RMYXllcklEKGRhdGEubGF5ZXJJRCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkRlbGV0ZUxheWVy
OiB7Ci0gICAgICAgICAgICBjb25zdCBEZWxldGVMYXllck1lc3NhZ2VEYXRhJiBkYXRhID0gc3Rh
dGljX2Nhc3Q8RGVsZXRlTGF5ZXJNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7
Ci0gICAgICAgICAgICBkZWxldGVMYXllcihkYXRhLmxheWVySUQpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25RdWV1
ZS5zaXplKCk7ICsraSkKKyAgICAgICAgbV9mdW5jdGlvblF1ZXVlW2ldKCk7CiAKLSAgICAgICAg
Y2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6U3luY0xheWVyUGFyYW1ldGVyczogewot
ICAgICAgICAgICAgY29uc3QgU3luY0xheWVyUGFyYW1ldGVyc01lc3NhZ2VEYXRhJiBkYXRhID0g
c3RhdGljX2Nhc3Q8U3luY0xheWVyUGFyYW1ldGVyc01lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQo
KSktPmRhdGEoKTsKLSAgICAgICAgICAgIHN5bmNMYXllclBhcmFtZXRlcnMoZGF0YS5sYXllcklu
Zm8pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIExheWVy
VHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpDcmVhdGVUaWxlOiB7Ci0gICAgICAgICAgICBjb25zdCBD
cmVhdGVUaWxlTWVzc2FnZURhdGEmIGRhdGEgPSBzdGF0aWNfY2FzdDxDcmVhdGVUaWxlTWVzc2Fn
ZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0YSgpOwotICAgICAgICAgICAgY3JlYXRlVGlsZShk
YXRhLmxheWVySUQsIGRhdGEucmVtb3RlVGlsZUlELCBkYXRhLnNjYWxlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5k
ZXJlcjo6UmVtb3ZlVGlsZTogewotICAgICAgICAgICAgY29uc3QgUmVtb3ZlVGlsZU1lc3NhZ2VE
YXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8UmVtb3ZlVGlsZU1lc3NhZ2UqPihuZXh0TWVzc2FnZS5n
ZXQoKSktPmRhdGEoKTsKLSAgICAgICAgICAgIHJlbW92ZVRpbGUoZGF0YS5sYXllcklELCBkYXRh
LnJlbW90ZVRpbGVJRCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlVwZGF0ZVRpbGU6IHsKLSAgICAgICAg
ICAgIGNvbnN0IFVwZGF0ZVRpbGVNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PFVwZGF0
ZVRpbGVNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICB1
cGRhdGVUaWxlKGRhdGEubGF5ZXJJRCwgZGF0YS5yZW1vdGVUaWxlSUQsIGRhdGEuc291cmNlUmVj
dCwgZGF0YS50YXJnZXRSZWN0LCBkYXRhLmJpdG1hcC5nZXQoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6
OkNyZWF0ZUltYWdlOiB7Ci0gICAgICAgICAgICBjb25zdCBDcmVhdGVJbWFnZU1lc3NhZ2VEYXRh
JiBkYXRhID0gc3RhdGljX2Nhc3Q8Q3JlYXRlSW1hZ2VNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0
KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICBjcmVhdGVJbWFnZShkYXRhLmltYWdlSUQsIGRhdGEu
Yml0bWFwLmdldCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
Y2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6RGVzdHJveUltYWdlOiB7Ci0gICAgICAg
ICAgICBjb25zdCBEZXN0cm95SW1hZ2VNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PERl
c3Ryb3lJbWFnZU1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAg
ICAgIGRlc3Ryb3lJbWFnZShkYXRhLmltYWdlSUQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYXNlIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpGbHVzaExh
eWVyQ2hhbmdlczoKLSAgICAgICAgICAgIGZsdXNoTGF5ZXJDaGFuZ2VzKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBtX2Z1bmN0aW9uUXVldWUuY2xlYXIoKTsK
IH0KIAotdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnB1c2hVcGRhdGVUb1F1ZXVlKFBhc3NPd25Q
dHI8TGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI+IG1lc3NhZ2UpCit2b2lkIExheWVyVHJlZUhv
c3RQcm94eTo6ZGlzcGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24p
CiB7Ci0gICAgbV9tZXNzYWdlc1RvUmVuZGVyZXIuYXBwZW5kKG1lc3NhZ2UpOworICAgIG1fZnVu
Y3Rpb25RdWV1ZS5hcHBlbmQoZnVuY3Rpb24pOwogICAgIHVwZGF0ZVZpZXdwb3J0KCk7CiB9CiAK
IHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQs
IGludCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6VXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKIHsKLSAg
ICBDcmVhdGVUaWxlTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmxheWVySUQgPSBsYXllcklE
OwotICAgIGRhdGEucmVtb3RlVGlsZUlEID0gdGlsZUlEOwotICAgIGRhdGEuc2NhbGUgPSB1cGRh
dGVJbmZvLnVwZGF0ZVNjYWxlRmFjdG9yOwotICAgIHB1c2hVcGRhdGVUb1F1ZXVlKENyZWF0ZVRp
bGVNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVy
VHJlZUhvc3RQcm94eTo6Y3JlYXRlVGlsZSwgdGhpcywgbGF5ZXJJRCwgdGlsZUlELCB1cGRhdGVJ
bmZvLnVwZGF0ZVNjYWxlRmFjdG9yKSk7CiAgICAgdXBkYXRlVGlsZUZvckxheWVyKGxheWVySUQs
IHRpbGVJRCwgdXBkYXRlSW5mbyk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRh
dGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6VXBk
YXRlSW5mbyYgdXBkYXRlSW5mbykKIHsKLSAgICBVcGRhdGVUaWxlTWVzc2FnZURhdGEgZGF0YTsK
LSAgICBkYXRhLmxheWVySUQgPSBsYXllcklEOwotICAgIGRhdGEucmVtb3RlVGlsZUlEID0gdGls
ZUlEOwotICAgIGRhdGEuYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5m
by5iaXRtYXBIYW5kbGUpOwogICAgIEFTU0VSVCh1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzLnNpemUo
KSA9PSAxKTsKLSAgICBkYXRhLnNvdXJjZVJlY3QgPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzLmZp
cnN0KCk7Ci0gICAgZGF0YS50YXJnZXRSZWN0ID0gdXBkYXRlSW5mby51cGRhdGVSZWN0Qm91bmRz
OwotICAgIHB1c2hVcGRhdGVUb1F1ZXVlKFVwZGF0ZVRpbGVNZXNzYWdlOjpjcmVhdGUoZGF0YSkp
OworICAgIEludFJlY3Qgc291cmNlUmVjdCA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdHMuZmlyc3Qo
KTsKKyAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHM7
CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQo
JkxheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlVGlsZSwgdGhpcywgbGF5ZXJJRCwgdGlsZUlELCBz
b3VyY2VSZWN0LCB0YXJnZXRSZWN0LCBiaXRtYXApKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0
UHJveHk6OnJlbW92ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCkKIHsKLSAg
ICBSZW1vdmVUaWxlTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmxheWVySUQgPSBsYXllcklE
OwotICAgIGRhdGEucmVtb3RlVGlsZUlEID0gdGlsZUlEOwotICAgIHB1c2hVcGRhdGVUb1F1ZXVl
KFJlbW92ZVRpbGVNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIGRpc3BhdGNoVXBkYXRlKGJp
bmQoJkxheWVyVHJlZUhvc3RQcm94eTo6cmVtb3ZlVGlsZSwgdGhpcywgbGF5ZXJJRCwgdGlsZUlE
KSk7CiB9CiAKIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5
ZXIoV2ViTGF5ZXJJRCBpZCkKIHsKLSAgICBEZWxldGVMYXllck1lc3NhZ2VEYXRhIGRhdGE7Ci0g
ICAgZGF0YS5sYXllcklEID0gaWQ7Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoRGVsZXRlTGF5ZXJN
ZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJl
ZUhvc3RQcm94eTo6ZGVsZXRlTGF5ZXIsIHRoaXMsIGlkKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVl
SG9zdFByb3h5OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEIGlkKQogewotICAg
IFNldFJvb3RMYXllck1lc3NhZ2VEYXRhIGRhdGE7Ci0gICAgZGF0YS5sYXllcklEID0gaWQ7Ci0g
ICAgcHVzaFVwZGF0ZVRvUXVldWUoU2V0Um9vdExheWVyTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsK
KyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OnNldFJvb3RMYXll
cklELCB0aGlzLCBpZCkpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c3luY0NvbXBv
c2l0aW5nTGF5ZXJTdGF0ZShjb25zdCBXZWJMYXllckluZm8mIGluZm8pCiB7Ci0gICAgU3luY0xh
eWVyUGFyYW1ldGVyc01lc3NhZ2VEYXRhIGRhdGE7Ci0gICAgZGF0YS5sYXllckluZm8gPSBpbmZv
OwotICAgIHB1c2hVcGRhdGVUb1F1ZXVlKFN5bmNMYXllclBhcmFtZXRlcnNNZXNzYWdlOjpjcmVh
dGUoZGF0YSkpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZUhvc3RQcm94eTo6
c3luY0xheWVyUGFyYW1ldGVycywgdGhpcywgaW5mbykpOwogfQogCiB2b2lkIExheWVyVHJlZUhv
c3RQcm94eTo6ZGlkUmVuZGVyRnJhbWUoKQogewotICAgIHB1c2hVcGRhdGVUb1F1ZXVlKEZsdXNo
TGF5ZXJDaGFuZ2VzTWVzc2FnZTo6Y3JlYXRlKCkpOwotICAgIHVwZGF0ZVZpZXdwb3J0KCk7Cisg
ICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpmbHVzaExheWVyQ2hh
bmdlcywgdGhpcykpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlRGlyZWN0
bHlDb21wb3NpdGVkSW1hZ2UoaW50NjRfdCBrZXksIGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBDcmVhdGVJbWFnZU1lc3NhZ2VEYXRhIGRhdGE7
Ci0gICAgZGF0YS5pbWFnZUlEID0ga2V5OwotICAgIGRhdGEuYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoaGFuZGxlKTsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShDcmVhdGVJbWFnZU1l
c3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShi
aW5kKCZMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUltYWdlLCB0aGlzLCBrZXksIGJpdG1hcCkp
OwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6ZGVzdHJveURpcmVjdGx5Q29tcG9zaXRl
ZEltYWdlKGludDY0X3Qga2V5KQogewotICAgIERlc3Ryb3lJbWFnZU1lc3NhZ2VEYXRhIGRhdGE7
Ci0gICAgZGF0YS5pbWFnZUlEID0ga2V5OwotICAgIHB1c2hVcGRhdGVUb1F1ZXVlKERlc3Ryb3lJ
bWFnZU1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5
ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95SW1hZ2UsIHRoaXMsIGtleSkpOwogfQogCiB2b2lkIExh
eWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQot
LSAKMS43LjUuNAoK
</data>
<flag name="review"
          id="131355"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="131356"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128932</attachid>
            <date>2012-02-26 15:18:15 -0800</date>
            <delta_ts>2012-02-26 20:13:48 -0800</delta_ts>
            <desc>patch v.5</desc>
            <filename>0001-Use-Functional-instead-of-a-MessageQueue-for-message.patch</filename>
            <type>text/plain</type>
            <size>15719</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSA4YTM0NjZhMTE4NDE0NmM2NTY3NmI4ZDA3NTM0MDIyNjViYTNjYzA2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFNhdCwgMjUgRmViIDIwMTIgMTQ6MjU6MDIgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBVc2UgRnVuY3Rpb25hbCBpbnN0ZWFkIG9mIGEgTWVzc2FnZVF1ZXVlIGZvciBtZXNzYWdlcyB0
byB0aGUKIExheWVyVHJlZUhvc3RQcm94eSByZW5kZXJlci4KIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ3OAoKVGhpcyBtYWtlcyBhIGxvdCBvZiB0aGUgYnJvaWxl
cnBsYXRlIGNvZGUgZm9yIG1lc3NhZ2UtcGFzc2luZyB1bm5lY2Vzc2FyeSwgYW5kCnJlc3VsdHMg
aW4gYSBtdWNoIG1vcmUgc3VjY2luY3QgaW1wbGVtZW50YXRpb24uCi0tLQogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKwogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oICAgICAgfCAgIDEyICstCiAu
Li4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwICB8ICAyMTkg
KystLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAy
MDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI2ZWZiNDAuLjBiY2RiOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0wMi0yNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBVc2UgRnVuY3Rpb25hbCBpbnN0ZWFkIG9mIGEg
TWVzc2FnZVF1ZXVlIGZvciBtZXNzYWdlcyB0byB0aGUgTGF5ZXJUcmVlSG9zdFByb3h5CisgICAg
ICAgIHJlbmRlcmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk0NzgKKworICAgICAgICBUaGlzIG1ha2VzIGEgbG90IG9mIHRoZSBicm9pbGVycGxh
dGUgY29kZSBmb3IgbWVzc2FnZS1wYXNzaW5nIHVubmVjZXNzYXJ5LCBhbmQKKyAgICAgICAgcmVz
dWx0cyBpbiBhIG11Y2ggbW9yZSBzdWNjaW5jdCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRy
ZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChMYXllclRyZWVIb3N0
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHA6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6
OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0
ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jUmVtb3Rl
Q29udGVudCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6ZGlzcGF0Y2hV
cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZVRpbGVG
b3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlVGls
ZUZvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVU
aWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmRlbGV0
ZUNvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6
OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dFByb3h5OjpzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlSG9zdFByb3h5OjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUhvc3RQcm94eTo6Y3JlYXRlRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmRlc3Ryb3lEaXJlY3RseUNvbXBvc2l0ZWRJbWFn
ZSk6CisKIDIwMTItMDItMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbmFtZSBbc2V0U3xzXXVwcHJlc3NJbmNyZW1lbnRhbFJlbmRlcmluZyB0byBbc2V0U3xz
XXVwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nIGFuZCBtYWtlIGl0IFdlYlByZWZlcmVuY2Vz
IEFQSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaApp
bmRleCAyZDE3MGRiLi40YmNhYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
eWVyVHJlZUhvc3RQcm94eS5oCkBAIC0yMiw3ICsyMiw2IEBACiAKICNpbmNsdWRlICJCYWNraW5n
U3RvcmUuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCi0jaW5jbHVkZSAiTWVzc2Fn
ZVF1ZXVlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlSW5m
by5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC0zMSw2ICszMCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIFVTRShURVhUVVJFX01BUFBF
UikKQEAgLTQ0LDggKzQ0LDYgQEAgY2xhc3MgTGF5ZXJCYWNraW5nU3RvcmU7CiBjbGFzcyBXZWJM
YXllckluZm87CiBjbGFzcyBXZWJMYXllclVwZGF0ZUluZm87CiAKLWNsYXNzIExheWVyVHJlZU1l
c3NhZ2VUb1JlbmRlcmVyOwotCiBjbGFzcyBMYXllclRyZWVIb3N0UHJveHkgOiBwdWJsaWMgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgTGF5ZXJUcmVlSG9zdFBy
b3h5KERyYXdpbmdBcmVhUHJveHkqKTsKQEAgLTkxLDggKzg5LDggQEAgcHJvdGVjdGVkOgogICAg
IFdlYkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwogICAgIGZsb2F0IG1fY29u
dGVudHNTY2FsZTsKIAotICAgIE1lc3NhZ2VRdWV1ZTxMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJl
cj4gbV9tZXNzYWdlc1RvUmVuZGVyZXI7Ci0gICAgdm9pZCBwdXNoVXBkYXRlVG9RdWV1ZShQYXNz
T3duUHRyPExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyPik7CisgICAgVmVjdG9yPEZ1bmN0aW9u
PHZvaWQoKT4gPiBtX3JlbmRlclF1ZXVlOworICAgIHZvaWQgZGlzcGF0Y2hVcGRhdGUoY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYpOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIE93blB0
cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7CkBAIC0xMDYsOCArMTA0
LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3luY0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJM
YXllckluZm8mKTsKICAgICB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBmbG9hdCBz
Y2FsZSk7CiAgICAgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCk7Ci0gICAgdm9pZCB1
cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBTaGFyZWFibGVCaXRtYXAqKTsKLSAgICB2b2lkIGNyZWF0ZUlt
YWdlKGludDY0X3QsIFNoYXJlYWJsZUJpdG1hcCopOworICAgIHZvaWQgdXBkYXRlVGlsZShXZWJM
YXllcklELCBpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKyAgICB2b2lkIGNyZWF0ZUltYWdl
KGludDY0X3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CiAgICAgdm9pZCBkZXN0cm95
SW1hZ2UoaW50NjRfdCk7CiAgICAgdm9pZCBhc3NpZ25JbWFnZVRvTGF5ZXIoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciosIGludDY0X3QgaW1hZ2VJRCk7CiAgICAgdm9pZCBmbHVzaExheWVyQ2hhbmdl
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhv
c3RQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0
UHJveHlRdC5jcHAKaW5kZXggZWNiNDZhNi4uM2NiNGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCkBAIC00MSwxMTEg
KzQxLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExheWVyVHJlZU1lc3NhZ2VU
b1JlbmRlcmVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgewotICAgICAgICBEZWxldGVMYXll
ciwKLSAgICAgICAgQ3JlYXRlVGlsZSwKLSAgICAgICAgUmVtb3ZlVGlsZSwKLSAgICAgICAgVXBk
YXRlVGlsZSwKLSAgICAgICAgQ3JlYXRlSW1hZ2UsCi0gICAgICAgIERlc3Ryb3lJbWFnZSwKLSAg
ICAgICAgU3luY0xheWVyUGFyYW1ldGVycywKLSAgICAgICAgRmx1c2hMYXllckNoYW5nZXMsCi0g
ICAgICAgIFNldFJvb3RMYXllcgotICAgIH07Ci0gICAgdmlydHVhbCB+TGF5ZXJUcmVlTWVzc2Fn
ZVRvUmVuZGVyZXIoKSB7IH0KLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKLX07
Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi10ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlRGF0
YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlR5cGUgbWVzc2FnZVR5cGU+Ci1jbGFzcyBM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhIDogcHVibGljIExheWVyVHJlZU1lc3Nh
Z2VUb1JlbmRlcmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1lc3NhZ2VUeXBlOyB9Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclRyZWVN
ZXNzYWdlVG9SZW5kZXJlcj4gY3JlYXRlKGNvbnN0IE1lc3NhZ2VEYXRhJiBkYXRhID0gTWVzc2Fn
ZURhdGEoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTGF5ZXJUcmVlTWVz
c2FnZVRvUmVuZGVyZXJXaXRoRGF0YShkYXRhKSk7Ci0gICAgfQotCi0gICAgY29uc3QgTWVzc2Fn
ZURhdGEmIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YShjb25z
dCBNZXNzYWdlRGF0YSYgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICB7Ci0gICAg
fQotCi0gICAgTWVzc2FnZURhdGEgbV9kYXRhOwotfTsKLQotCi1uYW1lc3BhY2Ugewotc3RydWN0
IENyZWF0ZVRpbGVNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5ZXJJRCBsYXllcklEOwotICAgIGlu
dCByZW1vdGVUaWxlSUQ7Ci0gICAgZmxvYXQgc2NhbGU7Ci19OwotCi1zdHJ1Y3QgVXBkYXRlVGls
ZU1lc3NhZ2VEYXRhIHsKLSAgICBXZWJMYXllcklEIGxheWVySUQ7Ci0gICAgaW50IHJlbW90ZVRp
bGVJRDsKLSAgICBJbnRSZWN0IHNvdXJjZVJlY3Q7Ci0gICAgSW50UmVjdCB0YXJnZXRSZWN0Owot
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcDsKLX07Ci0KLXN0cnVjdCBSZW1vdmVU
aWxlTWVzc2FnZURhdGEgewotICAgIFdlYkxheWVySUQgbGF5ZXJJRDsKLSAgICBpbnQgcmVtb3Rl
VGlsZUlEOwotfTsKLQotc3RydWN0IENyZWF0ZUltYWdlTWVzc2FnZURhdGEgewotICAgIGludDY0
X3QgaW1hZ2VJRDsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXA7Ci19OwotCi1z
dHJ1Y3QgRGVzdHJveUltYWdlTWVzc2FnZURhdGEgewotICAgIGludDY0X3QgaW1hZ2VJRDsKLX07
Ci0KLXN0cnVjdCBTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZURhdGEgewotICAgIFdlYkxheWVy
SW5mbyBsYXllckluZm87Ci19OwotCi1zdHJ1Y3QgRW1wdHlNZXNzYWdlRGF0YSB7IH07Ci1zdHJ1
Y3QgRGVsZXRlTGF5ZXJNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5ZXJJRCBsYXllcklEOwotfTsK
LXN0cnVjdCBTZXRSb290TGF5ZXJNZXNzYWdlRGF0YSB7Ci0gICAgV2ViTGF5ZXJJRCBsYXllcklE
OwotfTsKLQotY2xhc3MgQ3JlYXRlVGlsZU1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJU
cmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxDcmVhdGVUaWxlTWVzc2FnZURhdGEsIExheWVy
VHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpDcmVhdGVUaWxlPiB7IH07Ci1jbGFzcyBVcGRhdGVUaWxl
TWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhE
YXRhPFVwZGF0ZVRpbGVNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlVw
ZGF0ZVRpbGU+IHsgfTsKLWNsYXNzIFJlbW92ZVRpbGVNZXNzYWdlCi0gICAgICAgIDogcHVibGlj
IExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8UmVtb3ZlVGlsZU1lc3NhZ2VEYXRh
LCBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6UmVtb3ZlVGlsZT4geyB9OwotY2xhc3MgQ3Jl
YXRlSW1hZ2VNZXNzYWdlCi0gICAgICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRl
cmVyV2l0aERhdGE8Q3JlYXRlSW1hZ2VNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVu
ZGVyZXI6OkNyZWF0ZUltYWdlPiB7IH07Ci1jbGFzcyBEZXN0cm95SW1hZ2VNZXNzYWdlCi0gICAg
ICAgIDogcHVibGljIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyV2l0aERhdGE8RGVzdHJveUlt
YWdlTWVzc2FnZURhdGEsIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpEZXN0cm95SW1hZ2U+
IHsgfTsKLWNsYXNzIEZsdXNoTGF5ZXJDaGFuZ2VzTWVzc2FnZQotICAgICAgICA6IHB1YmxpYyBM
YXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcldpdGhEYXRhPEVtcHR5TWVzc2FnZURhdGEsIExheWVy
VHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpGbHVzaExheWVyQ2hhbmdlcz4geyB9OwotY2xhc3MgU3lu
Y0xheWVyUGFyYW1ldGVyc01lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2Fn
ZVRvUmVuZGVyZXJXaXRoRGF0YTxTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZURhdGEsIExheWVy
VHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpTeW5jTGF5ZXJQYXJhbWV0ZXJzPiB7IH07Ci1jbGFzcyBE
ZWxldGVMYXllck1lc3NhZ2UKLSAgICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVu
ZGVyZXJXaXRoRGF0YTxEZWxldGVMYXllck1lc3NhZ2VEYXRhLCBMYXllclRyZWVNZXNzYWdlVG9S
ZW5kZXJlcjo6RGVsZXRlTGF5ZXI+IHsgfTsKLWNsYXNzIFNldFJvb3RMYXllck1lc3NhZ2UKLSAg
ICAgICAgOiBwdWJsaWMgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXJXaXRoRGF0YTxTZXRSb290
TGF5ZXJNZXNzYWdlRGF0YSwgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OlNldFJvb3RMYXll
cj4geyB9OwotfQotCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IExheWVyVHJlZUhvc3RQcm94
eTo6Y3JlYXRlTGF5ZXIoV2ViTGF5ZXJJRCBsYXllcklEKQogewogICAgIEdyYXBoaWNzTGF5ZXIq
IG5ld0xheWVyID0gbmV3IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKHRoaXMpOwpAQCAtMzYy
LDE1ICsyNTksMTcgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnJlbW92ZVRpbGUoV2ViTGF5
ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQogICAgIGdldEJhY2tpbmdTdG9yZShsYXllcklEKS0+
cmVtb3ZlVGlsZSh0aWxlSUQpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRl
VGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIFNoYXJlYWJsZUJpdG1hcCogYml0bWFw
KQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklE
LCBpbnQgdGlsZUlELCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0
YXJnZXRSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gd2Vha0JpdG1hcCkKIHsKKyAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSB3ZWFrQml0bWFwOwogICAgIFJlZlB0
cjxMYXllckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGxheWVy
SUQpOwotICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSh0aWxlSUQsIHNvdXJjZVJlY3QsIHRh
cmdldFJlY3QsIGJpdG1hcCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxlKHRpbGVJRCwg
c291cmNlUmVjdCwgdGFyZ2V0UmVjdCwgYml0bWFwLmdldCgpKTsKICAgICBtX2JhY2tpbmdTdG9y
ZXNXaXRoUGVuZGluZ0J1ZmZlcnMuYWRkKGJhY2tpbmdTdG9yZSk7CiB9CiAKLXZvaWQgTGF5ZXJU
cmVlSG9zdFByb3h5OjpjcmVhdGVJbWFnZShpbnQ2NF90IGltYWdlSUQsIFNoYXJlYWJsZUJpdG1h
cCogYml0bWFwKQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUltYWdlKGludDY0X3Qg
aW1hZ2VJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHdlYWtCaXRtYXApCiB7CisgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gd2Vha0JpdG1hcDsKICAgICBSZWZQdHI8
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRl
Q29udGVudHMobV90ZXh0dXJlTWFwcGVyLmdldCgpLCBiaXRtYXAtPmNyZWF0ZUltYWdlKCkuZ2V0
KCksIEJpdG1hcFRleHR1cmU6OkJHUkFGb3JtYXQpOwogICAgIG1fZGlyZWN0bHlDb21wb3NpdGVk
SW1hZ2VzLnNldChpbWFnZUlELCBiYWNraW5nU3RvcmUpOwpAQCAtNDI3LDE0MCArMzI2LDY4IEBA
IHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jUmVtb3RlQ29udGVudCgpCiAgICAgLy8gV2Ug
ZW5xdWV1ZSBtZXNzYWdlcyBhbmQgZXhlY3V0ZSB0aGVtIGR1cmluZyBwYWludCwgYXMgdGhleSBy
ZXF1aXJlIGFuIGFjdGl2ZSBHTCBjb250ZXh0LgogICAgIGVuc3VyZVJvb3RMYXllcigpOwogCi0g
ICAgd2hpbGUgKE93blB0cjxMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcj4gbmV4dE1lc3NhZ2Ug
PSBtX21lc3NhZ2VzVG9SZW5kZXJlci50cnlHZXRNZXNzYWdlKCkpIHsKLSAgICAgICAgc3dpdGNo
IChuZXh0TWVzc2FnZS0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRv
UmVuZGVyZXI6OlNldFJvb3RMYXllcjogewotICAgICAgICAgICAgY29uc3QgU2V0Um9vdExheWVy
TWVzc2FnZURhdGEmIGRhdGEgPSBzdGF0aWNfY2FzdDxTZXRSb290TGF5ZXJNZXNzYWdlKj4obmV4
dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICBzZXRSb290TGF5ZXJJRChkYXRh
LmxheWVySUQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNl
IExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpEZWxldGVMYXllcjogewotICAgICAgICAgICAg
Y29uc3QgRGVsZXRlTGF5ZXJNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PERlbGV0ZUxh
eWVyTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgpKS0+ZGF0YSgpOwotICAgICAgICAgICAgZGVs
ZXRlTGF5ZXIoZGF0YS5sYXllcklEKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlbmRlclF1ZXVlLnNpemUoKTsgKytpKQorICAg
ICAgICBtX3JlbmRlclF1ZXVlW2ldKCk7CiAKLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdl
VG9SZW5kZXJlcjo6U3luY0xheWVyUGFyYW1ldGVyczogewotICAgICAgICAgICAgY29uc3QgU3lu
Y0xheWVyUGFyYW1ldGVyc01lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8U3luY0xheWVy
UGFyYW1ldGVyc01lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAg
ICAgIHN5bmNMYXllclBhcmFtZXRlcnMoZGF0YS5sYXllckluZm8pOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVy
OjpDcmVhdGVUaWxlOiB7Ci0gICAgICAgICAgICBjb25zdCBDcmVhdGVUaWxlTWVzc2FnZURhdGEm
IGRhdGEgPSBzdGF0aWNfY2FzdDxDcmVhdGVUaWxlTWVzc2FnZSo+KG5leHRNZXNzYWdlLmdldCgp
KS0+ZGF0YSgpOwotICAgICAgICAgICAgY3JlYXRlVGlsZShkYXRhLmxheWVySUQsIGRhdGEucmVt
b3RlVGlsZUlELCBkYXRhLnNjYWxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K
LSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdlVG9SZW5kZXJlcjo6UmVtb3ZlVGlsZTogewot
ICAgICAgICAgICAgY29uc3QgUmVtb3ZlVGlsZU1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nh
c3Q8UmVtb3ZlVGlsZU1lc3NhZ2UqPihuZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAg
ICAgICAgIHJlbW92ZVRpbGUoZGF0YS5sYXllcklELCBkYXRhLnJlbW90ZVRpbGVJRCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2Fn
ZVRvUmVuZGVyZXI6OlVwZGF0ZVRpbGU6IHsKLSAgICAgICAgICAgIGNvbnN0IFVwZGF0ZVRpbGVN
ZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PFVwZGF0ZVRpbGVNZXNzYWdlKj4obmV4dE1l
c3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAgICAgICB1cGRhdGVUaWxlKGRhdGEubGF5ZXJJ
RCwgZGF0YS5yZW1vdGVUaWxlSUQsIGRhdGEuc291cmNlUmVjdCwgZGF0YS50YXJnZXRSZWN0LCBk
YXRhLmJpdG1hcC5nZXQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNhc2UgTGF5ZXJUcmVlTWVzc2FnZVRvUmVuZGVyZXI6OkNyZWF0ZUltYWdlOiB7Ci0gICAg
ICAgICAgICBjb25zdCBDcmVhdGVJbWFnZU1lc3NhZ2VEYXRhJiBkYXRhID0gc3RhdGljX2Nhc3Q8
Q3JlYXRlSW1hZ2VNZXNzYWdlKj4obmV4dE1lc3NhZ2UuZ2V0KCkpLT5kYXRhKCk7Ci0gICAgICAg
ICAgICBjcmVhdGVJbWFnZShkYXRhLmltYWdlSUQsIGRhdGEuYml0bWFwLmdldCgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBMYXllclRyZWVNZXNzYWdl
VG9SZW5kZXJlcjo6RGVzdHJveUltYWdlOiB7Ci0gICAgICAgICAgICBjb25zdCBEZXN0cm95SW1h
Z2VNZXNzYWdlRGF0YSYgZGF0YSA9IHN0YXRpY19jYXN0PERlc3Ryb3lJbWFnZU1lc3NhZ2UqPihu
ZXh0TWVzc2FnZS5nZXQoKSktPmRhdGEoKTsKLSAgICAgICAgICAgIGRlc3Ryb3lJbWFnZShkYXRh
LmltYWdlSUQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNl
IExheWVyVHJlZU1lc3NhZ2VUb1JlbmRlcmVyOjpGbHVzaExheWVyQ2hhbmdlczoKLSAgICAgICAg
ICAgIGZsdXNoTGF5ZXJDaGFuZ2VzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KKyAgICBtX3JlbmRlclF1ZXVlLmNsZWFyKCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9z
dFByb3h5OjpwdXNoVXBkYXRlVG9RdWV1ZShQYXNzT3duUHRyPExheWVyVHJlZU1lc3NhZ2VUb1Jl
bmRlcmVyPiBtZXNzYWdlKQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRpc3BhdGNoVXBkYXRl
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogewotICAgIG1fbWVzc2FnZXNUb1Jl
bmRlcmVyLmFwcGVuZChtZXNzYWdlKTsKKyAgICBtX3JlbmRlclF1ZXVlLmFwcGVuZChmdW5jdGlv
bik7CiAgICAgdXBkYXRlVmlld3BvcnQoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6
OmNyZWF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgV2ViS2l0
OjpVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewotICAgIENyZWF0ZVRpbGVNZXNzYWdlRGF0YSBk
YXRhOwotICAgIGRhdGEubGF5ZXJJRCA9IGxheWVySUQ7Ci0gICAgZGF0YS5yZW1vdGVUaWxlSUQg
PSB0aWxlSUQ7Ci0gICAgZGF0YS5zY2FsZSA9IHVwZGF0ZUluZm8udXBkYXRlU2NhbGVGYWN0b3I7
Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoQ3JlYXRlVGlsZU1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7
CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVUaWxl
LCB0aGlzLCBsYXllcklELCB0aWxlSUQsIHVwZGF0ZUluZm8udXBkYXRlU2NhbGVGYWN0b3IpKTsK
ICAgICB1cGRhdGVUaWxlRm9yTGF5ZXIobGF5ZXJJRCwgdGlsZUlELCB1cGRhdGVJbmZvKTsKIH0K
IAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJ
RCwgaW50IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewot
ICAgIFVwZGF0ZVRpbGVNZXNzYWdlRGF0YSBkYXRhOwotICAgIGRhdGEubGF5ZXJJRCA9IGxheWVy
SUQ7Ci0gICAgZGF0YS5yZW1vdGVUaWxlSUQgPSB0aWxlSUQ7Ci0gICAgZGF0YS5iaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CiAgICAgQVNT
RVJUKHVwZGF0ZUluZm8udXBkYXRlUmVjdHMuc2l6ZSgpID09IDEpOwotICAgIGRhdGEuc291cmNl
UmVjdCA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdHMuZmlyc3QoKTsKLSAgICBkYXRhLnRhcmdldFJl
Y3QgPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHM7Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUo
VXBkYXRlVGlsZU1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAgSW50UmVjdCBzb3VyY2VSZWN0
ID0gdXBkYXRlSW5mby51cGRhdGVSZWN0cy5maXJzdCgpOworICAgIEludFJlY3QgdGFyZ2V0UmVj
dCA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kczsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhh
bmRsZSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRh
dGVUaWxlLCB0aGlzLCBsYXllcklELCB0aWxlSUQsIHNvdXJjZVJlY3QsIHRhcmdldFJlY3QsIGJp
dG1hcCkpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6cmVtb3ZlVGlsZUZvckxheWVy
KGludCBsYXllcklELCBpbnQgdGlsZUlEKQogewotICAgIFJlbW92ZVRpbGVNZXNzYWdlRGF0YSBk
YXRhOwotICAgIGRhdGEubGF5ZXJJRCA9IGxheWVySUQ7Ci0gICAgZGF0YS5yZW1vdGVUaWxlSUQg
PSB0aWxlSUQ7Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoUmVtb3ZlVGlsZU1lc3NhZ2U6OmNyZWF0
ZShkYXRhKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5Ojpy
ZW1vdmVUaWxlLCB0aGlzLCBsYXllcklELCB0aWxlSUQpKTsKIH0KIAogCiB2b2lkIExheWVyVHJl
ZUhvc3RQcm94eTo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEIGlkKQogewotICAg
IERlbGV0ZUxheWVyTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmxheWVySUQgPSBpZDsKLSAg
ICBwdXNoVXBkYXRlVG9RdWV1ZShEZWxldGVMYXllck1lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7Cisg
ICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpkZWxldGVMYXllciwg
dGhpcywgaWQpKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldFJvb3RDb21wb3Np
dGluZ0xheWVyKFdlYkxheWVySUQgaWQpCiB7Ci0gICAgU2V0Um9vdExheWVyTWVzc2FnZURhdGEg
ZGF0YTsKLSAgICBkYXRhLmxheWVySUQgPSBpZDsKLSAgICBwdXNoVXBkYXRlVG9RdWV1ZShTZXRS
b290TGF5ZXJNZXNzYWdlOjpjcmVhdGUoZGF0YSkpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQo
JkxheWVyVHJlZUhvc3RQcm94eTo6c2V0Um9vdExheWVySUQsIHRoaXMsIGlkKSk7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKGNvbnN0IFdl
YkxheWVySW5mbyYgaW5mbykKIHsKLSAgICBTeW5jTGF5ZXJQYXJhbWV0ZXJzTWVzc2FnZURhdGEg
ZGF0YTsKLSAgICBkYXRhLmxheWVySW5mbyA9IGluZm87Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUo
U3luY0xheWVyUGFyYW1ldGVyc01lc3NhZ2U6OmNyZWF0ZShkYXRhKSk7CisgICAgZGlzcGF0Y2hV
cGRhdGUoYmluZCgmTGF5ZXJUcmVlSG9zdFByb3h5OjpzeW5jTGF5ZXJQYXJhbWV0ZXJzLCB0aGlz
LCBpbmZvKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpkaWRSZW5kZXJGcmFtZSgp
CiB7Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoRmx1c2hMYXllckNoYW5nZXNNZXNzYWdlOjpjcmVh
dGUoKSk7Ci0gICAgdXBkYXRlVmlld3BvcnQoKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZM
YXllclRyZWVIb3N0UHJveHk6OmZsdXNoTGF5ZXJDaGFuZ2VzLCB0aGlzKSk7CiB9CiAKIHZvaWQg
TGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2NF90
IGtleSwgY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKQogewot
ICAgIENyZWF0ZUltYWdlTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmltYWdlSUQgPSBrZXk7
Ci0gICAgZGF0YS5iaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwotICAg
IHB1c2hVcGRhdGVUb1F1ZXVlKENyZWF0ZUltYWdlTWVzc2FnZTo6Y3JlYXRlKGRhdGEpKTsKKyAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShoYW5kbGUpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZUhvc3RQcm94eTo6
Y3JlYXRlSW1hZ2UsIHRoaXMsIGtleSwgYml0bWFwKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9z
dFByb3h5OjpkZXN0cm95RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50NjRfdCBrZXkpCiB7Ci0g
ICAgRGVzdHJveUltYWdlTWVzc2FnZURhdGEgZGF0YTsKLSAgICBkYXRhLmltYWdlSUQgPSBrZXk7
Ci0gICAgcHVzaFVwZGF0ZVRvUXVldWUoRGVzdHJveUltYWdlTWVzc2FnZTo6Y3JlYXRlKGRhdGEp
KTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVIb3N0UHJveHk6OmRlc3Ryb3lJ
bWFnZSwgdGhpcywga2V5KSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNp
YmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>