<?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>89838</bug_id>
          
          <creation_ts>2012-06-24 17:12:46 -0700</creation_ts>
          <short_desc>[WK2][Qt][EFL] Move LayerBackingStore into common directory</short_desc>
          <delta_ts>2012-06-25 06:16:49 -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>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89840</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="YoungTaeck Song">youngtaeck.song</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>seojin.kim</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>656273</commentid>
    <comment_count>0</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-06-24 17:12:46 -0700</bug_when>
    <thetext>Move LayerBackingStore into common directory ‘Source/WebKit2/UIProcess/’ to be used by both Qt and Efl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656274</commentid>
    <comment_count>1</comment_count>
      <attachid>149210</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-06-24 17:13:30 -0700</bug_when>
    <thetext>Created attachment 149210
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656323</commentid>
    <comment_count>2</comment_count>
      <attachid>149210</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-24 18:57:33 -0700</bug_when>
    <thetext>Comment on attachment 149210
patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Move LayerBackingStore into common directory âSource/WebKit2/UIProcess/â to be used by both Qt and Efl.

There are wrong characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656364</commentid>
    <comment_count>3</comment_count>
      <attachid>149233</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-06-24 20:46:14 -0700</bug_when>
    <thetext>Created attachment 149233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656367</commentid>
    <comment_count>4</comment_count>
      <attachid>149233</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-24 21:12:24 -0700</bug_when>
    <thetext>Comment on attachment 149233
Patch

This is TextureMapper specific, why don&apos;t we move it to UIProcess/texmap?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656398</commentid>
    <comment_count>5</comment_count>
      <attachid>149245</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-06-24 23:00:09 -0700</bug_when>
    <thetext>Created attachment 149245
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656482</commentid>
    <comment_count>6</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-06-25 04:41:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 149233 [details])
&gt; This is TextureMapper specific, why don&apos;t we move it to UIProcess/texmap?

Thanks for your kind review. :-)
I moved  LayerBackingStore under Source/WebKit2/UIProcess/texmap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656516</commentid>
    <comment_count>7</comment_count>
      <attachid>149245</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 06:16:41 -0700</bug_when>
    <thetext>Comment on attachment 149245
patch

Clearing flags on attachment: 149245

Committed r121151: &lt;http://trac.webkit.org/changeset/121151&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656517</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 06:16:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149210</attachid>
            <date>2012-06-24 17:13:30 -0700</date>
            <delta_ts>2012-06-24 20:46:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>Move-LayerBackingStore-into-common-directory.diff</filename>
            <type>text/plain</type>
            <size>19379</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3NmY0OGZkLi4yNjJkMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMDYtMjQgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBbV0syXVtRdF1bRUZMXSBNb3ZlIExheWVyQmFja2luZ1N0b3JlIGlu
dG8gY29tbW9uIGRpcmVjdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODk4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIExheWVyQmFja2luZ1N0b3JlIGludG8gY29tbW9uIGRpcmVjdG9yeSDi
gJhTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv4oCZIHRvIGJlIHVzZWQgYnkgYm90aCBRdCBhbmQg
RWZsLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJC
YWNraW5nU3RvcmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L0xheWVyQmFja2luZ1N0b3JlLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0
OjpMYXllckJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpMYXllckJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
QmFja2luZ1N0b3JlOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNraW5n
U3RvcmU6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZTo6
dGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlOjpwYWludFRvVGV4
dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlOjpjb21taXRU
aWxlT3BlcmF0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0xheWVyQmFja2luZ1N0b3JlLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJCYWNraW5nU3Rv
cmUuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChMYXllckJhY2tpbmdTdG9yZVRpbGUp
OgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZVRpbGU6OkxheWVyQmFja2luZ1N0
b3JlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlVGlsZTo6c2NhbGUp
OgorICAgICAgICAoTGF5ZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJh
Y2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNraW5nU3RvcmU6
OkxheWVyQmFja2luZ1N0b3JlKToKKwogMjAxMi0wNi0yNCAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTIwMzI5KTogSW50ZXJtaXR0ZW50
IFdlYlByb2Nlc3Mgc2h1dGRvd25zIGR1ZSB0byBvdXQtb2YtbGluZSBEaWRSZWNlaXZlRXZlbnQg
bWVzc2FnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCA3YjlhYjk5Li5lOWM3MjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
QEAgLTIxNCw2ICsyMTQsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaCBcCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL1RocmVhZExhdW5jaGVyLmgg
XAorICAgIFVJUHJvY2Vzcy9MYXllckJhY2tpbmdTdG9yZS5oIFwKICAgICBVSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXAogICAgIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggXApAQCAtMjczLDcgKzI3
NCw2IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdl
clByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQuaCBcCiAgICAg
VUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggXAotICAgIFVJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdT
dG9yZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmggXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVy
ZVJlY29nbml6ZXIuaCBcCkBAIC01NjYsNiArNTY2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQ
cm9jZXNzL0xhdW5jaGVyL1RocmVhZExhdW5jaGVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0xhdW5j
aGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL3F0
L1RocmVhZExhdW5jaGVyUXQuY3BwIFwKKyAgICBVSVByb2Nlc3MvTGF5ZXJCYWNraW5nU3RvcmUu
Y3BwIFwKICAgICBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBcCiAgICAgVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIFwKICAg
ICBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAgXApAQCAtNjI0LDcgKzYyNSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViVUlD
bGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNwcCBcCi0gICAgVUlQ
cm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZUV2ZW50SGFuZGxlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25p
emVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllckJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNraW5nU3RvcmUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYWZmZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNraW5nU3RvcmUuY3BwCkBAIC0wLDAg
KzEsMTQxIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheWVyQmFja2luZ1N0b3JlLmgiCisKKyNpZiBVU0Uo
VUlfU0lERV9DT01QT1NJVElORykKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIExheWVyQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZl
cnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcikKK3sKKyAgICBpZiAoIW1f
c3VyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IHRhcmdldFJlY3QobV90
YXJnZXRSZWN0KTsKKyAgICB0YXJnZXRSZWN0LnNjYWxlKDEuIC8gbV9zY2FsZSk7CisgICAgYm9v
bCBzaG91bGRSZXNldCA9IGZhbHNlOworICAgIGlmICh0YXJnZXRSZWN0ICE9IHJlY3QoKSkgewor
ICAgICAgICBzZXRSZWN0KHRhcmdldFJlY3QpOworICAgICAgICBzaG91bGRSZXNldCA9IHRydWU7
CisgICAgfQorICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdGhpcy0+dGV4dHVy
ZSgpOworICAgIGlmICghdGV4dHVyZSkgeworICAgICAgICB0ZXh0dXJlID0gdGV4dHVyZU1hcHBl
ci0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBzZXRUZXh0dXJlKHRleHR1cmUuZ2V0KCkpOwor
ICAgICAgICBzaG91bGRSZXNldCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKHNob3VsZFJlc2V0
KQorICAgICAgICB0ZXh0dXJlLT5yZXNldChtX3RhcmdldFJlY3Quc2l6ZSgpLCBtX3N1cmZhY2Ut
PmZsYWdzKCkgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgPyBCaXRtYXBUZXh0dXJl
OjpTdXBwb3J0c0FscGhhIDogMCk7CisKKyAgICBtX3N1cmZhY2UtPmNvcHlUb1RleHR1cmUodGV4
dHVyZSwgbV9zb3VyY2VSZWN0LCBtX3N1cmZhY2VPZmZzZXQpOworICAgIG1fc3VyZmFjZS5jbGVh
cigpOworfQorCit2b2lkIExheWVyQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25z
dCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBQYXNzUmVm
UHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKK3sK
KyAgICBtX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIG1fdGFyZ2V0UmVjdCA9IHRhcmdl
dFJlY3Q7CisgICAgbV9zdXJmYWNlT2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fc3VyZmFjZSA9IGJ1
ZmZlcjsKK30KKwordm9pZCBMYXllckJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZShpbnQgaWQsIGZs
b2F0IHNjYWxlKQoreworICAgIG1fdGlsZXMuYWRkKGlkLCBMYXllckJhY2tpbmdTdG9yZVRpbGUo
c2NhbGUpKTsKKyAgICBtX3NjYWxlID0gc2NhbGU7Cit9CisKK3ZvaWQgTGF5ZXJCYWNraW5nU3Rv
cmU6OnJlbW92ZVRpbGUoaW50IGlkKQoreworICAgIG1fdGlsZXNUb1JlbW92ZS5hcHBlbmQoaWQp
OworfQorCisKK3ZvaWQgTGF5ZXJCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUoaW50IGlkLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBQYXNzUmVm
UHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQp
Cit7CisgICAgSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0
ID0gbV90aWxlcy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7Cisg
ICAgaXQtPnNlY29uZC5zZXRCYWNrQnVmZmVyKHRhcmdldFJlY3QsIHNvdXJjZVJlY3QsIGJhY2tC
dWZmZXIsIG9mZnNldCk7Cit9CisKK1Bhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTGF5ZXJCYWNr
aW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAoreworICAgIEhhc2hNYXA8aW50LCBMYXllckJhY2tp
bmdTdG9yZVRpbGU+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOworICAgIGZv
ciAoSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEJp
dG1hcFRleHR1cmU+IHRleHR1cmUgPSBpdC0+c2Vjb25kLnRleHR1cmUoKTsKKyAgICAgICAgaWYg
KHRleHR1cmUpCisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICB9CisKKyAgICByZXR1
cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigpOworfQorCit2b2lkIExheWVyQmFja2luZ1N0
b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit7CisgICAgVmVj
dG9yPFRleHR1cmVNYXBwZXJUaWxlKj4gdGlsZXNUb1BhaW50OworCisgICAgLy8gV2UgaGF2ZSB0
byBkbyB0aGlzIGV2ZXJ5IHRpbWUgd2UgcGFpbnQsIGluIGNhc2UgdGhlIG9wYWNpdHkgaGFzIGNo
YW5nZWQuCisgICAgSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9y
IGVuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgRmxvYXRSZWN0IGNvdmVyZWRSZWN0OworICAgIGZv
ciAoSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90
aWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTGF5ZXJCYWNraW5nU3Rv
cmVUaWxlJiB0aWxlID0gaXQtPnNlY29uZDsKKyAgICAgICAgaWYgKCF0aWxlLnRleHR1cmUoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICh0aWxlLnNjYWxlKCkgPT0gbV9z
Y2FsZSkgeworICAgICAgICAgICAgdGlsZXNUb1BhaW50LmFwcGVuZCgmdGlsZSk7CisgICAgICAg
ICAgICBjb3ZlcmVkUmVjdC51bml0ZSh0aWxlLnJlY3QoKSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9ubHkgc2hvdyB0aGUgcHJldmlvdXMgdGlsZSBp
ZiB0aGUgb3BhY2l0eSBpcyBoaWdoLCBvdGhlcndpc2UgZWZmZWN0IGxvb2tzIGxpa2UgYSBidWcu
CisgICAgICAgIC8vIFdlIHNob3cgdGhlIHByZXZpb3VzLXNjYWxlIHRpbGUgYW55d2F5IGlmIGl0
IGRvZXNuJ3QgaW50ZXJzZWN0IHdpdGggYW55IGN1cnJlbnQtc2NhbGUgdGlsZS4KKyAgICAgICAg
aWYgKG9wYWNpdHkgPCAwLjk1ICYmIGNvdmVyZWRSZWN0LmludGVyc2VjdHModGlsZS5yZWN0KCkp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdGlsZXNUb1BhaW50LnByZXBlbmQo
JnRpbGUpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXNUb1BhaW50
LnNpemUoKTsgKytpKQorICAgICAgICB0aWxlc1RvUGFpbnRbaV0tPnBhaW50KHRleHR1cmVNYXBw
ZXIsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNraW5nU3Rv
cmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCit7
CisgICAgVmVjdG9yPGludD46Oml0ZXJhdG9yIHRpbGVzVG9SZW1vdmVFbmQgPSBtX3RpbGVzVG9S
ZW1vdmUuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVz
VG9SZW1vdmUuYmVnaW4oKTsgaXQgIT0gdGlsZXNUb1JlbW92ZUVuZDsgKytpdCkKKyAgICAgICAg
bV90aWxlcy5yZW1vdmUoKml0KTsKKyAgICBtX3RpbGVzVG9SZW1vdmUuY2xlYXIoKTsKKworICAg
IEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciB0aWxlc0VuZCA9
IG1fdGlsZXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVU
aWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IHRpbGVzRW5kOyArK2l0
KQorICAgICAgICBpdC0+c2Vjb25kLnN3YXBCdWZmZXJzKHRleHR1cmVNYXBwZXIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF5ZXJCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
M2UyMTliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVy
QmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgTGF5ZXJCYWNraW5nU3RvcmVfaAorI2RlZmluZSBMYXll
ckJhY2tpbmdTdG9yZV9oCisKKyNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykKKworI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFNoYXJlYWJsZVN1cmZhY2U7CisKK2NsYXNzIExheWVyQmFja2luZ1N0b3JlVGlsZSA6IHB1
YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSB7CitwdWJsaWM6CisgICAgTGF5ZXJCYWNr
aW5nU3RvcmVUaWxlKGZsb2F0IHNjYWxlID0gMSkKKyAgICAgICAgOiBUZXh0dXJlTWFwcGVyVGls
ZShXZWJDb3JlOjpGbG9hdFJlY3QoKSkKKyAgICAgICAgLCBtX3NjYWxlKHNjYWxlKQorICAgIHsK
KyAgICB9CisKKyAgICBpbmxpbmUgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxl
OyB9CisgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7CisgICAg
dm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZh
Y2U+IG1fc3VyZmFjZTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICBX
ZWJDb3JlOjpJbnRSZWN0IG1fdGFyZ2V0UmVjdDsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1
cmZhY2VPZmZzZXQ7CisgICAgZmxvYXQgbV9zY2FsZTsKK307CisKK2NsYXNzIExheWVyQmFja2lu
Z1N0b3JlIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgeworcHVi
bGljOgorICAgIHZvaWQgY3JlYXRlVGlsZShpbnQsIGZsb2F0KTsKKyAgICB2b2lkIHJlbW92ZVRp
bGUoaW50KTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUoaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJC
YWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckJhY2tpbmdT
dG9yZSk7IH0KKyAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXIqKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqKTsK
KworcHJpdmF0ZToKKyAgICBMYXllckJhY2tpbmdTdG9yZSgpCisgICAgICAgIDogbV9zY2FsZSgx
LikKKyAgICB7IH0KKyAgICBIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPiBtX3Rp
bGVzOworICAgIFZlY3RvcjxpbnQ+IG1fdGlsZXNUb1JlbW92ZTsKKyAgICBmbG9hdCBtX3NjYWxl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYKKworI2VuZGlmIC8vIExheWVy
QmFja2luZ1N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9M
YXllckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJC
YWNraW5nU3RvcmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWFmZmU5Li4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9y
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMp
IDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMYXll
ckJhY2tpbmdTdG9yZS5oIgotCi0jaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpCi0jaW5jbHVk
ZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKLSNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBMYXll
ckJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIpCi17Ci0gICAgaWYgKCFtX3N1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0KG1fdGFyZ2V0UmVjdCk7Ci0gICAgdGFyZ2V0UmVjdC5z
Y2FsZSgxLiAvIG1fc2NhbGUpOwotICAgIGJvb2wgc2hvdWxkUmVzZXQgPSBmYWxzZTsKLSAgICBp
ZiAodGFyZ2V0UmVjdCAhPSByZWN0KCkpIHsKLSAgICAgICAgc2V0UmVjdCh0YXJnZXRSZWN0KTsK
LSAgICAgICAgc2hvdWxkUmVzZXQgPSB0cnVlOwotICAgIH0KLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSA9IHRoaXMtPnRleHR1cmUoKTsKLSAgICBpZiAoIXRleHR1cmUpIHsKLSAg
ICAgICAgdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAg
c2V0VGV4dHVyZSh0ZXh0dXJlLmdldCgpKTsKLSAgICAgICAgc2hvdWxkUmVzZXQgPSB0cnVlOwot
ICAgIH0KLQotICAgIGlmIChzaG91bGRSZXNldCkKLSAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90
YXJnZXRSZWN0LnNpemUoKSwgbV9zdXJmYWNlLT5mbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpT
dXBwb3J0c0FscGhhID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOwotCi0gICAg
bV9zdXJmYWNlLT5jb3B5VG9UZXh0dXJlKHRleHR1cmUsIG1fc291cmNlUmVjdCwgbV9zdXJmYWNl
T2Zmc2V0KTsKLSAgICBtX3N1cmZhY2UuY2xlYXIoKTsKLX0KLQotdm9pZCBMYXllckJhY2tpbmdT
dG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBidWZmZXIs
IGNvbnN0IEludFBvaW50JiBvZmZzZXQpCi17Ci0gICAgbV9zb3VyY2VSZWN0ID0gc291cmNlUmVj
dDsKLSAgICBtX3RhcmdldFJlY3QgPSB0YXJnZXRSZWN0OwotICAgIG1fc3VyZmFjZU9mZnNldCA9
IG9mZnNldDsKLSAgICBtX3N1cmZhY2UgPSBidWZmZXI7Ci19Ci0KLXZvaWQgTGF5ZXJCYWNraW5n
U3RvcmU6OmNyZWF0ZVRpbGUoaW50IGlkLCBmbG9hdCBzY2FsZSkKLXsKLSAgICBtX3RpbGVzLmFk
ZChpZCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlKHNjYWxlKSk7Ci0gICAgbV9zY2FsZSA9IHNjYWxl
OwotfQotCi12b2lkIExheWVyQmFja2luZ1N0b3JlOjpyZW1vdmVUaWxlKGludCBpZCkKLXsKLSAg
ICBtX3RpbGVzVG9SZW1vdmUuYXBwZW5kKGlkKTsKLX0KLQotCi12b2lkIExheWVyQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlKGludCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBiYWNrQnVm
ZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQotewotICAgIEhhc2hNYXA8aW50LCBMYXllckJh
Y2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7Ci0gICAgQVNT
RVJUKGl0ICE9IG1fdGlsZXMuZW5kKCkpOwotICAgIGl0LT5zZWNvbmQuc2V0QmFja0J1ZmZlcih0
YXJnZXRSZWN0LCBzb3VyY2VSZWN0LCBiYWNrQnVmZmVyLCBvZmZzZXQpOwotfQotCi1QYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IExheWVyQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKLXsK
LSAgICBIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV90aWxlcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdT
dG9yZVRpbGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gaXQtPnNl
Y29uZC50ZXh0dXJlKCk7Ci0gICAgICAgIGlmICh0ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJu
IHRleHR1cmU7Ci0gICAgfQotCi0gICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4o
KTsKLX0KLQotdm9pZCBMYXllckJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRt
YXBUZXh0dXJlKiBtYXNrKQotewotICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+IHRpbGVz
VG9QYWludDsKLQotICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBldmVyeSB0aW1lIHdlIHBhaW50
LCBpbiBjYXNlIHRoZSBvcGFjaXR5IGhhcyBjaGFuZ2VkLgotICAgIEhhc2hNYXA8aW50LCBMYXll
ckJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOwotICAgIEZs
b2F0UmVjdCBjb3ZlcmVkUmVjdDsKLSAgICBmb3IgKEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdT
dG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIExheWVyQmFja2luZ1N0b3JlVGlsZSYgdGlsZSA9IGl0LT5zZWNvbmQ7Ci0g
ICAgICAgIGlmICghdGlsZS50ZXh0dXJlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBpZiAodGlsZS5zY2FsZSgpID09IG1fc2NhbGUpIHsKLSAgICAgICAgICAgIHRpbGVzVG9Q
YWludC5hcHBlbmQoJnRpbGUpOwotICAgICAgICAgICAgY292ZXJlZFJlY3QudW5pdGUodGlsZS5y
ZWN0KCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBP
bmx5IHNob3cgdGhlIHByZXZpb3VzIHRpbGUgaWYgdGhlIG9wYWNpdHkgaXMgaGlnaCwgb3RoZXJ3
aXNlIGVmZmVjdCBsb29rcyBsaWtlIGEgYnVnLgotICAgICAgICAvLyBXZSBzaG93IHRoZSBwcmV2
aW91cy1zY2FsZSB0aWxlIGFueXdheSBpZiBpdCBkb2Vzbid0IGludGVyc2VjdCB3aXRoIGFueSBj
dXJyZW50LXNjYWxlIHRpbGUuCi0gICAgICAgIGlmIChvcGFjaXR5IDwgMC45NSAmJiBjb3ZlcmVk
UmVjdC5pbnRlcnNlY3RzKHRpbGUucmVjdCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIHRpbGVzVG9QYWludC5wcmVwZW5kKCZ0aWxlKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRpbGVzVG9QYWludC5zaXplKCk7ICsraSkKLSAgICAgICAgdGlsZXNU
b1BhaW50W2ldLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2sp
OwotfQotCi12b2lkIExheWVyQmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQotewotICAgIFZlY3RvcjxpbnQ+OjppdGVyYXRvciB0
aWxlc1RvUmVtb3ZlRW5kID0gbV90aWxlc1RvUmVtb3ZlLmVuZCgpOwotICAgIGZvciAoVmVjdG9y
PGludD46Oml0ZXJhdG9yIGl0ID0gbV90aWxlc1RvUmVtb3ZlLmJlZ2luKCk7IGl0ICE9IHRpbGVz
VG9SZW1vdmVFbmQ7ICsraXQpCi0gICAgICAgIG1fdGlsZXMucmVtb3ZlKCppdCk7Ci0gICAgbV90
aWxlc1RvUmVtb3ZlLmNsZWFyKCk7Ci0KLSAgICBIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3Rv
cmVUaWxlPjo6aXRlcmF0b3IgdGlsZXNFbmQgPSBtX3RpbGVzLmVuZCgpOwotICAgIGZvciAoSGFz
aE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5i
ZWdpbigpOyBpdCAhPSB0aWxlc0VuZDsgKytpdCkKLSAgICAgICAgaXQtPnNlY29uZC5zd2FwQnVm
ZmVycyh0ZXh0dXJlTWFwcGVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZTIxOWIuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3NSArMCwwIEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2lmbmRlZiBMYXllckJhY2tpbmdTdG9yZV9oCi0jZGVmaW5lIExheWVyQmFja2luZ1N0b3JlX2gK
LQotI2lmIFVTRShVSV9TSURFX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ci5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgU2hhcmVhYmxlU3Vy
ZmFjZTsKLQotY2xhc3MgTGF5ZXJCYWNraW5nU3RvcmVUaWxlIDogcHVibGljIFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJUaWxlIHsKLXB1YmxpYzoKLSAgICBMYXllckJhY2tpbmdTdG9yZVRpbGUoZmxv
YXQgc2NhbGUgPSAxKQotICAgICAgICA6IFRleHR1cmVNYXBwZXJUaWxlKFdlYkNvcmU6OkZsb2F0
UmVjdCgpKQotICAgICAgICAsIG1fc2NhbGUoc2NhbGUpCi0gICAgewotICAgIH0KLQotICAgIGlu
bGluZSBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KLSAgICB2b2lkIHN3
YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJhY2tCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNz
UmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOwot
ICAgIFdlYkNvcmU6OkludFJlY3QgbV9zb3VyY2VSZWN0OwotICAgIFdlYkNvcmU6OkludFJlY3Qg
bV90YXJnZXRSZWN0OwotICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKLSAg
ICBmbG9hdCBtX3NjYWxlOwotfTsKLQotY2xhc3MgTGF5ZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBj
cmVhdGVUaWxlKGludCwgZmxvYXQpOwotICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOwotICAgIHZv
aWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckJhY2tpbmdTdG9yZT4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IExheWVyQmFja2luZ1N0b3JlKTsgfQotICAgIHZv
aWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwotICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSopOwotCi1wcml2YXRlOgotICAg
IExheWVyQmFja2luZ1N0b3JlKCkKLSAgICAgICAgOiBtX3NjYWxlKDEuKQotICAgIHsgfQotICAg
IEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7Ci0gICAgVmVjdG9y
PGludD4gbV90aWxlc1RvUmVtb3ZlOwotICAgIGZsb2F0IG1fc2NhbGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLSNlbmRpZgotCi0jZW5kaWYgLy8gTGF5ZXJCYWNraW5nU3RvcmVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149233</attachid>
            <date>2012-06-24 20:46:14 -0700</date>
            <delta_ts>2012-06-24 23:00:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89838-20120625124614.patch</filename>
            <type>text/plain</type>
            <size>19823</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhhZWY1YzRmZTQwYjE4
ODMzZjU3YzFiYWY1MzQ3YmJjY2Y1NGRiNS4uZDVjZDc0MTgzYWRmYTUzYTVjNTZhYjY1YzVmODRk
MWRiZWZiOWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEyLTA2LTI0ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CiAKKyAgICAgICAgW1dL
Ml1bUXRdW0VGTF0gTW92ZSBMYXllckJhY2tpbmdTdG9yZSBpbnRvIGNvbW1vbiBkaXJlY3RvcnkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBMYXll
ckJhY2tpbmdTdG9yZSBpbnRvIGNvbW1vbiBkaXJlY3RvcnkgJ1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy8nIHRvIGJlIHVzZWQgYnkgYm90aCBRdCBhbmQgRWZsLgorCisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJCYWNraW5nU3RvcmUuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmNwcC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlVGls
ZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZVRpbGU6
OnNldEJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZTo6Y3Jl
YXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlOjpyZW1vdmVUaWxl
KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZTo6dGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0xheWVyQmFja2luZ1N0b3JlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJCYWNraW5nU3RvcmUuaC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChMYXllckJhY2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXll
ckJhY2tpbmdTdG9yZVRpbGU6OkxheWVyQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyQmFja2luZ1N0b3JlVGlsZTo6c2NhbGUpOgorICAgICAgICAoTGF5ZXJCYWNraW5n
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQmFja2luZ1N0b3JlKToKKwor
MjAxMi0wNi0yNCAgWW91bmdUYWVjayBTb25nICA8eW91bmd0YWVjay5zb25nQHNhbXN1bmcuY29t
PgorCiAgICAgICAgIFtXSzJdW1F0XVtFRkxdIE1vZGlmeSBRdCBzcGVjaWZpYyBjb2RlIHRvIGNv
bW1vbiBjb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTgzOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCA3YjlhYjk5ZWY1NjEzYWZhZTA1OTdlZTM2ZGExM2Nj
YmE5NTY0NmM0Li5lOWM3MjMyNDQ2ZjI5MzVjMTM5MGQ1MjMwZDk0ZTBkNmRlMDc1MWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKQEAgLTIxNCw2ICsyMTQsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3Mv
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9MYXVu
Y2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBcCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL1RocmVhZExh
dW5jaGVyLmggXAorICAgIFVJUHJvY2Vzcy9MYXllckJhY2tpbmdTdG9yZS5oIFwKICAgICBVSVBy
b2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXAogICAgIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggXApAQCAt
MjczLDcgKzI3NCw2IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUNh
Y2hlTWFuYWdlclByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQu
aCBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggXAotICAgIFVJUHJvY2Vzcy9xdC9MYXll
ckJhY2tpbmdTdG9yZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmggXAogICAg
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0
L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBcCkBAIC01NjYsNiArNTY2LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL1RocmVhZExhdW5jaGVyLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0xh
dW5jaGVyL3F0L1RocmVhZExhdW5jaGVyUXQuY3BwIFwKKyAgICBVSVByb2Nlc3MvTGF5ZXJCYWNr
aW5nU3RvcmUuY3BwIFwKICAgICBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBcCiAg
ICAgVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qu
Y3BwIFwKICAgICBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgXApAQCAtNjI0LDcgKzYyNSw2IEBAIFNPVVJDRVMgKz0g
XAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQuY3BwIFwKICAgICBVSVByb2Nl
c3MvV2ViVUlDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNwcCBc
Ci0gICAgVUlQcm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmNwcCBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1
cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6
ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllckJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNraW5nU3RvcmUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNhYWZmZTllNTM5ZjljMmEzOTVjNzk3ZWM1NGI2MzZmNTJkOTFmYWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNraW5n
U3RvcmUuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheWVyQmFja2luZ1N0
b3JlLmgiCisKKyNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykKKyNpbmNsdWRlICJHcmFwaGlj
c0xheWVyLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIExheWVyQmFja2luZ1N0
b3JlVGlsZTo6c3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
cikKK3sKKyAgICBpZiAoIW1fc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRS
ZWN0IHRhcmdldFJlY3QobV90YXJnZXRSZWN0KTsKKyAgICB0YXJnZXRSZWN0LnNjYWxlKDEuIC8g
bV9zY2FsZSk7CisgICAgYm9vbCBzaG91bGRSZXNldCA9IGZhbHNlOworICAgIGlmICh0YXJnZXRS
ZWN0ICE9IHJlY3QoKSkgeworICAgICAgICBzZXRSZWN0KHRhcmdldFJlY3QpOworICAgICAgICBz
aG91bGRSZXNldCA9IHRydWU7CisgICAgfQorICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlID0gdGhpcy0+dGV4dHVyZSgpOworICAgIGlmICghdGV4dHVyZSkgeworICAgICAgICB0ZXh0
dXJlID0gdGV4dHVyZU1hcHBlci0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBzZXRUZXh0dXJl
KHRleHR1cmUuZ2V0KCkpOworICAgICAgICBzaG91bGRSZXNldCA9IHRydWU7CisgICAgfQorCisg
ICAgaWYgKHNob3VsZFJlc2V0KQorICAgICAgICB0ZXh0dXJlLT5yZXNldChtX3RhcmdldFJlY3Qu
c2l6ZSgpLCBtX3N1cmZhY2UtPmZsYWdzKCkgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGEgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogMCk7CisKKyAgICBtX3N1cmZhY2Ut
PmNvcHlUb1RleHR1cmUodGV4dHVyZSwgbV9zb3VyY2VSZWN0LCBtX3N1cmZhY2VPZmZzZXQpOwor
ICAgIG1fc3VyZmFjZS5jbGVhcigpOworfQorCit2b2lkIExheWVyQmFja2luZ1N0b3JlVGlsZTo6
c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50
UG9pbnQmIG9mZnNldCkKK3sKKyAgICBtX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIG1f
dGFyZ2V0UmVjdCA9IHRhcmdldFJlY3Q7CisgICAgbV9zdXJmYWNlT2Zmc2V0ID0gb2Zmc2V0Owor
ICAgIG1fc3VyZmFjZSA9IGJ1ZmZlcjsKK30KKwordm9pZCBMYXllckJhY2tpbmdTdG9yZTo6Y3Jl
YXRlVGlsZShpbnQgaWQsIGZsb2F0IHNjYWxlKQoreworICAgIG1fdGlsZXMuYWRkKGlkLCBMYXll
ckJhY2tpbmdTdG9yZVRpbGUoc2NhbGUpKTsKKyAgICBtX3NjYWxlID0gc2NhbGU7Cit9CisKK3Zv
aWQgTGF5ZXJCYWNraW5nU3RvcmU6OnJlbW92ZVRpbGUoaW50IGlkKQoreworICAgIG1fdGlsZXNU
b1JlbW92ZS5hcHBlbmQoaWQpOworfQorCisKK3ZvaWQgTGF5ZXJCYWNraW5nU3RvcmU6OnVwZGF0
ZVRpbGUoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0
YXJnZXRSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0
IEludFBvaW50JiBvZmZzZXQpCit7CisgICAgSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3Jl
VGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQgIT0g
bV90aWxlcy5lbmQoKSk7CisgICAgaXQtPnNlY29uZC5zZXRCYWNrQnVmZmVyKHRhcmdldFJlY3Qs
IHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7Cit9CisKK1Bhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gTGF5ZXJCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAoreworICAgIEhhc2hN
YXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Rp
bGVzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBpdC0+c2Vjb25kLnRleHR1
cmUoKTsKKyAgICAgICAgaWYgKHRleHR1cmUpCisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTsK
KyAgICB9CisKKyAgICByZXR1cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigpOworfQorCit2
b2lkIExheWVyQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spCit7CisgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4gdGlsZXNUb1BhaW50Owor
CisgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGV2ZXJ5IHRpbWUgd2UgcGFpbnQsIGluIGNhc2Ug
dGhlIG9wYWNpdHkgaGFzIGNoYW5nZWQuCisgICAgSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0
b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgRmxvYXRSZWN0IGNv
dmVyZWRSZWN0OworICAgIGZvciAoSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46
Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgTGF5ZXJCYWNraW5nU3RvcmVUaWxlJiB0aWxlID0gaXQtPnNlY29uZDsKKyAgICAgICAgaWYg
KCF0aWxlLnRleHR1cmUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICh0
aWxlLnNjYWxlKCkgPT0gbV9zY2FsZSkgeworICAgICAgICAgICAgdGlsZXNUb1BhaW50LmFwcGVu
ZCgmdGlsZSk7CisgICAgICAgICAgICBjb3ZlcmVkUmVjdC51bml0ZSh0aWxlLnJlY3QoKSk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9ubHkgc2hvdyB0
aGUgcHJldmlvdXMgdGlsZSBpZiB0aGUgb3BhY2l0eSBpcyBoaWdoLCBvdGhlcndpc2UgZWZmZWN0
IGxvb2tzIGxpa2UgYSBidWcuCisgICAgICAgIC8vIFdlIHNob3cgdGhlIHByZXZpb3VzLXNjYWxl
IHRpbGUgYW55d2F5IGlmIGl0IGRvZXNuJ3QgaW50ZXJzZWN0IHdpdGggYW55IGN1cnJlbnQtc2Nh
bGUgdGlsZS4KKyAgICAgICAgaWYgKG9wYWNpdHkgPCAwLjk1ICYmIGNvdmVyZWRSZWN0LmludGVy
c2VjdHModGlsZS5yZWN0KCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdGls
ZXNUb1BhaW50LnByZXBlbmQoJnRpbGUpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdGlsZXNUb1BhaW50LnNpemUoKTsgKytpKQorICAgICAgICB0aWxlc1RvUGFpbnRbaV0t
PnBhaW50KHRleHR1cmVNYXBwZXIsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7Cit9CisKK3Zv
aWQgTGF5ZXJCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1cmVNYXBwZXIq
IHRleHR1cmVNYXBwZXIpCit7CisgICAgVmVjdG9yPGludD46Oml0ZXJhdG9yIHRpbGVzVG9SZW1v
dmVFbmQgPSBtX3RpbGVzVG9SZW1vdmUuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8aW50Pjo6aXRl
cmF0b3IgaXQgPSBtX3RpbGVzVG9SZW1vdmUuYmVnaW4oKTsgaXQgIT0gdGlsZXNUb1JlbW92ZUVu
ZDsgKytpdCkKKyAgICAgICAgbV90aWxlcy5yZW1vdmUoKml0KTsKKyAgICBtX3RpbGVzVG9SZW1v
dmUuY2xlYXIoKTsKKworICAgIEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+Ojpp
dGVyYXRvciB0aWxlc0VuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPGludCwg
TGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0
ICE9IHRpbGVzRW5kOyArK2l0KQorICAgICAgICBpdC0+c2Vjb25kLnN3YXBCdWZmZXJzKHRleHR1
cmVNYXBwZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2UyMTli
MDQxNWFkM2Y4N2ExMzI2ZWQzMDcwYjUyOWFkNWU2YzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgTGF5ZXJC
YWNraW5nU3RvcmVfaAorI2RlZmluZSBMYXllckJhY2tpbmdTdG9yZV9oCisKKyNpZiBVU0UoVUlf
U0lERV9DT01QT1NJVElORykKKworI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJlYWJsZVN1cmZhY2U7CisKK2NsYXNz
IExheWVyQmFja2luZ1N0b3JlVGlsZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGls
ZSB7CitwdWJsaWM6CisgICAgTGF5ZXJCYWNraW5nU3RvcmVUaWxlKGZsb2F0IHNjYWxlID0gMSkK
KyAgICAgICAgOiBUZXh0dXJlTWFwcGVyVGlsZShXZWJDb3JlOjpGbG9hdFJlY3QoKSkKKyAgICAg
ICAgLCBtX3NjYWxlKHNjYWxlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgZmxvYXQgc2Nh
bGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CisgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyKik7CisgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFi
bGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdGFyZ2V0UmVjdDsK
KyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1cmZhY2VPZmZzZXQ7CisgICAgZmxvYXQgbV9zY2Fs
ZTsKK307CisKK2NsYXNzIExheWVyQmFja2luZ1N0b3JlIDogcHVibGljIFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUgeworcHVibGljOgorICAgIHZvaWQgY3JlYXRlVGlsZShpbnQs
IGZsb2F0KTsKKyAgICB2b2lkIHJlbW92ZVRpbGUoaW50KTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUo
aW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBh
c3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBMYXllckJhY2tpbmdTdG9yZSk7IH0KKyAgICB2b2lkIGNvbW1pdFRpbGVP
cGVyYXRpb25zKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQs
IFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqKTsKKworcHJpdmF0ZToKKyAgICBMYXllckJhY2tpbmdT
dG9yZSgpCisgICAgICAgIDogbV9zY2FsZSgxLikKKyAgICB7IH0KKyAgICBIYXNoTWFwPGludCwg
TGF5ZXJCYWNraW5nU3RvcmVUaWxlPiBtX3RpbGVzOworICAgIFZlY3RvcjxpbnQ+IG1fdGlsZXNU
b1JlbW92ZTsKKyAgICBmbG9hdCBtX3NjYWxlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisjZW5kaWYKKworI2VuZGlmIC8vIExheWVyQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJCYWNraW5nU3RvcmUuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYWFmZmU5ZTUzOWY5YzJhMzk1Yzc5N2VjNTRiNjM2ZjUyZDkxZmFm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9yZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxNDEgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMYXllckJhY2tpbmdTdG9yZS5oIgotCi0j
aWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgot
I2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgi
Ci0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBMYXllckJhY2tpbmdTdG9yZVRpbGU6OnN3
YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCi17Ci0gICAg
aWYgKCFtX3N1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0UmVjdCB0YXJnZXRS
ZWN0KG1fdGFyZ2V0UmVjdCk7Ci0gICAgdGFyZ2V0UmVjdC5zY2FsZSgxLiAvIG1fc2NhbGUpOwot
ICAgIGJvb2wgc2hvdWxkUmVzZXQgPSBmYWxzZTsKLSAgICBpZiAodGFyZ2V0UmVjdCAhPSByZWN0
KCkpIHsKLSAgICAgICAgc2V0UmVjdCh0YXJnZXRSZWN0KTsKLSAgICAgICAgc2hvdWxkUmVzZXQg
PSB0cnVlOwotICAgIH0KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHRoaXMt
PnRleHR1cmUoKTsKLSAgICBpZiAoIXRleHR1cmUpIHsKLSAgICAgICAgdGV4dHVyZSA9IHRleHR1
cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgc2V0VGV4dHVyZSh0ZXh0dXJlLmdl
dCgpKTsKLSAgICAgICAgc2hvdWxkUmVzZXQgPSB0cnVlOwotICAgIH0KLQotICAgIGlmIChzaG91
bGRSZXNldCkKLSAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90YXJnZXRSZWN0LnNpemUoKSwgbV9z
dXJmYWNlLT5mbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhID8gQml0bWFw
VGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOwotCi0gICAgbV9zdXJmYWNlLT5jb3B5VG9UZXh0
dXJlKHRleHR1cmUsIG1fc291cmNlUmVjdCwgbV9zdXJmYWNlT2Zmc2V0KTsKLSAgICBtX3N1cmZh
Y2UuY2xlYXIoKTsKLX0KLQotdm9pZCBMYXllckJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZm
ZXIoY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
UGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZz
ZXQpCi17Ci0gICAgbV9zb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKLSAgICBtX3RhcmdldFJlY3Qg
PSB0YXJnZXRSZWN0OwotICAgIG1fc3VyZmFjZU9mZnNldCA9IG9mZnNldDsKLSAgICBtX3N1cmZh
Y2UgPSBidWZmZXI7Ci19Ci0KLXZvaWQgTGF5ZXJCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGUoaW50
IGlkLCBmbG9hdCBzY2FsZSkKLXsKLSAgICBtX3RpbGVzLmFkZChpZCwgTGF5ZXJCYWNraW5nU3Rv
cmVUaWxlKHNjYWxlKSk7Ci0gICAgbV9zY2FsZSA9IHNjYWxlOwotfQotCi12b2lkIExheWVyQmFj
a2luZ1N0b3JlOjpyZW1vdmVUaWxlKGludCBpZCkKLXsKLSAgICBtX3RpbGVzVG9SZW1vdmUuYXBw
ZW5kKGlkKTsKLX0KLQotCi12b2lkIExheWVyQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKGludCBp
ZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwg
UGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBiYWNrQnVmZmVyLCBjb25zdCBJbnRQb2ludCYg
b2Zmc2V0KQotewotICAgIEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+OjppdGVy
YXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fdGlsZXMuZW5k
KCkpOwotICAgIGl0LT5zZWNvbmQuc2V0QmFja0J1ZmZlcih0YXJnZXRSZWN0LCBzb3VyY2VSZWN0
LCBiYWNrQnVmZmVyLCBvZmZzZXQpOwotfQotCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IExh
eWVyQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKLXsKLSAgICBIYXNoTWFwPGludCwgTGF5
ZXJCYWNraW5nU3RvcmVUaWxlPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90aWxlcy5lbmQoKTsK
LSAgICBmb3IgKEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gaXQtPnNlY29uZC50ZXh0dXJlKCk7Ci0gICAg
ICAgIGlmICh0ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKLX0KLQotdm9pZCBMYXllckJh
Y2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQotewot
ICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+IHRpbGVzVG9QYWludDsKLQotICAgIC8vIFdl
IGhhdmUgdG8gZG8gdGhpcyBldmVyeSB0aW1lIHdlIHBhaW50LCBpbiBjYXNlIHRoZSBvcGFjaXR5
IGhhcyBjaGFuZ2VkLgotICAgIEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+Ojpp
dGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOwotICAgIEZsb2F0UmVjdCBjb3ZlcmVkUmVjdDsK
LSAgICBmb3IgKEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBp
dCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIExheWVyQmFj
a2luZ1N0b3JlVGlsZSYgdGlsZSA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIGlmICghdGlsZS50ZXh0
dXJlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAodGlsZS5zY2FsZSgp
ID09IG1fc2NhbGUpIHsKLSAgICAgICAgICAgIHRpbGVzVG9QYWludC5hcHBlbmQoJnRpbGUpOwot
ICAgICAgICAgICAgY292ZXJlZFJlY3QudW5pdGUodGlsZS5yZWN0KCkpOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPbmx5IHNob3cgdGhlIHByZXZpb3Vz
IHRpbGUgaWYgdGhlIG9wYWNpdHkgaXMgaGlnaCwgb3RoZXJ3aXNlIGVmZmVjdCBsb29rcyBsaWtl
IGEgYnVnLgotICAgICAgICAvLyBXZSBzaG93IHRoZSBwcmV2aW91cy1zY2FsZSB0aWxlIGFueXdh
eSBpZiBpdCBkb2Vzbid0IGludGVyc2VjdCB3aXRoIGFueSBjdXJyZW50LXNjYWxlIHRpbGUuCi0g
ICAgICAgIGlmIChvcGFjaXR5IDwgMC45NSAmJiBjb3ZlcmVkUmVjdC5pbnRlcnNlY3RzKHRpbGUu
cmVjdCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRpbGVzVG9QYWludC5w
cmVwZW5kKCZ0aWxlKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVz
VG9QYWludC5zaXplKCk7ICsraSkKLSAgICAgICAgdGlsZXNUb1BhaW50W2ldLT5wYWludCh0ZXh0
dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOwotfQotCi12b2lkIExheWVyQmFj
a2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyKQotewotICAgIFZlY3RvcjxpbnQ+OjppdGVyYXRvciB0aWxlc1RvUmVtb3ZlRW5kID0gbV90
aWxlc1RvUmVtb3ZlLmVuZCgpOwotICAgIGZvciAoVmVjdG9yPGludD46Oml0ZXJhdG9yIGl0ID0g
bV90aWxlc1RvUmVtb3ZlLmJlZ2luKCk7IGl0ICE9IHRpbGVzVG9SZW1vdmVFbmQ7ICsraXQpCi0g
ICAgICAgIG1fdGlsZXMucmVtb3ZlKCppdCk7Ci0gICAgbV90aWxlc1RvUmVtb3ZlLmNsZWFyKCk7
Ci0KLSAgICBIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgdGls
ZXNFbmQgPSBtX3RpbGVzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxpbnQsIExheWVyQmFja2lu
Z1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSB0aWxlc0Vu
ZDsgKytpdCkKLSAgICAgICAgaXQtPnNlY29uZC5zd2FwQnVmZmVycyh0ZXh0dXJlTWFwcGVyKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEzZTIxOWIwNDE1YWQzZjg3YTEzMjZlZDMwNzBiNTI5YWQ1ZTZjNzEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCww
IEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBMYXll
ckJhY2tpbmdTdG9yZV9oCi0jZGVmaW5lIExheWVyQmFja2luZ1N0b3JlX2gKLQotI2lmIFVTRShV
SV9TSURFX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgotI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKLQotY2xh
c3MgTGF5ZXJCYWNraW5nU3RvcmVUaWxlIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJU
aWxlIHsKLXB1YmxpYzoKLSAgICBMYXllckJhY2tpbmdTdG9yZVRpbGUoZmxvYXQgc2NhbGUgPSAx
KQotICAgICAgICA6IFRleHR1cmVNYXBwZXJUaWxlKFdlYkNvcmU6OkZsb2F0UmVjdCgpKQotICAg
ICAgICAsIG1fc2NhbGUoc2NhbGUpCi0gICAgewotICAgIH0KLQotICAgIGlubGluZSBmbG9hdCBz
Y2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KLSAgICB2b2lkIHN3YXBCdWZmZXJzKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJl
YWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLQotcHJpdmF0
ZToKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOwotICAgIFdlYkNvcmU6
OkludFJlY3QgbV9zb3VyY2VSZWN0OwotICAgIFdlYkNvcmU6OkludFJlY3QgbV90YXJnZXRSZWN0
OwotICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKLSAgICBmbG9hdCBtX3Nj
YWxlOwotfTsKLQotY2xhc3MgTGF5ZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBjcmVhdGVUaWxlKGlu
dCwgZmxvYXQpOwotICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOwotICAgIHZvaWQgdXBkYXRlVGls
ZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
UGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IExheWVyQmFja2luZ1N0b3JlKTsgfQotICAgIHZvaWQgY29tbWl0VGls
ZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwotICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSopOwotCi1wcml2YXRlOgotICAgIExheWVyQmFja2lu
Z1N0b3JlKCkKLSAgICAgICAgOiBtX3NjYWxlKDEuKQotICAgIHsgfQotICAgIEhhc2hNYXA8aW50
LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7Ci0gICAgVmVjdG9yPGludD4gbV90aWxl
c1RvUmVtb3ZlOwotICAgIGZsb2F0IG1fc2NhbGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLSNlbmRpZgotCi0jZW5kaWYgLy8gTGF5ZXJCYWNraW5nU3RvcmVfaAo=
</data>
<flag name="review"
          id="157189"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="157190"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149245</attachid>
            <date>2012-06-24 23:00:09 -0700</date>
            <delta_ts>2012-06-25 06:16:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>Move-LayerBackingStore-into-common-directory.diff</filename>
            <type>text/plain</type>
            <size>19895</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiOGFlZjVjLi4zMWMwZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQg
QEAKIDIwMTItMDYtMjQgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KIAorICAgICAgICBbV0syXVtRdF1bRUZMXSBNb3ZlIExheWVyQmFja2luZ1N0b3JlIGlu
dG8gY29tbW9uIGRpcmVjdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODk4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIExheWVyQmFja2luZ1N0b3JlIGludG8gJ1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy90ZXhtYXAnIHRvIGJlIHVzZWQgYnkgYm90aCBRdCBhbmQgRWZsLgorCisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvdGV4bWFwL0xheWVyQmFja2luZ1N0
b3JlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJh
Y2tpbmdTdG9yZS5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXll
ckJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJC
YWNraW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdT
dG9yZTo6cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlOjp1
cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNraW5nU3RvcmU6OnRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZTo6Y29tbWl0VGlsZU9wZXJh
dGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy90ZXhtYXAvTGF5ZXJCYWNraW5nU3RvcmUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9y
ZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKExheWVyQmFja2luZ1N0b3JlVGlsZSk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2luZ1N0b3JlVGlsZTo6TGF5ZXJCYWNraW5nU3Rv
cmVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNraW5nU3RvcmVUaWxlOjpzY2FsZSk6
CisgICAgICAgIChMYXllckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFj
a2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tpbmdTdG9yZTo6
TGF5ZXJCYWNraW5nU3RvcmUpOgorCisyMDEyLTA2LTI0ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3Vu
Z3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKICAgICAgICAgW1dLMl1bUXRdW0VGTF0gTW9kaWZ5
IFF0IHNwZWNpZmljIGNvZGUgdG8gY29tbW9uIGNvZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODM5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDdiOWFiOTku
LjA5MTNlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMjczLDcgKzI3Myw2IEBAIEhFQURFUlMgKz0gXAog
ICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmggXAogICAgIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50
LmggXAotICAgIFVJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9yZS5oIFwKICAgICBVSVByb2Nl
c3MvcXQvUXRXZWJDb250ZXh0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhh
bmRsZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBcCkBAIC0y
OTQsNiArMjkzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRN
ZW51UHJveHlRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0
LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmggXAorICAgIFVJUHJv
Y2Vzcy90ZXhtYXAvTGF5ZXJCYWNraW5nU3RvcmUuaCBcCiAgICAgV2ViUHJvY2Vzcy9BcHBsaWNh
dGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3Mv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggXApAQCAtNjI0LDcgKzYyNCw2IEBAIFNPVVJDRVMg
Kz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQuY3BwIFwKICAgICBVSVBy
b2Nlc3MvV2ViVUlDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNw
cCBcCi0gICAgVUlQcm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdl
c3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29n
bml6ZXIuY3BwIFwKQEAgLTY0OSw2ICs2NDgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQcmVm
ZXJlbmNlc1F0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50
LmNwcCBcCisgICAgVUlQcm9jZXNzL3RleG1hcC9MYXllckJhY2tpbmdTdG9yZS5jcHAgXAogICAg
IFdlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5j
cHAgXAogICAgIFdlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJCYWNraW5nU3RvcmUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWFmZmU5Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9yZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMYXllckJhY2tpbmdTdG9yZS5oIgot
Ci0jaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
LmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBMYXllckJhY2tpbmdTdG9yZVRpbGU6
OnN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCi17Ci0g
ICAgaWYgKCFtX3N1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0UmVjdCB0YXJn
ZXRSZWN0KG1fdGFyZ2V0UmVjdCk7Ci0gICAgdGFyZ2V0UmVjdC5zY2FsZSgxLiAvIG1fc2NhbGUp
OwotICAgIGJvb2wgc2hvdWxkUmVzZXQgPSBmYWxzZTsKLSAgICBpZiAodGFyZ2V0UmVjdCAhPSBy
ZWN0KCkpIHsKLSAgICAgICAgc2V0UmVjdCh0YXJnZXRSZWN0KTsKLSAgICAgICAgc2hvdWxkUmVz
ZXQgPSB0cnVlOwotICAgIH0KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHRo
aXMtPnRleHR1cmUoKTsKLSAgICBpZiAoIXRleHR1cmUpIHsKLSAgICAgICAgdGV4dHVyZSA9IHRl
eHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgc2V0VGV4dHVyZSh0ZXh0dXJl
LmdldCgpKTsKLSAgICAgICAgc2hvdWxkUmVzZXQgPSB0cnVlOwotICAgIH0KLQotICAgIGlmIChz
aG91bGRSZXNldCkKLSAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90YXJnZXRSZWN0LnNpemUoKSwg
bV9zdXJmYWNlLT5mbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhID8gQml0
bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOwotCi0gICAgbV9zdXJmYWNlLT5jb3B5VG9U
ZXh0dXJlKHRleHR1cmUsIG1fc291cmNlUmVjdCwgbV9zdXJmYWNlT2Zmc2V0KTsKLSAgICBtX3N1
cmZhY2UuY2xlYXIoKTsKLX0KLQotdm9pZCBMYXllckJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tC
dWZmZXIoY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBv
ZmZzZXQpCi17Ci0gICAgbV9zb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKLSAgICBtX3RhcmdldFJl
Y3QgPSB0YXJnZXRSZWN0OwotICAgIG1fc3VyZmFjZU9mZnNldCA9IG9mZnNldDsKLSAgICBtX3N1
cmZhY2UgPSBidWZmZXI7Ci19Ci0KLXZvaWQgTGF5ZXJCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGUo
aW50IGlkLCBmbG9hdCBzY2FsZSkKLXsKLSAgICBtX3RpbGVzLmFkZChpZCwgTGF5ZXJCYWNraW5n
U3RvcmVUaWxlKHNjYWxlKSk7Ci0gICAgbV9zY2FsZSA9IHNjYWxlOwotfQotCi12b2lkIExheWVy
QmFja2luZ1N0b3JlOjpyZW1vdmVUaWxlKGludCBpZCkKLXsKLSAgICBtX3RpbGVzVG9SZW1vdmUu
YXBwZW5kKGlkKTsKLX0KLQotCi12b2lkIExheWVyQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKGlu
dCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVj
dCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBiYWNrQnVmZmVyLCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0KQotewotICAgIEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+Ojpp
dGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fdGlsZXMu
ZW5kKCkpOwotICAgIGl0LT5zZWNvbmQuc2V0QmFja0J1ZmZlcih0YXJnZXRSZWN0LCBzb3VyY2VS
ZWN0LCBiYWNrQnVmZmVyLCBvZmZzZXQpOwotfQotCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IExheWVyQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKLXsKLSAgICBIYXNoTWFwPGludCwg
TGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90aWxlcy5lbmQo
KTsKLSAgICBmb3IgKEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gaXQtPnNlY29uZC50ZXh0dXJlKCk7Ci0g
ICAgICAgIGlmICh0ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKLX0KLQotdm9pZCBMYXll
ckJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQot
ewotICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+IHRpbGVzVG9QYWludDsKLQotICAgIC8v
IFdlIGhhdmUgdG8gZG8gdGhpcyBldmVyeSB0aW1lIHdlIHBhaW50LCBpbiBjYXNlIHRoZSBvcGFj
aXR5IGhhcyBjaGFuZ2VkLgotICAgIEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+
OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOwotICAgIEZsb2F0UmVjdCBjb3ZlcmVkUmVj
dDsKLSAgICBmb3IgKEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRv
ciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIExheWVy
QmFja2luZ1N0b3JlVGlsZSYgdGlsZSA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIGlmICghdGlsZS50
ZXh0dXJlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAodGlsZS5zY2Fs
ZSgpID09IG1fc2NhbGUpIHsKLSAgICAgICAgICAgIHRpbGVzVG9QYWludC5hcHBlbmQoJnRpbGUp
OwotICAgICAgICAgICAgY292ZXJlZFJlY3QudW5pdGUodGlsZS5yZWN0KCkpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPbmx5IHNob3cgdGhlIHByZXZp
b3VzIHRpbGUgaWYgdGhlIG9wYWNpdHkgaXMgaGlnaCwgb3RoZXJ3aXNlIGVmZmVjdCBsb29rcyBs
aWtlIGEgYnVnLgotICAgICAgICAvLyBXZSBzaG93IHRoZSBwcmV2aW91cy1zY2FsZSB0aWxlIGFu
eXdheSBpZiBpdCBkb2Vzbid0IGludGVyc2VjdCB3aXRoIGFueSBjdXJyZW50LXNjYWxlIHRpbGUu
Ci0gICAgICAgIGlmIChvcGFjaXR5IDwgMC45NSAmJiBjb3ZlcmVkUmVjdC5pbnRlcnNlY3RzKHRp
bGUucmVjdCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRpbGVzVG9QYWlu
dC5wcmVwZW5kKCZ0aWxlKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRp
bGVzVG9QYWludC5zaXplKCk7ICsraSkKLSAgICAgICAgdGlsZXNUb1BhaW50W2ldLT5wYWludCh0
ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOwotfQotCi12b2lkIExheWVy
QmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyKQotewotICAgIFZlY3RvcjxpbnQ+OjppdGVyYXRvciB0aWxlc1RvUmVtb3ZlRW5kID0g
bV90aWxlc1RvUmVtb3ZlLmVuZCgpOwotICAgIGZvciAoVmVjdG9yPGludD46Oml0ZXJhdG9yIGl0
ID0gbV90aWxlc1RvUmVtb3ZlLmJlZ2luKCk7IGl0ICE9IHRpbGVzVG9SZW1vdmVFbmQ7ICsraXQp
Ci0gICAgICAgIG1fdGlsZXMucmVtb3ZlKCppdCk7Ci0gICAgbV90aWxlc1RvUmVtb3ZlLmNsZWFy
KCk7Ci0KLSAgICBIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3Ig
dGlsZXNFbmQgPSBtX3RpbGVzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxpbnQsIExheWVyQmFj
a2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSB0aWxl
c0VuZDsgKytpdCkKLSAgICAgICAgaXQtPnNlY29uZC5zd2FwQnVmZmVycyh0ZXh0dXJlTWFwcGVy
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L0xheWVyQmFja2luZ1N0b3JlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGEzZTIxOWIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0xheWVyQmFja2luZ1N0b3JlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0v
KgotIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBMYXllckJhY2tp
bmdTdG9yZV9oCi0jZGVmaW5lIExheWVyQmFja2luZ1N0b3JlX2gKLQotI2lmIFVTRShVSV9TSURF
X0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgotI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKLQotY2xhc3MgTGF5
ZXJCYWNraW5nU3RvcmVUaWxlIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlIHsK
LXB1YmxpYzoKLSAgICBMYXllckJhY2tpbmdTdG9yZVRpbGUoZmxvYXQgc2NhbGUgPSAxKQotICAg
ICAgICA6IFRleHR1cmVNYXBwZXJUaWxlKFdlYkNvcmU6OkZsb2F0UmVjdCgpKQotICAgICAgICAs
IG1fc2NhbGUoc2NhbGUpCi0gICAgewotICAgIH0KLQotICAgIGlubGluZSBmbG9hdCBzY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KLSAgICB2b2lkIHN3YXBCdWZmZXJzKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLQotcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOwotICAgIFdlYkNvcmU6OkludFJl
Y3QgbV9zb3VyY2VSZWN0OwotICAgIFdlYkNvcmU6OkludFJlY3QgbV90YXJnZXRSZWN0OwotICAg
IFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKLSAgICBmbG9hdCBtX3NjYWxlOwot
fTsKLQotY2xhc3MgTGF5ZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBjcmVhdGVUaWxlKGludCwgZmxv
YXQpOwotICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOwotICAgIHZvaWQgdXBkYXRlVGlsZShpbnQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxMYXllckJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IExheWVyQmFja2luZ1N0b3JlKTsgfQotICAgIHZvaWQgY29tbWl0VGlsZU9wZXJh
dGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZSopOwotCi1wcml2YXRlOgotICAgIExheWVyQmFja2luZ1N0b3Jl
KCkKLSAgICAgICAgOiBtX3NjYWxlKDEuKQotICAgIHsgfQotICAgIEhhc2hNYXA8aW50LCBMYXll
ckJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7Ci0gICAgVmVjdG9yPGludD4gbV90aWxlc1RvUmVt
b3ZlOwotICAgIGZsb2F0IG1fc2NhbGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLSNl
bmRpZgotCi0jZW5kaWYgLy8gTGF5ZXJCYWNraW5nU3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3RleG1hcC9MYXllckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvdGV4bWFwL0xheWVyQmFja2luZ1N0b3JlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWFmZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3RleG1hcC9MYXllckJhY2tpbmdTdG9yZS5jcHAKQEAgLTAs
MCArMSwxNDEgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGF5ZXJCYWNraW5nU3RvcmUuaCIKKworI2lmIFVT
RShVSV9TSURFX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTGF5ZXJCYWNraW5nU3RvcmVUaWxlOjpzd2FwQnVm
ZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQoreworICAgIGlmICgh
bV9zdXJmYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdCht
X3RhcmdldFJlY3QpOworICAgIHRhcmdldFJlY3Quc2NhbGUoMS4gLyBtX3NjYWxlKTsKKyAgICBi
b29sIHNob3VsZFJlc2V0ID0gZmFsc2U7CisgICAgaWYgKHRhcmdldFJlY3QgIT0gcmVjdCgpKSB7
CisgICAgICAgIHNldFJlY3QodGFyZ2V0UmVjdCk7CisgICAgICAgIHNob3VsZFJlc2V0ID0gdHJ1
ZTsKKyAgICB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0aGlzLT50ZXh0
dXJlKCk7CisgICAgaWYgKCF0ZXh0dXJlKSB7CisgICAgICAgIHRleHR1cmUgPSB0ZXh0dXJlTWFw
cGVyLT5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIHNldFRleHR1cmUodGV4dHVyZS5nZXQoKSk7
CisgICAgICAgIHNob3VsZFJlc2V0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkUmVz
ZXQpCisgICAgICAgIHRleHR1cmUtPnJlc2V0KG1fdGFyZ2V0UmVjdC5zaXplKCksIG1fc3VyZmFj
ZS0+ZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA/IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgOiAwKTsKKworICAgIG1fc3VyZmFjZS0+Y29weVRvVGV4dHVyZSh0
ZXh0dXJlLCBtX3NvdXJjZVJlY3QsIG1fc3VyZmFjZU9mZnNldCk7CisgICAgbV9zdXJmYWNlLmNs
ZWFyKCk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNraW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKGNv
bnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQor
eworICAgIG1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAgbV90YXJnZXRSZWN0ID0gdGFy
Z2V0UmVjdDsKKyAgICBtX3N1cmZhY2VPZmZzZXQgPSBvZmZzZXQ7CisgICAgbV9zdXJmYWNlID0g
YnVmZmVyOworfQorCit2b2lkIExheWVyQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlKGludCBpZCwg
ZmxvYXQgc2NhbGUpCit7CisgICAgbV90aWxlcy5hZGQoaWQsIExheWVyQmFja2luZ1N0b3JlVGls
ZShzY2FsZSkpOworICAgIG1fc2NhbGUgPSBzY2FsZTsKK30KKwordm9pZCBMYXllckJhY2tpbmdT
dG9yZTo6cmVtb3ZlVGlsZShpbnQgaWQpCit7CisgICAgbV90aWxlc1RvUmVtb3ZlLmFwcGVuZChp
ZCk7Cit9CisKKwordm9pZCBMYXllckJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZShpbnQgaWQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYmFja0J1ZmZlciwgY29uc3QgSW50UG9pbnQmIG9mZnNl
dCkKK3sKKyAgICBIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3Ig
aXQgPSBtX3RpbGVzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsK
KyAgICBpdC0+c2Vjb25kLnNldEJhY2tCdWZmZXIodGFyZ2V0UmVjdCwgc291cmNlUmVjdCwgYmFj
a0J1ZmZlciwgb2Zmc2V0KTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBMYXllckJh
Y2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0Cit7CisgICAgSGFzaE1hcDxpbnQsIExheWVyQmFj
a2luZ1N0b3JlVGlsZT46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAg
Zm9yIChIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGl0LT5zZWNvbmQudGV4dHVyZSgpOworICAgICAgICBp
ZiAodGV4dHVyZSkKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlOworICAgIH0KKworICAgIHJl
dHVybiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNraW5n
U3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3sKKyAgICBW
ZWN0b3I8VGV4dHVyZU1hcHBlclRpbGUqPiB0aWxlc1RvUGFpbnQ7CisKKyAgICAvLyBXZSBoYXZl
IHRvIGRvIHRoaXMgZXZlcnkgdGltZSB3ZSBwYWludCwgaW4gY2FzZSB0aGUgb3BhY2l0eSBoYXMg
Y2hhbmdlZC4KKyAgICBIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0
b3IgZW5kID0gbV90aWxlcy5lbmQoKTsKKyAgICBGbG9hdFJlY3QgY292ZXJlZFJlY3Q7CisgICAg
Zm9yIChIYXNoTWFwPGludCwgTGF5ZXJCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBt
X3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBMYXllckJhY2tpbmdT
dG9yZVRpbGUmIHRpbGUgPSBpdC0+c2Vjb25kOworICAgICAgICBpZiAoIXRpbGUudGV4dHVyZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHRpbGUuc2NhbGUoKSA9PSBt
X3NjYWxlKSB7CisgICAgICAgICAgICB0aWxlc1RvUGFpbnQuYXBwZW5kKCZ0aWxlKTsKKyAgICAg
ICAgICAgIGNvdmVyZWRSZWN0LnVuaXRlKHRpbGUucmVjdCgpKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gT25seSBzaG93IHRoZSBwcmV2aW91cyB0aWxl
IGlmIHRoZSBvcGFjaXR5IGlzIGhpZ2gsIG90aGVyd2lzZSBlZmZlY3QgbG9va3MgbGlrZSBhIGJ1
Zy4KKyAgICAgICAgLy8gV2Ugc2hvdyB0aGUgcHJldmlvdXMtc2NhbGUgdGlsZSBhbnl3YXkgaWYg
aXQgZG9lc24ndCBpbnRlcnNlY3Qgd2l0aCBhbnkgY3VycmVudC1zY2FsZSB0aWxlLgorICAgICAg
ICBpZiAob3BhY2l0eSA8IDAuOTUgJiYgY292ZXJlZFJlY3QuaW50ZXJzZWN0cyh0aWxlLnJlY3Qo
KSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB0aWxlc1RvUGFpbnQucHJlcGVu
ZCgmdGlsZSk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aWxlc1RvUGFp
bnQuc2l6ZSgpOyArK2kpCisgICAgICAgIHRpbGVzVG9QYWludFtpXS0+cGFpbnQodGV4dHVyZU1h
cHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKK30KKwordm9pZCBMYXllckJhY2tpbmdT
dG9yZTo6Y29tbWl0VGlsZU9wZXJhdGlvbnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcikK
K3sKKyAgICBWZWN0b3I8aW50Pjo6aXRlcmF0b3IgdGlsZXNUb1JlbW92ZUVuZCA9IG1fdGlsZXNU
b1JlbW92ZS5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxpbnQ+OjppdGVyYXRvciBpdCA9IG1fdGls
ZXNUb1JlbW92ZS5iZWdpbigpOyBpdCAhPSB0aWxlc1RvUmVtb3ZlRW5kOyArK2l0KQorICAgICAg
ICBtX3RpbGVzLnJlbW92ZSgqaXQpOworICAgIG1fdGlsZXNUb1JlbW92ZS5jbGVhcigpOworCisg
ICAgSGFzaE1hcDxpbnQsIExheWVyQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIHRpbGVzRW5k
ID0gbV90aWxlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8aW50LCBMYXllckJhY2tpbmdTdG9y
ZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gdGlsZXNFbmQ7ICsr
aXQpCisgICAgICAgIGl0LT5zZWNvbmQuc3dhcEJ1ZmZlcnModGV4dHVyZU1hcHBlcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvdGV4bWFwL0xheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvdGV4bWFwL0xheWVyQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYTNlMjE5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy90ZXhtYXAvTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtMCwwICsxLDc1IEBACisv
KgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBMYXllckJhY2tp
bmdTdG9yZV9oCisjZGVmaW5lIExheWVyQmFja2luZ1N0b3JlX2gKKworI2lmIFVTRShVSV9TSURF
X0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKKworY2xhc3MgTGF5
ZXJCYWNraW5nU3RvcmVUaWxlIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlIHsK
K3B1YmxpYzoKKyAgICBMYXllckJhY2tpbmdTdG9yZVRpbGUoZmxvYXQgc2NhbGUgPSAxKQorICAg
ICAgICA6IFRleHR1cmVNYXBwZXJUaWxlKFdlYkNvcmU6OkZsb2F0UmVjdCgpKQorICAgICAgICAs
IG1fc2NhbGUoc2NhbGUpCisgICAgeworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBzY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KKyAgICB2b2lkIHN3YXBCdWZmZXJzKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXIqKTsKKyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOworICAgIFdlYkNvcmU6OkludFJl
Y3QgbV9zb3VyY2VSZWN0OworICAgIFdlYkNvcmU6OkludFJlY3QgbV90YXJnZXRSZWN0OworICAg
IFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKKyAgICBmbG9hdCBtX3NjYWxlOwor
fTsKKworY2xhc3MgTGF5ZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAgdm9pZCBjcmVhdGVUaWxlKGludCwgZmxv
YXQpOworICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOworICAgIHZvaWQgdXBkYXRlVGlsZShpbnQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxMYXllckJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IExheWVyQmFja2luZ1N0b3JlKTsgfQorICAgIHZvaWQgY29tbWl0VGlsZU9wZXJh
dGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZSopOworCitwcml2YXRlOgorICAgIExheWVyQmFja2luZ1N0b3Jl
KCkKKyAgICAgICAgOiBtX3NjYWxlKDEuKQorICAgIHsgfQorICAgIEhhc2hNYXA8aW50LCBMYXll
ckJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7CisgICAgVmVjdG9yPGludD4gbV90aWxlc1RvUmVt
b3ZlOworICAgIGZsb2F0IG1fc2NhbGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNl
bmRpZgorCisjZW5kaWYgLy8gTGF5ZXJCYWNraW5nU3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQppbmRleCAy
NGNjNWEyLi40YTVmZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQpAQCAtMzMsNiArMzMsNyBAQCBJTkNMVURF
UEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAg
ICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL1BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9VSVBy
b2Nlc3MvcXQgXAorICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvdGV4bWFwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViUHJvY2VzcyBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvQXBwbGlj
YXRpb25DYWNoZSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24g
XAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>