<?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>94190</bug_id>
          
          <creation_ts>2012-08-15 23:11:12 -0700</creation_ts>
          <short_desc>Make the API of ImageDecoder decode a frame explicitly.</short_desc>
          <delta_ts>2014-02-05 10:50:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>
          <dependson>93467</dependson>
          <blocked>93590</blocked>
    
    <blocked>90375</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hclam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyul</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696775</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-08-15 23:11:12 -0700</bug_when>
    <thetext>This is a preparation for asynchronous image decoding. Asynchronous image decoding needs to query a frame, alpha, duration and completion without triggering image decoding. So this patch seperates image decoding from the query functions.

Introduced ImageDecoder::decodeAtIndex. We must call decodeAtIndex() to decode the given frame. ImageDecoder::frameBufferAtIndex does not decode the frame anymore and just returns the given frame buffer if it is cached.

This change delegates ImageSource::frameDurationAtIndex and ImageSource::frameIsCompleteAtIndex to ImageDecoder. It is more natural for ImageDecoder to return meta data as r125154 delegated ImageSource::frameHasAlphaAtIndex to ImageSource. For example, GIFImageDecoder can return a specific duration value, but other ImageDecoders always return 0.

Currently, both queries of ImageSource trigger image decoding. This change also makes both methods of ImageDecoder not decode anymore, and just return the cached meta data of the requested frame as ImageDecoder::frameHasAlphaAtIndex has done since r125154.

SynchronousImage uses frameIsCompleteAtIndex(), so SynchronousImage is changed to explicitly call ImageSource::requestFrameAtIndex before calling ImageSource::frameIsCompleteAtIndex because ImageSource::frameIsCompleteAtIndex does not decode.

These query methods are also used by BitmapImage::didDecodeFrameAtIndex. Currently BitmapImage::didDecodeFrameAtIndex does not correctly use both methods, because didDecodeFrameAtIndex() is a callback function for asynchronous image decoding and both methods in didDecodeFrameAtIndex() decode the frame synchronously, which will cause an unexpected behavior after implementing asynchronous image decoder. This change fixes a potential bug in BitmapImage::didDecodeFrameAtIndex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696780</commentid>
    <comment_count>1</comment_count>
      <attachid>158717</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-08-15 23:21:16 -0700</bug_when>
    <thetext>Created attachment 158717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976817</commentid>
    <comment_count>2</comment_count>
      <attachid>158717</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 10:50:41 -0800</bug_when>
    <thetext>Comment on attachment 158717
Patch

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158717</attachid>
            <date>2012-08-15 23:21:16 -0700</date>
            <delta_ts>2014-02-05 10:50:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94190-20120816152020.patch</filename>
            <type>text/plain</type>
            <size>31662</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2IxMWQwZDA5NzkzM2Ni
OGU5Mzg4OWM2MTRmYWM3Zjc2MmI4YmFmZi4uM2EwMzdkZDRjY2ExZTdjZjExMmEwNWY0MGUzZTFl
MGNmOGNmMWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMSBAQAogMjAxMi0wOC0xNSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBNYWtlIHRo
ZSBBUEkgb2YgSW1hZ2VEZWNvZGVyIGRlY29kZSBhIGZyYW1lIGV4cGxpY2l0bHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVybmFsIHJldmlldyBi
eSBLd2FuZyBZdWwgU2VvLgorCisgICAgICAgIFRoaXMgaXMgYSBwcmVwYXJhdGlvbiBmb3IgYXN5
bmNocm9ub3VzIGltYWdlIGRlY29kaW5nLiBBc3luY2hyb25vdXMgaW1hZ2UKKyAgICAgICAgZGVj
b2RpbmcgbmVlZHMgdG8gcXVlcnkgYSBmcmFtZSwgYWxwaGEsIGR1cmF0aW9uIGFuZCBjb21wbGV0
aW9uIHdpdGhvdXQKKyAgICAgICAgdHJpZ2dlcmluZyBpbWFnZSBkZWNvZGluZy4gU28gdGhpcyBw
YXRjaCBzZXBlcmF0ZXMgaW1hZ2UgZGVjb2RpbmcgZnJvbSB0aGUgcXVlcnkKKyAgICAgICAgZnVu
Y3Rpb25zLgorCisgICAgICAgIEludHJvZHVjZWQgSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4
LiBXZSBtdXN0IGNhbGwgZGVjb2RlQXRJbmRleCgpIHRvIGRlY29kZQorICAgICAgICB0aGUgZ2l2
ZW4gZnJhbWUuIEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4IGRvZXMgbm90IGRlY29k
ZSB0aGUgZnJhbWUKKyAgICAgICAgYW55bW9yZSBhbmQganVzdCByZXR1cm5zIHRoZSBnaXZlbiBm
cmFtZSBidWZmZXIgaWYgaXQgaXMgY2FjaGVkLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlbGVn
YXRlcyBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXggYW5kCisgICAgICAgIEltYWdl
U291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4IHRvIEltYWdlRGVjb2Rlci4gSXQgaXMgbW9y
ZSBuYXR1cmFsIGZvcgorICAgICAgICBJbWFnZURlY29kZXIgdG8gcmV0dXJuIG1ldGEgZGF0YSBh
cyByMTI1MTU0IGRlbGVnYXRlZAorICAgICAgICBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXggdG8gSW1hZ2VTb3VyY2UuIEZvciBleGFtcGxlLCBHSUZJbWFnZURlY29kZXIKKyAgICAg
ICAgY2FuIHJldHVybiBhIHNwZWNpZmljIGR1cmF0aW9uIHZhbHVlLCBidXQgb3RoZXIgSW1hZ2VE
ZWNvZGVycyBhbHdheXMgcmV0dXJuIDAuCisKKyAgICAgICAgQ3VycmVudGx5LCBib3RoIHF1ZXJp
ZXMgb2YgSW1hZ2VTb3VyY2UgdHJpZ2dlciBpbWFnZSBkZWNvZGluZy4gVGhpcyBjaGFuZ2UgYWxz
bworICAgICAgICBtYWtlcyBib3RoIG1ldGhvZHMgb2YgSW1hZ2VEZWNvZGVyIG5vdCBkZWNvZGUg
YW55bW9yZSwgYW5kIGp1c3QgcmV0dXJuIHRoZQorICAgICAgICBjYWNoZWQgbWV0YSBkYXRhIG9m
IHRoZSByZXF1ZXN0ZWQgZnJhbWUgYXMgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRl
eAorICAgICAgICBoYXMgZG9uZSBzaW5jZSByMTI1MTU0LgorCisgICAgICAgIFN5bmNocm9ub3Vz
SW1hZ2UgdXNlcyBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCksIHNvIFN5bmNocm9ub3VzSW1hZ2Ug
aXMgY2hhbmdlZAorICAgICAgICB0byBleHBsaWNpdGx5IGNhbGwgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXggYmVmb3JlIGNhbGxpbmcKKyAgICAgICAgSW1hZ2VTb3VyY2U6OmZyYW1l
SXNDb21wbGV0ZUF0SW5kZXggYmVjYXVzZSBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleAorICAgICAgICBkb2VzIG5vdCBkZWNvZGUuCisKKyAgICAgICAgVGhlc2UgcXVlcnkgbWV0
aG9kcyBhcmUgYWxzbyB1c2VkIGJ5IEJpdG1hcEltYWdlOjpkaWREZWNvZGVGcmFtZUF0SW5kZXgu
CisgICAgICAgIEN1cnJlbnRseSBCaXRtYXBJbWFnZTo6ZGlkRGVjb2RlRnJhbWVBdEluZGV4IGRv
ZXMgbm90IGNvcnJlY3RseSB1c2UgYm90aAorICAgICAgICBtZXRob2RzLCBiZWNhdXNlIGRpZERl
Y29kZUZyYW1lQXRJbmRleCgpIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGFzeW5jaHJvbm91
cworICAgICAgICBpbWFnZSBkZWNvZGluZyBhbmQgYm90aCBtZXRob2RzIGluIGRpZERlY29kZUZy
YW1lQXRJbmRleCgpIGRlY29kZSB0aGUgZnJhbWUKKyAgICAgICAgc3luY2hyb25vdXNseSwgd2hp
Y2ggd2lsbCBjYXVzZSBhbiB1bmV4cGVjdGVkIGJlaGF2aW9yIGFmdGVyIGltcGxlbWVudGluZwor
ICAgICAgICBhc3luY2hyb25vdXMgaW1hZ2UgZGVjb2Rlci4gVGhpcyBjaGFuZ2UgZml4ZXMgYSBw
b3RlbnRpYWwgYnVnIGluCisgICAgICAgIEJpdG1hcEltYWdlOjpkaWREZWNvZGVGcmFtZUF0SW5k
ZXguCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1N5bmNocm9ub3VzSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25vdXNJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVyUXQ6OmRlY29kZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlRGVjb2RlclF0Lmg6CisgICAgICAgIChJbWFnZURlY29kZXJRdCk6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJ
bmRleCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6
CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
UEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEpQRUdJ
bWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNv
ZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgIChCTVBJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAoR0lGSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklD
T0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURl
Y29kZXI6OmRlY29kZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdElu
ZGV4UHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5oOgorICAgICAgICAoSUNPSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChK
UEVHSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6
ZGVjb2RlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoUE5HSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleCk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
IChXRUJQSW1hZ2VEZWNvZGVyKToKKworMjAxMi0wOC0xNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBDaGFuZ2UgSW1hZ2VTb3VyY2UgdG8gYmUg
YXN5bmNocm9ub3VzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM0NjcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlYmNjMzZmNjJiZDVi
NjA2N2E4N2EwZTIxNWIzNjlmMjAyMThkNTZkLi4zOTJiZjIzZTEzMDhkNDg3YzEwMjlhYmEzZmY4
ZjhiZTNlZDQ0OGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBA
CiAyMDEyLTA4LTE1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgog
CisgICAgICAgIE1ha2UgdGhlIEFQSSBvZiBJbWFnZURlY29kZXIgZGVjb2RlIGEgZnJhbWUgZXhw
bGljaXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk0MTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VkIEltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleC4gV2UgbXVz
dCBjYWxsIGRlY29kZUF0SW5kZXgoKQorICAgICAgICB0byBkZWNvZGUgdGhlIGdpdmVuIGZyYW1l
LiBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCBkb2VzIG5vdCBkZWNvZGUgdGhlIGZy
YW1lCisgICAgICAgIGFueW1vcmUgYW5kIGp1c3QgcmV0dXJucyB0aGUgZ2l2ZW4gZnJhbWUgYnVm
ZmVyIGlmIGl0IGlzIGNhY2hlZC4gU28KKyAgICAgICAgV2ViSW1hZ2VEZWNvZGVyIG11c3QgY2Fs
bCBkZWNvZGVBdEluZGV4KCkgYmVmb3JlIGNhbGxpbmcgZnJhbWVCdWZmZXJBdEluZGV4KCkuCisK
KyAgICAgICAgKiBzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW1hZ2VEZWNvZGVyOjppc0ZyYW1lQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW1hZ2VEZWNvZGVyOjpnZXRGcmFtZUF0SW5kZXgpOgorCisyMDEyLTA4LTE1ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIENoYW5nZSBJbWFn
ZVNvdXJjZSB0byBiZSBhc3luY2hyb25vdXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ2NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjQ2ZGY1NjFhNWMyYmRjYTU5MDIzZmFl
ZGUyMjFhMzAyYzRjNWNjOC4uY2NlYzU2NzNhMWUxMmM5ZDA2ZmMzMGYzNzU4NTE0M2VkYmEyZDli
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcApAQCAtMTUyLDggKzE1MiwxMiBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAg
ICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoIW1fZGVjb2Rlci0+ZGVjb2RlQXRJbmRleChpbmRleCkp
CisgICAgICAgIHJldHVybiAwOworCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVy
LT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICBBU1NFUlQoYnVmZmVyKTsK
KyAgICBpZiAoYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJv
YmxlbXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCkBAIC0xNzAsMTkgKzE3NCw3IEBA
IGZsb2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgSW1hZ2VGcmFt
ZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIGlm
ICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEg
MCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUu
Ci0gICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24g
b2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQotICAgIC8vIGEgZHVyYXRpb24g
b2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzM2MDgyPgotICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgIGNvbnN0
IGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyLT5kdXJhdGlvbigpIC8gMTAwMC4wZjsKLSAgICBpZiAo
ZHVyYXRpb24gPCAwLjAxMWYpCi0gICAgICAgIHJldHVybiAwLjEwMGY7Ci0gICAgcmV0dXJuIGR1
cmF0aW9uOworICAgIHJldHVybiBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4
KTsKIH0KIAogSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKQEAgLTIwMyw5ICsxOTUsNyBAQCBib29sIEltYWdlU291cmNl
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIW1fZGVj
b2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0g
bV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIHJldHVybiBidWZmZXIg
JiYgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgIHJl
dHVybiBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TeW5jaHJvbm91c0lt
YWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5bmNocm9u
b3VzSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc1NjA5NjE5YmM4NmMyYzhjMTRmM2VhODFmNzRlYjc4
ODRkOGJlNGQuLjFjZjU0NjFhOTA2NzdmZGQxMGMyODgzNDhjMzgxZTgwNDA0MTRiNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5bmNocm9ub3VzSW1hZ2VT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5bmNocm9u
b3VzSW1hZ2VTb3VyY2UuY3BwCkBAIC0xMTAsNiArMTEwLDggQEAgYm9vbCBTeW5jaHJvbm91c0lt
YWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiAKIGJvb2wgU3lu
Y2hyb25vdXNJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7CisgICAgLy8gQ2FsbGluZyByZXF1ZXN0RnJhbWVBdEluZGV4KCkgaXMgbmVlZGVkIGluIG9y
ZGVyIHRvIGNoZWNrIGlmIGRlY29kaW5nIGlzIGNvbXBsZXRlZCB1cC10by1kYXRlIGJlY2F1c2Ug
SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXggZG9zZSBub3QgZGVjb2RlIHRoZSBn
aXZlbiBmcmFtZS4KKyAgICBtX2ltYWdlU291cmNlLnJlcXVlc3RGcmFtZUF0SW5kZXgoaW5kZXgp
OwogICAgIHJldHVybiBtX2ltYWdlU291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZURlY29kZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZURlY29kZXJRdC5jcHAKaW5kZXggZjAzOWU0MzAwOTcyMTY5YWRjNGQ4YmUyMGJkYTY2Yjhm
MmQzZTVjZS4uZDk3NjVhZmUwNGZhMzgwOTRhNGY3Zjc5Yjg2NDUzYjcxNjMwN2YwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFN0cmluZyBJbWFnZURlY29kZXJRdDo6ZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcobV9mb3JtYXQuY29uc3REYXRh
KCksIG1fZm9ybWF0Lmxlbmd0aCgpKTsKIH0KIAotSW1hZ2VGcmFtZSogSW1hZ2VEZWNvZGVyUXQ6
OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCitib29sIEltYWdlRGVjb2RlclF0Ojpk
ZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICAvLyBJbiBjYXNlIHRoZSBJbWFnZURl
Y29kZXJRdCBnb3QgcmVjcmVhdGVkIHdlIGRvbid0IGtub3cKICAgICAvLyB5ZXQgaG93IG1hbnkg
aW1hZ2VzIHdlIGFyZSBnb2luZyB0byBoYXZlIGFuZCBuZWVkIHRvCkBAIC0xMzIsMTIgKzEzMiwx
MiBAQCBJbWFnZUZyYW1lKiBJbWFnZURlY29kZXJRdDo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCBpbmRleCkKICAgICB9CiAKICAgICBpZiAoaW5kZXggPj0gY291bnQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1f
ZnJhbWVCdWZmZXJDYWNoZVtpbmRleF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IEltYWdl
RnJhbWU6OkZyYW1lQ29tcGxldGUgJiYgbV9yZWFkZXIpCiAgICAgICAgIGludGVybmFsUmVhZElt
YWdlKGluZGV4KTsKLSAgICByZXR1cm4gJmZyYW1lOworICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIEltYWdlRGVjb2RlclF0OjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IC8qaW5kZXgq
LykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
RGVjb2RlclF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURl
Y29kZXJRdC5oCmluZGV4IDNlNDIxYzMzNmM3N2RhMDExOGM5ZDFkYzkyYWM1NzNlOTQyOTI1YmYu
LjE3MzEwMzhkMGNkMmJmMzE1NWI0NThkMGIzOTBlNTM4MmI2YjY2NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuaApAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgp
OwogICAgIHZpcnR1YWwgc2l6ZV90IGZyYW1lQ291bnQoKTsKICAgICB2aXJ0dWFsIGludCByZXBl
dGl0aW9uQ291bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVy
QXRJbmRleChzaXplX3QgaW5kZXgpOworICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVBdEluZGV4KHNp
emVfdCBpbmRleCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5OTUxMTA4MjdlNTVkNjlhOTEwOTY3
ZjRhYzEzNjdiMThhMjIxN2MyLi42NDZiNTEwNWQ2ODU1ZmVhMTY2ZGM0Y2ZmYzdjYjJkNTk0NjRm
NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTI3NywxNSArMjc3LDMyIEBAIHRlbXBsYXRlIDxNYXRj
aFR5cGUgdHlwZT4gaW50IGdldFNjYWxlZFZhbHVlKGNvbnN0IFZlY3RvcjxpbnQ+JiBzY2FsZWRW
YWx1ZXMsIGluCiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKK0ltYWdlRnJhbWUqIEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNp
emUoKSA8PSBpbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1fZnJhbWVCdWZm
ZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdOwor
fQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAoreworICAgIGlmIChmcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSkKICAgICAg
ICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxwaGEoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgp
IDw9IGluZGV4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZnJhbWVCdWZm
ZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKK30K
KworZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJl
U2NhbGVEYXRhSWZOZWNlc3NhcnkoKQogewogICAgIG1fc2NhbGVkID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CmluZGV4IGYyYWFlY2M0NzA3NjAwZmNkMGY0NzNiZjg4ZDI2N2Q4ODE2MTdmMjYuLmZkMWJlZjMx
YTlmOGRkMTMzMmJmZTE2ZTEzYmE0MGEyZTA2MjZlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0yNzIsMTIg
KzI3MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBpbnQgcmVw
ZXRpdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gY0FuaW1hdGlvbk5vbmU7IH0KIAotICAgICAg
ICAvLyBEZWNvZGVzIGFzIG11Y2ggb2YgdGhlIHJlcXVlc3RlZCBmcmFtZSBhcyBwb3NzaWJsZSwg
YW5kIHJldHVybnMgYW4KLSAgICAgICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCi0g
ICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAw
OworICAgICAgICAvLyBEZWNvZGVzIGFzIG11Y2ggb2YgdGhlIHJlcXVlc3RlZCBmcmFtZSBhcyBw
b3NzaWJsZS4KKyAgICAgICAgdmlydHVhbCBib29sIGRlY29kZUF0SW5kZXgoc2l6ZV90KSA9IDA7
CiAKLSAgICAgICAgLy8gTWFrZSB0aGUgYmVzdCBlZmZvcnQgZ3Vlc3MgdG8gY2hlY2sgaWYgdGhl
IHJlcXVlc3RlZCBmcmFtZSBoYXMgYWxwaGEgY2hhbm5lbC4KKyAgICAgICAgLy8gUmV0dXJucyBh
biBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KKyAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVC
dWZmZXJBdEluZGV4KHNpemVfdCk7CisKKyAgICAgICAgLy8gTWFrZSB0aGUgYmVzdCBlZmZvcnQg
Z3Vlc3MgdG8gcmV0dXJuIHRoZSBtZXRhIGRhdGEgb2YgdGhlIHJlcXVlc3RlZCBmcmFtZS4KICAg
ICAgICAgdmlydHVhbCBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25z
dDsKIAogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxh
ZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAgICBib29s
IGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDZhNjVlNjE3ZDE5ZTY3YmZhMjE4MDUzODdjMTE5NWRhNDgyMWRiNmQuLmZj
YjIwOTFjMzRjZjYyM2EzNTE2MDc1NWUzYmRjN2I1M2EyMDUxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxh
Y2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTk1LDEzICsxOTUsMTMgQEAgYm9vbCBK
UEVHSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29k
ZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1JbWFnZUZyYW1lKiBKUEVHSW1hZ2VEZWNvZGVy
OjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBKUEVHSW1hZ2VEZWNvZGVy
OjpkZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIWlzQWxsRGF0YVJlY2Vp
dmVkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoaW5kZXgpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZl
ckNhY2hlLnJlc2l6ZSgxKTsKQEAgLTIxMSwxNiArMjExLDE2IEBAIEltYWdlRnJhbWUqIEpQRUdJ
bWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8gQ2hl
Y2sgdG8gc2VlIGlmIGl0J3MgYWxyZWFkeSBkZWNvZGVkLgogICAgIC8vIEZJWE1FOiBDb3VsZCBz
aXplIGNoYW5nZSBiZXR3ZWVuIGNhbGxzIHRvIHRoaXMgbWV0aG9kPwogICAgIGlmIChmcmFtZS5z
dGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQotICAgICAgICByZXR1cm4gJmZy
YW1lOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChmcmFtZS5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7CiAgICAgICAgIGlmICghc2l6ZSgpLndpZHRoKCkgfHwg
IXNpemUoKS5oZWlnaHQoKSkgewogICAgICAgICAgICAgaWYgKCFpc1NpemVBdmFpbGFibGUoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS5zZXRTaXplKHNpemUoKS53aWR0aCgpLCBz
aXplKCkuaGVpZ2h0KCkpKSB7CiAgICAgICAgICAgICBzZXRGYWlsZWQoKTsKLSAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGZyYW1lLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwogICAgICAgICAvLyBG
b3IgSlBFR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KQEAgLTIy
OSwxMSArMjI5LDExIEBAIEltYWdlRnJhbWUqIEpQRUdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVy
QXRJbmRleChzaXplX3QgaW5kZXgpCiAKICAgICBpZiAoIW1fcmVhZGVyIHx8IG1fcmVhZGVyLT5k
ZWNvZGUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwgJmZyYW1lKSA9PSAtMSkgewog
ICAgICAgICBzZXRGYWlsZWQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICBmcmFtZS5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVDb21w
bGV0ZSk7Ci0gICAgcmV0dXJuICZmcmFtZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuaApp
bmRleCA2NTQ0ZGY0MjE0MGNhYzUxYmIyYWU2MTg2ODJlMGVkNTI2NjBjMmI3Li5kNDgzYTQzMTgy
Mzk1MmZkNGI5ODYzZjFmNjdhZTgyMmVhNDhkYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQ
RUdJbWFnZURlY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBKUEVHSW1hZ2VEZWNvZGVy
IDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImpwZyI7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBbHBoYSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFt
ZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgdmlydHVhbCBib29sIGRlY29kZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBPVkVSUklERTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggNDNlZjUxOGRlODc4OTZlNDM3OGEwYjc0OTVkZjI2OTlhYTdiYjQ4
OC4uNDE2ZGJmYTFjZjk1ZWY1MjkwOTFmYTM4MTg3Y2YxZmQzYjg3YmMyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKQEAgLTcwLDEwICs3MCwxMCBAQCBib29sIEJNUEltYWdlRGVjb2Rl
cjo6aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFp
bGFibGUoKTsKIH0KIAotSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0
SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBCTVBJbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRleCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7CkBAIC04Myw3ICs4Myw3
IEBAIEltYWdlRnJhbWUqIEJNUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCBpbmRleCkKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlLmZp
cnN0KCk7CiAgICAgaWYgKGJ1ZmZlci0+c3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21w
bGV0ZSkKICAgICAgICAgZGVjb2RlKGZhbHNlKTsKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBib29sIEJNUEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuaAppbmRleCBmNWI5ZDVlMjdhZTAxMDMzNzA5N2QyZjU3NTRiN2EzZmUy
Y2MwNGQwLi4zYjQyNTU1ZDc2YTA1ZmM3Zjk2NTUxY2ViYmVlZmJhNjI1MjA3ZWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVy
biAiYm1wIjsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFi
bGUoKTsKLSAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6
ZV90IGluZGV4KTsKKyAgICAgICAgdmlydHVhbCBib29sIGRlY29kZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBPVkVSUklERTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8
bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVs
ZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKICAg
ICAgICAgLy8gQk1QSW1hZ2VSZWFkZXIhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4
IDcyNGVhMGQxM2I2ZWRiNTI1ZmViYTViZWE1ZmUwZDgzMWFkMTAwYmYuLjI2YWU3OGVmZDAxMjc2
ZGE2ZjZlMGRlYmY4OTZhZmZjMDY4NTYyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
CkBAIC0xMjQsMTUgKzEyNCwzMyBAQCBpbnQgR0lGSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291
bnQoKSBjb25zdAogICAgIHJldHVybiBtX3JlcGV0aXRpb25Db3VudDsKIH0KIAotSW1hZ2VGcmFt
ZSogR0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9v
bCBHSUZJbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlm
IChpbmRleCA+PSBmcmFtZUNvdW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVtp
bmRleF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxl
dGUpCiAgICAgICAgIGRlY29kZShpbmRleCArIDEsIEdJRkZ1bGxRdWVyeSk7Ci0gICAgcmV0dXJu
ICZmcmFtZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZmxvYXQgR0lGSW1hZ2VEZWNvZGVyOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJh
bWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJh
bWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBNYW55IGFubm95aW5nIGFkcyBz
cGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMg
cG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEg
ZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8vIGEg
ZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgor
ICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XS5kdXJh
dGlvbigpIC8gMTAwMC4wZjsKKyAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAgIHJl
dHVybiAwLjEwMGY7CisgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCiBib29sIEdJRkltYWdlRGVj
b2Rlcjo6c2V0RmFpbGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAxNWJkOTlmNjg2
MjM0YWRjMzlhZmVhZmI2ZTEwNWMxNzliMzI5MDcxLi43NTFlZWZlZGJiMWNjZTg3OWMzODM4Mzcx
MzU1YjUyN2U3ZjU4YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00OCw3ICs0OCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHNldFNpemUodW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAgICAgIHZpcnR1YWwgc2l6ZV90IGZy
YW1lQ291bnQoKTsKICAgICAgICAgdmlydHVhbCBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVBdEluZGV4KHNpemVfdCkgT1ZFUlJJ
REU7CisgICAgICAgIHZpcnR1YWwgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBj
b25zdCBPVkVSUklERTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8
bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVs
ZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKICAg
ICAgICAgLy8gR0lGSW1hZ2VSZWFkZXIhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4
IDM2ZGRlMWNkZDU2ZDAwODRlNGY2ZGU1MmIzZjc0NTVkNmEwNjk5YTAuLjk1OGM4MDE0ODM0MGQ4
MDExODRkYTJiOGVkNWRmOTRiNDdkNGMyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
CkBAIC0xMDksMjEgKzEwOSwyMSBAQCBzaXplX3QgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50
KCkKICAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFscGhh
KG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgfQogICAgIC8vIENBVVRJT046IFdlIG11c3Qgbm90
IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKLSAgICAvLyBk
ZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8gb25l
IG9mIHRoZQorICAgIC8vIGRlY29kZUF0SW5kZXhQcml2YXRlKCkgbWF5IGdpdmUgYSBCTVBJbWFn
ZVJlYWRlciBhIHBvaW50ZXIgdG8gb25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCiAgICAgcmV0
dXJuIG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCk7CiB9CiAKLUltYWdlRnJhbWUqIElDT0ltYWdl
RGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKK2Jvb2wgSUNPSW1hZ2VE
ZWNvZGVyOjpkZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICAvLyBFbnN1cmUgfGlu
ZGV4fCBpcyB2YWxpZC4KICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVy
ID0gJm1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF07CiAgICAgaWYgKGJ1ZmZlci0+c3RhdHVzKCkg
IT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKICAgICAgICAgZGVjb2RlKGluZGV4LCBmYWxz
ZSk7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJQ09J
bWFnZURlY29kZXI6OnNldEZhaWxlZCgpCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJQ09JbWFn
ZURlY29kZXI6OmRlY29kZShzaXplX3QgaW5kZXgsIGJvb2wgb25seVNpemUpCiAKICAgICAvLyBJ
ZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhl
IGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KLSAgICBpZiAoKCFkZWNvZGVEaXJl
Y3RvcnkoKSB8fCAoIW9ubHlTaXplICYmICFkZWNvZGVBdEluZGV4KGluZGV4KSkpICYmIGlzQWxs
RGF0YVJlY2VpdmVkKCkpCisgICAgaWYgKCghZGVjb2RlRGlyZWN0b3J5KCkgfHwgKCFvbmx5U2l6
ZSAmJiAhZGVjb2RlQXRJbmRleFByaXZhdGUoaW5kZXgpKSkgJiYgaXNBbGxEYXRhUmVjZWl2ZWQo
KSkKICAgICAgICAgc2V0RmFpbGVkKCk7CiAgICAgLy8gSWYgd2UncmUgZG9uZSBkZWNvZGluZyB0
aGlzIGZyYW1lLCB3ZSBkb24ndCBuZWVkIHRoZSBCTVBJbWFnZVJlYWRlciBvcgogICAgIC8vIFBO
R0ltYWdlRGVjb2RlciBhbnltb3JlLiAgKElmIHdlIGZhaWxlZCwgdGhlc2UgaGF2ZSBhbHJlYWR5
IGJlZW4KQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlRGly
ZWN0b3J5KCkKICAgICByZXR1cm4gKG1fZGVjb2RlZE9mZnNldCA+PSAoc2l6ZU9mRGlyZWN0b3J5
ICsgKG1fZGlyRW50cmllcy5zaXplKCkgKiBzaXplT2ZEaXJFbnRyeSkpKSB8fCBwcm9jZXNzRGly
ZWN0b3J5RW50cmllcygpOwogfQogCi1ib29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRl
eChzaXplX3QgaW5kZXgpCitib29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleFByaXZh
dGUoc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZGlyRW50cmllcy5zaXpl
KCkpOwogICAgIGNvbnN0IEljb25EaXJlY3RvcnlFbnRyeSYgZGlyRW50cnkgPSBtX2RpckVudHJp
ZXNbaW5kZXhdOwpAQCAtMjE5LDYgKzIxOSw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNv
ZGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBpbiB0aGUgZGlyZWN0b3J5LgogICAgIGlm
IChtX3BuZ0RlY29kZXJzW2luZGV4XS0+aXNTaXplQXZhaWxhYmxlKCkgJiYgKG1fcG5nRGVjb2Rl
cnNbaW5kZXhdLT5zaXplKCkgIT0gZGlyRW50cnkubV9zaXplKSkKICAgICAgICAgcmV0dXJuIHNl
dEZhaWxlZCgpOworICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5kZWNvZGVBdEluZGV4KDApOwog
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0gPSAqbV9wbmdEZWNvZGVyc1tpbmRleF0tPmZy
YW1lQnVmZmVyQXRJbmRleCgwKTsKICAgICByZXR1cm4gIW1fcG5nRGVjb2RlcnNbaW5kZXhdLT5m
YWlsZWQoKSB8fCBzZXRGYWlsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAz
MWQ5MWM4MTkwMmZiMGQyYzY5ZGMwYTM2MThjYmRjNTRiZjZiNzEzLi5lODEwZmE0MzExMjZhNjQ1
YWUzNDQxNDdkZmI5YTE1NmFhMDJjYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC01
MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJbnRTaXpl
IGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIHNl
dFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAgICAgIHZpcnR1YWwg
c2l6ZV90IGZyYW1lQ291bnQoKTsKLSAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1
ZmZlckF0SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgdmlydHVhbCBib29sIGRlY29kZUF0SW5kZXgo
c2l6ZV90IGluZGV4KSBPVkVSUklERTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkg
ZGVsZXRlcyBhbGwgcmVhZGVycyBhbmQgZGVjb2RlcnMuICBCZSBjYXJlZnVsIHRvCiAgICAgICAg
IC8vIGF2b2lkIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxp
bmcgdGhpcyBmcm9tCiAgICAgICAgIC8vIGluc2lkZSBCTVBJbWFnZVJlYWRlciEKQEAgLTk4LDcg
Kzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGRlY29kZURpcmVjdG9y
eSgpOwogCiAgICAgICAgIC8vIERlY29kZXMgdGhlIHNwZWNpZmllZCBlbnRyeS4KLSAgICAgICAg
Ym9vbCBkZWNvZGVBdEluZGV4KHNpemVfdCk7CisgICAgICAgIGJvb2wgZGVjb2RlQXRJbmRleFBy
aXZhdGUoc2l6ZV90KTsKIAogICAgICAgICAvLyBQcm9jZXNzZXMgdGhlIElDT05ESVIgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUgZGF0YS4gIFJldHVybnMgdHJ1ZSBpZgogICAgICAgICAvLyB0aGUg
ZGlyZWN0b3J5IGNvdWxkIGJlIGRlY29kZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBiZWY0MjAzYTU3NzAzNDY4OTExZmNiN2Q3NmU0OTFmYTkwMjBlYTkxLi40OGQ2M2Fm
YzJlODZhZjZhNTUzM2JmMWQyNTE0MjdjZmNhNDYyYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTUyOSwxMCArNTI5LDEwIEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6
c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAgIHJldHVybiB0cnVl
OwogfQogCi1JbWFnZUZyYW1lKiBKUEVHSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90IGluZGV4KQorYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KHNpemVf
dCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXgpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgewog
ICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwpAQCAtNTQyLDcgKzU0Miw3IEBA
IEltYWdlRnJhbWUqIEpQRUdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qg
aW5kZXgpCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAg
ICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCiAgICAg
ICAgIGRlY29kZShmYWxzZSk7Ci0gICAgcmV0dXJuICZmcmFtZTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaAppbmRleCBkMDk1Y2JiMTY5ZTcwNzBiM2I1ZTMzYmNlMjEwM2RlMDUyYmU0YjQz
Li4wMzg1ZjhmYzlmYWZiMGRhMDdjYTc2MDNkOGRlZjdhNzExMDRkYzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4g
ImpwZyI7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsK
LSAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGlu
ZGV4KTsKKyAgICAgICAgdmlydHVhbCBib29sIGRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBP
VkVSUklERTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFk
ZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBt
ZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKICAgICAgICAg
Ly8gSlBFR0ltYWdlUmVhZGVyIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAxNThk
ZWJiNWFiMWMzOGMxZTFhN2JhYTNhZDBkM2FmNGQ3MzY0OWE4Li5mMjBmMmEyMTg3NmYyM2JlM2Qy
NmM4MTU5NzQzMTM3ZTUyNzg1M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MjUwLDEwICsyNTAsMTAgQEAgYm9vbCBQTkdJbWFnZURlY29kZXI6OnNldFNpemUodW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSW1hZ2VGcmFt
ZSogUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9v
bCBQTkdJbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlm
IChpbmRleCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5yZXNpemUoMSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgSW1hZ2VGcmFtZSogUE5HSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIEltYWdlRnJh
bWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChmcmFtZS5zdGF0dXMo
KSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQogICAgICAgICBkZWNvZGUoZmFsc2UpOwot
ICAgIHJldHVybiAmZnJhbWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUE5HSW1hZ2VE
ZWNvZGVyOjpzZXRGYWlsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCmluZGV4IGVjMmU4NTc0
MGIzNjk5NjAyZDdlODM2MGNkMjlkZTBmOTAwNzczNGIuLmZjNmVhZDhkNjYxOGRiNWE5MzMwYTVh
ZGYwMzRjMGRhN2JhZjE1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFt
ZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJwbmciOyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1NpemVBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVhbCBib29sIHNldFNpemUodW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7Ci0gICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSog
ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBk
ZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CiAgICAgICAgIC8vIENBVVRJT046
IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAg
ICAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGlu
ZyB0aGlzIGZyb20gaW5zaWRlCiAgICAgICAgIC8vIFBOR0ltYWdlUmVhZGVyIQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNjEyODkwZjMxMjUyYmUxNzBiZjc5ZjNjMWYwNWU1
Mjc1MDM1ODI5YS4uMTZhZjQyYjhjZWM4YzJhZjM5MjU3ZTliOThhM2UyYmE3ZjMwYjlkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC02OSwxMCArNjksMTAgQEAgYm9vbCBX
RUJQSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29k
ZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1JbWFnZUZyYW1lKiBXRUJQSW1hZ2VEZWNvZGVy
OjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBXRUJQSW1hZ2VEZWNvZGVy
OjpkZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXgpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkgewogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEp
OwpAQCAtODIsNyArODIsNyBAQCBJbWFnZUZyYW1lKiBXRUJQSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1
ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFt
ZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlKQogICAgICAgICBkZWNvZGUoZmFsc2UpOwotICAgIHJldHVybiAmZnJhbWU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJv
b2wgb25seVNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IDYxZWExMzk1MzRj
NjgxNGFkZDUyMjQ3ZjNlMGQ4YTY3NzMwZTI3NGQuLjIwNTQ3MmE3NzU5MWZkZTllZTEzYmE5NDg5
MTJhMTM2Mzc4ZmE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkg
Y29uc3QgeyByZXR1cm4gIndlYnAiOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJs
ZSgpOwotICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCk7CisgICAgdmlydHVhbCBib29sIGRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBPVkVS
UklERTsKIAogcHJpdmF0ZToKICAgICBib29sIGRlY29kZShib29sIG9ubHlTaXplKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCmluZGV4IGFkMGE2
N2U1MTU1N2MxM2EwN2E1NzhhMGQyYjFlZmE0Y2FlMzc1MzIuLjJkZjgzOTY1ZDkzZGI2ZjJjZTVl
ZDQ1ZGE3ZDk1ZjE5ODdhMWY4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW1hZ2VEZWNvZGVyLmNwcApAQCAtOTgsMTggKzk4LDIyIEBAIHNpemVfdCBXZWJJbWFnZURl
Y29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAogYm9vbCBXZWJJbWFnZURlY29kZXI6OmlzRnJhbWVD
b21wbGV0ZUF0SW5kZXgoaW50IGluZGV4KSBjb25zdAogewogICAgIEFTU0VSVChtX3ByaXZhdGUp
OwotICAgIEltYWdlRnJhbWUqIGNvbnN0IGZyYW1lQnVmZmVyID0gbV9wcml2YXRlLT5mcmFtZUJ1
ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIGlmICghZnJhbWVCdWZmZXIpCisgICAgaWYgKCFtX3By
aXZhdGUtPmRlY29kZUF0SW5kZXgoaW5kZXgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBJbWFnZUZyYW1lKiBjb25zdCBmcmFtZUJ1ZmZlciA9IG1fcHJpdmF0ZS0+ZnJhbWVCdWZmZXJB
dEluZGV4KGluZGV4KTsKKyAgICBBU1NFUlQoZnJhbWVCdWZmZXIpOwogICAgIHJldHVybiAoZnJh
bWVCdWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpOwogfQogCiBX
ZWJJbWFnZSBXZWJJbWFnZURlY29kZXI6OmdldEZyYW1lQXRJbmRleChpbnQgaW5kZXggPSAwKSBj
b25zdAogewogICAgIEFTU0VSVChtX3ByaXZhdGUpOwotICAgIEltYWdlRnJhbWUqIGNvbnN0IGZy
YW1lQnVmZmVyID0gbV9wcml2YXRlLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwotICAgIGlm
ICghZnJhbWVCdWZmZXIpCisgICAgaWYgKCFtX3ByaXZhdGUtPmRlY29kZUF0SW5kZXgoaW5kZXgp
KQogICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKKworICAgIEltYWdlRnJhbWUqIGNvbnN0IGZy
YW1lQnVmZmVyID0gbV9wcml2YXRlLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOworICAgIEFT
U0VSVChmcmFtZUJ1ZmZlcik7CiAgICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBh
ZG9wdFB0cihmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKICAgICByZXR1cm4gV2Vi
SW1hZ2UoaW1hZ2UtPmJpdG1hcCgpKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>