<?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>131417</bug_id>
          
          <creation_ts>2014-04-08 19:56:00 -0700</creation_ts>
          <short_desc>Factor tile coverage map into a class</short_desc>
          <delta_ts>2014-04-08 22:02: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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999032</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-04-08 19:56:00 -0700</bug_when>
    <thetext>Move the map code out from TileController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999033</commentid>
    <comment_count>1</comment_count>
      <attachid>228927</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-04-08 20:01:07 -0700</bug_when>
    <thetext>Created attachment 228927
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999039</commentid>
    <comment_count>2</comment_count>
      <attachid>228928</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-04-08 20:18:48 -0700</bug_when>
    <thetext>Created attachment 228928
make it build on release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999059</commentid>
    <comment_count>3</comment_count>
      <attachid>228928</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-08 21:31:40 -0700</bug_when>
    <thetext>Comment on attachment 228928
make it build on release

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

&gt; Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.mm:40
&gt; +    m_layer.get().setOpacity(0.75);

.get(). is ugly; is there a better way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999060</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-08 21:38:23 -0700</bug_when>
    <thetext>Where is the announcement/documentation about Ref?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999061</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-04-08 21:46:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Where is the announcement/documentation about Ref?

Andreas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999062</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-04-08 21:51:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 228928 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228928&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.mm:40
&gt; &gt; +    m_layer.get().setOpacity(0.75);
&gt; 
&gt; .get(). is ugly; is there a better way?

There is -&gt; but I think the plan is to remove it as it implies pointer semantics while Ref is supposed to have reference semantics. There is no operator.() so we end up with get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999066</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-04-08 22:02:49 -0700</bug_when>
    <thetext>https://trac.webkit.org/r166997</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228927</attachid>
            <date>2014-04-08 20:01:07 -0700</date>
            <delta_ts>2014-04-08 20:18:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>tile-coverage-map.patch</filename>
            <type>text/plain</type>
            <size>27626</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Njk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTA0LTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgdGlsZSBjb3ZlcmFn
ZSBtYXAgaW50byBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzE0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3Vi
bGF5ZXJzT2ZMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ6
OnBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FM
YXllckNvbnRlbnRzT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZv
cm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KToKKyAgICAg
ICAgCisgICAgICAgICAgICBBZGRlZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIHNvbWUgb2Yg
dGhlc2UgdG8gbWFrZSBjbGllbnRzIGxlc3MgbWVzc3kuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29u
dHJvbGxlcjo6flRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9s
bGVyOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVDb250cm9sbGVyOjpzZXRUaWxlZFNjcm9sbGluZ0luZGljYXRvclBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp1cGRhdGVUaWxlQ292ZXJhZ2VNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ292ZXJhZ2VNYXAu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnNldFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6bGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ292ZXJhZ2VNYXAubW06IEFkZGVkLgorICAg
ICAgICAKKyAgICAgICAgICAgIFRoZSBuZXcgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVD
b3ZlcmFnZU1hcDo6flRpbGVDb3ZlcmFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292
ZXJhZ2VNYXA6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBs
YXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvdmVy
YWdlTWFwOjpwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVHcmlkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVHcmlkLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OmRy
YXdUaWxlTWFwQ29udGVudHMpOgorCiAyMDE0LTA0LTA4ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KIAogICAgICAgICBUdXJuIE1TRSBvbiBieSBkZWZhdWx0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjY4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTYwNTAsNiArNjA1MCw4IEBACiAJCUU0N0I0QkU5MEU3MTI0
MTYwMDAzODg1NCAvKiBDYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdCNEJFNzBFNzEyNDE2MDAwMzg4NTQgLyog
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwICovOyB9OwogCQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJB
RkIgLyogRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZCIC8qIERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDdFMjc2ODE2MDM2RURDMDBFRTJBRkIgLyogRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgKi87IH07CisJCUU0ODMwQTM5MThGNEM1OTQwMDE1NEExQiAv
KiBUaWxlQ292ZXJhZ2VNYXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDgzMEEzODE4RjRDNTk0MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFwLm1t
ICovOyB9OworCQlFNDgzMEEzRDE4RjRDNUI3MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgzMEEzQzE4
RjRDNUI3MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFwLmggKi87IH07CiAJCUU0ODk0NEEyMTgw
QjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBT
aW1wbGVMaW5lTGF5b3V0LmNwcCAqLzsgfTsKIAkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8q
IFNpbXBsZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0ODk0NEExMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5NDZF
QUUxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDk0NkVBQzE1NkU2NEREMDBEMzI5N0Yg
LyogU3R5bGVSdWxlSW1wb3J0LmNwcCAqLzsgfTsKQEAgLTEzNDM1LDYgKzEzNDM3LDggQEAKIAkJ
RTQ3QjRCRTcwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291cmNlSGFuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlSGFuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZC
IC8qIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTQ4MzBBMzgxOEY0QzU5NDAwMTU0QTFCIC8qIFRpbGVDb3ZlcmFnZU1hcC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRpbGVDb3ZlcmFnZU1hcC5t
bTsgcGF0aCA9IGNhL21hYy9UaWxlQ292ZXJhZ2VNYXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUU0ODMwQTNDMThGNEM1QjcwMDE1NEExQiAvKiBUaWxlQ292ZXJhZ2VNYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGlsZUNvdmVyYWdlTWFwLmg7IHBhdGgg
PSBjYS9tYWMvVGlsZUNvdmVyYWdlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg5NDRBMTE4MEI1N0Q4MDBGMTY1RDggLyogU2lt
cGxlTGluZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVM
aW5lTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTQ2RUFDMTU2RTY0
REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3R5bGVSdWxlSW1wb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1NjE5LDYgKzE1NjIzLDggQEAKIAkJCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4
QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tICovLAogCQkJCTFBQTcxNjA5MTQ5QkM0REIwMDE2
RUMxOSAvKiBUaWxlQ29udHJvbGxlci5oICovLAogCQkJCTFBQTcxNjA4MTQ5QkM0REEwMDE2RUMx
OSAvKiBUaWxlQ29udHJvbGxlci5tbSAqLywKKwkJCQlFNDgzMEEzQzE4RjRDNUI3MDAxNTRBMUIg
LyogVGlsZUNvdmVyYWdlTWFwLmggKi8sCisJCQkJRTQ4MzBBMzgxOEY0QzU5NDAwMTU0QTFCIC8q
IFRpbGVDb3ZlcmFnZU1hcC5tbSAqLywKIAkJCQlFNEMyNzRDQjE4RTk4OEY1MDA2MDJDNzYgLyog
VGlsZUdyaWQuaCAqLywKIAkJCQlFNEMyNzRDOTE4RTk4OEVBMDA2MDJDNzYgLyogVGlsZUdyaWQu
bW0gKi8sCiAJCQkJMEY1ODBGQTExNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xh
eWVyLmggKi8sCkBAIC0yNDY4NCw2ICsyNDY5MCw3IEBACiAJCQkJQjJGQTNEQjcwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQjkwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNEQkIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0FyY1JlbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTQ4MzBBM0QxOEY0QzVCNzAwMTU0QTFCIC8qIFRpbGVDb3ZlcmFnZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0
aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkYwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNEQzEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjg2Niw2ICsyNjg3Myw3IEBACiAJCQkJRTEyNUY4MzUxODIy
RjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5
QUMzRjkxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUY4MEI4NzE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFNDgzMEEzOTE4RjRDNTk0MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFw
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2NEZBQTUxODMxNUUxQTAwREI0RTYxIC8qIENyeXB0
b0tleVJTQU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI1Rjg1OTE4MkMxQUE2MDBEODRD
RDkgLyogQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
QUU5RjkwRjE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCShyZXZpc2lvbiAxNjY4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTkgKzM2LDE5IEBAIGNsYXNzIFBsYXRmb3JtQ0FM
YXllcjsKIAogY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNB
TGF5ZXIqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9M
YXlvdXRDaGFuZ2VzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRmb3JtQ0FMYXllciopIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1RvTGF5b3V0Q2hhbmdlcygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0
aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpID0gMDsKLSAgICB2aXJ0dWFsIEdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsKSB7IH0KKyAgICB2
aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBw
bGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gR3JhcGhp
Y3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxheWVy
KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJl
cGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1D
QUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGludCBwbGF0Zm9y
bUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVyKikgeyByZXR1cm4g
MDsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250
ZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkoUGxhdGZvcm1MYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKSAgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQogICAg
IHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTY2OTU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRS
ZWN0OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgVGlsZUNvdmVyYWdl
TWFwOwogY2xhc3MgVGlsZUdyaWQ7CiAKIHR5cGVkZWYgVmVjdG9yPFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPj4gUGxhdGZvcm1MYXllckxpc3Q7CkBAIC02OSw2ICs3MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHRpbGVzQXJlT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlc0FyZU9wYXF1ZTsg
fQogCiAgICAgUGxhdGZvcm1DQUxheWVyJiByb290TGF5ZXIoKSB7IHJldHVybiAqbV90aWxlQ2Fj
aGVMYXllcjsgfQorICAgIGNvbnN0IFBsYXRmb3JtQ0FMYXllciYgcm9vdExheWVyKCkgY29uc3Qg
eyByZXR1cm4gKm1fdGlsZUNhY2hlTGF5ZXI7IH0KIAogICAgIHZvaWQgc2V0VGlsZURlYnVnQm9y
ZGVyV2lkdGgoZmxvYXQpOwogICAgIHZvaWQgc2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoQ29sb3Ip
OwpAQCAtODQsMTMgKzg2LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgLy8g
UHVibGljIGZvciBUaWxlR3JpZAorICAgIC8vIFB1YmxpYyBmb3IgVGlsZUdyaWQgYW5kIFRpbGVD
b3ZlcmFnZU1hcAogICAgIGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbldp
bmRvdzsgfQogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZVNjYWxlRmFjdG9yOyB9CiAKICAgICBDb2xvciB0aWxlRGVidWdCb3JkZXJDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdGlsZURlYnVnQm9yZGVyQ29sb3I7IH0KICAgICBmbG9hdCB0aWxl
RGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZURlYnVnQm9yZGVyV2lkdGg7
IH0KKyAgICBTY3JvbGxpbmdNb2RlSW5kaWNhdGlvbiBpbmRpY2F0b3JNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRpY2F0b3JNb2RlOyB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RpbGVTaXplOyB9CiAgICAgdmlydHVhbCBJbnRS
ZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTIxLDEzICsxMjQsMTQgQEAgcHVibGlj
OgogCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IElu
dFJlY3QmKTsKIAorICAgIGNvbnN0IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJu
ICptX3RpbGVHcmlkOyB9CisKICAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4+IGNv
bnRhaW5lckxheWVycygpOwogCiBwcml2YXRlOgogICAgIFRpbGVDb250cm9sbGVyKFBsYXRmb3Jt
Q0FMYXllciopOwogCiAgICAgVGlsZUdyaWQmIHRpbGVHcmlkKCkgeyByZXR1cm4gKm1fdGlsZUdy
aWQ7IH0KLSAgICBjb25zdCBUaWxlR3JpZCYgdGlsZUdyaWQoKSBjb25zdCB7IHJldHVybiAqbV90
aWxlR3JpZDsgfQogCiAgICAgLy8gVGlsZWRCYWNraW5nIG1lbWJlciBmdW5jdGlvbnMuCiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpA
QCAtMTQ5LDIwICsxNTMsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGlsZU1h
cmdpbnMoaW50IG1hcmdpblRvcCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQsIGlu
dCBtYXJnaW5SaWdodCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQK
LSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyUmVzcG9uZHNUb0xheW91dENoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVk
KENGVGltZUludGVydmFsKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6
OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50
c09yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxh
eWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWlu
dENvdW50KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90
aWxlc0FyZU9wYXF1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0Nv
bnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGUg
eyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRh
dGVUaWxlcygpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1DQUxheWVy
RGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2NoZWR1bGVU
aWxlUmV2YWxpZGF0aW9uKGRvdWJsZSBpbnRlcnZhbCk7CkBAIC0xNzAsMjAgKzE2NiwxNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVkc1JldmFsaWRhdGVUaWxlcygpOwogCi0gICAgdm9p
ZCBkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiwgQ0dSZWN0KTsKLQogICAgIFBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duaW5nR3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUNhY2hlTGF5ZXItPm93bmVyKCk7IH0KIAogICAgIFBsYXRmb3JtQ0FMYXllciogbV90aWxl
Q2FjaGVMYXllcjsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3RpbGVkU2Nyb2xsaW5n
SW5kaWNhdG9yTGF5ZXI7IC8vIFVzZWQgZm9yIGNvdmVyYWdlIHZpc3VhbGl6YXRpb24uCi0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVDb3ZlcmFnZU1hcD4gbV9jb3ZlcmFnZU1hcDsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV90aWxlR3JpZDsKIAogICAgIEludFNpemUgbV90
aWxlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV92aXNpYmxlUmVjdDsKICAgICBGbG9hdFJlY3QgbV92
aXNpYmxlUmVjdEF0TGFzdFJldmFsaWRhdGU7Ci0gICAgRmxvYXRQb2ludCBtX3RpbGVkU2Nyb2xs
aW5nSW5kaWNhdG9yUG9zaXRpb247CiAgICAgSW50UmVjdCBtX2JvdW5kc0F0TGFzdFJldmFsaWRh
dGU7CiAKICAgICBUaW1lcjxUaWxlQ29udHJvbGxlcj4gbV90aWxlUmV2YWxpZGF0aW9uVGltZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRy
b2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCShyZXZpc2lvbiAxNjY5NTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkludFJlY3QuaCIKICNpbXBvcnQgIlBs
YXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCAiUmVnaW9uLmgiCisjaW1wb3J0ICJUaWxlQ292ZXJh
Z2VNYXAuaCIKICNpbXBvcnQgIlRpbGVHcmlkLmgiCiAjaWYgIVBMQVRGT1JNKElPUykKICNpbXBv
cnQgIkxheWVyUG9vbC5oIgpAQCAtNDksNiArNTAsNyBAQCBlbnVtIFRpbGVWYWxpZGF0aW9uUG9s
aWN5RmxhZyB7CiAgICAgVW5wYXJlbnRBbGxUaWxlcyA9IDEgPDwgMQogfTsKIAorCiBQYXNzT3du
UHRyPFRpbGVDb250cm9sbGVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXll
ciogcm9vdFBsYXRmb3JtTGF5ZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaWxlQ29u
dHJvbGxlcihyb290UGxhdGZvcm1MYXllcikpOwpAQCAtODQsOSArODYsNiBAQCBUaWxlQ29udHJv
bGxlcjo6flRpbGVDb250cm9sbGVyKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgdGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVyKCkucmVtb3ZlVGlsZUNvbnRyb2xsZXIodGhpcyk7CiAjZW5kaWYK
LQotICAgIGlmIChtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpCi0gICAgICAgIG1fdGls
ZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllci0+c2V0T3duZXIobnVsbHB0cik7CiB9CiAKIHZvaWQg
VGlsZUNvbnRyb2xsZXI6OnRpbGVDYWNoZUxheWVyQm91bmRzQ2hhbmdlZCgpCkBAIC0xMTIsMTEg
KzExMSw2IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnBsYXRmb3JtQ0FMYXllclBhaW4KICAgICAg
ICAgV2ViVGhyZWFkTG9jaygpOwogI2VuZGlmCiAKLSAgICBpZiAocGxhdGZvcm1DQUxheWVyID09
IG1fdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllci5nZXQoKSkgewotICAgICAgICB0aWxlR3Jp
ZCgpLmRyYXdUaWxlTWFwQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbV90aWxl
ZFNjcm9sbGluZ0luZGljYXRvckxheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKIApAQCAtMjE0LDkgKzIwOCw5IEBAIGJvb2wgVGlsZUNvbnRyb2xsZXI6OnRp
bGVzV291bGRDaGFuZ2VGb3IKIAogdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0VGlsZWRTY3JvbGxp
bmdJbmRpY2F0b3JQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBp
ZiAobV90aWxlZFNjcm9sbGluZ0luZGljYXRvclBvc2l0aW9uID09IHBvc2l0aW9uKQorICAgIGlm
ICghbV9jb3ZlcmFnZU1hcCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fdGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIG1fY292ZXJhZ2VNYXAtPnNldFBvc2l0
aW9uKHBvc2l0aW9uKTsKICAgICB1cGRhdGVUaWxlQ292ZXJhZ2VNYXAoKTsKIH0KIApAQCAtNDEy
LDQ2ICs0MDYsOCBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXROZWVkc1JldmFsaWRhdGVUCiAK
IHZvaWQgVGlsZUNvbnRyb2xsZXI6OnVwZGF0ZVRpbGVDb3ZlcmFnZU1hcCgpCiB7Ci0gICAgaWYg
KCFtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBG
bG9hdFJlY3QgY29udGFpbmVyQm91bmRzID0gYm91bmRzKCk7Ci0gICAgRmxvYXRSZWN0IHZpc2li
bGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJlY3QoKTsKLSAgICB2aXNpYmxlUmVjdC5jb250cmFjdCg0
LCA0KTsgLy8gTGF5ZXIgaXMgcG9zaXRpb25lZCAycHggZnJvbSB0b3AgYW5kIGxlZnQgZWRnZXMu
Ci0KLSAgICBmbG9hdCB3aWR0aFNjYWxlID0gMTsKLSAgICBmbG9hdCBzY2FsZSA9IDE7Ci0gICAg
aWYgKCFjb250YWluZXJCb3VuZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHdpZHRoU2NhbGUgPSBz
dGQ6Om1pbjxmbG9hdD4odmlzaWJsZVJlY3Qud2lkdGgoKSAvIGNvbnRhaW5lckJvdW5kcy53aWR0
aCgpLCAwLjEpOwotICAgICAgICBzY2FsZSA9IHN0ZDo6bWluKHdpZHRoU2NhbGUsIHZpc2libGVS
ZWN0LmhlaWdodCgpIC8gY29udGFpbmVyQm91bmRzLmhlaWdodCgpKTsKLSAgICB9Ci0gICAgCi0g
ICAgZmxvYXQgaW5kaWNhdG9yU2NhbGUgPSBzY2FsZSAqIHRpbGVHcmlkKCkuc2NhbGUoKTsKLSAg
ICBGbG9hdFJlY3QgbWFwQm91bmRzID0gY29udGFpbmVyQm91bmRzOwotICAgIG1hcEJvdW5kcy5z
Y2FsZShpbmRpY2F0b3JTY2FsZSwgaW5kaWNhdG9yU2NhbGUpOwotCi0gICAgbV90aWxlZFNjcm9s
bGluZ0luZGljYXRvckxheWVyLT5zZXRQb3NpdGlvbihtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
UG9zaXRpb24gKyBGbG9hdFBvaW50KDIsIDIpKTsKLSAgICBtX3RpbGVkU2Nyb2xsaW5nSW5kaWNh
dG9yTGF5ZXItPnNldEJvdW5kcyhtYXBCb3VuZHMpOwotICAgIG1fdGlsZWRTY3JvbGxpbmdJbmRp
Y2F0b3JMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0KLSAgICB2aXNpYmxlUmVjdC5zY2FsZShp
bmRpY2F0b3JTY2FsZSwgaW5kaWNhdG9yU2NhbGUpOwotICAgIHZpc2libGVSZWN0LmV4cGFuZCgy
LCAyKTsKLSAgICBtX3Zpc2libGVSZWN0SW5kaWNhdG9yTGF5ZXItPnNldFBvc2l0aW9uKHZpc2li
bGVSZWN0LmxvY2F0aW9uKCkpOwotICAgIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci0+c2V0
Qm91bmRzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpc2libGVSZWN0LnNpemUoKSkpOwotCi0g
ICAgQ29sb3IgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xvcjsKLSAgICBzd2l0Y2ggKG1faW5kaWNh
dG9yTW9kZSkgewotICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZTdHlsZUlu
ZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcigyNTUs
IDAsIDApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN5bmNocm9ub3VzU2Nyb2xsaW5nQmVj
YXVzZU9mRXZlbnRIYW5kbGVyc0luZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNh
dG9yQ29sb3IgPSBDb2xvcigyNTUsIDI1NSwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QXN5bmNTY3JvbGxpbmdJbmRpY2F0aW9uOgotICAgICAgICB2aXNpYmxlUmVjdEluZGljYXRvckNv
bG9yID0gQ29sb3IoMCwgMjAwLCAwKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbV92
aXNpYmxlUmVjdEluZGljYXRvckxheWVyLT5zZXRCb3JkZXJDb2xvcih2aXNpYmxlUmVjdEluZGlj
YXRvckNvbG9yKTsKKyAgICBpZiAobV9jb3ZlcmFnZU1hcCkKKyAgICAgICAgbV9jb3ZlcmFnZU1h
cC0+dXBkYXRlKCk7CiB9CiAKIEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OnRpbGVHcmlkRXh0ZW50
KCkgY29uc3QKQEAgLTQ3MiwyNSArNDI4LDEwIEBAIEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OnRp
bGVDb3ZlcmFnZVJlY3QKIAogUGxhdGZvcm1DQUxheWVyKiBUaWxlQ29udHJvbGxlcjo6dGlsZWRT
Y3JvbGxpbmdJbmRpY2F0b3JMYXllcigpCiB7Ci0gICAgaWYgKCFtX3RpbGVkU2Nyb2xsaW5nSW5k
aWNhdG9yTGF5ZXIpIHsKLSAgICAgICAgbV90aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyID0g
bV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlU2ltcGxlTGF5ZXIsIHRoaXMpOwotICAgICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5k
aWNhdG9yTGF5ZXItPnNldE9wYWNpdHkoMC43NSk7Ci0gICAgICAgIG1fdGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwotICAgICAgICBt
X3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXItPnNldEJvcmRlckNvbG9yKENvbG9yOjpibGFj
ayk7Ci0gICAgICAgIG1fdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllci0+c2V0Qm9yZGVyV2lk
dGgoMSk7Ci0gICAgICAgIG1fdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllci0+c2V0UG9zaXRp
b24oRmxvYXRQb2ludCgyLCAyKSk7Ci0KLSAgICAgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxh
eWVyID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlTGF5ZXIsIG51bGxwdHIpOwotICAgICAgICBtX3Zpc2libGVSZWN0SW5k
aWNhdG9yTGF5ZXItPnNldEJvcmRlcldpZHRoKDIpOwotICAgICAgICBtX3Zpc2libGVSZWN0SW5k
aWNhdG9yTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKLSAgICAgICAgbV92
aXNpYmxlUmVjdEluZGljYXRvckxheWVyLT5zZXRCb3JkZXJDb2xvcihDb2xvcigyNTUsIDAsIDAp
KTsKLQotICAgICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXItPmFwcGVuZFN1Ymxh
eWVyKG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKSk7Ci0KLSAgICAgICAgdXBkYXRl
VGlsZUNvdmVyYWdlTWFwKCk7Ci0gICAgfQorICAgIGlmICghbV9jb3ZlcmFnZU1hcCkKKyAgICAg
ICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhp
cyk7CiAKLSAgICByZXR1cm4gbV90aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyLmdldCgpOwor
ICAgIHJldHVybiAmbV9jb3ZlcmFnZU1hcC0+bGF5ZXIoKTsKIH0KIAogdm9pZCBUaWxlQ29udHJv
bGxlcjo6c2V0U2Nyb2xsaW5nTW9kZUluZGljYXRpb24oU2Nyb2xsaW5nTW9kZUluZGljYXRpb24g
c2Nyb2xsaW5nTW9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9UaWxlQ292ZXJhZ2VNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvdmVyYWdlTWFwLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvdmVyYWdlTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBUaWxlQ292ZXJhZ2VNYXBfaAorI2RlZmluZSBUaWxlQ292ZXJhZ2VNYXBfaAorCisjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
Q0FMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0
UmVjdDsKK2NsYXNzIEludFBvaW50OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIFRpbGVDb250cm9s
bGVyOworCitjbGFzcyBUaWxlQ292ZXJhZ2VNYXAgOiBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBUaWxlQ292ZXJhZ2VNYXAoY29uc3QgVGlsZUNvbnRyb2xsZXIm
KTsKKyAgICB+VGlsZUNvdmVyYWdlTWFwKCk7CisKKyAgICB2b2lkIHVwZGF0ZSgpOworICAgIHZv
aWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9wb3NpdGlvbiA9
IHBvc2l0aW9uOyB9CisKKyAgICBQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKCkgeyByZXR1cm4gbV9s
YXllci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIC8vIFBsYXRmb3JtQ0FMYXllckNsaWVudAor
ICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bjsgfQor
ICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
ZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIGNvbnN0IFRpbGVDb250cm9sbGVyJiBtX2NvbnRyb2xsZXI7CisKKyAgICBSZWY8UGxh
dGZvcm1DQUxheWVyPiBtX2xheWVyOworICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IG1fdmlzaWJs
ZVJlY3RJbmRpY2F0b3JMYXllcjsKKworICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKK307CisK
K30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvVGlsZUNvdmVyYWdlTWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ292ZXJhZ2VNYXAubW0JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvdmVyYWdlTWFwLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRpbGVDb3ZlcmFnZU1hcC5oIgorCisjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgIlRpbGVDb250cm9sbGVyLmgiCisjaW1wb3J0ICJU
aWxlR3JpZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RpbGVDb3ZlcmFnZU1hcDo6VGls
ZUNvdmVyYWdlTWFwKGNvbnN0IFRpbGVDb250cm9sbGVyJiBjb250cm9sbGVyKQorICAgIDogbV9j
b250cm9sbGVyKGNvbnRyb2xsZXIpCisgICAgLCBtX2xheWVyKCpjb250cm9sbGVyLnJvb3RMYXll
cigpLmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBs
ZUxheWVyLCB0aGlzKSkKKyAgICAsIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllcigqY29udHJv
bGxlci5yb290TGF5ZXIoKS5jcmVhdGVDb21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMYXllciwgbnVsbHB0cikpCit7CisgICAgbV9sYXllci5nZXQoKS5zZXRPcGFjaXR5
KDAuNzUpOworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkp
OworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICBt
X2xheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDEpOworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0UG9z
aXRpb24oRmxvYXRQb2ludCgyLCAyKSk7CisgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVy
LmdldCgpLnNldEJvcmRlcldpZHRoKDIpOworICAgIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXll
ci5nZXQoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CisgICAgbV92aXNpYmxlUmVj
dEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKENvbG9yKDI1NSwgMCwgMCkpOwor
CisgICAgbV9sYXllci5nZXQoKS5hcHBlbmRTdWJsYXllcigmbV92aXNpYmxlUmVjdEluZGljYXRv
ckxheWVyLmdldCgpKTsKKworICAgIHVwZGF0ZSgpOworfQorCitUaWxlQ292ZXJhZ2VNYXA6On5U
aWxlQ292ZXJhZ2VNYXAoKQoreworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0T3duZXIobnVsbHB0cik7
Cit9CisKK3ZvaWQgVGlsZUNvdmVyYWdlTWFwOjp1cGRhdGUoKQoreworICAgIEZsb2F0UmVjdCBj
b250YWluZXJCb3VuZHMgPSBtX2NvbnRyb2xsZXIuYm91bmRzKCk7CisgICAgRmxvYXRSZWN0IHZp
c2libGVSZWN0ID0gbV9jb250cm9sbGVyLnZpc2libGVSZWN0KCk7CisgICAgdmlzaWJsZVJlY3Qu
Y29udHJhY3QoNCwgNCk7IC8vIExheWVyIGlzIHBvc2l0aW9uZWQgMnB4IGZyb20gdG9wIGFuZCBs
ZWZ0IGVkZ2VzLgorCisgICAgZmxvYXQgd2lkdGhTY2FsZSA9IDE7CisgICAgZmxvYXQgc2NhbGUg
PSAxOworICAgIGlmICghY29udGFpbmVyQm91bmRzLmlzRW1wdHkoKSkgeworICAgICAgICB3aWR0
aFNjYWxlID0gc3RkOjptaW48ZmxvYXQ+KHZpc2libGVSZWN0LndpZHRoKCkgLyBjb250YWluZXJC
b3VuZHMud2lkdGgoKSwgMC4xKTsKKyAgICAgICAgc2NhbGUgPSBzdGQ6Om1pbih3aWR0aFNjYWxl
LCB2aXNpYmxlUmVjdC5oZWlnaHQoKSAvIGNvbnRhaW5lckJvdW5kcy5oZWlnaHQoKSk7CisgICAg
fQorCisgICAgZmxvYXQgaW5kaWNhdG9yU2NhbGUgPSBzY2FsZSAqIG1fY29udHJvbGxlci50aWxl
R3JpZCgpLnNjYWxlKCk7CisgICAgRmxvYXRSZWN0IG1hcEJvdW5kcyA9IGNvbnRhaW5lckJvdW5k
czsKKyAgICBtYXBCb3VuZHMuc2NhbGUoaW5kaWNhdG9yU2NhbGUsIGluZGljYXRvclNjYWxlKTsK
KworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0UG9zaXRpb24obV9wb3NpdGlvbiArIEZsb2F0UG9pbnQo
MiwgMikpOworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0Qm91bmRzKG1hcEJvdW5kcyk7CisgICAgbV9s
YXllci5nZXQoKS5zZXROZWVkc0Rpc3BsYXkoKTsKKworICAgIHZpc2libGVSZWN0LnNjYWxlKGlu
ZGljYXRvclNjYWxlLCBpbmRpY2F0b3JTY2FsZSk7CisgICAgdmlzaWJsZVJlY3QuZXhwYW5kKDIs
IDIpOworICAgIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci0+c2V0UG9zaXRpb24odmlzaWJs
ZVJlY3QubG9jYXRpb24oKSk7CisgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLT5zZXRC
b3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlzaWJsZVJlY3Quc2l6ZSgpKSk7CisKKyAg
ICBDb2xvciB2aXNpYmxlUmVjdEluZGljYXRvckNvbG9yOworICAgIHN3aXRjaCAobV9jb250cm9s
bGVyLmluZGljYXRvck1vZGUoKSkgeworICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNh
dXNlT2ZTdHlsZUluZGljYXRpb246CisgICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3Ig
PSBDb2xvcigyNTUsIDAsIDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN5bmNocm9ub3Vz
U2Nyb2xsaW5nQmVjYXVzZU9mRXZlbnRIYW5kbGVyc0luZGljYXRpb246CisgICAgICAgIHZpc2li
bGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcigyNTUsIDI1NSwgMCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQXN5bmNTY3JvbGxpbmdJbmRpY2F0aW9uOgorICAgICAgICB2aXNpYmxlUmVj
dEluZGljYXRvckNvbG9yID0gQ29sb3IoMCwgMjAwLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9y
KHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IpOworfQorCit2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FM
YXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmKQoreworICAg
IEFTU0VSVChwbGF0Zm9ybUNBTGF5ZXIgPT0gJm1fbGF5ZXIuZ2V0KCkpOworICAgIG1fY29udHJv
bGxlci50aWxlR3JpZCgpLmRyYXdUaWxlTWFwQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgbV9sYXllci5nZXQoKS5ib3VuZHMoKSk7Cit9CisKK2Zsb2F0IFRpbGVDb3ZlcmFnZU1h
cDo6cGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVy
biBtX2NvbnRyb2xsZXIucm9vdExheWVyKCkub3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGV2aWNl
U2NhbGVGYWN0b3IoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVHcmlkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVHcmlkLmgJKHJldmlzaW9uIDE2Njk1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlR3JpZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgcmV0YWluZWRUaWxl
QmFja2luZ1N0b3JlTWVtb3J5KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmLCBD
R1JlY3QgbGF5ZXJCb3VuZHMpOworICAgIHZvaWQgZHJhd1RpbGVNYXBDb250ZW50cyhDR0NvbnRl
eHRSZWYsIENHUmVjdCBsYXllckJvdW5kcykgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nv
aG9ydExpc3Quc2l6ZSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvVGlsZUdyaWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVHcmlkLm1tCShyZXZpc2lvbiAxNjY5NTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUdyaWQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU5OCw3ICs1OTgsNyBAQCBJbnRSZWN0IFRpbGVHcmlkOjp0aWxlQ292ZXJhZ2VS
ZWN0KCkgY29uCiAgICAgcmV0dXJuIGNvdmVyYWdlUmVjdEluTGF5ZXJDb29yZHM7CiB9CiAKLXZv
aWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENH
UmVjdCBsYXllckJvdW5kcykKK3ZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uc3QKIHsKICAgICBDR0Nv
bnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgMC4zLCAwLjMsIDAuMywgMSk7CiAgICAgQ0dD
b250ZXh0RmlsbFJlY3QoY29udGV4dCwgbGF5ZXJCb3VuZHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228928</attachid>
            <date>2014-04-08 20:18:48 -0700</date>
            <delta_ts>2014-04-08 21:31:39 -0700</delta_ts>
            <desc>make it build on release</desc>
            <filename>tile-coverage-map-2.patch</filename>
            <type>text/plain</type>
            <size>27503</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Njk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTA0LTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgdGlsZSBjb3ZlcmFn
ZSBtYXAgaW50byBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzE0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3Vi
bGF5ZXJzT2ZMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ6
OnBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FM
YXllckNvbnRlbnRzT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZv
cm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KToKKyAgICAg
ICAgCisgICAgICAgICAgICBBZGRlZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIHNvbWUgb2Yg
dGhlc2UgdG8gbWFrZSBjbGllbnRzIGxlc3MgbWVzc3kuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29u
dHJvbGxlcjo6flRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9s
bGVyOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVDb250cm9sbGVyOjpzZXRUaWxlZFNjcm9sbGluZ0luZGljYXRvclBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp1cGRhdGVUaWxlQ292ZXJhZ2VNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ292ZXJhZ2VNYXAu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnNldFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6bGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ292ZXJhZ2VNYXAubW06IEFkZGVkLgorICAg
ICAgICAKKyAgICAgICAgICAgIFRoZSBuZXcgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVD
b3ZlcmFnZU1hcDo6flRpbGVDb3ZlcmFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292
ZXJhZ2VNYXA6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBs
YXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvdmVy
YWdlTWFwOjpwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVHcmlkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVHcmlkLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OmRy
YXdUaWxlTWFwQ29udGVudHMpOgorCiAyMDE0LTA0LTA4ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KIAogICAgICAgICBUdXJuIE1TRSBvbiBieSBkZWZhdWx0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjY4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTYwNTAsNiArNjA1MCw4IEBACiAJCUU0N0I0QkU5MEU3MTI0
MTYwMDAzODg1NCAvKiBDYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdCNEJFNzBFNzEyNDE2MDAwMzg4NTQgLyog
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwICovOyB9OwogCQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJB
RkIgLyogRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZCIC8qIERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDdFMjc2ODE2MDM2RURDMDBFRTJBRkIgLyogRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgKi87IH07CisJCUU0ODMwQTM5MThGNEM1OTQwMDE1NEExQiAv
KiBUaWxlQ292ZXJhZ2VNYXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDgzMEEzODE4RjRDNTk0MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFwLm1t
ICovOyB9OworCQlFNDgzMEEzRDE4RjRDNUI3MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgzMEEzQzE4
RjRDNUI3MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFwLmggKi87IH07CiAJCUU0ODk0NEEyMTgw
QjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBT
aW1wbGVMaW5lTGF5b3V0LmNwcCAqLzsgfTsKIAkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8q
IFNpbXBsZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0ODk0NEExMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5NDZF
QUUxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDk0NkVBQzE1NkU2NEREMDBEMzI5N0Yg
LyogU3R5bGVSdWxlSW1wb3J0LmNwcCAqLzsgfTsKQEAgLTEzNDM1LDYgKzEzNDM3LDggQEAKIAkJ
RTQ3QjRCRTcwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291cmNlSGFuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlSGFuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZC
IC8qIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTQ4MzBBMzgxOEY0QzU5NDAwMTU0QTFCIC8qIFRpbGVDb3ZlcmFnZU1hcC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRpbGVDb3ZlcmFnZU1hcC5t
bTsgcGF0aCA9IGNhL21hYy9UaWxlQ292ZXJhZ2VNYXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUU0ODMwQTNDMThGNEM1QjcwMDE1NEExQiAvKiBUaWxlQ292ZXJhZ2VNYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGlsZUNvdmVyYWdlTWFwLmg7IHBhdGgg
PSBjYS9tYWMvVGlsZUNvdmVyYWdlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg5NDRBMTE4MEI1N0Q4MDBGMTY1RDggLyogU2lt
cGxlTGluZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVM
aW5lTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTQ2RUFDMTU2RTY0
REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3R5bGVSdWxlSW1wb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1NjE5LDYgKzE1NjIzLDggQEAKIAkJCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4
QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tICovLAogCQkJCTFBQTcxNjA5MTQ5QkM0REIwMDE2
RUMxOSAvKiBUaWxlQ29udHJvbGxlci5oICovLAogCQkJCTFBQTcxNjA4MTQ5QkM0REEwMDE2RUMx
OSAvKiBUaWxlQ29udHJvbGxlci5tbSAqLywKKwkJCQlFNDgzMEEzQzE4RjRDNUI3MDAxNTRBMUIg
LyogVGlsZUNvdmVyYWdlTWFwLmggKi8sCisJCQkJRTQ4MzBBMzgxOEY0QzU5NDAwMTU0QTFCIC8q
IFRpbGVDb3ZlcmFnZU1hcC5tbSAqLywKIAkJCQlFNEMyNzRDQjE4RTk4OEY1MDA2MDJDNzYgLyog
VGlsZUdyaWQuaCAqLywKIAkJCQlFNEMyNzRDOTE4RTk4OEVBMDA2MDJDNzYgLyogVGlsZUdyaWQu
bW0gKi8sCiAJCQkJMEY1ODBGQTExNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xh
eWVyLmggKi8sCkBAIC0yNDY4NCw2ICsyNDY5MCw3IEBACiAJCQkJQjJGQTNEQjcwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQjkwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNEQkIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0FyY1JlbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTQ4MzBBM0QxOEY0QzVCNzAwMTU0QTFCIC8qIFRpbGVDb3ZlcmFnZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0
aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkYwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNEQzEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjg2Niw2ICsyNjg3Myw3IEBACiAJCQkJRTEyNUY4MzUxODIy
RjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5
QUMzRjkxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUY4MEI4NzE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFNDgzMEEzOTE4RjRDNTk0MDAxNTRBMUIgLyogVGlsZUNvdmVyYWdlTWFw
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2NEZBQTUxODMxNUUxQTAwREI0RTYxIC8qIENyeXB0
b0tleVJTQU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI1Rjg1OTE4MkMxQUE2MDBEODRD
RDkgLyogQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
QUU5RjkwRjE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCShyZXZpc2lvbiAxNjY4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTkgKzM2LDE5IEBAIGNsYXNzIFBsYXRmb3JtQ0FM
YXllcjsKIAogY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNB
TGF5ZXIqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9M
YXlvdXRDaGFuZ2VzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRmb3JtQ0FMYXllciopIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1RvTGF5b3V0Q2hhbmdlcygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0
aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpID0gMDsKLSAgICB2aXJ0dWFsIEdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsKSB7IH0KKyAgICB2
aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBw
bGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gR3JhcGhp
Y3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxheWVy
KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJl
cGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1D
QUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGludCBwbGF0Zm9y
bUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVyKikgeyByZXR1cm4g
MDsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250
ZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkoUGxhdGZvcm1MYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKSAgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQogICAg
IHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTY2OTU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRS
ZWN0OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgVGlsZUNvdmVyYWdl
TWFwOwogY2xhc3MgVGlsZUdyaWQ7CiAKIHR5cGVkZWYgVmVjdG9yPFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPj4gUGxhdGZvcm1MYXllckxpc3Q7CkBAIC02OSw2ICs3MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHRpbGVzQXJlT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlc0FyZU9wYXF1ZTsg
fQogCiAgICAgUGxhdGZvcm1DQUxheWVyJiByb290TGF5ZXIoKSB7IHJldHVybiAqbV90aWxlQ2Fj
aGVMYXllcjsgfQorICAgIGNvbnN0IFBsYXRmb3JtQ0FMYXllciYgcm9vdExheWVyKCkgY29uc3Qg
eyByZXR1cm4gKm1fdGlsZUNhY2hlTGF5ZXI7IH0KIAogICAgIHZvaWQgc2V0VGlsZURlYnVnQm9y
ZGVyV2lkdGgoZmxvYXQpOwogICAgIHZvaWQgc2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoQ29sb3Ip
OwpAQCAtODQsMTMgKzg2LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgLy8g
UHVibGljIGZvciBUaWxlR3JpZAorICAgIC8vIFB1YmxpYyBmb3IgVGlsZUdyaWQgYW5kIFRpbGVD
b3ZlcmFnZU1hcAogICAgIGJvb2wgaXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbldp
bmRvdzsgfQogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZVNjYWxlRmFjdG9yOyB9CiAKICAgICBDb2xvciB0aWxlRGVidWdCb3JkZXJDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdGlsZURlYnVnQm9yZGVyQ29sb3I7IH0KICAgICBmbG9hdCB0aWxl
RGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZURlYnVnQm9yZGVyV2lkdGg7
IH0KKyAgICBTY3JvbGxpbmdNb2RlSW5kaWNhdGlvbiBpbmRpY2F0b3JNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRpY2F0b3JNb2RlOyB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RpbGVTaXplOyB9CiAgICAgdmlydHVhbCBJbnRS
ZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTIxLDEzICsxMjQsMTQgQEAgcHVibGlj
OgogCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IElu
dFJlY3QmKTsKIAorICAgIGNvbnN0IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJu
ICptX3RpbGVHcmlkOyB9CisKICAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4+IGNv
bnRhaW5lckxheWVycygpOwogCiBwcml2YXRlOgogICAgIFRpbGVDb250cm9sbGVyKFBsYXRmb3Jt
Q0FMYXllciopOwogCiAgICAgVGlsZUdyaWQmIHRpbGVHcmlkKCkgeyByZXR1cm4gKm1fdGlsZUdy
aWQ7IH0KLSAgICBjb25zdCBUaWxlR3JpZCYgdGlsZUdyaWQoKSBjb25zdCB7IHJldHVybiAqbV90
aWxlR3JpZDsgfQogCiAgICAgLy8gVGlsZWRCYWNraW5nIG1lbWJlciBmdW5jdGlvbnMuCiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpA
QCAtMTQ5LDIwICsxNTMsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGlsZU1h
cmdpbnMoaW50IG1hcmdpblRvcCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQsIGlu
dCBtYXJnaW5SaWdodCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQK
LSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyUmVzcG9uZHNUb0xheW91dENoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVk
KENGVGltZUludGVydmFsKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6
OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50
c09yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxh
eWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWlu
dENvdW50KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90
aWxlc0FyZU9wYXF1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0Nv
bnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGUg
eyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRh
dGVUaWxlcygpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1DQUxheWVy
RGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2NoZWR1bGVU
aWxlUmV2YWxpZGF0aW9uKGRvdWJsZSBpbnRlcnZhbCk7CkBAIC0xNzAsMjAgKzE2NiwxNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVkc1JldmFsaWRhdGVUaWxlcygpOwogCi0gICAgdm9p
ZCBkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiwgQ0dSZWN0KTsKLQogICAgIFBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duaW5nR3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUNhY2hlTGF5ZXItPm93bmVyKCk7IH0KIAogICAgIFBsYXRmb3JtQ0FMYXllciogbV90aWxl
Q2FjaGVMYXllcjsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3RpbGVkU2Nyb2xsaW5n
SW5kaWNhdG9yTGF5ZXI7IC8vIFVzZWQgZm9yIGNvdmVyYWdlIHZpc3VhbGl6YXRpb24uCi0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVDb3ZlcmFnZU1hcD4gbV9jb3ZlcmFnZU1hcDsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV90aWxlR3JpZDsKIAogICAgIEludFNpemUgbV90
aWxlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV92aXNpYmxlUmVjdDsKICAgICBGbG9hdFJlY3QgbV92
aXNpYmxlUmVjdEF0TGFzdFJldmFsaWRhdGU7Ci0gICAgRmxvYXRQb2ludCBtX3RpbGVkU2Nyb2xs
aW5nSW5kaWNhdG9yUG9zaXRpb247CiAgICAgSW50UmVjdCBtX2JvdW5kc0F0TGFzdFJldmFsaWRh
dGU7CiAKICAgICBUaW1lcjxUaWxlQ29udHJvbGxlcj4gbV90aWxlUmV2YWxpZGF0aW9uVGltZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRy
b2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCShyZXZpc2lvbiAxNjY5NTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkludFJlY3QuaCIKICNpbXBvcnQgIlBs
YXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCAiUmVnaW9uLmgiCisjaW1wb3J0ICJUaWxlQ292ZXJh
Z2VNYXAuaCIKICNpbXBvcnQgIlRpbGVHcmlkLmgiCiAjaWYgIVBMQVRGT1JNKElPUykKICNpbXBv
cnQgIkxheWVyUG9vbC5oIgpAQCAtODQsOSArODUsNiBAQCBUaWxlQ29udHJvbGxlcjo6flRpbGVD
b250cm9sbGVyKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgdGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVyKCkucmVtb3ZlVGlsZUNvbnRyb2xsZXIodGhpcyk7CiAjZW5kaWYKLQotICAgIGlmICht
X3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpCi0gICAgICAgIG1fdGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JMYXllci0+c2V0T3duZXIobnVsbHB0cik7CiB9CiAKIHZvaWQgVGlsZUNvbnRyb2xs
ZXI6OnRpbGVDYWNoZUxheWVyQm91bmRzQ2hhbmdlZCgpCkBAIC0xMTIsMTEgKzExMCw2IEBAIHZv
aWQgVGlsZUNvbnRyb2xsZXI6OnBsYXRmb3JtQ0FMYXllclBhaW4KICAgICAgICAgV2ViVGhyZWFk
TG9jaygpOwogI2VuZGlmCiAKLSAgICBpZiAocGxhdGZvcm1DQUxheWVyID09IG1fdGlsZWRTY3Jv
bGxpbmdJbmRpY2F0b3JMYXllci5nZXQoKSkgewotICAgICAgICB0aWxlR3JpZCgpLmRyYXdUaWxl
TWFwQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbV90aWxlZFNjcm9sbGluZ0lu
ZGljYXRvckxheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
IApAQCAtMjE0LDEwICsyMDcsMTAgQEAgYm9vbCBUaWxlQ29udHJvbGxlcjo6dGlsZXNXb3VsZENo
YW5nZUZvcgogCiB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRUaWxlZFNjcm9sbGluZ0luZGljYXRv
clBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewotICAgIGlmIChtX3RpbGVk
U2Nyb2xsaW5nSW5kaWNhdG9yUG9zaXRpb24gPT0gcG9zaXRpb24pCisgICAgaWYgKCFtX2NvdmVy
YWdlTWFwKQogICAgICAgICByZXR1cm47Ci0gICAgbV90aWxlZFNjcm9sbGluZ0luZGljYXRvclBv
c2l0aW9uID0gcG9zaXRpb247Ci0gICAgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CisgICAgbV9j
b3ZlcmFnZU1hcC0+c2V0UG9zaXRpb24ocG9zaXRpb24pOworICAgIG1fY292ZXJhZ2VNYXAtPnVw
ZGF0ZSgpOwogfQogCiB2b2lkIFRpbGVDb250cm9sbGVyOjpwcmVwb3B1bGF0ZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpAQCAtNDEyLDQ2ICs0MDUsOCBAQCB2b2lkIFRpbGVDb250cm9sbGVy
OjpzZXROZWVkc1JldmFsaWRhdGVUCiAKIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnVwZGF0ZVRpbGVD
b3ZlcmFnZU1hcCgpCiB7Ci0gICAgaWYgKCFtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIp
Ci0gICAgICAgIHJldHVybjsKLSAgICBGbG9hdFJlY3QgY29udGFpbmVyQm91bmRzID0gYm91bmRz
KCk7Ci0gICAgRmxvYXRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJlY3QoKTsKLSAg
ICB2aXNpYmxlUmVjdC5jb250cmFjdCg0LCA0KTsgLy8gTGF5ZXIgaXMgcG9zaXRpb25lZCAycHgg
ZnJvbSB0b3AgYW5kIGxlZnQgZWRnZXMuCi0KLSAgICBmbG9hdCB3aWR0aFNjYWxlID0gMTsKLSAg
ICBmbG9hdCBzY2FsZSA9IDE7Ci0gICAgaWYgKCFjb250YWluZXJCb3VuZHMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIHdpZHRoU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4odmlzaWJsZVJlY3Qud2lkdGgo
KSAvIGNvbnRhaW5lckJvdW5kcy53aWR0aCgpLCAwLjEpOwotICAgICAgICBzY2FsZSA9IHN0ZDo6
bWluKHdpZHRoU2NhbGUsIHZpc2libGVSZWN0LmhlaWdodCgpIC8gY29udGFpbmVyQm91bmRzLmhl
aWdodCgpKTsKLSAgICB9Ci0gICAgCi0gICAgZmxvYXQgaW5kaWNhdG9yU2NhbGUgPSBzY2FsZSAq
IHRpbGVHcmlkKCkuc2NhbGUoKTsKLSAgICBGbG9hdFJlY3QgbWFwQm91bmRzID0gY29udGFpbmVy
Qm91bmRzOwotICAgIG1hcEJvdW5kcy5zY2FsZShpbmRpY2F0b3JTY2FsZSwgaW5kaWNhdG9yU2Nh
bGUpOwotCi0gICAgbV90aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyLT5zZXRQb3NpdGlvbiht
X3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yUG9zaXRpb24gKyBGbG9hdFBvaW50KDIsIDIpKTsKLSAg
ICBtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXItPnNldEJvdW5kcyhtYXBCb3VuZHMpOwot
ICAgIG1fdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0K
LSAgICB2aXNpYmxlUmVjdC5zY2FsZShpbmRpY2F0b3JTY2FsZSwgaW5kaWNhdG9yU2NhbGUpOwot
ICAgIHZpc2libGVSZWN0LmV4cGFuZCgyLCAyKTsKLSAgICBtX3Zpc2libGVSZWN0SW5kaWNhdG9y
TGF5ZXItPnNldFBvc2l0aW9uKHZpc2libGVSZWN0LmxvY2F0aW9uKCkpOwotICAgIG1fdmlzaWJs
ZVJlY3RJbmRpY2F0b3JMYXllci0+c2V0Qm91bmRzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZp
c2libGVSZWN0LnNpemUoKSkpOwotCi0gICAgQ29sb3IgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xv
cjsKLSAgICBzd2l0Y2ggKG1faW5kaWNhdG9yTW9kZSkgewotICAgIGNhc2UgU3luY2hyb25vdXNT
Y3JvbGxpbmdCZWNhdXNlT2ZTdHlsZUluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5k
aWNhdG9yQ29sb3IgPSBDb2xvcigyNTUsIDAsIDApOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFN5bmNocm9ub3VzU2Nyb2xsaW5nQmVjYXVzZU9mRXZlbnRIYW5kbGVyc0luZGljYXRpb246Ci0g
ICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcigyNTUsIDI1NSwgMCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXN5bmNTY3JvbGxpbmdJbmRpY2F0aW9uOgotICAgICAg
ICB2aXNpYmxlUmVjdEluZGljYXRvckNvbG9yID0gQ29sb3IoMCwgMjAwLCAwKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLT5zZXRCb3Jk
ZXJDb2xvcih2aXNpYmxlUmVjdEluZGljYXRvckNvbG9yKTsKKyAgICBpZiAobV9jb3ZlcmFnZU1h
cCkKKyAgICAgICAgbV9jb3ZlcmFnZU1hcC0+dXBkYXRlKCk7CiB9CiAKIEludFJlY3QgVGlsZUNv
bnRyb2xsZXI6OnRpbGVHcmlkRXh0ZW50KCkgY29uc3QKQEAgLTQ3MiwyNSArNDI3LDEwIEBAIElu
dFJlY3QgVGlsZUNvbnRyb2xsZXI6OnRpbGVDb3ZlcmFnZVJlY3QKIAogUGxhdGZvcm1DQUxheWVy
KiBUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllcigpCiB7Ci0gICAg
aWYgKCFtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpIHsKLSAgICAgICAgbV90aWxlZFNj
cm9sbGluZ0luZGljYXRvckxheWVyID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJs
ZUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXIsIHRoaXMpOwotICAg
ICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXItPnNldE9wYWNpdHkoMC43NSk7Ci0g
ICAgICAgIG1fdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxv
YXRQb2ludDNEKCkpOwotICAgICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXItPnNl
dEJvcmRlckNvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgIG1fdGlsZWRTY3JvbGxpbmdJbmRp
Y2F0b3JMYXllci0+c2V0Qm9yZGVyV2lkdGgoMSk7Ci0gICAgICAgIG1fdGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyLCAyKSk7Ci0KLSAgICAgICAg
bV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29t
cGF0aWJsZUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIG51bGxwdHIpOwot
ICAgICAgICBtX3Zpc2libGVSZWN0SW5kaWNhdG9yTGF5ZXItPnNldEJvcmRlcldpZHRoKDIpOwot
ICAgICAgICBtX3Zpc2libGVSZWN0SW5kaWNhdG9yTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQzRCgpKTsKLSAgICAgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLT5zZXRCb3Jk
ZXJDb2xvcihDb2xvcigyNTUsIDAsIDApKTsKLQotICAgICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5k
aWNhdG9yTGF5ZXItPmFwcGVuZFN1YmxheWVyKG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci5n
ZXQoKSk7Ci0KLSAgICAgICAgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7Ci0gICAgfQorICAgIGlm
ICghbV9jb3ZlcmFnZU1hcCkKKyAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFrZV91bmlx
dWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKLSAgICByZXR1cm4gbV90aWxlZFNjcm9sbGlu
Z0luZGljYXRvckxheWVyLmdldCgpOworICAgIHJldHVybiAmbV9jb3ZlcmFnZU1hcC0+bGF5ZXIo
KTsKIH0KIAogdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0U2Nyb2xsaW5nTW9kZUluZGljYXRpb24o
U2Nyb2xsaW5nTW9kZUluZGljYXRpb24gc2Nyb2xsaW5nTW9kZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ292ZXJhZ2VNYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvdmVyYWdl
TWFwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNvdmVyYWdlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUaWxlQ292ZXJhZ2VNYXBfaAorI2RlZmluZSBUaWxl
Q292ZXJhZ2VNYXBfaAorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FM
YXllckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEludFBvaW50OworY2xhc3MgSW50
UmVjdDsKK2NsYXNzIFRpbGVDb250cm9sbGVyOworCitjbGFzcyBUaWxlQ292ZXJhZ2VNYXAgOiBw
dWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBUaWxlQ292ZXJhZ2VN
YXAoY29uc3QgVGlsZUNvbnRyb2xsZXImKTsKKyAgICB+VGlsZUNvdmVyYWdlTWFwKCk7CisKKyAg
ICB2b2lkIHVwZGF0ZSgpOworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYg
cG9zaXRpb24pIHsgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOyB9CisKKyAgICBQbGF0Zm9ybUNBTGF5
ZXImIGxheWVyKCkgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIC8v
IFBsYXRmb3JtQ0FMYXllckNsaWVudAorICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzVG9wRG93bjsgfQorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJD
b250ZW50c09wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRl
bnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVG
YWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGNvbnN0IFRpbGVDb250cm9sbGVyJiBtX2Nv
bnRyb2xsZXI7CisKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBtX2xheWVyOworICAgIFJlZjxQ
bGF0Zm9ybUNBTGF5ZXI+IG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllcjsKKworICAgIEZsb2F0
UG9pbnQgbV9wb3NpdGlvbjsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvdmVyYWdlTWFwLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ292ZXJhZ2VN
YXAubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNvdmVyYWdlTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRpbGVDb3Zl
cmFnZU1hcC5oIgorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgIlRpbGVD
b250cm9sbGVyLmgiCisjaW1wb3J0ICJUaWxlR3JpZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1RpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKGNvbnN0IFRpbGVDb250cm9sbGVy
JiBjb250cm9sbGVyKQorICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCisgICAgLCBtX2xh
eWVyKCpjb250cm9sbGVyLnJvb3RMYXllcigpLmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyLCB0aGlzKSkKKyAgICAsIG1fdmlzaWJsZVJl
Y3RJbmRpY2F0b3JMYXllcigqY29udHJvbGxlci5yb290TGF5ZXIoKS5jcmVhdGVDb21wYXRpYmxl
TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgbnVsbHB0cikpCit7CisgICAg
bV9sYXllci5nZXQoKS5zZXRPcGFjaXR5KDAuNzUpOworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0QW5j
aG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29s
b3IoQ29sb3I6OmJsYWNrKTsKKyAgICBtX2xheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDEpOwor
ICAgIG1fbGF5ZXIuZ2V0KCkuc2V0UG9zaXRpb24oRmxvYXRQb2ludCgyLCAyKSk7CisgICAgbV92
aXNpYmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDIpOworICAgIG1f
dmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
M0QoKSk7CisgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNv
bG9yKENvbG9yKDI1NSwgMCwgMCkpOworCisgICAgbV9sYXllci5nZXQoKS5hcHBlbmRTdWJsYXll
cigmbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpKTsKKworICAgIHVwZGF0ZSgpOwor
fQorCitUaWxlQ292ZXJhZ2VNYXA6On5UaWxlQ292ZXJhZ2VNYXAoKQoreworICAgIG1fbGF5ZXIu
Z2V0KCkuc2V0T3duZXIobnVsbHB0cik7Cit9CisKK3ZvaWQgVGlsZUNvdmVyYWdlTWFwOjp1cGRh
dGUoKQoreworICAgIEZsb2F0UmVjdCBjb250YWluZXJCb3VuZHMgPSBtX2NvbnRyb2xsZXIuYm91
bmRzKCk7CisgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0ID0gbV9jb250cm9sbGVyLnZpc2libGVS
ZWN0KCk7CisgICAgdmlzaWJsZVJlY3QuY29udHJhY3QoNCwgNCk7IC8vIExheWVyIGlzIHBvc2l0
aW9uZWQgMnB4IGZyb20gdG9wIGFuZCBsZWZ0IGVkZ2VzLgorCisgICAgZmxvYXQgd2lkdGhTY2Fs
ZSA9IDE7CisgICAgZmxvYXQgc2NhbGUgPSAxOworICAgIGlmICghY29udGFpbmVyQm91bmRzLmlz
RW1wdHkoKSkgeworICAgICAgICB3aWR0aFNjYWxlID0gc3RkOjptaW48ZmxvYXQ+KHZpc2libGVS
ZWN0LndpZHRoKCkgLyBjb250YWluZXJCb3VuZHMud2lkdGgoKSwgMC4xKTsKKyAgICAgICAgc2Nh
bGUgPSBzdGQ6Om1pbih3aWR0aFNjYWxlLCB2aXNpYmxlUmVjdC5oZWlnaHQoKSAvIGNvbnRhaW5l
ckJvdW5kcy5oZWlnaHQoKSk7CisgICAgfQorCisgICAgZmxvYXQgaW5kaWNhdG9yU2NhbGUgPSBz
Y2FsZSAqIG1fY29udHJvbGxlci50aWxlR3JpZCgpLnNjYWxlKCk7CisgICAgRmxvYXRSZWN0IG1h
cEJvdW5kcyA9IGNvbnRhaW5lckJvdW5kczsKKyAgICBtYXBCb3VuZHMuc2NhbGUoaW5kaWNhdG9y
U2NhbGUsIGluZGljYXRvclNjYWxlKTsKKworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0UG9zaXRpb24o
bV9wb3NpdGlvbiArIEZsb2F0UG9pbnQoMiwgMikpOworICAgIG1fbGF5ZXIuZ2V0KCkuc2V0Qm91
bmRzKG1hcEJvdW5kcyk7CisgICAgbV9sYXllci5nZXQoKS5zZXROZWVkc0Rpc3BsYXkoKTsKKwor
ICAgIHZpc2libGVSZWN0LnNjYWxlKGluZGljYXRvclNjYWxlLCBpbmRpY2F0b3JTY2FsZSk7Cisg
ICAgdmlzaWJsZVJlY3QuZXhwYW5kKDIsIDIpOworICAgIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JM
YXllci0+c2V0UG9zaXRpb24odmlzaWJsZVJlY3QubG9jYXRpb24oKSk7CisgICAgbV92aXNpYmxl
UmVjdEluZGljYXRvckxheWVyLT5zZXRCb3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlz
aWJsZVJlY3Quc2l6ZSgpKSk7CisKKyAgICBDb2xvciB2aXNpYmxlUmVjdEluZGljYXRvckNvbG9y
OworICAgIHN3aXRjaCAobV9jb250cm9sbGVyLmluZGljYXRvck1vZGUoKSkgeworICAgIGNhc2Ug
U3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZTdHlsZUluZGljYXRpb246CisgICAgICAgIHZp
c2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcigyNTUsIDAsIDApOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFN5bmNocm9ub3VzU2Nyb2xsaW5nQmVjYXVzZU9mRXZlbnRIYW5kbGVyc0lu
ZGljYXRpb246CisgICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcigyNTUs
IDI1NSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXN5bmNTY3JvbGxpbmdJbmRpY2F0
aW9uOgorICAgICAgICB2aXNpYmxlUmVjdEluZGljYXRvckNvbG9yID0gQ29sb3IoMCwgMjAwLCAw
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxh
eWVyLmdldCgpLnNldEJvcmRlckNvbG9yKHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IpOworfQor
Cit2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0
Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmKQoreworICAgIEFTU0VSVF9VTlVTRUQocGxhdGZvcm1DQUxheWVyLCBw
bGF0Zm9ybUNBTGF5ZXIgPT0gJm1fbGF5ZXIuZ2V0KCkpOworICAgIG1fY29udHJvbGxlci50aWxl
R3JpZCgpLmRyYXdUaWxlTWFwQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbV9s
YXllci5nZXQoKS5ib3VuZHMoKSk7Cit9CisKK2Zsb2F0IFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZv
cm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRy
b2xsZXIucm9vdExheWVyKCkub3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0
b3IoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1RpbGVHcmlkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVHcmlkLmgJKHJldmlzaW9uIDE2Njk1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlR3JpZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgcmV0YWluZWRUaWxlQmFja2luZ1N0
b3JlTWVtb3J5KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50KCkgY29uc3Q7
CiAKLSAgICB2b2lkIGRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmLCBDR1JlY3QgbGF5
ZXJCb3VuZHMpOworICAgIHZvaWQgZHJhd1RpbGVNYXBDb250ZW50cyhDR0NvbnRleHRSZWYsIENH
UmVjdCBsYXllckJvdW5kcykgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZVbnBhcmVudGVkVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX2NvaG9ydExpc3Qu
c2l6ZSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
VGlsZUdyaWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1RpbGVHcmlkLm1tCShyZXZpc2lvbiAxNjY5NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUdyaWQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTU5OCw3ICs1OTgsNyBAQCBJbnRSZWN0IFRpbGVHcmlkOjp0aWxlQ292ZXJhZ2VSZWN0KCkgY29u
CiAgICAgcmV0dXJuIGNvdmVyYWdlUmVjdEluTGF5ZXJDb29yZHM7CiB9CiAKLXZvaWQgVGlsZUdy
aWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBsYXll
ckJvdW5kcykKK3ZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uc3QKIHsKICAgICBDR0NvbnRleHRTZXRS
R0JGaWxsQ29sb3IoY29udGV4dCwgMC4zLCAwLjMsIDAuMywgMSk7CiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgbGF5ZXJCb3VuZHMpOwo=
</data>
<flag name="review"
          id="253266"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>