LyoqDQogKiBAZmlsZSAgICAgbW9ycGhvX2dldF9pbWFnZV9zaXplLmgNCiAqIEBicmllZiAgICCJ5pGcgsmVS5d2gsiDgYOCg4qDVINDg1mC8I7mk76Ct4LpitaQlA0KICogQHZlcnNpb24gIDEuMC4wDQogKiBAZGF0ZSAgICAgMjAwOC0wNy0wMQ0KICoNCiAqIENvcHlyaWdodCAoQykgMjAwNi0yMDEyIE1vcnBobywgSW5jLg0KICovDQoNCiNpZm5kZWYgTU9SUEhPX0dFVF9JTUFHRV9TSVpFX0gNCiNkZWZpbmUgTU9SUEhPX0dFVF9JTUFHRV9TSVpFX0gNCg0KI2luY2x1ZGUgIm1vcnBob19hcGkuaCINCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQpleHRlcm4gIkMiIHsNCiNlbmRpZg0KDQovKioNCiAqIJWdgsaNgoKzgsaDdINIgVuDfYNig2eWvIKpgueBQYnmkZyC8IpplFuCt4LpgsyCyZVLl3aCyIOBg4KDioNUg0ODWYLwk76C6S4NCiAqDQogKiBAcGFyYW0gd2lkdGggICAgICAglZ0NCiAqIEBwYXJhbSBoZWlnaHQgICAgICCNgoKzDQogKiBAcGFyYW0gcF9mb3JtYXQgICAgieaRnIN0g0iBW4N9g2KDZ5W2jpqX8Q0KICogQHJldHVybiAgICAgICAgICAgIInmkZyCyZVLl3aCyIOBg4KDioNUg0ODWQ0KICovDQojZGVmaW5lIG1vcnBob19nZXRJbWFnZVNpemUgbW9yX25vaXNlX3JlZHVjdGlvbl9JRl9nZXRJbWFnZVNpemUNCg0KTU9SUEhPX0FQSShpbnQpDQptb3JwaG9fZ2V0SW1hZ2VTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgY2hhciAqcF9mb3JtYXQpOw0KDQovKioNCiAqIFmJ5pGcg2aBW4Neg1SDQ4NZgvCO5pO+Lg0KICoNCiAqIEBwYXJhbSB3aWR0aCAgICAgICCVnQ0KICogQHBhcmFtIGhlaWdodCAgICAgII2CgrMNCiAqIEBwYXJhbSBwX2Zvcm1hdCAgICCJ5pGcg3SDSIFbg32DYoNnlbaOmpfxDQogKiBAcmV0dXJuICAgICAgICAgICAgWYnmkZyDZoFbg16DVINDg1kNCiAqLw0KI2RlZmluZSBtb3JwaG9fZ2V0SW1hZ2VTaXplWSBtb3Jfbm9pc2VfcmVkdWN0aW9uX0lGX2dldEltYWdlU2l6ZVkNCg0KTU9SUEhPX0FQSShpbnQpDQptb3JwaG9fZ2V0SW1hZ2VTaXplWShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IGNoYXIgKnBfZm9ybWF0KTsNCg0KLyoqDQogKiBVieaRnINmgVuDXoNUg0ODWYLwjuaTvi4NCiAqDQogKiBAcGFyYW0gd2lkdGggICAgICAglZ0NCiAqIEBwYXJhbSBoZWlnaHQgICAgICCNgoKzDQogKiBAcGFyYW0gcF9mb3JtYXQgICAgieaRnIN0g0iBW4N9g2KDZ5W2jpqX8Q0KICogQHJldHVybiAgICAgICAgICAgIFWJ5pGcg2aBW4Neg1SDQ4NZDQogKi8NCiNkZWZpbmUgbW9ycGhvX2dldEltYWdlU2l6ZVUgbW9yX25vaXNlX3JlZHVjdGlvbl9JRl9nZXRJbWFnZVNpemVVDQoNCk1PUlBIT19BUEkoaW50KQ0KbW9ycGhvX2dldEltYWdlU2l6ZVUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBjaGFyICpwX2Zvcm1hdCk7DQoNCi8qKg0KICogVonmkZyDZoFbg16DVINDg1mC8I7mk74uDQogKg0KICogQHBhcmFtIHdpZHRoICAgICAgIJWdDQogKiBAcGFyYW0gaGVpZ2h0ICAgICAgjYKCsw0KICogQHBhcmFtIHBfZm9ybWF0ICAgIInmkZyDdINIgVuDfYNig2eVto6al/ENCiAqIEByZXR1cm4gICAgICAgICAgICBWieaRnINmgVuDXoNUg0ODWQ0KICovDQojZGVmaW5lIG1vcnBob19nZXRJbWFnZVNpemVWIG1vcl9ub2lzZV9yZWR1Y3Rpb25fSUZfZ2V0SW1hZ2VTaXplVg0KDQpNT1JQSE9fQVBJKGludCkNCm1vcnBob19nZXRJbWFnZVNpemVWKGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgY2hhciAqcF9mb3JtYXQpOw0KDQovKioNCiAqIFVWieaRnINmgVuDXoNUg0ODWYLwjuaTvi4NCiAqDQogKiBAcGFyYW0gd2lkdGggICAgICAglZ0NCiAqIEBwYXJhbSBoZWlnaHQgICAgICCNgoKzDQogKiBAcGFyYW0gcF9mb3JtYXQgICAgieaRnIN0g0iBW4N9g2KDZ5W2jpqX8Q0KICogQHJldHVybiAgICAgICAgICAgIFVWieaRnINmgVuDXoNUg0ODWQ0KICovDQojZGVmaW5lIG1vcnBob19nZXRJbWFnZVNpemVVViBtb3Jfbm9pc2VfcmVkdWN0aW9uX0lGX2dldEltYWdlU2l6ZVVWDQoNCk1PUlBIT19BUEkoaW50KQ0KbW9ycGhvX2dldEltYWdlU2l6ZVVWKGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgY2hhciAqcF9mb3JtYXQpOw0KDQoNCiNpZmRlZiBfX2NwbHVzcGx1cw0KfSAvKiBleHRlcm4gIkMiIHsgKi8NCiNlbmRpZg0KDQojZW5kaWYgLyogTU9SUEhPX0dFVF9JTUFHRV9TSVpFX0ggKi8NCg==