<?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>134236</bug_id>
          
          <creation_ts>2014-06-23 19:43:12 -0700</creation_ts>
          <short_desc>[EFL] Replace RefPtr&lt;Evas_Object&gt; with UniquePtrEfl</short_desc>
          <delta_ts>2014-06-23 23:13:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</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>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jinwoo7.song</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1017817</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-23 19:43:12 -0700</bug_when>
    <thetext>There are two custom smart pointers for Evas_Object, RefPtr&lt;Evas_Object&gt; and UniquePtr&lt;Evas_Object&gt;.

Although evas_object had _ref()/_unref(), these APIs are bit odd.
Indeed, we don&apos;t use ref-counting for Evas Object internally.

So, I suggest to replace RefPtr&lt;Evas_Object&gt; into UniquePtrEfl for internal Evas_Object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017833</commentid>
    <comment_count>1</comment_count>
      <attachid>233677</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-23 21:15:21 -0700</bug_when>
    <thetext>Created attachment 233677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017837</commentid>
    <comment_count>2</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-06-23 21:34:07 -0700</bug_when>
    <thetext>Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017845</commentid>
    <comment_count>3</comment_count>
      <attachid>233677</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-06-23 22:02:50 -0700</bug_when>
    <thetext>Comment on attachment 233677
Patch

Isn&apos;t *EflUniquePtr* for OwnPtr/PassOwnPtr ? Can EflUniquePtr support RefPtr as well ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017851</commentid>
    <comment_count>4</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-23 22:46:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 233677 [details])
&gt; Isn&apos;t *EflUniquePtr* for OwnPtr/PassOwnPtr ? Can EflUniquePtr support RefPtr as well ?

No. this patch is not to drop RefPtr style(Reference counting) of Evas_Object.

Unfortunately, We are using both EflUniquePtr&lt;Evas_Object&gt; and RefPtr&lt;Evas_Object&gt;.
So, we should drop one of them and my suggestion is to drop RefPtr&lt;Evas_Object&gt;.
Although Evas_Object has ref/unref logic, it is little bit different from common RefPtr logic.

Evas_Object created with ref count of 0, unref does not destory it.
And evas_object_del also has some problems with _ref.
Since we increase ref count using _ref, evas_object_del just mark the deletion and it will be removed when ref count became 0 (by _unref).

In order to solve this issue, RefPtr&lt;Evas_Object&gt; had some extra conditions.
But, we don&apos;t use reference counting of Evas_Object widely (Almost use case is just for local variable.)

Instead, I think that it looks clear that Evas_Object will be owned by one instance like the unique_ptr (or OwnPtr).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017852</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-23 22:46:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 233677 [details] [details])
&gt; &gt; Isn&apos;t *EflUniquePtr* for OwnPtr/PassOwnPtr ? Can EflUniquePtr support RefPtr as well ?
&gt; 
&gt; No. this patch is not to drop RefPtr style(Reference counting) of Evas_Object.

s/not to drop/to drop

&gt; 
&gt; Unfortunately, We are using both EflUniquePtr&lt;Evas_Object&gt; and RefPtr&lt;Evas_Object&gt;.
&gt; So, we should drop one of them and my suggestion is to drop RefPtr&lt;Evas_Object&gt;.
&gt; Although Evas_Object has ref/unref logic, it is little bit different from common RefPtr logic.
&gt; 
&gt; Evas_Object created with ref count of 0, unref does not destory it.
&gt; And evas_object_del also has some problems with _ref.
&gt; Since we increase ref count using _ref, evas_object_del just mark the deletion and it will be removed when ref count became 0 (by _unref).
&gt; 
&gt; In order to solve this issue, RefPtr&lt;Evas_Object&gt; had some extra conditions.
&gt; But, we don&apos;t use reference counting of Evas_Object widely (Almost use case is just for local variable.)
&gt; 
&gt; Instead, I think that it looks clear that Evas_Object will be owned by one instance like the unique_ptr (or OwnPtr).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017864</commentid>
    <comment_count>6</comment_count>
      <attachid>233677</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-06-23 23:04:34 -0700</bug_when>
    <thetext>Comment on attachment 233677
Patch

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

Now I understand what this patch want to do. LGTM.

&gt; Source/WTF/ChangeLog:3
&gt; +        [EFL] Replace RefPtr&lt;Evas_Object&gt; to UniquePtrEfl

to -&gt; with ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017871</commentid>
    <comment_count>7</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-23 23:12:44 -0700</bug_when>
    <thetext>Committed r170347: &lt;http://trac.webkit.org/changeset/170347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017872</commentid>
    <comment_count>8</comment_count>
      <attachid>233677</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-23 23:13:07 -0700</bug_when>
    <thetext>Comment on attachment 233677
Patch

clearing flags after manually landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233677</attachid>
            <date>2014-06-23 21:15:21 -0700</date>
            <delta_ts>2014-06-23 23:13:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134236-20140624131458.patch</filename>
            <type>text/plain</type>
            <size>28467</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ5M2Q2ZDIzM2JlNmRjOTQzMTk3NzZj
MWNjZmM3MzFhYmI4MzVlN2QuLjk4NjM0NjgzNThlOGE0NzkwODZhZDVjMDI4MzYxYzM2NjkxMTA1
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDYtMjMgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlcGxhY2UgUmVmUHRyPEV2YXNfT2Jq
ZWN0PiB0byBVbmlxdWVQdHJFZmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSByZWYvdW5yZWYgZm9yIEV2YXNfT2JqZWN0
LCBpdCdzIGJpdCBvZGQgc28gd2Ugc2hvdWxkIGNhbGwgZXZhc19vYmplY3RfZGVsIHRvIGRlc3Ry
b3kgaXQuCisgICAgICAgIFNvLCB0aGlzIHBhdGNoIHJlcGxhY2VkIFJlZlB0cjxFdmFzX09iamVj
dD4gdG8gVW5pcXVlUHRyRWZsIGZvciB0aGUgc2ltcGxpY2l0eS4KKworICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybUVmbC5jbWFrZTogUmVtb3ZlZCBSZWZQdHJFZmwuY3BwIGZyb20gc291cmNlIGxpc3Qu
CisgICAgICAgICogd3RmL2VmbC9SZWZQdHJFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0
Zi9lZmwvUmVmUHRyRWZsLmg6IFJlbW92ZWQuCisKIDIwMTQtMDYtMjEgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEdhbWVwYWQgQVBJIC0gRGVwcmVjYXRlIHRo
ZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMwNzkzNTU1NThlMGVjZmUw
NDk2OTNiNTc1MzFlY2E4NTE3MjhlMzIuLjgxOTQ2ZmM5ZWNkNjRjM2I5OTYzOWFkNjY4MGQ5NzFk
Nzk4Y2YyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNC0wNi0yMyAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVwbGFjZSBS
ZWZQdHI8RXZhc19PYmplY3Q+IHRvIFVuaXF1ZVB0ckVmbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OlRoZW1lUGFydENhY2hlRW50
cnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6bG9hZFRoZW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlv
bnNGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvQ2Fpcm9VdGlsaXRpZXNFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZhc09iamVjdEZyb21DYWlyb0ltYWdlU3VyZmFjZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0NhaXJvVXRpbGl0aWVzRWZsLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpnZXRFdmFzT2JqZWN0KToKKwogMjAxNC0wNi0yMCAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB1bnNpZ25lZHMgaW5zdGVhZCBv
ZiBpbnRzIGZvciBpbmRleGVzIGludG8gYSBzdHJpbmcgaW4gdGV4dCBsYXlvdXQgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGNkZDQ5YWJhYTFkMmVmM2QwZTRjZTVlZjM4YTFhYzBmYzg3M2RhYjYuLjAwYTg0
N2Y4OTBkMmFhMWRiZGIzYTYyMmEyYjZlYTFiMGM4NWFhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwyMSBAQAogMjAxNC0wNi0yMyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CiAKKyAgICAgICAgW0VGTF0gUmVwbGFjZSBSZWZQdHI8RXZhc19PYmplY3Q+IHRvIFVuaXF1ZVB0
ckVmbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0
MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cDoKKyAgICAgICAgKEV3a1ZpZXc6OnVwZGF0ZUN1cnNvcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90
SW1hZ2VHTC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zhdmljb25fZGF0
YWJhc2UuY3BwOgorICAgICAgICAoZXdrX2Zhdmljb25fZGF0YWJhc2VfaWNvbl9nZXQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9yZWZwdHJfZXZhc19vYmpl
Y3QuY3BwOiBSZW1vdmVkLgorCisyMDE0LTA2LTIzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBz
YW1zdW5nLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCBFRkwgYnVpbGQgZml4IGFmdGVyIHIx
NzAzMzAuCiAKICAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IEd1YXJk
IFdLU3RyaW5nQ0YuaCB3aXRoIFBMQVRGT1JNKENPQ09BKSBtYWNyby4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggYTc1MjRjZmFiNjE4ZTI2ZmJmNDYyMDAwMDNkYzNkOTQ5ZDUzMWRjZS4u
ZTEzZGQ0YmU5YzdkNDEzZDU3OGQ3NTk3YmE0ZGUxYTY0MTZlNDUwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTEsNiArMSw1IEBACiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IGVmbC9NYWluVGhyZWFkRWZsLmNwcAotICAgIGVmbC9SZWZQdHJFZmwuY3BwCiAgICAgZWZsL1J1
bkxvb3BFZmwuY3BwCiAKICAgICBnb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9SZWZQdHJFZmwuY3BwIGIvU291cmNlL1dURi93dGYvZWZs
L1JlZlB0ckVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MzM1Y2M3YzE5
NTIxYWZkN2NjMzcwNDBhNTVjZTZmY2RmZjVlNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvZWZsL1JlZlB0ckVmbC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlZlB0ckVmbC5oIgotCi0jaW5jbHVk
ZSA8RXZhcy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90
TnVsbChFdmFzX09iamVjdCogcHRyKQotewotICAgIGlmIChMSUtFTFkoISFwdHIpKQotICAgICAg
ICBldmFzX29iamVjdF9yZWYocHRyKTsKLX0KLQotdGVtcGxhdGU8PiB2b2lkIGRlcmVmSWZOb3RO
dWxsKEV2YXNfT2JqZWN0KiBwdHIpCi17Ci0gICAgLy8gUmVmY291bnRpbmcgaW4gRXZhc19PYmpl
Y3QgaXMgZGlmZmVyZW50IHRoYXQgbm9ybWFsLiBUaGUgb2JqZWN0IGlzIGNyZWF0ZWQKLSAgICAv
LyB3aXRoIGFuIGV4dGVybmFsIHJlZiBjb3VudCBvZiAwLCBidXQgd2l0aCBvbmUgaW50ZXJuYWwg
Y291bnQgb2YgMSB3aGljaCBjYW4KLSAgICAvLyBvbmx5IGJlIHJlbW92ZWQgYnkgY2FsbGluZyBf
ZGVsLiBDYWxsaW5nIF9kZWwgd2l0aCBhbiBleHRlcm5hbCByZWYgY291bnQgPiAwLAotICAgIC8v
IHBvc3Rwb3NlcyBkZWxldGlvbiB1bnRpbCBpdCByZWFjaGVzIDAuCi0KLSAgICBpZiAoTElLRUxZ
KCEhcHRyKSkgewotICAgICAgICBpZiAoZXZhc19vYmplY3RfcmVmX2dldChwdHIpID4gMCkKLSAg
ICAgICAgICAgIGV2YXNfb2JqZWN0X3VucmVmKHB0cik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGV2YXNfb2JqZWN0X2RlbChwdHIpOwotICAgIH0KLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvZWZsL1JlZlB0ckVmbC5oIGIvU291cmNlL1dURi93dGYvZWZsL1JlZlB0ckVm
bC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzBlMDk0NDU1Y2NkOTg1MGFmNTlk
NjM0YWI1ZWIwZDYxZTRkNThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9SZWZQdHJFZmwuaAorKysgL2Rldi9udWxsCkBA
IC0xLDMyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ry
b25pY3MKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBSZWZQdHJFZmxfaAotI2RlZmluZSBSZWZQdHJFZmxf
aAotCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8PiB2b2lkIHJlZklmTm90TnVsbChFdmFzX09iamVjdCogcHRyKTsKLXRlbXBsYXRlPD4gdm9p
ZCBkZXJlZklmTm90TnVsbChFdmFzX09iamVjdCogcHRyKTsKLQotfQotCi0jZW5kaWYgLy8gUmVm
UHRyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJU
aGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwu
Y3BwCmluZGV4IGZhZDBkNTNmNzFlYTU2Y2ZkNWIyZjVlYjQ0ZGQ1MzliMGNjYzU1NDguLjJhNWVk
NTkwMjkxMGRiOGM2MDYxOGJjMmZhYjVjODM0ZjllN2RhZjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIFBh
c3NPd25QdHI8UmVuZGVyVGhlbWVFZmw6OlRoZW1lUGFydENhY2hlRW50cnk+IFJlbmRlclRoZW1l
RWZsOjpUaGVtZVBhcnRDYWNoZUVuCiAgICAgLy8gQnkgZGVmYXVsdCBFRkwgY3JlYXRlcyBidWZm
ZXJzIHdpdGhvdXQgYWxwaGEuCiAgICAgZWNvcmVfZXZhc19hbHBoYV9zZXQoZW50cnktPmNhbnZh
cygpLCBFSU5BX1RSVUUpOwogCi0gICAgZW50cnktPm1fZWRqZSA9IGFkb3B0UmVmKGVkamVfb2Jq
ZWN0X2FkZChlY29yZV9ldmFzX2dldChlbnRyeS0+Y2FudmFzKCkpKSk7CisgICAgZW50cnktPm1f
ZWRqZSA9IEVmbFVuaXF1ZVB0cjxFdmFzX09iamVjdD4oZWRqZV9vYmplY3RfYWRkKGVjb3JlX2V2
YXNfZ2V0KGVudHJ5LT5jYW52YXMoKSkpKTsKICAgICBBU1NFUlQoZW50cnktPmVkamUoKSk7CiAK
ICAgICBpZiAoIXNldFNvdXJjZUdyb3VwRm9yRWRqZU9iamVjdChlbnRyeS0+ZWRqZSgpLCB0aGVt
ZVBhdGgsIHRvRWRqZUdyb3VwKHR5cGUpKSkKQEAgLTQ4MCw3ICs0ODAsNyBAQCBib29sIFJlbmRl
clRoZW1lRWZsOjpsb2FkVGhlbWUoKQogICAgICAgICAgICAgICAgICJDb3VsZCBub3QgY3JlYXRl
IGNhbnZhcyByZXF1aXJlZCBieSB0aGVtZSwgdGhpbmdzIHdpbGwgbm90IHdvcmsgcHJvcGVybHku
Iik7CiAgICAgfQogCi0gICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBvID0gYWRvcHRSZWYoZWRqZV9v
YmplY3RfYWRkKGVjb3JlX2V2YXNfZ2V0KGNhbnZhcygpKSkpOworICAgIEVmbFVuaXF1ZVB0cjxF
dmFzX09iamVjdD4gbyA9IEVmbFVuaXF1ZVB0cjxFdmFzX09iamVjdD4oZWRqZV9vYmplY3RfYWRk
KGVjb3JlX2V2YXNfZ2V0KGNhbnZhcygpKSkpOwogICAgIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRV
Uk5fVkFMKG8sIGZhbHNlLCAiQ291bGQgbm90IGNyZWF0ZSBuZXcgYmFzZSBFZGplIG9iamVjdC4i
KTsKIAogICAgIGlmICghc2V0U291cmNlR3JvdXBGb3JFZGplT2JqZWN0KG8uZ2V0KCksIG1fdGhl
bWVQYXRoLCAid2Via2l0L2Jhc2UiKSkKQEAgLTQ5MSw3ICs0OTEsNyBAQCBib29sIFJlbmRlclRo
ZW1lRWZsOjpsb2FkVGhlbWUoKQogICAgICAgICBjbGVhclRoZW1lUGFydENhY2hlKCk7CiAKICAg
ICAvLyBTZXQgbmV3IGxvYWRlZCB0aGVtZSwgYW5kIGFwcGx5IGl0LgotICAgIG1fZWRqZSA9IG87
CisgICAgbV9lZGplID0gc3RkOjptb3ZlKG8pOwogCiAgICAgY29uc3QgY2hhciogdGhpY2tuZXNz
ID0gZWRqZV9vYmplY3RfZGF0YV9nZXQobV9lZGplLmdldCgpLCAic2Nyb2xsYmFyLnRoaWNrbmVz
cyIpOwogICAgIGlmICh0aGlja25lc3MgJiYgIVNldHRpbmdzOjptb2NrU2Nyb2xsYmFyc0VuYWJs
ZWQoKSkKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnRE
ZXNjcmlwdGlvbihFdmFzX09iamVjdCogb2JqZWN0LCBUaGVtZVBhcnREZXNjKiBkZQogCiB2b2lk
IFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbnNGcm9tKGNvbnN0IFN0cmluZyYg
dGhlbWVQYXRoKQogewotICAgIFJlZlB0cjxFdmFzX09iamVjdD4gdGVtcCA9IGFkb3B0UmVmKGVk
amVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChjYW52YXMoKSkpKTsKKyAgICBFZmxVbmlxdWVQ
dHI8RXZhc19PYmplY3Q+IHRlbXAgPSBFZmxVbmlxdWVQdHI8RXZhc19PYmplY3Q+KGVkamVfb2Jq
ZWN0X2FkZChlY29yZV9ldmFzX2dldChjYW52YXMoKSkpKTsKICAgICBfQVNTRVJUX09OX1JFTEVB
U0VfUkVUVVJOKHRlbXAsICJDb3VsZCBub3QgY3JlYXRlIEVkamUgb2JqZWN0LiIpOwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBGb3JtVHlwZUxhc3Q7IGkrKykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCA2MDM5ZTljNTQ0ZDE0MTQ0
MjVkMGQ5M2M3NDQ2MmYxMGQ4YjE1MTUyLi44N2E1MGMxODVjNGIyYmI4MDY0NGFmNGE5YjdkYjkz
NzIxNTNlNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVy
VGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPGNh
aXJvLmg+Ci0jaW5jbHVkZSA8d3RmL2VmbC9SZWZQdHJFZmwuaD4KICNpbmNsdWRlIDx3dGYvZWZs
L1VuaXF1ZVB0ckVmbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMTQsNyArMjEzLDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV90aGVtZVBhdGg7CiAgICAgLy8gT3JkZXIgc28gdGhh
dCB0aGUgY2FudmFzIGdldHMgZGVzdHJveWVkIGF0IGxhc3QuCiAgICAgRWZsVW5pcXVlUHRyPEVj
b3JlX0V2YXM+IG1fY2FudmFzOwotICAgIFJlZlB0cjxFdmFzX09iamVjdD4gbV9lZGplOworICAg
IEVmbFVuaXF1ZVB0cjxFdmFzX09iamVjdD4gbV9lZGplOwogCiAgICAgYm9vbCBtX3N1cHBvcnRz
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogCkBAIC0yNDEsNyArMjQwLDcgQEAgcHJpdmF0ZToK
ICAgICBwcml2YXRlOgogICAgICAgICAvLyBPcmRlciBzbyB0aGF0IHRoZSBjYW52YXMgZ2V0cyBk
ZXN0cm95ZWQgYXQgbGFzdC4KICAgICAgICAgRWZsVW5pcXVlUHRyPEVjb3JlX0V2YXM+IG1fY2Fu
dmFzOwotICAgICAgICBSZWZQdHI8RXZhc19PYmplY3Q+IG1fZWRqZTsKKyAgICAgICAgRWZsVW5p
cXVlUHRyPEV2YXNfT2JqZWN0PiBtX2VkamU7CiAgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IG1fc3VyZmFjZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvQ2Fpcm9VdGlsaXRpZXNFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0NhaXJvVXRpbGl0aWVzRWZsLmNwcAppbmRleCA2NzlmNTll
M2E0MTMyODNjNjVlMTAwOGU2MmFiZDZkNDlkMDEwODNjLi5jNzFkMDc4MjM1ZmIyMjg0MzJkZjFi
ZjE4Yjg3YTA3NmZlZjRhYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvQ2Fpcm9VdGlsaXRpZXNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9DYWlyb1V0aWxpdGllc0VmbC5jcHAKQEAgLTI1LDcgKzI1LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEV2YXNfT2JqZWN0PiBldmFz
T2JqZWN0RnJvbUNhaXJvSW1hZ2VTdXJmYWNlKEV2YXMqIGNhbnZhcywgY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlKQorRWZsVW5pcXVlUHRyPEV2YXNfT2JqZWN0PiBldmFzT2JqZWN0RnJvbUNhaXJv
SW1hZ2VTdXJmYWNlKEV2YXMqIGNhbnZhcywgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzdXJmYWNlLCAwKTsKQEAgLTMzLDIxICszMywyMSBA
QCBQYXNzUmVmUHRyPEV2YXNfT2JqZWN0PiBldmFzT2JqZWN0RnJvbUNhaXJvSW1hZ2VTdXJmYWNl
KEV2YXMqIGNhbnZhcywgY2Fpcm9fc3VyZgogICAgIGNhaXJvX3N0YXR1c190IHN0YXR1cyA9IGNh
aXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpOwogICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RB
VFVTX1NVQ0NFU1MpIHsKICAgICAgICAgRUlOQV9MT0dfRVJSKCJjYWlybyBzdXJmYWNlIGlzIGlu
dmFsaWQ6ICVzIiwgY2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGNhaXJvX3N1cmZh
Y2VfdHlwZV90IHR5cGUgPSBjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpOwogICAgIGlm
ICh0eXBlICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkgewogICAgICAgICBFSU5BX0xPR19F
UlIoInVua25vd24gc3VyZmFjZSB0eXBlICVkLCByZXF1aXJlZCAlZCAoQ0FJUk9fU1VSRkFDRV9U
WVBFX0lNQUdFKS4iLAogICAgICAgICAgICAgdHlwZSwgQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdF
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAog
ICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1h
dChzdXJmYWNlKTsKICAgICBpZiAoZm9ybWF0ICE9IENBSVJPX0ZPUk1BVF9BUkdCMzIgJiYgZm9y
bWF0ICE9IENBSVJPX0ZPUk1BVF9SR0IyNCkgewogICAgICAgICBFSU5BX0xPR19FUlIoInVua25v
d24gc3VyZmFjZSBmb3JtYXQgJWQsIGV4cGVjdGVkICVkIG9yICVkLiIsCiAgICAgICAgICAgICBm
b3JtYXQsIENBSVJPX0ZPUk1BVF9BUkdCMzIsIENBSVJPX0ZPUk1BVF9SR0IyNCk7Ci0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpbnQgd2lk
dGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKQEAgLTU1LDE5ICs1
NSwxOSBAQCBQYXNzUmVmUHRyPEV2YXNfT2JqZWN0PiBldmFzT2JqZWN0RnJvbUNhaXJvSW1hZ2VT
dXJmYWNlKEV2YXMqIGNhbnZhcywgY2Fpcm9fc3VyZgogICAgIGludCBzdHJpZGUgPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAgICAgaWYgKHdpZHRoIDw9IDAgfHwg
aGVpZ2h0IDw9IDAgfHwgc3RyaWRlIDw9IDApIHsKICAgICAgICAgRUlOQV9MT0dfRVJSKCJpbnZh
bGlkIGltYWdlIHNpemUgJWR4JWQsIHN0cmlkZT0lZCIsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSk7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAg
ICB2b2lkKiBkYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKTsKICAg
ICBpZiAoIWRhdGEpIHsKICAgICAgICAgRUlOQV9MT0dfRVJSKCJjb3VsZCBub3QgZ2V0IHNvdXJj
ZSBkYXRhLiIpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBpbWFnZSA9IGFkb3B0UmVmKGV2YXNfb2Jq
ZWN0X2ltYWdlX2ZpbGxlZF9hZGQoY2FudmFzKSk7CisgICAgRWZsVW5pcXVlUHRyPEV2YXNfT2Jq
ZWN0PiBpbWFnZSA9IEVmbFVuaXF1ZVB0cjxFdmFzX09iamVjdD4oZXZhc19vYmplY3RfaW1hZ2Vf
ZmlsbGVkX2FkZChjYW52YXMpKTsKICAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgIEVJTkFfTE9H
X0VSUigiY291bGQgbm90IGFkZCBpbWFnZSB0byBjYW52YXMuIik7Ci0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBldmFzX29iamVjdF9pbWFn
ZV9jb2xvcnNwYWNlX3NldChpbWFnZS5nZXQoKSwgRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4KTsK
QEAgLTc3LDEyICs3NywxMiBAQCBQYXNzUmVmUHRyPEV2YXNfT2JqZWN0PiBldmFzT2JqZWN0RnJv
bUNhaXJvSW1hZ2VTdXJmYWNlKEV2YXMqIGNhbnZhcywgY2Fpcm9fc3VyZgogICAgIGlmIChldmFz
X29iamVjdF9pbWFnZV9zdHJpZGVfZ2V0KGltYWdlLmdldCgpKSAhPSBzdHJpZGUpIHsKICAgICAg
ICAgRUlOQV9MT0dfRVJSKCJldmFzJyBzdHJpZGUgJWQgZGl2ZXJnZXMgZnJvbSBjYWlybydzICVk
LiIsCiAgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9zdHJpZGVfZ2V0KGltYWdlLmdldCgp
KSwgc3RyaWRlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfY29weV9zZXQoaW1hZ2UuZ2V0KCks
IGRhdGEpOwogCi0gICAgcmV0dXJuIGltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3RkOjpt
b3ZlKGltYWdlKTsKIH0KIAogUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZVN1cmZh
Y2VGb3JCYWNraW5nU3RvcmUoRWNvcmVfRXZhcyogZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvQ2Fpcm9VdGlsaXRpZXNFZmwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9DYWlyb1V0aWxpdGllc0VmbC5oCmluZGV4IGQ2
ZDIxNjI4ZTdhMzdiYmUxNWJlOTY3ZTVjZjBiNDYzMDM3NzllZDQuLjZiY2I4NDM5YmI3ZDhiODJh
ZTY4ZmVjNjBkODYxZWQzNzQzZWViMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9DYWlyb1V0aWxpdGllc0VmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9DYWlyb1V0aWxpdGllc0VmbC5oCkBAIC0yMSwxNSArMjEs
MTMgQEAKICNpZm5kZWYgQ2Fpcm9VdGlsaXRpZXNFZmxfaAogI2RlZmluZSBDYWlyb1V0aWxpdGll
c0VmbF9oCiAKLSNpbmNsdWRlIDxFY29yZV9FdmFzLmg+Ci0jaW5jbHVkZSA8RXZhcy5oPgogI2lu
Y2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvZWZsL1JlZlB0ckVmbC5oPgorI2luY2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxFdmFzX09iamVjdD4gZXZhc09iamVj
dEZyb21DYWlyb0ltYWdlU3VyZmFjZShFdmFzKiBjYW52YXMsIGNhaXJvX3N1cmZhY2VfdCopOwor
RWZsVW5pcXVlUHRyPEV2YXNfT2JqZWN0PiBldmFzT2JqZWN0RnJvbUNhaXJvSW1hZ2VTdXJmYWNl
KEV2YXMqIGNhbnZhcywgY2Fpcm9fc3VyZmFjZV90Kik7CiBQYXNzUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gY3JlYXRlU3VyZmFjZUZvckJhY2tpbmdTdG9yZShFY29yZV9FdmFzKiBlZSk7CiBQYXNz
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlU3VyZmFjZUZvckltYWdlKEV2YXNfT2JqZWN0
KiBpbWFnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9JbWFnZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
SW1hZ2VFZmwuY3BwCmluZGV4IGEyNmYxNDg5YzY0YTgxYmM0ZTI0NTQ1NjBlYTNmZDA2NmUzMDRi
ZTMuLjA0ZDQwZTYzMWU0OGRiZWZkMjI4NGQ1ZTZjMTA0NWJmYjU2NjU4ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZsLmNwcApAQCAtNjYs
NyArNjYsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
Y29uc3QgY2hhciogbmFtZSkKIEV2YXNfT2JqZWN0KiBCaXRtYXBJbWFnZTo6Z2V0RXZhc09iamVj
dChFdmFzKiBldmFzKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIHJldHVybiBzdXJmYWNlID8gZXZhc09i
amVjdEZyb21DYWlyb0ltYWdlU3VyZmFjZShldmFzLCBzdXJmYWNlLmdldCgpKS5sZWFrUmVmKCkg
OiAwOworICAgIHJldHVybiBzdXJmYWNlID8gZXZhc09iamVjdEZyb21DYWlyb0ltYWdlU3VyZmFj
ZShldmFzLCBzdXJmYWNlLmdldCgpKS5yZWxlYXNlKCkgOiBudWxscHRyOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDI1NjA1OGRkMzI4OTI3NTdhODVkYWE1NDViYWUzNmY1
ZTgzMDVmZTMuLmM4MjczODRiMGRjNmYyODAxZDE1Y2RhOWU0OGI0OTQ4NzcwY2EzNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC00ODAsNyArNDgwLDYgQEAgc2V0KEVXSzJVbml0VGVz
dHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfb2JqZWN0CiAgICAgdGVzdF9ld2syX3BhZ2VfZ3Jv
dXAKICAgICB0ZXN0X2V3azJfcG9wdXBfbWVudQotICAgIHRlc3RfZXdrMl9yZWZwdHJfZXZhc19v
YmplY3QKICAgICB0ZXN0X2V3azJfc2V0dGluZ3MKICAgICB0ZXN0X2V3azJfc3NsCiAgICAgdGVz
dF9ld2syX3N0b3JhZ2VfbWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmNwcAppbmRleCBhYzllMzBhYTEzMDU4YWUyZTdiOGUzNjNjMmY1ZWZjM2RkZDA3
MWRkLi44NmFiZmJhYWYzOWQ3YmQ1MjMzYTE0Y2VjY2U4NTg2NDU0NzA1MWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtNDEzLDcgKzQxMyw3
IEBAIHZvaWQgRXdrVmlldzo6dXBkYXRlQ3Vyc29yKCkKICAgICAgICAgaWYgKCFjdXJzb3JJbWFn
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSZWZQdHI8RXZhc19PYmplY3Q+IGN1
cnNvck9iamVjdCA9IGFkb3B0UmVmKGN1cnNvckltYWdlLT5nZXRFdmFzT2JqZWN0KHNkLT5iYXNl
LmV2YXMpKTsKKyAgICAgICAgRWZsVW5pcXVlUHRyPEV2YXNfT2JqZWN0PiBjdXJzb3JPYmplY3Qg
PSBFZmxVbmlxdWVQdHI8RXZhc19PYmplY3Q+KGN1cnNvckltYWdlLT5nZXRFdmFzT2JqZWN0KHNk
LT5iYXNlLmV2YXMpKTsKICAgICAgICAgaWYgKCFjdXJzb3JPYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIEV3a1ZpZXc6OnVwZGF0ZUN1cnNvcigp
CiAKICAgICAgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFz
X2dldChzZC0+YmFzZS5ldmFzKTsKICAgICAgICAgLy8gZWNvcmVfZXZhcyB0YWtlcyBjYXJlIG9m
IGZyZWVpbmcgdGhlIGN1cnNvciBvYmplY3QuCi0gICAgICAgIGVjb3JlX2V2YXNfb2JqZWN0X2N1
cnNvcl9zZXQoZWNvcmVFdmFzLCBjdXJzb3JPYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSwgRVZB
U19MQVlFUl9NQVgsIGhvdFNwb3QueCgpLCBob3RTcG90LnkoKSk7CisgICAgICAgIGVjb3JlX2V2
YXNfb2JqZWN0X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCBjdXJzb3JPYmplY3QucmVsZWFzZSgpLCBF
VkFTX0xBWUVSX01BWCwgaG90U3BvdC54KCksIGhvdFNwb3QueSgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgRXdrVmlldzo6dXBkYXRlQ3Vyc29y
KCkKICAgICBpZiAoIWdyb3VwKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RXZhc19P
YmplY3Q+IGN1cnNvck9iamVjdCA9IGFkb3B0UmVmKGVkamVfb2JqZWN0X2FkZChzZC0+YmFzZS5l
dmFzKSk7CisgICAgRWZsVW5pcXVlUHRyPEV2YXNfT2JqZWN0PiBjdXJzb3JPYmplY3QgPSBFZmxV
bmlxdWVQdHI8RXZhc19PYmplY3Q+KGVkamVfb2JqZWN0X2FkZChzZC0+YmFzZS5ldmFzKSk7CiAK
ICAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KHNk
LT5iYXNlLmV2YXMpOwogICAgIGlmICghbV90aGVtZSB8fCAhZWRqZV9vYmplY3RfZmlsZV9zZXQo
Y3Vyc29yT2JqZWN0LmdldCgpLCBtX3RoZW1lLCBncm91cCkpIHsKQEAgLTQ3MCw3ICs0NzAsNyBA
QCB2b2lkIEV3a1ZpZXc6OnVwZGF0ZUN1cnNvcigpCiAgICAgICAgIGhvdHNwb3RZID0gYXRvaShk
YXRhKTsKIAogICAgIC8vIGVjb3JlX2V2YXMgdGFrZXMgY2FyZSBvZiBmcmVlaW5nIHRoZSBjdXJz
b3Igb2JqZWN0LgotICAgIGVjb3JlX2V2YXNfb2JqZWN0X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCBj
dXJzb3JPYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSwgRVZBU19MQVlFUl9NQVgsIGhvdHNwb3RY
LCBob3RzcG90WSk7CisgICAgZWNvcmVfZXZhc19vYmplY3RfY3Vyc29yX3NldChlY29yZUV2YXMs
IGN1cnNvck9iamVjdC5yZWxlYXNlKCksIEVWQVNfTEFZRVJfTUFYLCBob3RzcG90WCwgaG90c3Bv
dFkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCAyZjRmYzgw
MjA2NTNkYWVlZjU0OGU2OGRhNDdhODFhMmJhYjUyZmNlLi5mNTkxMTYwOTY2OGMyOGRjOTE2ZmQ3
ZThmMGJmZmRiMjk0OTVkNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRXdrVmlld0NhbGxiYWNrcy5o
IgogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiUmVmUHRyRWZsLmgiCiAjaW5j
bHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNp
bmNsdWRlICJXZWJWaWV3RWZsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9TbmFwc2hvdEltYWdlR0wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNwcAppbmRleCBlZmQyNjE5NDhiOTNiM2JiYmYyM2Uz
OTljNTYyMjRjMjBiYThkMDYxLi4zNGE2N2JmYWQ4Y2M3MGYxMmIzNzQwZWQzMmEzNzViMmRiZjg5
MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hv
dEltYWdlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBz
aG90SW1hZ2VHTC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTbmFwc2hvdEltYWdlR0wuaCIKIAorI2luY2x1ZGUgPGNhaXJvLmg+CisKICNpZiBV
U0UoT1BFTkdMX0VTXzIpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjaW5jbHVkZSA8R0xFUzIv
Z2wyZXh0Lmg+CkBAIC0zMyw4ICszNSw2IEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNl
bmRpZgogCi0jaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllc0VmbC5oPgotCiBQYXNzUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gZ2V0SW1hZ2VTdXJmYWNlRnJvbUZyYW1lQnVmZmVyKGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShD
QUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmF2aWNvbl9kYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmF2aWNvbl9kYXRhYmFzZS5jcHAKaW5k
ZXggNDJkNjk4NDczZGJlYzJjODVkZDc1ZDVhMGVkZjk5MGQ0MDk3OTE1ZS4uNTI4MGI2MzE1NDU2
MmMzNjdjNzIwOWIwZjRjZDAxMzczODMxMGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zhdmljb25fZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIEV2YXNfT2JqZWN0KiBld2tfZmF2aWNvbl9kYXRhYmFzZV9pY29uX2dldChF
d2tfRmF2aWNvbl9EYXRhYmFzZSogZXdrSWNvbkRhdGFiYXNlCiAgICAgaWYgKCFzdXJmYWNlKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBXZWJDb3JlOjpldmFzT2JqZWN0RnJvbUNh
aXJvSW1hZ2VTdXJmYWNlKGV2YXMsIHN1cmZhY2UuZ2V0KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6ZXZhc09iamVjdEZyb21DYWlyb0ltYWdlU3VyZmFjZShldmFzLCBzdXJmYWNl
LmdldCgpKS5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgZXdrX2Zhdmljb25fZGF0YWJhc2VfaWNvbl9j
aGFuZ2VfY2FsbGJhY2tfYWRkKEV3a19GYXZpY29uX0RhdGFiYXNlKiBld2tJY29uRGF0YWJhc2Us
IEV3a19GYXZpY29uX0RhdGFiYXNlX0ljb25fQ2hhbmdlX0NiIGNhbGxiYWNrLCB2b2lkKiB1c2Vy
RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl9yZWZwdHJfZXZhc19vYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3JlZnB0cl9ldmFzX29iamVjdC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2OTg0NGYyNTY1YTI4NTcwYjFjZTg4NmEzZDVkNmRk
YWRjMWU1ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3JlZnB0cl9l
dmFzX29iamVjdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmgiCi0jaW5jbHVkZSA8d3RmL2VmbC9SZWZQdHJFZmwuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdDsKLQotZXh0ZXJuIEVXSzJVbml0VGVzdEVudmly
b25tZW50KiBlbnZpcm9ubWVudDsKLQotVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGNvbnN0cnVj
dGlvbikKLXsKLSAgICBSZWZQdHI8RXZhc19PYmplY3Q+IG51bGxPYmplY3QgPSAwOwotICAgIEFT
U0VSVF9GQUxTRShudWxsT2JqZWN0KTsKLQotICAgIFJlZlB0cjxFdmFzX09iamVjdD4gb2JqZWN0
OwotICAgIEFTU0VSVF9GQUxTRShvYmplY3QpOwotCi0gICAgb2JqZWN0ID0gYWRvcHRSZWYoZXZh
c19vYmplY3RfYm94X2FkZChjYW52YXMoKSkpOwotICAgIEFTU0VSVF9UUlVFKG9iamVjdCk7Ci0K
LSAgICBvYmplY3QgPSAwOwotICAgIEFTU0VSVF9GQUxTRShvYmplY3QpOwotCi0gICAgb2JqZWN0
ID0gYWRvcHRSZWYoZXZhc19vYmplY3RfYm94X2FkZChjYW52YXMoKSkpOwotICAgIEFTU0VSVF9U
UlVFKG9iamVjdCk7Ci0KLSAgICBvYmplY3QuY2xlYXIoKTsKLSAgICBBU1NFUlRfRkFMU0Uob2Jq
ZWN0KTsKLX0KLQotVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIHJlZmZpbmcpCi17Ci0gICAgUmVm
UHRyPEV2YXNfT2JqZWN0PiBvYmplY3QgPSBhZG9wdFJlZihldmFzX29iamVjdF9ib3hfYWRkKGNh
bnZhcygpKSk7Ci0gICAgQVNTRVJUX1RSVUUob2JqZWN0KTsKLSAgICAvLyBFdmFzX09iamVjIGV4
dGVybmFsIHJlZiBjb3VudCBpcyBub3QgYXMgeW91IHdvdWxkIGV4cGVjdC4KLSAgICBBU1NFUlRf
RVEoMCwgZXZhc19vYmplY3RfcmVmX2dldChvYmplY3QuZ2V0KCkpKTsKLQotICAgIHsKLSAgICAg
ICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBhUmVmID0gb2JqZWN0OwotICAgICAgICBBU1NFUlRfVFJV
RShvYmplY3QpOwotICAgICAgICBBU1NFUlRfVFJVRShhUmVmKTsKLSAgICAgICAgQVNTRVJUX0VR
KDEsIGV2YXNfb2JqZWN0X3JlZl9nZXQob2JqZWN0LmdldCgpKSk7Ci0gICAgICAgIEFTU0VSVF9F
USgxLCBldmFzX29iamVjdF9yZWZfZ2V0KGFSZWYuZ2V0KCkpKTsKLQotICAgICAgICB7Ci0gICAg
ICAgICAgICBSZWZQdHI8RXZhc19PYmplY3Q+IGJSZWYgPSBvYmplY3Q7Ci0KLSAgICAgICAgICAg
IEFTU0VSVF9UUlVFKG9iamVjdCk7Ci0gICAgICAgICAgICBBU1NFUlRfVFJVRShhUmVmKTsKLSAg
ICAgICAgICAgIEFTU0VSVF9UUlVFKGJSZWYpOwotCi0gICAgICAgICAgICBBU1NFUlRfRVEoMiwg
ZXZhc19vYmplY3RfcmVmX2dldChvYmplY3QuZ2V0KCkpKTsKLSAgICAgICAgICAgIEFTU0VSVF9F
USgyLCBldmFzX29iamVjdF9yZWZfZ2V0KGFSZWYuZ2V0KCkpKTsKLQotICAgICAgICAgICAgUmVm
UHRyPEV2YXNfT2JqZWN0PiBjUmVmID0gYlJlZjsKLSAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNS
ZWYpOwotCi0gICAgICAgICAgICBBU1NFUlRfRVEoMywgZXZhc19vYmplY3RfcmVmX2dldChvYmpl
Y3QuZ2V0KCkpKTsKLSAgICAgICAgICAgIEFTU0VSVF9FUSgzLCBldmFzX29iamVjdF9yZWZfZ2V0
KGFSZWYuZ2V0KCkpKTsKLSAgICAgICAgICAgIEFTU0VSVF9FUSgzLCBldmFzX29iamVjdF9yZWZf
Z2V0KGJSZWYuZ2V0KCkpKTsKLSAgICAgICAgICAgIEFTU0VSVF9FUSgzLCBldmFzX29iamVjdF9y
ZWZfZ2V0KGNSZWYuZ2V0KCkpKTsKLQotICAgICAgICAgICAgYlJlZi5jbGVhcigpOwotICAgICAg
ICAgICAgQVNTRVJUX0VRKDIsIGV2YXNfb2JqZWN0X3JlZl9nZXQob2JqZWN0LmdldCgpKSk7Ci0g
ICAgICAgICAgICBBU1NFUlRfRVEoMiwgZXZhc19vYmplY3RfcmVmX2dldChhUmVmLmdldCgpKSk7
Ci0gICAgICAgICAgICBBU1NFUlRfRVEoMiwgZXZhc19vYmplY3RfcmVmX2dldChjUmVmLmdldCgp
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX0VRKDEsIGV2YXNfb2JqZWN0X3JlZl9nZXQo
b2JqZWN0LmdldCgpKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgxLCBldmFzX29iamVjdF9yZWZfZ2V0
KGFSZWYuZ2V0KCkpKTsKLSAgICB9Ci0gICAgQVNTRVJUX0VRKDAsIGV2YXNfb2JqZWN0X3JlZl9n
ZXQob2JqZWN0LmdldCgpKSk7Ci19Ci0KLVRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBkZXN0cnVj
dGlvbikKLXsKLSAgICBSZWZQdHI8RXZhc19PYmplY3Q+IG9iamVjdCA9IGFkb3B0UmVmKGV2YXNf
b2JqZWN0X2JveF9hZGQoY2FudmFzKCkpKTsKLSAgICBBU1NFUlRfVFJVRShvYmplY3QpOwotICAg
IEFTU0VSVF9FUSgwLCBldmFzX29iamVjdF9yZWZfZ2V0KG9iamVjdC5nZXQoKSkpOwotCi0gICAg
UmVmUHRyPEV2YXNfT2JqZWN0PiBhUmVmID0gb2JqZWN0OwotICAgIEFTU0VSVF9UUlVFKG9iamVj
dCk7Ci0gICAgQVNTRVJUX1RSVUUoYVJlZik7Ci0gICAgQVNTRVJUX0VRKDEsIGV2YXNfb2JqZWN0
X3JlZl9nZXQob2JqZWN0LmdldCgpKSk7Ci0gICAgQVNTRVJUX0VRKDEsIGV2YXNfb2JqZWN0X3Jl
Zl9nZXQoYVJlZi5nZXQoKSkpOwotCi0gICAgb2JqZWN0ID0gbnVsbHB0cjsKLSAgICBBU1NFUlRf
RVEoMCwgZXZhc19vYmplY3RfcmVmX2dldChvYmplY3QuZ2V0KCkpKTsKLSAgICBBU1NFUlRfRVEo
MCwgZXZhc19vYmplY3RfcmVmX2dldChhUmVmLmdldCgpKSk7Ci0KLSAgICBvYmplY3QgPSBhUmVm
OwotICAgIEFTU0VSVF9FUSgxLCBldmFzX29iamVjdF9yZWZfZ2V0KG9iamVjdC5nZXQoKSkpOwot
ICAgIEFTU0VSVF9FUSgxLCBldmFzX29iamVjdF9yZWZfZ2V0KGFSZWYuZ2V0KCkpKTsKLQotICAg
IG9iamVjdCA9IDA7Ci0gICAgQVNTRVJUX0VRKDAsIGV2YXNfb2JqZWN0X3JlZl9nZXQob2JqZWN0
LmdldCgpKSk7Ci0gICAgQVNTRVJUX0VRKDAsIGV2YXNfb2JqZWN0X3JlZl9nZXQoYVJlZi5nZXQo
KSkpOwotCi0gICAgYVJlZi5jbGVhcigpOwotICAgIEFTU0VSVF9GQUxTRShhUmVmKTsKLSAgICBB
U1NFUlRfRkFMU0Uob2JqZWN0KTsKLX0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEwZDI0MzFiM2VjNzQxZGE1MzIyZGI5OTdmN2RkMzZlZTQx
MDk5NDcuLjAyZjA4NTVjOGE5ZDdkNDc3ZWVjMDE4OGE5N2JmNTFlOTYwMzA2YmIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxNC0wNi0yMyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gUmVwbGFjZSBSZWZQdHI8RXZhc19PYmplY3Q+IHRvIFVuaXF1ZVB0ckVmbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MjM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBJbWFnZURp
ZmYvZWZsL0ltYWdlRGlmZi5jcHA6CisgICAgICAgIChjYWxjdWxhdGVEaWZmZXJlbmNlKToKKyAg
ICAgICAgKHByaW50SW1hZ2VEaWZmZXJlbmNlcyk6CisgICAgICAgIChyZWFkSW1hZ2VGcm9tU3Rk
aW4pOgorICAgICAgICAobWFpbik6CisKIDIwMTQtMDYtMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHRoZSBXZWIgSW5zcGVjdG9yIGlu
IE1pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9JbWFnZURpZmYvZWZsL0ltYWdlRGlmZi5j
cHAgYi9Ub29scy9JbWFnZURpZmYvZWZsL0ltYWdlRGlmZi5jcHAKaW5kZXggNDQ1MWNkMjgwZDA2
ODU4ZTBkOWM4MjEwNjlkNGVkYWFkY2VmNTdjOS4uNGZlMzI5OWIwN2RlNWRhZGU3YzY4MTcxODJm
ODg2ODU1ZThjYjFlYSAxMDA2NDQKLS0tIGEvVG9vbHMvSW1hZ2VEaWZmL2VmbC9JbWFnZURpZmYu
Y3BwCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9lZmwvUmVmUHRyRWZs
Lmg+CiAjaW5jbHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJFZmwuaD4KIAogZW51bSBQaXhlbENvbXBv
bmVudCB7CkBAIC0xMDcsNyArMTA2LDcgQEAgc3RhdGljIGZsb2F0IGNhbGN1bGF0ZVBpeGVsRGlm
ZmVyZW5jZSh1bnNpZ25lZCBjaGFyKiBiYXNlUGl4ZWwsIHVuc2lnbmVkIGNoYXIqIGEKICAgICBy
ZXR1cm4gc3FydGYocmVkICogcmVkICsgZ3JlZW4gKiBncmVlbiArIGJsdWUgKiBibHVlICsgYWxw
aGEgKiBhbHBoYSkgLyAyLjBmOwogfQogCi1zdGF0aWMgZmxvYXQgY2FsY3VsYXRlRGlmZmVyZW5j
ZShFdmFzX09iamVjdCogYmFzZWxpbmVJbWFnZSwgRXZhc19PYmplY3QqIGFjdHVhbEltYWdlLCBS
ZWZQdHI8RXZhc19PYmplY3Q+JiBkaWZmZXJlbmNlSW1hZ2UpCitzdGF0aWMgZmxvYXQgY2FsY3Vs
YXRlRGlmZmVyZW5jZShFdmFzX09iamVjdCogYmFzZWxpbmVJbWFnZSwgRXZhc19PYmplY3QqIGFj
dHVhbEltYWdlLCBFZmxVbmlxdWVQdHI8RXZhc19PYmplY3Q+JiBkaWZmZXJlbmNlSW1hZ2UpCiB7
CiAgICAgaW50IHdpZHRoLCBoZWlnaHQsIGJhc2VsaW5lV2lkdGgsIGJhc2VsaW5lSGVpZ2h0Owog
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KGFjdHVhbEltYWdlLCAmd2lkdGgsICZoZWln
aHQpOwpAQCAtMTY0LDcgKzE2Myw3IEBAIHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVEaWZmZXJlbmNl
KEV2YXNfT2JqZWN0KiBiYXNlbGluZUltYWdlLCBFdmFzX09iamVjdCogYWN0dWFsCiAgICAgICAg
IGRpZmZlcmVuY2UgPSByb3VuZGYoZGlmZmVyZW5jZSAqIDEwMC4wZikgLyAxMDAuMGY7CiAgICAg
ICAgIGRpZmZlcmVuY2UgPSBzdGQ6Om1heChkaWZmZXJlbmNlLCAwLjAxZik7IC8vIHJvdW5kIHRv
IDIgZGVjaW1hbCBwbGFjZXMKIAotICAgICAgICBkaWZmZXJlbmNlSW1hZ2UgPSBhZG9wdFJlZihk
aWZmZXJlbmNlSW1hZ2VGcm9tRGlmZmVyZW5jZUJ1ZmZlcihldmFzX29iamVjdF9ldmFzX2dldChi
YXNlbGluZUltYWdlKSwgZGlmZkJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCkpOworICAgICAg
ICBkaWZmZXJlbmNlSW1hZ2UgPSBFZmxVbmlxdWVQdHI8RXZhc19PYmplY3Q+KGRpZmZlcmVuY2VJ
bWFnZUZyb21EaWZmZXJlbmNlQnVmZmVyKGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJhc2VsaW5lSW1h
Z2UpLCBkaWZmQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGRpZmZlcmVuY2U7CkBAIC0yMjcsNyArMjI2LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRJbWFn
ZShFdmFzX09iamVjdCogaW1hZ2UpCiAKIHN0YXRpYyB2b2lkIHByaW50SW1hZ2VEaWZmZXJlbmNl
cyhFdmFzX09iamVjdCogYmFzZWxpbmVJbWFnZSwgRXZhc19PYmplY3QqIGFjdHVhbEltYWdlKQog
ewotICAgIFJlZlB0cjxFdmFzX09iamVjdD4gZGlmZmVyZW5jZUltYWdlOworICAgIEVmbFVuaXF1
ZVB0cjxFdmFzX09iamVjdD4gZGlmZmVyZW5jZUltYWdlOwogICAgIGNvbnN0IGZsb2F0IGRpZmZl
cmVuY2UgPSBjYWxjdWxhdGVEaWZmZXJlbmNlKGJhc2VsaW5lSW1hZ2UsIGFjdHVhbEltYWdlLCBk
aWZmZXJlbmNlSW1hZ2UpOwogCiAgICAgaWYgKGRpZmZlcmVuY2UgPiAwLjBmKSB7CkBAIC0yNTUs
NyArMjU0LDcgQEAgc3RhdGljIHZvaWQgcmVzaXplRWNvcmVFdmFzSWZOZWVkZWQoRXZhc19PYmpl
Y3QqIGltYWdlKQogICAgIGVjb3JlX2V2YXNfcmVzaXplKGdFY29yZUV2YXMuZ2V0KCksIGN1cnJl
bnRXaWR0aCwgY3VycmVudEhlaWdodCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEV2YXNfT2Jq
ZWN0PiByZWFkSW1hZ2VGcm9tU3RkaW4oRXZhcyogZXZhcywgbG9uZyBpbWFnZVNpemUpCitzdGF0
aWMgRWZsVW5pcXVlUHRyPEV2YXNfT2JqZWN0PiByZWFkSW1hZ2VGcm9tU3RkaW4oRXZhcyogZXZh
cywgbG9uZyBpbWFnZVNpemUpCiB7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8dW5zaWduZWQgY2hhcltdPihpbWFnZVNpemUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CkBAIC0yNjMsNyArMjYyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RXZhc19PYmplY3Q+IHJlYWRJ
bWFnZUZyb21TdGRpbihFdmFzKiBldmFzLCBsb25nIGltYWdlU2l6ZSkKIAogICAgIGNvbnN0IHNp
emVfdCBieXRlc1JlYWQgPSBmcmVhZChpbWFnZUJ1ZmZlci5nZXQoKSwgMSwgaW1hZ2VTaXplLCBz
dGRpbik7CiAgICAgaWYgKCFieXRlc1JlYWQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEV2
YXNfT2JqZWN0PigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEV2YXNfT2JqZWN0
KiBpbWFnZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9hZGQoZXZhcyk7CiAgICAgZXZhc19v
YmplY3RfaW1hZ2VfY29sb3JzcGFjZV9zZXQoaW1hZ2UsIEVWQVNfQ09MT1JTUEFDRV9BUkdCODg4
OCk7CkBAIC0yNzEsNyArMjcwLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RXZhc19PYmplY3Q+IHJl
YWRJbWFnZUZyb21TdGRpbihFdmFzKiBldmFzLCBsb25nIGltYWdlU2l6ZSkKIAogICAgIHJlc2l6
ZUVjb3JlRXZhc0lmTmVlZGVkKGltYWdlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZihpbWFnZSk7
CisgICAgcmV0dXJuIEVmbFVuaXF1ZVB0cjxFdmFzX09iamVjdD4oaW1hZ2UpOwogfQogCiBzdGF0
aWMgYm9vbCBwYXJzZUNvbW1hbmRMaW5lT3B0aW9ucyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCkBA
IC0zMzIsOCArMzMxLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIAogICAg
IEV2YXMqIGV2YXMgPSBpbml0RWZsKCk7CiAKLSAgICBSZWZQdHI8RXZhc19PYmplY3Q+IGFjdHVh
bEltYWdlOwotICAgIFJlZlB0cjxFdmFzX09iamVjdD4gYmFzZWxpbmVJbWFnZTsKKyAgICBFZmxV
bmlxdWVQdHI8RXZhc19PYmplY3Q+IGFjdHVhbEltYWdlOworICAgIEVmbFVuaXF1ZVB0cjxFdmFz
X09iamVjdD4gYmFzZWxpbmVJbWFnZTsKIAogICAgIGNoYXIgYnVmZmVyWzIwNDhdOwogICAgIHdo
aWxlIChmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBzdGRpbikpIHsKQEAgLTM1Miw4ICsz
NTEsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogCiAgICAgICAgICAgICAg
ICAgcHJpbnRJbWFnZURpZmZlcmVuY2VzKGJhc2VsaW5lSW1hZ2UuZ2V0KCksIGFjdHVhbEltYWdl
LmdldCgpKTsKIAotICAgICAgICAgICAgICAgIGFjdHVhbEltYWdlLmNsZWFyKCk7Ci0gICAgICAg
ICAgICAgICAgYmFzZWxpbmVJbWFnZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGFjdHVhbElt
YWdlLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVJbWFnZS5yZXNldCgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>