Overview

URL pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
IP70.32.23.76
ASNA2HOSTING
Location United States
Report completed2022-10-02 22:17:36 UTC
StatusLoading report..
urlquery Alerts No alerts detected


Settings

UserAgentMozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Referer


Intrusion Detection Systems

Suricata /w Emerging Threats Pro  No alerts detected


Blocklists

OpenPhish  No alerts detected
PhishTank  No alerts detected
Fortinet's Web Filter  No alerts detected
mnemonic secure dns  No alerts detected
Quad9 DNS
Scan Date Severity Indicator Comment
2022-10-02 2 pssy.xyz Sinkholed


Files

No files detected



Passive DNS (74)

Passive DNS Source Fully Qualifying Domain Name Rank First Seen Last Seen IP Comment
mnemonic passive DNS ocsp.digicert.com (6) 86 2012-05-21 07:02:23 UTC 2022-10-02 15:44:45 UTC 93.184.220.29
mnemonic passive DNS ocsp.sectigo.com (1) 487 2018-12-17 11:31:55 UTC 2022-10-02 15:34:27 UTC 172.64.155.188
mnemonic passive DNS gapi.beeketing.com (1) 83849 2018-02-01 07:32:09 UTC 2022-10-01 15:18:07 UTC 172.67.209.228
mnemonic passive DNS c1.mylivechat.com (4) 200399 2019-03-16 07:30:15 UTC 2022-09-30 23:03:42 UTC 169.55.200.20
mnemonic passive DNS js-agent.newrelic.com (1) 378 2017-01-30 05:00:15 UTC 2022-10-02 12:30:16 UTC 151.101.86.137
mnemonic passive DNS sqs.us-east-1.amazonaws.com (1) 4730 2013-09-02 13:04:27 UTC 2022-10-01 21:01:25 UTC 3.239.232.146
mnemonic passive DNS s3t3d2y8.afcdn.net (2) 0 2022-08-08 22:22:56 UTC 2022-10-02 12:19:25 UTC 185.76.9.23 Unknown ranking
mnemonic passive DNS syndication.twitter.com (1) 833 2013-09-20 01:46:47 UTC 2022-10-02 11:37:29 UTC 104.244.42.72
mnemonic passive DNS log.pinterest.com (1) 3464 2015-02-16 23:42:31 UTC 2022-10-02 07:54:44 UTC 151.101.84.84
mnemonic passive DNS www.facebook.com (3) 99 2017-01-30 05:00:00 UTC 2022-10-02 04:45:21 UTC 31.13.72.36
mnemonic passive DNS ocsp.sca1b.amazontrust.com (7) 1015 2017-03-03 15:20:51 UTC 2019-03-27 04:05:54 UTC 13.224.227.57
mnemonic passive DNS static.pc161021.com (3) 902733 2022-07-09 14:02:33 UTC 2022-09-24 12:36:56 UTC 13.224.222.38
mnemonic passive DNS buttons.reddit.com (2) 61866 2012-06-01 08:33:10 UTC 2022-10-02 18:29:23 UTC 151.101.85.140
mnemonic passive DNS ocsp.globalsign.com (1) 2075 2012-05-25 06:20:55 UTC 2022-10-02 11:33:30 UTC 104.18.21.226
mnemonic passive DNS www.xing-share.com (3) 152226 2017-01-29 18:00:17 UTC 2022-10-02 03:55:24 UTC 109.233.159.12
mnemonic passive DNS assets.pinterest.com (3) 2560 2014-11-19 16:42:27 UTC 2022-10-02 15:21:52 UTC 151.101.84.84
mnemonic passive DNS realtime.pa.highwebmedia.com (13) 24791 2021-01-21 22:18:59 UTC 2022-10-02 15:02:38 UTC 13.224.222.22
mnemonic passive DNS platform.linkedin.com (1) 3785 2014-10-23 11:50:28 UTC 2022-10-02 14:12:05 UTC 23.36.76.210
mnemonic passive DNS s0.wp.com (2) 6184 2017-01-30 05:08:18 UTC 2022-10-02 11:52:27 UTC 192.0.77.32
mnemonic passive DNS www.paypalobjects.com (2) 1467 2012-05-30 06:40:21 UTC 2022-10-02 11:45:12 UTC 151.101.86.133
mnemonic passive DNS bam.nr-data.net (3) 630 2015-02-10 00:06:27 UTC 2022-10-02 12:30:16 UTC 162.247.241.14
mnemonic passive DNS chaturbate.com (1) 6807 2012-05-22 23:11:36 UTC 2022-10-02 20:37:38 UTC 104.18.100.40
mnemonic passive DNS pleasuretroveboutique.com (32) 0 2017-03-12 08:27:47 UTC 2022-08-15 12:55:51 UTC 70.32.23.76 Unknown ranking
mnemonic passive DNS www.redditstatic.com (2) 1440 2012-06-30 12:33:28 UTC 2022-10-02 14:15:11 UTC 151.101.85.140
mnemonic passive DNS region1.google-analytics.com (2) 0 2022-03-17 11:26:33 UTC 2022-10-02 11:36:31 UTC 216.239.34.36 Domain (google-analytics.com) ranked at: 8401
mnemonic passive DNS static-assets.highwebmedia.com (1) 16059 2021-01-19 21:46:26 UTC 2022-10-02 21:25:08 UTC 104.16.93.42
mnemonic passive DNS widgets.wp.com (3) 10182 2013-06-12 08:26:21 UTC 2022-10-02 11:52:27 UTC 192.0.77.32
mnemonic passive DNS platform.twitter.com (4) 597 2012-05-21 03:34:05 UTC 2022-10-02 13:57:48 UTC 192.229.233.25
mnemonic passive DNS d.smopy.com (1) 332514 2018-01-19 17:56:13 UTC 2022-10-01 22:19:14 UTC 23.235.244.225
mnemonic passive DNS i.bcprm.com (4) 31100 2021-06-18 14:35:27 UTC 2022-10-02 14:07:12 UTC 64.210.135.151
mnemonic passive DNS cbjpeg.stream.highwebmedia.com (19) 23619 2017-04-27 08:00:06 UTC 2022-10-02 15:02:59 UTC 131.153.88.95
mnemonic passive DNS connect.facebook.net (2) 139 2012-05-22 02:51:28 UTC 2022-10-02 11:18:54 UTC 31.13.72.12
mnemonic passive DNS widgets.pinterest.com (1) 6540 2013-04-10 10:19:37 UTC 2022-10-02 19:24:17 UTC 151.101.84.84
mnemonic passive DNS content-signature-2.cdn.mozilla.net (1) 1152 2020-11-03 12:26:46 UTC 2022-10-02 05:00:42 UTC 34.160.144.191
mnemonic passive DNS i.bimbolive.com (3) 52238 2015-04-21 11:23:51 UTC 2022-10-02 08:19:27 UTC 195.85.23.30
mnemonic passive DNS pc2121.com (4) 0 2021-10-20 07:46:08 UTC 2022-09-24 12:37:08 UTC 54.88.125.120 Unknown ranking
mnemonic passive DNS static.plugrush.com (1) 0 2015-03-04 14:05:30 UTC 2022-09-20 21:12:49 UTC 23.235.244.224 Domain (plugrush.com) ranked at: 20384
mnemonic passive DNS www.google-analytics.com (1) 40 2012-10-03 01:04:21 UTC 2022-10-02 18:30:13 UTC 142.250.74.174
mnemonic passive DNS push.services.mozilla.com (1) 2140 2015-09-03 10:29:36 UTC 2022-10-02 10:20:02 UTC 34.215.56.181
mnemonic passive DNS poweredby.jads.co (4) 30525 2019-12-04 10:34:12 UTC 2022-10-02 12:08:15 UTC 185.94.236.244
mnemonic passive DNS ajax.googleapis.com (1) 12905 2013-06-10 06:53:41 UTC 2022-10-02 17:19:54 UTC 142.250.74.170
mnemonic passive DNS www.exoclick.com (1) 199545 2012-11-20 05:16:55 UTC 2022-10-02 20:37:39 UTC 87.98.253.29
mnemonic passive DNS e1.o.lencr.org (1) 6159 2021-08-20 07:36:30 UTC 2022-10-02 11:34:26 UTC 23.36.76.226
mnemonic passive DNS ocsp.godaddy.com (1) 698 2012-05-20 19:28:57 UTC 2022-10-02 05:06:10 UTC 192.124.249.41
mnemonic passive DNS dev.bngpt.com (1) 0 2020-03-26 12:16:34 UTC 2022-04-06 16:42:58 UTC 185.75.253.87 Domain (bngpt.com) ranked at: 39180
mnemonic passive DNS ocsp.pki.goog (12) 175 2017-06-14 07:23:31 UTC 2022-10-02 05:01:45 UTC 142.250.74.3
mnemonic passive DNS cdn.onesignal.com (1) 3015 2015-04-22 13:41:50 UTC 2022-10-02 13:40:31 UTC 104.18.225.52
mnemonic passive DNS syndication.realsrv.com (5) 9112 2019-07-03 21:39:52 UTC 2022-10-02 13:44:14 UTC 95.211.229.247
mnemonic passive DNS fonts.googleapis.com (1) 8877 2013-06-10 20:14:26 UTC 2022-10-02 16:00:45 UTC 142.250.74.10
mnemonic passive DNS traffdaq.com (6) 862775 2014-10-09 01:02:14 UTC 2022-09-03 10:07:28 UTC 165.227.253.207
mnemonic passive DNS img-getpocket.cdn.mozilla.net (8) 1631 2017-09-01 03:40:57 UTC 2022-10-02 11:24:29 UTC 34.120.237.76
mnemonic passive DNS pixel.wp.com (2) 2545 2017-01-30 05:31:40 UTC 2022-10-02 11:52:28 UTC 192.0.76.3
mnemonic passive DNS contile.services.mozilla.com (1) 1114 2021-05-27 18:32:35 UTC 2022-10-02 04:45:21 UTC 34.117.237.239
mnemonic passive DNS images.pc161021.com (2) 644218 2022-07-14 10:38:43 UTC 2022-09-24 12:36:56 UTC 13.224.222.2
mnemonic passive DNS api.pinterest.com (1) 2281 2014-07-23 01:26:40 UTC 2022-10-02 18:24:20 UTC 23.38.200.197
mnemonic passive DNS d.pssy.xyz (1) 0 2022-01-18 00:00:45 UTC 2022-10-01 11:28:55 UTC 23.235.244.224 Unknown ranking
mnemonic passive DNS r3.o.lencr.org (4) 344 2020-12-02 08:52:13 UTC 2022-10-02 05:33:45 UTC 23.36.77.32
mnemonic passive DNS js.wpnsrv.com (1) 48536 2020-01-09 16:53:04 UTC 2022-10-02 08:58:41 UTC 205.185.216.42
mnemonic passive DNS fonts.gstatic.com (4) 0 2014-08-29 13:43:22 UTC 2022-10-02 11:24:27 UTC 216.58.207.195 Domain (gstatic.com) ranked at: 540
mnemonic passive DNS public-api.wordpress.com (3) 6465 2012-07-08 04:15:07 UTC 2022-10-02 18:36:28 UTC 192.0.78.23
mnemonic passive DNS stats.wp.com (1) 2711 2017-01-30 05:06:59 UTC 2022-10-02 11:52:27 UTC 192.0.76.3
mnemonic passive DNS www.google.com (1) 7 2016-08-04 12:36:31 UTC 2022-10-02 17:15:51 UTC 142.250.74.164
mnemonic passive DNS www.reddit.com (1) 2161 2012-05-22 18:03:18 UTC 2022-10-02 18:02:46 UTC 151.101.85.140
mnemonic passive DNS a.realsrv.com (3) 10080 2019-07-03 16:12:14 UTC 2022-10-02 14:54:43 UTC 205.185.216.10
mnemonic passive DNS ocsp.usertrust.com (5) 899 2012-05-21 15:43:18 UTC 2022-10-02 04:45:05 UTC 172.64.155.188
mnemonic passive DNS mylivechat.com (1) 45064 2012-07-06 21:10:12 UTC 2022-10-02 15:58:47 UTC 52.117.22.28
mnemonic passive DNS www.paypal.com (8) 2583 2012-09-05 05:46:24 UTC 2022-10-02 11:33:03 UTC 151.101.129.21
mnemonic passive DNS t.paypal.com (3) 3487 2013-04-18 12:22:33 UTC 2022-10-02 12:43:10 UTC 192.229.221.25
mnemonic passive DNS i.jads.co (14) 46788 2019-12-04 08:50:06 UTC 2022-10-02 08:12:05 UTC 69.16.175.10
mnemonic passive DNS bngpt.com (3) 39180 2017-02-01 05:03:52 UTC 2022-09-28 04:09:51 UTC 185.75.252.140
mnemonic passive DNS firefox.settings.services.mozilla.com (2) 867 2020-06-04 20:08:41 UTC 2022-10-02 16:25:36 UTC 13.224.222.54
mnemonic passive DNS c0.wp.com (17) 6988 2018-09-24 15:59:05 UTC 2022-10-02 13:03:18 UTC 192.0.77.37
mnemonic passive DNS www.googletagmanager.com (1) 75 2012-12-25 14:52:06 UTC 2022-10-02 14:05:11 UTC 142.250.74.168
mnemonic passive DNS sdk.beeketing.com (1) 52956 2017-01-04 06:23:37 UTC 2022-10-01 15:18:07 UTC 104.21.91.43


Recent reports on same IP/ASN/Domain/Screenshot

Last 1 reports on IP: 70.32.23.76

Date UQ / IDS / BL URL IP
2022-10-02 22:17:36 +0000
0 - 0 - 1 pleasuretroveboutique.com/interactive-webcam- (...) 70.32.23.76

Last 5 reports on ASN: A2HOSTING

Date UQ / IDS / BL URL IP
2022-11-27 19:25:18 +0000
0 - 0 - 8 verification-1006524399765308.ml/ 190.92.189.155
2022-11-27 18:27:58 +0000
0 - 0 - 7 2861976384760890.ml/SATRIA5321.php 200.69.23.120
2022-11-27 18:05:29 +0000
0 - 0 - 3 loginupdate103548.ml/ 190.92.189.155
2022-11-27 17:55:13 +0000
0 - 0 - 5 git.gitlab.gitlab.git.git.gitlab.whatsapp.bra (...) 216.137.179.55
2022-11-27 17:09:04 +0000
9 - 0 - 13 americanfirst.myftp.org/ 185.148.47.88

Last 1 reports on domain: pleasuretroveboutique.com

Date UQ / IDS / BL URL IP
2022-10-02 22:17:36 +0000
0 - 0 - 1 pleasuretroveboutique.com/interactive-webcam- (...) 70.32.23.76

No other reports with similar screenshot



JavaScript

Executed Scripts (155)


Executed Evals (4)

#1 JavaScript::Eval (size: 217154, repeated: 1) - SHA256: 12d943f4c305d44c0eaa640c26b479a833a107a0d118e629293eaeaa2dffcd17

                                        ; // CONCATENATED MODULE: ./resources/js/modules/ErrorHandler.js
class ErrorHandler {
    constructor(genericErrorText) {
        this.genericErrorText = genericErrorText;
        this.wrapper = document.querySelector('.woocommerce-notices-wrapper');
        this.messagesList = document.querySelector('ul.woocommerce-error');
    }

    genericError() {
        if (this.wrapper.classList.contains('ppcp-persist')) {
            return;
        }

        this.clear();
        this.message(this.genericErrorText);
    }

    appendPreparedErrorMessageElement(errorMessageElement) {
            if (this.messagesList === null) {
                this._prepareMessagesList();
            }

            this.messagesList.replaceWith(errorMessageElement);
        }
        /**
         * @param {String} text
         * @param {Boolean} persist
         */


    message(text, persist = false) {
            this._addMessage(text, persist);

            this._scrollToMessages();
        }
        /**
         * @param {Array} texts
         * @param {Boolean} persist
         */


    messages(texts, persist = false) {
            texts.forEach(t => this._addMessage(t, persist));

            this._scrollToMessages();
        }
        /**
         * @private
         * @param {String} text
         * @param {Boolean} persist
         */


    _addMessage(text, persist = false) {
            if (!typeof String || text.length === 0) {
                throw new Error('A new message text must be a non-empty string.');
            }

            if (this.messagesList === null) {
                this._prepareMessagesList();
            }

            if (persist) {
                this.wrapper.classList.add('ppcp-persist');
            } else {
                this.wrapper.classList.remove('ppcp-persist');
            }

            let messageNode = this._prepareMessagesListItem(text);

            this.messagesList.appendChild(messageNode);
        }
        /**
         * @private
         */


    _scrollToMessages() {
            jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'));
        }
        /**
         * @private
         */


    _prepareMessagesList() {
            if (this.messagesList === null) {
                this.messagesList = document.createElement('ul');
                this.messagesList.setAttribute('class', 'woocommerce-error');
                this.messagesList.setAttribute('role', 'alert');
                this.wrapper.appendChild(this.messagesList);
            }
        }
        /**
         * @private
         */


    _prepareMessagesListItem(message) {
        const li = document.createElement('li');
        li.innerHTML = message;
        return li;
    }

    clear() {
        if (this.messagesList === null) {
            return;
        }

        this.messagesList.innerHTML = '';
    }

}

/* harmony default export */
const modules_ErrorHandler = (ErrorHandler);; // CONCATENATED MODULE: ./resources/js/modules/OnApproveHandler/onApproveForContinue.js
const onApprove = (context, errorHandler) => {
    return (data, actions) => {
        return fetch(context.config.ajax.approve_order.endpoint, {
            method: 'POST',
            body: JSON.stringify({
                nonce: context.config.ajax.approve_order.nonce,
                order_id: data.orderID,
                funding_source: window.ppcpFundingSource
            })
        }).then(res => {
            return res.json();
        }).then(data => {
            if (!data.success) {
                errorHandler.genericError();
                return actions.restart().catch(err => {
                    errorHandler.genericError();
                });
            }

            location.href = context.config.redirect;
        });
    };
};

/* harmony default export */
const onApproveForContinue = (onApprove);; // CONCATENATED MODULE: ./resources/js/modules/Helper/PayerData.js
const payerData = () => {
    const payer = PayPalCommerceGateway.payer;

    if (!payer) {
        return null;
    }

    const phone = document.querySelector('#billing_phone') || typeof payer.phone !== 'undefined' ? {
        phone_type: "HOME",
        phone_number: {
            national_number: document.querySelector('#billing_phone') ? document.querySelector('#billing_phone').value : payer.phone.phone_number.national_number
        }
    } : null;
    const payerData = {
        email_address: document.querySelector('#billing_email') ? document.querySelector('#billing_email').value : payer.email_address,
        name: {
            surname: document.querySelector('#billing_last_name') ? document.querySelector('#billing_last_name').value : payer.name.surname,
            given_name: document.querySelector('#billing_first_name') ? document.querySelector('#billing_first_name').value : payer.name.given_name
        },
        address: {
            country_code: document.querySelector('#billing_country') ? document.querySelector('#billing_country').value : payer.address.country_code,
            address_line_1: document.querySelector('#billing_address_1') ? document.querySelector('#billing_address_1').value : payer.address.address_line_1,
            address_line_2: document.querySelector('#billing_address_2') ? document.querySelector('#billing_address_2').value : payer.address.address_line_2,
            admin_area_1: document.querySelector('#billing_state') ? document.querySelector('#billing_state').value : payer.address.admin_area_1,
            admin_area_2: document.querySelector('#billing_city') ? document.querySelector('#billing_city').value : payer.address.admin_area_2,
            postal_code: document.querySelector('#billing_postcode') ? document.querySelector('#billing_postcode').value : payer.address.postal_code
        }
    };

    if (phone) {
        payerData.phone = phone;
    }

    return payerData;
};; // CONCATENATED MODULE: ./resources/js/modules/Helper/CheckoutMethodState.js
const PaymentMethods = {
    PAYPAL: 'ppcp-gateway',
    CARDS: 'ppcp-credit-card-gateway',
    OXXO: 'ppcp-oxxo-gateway',
    CARD_BUTTON: 'ppcp-card-button-gateway'
};
const ORDER_BUTTON_SELECTOR = '#place_order';
const getCurrentPaymentMethod = () => {
    const el = document.querySelector('input[name="payment_method"]:checked');

    if (!el) {
        return null;
    }

    return el.value;
};
const isSavedCardSelected = () => {
    const savedCardList = document.querySelector('#saved-credit-card');
    return savedCardList && savedCardList.value !== '';
};; // CONCATENATED MODULE: ./resources/js/modules/ActionHandler/CartActionHandler.js




class CartActionHandler {
    constructor(config, errorHandler) {
        this.config = config;
        this.errorHandler = errorHandler;
    }

    configuration() {
        const createOrder = (data, actions) => {
            const payer = payerData();
            const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ? this.config.bn_codes[this.config.context] : '';
            return fetch(this.config.ajax.create_order.endpoint, {
                method: 'POST',
                body: JSON.stringify({
                    nonce: this.config.ajax.create_order.nonce,
                    purchase_units: [],
                    payment_method: PaymentMethods.PAYPAL,
                    funding_source: window.ppcpFundingSource,
                    bn_code: bnCode,
                    payer,
                    context: this.config.context
                })
            }).then(function(res) {
                return res.json();
            }).then(function(data) {
                if (!data.success) {
                    console.error(data);
                    throw Error(data.data.message);
                }

                return data.data.id;
            });
        };

        return {
            createOrder,
            onApprove: onApproveForContinue(this, this.errorHandler),
                onError: error => {
                    this.errorHandler.genericError();
                }
        };
    }

}

/* harmony default export */
const ActionHandler_CartActionHandler = (CartActionHandler);; // CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/MiniCartBootstap.js



class MiniCartBootstap {
    constructor(gateway, renderer) {
        this.gateway = gateway;
        this.renderer = renderer;
        this.actionHandler = null;
    }

    init() {
        this.actionHandler = new ActionHandler_CartActionHandler(PayPalCommerceGateway, new modules_ErrorHandler(this.gateway.labels.error.generic));
        this.render();
        jQuery(document.body).on('wc_fragments_loaded wc_fragments_refreshed', () => {
            this.render();
        });
    }

    shouldRender() {
        return document.querySelector(this.gateway.button.mini_cart_wrapper) !== null || document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper) !== null;
    }

    render() {
        if (!this.shouldRender()) {
            return;
        }

        this.renderer.render(this.actionHandler.configuration(), {
            button: {
                wrapper: this.gateway.button.mini_cart_wrapper,
                style: this.gateway.button.mini_cart_style
            }
        });
    }

}

/* harmony default export */
const ContextBootstrap_MiniCartBootstap = (MiniCartBootstap);; // CONCATENATED MODULE: ./resources/js/modules/Helper/UpdateCart.js


class UpdateCart {
    constructor(endpoint, nonce) {
            this.endpoint = endpoint;
            this.nonce = nonce;
        }
        /**
         *
         * @param onResolve
         * @param {Product[]} products
         * @returns {Promise<unknown>}
         */


    update(onResolve, products) {
        return new Promise((resolve, reject) => {
            fetch(this.endpoint, {
                method: 'POST',
                body: JSON.stringify({
                    nonce: this.nonce,
                    products
                })
            }).then(result => {
                return result.json();
            }).then(result => {
                if (!result.success) {
                    reject(result.data);
                    return;
                }

                const resolved = onResolve(result.data);
                resolve(resolved);
            });
        });
    }

}

/* harmony default export */
const Helper_UpdateCart = (UpdateCart);; // CONCATENATED MODULE: ./resources/js/modules/Helper/ButtonsToggleListener.js
/**
 * When you can't add something to the cart, the PayPal buttons should not show.
 * Therefore we listen for changes on the add to cart button and show/hide the buttons accordingly.
 */
class ButtonsToggleListener {
    constructor(element, showCallback, hideCallback) {
        this.element = element;
        this.showCallback = showCallback;
        this.hideCallback = hideCallback;
        this.observer = null;
    }

    init() {
        const config = {
            attributes: true
        };

        const callback = () => {
            if (this.element.classList.contains('disabled')) {
                this.hideCallback();
                return;
            }

            this.showCallback();
        };

        this.observer = new MutationObserver(callback);
        this.observer.observe(this.element, config);
        callback();
    }

    disconnect() {
        this.observer.disconnect();
    }

}

/* harmony default export */
const Helper_ButtonsToggleListener = (ButtonsToggleListener);; // CONCATENATED MODULE: ./resources/js/modules/Entity/Product.js
class Product {
    constructor(id, quantity, variations) {
        this.id = id;
        this.quantity = quantity;
        this.variations = variations;
    }

    data() {
        return {
            id: this.id,
            quantity: this.quantity,
            variations: this.variations
        };
    }

}

/* harmony default export */
const Entity_Product = (Product);; // CONCATENATED MODULE: ./resources/js/modules/ActionHandler/SingleProductActionHandler.js






class SingleProductActionHandler {
    constructor(config, updateCart, showButtonCallback, hideButtonCallback, formElement, errorHandler) {
        this.config = config;
        this.updateCart = updateCart;
        this.showButtonCallback = showButtonCallback;
        this.hideButtonCallback = hideButtonCallback;
        this.formElement = formElement;
        this.errorHandler = errorHandler;
    }

    configuration() {
        if (this.hasVariations()) {
            const observer = new Helper_ButtonsToggleListener(this.formElement.querySelector('.single_add_to_cart_button'), this.showButtonCallback, this.hideButtonCallback);
            observer.init();
        }

        return {
            createOrder: this.createOrder(),
            onApprove: onApproveForContinue(this, this.errorHandler),
            onError: error => {
                this.errorHandler.genericError();
            }
        };
    }

    createOrder() {
        var getProducts = null;

        if (!this.isGroupedProduct()) {
            getProducts = () => {
                const id = document.querySelector('[name="add-to-cart"]').value;
                const qty = document.querySelector('[name="quantity"]').value;
                const variations = this.variations();
                return [new Entity_Product(id, qty, variations)];
            };
        } else {
            getProducts = () => {
                const products = [];
                this.formElement.querySelectorAll('input[type="number"]').forEach(element => {
                    if (!element.value) {
                        return;
                    }

                    const elementName = element.getAttribute('name').match(/quantity\[([\d]*)\]/);

                    if (elementName.length !== 2) {
                        return;
                    }

                    const id = parseInt(elementName[1]);
                    const quantity = parseInt(element.value);
                    products.push(new Entity_Product(id, quantity, null));
                });
                return products;
            };
        }

        const createOrder = (data, actions) => {
            this.errorHandler.clear();

            const onResolve = purchase_units => {
                const payer = payerData();
                const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ? this.config.bn_codes[this.config.context] : '';
                return fetch(this.config.ajax.create_order.endpoint, {
                    method: 'POST',
                    body: JSON.stringify({
                        nonce: this.config.ajax.create_order.nonce,
                        purchase_units,
                        payer,
                        bn_code: bnCode,
                        payment_method: PaymentMethods.PAYPAL,
                        funding_source: window.ppcpFundingSource,
                        context: this.config.context
                    })
                }).then(function(res) {
                    return res.json();
                }).then(function(data) {
                    if (!data.success) {
                        console.error(data);
                        throw Error(data.data.message);
                    }

                    return data.data.id;
                });
            };

            const promise = this.updateCart.update(onResolve, getProducts());
            return promise;
        };

        return createOrder;
    }

    variations() {
        if (!this.hasVariations()) {
            return null;
        }

        const attributes = [...this.formElement.querySelectorAll("[name^='attribute_']")].map(element => {
            return {
                value: element.value,
                name: element.name
            };
        });
        return attributes;
    }

    hasVariations() {
        return this.formElement.classList.contains('variations_form');
    }

    isGroupedProduct() {
        return this.formElement.classList.contains('grouped_form');
    }

}

/* harmony default export */
const ActionHandler_SingleProductActionHandler = (SingleProductActionHandler);; // CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/SingleProductBootstap.js




class SingleProductBootstap {
    constructor(gateway, renderer, messages) {
        this.gateway = gateway;
        this.renderer = renderer;
        this.messages = messages;
    }

    handleChange() {
        if (!this.shouldRender()) {
            this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);
            this.renderer.hideButtons(this.gateway.button.wrapper);
            this.messages.hideMessages();
            return;
        }

        this.render();
    }

    init() {
        document.querySelector('form.cart').addEventListener('change', this.handleChange.bind(this));

        if (!this.shouldRender()) {
            this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);
            this.messages.hideMessages();
            return;
        }

        this.render();
    }

    shouldRender() {
        return document.querySelector('form.cart') !== null && !this.priceAmountIsZero();
    }

    priceAmount() {
        let priceText = "0";

        if (document.querySelector('form.cart ins .woocommerce-Price-amount')) {
            priceText = document.querySelector('form.cart ins .woocommerce-Price-amount').innerText;
        } else if (document.querySelector('form.cart .woocommerce-Price-amount')) {
            priceText = document.querySelector('form.cart .woocommerce-Price-amount').innerText;
        } else if (document.querySelector('.product .woocommerce-Price-amount')) {
            priceText = document.querySelector('.product .woocommerce-Price-amount').innerText;
        }

        priceText = priceText.replace(/,/g, '.');
        return parseFloat(priceText.replace(/([^\d,\.\s]*)/g, ''));
    }

    priceAmountIsZero() {
        return this.priceAmount() === 0;
    }

    render() {
        const actionHandler = new ActionHandler_SingleProductActionHandler(this.gateway, new Helper_UpdateCart(this.gateway.ajax.change_cart.endpoint, this.gateway.ajax.change_cart.nonce), () => {
            this.renderer.showButtons(this.gateway.button.wrapper);
            this.renderer.showButtons(this.gateway.hosted_fields.wrapper);
            this.messages.renderWithAmount(this.priceAmount());
        }, () => {
            this.renderer.hideButtons(this.gateway.button.wrapper);
            this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);
            this.messages.hideMessages();
        }, document.querySelector('form.cart'), new modules_ErrorHandler(this.gateway.labels.error.generic));
        this.renderer.render(actionHandler.configuration());
    }

}

/* harmony default export */
const ContextBootstrap_SingleProductBootstap = (SingleProductBootstap);; // CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/CartBootstap.js



class CartBootstrap {
    constructor(gateway, renderer) {
        this.gateway = gateway;
        this.renderer = renderer;
    }

    init() {
        if (!this.shouldRender()) {
            return;
        }

        this.render();
        jQuery(document.body).on('updated_cart_totals updated_checkout', () => {
            this.render();
        });
    }

    shouldRender() {
        return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;
    }

    render() {
        const actionHandler = new ActionHandler_CartActionHandler(PayPalCommerceGateway, new modules_ErrorHandler(this.gateway.labels.error.generic));
        this.renderer.render(actionHandler.configuration());
    }

}

/* harmony default export */
const CartBootstap = (CartBootstrap);; // CONCATENATED MODULE: ./resources/js/modules/OnApproveHandler/onApproveForPayNow.js
const onApproveForPayNow_onApprove = (context, errorHandler, spinner) => {
    return (data, actions) => {
        spinner.block();
        errorHandler.clear();
        return fetch(context.config.ajax.approve_order.endpoint, {
            method: 'POST',
            body: JSON.stringify({
                nonce: context.config.ajax.approve_order.nonce,
                order_id: data.orderID,
                funding_source: window.ppcpFundingSource
            })
        }).then(res => {
            return res.json();
        }).then(data => {
            spinner.unblock();

            if (!data.success) {
                if (data.data.code === 100) {
                    errorHandler.message(data.data.message);
                } else {
                    errorHandler.genericError();
                }

                if (typeof actions !== 'undefined' && typeof actions.restart !== 'undefined') {
                    return actions.restart();
                }

                throw new Error(data.data.message);
            }

            document.querySelector('#place_order').click();
        });
    };
};

/* harmony default export */
const onApproveForPayNow = (onApproveForPayNow_onApprove);; // CONCATENATED MODULE: ./resources/js/modules/ActionHandler/CheckoutActionHandler.js




class CheckoutActionHandler {
    constructor(config, errorHandler, spinner) {
        this.config = config;
        this.errorHandler = errorHandler;
        this.spinner = spinner;
    }

    configuration() {
        const spinner = this.spinner;

        const createOrder = (data, actions) => {
            const payer = payerData();
            const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ? this.config.bn_codes[this.config.context] : '';
            const errorHandler = this.errorHandler;
            const formSelector = this.config.context === 'checkout' ? 'form.checkout' : 'form#order_review';
            const formData = new FormData(document.querySelector(formSelector)); // will not handle fields with multiple values (checkboxes, <select multiple>), but we do not care about this here

            const formJsonObj = Object.fromEntries(formData);
            const createaccount = jQuery('#createaccount').is(":checked") ? true : false;
            const paymentMethod = getCurrentPaymentMethod();
            const fundingSource = window.ppcpFundingSource;
            return fetch(this.config.ajax.create_order.endpoint, {
                method: 'POST',
                body: JSON.stringify({
                    nonce: this.config.ajax.create_order.nonce,
                    payer,
                    bn_code: bnCode,
                    context: this.config.context,
                    order_id: this.config.order_id,
                    payment_method: paymentMethod,
                    funding_source: fundingSource,
                    form: formJsonObj,
                    createaccount: createaccount
                })
            }).then(function(res) {
                return res.json();
            }).then(function(data) {
                if (!data.success) {
                    spinner.unblock(); //handle both messages sent from Woocommerce (data.messages) and this plugin (data.data.message)

                    if (typeof data.messages !== 'undefined') {
                        const domParser = new DOMParser();
                        errorHandler.appendPreparedErrorMessageElement(domParser.parseFromString(data.messages, 'text/html').querySelector('ul'));
                    } else {
                        errorHandler.clear();

                        if (data.data.details.length > 0) {
                            errorHandler.message(data.data.details.map(d => `${d.issue} ${d.description}`).join('<br/>'), true);
                        } else {
                            errorHandler.message(data.data.message, true);
                        }
                    }

                    throw new Error(data.data.message);
                }

                const input = document.createElement('input');
                input.setAttribute('type', 'hidden');
                input.setAttribute('name', 'ppcp-resume-order');
                input.setAttribute('value', data.data.purchase_units[0].custom_id);
                document.querySelector(formSelector).append(input);
                return data.data.id;
            });
        };

        return {
            createOrder,
            onApprove: onApproveForPayNow(this, this.errorHandler, this.spinner),
                onCancel: () => {
                    spinner.unblock();
                },
                onError: () => {
                    this.errorHandler.genericError();
                    spinner.unblock();
                }
        };
    }

}

/* harmony default export */
const ActionHandler_CheckoutActionHandler = (CheckoutActionHandler);; // CONCATENATED MODULE: ./resources/js/modules/Helper/Hiding.js
const getElement = selectorOrElement => {
    if (typeof selectorOrElement === 'string') {
        return document.querySelector(selectorOrElement);
    }

    return selectorOrElement;
};

const isVisible = element => {
    return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);
};
const setVisible = (selectorOrElement, show, important = false) => {
    const element = getElement(selectorOrElement);

    if (!element) {
        return;
    }

    const currentValue = element.style.getPropertyValue('display');

    if (!show) {
        if (currentValue === 'none') {
            return;
        }

        element.style.setProperty('display', 'none', important ? 'important' : '');
    } else {
        if (currentValue === 'none') {
            element.style.removeProperty('display');
        } // still not visible (if something else added display: none in CSS)


        if (!isVisible(element)) {
            element.style.setProperty('display', 'block');
        }
    }
};
const hide = (selectorOrElement, important = false) => {
    setVisible(selectorOrElement, false, important);
};
const show = selectorOrElement => {
    setVisible(selectorOrElement, true);
};; // CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/CheckoutBootstap.js





class CheckoutBootstap {
    constructor(gateway, renderer, messages, spinner) {
        this.gateway = gateway;
        this.renderer = renderer;
        this.messages = messages;
        this.spinner = spinner;
        this.standardOrderButtonSelector = ORDER_BUTTON_SELECTOR;
        this.buttonChangeObserver = new MutationObserver(el => {
            this.updateUi();
        });
    }

    init() {
        this.render(); // Unselect saved card.
        // WC saves form values, so with our current UI it would be a bit weird
        // if the user paid with saved, then after some time tries to pay again,
        // but wants to enter a new card, and to do that they have to choose Select payment in the list.

        jQuery('#saved-credit-card').val(jQuery('#saved-credit-card option:first').val());
        jQuery(document.body).on('updated_checkout', () => {
            this.render();
        });
        jQuery(document.body).on('updated_checkout payment_method_selected', () => {
            this.updateUi();
        });
        jQuery(document).on('hosted_fields_loaded', () => {
            jQuery('#saved-credit-card').on('change', () => {
                this.updateUi();
            });
        });
        this.updateUi();
    }

    shouldRender() {
        if (document.querySelector(this.gateway.button.cancel_wrapper)) {
            return false;
        }

        return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;
    }

    render() {
        if (!this.shouldRender()) {
            return;
        }

        if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {
            document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');
        }

        const actionHandler = new ActionHandler_CheckoutActionHandler(PayPalCommerceGateway, new modules_ErrorHandler(this.gateway.labels.error.generic), this.spinner);
        this.renderer.render(actionHandler.configuration());
        this.buttonChangeObserver.observe(document.querySelector(this.standardOrderButtonSelector), {
            attributes: true
        });
    }

    updateUi() {
        const currentPaymentMethod = getCurrentPaymentMethod();
        const isPaypal = currentPaymentMethod === PaymentMethods.PAYPAL;
        const isCard = currentPaymentMethod === PaymentMethods.CARDS;
        const isSeparateButtonGateway = [PaymentMethods.CARD_BUTTON].includes(currentPaymentMethod);
        const isSavedCard = isCard && isSavedCardSelected();
        const isNotOurGateway = !isPaypal && !isCard && !isSeparateButtonGateway;
        const isFreeTrial = PayPalCommerceGateway.is_free_trial_cart;
        const hasVaultedPaypal = PayPalCommerceGateway.vaulted_paypal_email !== '';
        const paypalButtonWrappers = {...Object.entries(PayPalCommerceGateway.separate_buttons).reduce((result, [k, data]) => {
                return {...result, [data.id]: data.wrapper
                };
            }, {})
        };
        setVisible(this.standardOrderButtonSelector, isPaypal && isFreeTrial && hasVaultedPaypal || isNotOurGateway || isSavedCard, true);
        setVisible('.ppcp-vaulted-paypal-details', isPaypal);
        setVisible(this.gateway.button.wrapper, isPaypal && !(isFreeTrial && hasVaultedPaypal));
        setVisible(this.gateway.messages.wrapper, isPaypal && !isFreeTrial);
        setVisible(this.gateway.hosted_fields.wrapper, isCard && !isSavedCard);

        for (const [gatewayId, wrapper] of Object.entries(paypalButtonWrappers)) {
            setVisible(wrapper, gatewayId === currentPaymentMethod);
        }

        if (isPaypal && !isFreeTrial) {
            this.messages.render();
        }

        if (isCard) {
            if (isSavedCard) {
                this.disableCreditCardFields();
            } else {
                this.enableCreditCardFields();
            }
        }
    }

    disableCreditCardFields() {
        jQuery('label[for="ppcp-credit-card-gateway-card-number"]').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-gateway-card-number').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('label[for="ppcp-credit-card-gateway-card-expiry"]').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-gateway-card-expiry').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('label[for="ppcp-credit-card-gateway-card-cvc"]').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-gateway-card-cvc').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('label[for="vault"]').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-vault').addClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-vault').attr("disabled", true);
        this.renderer.disableCreditCardFields();
    }

    enableCreditCardFields() {
        jQuery('label[for="ppcp-credit-card-gateway-card-number"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-gateway-card-number').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('label[for="ppcp-credit-card-gateway-card-expiry"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-gateway-card-expiry').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('label[for="ppcp-credit-card-gateway-card-cvc"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-gateway-card-cvc').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('label[for="vault"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-vault').removeClass('ppcp-credit-card-gateway-form-field-disabled');
        jQuery('#ppcp-credit-card-vault').attr("disabled", false);
        this.renderer.enableCreditCardFields();
    }

}

/* harmony default export */
const ContextBootstrap_CheckoutBootstap = (CheckoutBootstap);; // CONCATENATED MODULE: ./resources/js/modules/Helper/Subscriptions.js
const isChangePaymentPage = () => {
    const urlParams = new URLSearchParams(window.location.search);
    return urlParams.has('change_payment_method');
};; // CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/PayNowBootstrap.js



class PayNowBootstrap extends ContextBootstrap_CheckoutBootstap {
    constructor(gateway, renderer, messages, spinner) {
        super(gateway, renderer, messages, spinner);
    }

    updateUi() {
        if (isChangePaymentPage()) {
            return;
        }

        super.updateUi();
    }

}

/* harmony default export */
const ContextBootstrap_PayNowBootstrap = (PayNowBootstrap);
// EXTERNAL MODULE: ./node_modules/deepmerge/dist/cjs.js
var cjs = __webpack_require__(996);
var cjs_default = /*#__PURE__*/ __webpack_require__.n(cjs);; // CONCATENATED MODULE: ./resources/js/modules/Renderer/Renderer.js


class Renderer {
    constructor(creditCardRenderer, defaultSettings, onSmartButtonClick, onSmartButtonsInit) {
        this.defaultSettings = defaultSettings;
        this.creditCardRenderer = creditCardRenderer;
        this.onSmartButtonClick = onSmartButtonClick;
        this.onSmartButtonsInit = onSmartButtonsInit;
        this.renderedSources = new Set();
    }

    render(contextConfig, settingsOverride = {}) {
        const settings = cjs_default()(this.defaultSettings, settingsOverride);
        const enabledSeparateGateways = Object.fromEntries(Object.entries(settings.separate_buttons).filter(([s, data]) => document.querySelector(data.wrapper)));
        const hasEnabledSeparateGateways = Object.keys(enabledSeparateGateways).length !== 0;

        if (!hasEnabledSeparateGateways) {
            this.renderButtons(settings.button.wrapper, settings.button.style, contextConfig, hasEnabledSeparateGateways);
        } else {
            // render each button separately
            for (const fundingSource of paypal.getFundingSources().filter(s => !(s in enabledSeparateGateways))) {
                let style = settings.button.style;

                if (fundingSource !== 'paypal') {
                    style = {
                        shape: style.shape
                    };
                }

                this.renderButtons(settings.button.wrapper, style, contextConfig, hasEnabledSeparateGateways, fundingSource);
            }
        }

        this.creditCardRenderer.render(settings.hosted_fields.wrapper, contextConfig);

        for (const [fundingSource, data] of Object.entries(enabledSeparateGateways)) {
            this.renderButtons(data.wrapper, data.style, contextConfig, hasEnabledSeparateGateways, fundingSource);
        }
    }

    renderButtons(wrapper, style, contextConfig, hasEnabledSeparateGateways, fundingSource = null) {
        if (!document.querySelector(wrapper) || this.isAlreadyRendered(wrapper, fundingSource, hasEnabledSeparateGateways) || 'undefined' === typeof paypal.Buttons) {
            return;
        }

        if (fundingSource) {
            contextConfig.fundingSource = fundingSource;
        }

        const btn = paypal.Buttons({
            style,
            ...contextConfig,
            onClick: this.onSmartButtonClick,
                onInit: this.onSmartButtonsInit
        });

        if (!btn.isEligible()) {
            return;
        }

        btn.render(wrapper);
        this.renderedSources.add(wrapper + fundingSource ? ? '');
    }

    isAlreadyRendered(wrapper, fundingSource, hasEnabledSeparateGateways) {
        // Simply check that has child nodes when we do not need to render buttons separately,
        // this will reduce the risk of breaking with different themes/plugins
        // and on the cart page (where we also do not need to render separately), which may fully reload this part of the page.
        // Ideally we should also find a way to detect such full reloads and remove the corresponding keys from the set.
        if (!hasEnabledSeparateGateways) {
            return document.querySelector(wrapper).hasChildNodes();
        }

        return this.renderedSources.has(wrapper + fundingSource ? ? '');
    }

    hideButtons(element) {
        const domElement = document.querySelector(element);

        if (!domElement) {
            return false;
        }

        domElement.style.display = 'none';
        return true;
    }

    showButtons(element) {
        const domElement = document.querySelector(element);

        if (!domElement) {
            return false;
        }

        domElement.style.display = 'block';
        return true;
    }

    disableCreditCardFields() {
        this.creditCardRenderer.disableFields();
    }

    enableCreditCardFields() {
        this.creditCardRenderer.enableFields();
    }

}

/* harmony default export */
const Renderer_Renderer = (Renderer);; // CONCATENATED MODULE: ./resources/js/modules/Helper/DccInputFactory.js
const dccInputFactory = original => {
    const styles = window.getComputedStyle(original);
    const newElement = document.createElement('span');
    newElement.setAttribute('id', original.id);
    newElement.setAttribute('class', original.className);
    Object.values(styles).forEach(prop => {
        if (!styles[prop] || !isNaN(prop) || prop === 'background-image') {
            return;
        }

        newElement.style.setProperty(prop, '' + styles[prop]);
    });
    return newElement;
};

/* harmony default export */
const DccInputFactory = (dccInputFactory);; // CONCATENATED MODULE: ./resources/js/modules/Renderer/CreditCardRenderer.js




class CreditCardRenderer {
    constructor(defaultConfig, errorHandler, spinner) {
        this.defaultConfig = defaultConfig;
        this.errorHandler = errorHandler;
        this.spinner = spinner;
        this.cardValid = false;
        this.formValid = false;
        this.currentHostedFieldsInstance = null;
    }

    render(wrapper, contextConfig) {
        if (this.defaultConfig.context !== 'checkout' && this.defaultConfig.context !== 'pay-now' || wrapper === null || document.querySelector(wrapper) === null) {
            return;
        }

        if (typeof paypal.HostedFields === 'undefined' || !paypal.HostedFields.isEligible()) {
            const wrapperElement = document.querySelector(wrapper);
            wrapperElement.parentNode.removeChild(wrapperElement);
            return;
        }

        const buttonSelector = wrapper + ' button';

        if (this.currentHostedFieldsInstance) {
            this.currentHostedFieldsInstance.teardown().catch(err => console.error(`Hosted fields teardown error: ${err}`));
            this.currentHostedFieldsInstance = null;
        }

        const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');

        if (!gateWayBox) {
            return;
        }

        const oldDisplayStyle = gateWayBox.style.display;
        gateWayBox.style.display = 'block';
        const hideDccGateway = document.querySelector('#ppcp-hide-dcc');

        if (hideDccGateway) {
            hideDccGateway.parentNode.removeChild(hideDccGateway);
        }

        const cardNumberField = document.querySelector('#ppcp-credit-card-gateway-card-number');
        const stylesRaw = window.getComputedStyle(cardNumberField);
        let styles = {};
        Object.values(stylesRaw).forEach(prop => {
            if (!stylesRaw[prop]) {
                return;
            }

            styles[prop] = '' + stylesRaw[prop];
        });
        const cardNumber = DccInputFactory(cardNumberField);
        cardNumberField.parentNode.replaceChild(cardNumber, cardNumberField);
        const cardExpiryField = document.querySelector('#ppcp-credit-card-gateway-card-expiry');
        const cardExpiry = DccInputFactory(cardExpiryField);
        cardExpiryField.parentNode.replaceChild(cardExpiry, cardExpiryField);
        const cardCodeField = document.querySelector('#ppcp-credit-card-gateway-card-cvc');
        const cardCode = DccInputFactory(cardCodeField);
        cardCodeField.parentNode.replaceChild(cardCode, cardCodeField);
        gateWayBox.style.display = oldDisplayStyle;
        const formWrapper = '.payment_box payment_method_ppcp-credit-card-gateway';

        if (this.defaultConfig.enforce_vault && document.querySelector(formWrapper + ' .ppcp-credit-card-vault')) {
            document.querySelector(formWrapper + ' .ppcp-credit-card-vault').checked = true;
            document.querySelector(formWrapper + ' .ppcp-credit-card-vault').setAttribute('disabled', true);
        }

        paypal.HostedFields.render({
            createOrder: contextConfig.createOrder,
            styles: {
                'input': styles
            },
            fields: {
                number: {
                    selector: '#ppcp-credit-card-gateway-card-number',
                    placeholder: this.defaultConfig.hosted_fields.labels.credit_card_number
                },
                cvv: {
                    selector: '#ppcp-credit-card-gateway-card-cvc',
                    placeholder: this.defaultConfig.hosted_fields.labels.cvv
                },
                expirationDate: {
                    selector: '#ppcp-credit-card-gateway-card-expiry',
                    placeholder: this.defaultConfig.hosted_fields.labels.mm_yy
                }
            }
        }).then(hostedFields => {
            document.dispatchEvent(new CustomEvent("hosted_fields_loaded"));
            this.currentHostedFieldsInstance = hostedFields;
            hostedFields.on('inputSubmitRequest', () => {
                this._submit(contextConfig);
            });
            hostedFields.on('cardTypeChange', event => {
                if (!event.cards.length) {
                    this.cardValid = false;
                    return;
                }

                const validCards = this.defaultConfig.hosted_fields.valid_cards;
                this.cardValid = validCards.indexOf(event.cards[0].type) !== -1;

                const className = this._cardNumberFiledCLassNameByCardType(event.cards[0].type);

                this._recreateElementClassAttribute(cardNumber, cardNumberField.className);

                if (event.fields.number.isValid) {
                    cardNumber.classList.add(className);
                }
            });
            hostedFields.on('validityChange', event => {
                const formValid = Object.keys(event.fields).every(function(key) {
                    return event.fields[key].isValid;
                });

                const className = this._cardNumberFiledCLassNameByCardType(event.cards[0].type);

                event.fields.number.isValid ? cardNumber.classList.add(className) : this._recreateElementClassAttribute(cardNumber, cardNumberField.className);
                this.formValid = formValid;
            });
            show(buttonSelector);

            if (document.querySelector(wrapper).getAttribute('data-ppcp-subscribed') !== true) {
                document.querySelector(buttonSelector).addEventListener('click', event => {
                    event.preventDefault();

                    this._submit(contextConfig);
                });
                document.querySelector(wrapper).setAttribute('data-ppcp-subscribed', true);
            }
        });
        document.querySelector('#payment_method_ppcp-credit-card-gateway').addEventListener('click', () => {
            document.querySelector('label[for=ppcp-credit-card-gateway-card-number]').click();
        });
    }

    disableFields() {
        if (this.currentHostedFieldsInstance) {
            this.currentHostedFieldsInstance.setAttribute({
                field: 'number',
                attribute: 'disabled'
            });
            this.currentHostedFieldsInstance.setAttribute({
                field: 'cvv',
                attribute: 'disabled'
            });
            this.currentHostedFieldsInstance.setAttribute({
                field: 'expirationDate',
                attribute: 'disabled'
            });
        }
    }

    enableFields() {
        if (this.currentHostedFieldsInstance) {
            this.currentHostedFieldsInstance.removeAttribute({
                field: 'number',
                attribute: 'disabled'
            });
            this.currentHostedFieldsInstance.removeAttribute({
                field: 'cvv',
                attribute: 'disabled'
            });
            this.currentHostedFieldsInstance.removeAttribute({
                field: 'expirationDate',
                attribute: 'disabled'
            });
        }
    }

    _submit(contextConfig) {
        this.spinner.block();
        this.errorHandler.clear();

        if (this.formValid && this.cardValid) {
            const save_card = this.defaultConfig.can_save_vault_token ? true : false;
            let vault = document.getElementById('ppcp-credit-card-vault') ? document.getElementById('ppcp-credit-card-vault').checked : save_card;

            if (this.defaultConfig.enforce_vault) {
                vault = true;
            }

            const contingency = this.defaultConfig.hosted_fields.contingency;
            const hostedFieldsData = {
                vault: vault
            };

            if (contingency !== 'NO_3D_SECURE') {
                hostedFieldsData.contingencies = [contingency];
            }

            if (this.defaultConfig.payer) {
                hostedFieldsData.cardholderName = this.defaultConfig.payer.name.given_name + ' ' + this.defaultConfig.payer.name.surname;
            }

            if (!hostedFieldsData.cardholderName) {
                const firstName = document.getElementById('billing_first_name') ? document.getElementById('billing_first_name').value : '';
                const lastName = document.getElementById('billing_last_name') ? document.getElementById('billing_last_name').value : '';
                hostedFieldsData.cardholderName = firstName + ' ' + lastName;
            }

            this.currentHostedFieldsInstance.submit(hostedFieldsData).then(payload => {
                payload.orderID = payload.orderId;
                this.spinner.unblock();
                return contextConfig.onApprove(payload);
            }).catch(err => {
                this.spinner.unblock();
                this.errorHandler.clear();

                if (err.details) {
                    this.errorHandler.message(err.details.map(d => `${d.issue} ${d.description}`).join('<br/>'), true);
                }
            });
        } else {
            this.spinner.unblock();
            const message = !this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;
            this.errorHandler.message(message);
        }
    }

    _cardNumberFiledCLassNameByCardType(cardType) {
        return cardType === 'american-express' ? 'amex' : cardType.replace('-', '');
    }

    _recreateElementClassAttribute(element, newClassName) {
        element.removeAttribute('class');
        element.setAttribute('class', newClassName);
    }

}

/* harmony default export */
const Renderer_CreditCardRenderer = (CreditCardRenderer);; // CONCATENATED MODULE: ./resources/js/modules/DataClientIdAttributeHandler.js
const storageKey = 'ppcp-data-client-id';

const validateToken = (token, user) => {
    if (!token) {
        return false;
    }

    if (token.user !== user) {
        return false;
    }

    const currentTime = new Date().getTime();
    const isExpired = currentTime >= token.expiration * 1000;
    return !isExpired;
};

const storedTokenForUser = user => {
    const token = JSON.parse(sessionStorage.getItem(storageKey));

    if (validateToken(token, user)) {
        return token.token;
    }

    return null;
};

const storeToken = token => {
    sessionStorage.setItem(storageKey, JSON.stringify(token));
};

const dataClientIdAttributeHandler = (script, config) => {
    fetch(config.endpoint, {
        method: 'POST',
        body: JSON.stringify({
            nonce: config.nonce
        })
    }).then(res => {
        return res.json();
    }).then(data => {
        const isValid = validateToken(data, config.user);

        if (!isValid) {
            return;
        }

        storeToken(data);
        script.setAttribute('data-client-token', data.token);
        document.body.append(script);
    });
};

/* harmony default export */
const DataClientIdAttributeHandler = (dataClientIdAttributeHandler);; // CONCATENATED MODULE: ./resources/js/modules/Renderer/MessageRenderer.js
class MessageRenderer {
    constructor(config) {
        this.config = config;
    }

    render() {
        if (!this.shouldRender()) {
            return;
        }

        paypal.Messages({
            amount: this.config.amount,
            placement: this.config.placement,
            style: this.config.style
        }).render(this.config.wrapper);
        jQuery(document.body).on('updated_cart_totals', () => {
            paypal.Messages({
                amount: this.config.amount,
                placement: this.config.placement,
                style: this.config.style
            }).render(this.config.wrapper);
        });
    }

    renderWithAmount(amount) {
        if (!this.shouldRender()) {
            return;
        }

        const newWrapper = document.createElement('div');
        newWrapper.setAttribute('id', this.config.wrapper.replace('#', ''));
        const sibling = document.querySelector(this.config.wrapper).nextSibling;
        document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper));
        sibling.parentElement.insertBefore(newWrapper, sibling);
        paypal.Messages({
            amount,
            placement: this.config.placement,
                style: this.config.style
        }).render(this.config.wrapper);
    }

    shouldRender() {
        if (typeof paypal.Messages === 'undefined' || typeof this.config.wrapper === 'undefined') {
            return false;
        }

        if (!document.querySelector(this.config.wrapper)) {
            return false;
        }

        return true;
    }

    hideMessages() {
        const domElement = document.querySelector(this.config.wrapper);

        if (!domElement) {
            return false;
        }

        domElement.style.display = 'none';
        return true;
    }

}

/* harmony default export */
const Renderer_MessageRenderer = (MessageRenderer);; // CONCATENATED MODULE: ./resources/js/modules/Helper/Spinner.js
class Spinner {
    constructor(target = 'form.woocommerce-checkout') {
        this.target = target;
    }

    setTarget(target) {
        this.target = target;
    }

    block() {
        jQuery(this.target).block({
            message: null,
            overlayCSS: {
                background: '#fff',
                opacity: 0.6
            }
        });
    }

    unblock() {
        jQuery(this.target).unblock();
    }

}

/* harmony default export */
const Helper_Spinner = (Spinner);; // CONCATENATED MODULE: ./resources/js/modules/ActionHandler/FreeTrialHandler.js



class FreeTrialHandler {
    constructor(config, spinner, errorHandler) {
        this.config = config;
        this.spinner = spinner;
        this.errorHandler = errorHandler;
    }

    handle() {
        this.spinner.block();
        fetch(this.config.ajax.vault_paypal.endpoint, {
            method: 'POST',
            body: JSON.stringify({
                nonce: this.config.ajax.vault_paypal.nonce,
                return_url: location.href
            })
        }).then(res => {
            return res.json();
        }).then(data => {
            if (!data.success) {
                this.spinner.unblock();
                console.error(data);
                this.errorHandler.message(data.data.message);
                throw Error(data.data.message);
            }

            location.href = data.data.approve_link;
        }).catch(error => {
            this.spinner.unblock();
            console.error(error);
            this.errorHandler.genericError();
        });
    }

}

/* harmony default export */
const ActionHandler_FreeTrialHandler = (FreeTrialHandler);; // CONCATENATED MODULE: ./resources/js/button.js









// TODO: could be a good idea to have a separate spinner for each gateway,
// but I think we care mainly about the script loading, so one spinner should be enough.

const buttonsSpinner = new Helper_Spinner(document.querySelector('.ppc-button-wrapper'));
const cardsSpinner = new Helper_Spinner('#ppcp-hosted-fields');

const bootstrap = () => {
    const errorHandler = new modules_ErrorHandler(PayPalCommerceGateway.labels.error.generic);
    const spinner = new Helper_Spinner();
    const creditCardRenderer = new Renderer_CreditCardRenderer(PayPalCommerceGateway, errorHandler, spinner);
    const freeTrialHandler = new ActionHandler_FreeTrialHandler(PayPalCommerceGateway, spinner, errorHandler);

    const onSmartButtonClick = (data, actions) => {
        window.ppcpFundingSource = data.fundingSource;

        if (PayPalCommerceGateway.basic_checkout_validation_enabled) {
            // TODO: quick fix to get the error about empty form before attempting PayPal order
            // it should solve #513 for most of the users, but proper solution should be implemented later.
            const requiredFields = jQuery('form.woocommerce-checkout .validate-required:visible :input');
            requiredFields.each((i, input) => {
                jQuery(input).trigger('validate');
            });
            const invalidFields = Array.from(jQuery('form.woocommerce-checkout .validate-required.woocommerce-invalid:visible'));

            if (invalidFields.length) {
                const billingFieldsContainer = document.querySelector('.woocommerce-billing-fields');
                const shippingFieldsContainer = document.querySelector('.woocommerce-shipping-fields');
                const nameMessageMap = PayPalCommerceGateway.labels.error.required.elements;
                const messages = invalidFields.map(el => {
                    const name = el.querySelector('[name]') ? .getAttribute('name');

                    if (name && name in nameMessageMap) {
                        return nameMessageMap[name];
                    }

                    let label = el.querySelector('label').textContent.replaceAll('*', '').trim();

                    if (billingFieldsContainer ? .contains(el)) {
                        label = PayPalCommerceGateway.labels.billing_field.replace('%s', label);
                    }

                    if (shippingFieldsContainer ? .contains(el)) {
                        label = PayPalCommerceGateway.labels.shipping_field.replace('%s', label);
                    }

                    return PayPalCommerceGateway.labels.error.required.field.replace('%s', `<strong>${label}</strong>`);
                }).filter(s => s.length > 2);
                errorHandler.clear();

                if (messages.length) {
                    errorHandler.messages(messages);
                } else {
                    errorHandler.message(PayPalCommerceGateway.labels.error.required.generic);
                }

                return actions.reject();
            }
        }

        const form = document.querySelector('form.woocommerce-checkout');

        if (form) {
            jQuery('#ppcp-funding-source-form-input').remove();
            form.insertAdjacentHTML('beforeend', `<input type="hidden" name="ppcp-funding-source" value="${data.fundingSource}" id="ppcp-funding-source-form-input">`);
        }

        const isFreeTrial = PayPalCommerceGateway.is_free_trial_cart;

        if (isFreeTrial && data.fundingSource !== 'card') {
            freeTrialHandler.handle();
            return actions.reject();
        }
    };

    const onSmartButtonsInit = () => {
        buttonsSpinner.unblock();
    };

    const renderer = new Renderer_Renderer(creditCardRenderer, PayPalCommerceGateway, onSmartButtonClick, onSmartButtonsInit);
    const messageRenderer = new Renderer_MessageRenderer(PayPalCommerceGateway.messages);
    const context = PayPalCommerceGateway.context;

    if (context === 'mini-cart' || context === 'product') {
        if (PayPalCommerceGateway.mini_cart_buttons_enabled === '1') {
            const miniCartBootstrap = new ContextBootstrap_MiniCartBootstap(PayPalCommerceGateway, renderer);
            miniCartBootstrap.init();
        }
    }

    if (context === 'product' && PayPalCommerceGateway.single_product_buttons_enabled === '1') {
        const singleProductBootstrap = new ContextBootstrap_SingleProductBootstap(PayPalCommerceGateway, renderer, messageRenderer);
        singleProductBootstrap.init();
    }

    if (context === 'cart') {
        const cartBootstrap = new CartBootstap(PayPalCommerceGateway, renderer);
        cartBootstrap.init();
    }

    if (context === 'checkout') {
        const checkoutBootstap = new ContextBootstrap_CheckoutBootstap(PayPalCommerceGateway, renderer, messageRenderer, spinner);
        checkoutBootstap.init();
    }

    if (context === 'pay-now') {
        const payNowBootstrap = new ContextBootstrap_PayNowBootstrap(PayPalCommerceGateway, renderer, messageRenderer, spinner);
        payNowBootstrap.init();
    }

    if (context !== 'checkout') {
        messageRenderer.render();
    }
};

document.addEventListener('DOMContentLoaded', () => {
    if (!typeof PayPalCommerceGateway) {
        console.error('PayPal button could not be configured.');
        return;
    }

    if (PayPalCommerceGateway.context !== 'checkout' && PayPalCommerceGateway.data_client_id.user === 0 && PayPalCommerceGateway.data_client_id.has_subscriptions) {
        return;
    }

    const paypalButtonGatewayIds = [PaymentMethods.PAYPAL, ...Object.entries(PayPalCommerceGateway.separate_buttons).map(([k, data]) => data.id)]; // Sometimes PayPal script takes long time to load,
    // so we additionally hide the standard order button here to avoid failed orders.
    // Normally it is hidden later after the script load.

    const hideOrderButtonIfPpcpGateway = () => {
        // only in checkout and pay now page, otherwise it may break things (e.g. payment via product page),
        // and also the loading spinner may look weird on other pages
        if (!['checkout', 'pay-now'].includes(PayPalCommerceGateway.context) || isChangePaymentPage() || PayPalCommerceGateway.is_free_trial_cart && PayPalCommerceGateway.vaulted_paypal_email !== '') {
            return;
        }

        const currentPaymentMethod = getCurrentPaymentMethod();
        const isPaypalButton = paypalButtonGatewayIds.includes(currentPaymentMethod);
        const isCards = currentPaymentMethod === PaymentMethods.CARDS;
        setVisible(ORDER_BUTTON_SELECTOR, !isPaypalButton && !isCards, true);

        if (isPaypalButton) {
            // stopped after the first rendering of the buttons, in onInit
            buttonsSpinner.block();
        } else {
            buttonsSpinner.unblock();
        }

        if (isCards) {
            cardsSpinner.block();
        } else {
            cardsSpinner.unblock();
        }
    };

    jQuery(document).on('hosted_fields_loaded', () => {
        cardsSpinner.unblock();
    });
    let bootstrapped = false;
    hideOrderButtonIfPpcpGateway();
    jQuery(document.body).on('updated_checkout payment_method_selected', () => {
        if (bootstrapped) {
            return;
        }

        hideOrderButtonIfPpcpGateway();
    });
    const script = document.createElement('script');
    script.addEventListener('load', event => {
        bootstrapped = true;
        bootstrap();
    });
    script.setAttribute('src', PayPalCommerceGateway.button.url);
    Object.entries(PayPalCommerceGateway.script_attributes).forEach(keyValue => {
        script.setAttribute(keyValue[0], keyValue[1]);
    });

    if (PayPalCommerceGateway.data_client_id.set_attribute) {
        DataClientIdAttributeHandler(script, PayPalCommerceGateway.data_client_id);
        return;
    }

    document.body.append(script);
}); //# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFBQSxRQUFRLENBQUM2QyxJQUFULENBQWM4SixNQUFkLENBQXFCK0ssTUFBckI7QUFDSCxDQTFGTCIsInNvdXJjZXMiOlsid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9FcnJvckhhbmRsZXIuanM/ZTY1YSIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvT25BcHByb3ZlSGFuZGxlci9vbkFwcHJvdmVGb3JDb250aW51ZS5qcz9jNDU0Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9IZWxwZXIvUGF5ZXJEYXRhLmpzPzJhZjEiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0hlbHBlci9DaGVja291dE1ldGhvZFN0YXRlLmpzPzgwYTMiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0FjdGlvbkhhbmRsZXIvQ2FydEFjdGlvbkhhbmRsZXIuanM/ODJjZiIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvQ29udGV4dEJvb3RzdHJhcC9NaW5pQ2FydEJvb3RzdGFwLmpzP2Q1NTIiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0hlbHBlci9VcGRhdGVDYXJ0LmpzP2U0MjIiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0hlbHBlci9CdXR0b25zVG9nZ2xlTGlzdGVuZXIuanM/ZTE5MyIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvRW50aXR5L1Byb2R1Y3QuanM/OWZmZiIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvQWN0aW9uSGFuZGxlci9TaW5nbGVQcm9kdWN0QWN0aW9uSGFuZGxlci5qcz9kOWI3Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9Db250ZXh0Qm9vdHN0cmFwL1NpbmdsZVByb2R1Y3RCb290c3RhcC5qcz83YzE5Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9Db250ZXh0Qm9vdHN0cmFwL0NhcnRCb290c3RhcC5qcz81ZTk0Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9PbkFwcHJvdmVIYW5kbGVyL29uQXBwcm92ZUZvclBheU5vdy5qcz85MzA1Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9BY3Rpb25IYW5kbGVyL0NoZWNrb3V0QWN0aW9uSGFuZGxlci5qcz84NTE1Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9IZWxwZXIvSGlkaW5nLmpzPzFkMzYiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0NvbnRleHRCb290c3RyYXAvQ2hlY2tvdXRCb290c3RhcC5qcz9jODU1Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9IZWxwZXIvU3Vic2NyaXB0aW9ucy5qcz9iODcwIiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9Db250ZXh0Qm9vdHN0cmFwL1BheU5vd0Jvb3RzdHJhcC5qcz9kOWY1Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9SZW5kZXJlci9SZW5kZXJlci5qcz9mYTkzIiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9IZWxwZXIvRGNjSW5wdXRGYWN0b3J5LmpzPzJhMmYiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL1JlbmRlcmVyL0NyZWRpdENhcmRSZW5kZXJlci5qcz8zODdhIiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9EYXRhQ2xpZW50SWRBdHRyaWJ1dGVIYW5kbGVyLmpzP2VlMGIiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL1JlbmRlcmVyL01lc3NhZ2VSZW5kZXJlci5qcz9jZDAyIiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9IZWxwZXIvU3Bpbm5lci5qcz8xNzA4Iiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9BY3Rpb25IYW5kbGVyL0ZyZWVUcmlhbEhhbmRsZXIuanM/YWI3NyIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL2J1dHRvbi5qcz8wNjBmIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEVycm9ySGFuZGxlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihnZW5lcmljRXJyb3JUZXh0KVxuICAgIHtcbiAgICAgICAgdGhpcy5nZW5lcmljRXJyb3JUZXh0ID0gZ2VuZXJpY0Vycm9yVGV4dDtcbiAgICAgICAgdGhpcy53cmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndvb2NvbW1lcmNlLW5vdGljZXMtd3JhcHBlcicpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3VsLndvb2NvbW1lcmNlLWVycm9yJyk7XG4gICAgfVxuXG4gICAgZ2VuZXJpY0Vycm9yKCkge1xuICAgICAgICBpZiAodGhpcy53cmFwcGVyLmNsYXNzTGlzdC5jb250YWlucygncHBjcC1wZXJzaXN0JykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubWVzc2FnZSh0aGlzLmdlbmVyaWNFcnJvclRleHQpXG4gICAgfVxuXG4gICAgYXBwZW5kUHJlcGFyZWRFcnJvck1lc3NhZ2VFbGVtZW50KGVycm9yTWVzc2FnZUVsZW1lbnQpXG4gICAge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlc0xpc3QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVNZXNzYWdlc0xpc3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVzc2FnZXNMaXN0LnJlcGxhY2VXaXRoKGVycm9yTWVzc2FnZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0ZXh0XG4gICAgICogQHBhcmFtIHtCb29sZWFufSBwZXJzaXN0XG4gICAgICovXG4gICAgbWVzc2FnZSh0ZXh0LCBwZXJzaXN0ID0gZmFsc2UpXG4gICAge1xuICAgICAgICB0aGlzLl9hZGRNZXNzYWdlKHRleHQsIHBlcnNpc3QpO1xuXG4gICAgICAgIHRoaXMuX3Njcm9sbFRvTWVzc2FnZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0FycmF5fSB0ZXh0c1xuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gcGVyc2lzdFxuICAgICAqL1xuICAgIG1lc3NhZ2VzKHRleHRzLCBwZXJzaXN0ID0gZmFsc2UpXG4gICAge1xuICAgICAgICB0ZXh0cy5mb3JFYWNoKHQgPT4gdGhpcy5fYWRkTWVzc2FnZSh0LCBwZXJzaXN0KSk7XG5cbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9NZXNzYWdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHRleHRcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHBlcnNpc3RcbiAgICAgKi9cbiAgICBfYWRkTWVzc2FnZSh0ZXh0LCBwZXJzaXN0ID0gZmFsc2UpXG4gICAge1xuICAgICAgICBpZighIHR5cGVvZiBTdHJpbmcgfHwgdGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQSBuZXcgbWVzc2FnZSB0ZXh0IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZXNMaXN0ID09PSBudWxsKXtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVNZXNzYWdlc0xpc3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuY2xhc3NMaXN0LmFkZCgncHBjcC1wZXJzaXN0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgncHBjcC1wZXJzaXN0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWVzc2FnZU5vZGUgPSB0aGlzLl9wcmVwYXJlTWVzc2FnZXNMaXN0SXRlbSh0ZXh0KTtcbiAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3QuYXBwZW5kQ2hpbGQobWVzc2FnZU5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgX3Njcm9sbFRvTWVzc2FnZXMoKVxuICAgIHtcbiAgICAgICAgalF1ZXJ5LnNjcm9sbF90b19ub3RpY2VzKGpRdWVyeSgnLndvb2NvbW1lcmNlLW5vdGljZXMtd3JhcHBlcicpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF9wcmVwYXJlTWVzc2FnZXNMaXN0KClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VzTGlzdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3Quc2V0QXR0cmlidXRlKCdjbGFzcycsICd3b29jb21tZXJjZS1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3Quc2V0QXR0cmlidXRlKCdyb2xlJywgJ2FsZXJ0Jyk7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5tZXNzYWdlc0xpc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBfcHJlcGFyZU1lc3NhZ2VzTGlzdEl0ZW0obWVzc2FnZSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTtcbiAgICAgICAgbGkuaW5uZXJIVE1MID0gbWVzc2FnZTtcblxuICAgICAgICByZXR1cm4gbGk7XG4gICAgfVxuXG4gICAgY2xlYXIoKVxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZXNMaXN0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1lc3NhZ2VzTGlzdC5pbm5lckhUTUwgPSAnJztcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9ySGFuZGxlcjtcbiIsImNvbnN0IG9uQXBwcm92ZSA9IChjb250ZXh0LCBlcnJvckhhbmRsZXIpID0+IHtcbiAgICByZXR1cm4gKGRhdGEsIGFjdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIGZldGNoKGNvbnRleHQuY29uZmlnLmFqYXguYXBwcm92ZV9vcmRlci5lbmRwb2ludCwge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgbm9uY2U6IGNvbnRleHQuY29uZmlnLmFqYXguYXBwcm92ZV9vcmRlci5ub25jZSxcbiAgICAgICAgICAgICAgICBvcmRlcl9pZDpkYXRhLm9yZGVySUQsXG4gICAgICAgICAgICAgICAgZnVuZGluZ19zb3VyY2U6IHdpbmRvdy5wcGNwRnVuZGluZ1NvdXJjZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgIHJldHVybiByZXMuanNvbigpO1xuICAgICAgICB9KS50aGVuKChkYXRhKT0+e1xuICAgICAgICAgICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIuZ2VuZXJpY0Vycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnMucmVzdGFydCgpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5nZW5lcmljRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBjb250ZXh0LmNvbmZpZy5yZWRpcmVjdDtcbiAgICAgICAgfSk7XG5cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9uQXBwcm92ZTtcbiIsImV4cG9ydCBjb25zdCBwYXllckRhdGEgPSAoKSA9PiB7XG4gICAgY29uc3QgcGF5ZXIgPSBQYXlQYWxDb21tZXJjZUdhdGV3YXkucGF5ZXI7XG4gICAgaWYgKCEgcGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcGhvbmUgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfcGhvbmUnKSB8fCB0eXBlb2YgcGF5ZXIucGhvbmUgIT09ICd1bmRlZmluZWQnKSA/XG4gICAge1xuICAgICAgICBwaG9uZV90eXBlOlwiSE9NRVwiLFxuICAgICAgICAgICAgcGhvbmVfbnVtYmVyOntcbiAgICAgICAgICAgIG5hdGlvbmFsX251bWJlciA6IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19waG9uZScpKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX3Bob25lJykudmFsdWUgOiBwYXllci5waG9uZS5waG9uZV9udW1iZXIubmF0aW9uYWxfbnVtYmVyXG4gICAgICAgIH1cbiAgICB9IDogbnVsbDtcbiAgICBjb25zdCBwYXllckRhdGEgPSB7XG4gICAgICAgIGVtYWlsX2FkZHJlc3M6KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2VtYWlsJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfZW1haWwnKS52YWx1ZSA6IHBheWVyLmVtYWlsX2FkZHJlc3MsXG4gICAgICAgIG5hbWUgOiB7XG4gICAgICAgICAgICBzdXJuYW1lOiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfbGFzdF9uYW1lJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfbGFzdF9uYW1lJykudmFsdWUgOiBwYXllci5uYW1lLnN1cm5hbWUsXG4gICAgICAgICAgICBnaXZlbl9uYW1lOiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfZmlyc3RfbmFtZScpKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2ZpcnN0X25hbWUnKS52YWx1ZSA6IHBheWVyLm5hbWUuZ2l2ZW5fbmFtZVxuICAgICAgICB9LFxuICAgICAgICBhZGRyZXNzIDoge1xuICAgICAgICAgICAgY291bnRyeV9jb2RlIDogKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2NvdW50cnknKSkgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19jb3VudHJ5JykudmFsdWUgOiBwYXllci5hZGRyZXNzLmNvdW50cnlfY29kZSxcbiAgICAgICAgICAgIGFkZHJlc3NfbGluZV8xIDogKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2FkZHJlc3NfMScpKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2FkZHJlc3NfMScpLnZhbHVlIDogcGF5ZXIuYWRkcmVzcy5hZGRyZXNzX2xpbmVfMSxcbiAgICAgICAgICAgIGFkZHJlc3NfbGluZV8yIDogKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2FkZHJlc3NfMicpKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2FkZHJlc3NfMicpLnZhbHVlIDogcGF5ZXIuYWRkcmVzcy5hZGRyZXNzX2xpbmVfMixcbiAgICAgICAgICAgIGFkbWluX2FyZWFfMSA6IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19zdGF0ZScpKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX3N0YXRlJykudmFsdWUgOiBwYXllci5hZGRyZXNzLmFkbWluX2FyZWFfMSxcbiAgICAgICAgICAgIGFkbWluX2FyZWFfMiA6IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19jaXR5JykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfY2l0eScpLnZhbHVlIDogcGF5ZXIuYWRkcmVzcy5hZG1pbl9hcmVhXzIsXG4gICAgICAgICAgICBwb3N0YWxfY29kZSA6IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19wb3N0Y29kZScpKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX3Bvc3Rjb2RlJykudmFsdWUgOiBwYXllci5hZGRyZXNzLnBvc3RhbF9jb2RlXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHBob25lKSB7XG4gICAgICAgIHBheWVyRGF0YS5waG9uZSA9IHBob25lO1xuICAgIH1cbiAgICByZXR1cm4gcGF5ZXJEYXRhO1xufVxuIiwiZXhwb3J0IGNvbnN0IFBheW1lbnRNZXRob2RzID0ge1xuICAgIFBBWVBBTDogJ3BwY3AtZ2F0ZXdheScsXG4gICAgQ0FSRFM6ICdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXknLFxuICAgIE9YWE86ICdwcGNwLW94eG8tZ2F0ZXdheScsXG4gICAgQ0FSRF9CVVRUT046ICdwcGNwLWNhcmQtYnV0dG9uLWdhdGV3YXknLFxufTtcblxuZXhwb3J0IGNvbnN0IE9SREVSX0JVVFRPTl9TRUxFQ1RPUiA9ICcjcGxhY2Vfb3JkZXInO1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudFBheW1lbnRNZXRob2QgPSAoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPVwicGF5bWVudF9tZXRob2RcIl06Y2hlY2tlZCcpO1xuICAgIGlmICghZWwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsLnZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2F2ZWRDYXJkU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2F2ZWRDYXJkTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzYXZlZC1jcmVkaXQtY2FyZCcpO1xuICAgIHJldHVybiBzYXZlZENhcmRMaXN0ICYmIHNhdmVkQ2FyZExpc3QudmFsdWUgIT09ICcnO1xufTtcbiIsImltcG9ydCBvbkFwcHJvdmUgZnJvbSAnLi4vT25BcHByb3ZlSGFuZGxlci9vbkFwcHJvdmVGb3JDb250aW51ZS5qcyc7XG5pbXBvcnQge3BheWVyRGF0YX0gZnJvbSBcIi4uL0hlbHBlci9QYXllckRhdGFcIjtcbmltcG9ydCB7UGF5bWVudE1ldGhvZHN9IGZyb20gXCIuLi9IZWxwZXIvQ2hlY2tvdXRNZXRob2RTdGF0ZVwiO1xuXG5jbGFzcyBDYXJ0QWN0aW9uSGFuZGxlciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWcsIGVycm9ySGFuZGxlcikge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXI7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbigpIHtcbiAgICAgICAgY29uc3QgY3JlYXRlT3JkZXIgPSAoZGF0YSwgYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF5ZXIgPSBwYXllckRhdGEoKTtcbiAgICAgICAgICAgIGNvbnN0IGJuQ29kZSA9IHR5cGVvZiB0aGlzLmNvbmZpZy5ibl9jb2Rlc1t0aGlzLmNvbmZpZy5jb250ZXh0XSAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmJuX2NvZGVzW3RoaXMuY29uZmlnLmNvbnRleHRdIDogJyc7XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2godGhpcy5jb25maWcuYWpheC5jcmVhdGVfb3JkZXIuZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLmNvbmZpZy5hamF4LmNyZWF0ZV9vcmRlci5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgcHVyY2hhc2VfdW5pdHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZDogUGF5bWVudE1ldGhvZHMuUEFZUEFMLFxuICAgICAgICAgICAgICAgICAgICBmdW5kaW5nX3NvdXJjZTogd2luZG93LnBwY3BGdW5kaW5nU291cmNlLFxuICAgICAgICAgICAgICAgICAgICBibl9jb2RlOmJuQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgcGF5ZXIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6dGhpcy5jb25maWcuY29udGV4dFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGF0YS5pZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjcmVhdGVPcmRlcixcbiAgICAgICAgICAgIG9uQXBwcm92ZTogb25BcHByb3ZlKHRoaXMsIHRoaXMuZXJyb3JIYW5kbGVyKSxcbiAgICAgICAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmdlbmVyaWNFcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2FydEFjdGlvbkhhbmRsZXI7XG4iLCJpbXBvcnQgRXJyb3JIYW5kbGVyIGZyb20gJy4uL0Vycm9ySGFuZGxlcic7XG5pbXBvcnQgQ2FydEFjdGlvbkhhbmRsZXIgZnJvbSAnLi4vQWN0aW9uSGFuZGxlci9DYXJ0QWN0aW9uSGFuZGxlcic7XG5cbmNsYXNzIE1pbmlDYXJ0Qm9vdHN0YXAge1xuICAgIGNvbnN0cnVjdG9yKGdhdGV3YXksIHJlbmRlcmVyKSB7XG4gICAgICAgIHRoaXMuZ2F0ZXdheSA9IGdhdGV3YXk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICAgICAgdGhpcy5hY3Rpb25IYW5kbGVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuXG4gICAgICAgIHRoaXMuYWN0aW9uSGFuZGxlciA9IG5ldyBDYXJ0QWN0aW9uSGFuZGxlcihcbiAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheSxcbiAgICAgICAgICAgIG5ldyBFcnJvckhhbmRsZXIodGhpcy5nYXRld2F5LmxhYmVscy5lcnJvci5nZW5lcmljKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcblxuICAgICAgICBqUXVlcnkoZG9jdW1lbnQuYm9keSkub24oJ3djX2ZyYWdtZW50c19sb2FkZWQgd2NfZnJhZ21lbnRzX3JlZnJlc2hlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3VsZFJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5LmJ1dHRvbi5taW5pX2NhcnRfd3JhcHBlcikgIT09IG51bGxcbiAgICAgICAgICAgIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMubWluaV9jYXJ0X3dyYXBwZXIpICE9PSBudWxsO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFJlbmRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcihcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uSGFuZGxlci5jb25maWd1cmF0aW9uKCksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHdyYXBwZXI6IHRoaXMuZ2F0ZXdheS5idXR0b24ubWluaV9jYXJ0X3dyYXBwZXIsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGlzLmdhdGV3YXkuYnV0dG9uLm1pbmlfY2FydF9zdHlsZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWluaUNhcnRCb290c3RhcDtcbiIsImltcG9ydCBQcm9kdWN0IGZyb20gXCIuLi9FbnRpdHkvUHJvZHVjdFwiO1xuY2xhc3MgVXBkYXRlQ2FydCB7XG5cbiAgICBjb25zdHJ1Y3RvcihlbmRwb2ludCwgbm9uY2UpXG4gICAge1xuICAgICAgICB0aGlzLmVuZHBvaW50ID0gZW5kcG9pbnQ7XG4gICAgICAgIHRoaXMubm9uY2UgPSBub25jZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvblJlc29sdmVcbiAgICAgKiBAcGFyYW0ge1Byb2R1Y3RbXX0gcHJvZHVjdHNcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn1cbiAgICAgKi9cbiAgICB1cGRhdGUob25SZXNvbHZlLCBwcm9kdWN0cylcbiAgICB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBmZXRjaChcbiAgICAgICAgICAgICAgICB0aGlzLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHMsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS50aGVuKFxuICAgICAgICAgICAgICAgIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lmpzb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghIHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXN1bHQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBvblJlc29sdmUocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc29sdmVkKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFVwZGF0ZUNhcnQ7IiwiLyoqXG4gKiBXaGVuIHlvdSBjYW4ndCBhZGQgc29tZXRoaW5nIHRvIHRoZSBjYXJ0LCB0aGUgUGF5UGFsIGJ1dHRvbnMgc2hvdWxkIG5vdCBzaG93LlxuICogVGhlcmVmb3JlIHdlIGxpc3RlbiBmb3IgY2hhbmdlcyBvbiB0aGUgYWRkIHRvIGNhcnQgYnV0dG9uIGFuZCBzaG93L2hpZGUgdGhlIGJ1dHRvbnMgYWNjb3JkaW5nbHkuXG4gKi9cblxuY2xhc3MgQnV0dG9uc1RvZ2dsZUxpc3RlbmVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzaG93Q2FsbGJhY2ssIGhpZGVDYWxsYmFjaylcbiAgICB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuc2hvd0NhbGxiYWNrID0gc2hvd0NhbGxiYWNrO1xuICAgICAgICB0aGlzLmhpZGVDYWxsYmFjayA9IGhpZGVDYWxsYmFjaztcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgfVxuXG4gICAgaW5pdCgpXG4gICAge1xuICAgICAgICBjb25zdCBjb25maWcgPSB7IGF0dHJpYnV0ZXMgOiB0cnVlIH07XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVDYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2hvd0NhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudCwgY29uZmlnKTtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBkaXNjb25uZWN0KClcbiAgICB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uc1RvZ2dsZUxpc3RlbmVyOyIsImNsYXNzIFByb2R1Y3Qge1xuXG4gICAgY29uc3RydWN0b3IoaWQsIHF1YW50aXR5LCB2YXJpYXRpb25zKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5xdWFudGl0eSA9IHF1YW50aXR5O1xuICAgICAgICB0aGlzLnZhcmlhdGlvbnMgPSB2YXJpYXRpb25zO1xuICAgIH1cblxuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDp0aGlzLmlkLFxuICAgICAgICAgICAgcXVhbnRpdHk6dGhpcy5xdWFudGl0eSxcbiAgICAgICAgICAgIHZhcmlhdGlvbnM6dGhpcy52YXJpYXRpb25zXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByb2R1Y3Q7IiwiaW1wb3J0IEJ1dHRvbnNUb2dnbGVMaXN0ZW5lciBmcm9tICcuLi9IZWxwZXIvQnV0dG9uc1RvZ2dsZUxpc3RlbmVyJztcbmltcG9ydCBQcm9kdWN0IGZyb20gJy4uL0VudGl0eS9Qcm9kdWN0JztcbmltcG9ydCBvbkFwcHJvdmUgZnJvbSAnLi4vT25BcHByb3ZlSGFuZGxlci9vbkFwcHJvdmVGb3JDb250aW51ZSc7XG5pbXBvcnQge3BheWVyRGF0YX0gZnJvbSBcIi4uL0hlbHBlci9QYXllckRhdGFcIjtcbmltcG9ydCB7UGF5bWVudE1ldGhvZHN9IGZyb20gXCIuLi9IZWxwZXIvQ2hlY2tvdXRNZXRob2RTdGF0ZVwiO1xuXG5jbGFzcyBTaW5nbGVQcm9kdWN0QWN0aW9uSGFuZGxlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgY29uZmlnLFxuICAgICAgICB1cGRhdGVDYXJ0LFxuICAgICAgICBzaG93QnV0dG9uQ2FsbGJhY2ssXG4gICAgICAgIGhpZGVCdXR0b25DYWxsYmFjayxcbiAgICAgICAgZm9ybUVsZW1lbnQsXG4gICAgICAgIGVycm9ySGFuZGxlclxuICAgICkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy51cGRhdGVDYXJ0ID0gdXBkYXRlQ2FydDtcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uQ2FsbGJhY2sgPSBzaG93QnV0dG9uQ2FsbGJhY2s7XG4gICAgICAgIHRoaXMuaGlkZUJ1dHRvbkNhbGxiYWNrID0gaGlkZUJ1dHRvbkNhbGxiYWNrO1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50ID0gZm9ybUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24oKVxuICAgIHtcblxuICAgICAgICBpZiAoIHRoaXMuaGFzVmFyaWF0aW9ucygpICkge1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgQnV0dG9uc1RvZ2dsZUxpc3RlbmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNpbmdsZV9hZGRfdG9fY2FydF9idXR0b24nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dCdXR0b25DYWxsYmFjayxcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVCdXR0b25DYWxsYmFja1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmluaXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjcmVhdGVPcmRlcjogdGhpcy5jcmVhdGVPcmRlcigpLFxuICAgICAgICAgICAgb25BcHByb3ZlOiBvbkFwcHJvdmUodGhpcywgdGhpcy5lcnJvckhhbmRsZXIpLFxuICAgICAgICAgICAgb25FcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuZ2VuZXJpY0Vycm9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVPcmRlcigpXG4gICAge1xuICAgICAgICB2YXIgZ2V0UHJvZHVjdHMgPSBudWxsO1xuICAgICAgICBpZiAoISB0aGlzLmlzR3JvdXBlZFByb2R1Y3QoKSApIHtcbiAgICAgICAgICAgIGdldFByb2R1Y3RzID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJhZGQtdG8tY2FydFwiXScpLnZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHF0eSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwicXVhbnRpdHlcIl0nKS52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYXRpb25zID0gdGhpcy52YXJpYXRpb25zKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgUHJvZHVjdChpZCwgcXR5LCB2YXJpYXRpb25zKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQcm9kdWN0cyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0cyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cIm51bWJlclwiXScpLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEgZWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnROYW1lID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKS5tYXRjaCgvcXVhbnRpdHlcXFsoW1xcZF0qKVxcXS8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJzZUludChlbGVtZW50TmFtZVsxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1YW50aXR5ID0gcGFyc2VJbnQoZWxlbWVudC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzLnB1c2gobmV3IFByb2R1Y3QoaWQsIHF1YW50aXR5LCBudWxsKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvZHVjdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3JlYXRlT3JkZXIgPSAoZGF0YSwgYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuY2xlYXIoKTtcblxuICAgICAgICAgICAgY29uc3Qgb25SZXNvbHZlID0gKHB1cmNoYXNlX3VuaXRzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF5ZXIgPSBwYXllckRhdGEoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBibkNvZGUgPSB0eXBlb2YgdGhpcy5jb25maWcuYm5fY29kZXNbdGhpcy5jb25maWcuY29udGV4dF0gIT09ICd1bmRlZmluZWQnID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYm5fY29kZXNbdGhpcy5jb25maWcuY29udGV4dF0gOiAnJztcbiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2godGhpcy5jb25maWcuYWpheC5jcmVhdGVfb3JkZXIuZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLmNvbmZpZy5hamF4LmNyZWF0ZV9vcmRlci5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1cmNoYXNlX3VuaXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBibl9jb2RlOmJuQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheW1lbnRfbWV0aG9kOiBQYXltZW50TWV0aG9kcy5QQVlQQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5kaW5nX3NvdXJjZTogd2luZG93LnBwY3BGdW5kaW5nU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDp0aGlzLmNvbmZpZy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMuanNvbigpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihkYXRhLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLnVwZGF0ZUNhcnQudXBkYXRlKG9uUmVzb2x2ZSwgZ2V0UHJvZHVjdHMoKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU9yZGVyO1xuICAgIH1cblxuICAgIHZhcmlhdGlvbnMoKVxuICAgIHtcblxuICAgICAgICBpZiAoISB0aGlzLmhhc1ZhcmlhdGlvbnMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IFsuLi50aGlzLmZvcm1FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZV49J2F0dHJpYnV0ZV8nXVwiKV0ubWFwKFxuICAgICAgICAgICAgKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOmVsZW1lbnQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ZWxlbWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBoYXNWYXJpYXRpb25zKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1FbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndmFyaWF0aW9uc19mb3JtJyk7XG4gICAgfVxuXG4gICAgaXNHcm91cGVkUHJvZHVjdCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2dyb3VwZWRfZm9ybScpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNpbmdsZVByb2R1Y3RBY3Rpb25IYW5kbGVyO1xuIiwiaW1wb3J0IEVycm9ySGFuZGxlciBmcm9tICcuLi9FcnJvckhhbmRsZXInO1xuaW1wb3J0IFVwZGF0ZUNhcnQgZnJvbSBcIi4uL0hlbHBlci9VcGRhdGVDYXJ0XCI7XG5pbXBvcnQgU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXIgZnJvbSBcIi4uL0FjdGlvbkhhbmRsZXIvU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXJcIjtcblxuY2xhc3MgU2luZ2xlUHJvZHVjdEJvb3RzdGFwIHtcbiAgICBjb25zdHJ1Y3RvcihnYXRld2F5LCByZW5kZXJlciwgbWVzc2FnZXMpIHtcbiAgICAgICAgdGhpcy5nYXRld2F5ID0gZ2F0ZXdheTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG4gICAgfVxuXG5cbiAgICBoYW5kbGVDaGFuZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5zaG91bGRSZW5kZXIoKSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5LmJ1dHRvbi53cmFwcGVyKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMuaGlkZU1lc3NhZ2VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIGluaXQoKSB7XG5cbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybS5jYXJ0JykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5oYW5kbGVDaGFuZ2UuYmluZCh0aGlzKSlcblxuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkUmVuZGVyKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLmhpZGVNZXNzYWdlcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcblxuICAgIH1cblxuICAgIHNob3VsZFJlbmRlcigpIHtcblxuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybS5jYXJ0JykgIT09IG51bGwgJiYgIXRoaXMucHJpY2VBbW91bnRJc1plcm8oKTtcblxuICAgIH1cblxuICAgIHByaWNlQW1vdW50KCkge1xuXG4gICAgICAgIGxldCBwcmljZVRleHQgPSBcIjBcIjtcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0uY2FydCBpbnMgLndvb2NvbW1lcmNlLVByaWNlLWFtb3VudCcpKSB7XG4gICAgICAgICAgICBwcmljZVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtLmNhcnQgaW5zIC53b29jb21tZXJjZS1QcmljZS1hbW91bnQnKS5pbm5lclRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybS5jYXJ0IC53b29jb21tZXJjZS1QcmljZS1hbW91bnQnKSkge1xuICAgICAgICAgICAgcHJpY2VUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybS5jYXJ0IC53b29jb21tZXJjZS1QcmljZS1hbW91bnQnKS5pbm5lclRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnByb2R1Y3QgLndvb2NvbW1lcmNlLVByaWNlLWFtb3VudCcpKSB7XG4gICAgICAgICAgICBwcmljZVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucHJvZHVjdCAud29vY29tbWVyY2UtUHJpY2UtYW1vdW50JykuaW5uZXJUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpY2VUZXh0ID0gcHJpY2VUZXh0LnJlcGxhY2UoLywvZywgJy4nKTtcblxuICAgICAgICByZXR1cm4gIHBhcnNlRmxvYXQocHJpY2VUZXh0LnJlcGxhY2UoLyhbXlxcZCxcXC5cXHNdKikvZywgJycpKTtcbiAgICB9XG5cbiAgICBwcmljZUFtb3VudElzWmVybygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJpY2VBbW91bnQoKSA9PT0gMDtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkhhbmRsZXIgPSBuZXcgU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXksXG4gICAgICAgICAgICBuZXcgVXBkYXRlQ2FydChcbiAgICAgICAgICAgICAgICB0aGlzLmdhdGV3YXkuYWpheC5jaGFuZ2VfY2FydC5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICB0aGlzLmdhdGV3YXkuYWpheC5jaGFuZ2VfY2FydC5ub25jZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaG93QnV0dG9ucyh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hvd0J1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5yZW5kZXJXaXRoQW1vdW50KHRoaXMucHJpY2VBbW91bnQoKSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5oaWRlTWVzc2FnZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtLmNhcnQnKSxcbiAgICAgICAgICAgIG5ldyBFcnJvckhhbmRsZXIodGhpcy5nYXRld2F5LmxhYmVscy5lcnJvci5nZW5lcmljKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcihcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZXIuY29uZmlndXJhdGlvbigpXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW5nbGVQcm9kdWN0Qm9vdHN0YXA7XG4iLCJpbXBvcnQgQ2FydEFjdGlvbkhhbmRsZXIgZnJvbSAnLi4vQWN0aW9uSGFuZGxlci9DYXJ0QWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgRXJyb3JIYW5kbGVyIGZyb20gJy4uL0Vycm9ySGFuZGxlcic7XG5cbmNsYXNzIENhcnRCb290c3RyYXAge1xuICAgIGNvbnN0cnVjdG9yKGdhdGV3YXksIHJlbmRlcmVyKSB7XG4gICAgICAgIHRoaXMuZ2F0ZXdheSA9IGdhdGV3YXk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkUmVuZGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgICAgICAgalF1ZXJ5KGRvY3VtZW50LmJvZHkpLm9uKCd1cGRhdGVkX2NhcnRfdG90YWxzIHVwZGF0ZWRfY2hlY2tvdXQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG91bGRSZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZ2F0ZXdheS5idXR0b24ud3JhcHBlcikgIT09XG4gICAgICAgICAgICBudWxsIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcikgIT09XG4gICAgICAgICAgICBudWxsO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uSGFuZGxlciA9IG5ldyBDYXJ0QWN0aW9uSGFuZGxlcihcbiAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheSxcbiAgICAgICAgICAgIG5ldyBFcnJvckhhbmRsZXIodGhpcy5nYXRld2F5LmxhYmVscy5lcnJvci5nZW5lcmljKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcihcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZXIuY29uZmlndXJhdGlvbigpXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYXJ0Qm9vdHN0cmFwO1xuIiwiY29uc3Qgb25BcHByb3ZlID0gKGNvbnRleHQsIGVycm9ySGFuZGxlciwgc3Bpbm5lcikgPT4ge1xuICAgIHJldHVybiAoZGF0YSwgYWN0aW9ucykgPT4ge1xuICAgICAgICBzcGlubmVyLmJsb2NrKCk7XG4gICAgICAgIGVycm9ySGFuZGxlci5jbGVhcigpO1xuXG4gICAgICAgIHJldHVybiBmZXRjaChjb250ZXh0LmNvbmZpZy5hamF4LmFwcHJvdmVfb3JkZXIuZW5kcG9pbnQsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIG5vbmNlOiBjb250ZXh0LmNvbmZpZy5hamF4LmFwcHJvdmVfb3JkZXIubm9uY2UsXG4gICAgICAgICAgICAgICAgb3JkZXJfaWQ6ZGF0YS5vcmRlcklELFxuICAgICAgICAgICAgICAgIGZ1bmRpbmdfc291cmNlOiB3aW5kb3cucHBjcEZ1bmRpbmdTb3VyY2UsXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KS50aGVuKChyZXMpPT57XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICAgICAgfSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIHNwaW5uZXIudW5ibG9jaygpO1xuICAgICAgICAgICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmNvZGUgPT09IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIubWVzc2FnZShkYXRhLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyLmdlbmVyaWNFcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBhY3Rpb25zLnJlc3RhcnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zLnJlc3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwbGFjZV9vcmRlcicpLmNsaWNrKClcbiAgICAgICAgfSk7XG5cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9uQXBwcm92ZTtcbiIsImltcG9ydCBvbkFwcHJvdmUgZnJvbSAnLi4vT25BcHByb3ZlSGFuZGxlci9vbkFwcHJvdmVGb3JQYXlOb3cuanMnO1xuaW1wb3J0IHtwYXllckRhdGF9IGZyb20gXCIuLi9IZWxwZXIvUGF5ZXJEYXRhXCI7XG5pbXBvcnQge2dldEN1cnJlbnRQYXltZW50TWV0aG9kfSBmcm9tIFwiLi4vSGVscGVyL0NoZWNrb3V0TWV0aG9kU3RhdGVcIjtcblxuY2xhc3MgQ2hlY2tvdXRBY3Rpb25IYW5kbGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGNvbmZpZywgZXJyb3JIYW5kbGVyLCBzcGlubmVyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcjtcbiAgICAgICAgdGhpcy5zcGlubmVyID0gc3Bpbm5lcjtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uKCkge1xuICAgICAgICBjb25zdCBzcGlubmVyID0gdGhpcy5zcGlubmVyO1xuICAgICAgICBjb25zdCBjcmVhdGVPcmRlciA9IChkYXRhLCBhY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXllciA9IHBheWVyRGF0YSgpO1xuICAgICAgICAgICAgY29uc3QgYm5Db2RlID0gdHlwZW9mIHRoaXMuY29uZmlnLmJuX2NvZGVzW3RoaXMuY29uZmlnLmNvbnRleHRdICE9PSAndW5kZWZpbmVkJyA/XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYm5fY29kZXNbdGhpcy5jb25maWcuY29udGV4dF0gOiAnJztcblxuICAgICAgICAgICAgY29uc3QgZXJyb3JIYW5kbGVyID0gdGhpcy5lcnJvckhhbmRsZXI7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1TZWxlY3RvciA9IHRoaXMuY29uZmlnLmNvbnRleHQgPT09ICdjaGVja291dCcgPyAnZm9ybS5jaGVja291dCcgOiAnZm9ybSNvcmRlcl9yZXZpZXcnO1xuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihmb3JtU2VsZWN0b3IpKTtcbiAgICAgICAgICAgIC8vIHdpbGwgbm90IGhhbmRsZSBmaWVsZHMgd2l0aCBtdWx0aXBsZSB2YWx1ZXMgKGNoZWNrYm94ZXMsIDxzZWxlY3QgbXVsdGlwbGU+KSwgYnV0IHdlIGRvIG5vdCBjYXJlIGFib3V0IHRoaXMgaGVyZVxuICAgICAgICAgICAgY29uc3QgZm9ybUpzb25PYmogPSBPYmplY3QuZnJvbUVudHJpZXMoZm9ybURhdGEpO1xuXG4gICAgICAgICAgICBjb25zdCBjcmVhdGVhY2NvdW50ID0galF1ZXJ5KCcjY3JlYXRlYWNjb3VudCcpLmlzKFwiOmNoZWNrZWRcIikgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnRNZXRob2QgPSBnZXRDdXJyZW50UGF5bWVudE1ldGhvZCgpO1xuICAgICAgICAgICAgY29uc3QgZnVuZGluZ1NvdXJjZSA9IHdpbmRvdy5wcGNwRnVuZGluZ1NvdXJjZTtcblxuICAgICAgICAgICAgcmV0dXJuIGZldGNoKHRoaXMuY29uZmlnLmFqYXguY3JlYXRlX29yZGVyLmVuZHBvaW50LCB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5jb25maWcuYWpheC5jcmVhdGVfb3JkZXIubm9uY2UsXG4gICAgICAgICAgICAgICAgICAgIHBheWVyLFxuICAgICAgICAgICAgICAgICAgICBibl9jb2RlOmJuQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDp0aGlzLmNvbmZpZy5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcl9pZDp0aGlzLmNvbmZpZy5vcmRlcl9pZCxcbiAgICAgICAgICAgICAgICAgICAgcGF5bWVudF9tZXRob2Q6IHBheW1lbnRNZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmRpbmdfc291cmNlOiBmdW5kaW5nU291cmNlLFxuICAgICAgICAgICAgICAgICAgICBmb3JtOiBmb3JtSnNvbk9iaixcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlYWNjb3VudDogY3JlYXRlYWNjb3VudFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgLy9oYW5kbGUgYm90aCBtZXNzYWdlcyBzZW50IGZyb20gV29vY29tbWVyY2UgKGRhdGEubWVzc2FnZXMpIGFuZCB0aGlzIHBsdWdpbiAoZGF0YS5kYXRhLm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoZGF0YS5tZXNzYWdlcykgIT09ICd1bmRlZmluZWQnIClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tUGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyLmFwcGVuZFByZXBhcmVkRXJyb3JNZXNzYWdlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21QYXJzZXIucGFyc2VGcm9tU3RyaW5nKGRhdGEubWVzc2FnZXMsICd0ZXh0L2h0bWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcigndWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5kZXRhaWxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIubWVzc2FnZShkYXRhLmRhdGEuZGV0YWlscy5tYXAoZCA9PiBgJHtkLmlzc3VlfSAke2QuZGVzY3JpcHRpb259YCkuam9pbignPGJyLz4nKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5tZXNzYWdlKGRhdGEuZGF0YS5tZXNzYWdlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihkYXRhLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgJ3BwY3AtcmVzdW1lLW9yZGVyJyk7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEuZGF0YS5wdXJjaGFzZV91bml0c1swXS5jdXN0b21faWQpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZm9ybVNlbGVjdG9yKS5hcHBlbmQoaW5wdXQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmRhdGEuaWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3JlYXRlT3JkZXIsXG4gICAgICAgICAgICBvbkFwcHJvdmU6b25BcHByb3ZlKHRoaXMsIHRoaXMuZXJyb3JIYW5kbGVyLCB0aGlzLnNwaW5uZXIpLFxuICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBzcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuZ2VuZXJpY0Vycm9yKCk7XG4gICAgICAgICAgICAgICAgc3Bpbm5lci51bmJsb2NrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrb3V0QWN0aW9uSGFuZGxlcjtcbiIsImNvbnN0IGdldEVsZW1lbnQgPSAoc2VsZWN0b3JPckVsZW1lbnQpID0+IHtcbiAgICBpZiAodHlwZW9mIHNlbGVjdG9yT3JFbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvck9yRWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3Rvck9yRWxlbWVudDtcbn1cblxuZXhwb3J0IGNvbnN0IGlzVmlzaWJsZSA9IChlbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuICEhKGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgZWxlbWVudC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCk7XG59XG5cbmV4cG9ydCBjb25zdCBzZXRWaXNpYmxlID0gKHNlbGVjdG9yT3JFbGVtZW50LCBzaG93LCBpbXBvcnRhbnQgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRFbGVtZW50KHNlbGVjdG9yT3JFbGVtZW50KTtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZGlzcGxheScpO1xuXG4gICAgaWYgKCFzaG93KSB7XG4gICAgICAgIGlmIChjdXJyZW50VmFsdWUgPT09ICdub25lJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnZGlzcGxheScsICdub25lJywgaW1wb3J0YW50ID8gJ2ltcG9ydGFudCcgOiAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdGlsbCBub3QgdmlzaWJsZSAoaWYgc29tZXRoaW5nIGVsc2UgYWRkZWQgZGlzcGxheTogbm9uZSBpbiBDU1MpXG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaGlkZSA9IChzZWxlY3Rvck9yRWxlbWVudCwgaW1wb3J0YW50ID0gZmFsc2UpID0+IHtcbiAgICBzZXRWaXNpYmxlKHNlbGVjdG9yT3JFbGVtZW50LCBmYWxzZSwgaW1wb3J0YW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93ID0gKHNlbGVjdG9yT3JFbGVtZW50KSA9PiB7XG4gICAgc2V0VmlzaWJsZShzZWxlY3Rvck9yRWxlbWVudCwgdHJ1ZSk7XG59O1xuIiwiaW1wb3J0IEVycm9ySGFuZGxlciBmcm9tICcuLi9FcnJvckhhbmRsZXInO1xuaW1wb3J0IENoZWNrb3V0QWN0aW9uSGFuZGxlciBmcm9tICcuLi9BY3Rpb25IYW5kbGVyL0NoZWNrb3V0QWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgeyBzZXRWaXNpYmxlIH0gZnJvbSAnLi4vSGVscGVyL0hpZGluZyc7XG5pbXBvcnQge1xuICAgIGdldEN1cnJlbnRQYXltZW50TWV0aG9kLFxuICAgIGlzU2F2ZWRDYXJkU2VsZWN0ZWQsIE9SREVSX0JVVFRPTl9TRUxFQ1RPUixcbiAgICBQYXltZW50TWV0aG9kc1xufSBmcm9tIFwiLi4vSGVscGVyL0NoZWNrb3V0TWV0aG9kU3RhdGVcIjtcblxuY2xhc3MgQ2hlY2tvdXRCb290c3RhcCB7XG4gICAgY29uc3RydWN0b3IoZ2F0ZXdheSwgcmVuZGVyZXIsIG1lc3NhZ2VzLCBzcGlubmVyKSB7XG4gICAgICAgIHRoaXMuZ2F0ZXdheSA9IGdhdGV3YXk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuICAgICAgICB0aGlzLnNwaW5uZXIgPSBzcGlubmVyO1xuXG4gICAgICAgIHRoaXMuc3RhbmRhcmRPcmRlckJ1dHRvblNlbGVjdG9yID0gT1JERVJfQlVUVE9OX1NFTEVDVE9SO1xuXG4gICAgICAgIHRoaXMuYnV0dG9uQ2hhbmdlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoZWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVWkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcblxuICAgICAgICAvLyBVbnNlbGVjdCBzYXZlZCBjYXJkLlxuICAgICAgICAvLyBXQyBzYXZlcyBmb3JtIHZhbHVlcywgc28gd2l0aCBvdXIgY3VycmVudCBVSSBpdCB3b3VsZCBiZSBhIGJpdCB3ZWlyZFxuICAgICAgICAvLyBpZiB0aGUgdXNlciBwYWlkIHdpdGggc2F2ZWQsIHRoZW4gYWZ0ZXIgc29tZSB0aW1lIHRyaWVzIHRvIHBheSBhZ2FpbixcbiAgICAgICAgLy8gYnV0IHdhbnRzIHRvIGVudGVyIGEgbmV3IGNhcmQsIGFuZCB0byBkbyB0aGF0IHRoZXkgaGF2ZSB0byBjaG9vc2Ug4oCcU2VsZWN0IHBheW1lbnTigJ0gaW4gdGhlIGxpc3QuXG4gICAgICAgIGpRdWVyeSgnI3NhdmVkLWNyZWRpdC1jYXJkJykudmFsKGpRdWVyeSgnI3NhdmVkLWNyZWRpdC1jYXJkIG9wdGlvbjpmaXJzdCcpLnZhbCgpKTtcblxuICAgICAgICBqUXVlcnkoZG9jdW1lbnQuYm9keSkub24oJ3VwZGF0ZWRfY2hlY2tvdXQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5vbigndXBkYXRlZF9jaGVja291dCBwYXltZW50X21ldGhvZF9zZWxlY3RlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVWkoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5vbignaG9zdGVkX2ZpZWxkc19sb2FkZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBqUXVlcnkoJyNzYXZlZC1jcmVkaXQtY2FyZCcpLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVVaSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVVaSgpO1xuICAgIH1cblxuICAgIHNob3VsZFJlbmRlcigpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5LmJ1dHRvbi5jYW5jZWxfd3JhcHBlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZ2F0ZXdheS5idXR0b24ud3JhcHBlcikgIT09IG51bGwgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyKSAhPT0gbnVsbDtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5zaG91bGRSZW5kZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIgKyAnPmRpdicpKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIgKyAnPmRpdicpLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0aW9uSGFuZGxlciA9IG5ldyBDaGVja291dEFjdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXksXG4gICAgICAgICAgICBuZXcgRXJyb3JIYW5kbGVyKHRoaXMuZ2F0ZXdheS5sYWJlbHMuZXJyb3IuZ2VuZXJpYyksXG4gICAgICAgICAgICB0aGlzLnNwaW5uZXJcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcihcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZXIuY29uZmlndXJhdGlvbigpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5idXR0b25DaGFuZ2VPYnNlcnZlci5vYnNlcnZlKFxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLnN0YW5kYXJkT3JkZXJCdXR0b25TZWxlY3RvciksXG4gICAgICAgICAgICB7YXR0cmlidXRlczogdHJ1ZX1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVVaSgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBheW1lbnRNZXRob2QgPSBnZXRDdXJyZW50UGF5bWVudE1ldGhvZCgpO1xuICAgICAgICBjb25zdCBpc1BheXBhbCA9IGN1cnJlbnRQYXltZW50TWV0aG9kID09PSBQYXltZW50TWV0aG9kcy5QQVlQQUw7XG4gICAgICAgIGNvbnN0IGlzQ2FyZCA9IGN1cnJlbnRQYXltZW50TWV0aG9kID09PSBQYXltZW50TWV0aG9kcy5DQVJEUztcbiAgICAgICAgY29uc3QgaXNTZXBhcmF0ZUJ1dHRvbkdhdGV3YXkgPSBbUGF5bWVudE1ldGhvZHMuQ0FSRF9CVVRUT05dLmluY2x1ZGVzKGN1cnJlbnRQYXltZW50TWV0aG9kKTtcbiAgICAgICAgY29uc3QgaXNTYXZlZENhcmQgPSBpc0NhcmQgJiYgaXNTYXZlZENhcmRTZWxlY3RlZCgpO1xuICAgICAgICBjb25zdCBpc05vdE91ckdhdGV3YXkgPSAhaXNQYXlwYWwgJiYgIWlzQ2FyZCAmJiAhaXNTZXBhcmF0ZUJ1dHRvbkdhdGV3YXk7XG4gICAgICAgIGNvbnN0IGlzRnJlZVRyaWFsID0gUGF5UGFsQ29tbWVyY2VHYXRld2F5LmlzX2ZyZWVfdHJpYWxfY2FydDtcbiAgICAgICAgY29uc3QgaGFzVmF1bHRlZFBheXBhbCA9IFBheVBhbENvbW1lcmNlR2F0ZXdheS52YXVsdGVkX3BheXBhbF9lbWFpbCAhPT0gJyc7XG5cbiAgICAgICAgY29uc3QgcGF5cGFsQnV0dG9uV3JhcHBlcnMgPSB7XG4gICAgICAgICAgICAuLi5PYmplY3QuZW50cmllcyhQYXlQYWxDb21tZXJjZUdhdGV3YXkuc2VwYXJhdGVfYnV0dG9ucylcbiAgICAgICAgICAgICAgICAucmVkdWNlKChyZXN1bHQsIFtrLCBkYXRhXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLnJlc3VsdCwgW2RhdGEuaWRdOiBkYXRhLndyYXBwZXJ9XG4gICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICB9O1xuXG4gICAgICAgIHNldFZpc2libGUodGhpcy5zdGFuZGFyZE9yZGVyQnV0dG9uU2VsZWN0b3IsICAoaXNQYXlwYWwgJiYgaXNGcmVlVHJpYWwgJiYgaGFzVmF1bHRlZFBheXBhbCkgfHwgaXNOb3RPdXJHYXRld2F5IHx8IGlzU2F2ZWRDYXJkLCB0cnVlKTtcbiAgICAgICAgc2V0VmlzaWJsZSgnLnBwY3AtdmF1bHRlZC1wYXlwYWwtZGV0YWlscycsIGlzUGF5cGFsKTtcbiAgICAgICAgc2V0VmlzaWJsZSh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIsIGlzUGF5cGFsICYmICEoaXNGcmVlVHJpYWwgJiYgaGFzVmF1bHRlZFBheXBhbCkpO1xuICAgICAgICBzZXRWaXNpYmxlKHRoaXMuZ2F0ZXdheS5tZXNzYWdlcy53cmFwcGVyLCBpc1BheXBhbCAmJiAhaXNGcmVlVHJpYWwpO1xuICAgICAgICBzZXRWaXNpYmxlKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIsIGlzQ2FyZCAmJiAhaXNTYXZlZENhcmQpO1xuICAgICAgICBmb3IgKGNvbnN0IFtnYXRld2F5SWQsIHdyYXBwZXJdIG9mIE9iamVjdC5lbnRyaWVzKHBheXBhbEJ1dHRvbldyYXBwZXJzKSkge1xuICAgICAgICAgICAgc2V0VmlzaWJsZSh3cmFwcGVyLCBnYXRld2F5SWQgPT09IGN1cnJlbnRQYXltZW50TWV0aG9kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1BheXBhbCAmJiAhaXNGcmVlVHJpYWwpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucmVuZGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNDYXJkKSB7XG4gICAgICAgICAgICBpZiAoaXNTYXZlZENhcmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDcmVkaXRDYXJkRmllbGRzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlQ3JlZGl0Q2FyZEZpZWxkcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZUNyZWRpdENhcmRGaWVsZHMoKSB7XG4gICAgICAgIGpRdWVyeSgnbGFiZWxbZm9yPVwicHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtbnVtYmVyXCJdJykuYWRkQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtbnVtYmVyJykuYWRkQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCdsYWJlbFtmb3I9XCJwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1leHBpcnlcIl0nKS5hZGRDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJyNwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1leHBpcnknKS5hZGRDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJ2xhYmVsW2Zvcj1cInBwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLWN2Y1wiXScpLmFkZENsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLWN2YycpLmFkZENsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnbGFiZWxbZm9yPVwidmF1bHRcIl0nKS5hZGRDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJyNwcGNwLWNyZWRpdC1jYXJkLXZhdWx0JykuYWRkQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpLmF0dHIoXCJkaXNhYmxlZFwiLCB0cnVlKVxuICAgICAgICB0aGlzLnJlbmRlcmVyLmRpc2FibGVDcmVkaXRDYXJkRmllbGRzKClcbiAgICB9XG5cbiAgICBlbmFibGVDcmVkaXRDYXJkRmllbGRzKCkge1xuICAgICAgICBqUXVlcnkoJ2xhYmVsW2Zvcj1cInBwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLW51bWJlclwiXScpLnJlbW92ZUNsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLW51bWJlcicpLnJlbW92ZUNsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnbGFiZWxbZm9yPVwicHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtZXhwaXJ5XCJdJykucmVtb3ZlQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtZXhwaXJ5JykucmVtb3ZlQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCdsYWJlbFtmb3I9XCJwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1jdmNcIl0nKS5yZW1vdmVDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJyNwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1jdmMnKS5yZW1vdmVDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJ2xhYmVsW2Zvcj1cInZhdWx0XCJdJykucmVtb3ZlQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpLnJlbW92ZUNsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnI3BwY3AtY3JlZGl0LWNhcmQtdmF1bHQnKS5hdHRyKFwiZGlzYWJsZWRcIiwgZmFsc2UpXG4gICAgICAgIHRoaXMucmVuZGVyZXIuZW5hYmxlQ3JlZGl0Q2FyZEZpZWxkcygpXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDaGVja291dEJvb3RzdGFwXG4iLCJleHBvcnQgY29uc3QgaXNDaGFuZ2VQYXltZW50UGFnZSA9ICgpID0+IHtcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpXG4gICAgcmV0dXJuIHVybFBhcmFtcy5oYXMoJ2NoYW5nZV9wYXltZW50X21ldGhvZCcpO1xufVxuIiwiaW1wb3J0IENoZWNrb3V0Qm9vdHN0YXAgZnJvbSAnLi9DaGVja291dEJvb3RzdGFwJ1xuaW1wb3J0IHtpc0NoYW5nZVBheW1lbnRQYWdlfSBmcm9tIFwiLi4vSGVscGVyL1N1YnNjcmlwdGlvbnNcIjtcblxuY2xhc3MgUGF5Tm93Qm9vdHN0cmFwIGV4dGVuZHMgQ2hlY2tvdXRCb290c3RhcCB7XG4gICAgY29uc3RydWN0b3IoZ2F0ZXdheSwgcmVuZGVyZXIsIG1lc3NhZ2VzLCBzcGlubmVyKSB7XG4gICAgICAgIHN1cGVyKGdhdGV3YXksIHJlbmRlcmVyLCBtZXNzYWdlcywgc3Bpbm5lcilcbiAgICB9XG5cbiAgICB1cGRhdGVVaSgpIHtcbiAgICAgICAgaWYgKGlzQ2hhbmdlUGF5bWVudFBhZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci51cGRhdGVVaSgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGF5Tm93Qm9vdHN0cmFwO1xuIiwiaW1wb3J0IG1lcmdlIGZyb20gXCJkZWVwbWVyZ2VcIjtcblxuY2xhc3MgUmVuZGVyZXIge1xuICAgIGNvbnN0cnVjdG9yKGNyZWRpdENhcmRSZW5kZXJlciwgZGVmYXVsdFNldHRpbmdzLCBvblNtYXJ0QnV0dG9uQ2xpY2ssIG9uU21hcnRCdXR0b25zSW5pdCkge1xuICAgICAgICB0aGlzLmRlZmF1bHRTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncztcbiAgICAgICAgdGhpcy5jcmVkaXRDYXJkUmVuZGVyZXIgPSBjcmVkaXRDYXJkUmVuZGVyZXI7XG4gICAgICAgIHRoaXMub25TbWFydEJ1dHRvbkNsaWNrID0gb25TbWFydEJ1dHRvbkNsaWNrO1xuICAgICAgICB0aGlzLm9uU21hcnRCdXR0b25zSW5pdCA9IG9uU21hcnRCdXR0b25zSW5pdDtcblxuICAgICAgICB0aGlzLnJlbmRlcmVkU291cmNlcyA9IG5ldyBTZXQoKTtcbiAgICB9XG5cbiAgICByZW5kZXIoY29udGV4dENvbmZpZywgc2V0dGluZ3NPdmVycmlkZSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gbWVyZ2UodGhpcy5kZWZhdWx0U2V0dGluZ3MsIHNldHRpbmdzT3ZlcnJpZGUpO1xuXG4gICAgICAgIGNvbnN0IGVuYWJsZWRTZXBhcmF0ZUdhdGV3YXlzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgc2V0dGluZ3Muc2VwYXJhdGVfYnV0dG9ucykuZmlsdGVyKChbcywgZGF0YV0pID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZGF0YS53cmFwcGVyKVxuICAgICAgICApKTtcbiAgICAgICAgY29uc3QgaGFzRW5hYmxlZFNlcGFyYXRlR2F0ZXdheXMgPSBPYmplY3Qua2V5cyhlbmFibGVkU2VwYXJhdGVHYXRld2F5cykubGVuZ3RoICE9PSAwO1xuXG4gICAgICAgIGlmICghaGFzRW5hYmxlZFNlcGFyYXRlR2F0ZXdheXMpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5idXR0b24ud3JhcHBlcixcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5idXR0b24uc3R5bGUsXG4gICAgICAgICAgICAgICAgY29udGV4dENvbmZpZyxcbiAgICAgICAgICAgICAgICBoYXNFbmFibGVkU2VwYXJhdGVHYXRld2F5c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJlbmRlciBlYWNoIGJ1dHRvbiBzZXBhcmF0ZWx5XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZ1bmRpbmdTb3VyY2Ugb2YgcGF5cGFsLmdldEZ1bmRpbmdTb3VyY2VzKCkuZmlsdGVyKHMgPT4gIShzIGluIGVuYWJsZWRTZXBhcmF0ZUdhdGV3YXlzKSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3R5bGUgPSBzZXR0aW5ncy5idXR0b24uc3R5bGU7XG4gICAgICAgICAgICAgICAgaWYgKGZ1bmRpbmdTb3VyY2UgIT09ICdwYXlwYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU6IHN0eWxlLnNoYXBlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuYnV0dG9uLndyYXBwZXIsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBoYXNFbmFibGVkU2VwYXJhdGVHYXRld2F5cyxcbiAgICAgICAgICAgICAgICAgICAgZnVuZGluZ1NvdXJjZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWRpdENhcmRSZW5kZXJlci5yZW5kZXIoc2V0dGluZ3MuaG9zdGVkX2ZpZWxkcy53cmFwcGVyLCBjb250ZXh0Q29uZmlnKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtmdW5kaW5nU291cmNlLCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhlbmFibGVkU2VwYXJhdGVHYXRld2F5cykpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBkYXRhLndyYXBwZXIsXG4gICAgICAgICAgICAgICAgZGF0YS5zdHlsZSxcbiAgICAgICAgICAgICAgICBjb250ZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgIGhhc0VuYWJsZWRTZXBhcmF0ZUdhdGV3YXlzLFxuICAgICAgICAgICAgICAgIGZ1bmRpbmdTb3VyY2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXJCdXR0b25zKHdyYXBwZXIsIHN0eWxlLCBjb250ZXh0Q29uZmlnLCBoYXNFbmFibGVkU2VwYXJhdGVHYXRld2F5cywgZnVuZGluZ1NvdXJjZSA9IG51bGwpIHtcbiAgICAgICAgaWYgKCEgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih3cmFwcGVyKSB8fCB0aGlzLmlzQWxyZWFkeVJlbmRlcmVkKHdyYXBwZXIsIGZ1bmRpbmdTb3VyY2UsIGhhc0VuYWJsZWRTZXBhcmF0ZUdhdGV3YXlzKSB8fCAndW5kZWZpbmVkJyA9PT0gdHlwZW9mIHBheXBhbC5CdXR0b25zICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZ1bmRpbmdTb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnRleHRDb25maWcuZnVuZGluZ1NvdXJjZSA9IGZ1bmRpbmdTb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidG4gPSBwYXlwYWwuQnV0dG9ucyh7XG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgIC4uLmNvbnRleHRDb25maWcsXG4gICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uU21hcnRCdXR0b25DbGljayxcbiAgICAgICAgICAgIG9uSW5pdDogdGhpcy5vblNtYXJ0QnV0dG9uc0luaXQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWJ0bi5pc0VsaWdpYmxlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ0bi5yZW5kZXIod3JhcHBlcik7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlZFNvdXJjZXMuYWRkKHdyYXBwZXIgKyBmdW5kaW5nU291cmNlID8/ICcnKTtcbiAgICB9XG5cbiAgICBpc0FscmVhZHlSZW5kZXJlZCh3cmFwcGVyLCBmdW5kaW5nU291cmNlLCBoYXNFbmFibGVkU2VwYXJhdGVHYXRld2F5cykge1xuICAgICAgICAvLyBTaW1wbHkgY2hlY2sgdGhhdCBoYXMgY2hpbGQgbm9kZXMgd2hlbiB3ZSBkbyBub3QgbmVlZCB0byByZW5kZXIgYnV0dG9ucyBzZXBhcmF0ZWx5LFxuICAgICAgICAvLyB0aGlzIHdpbGwgcmVkdWNlIHRoZSByaXNrIG9mIGJyZWFraW5nIHdpdGggZGlmZmVyZW50IHRoZW1lcy9wbHVnaW5zXG4gICAgICAgIC8vIGFuZCBvbiB0aGUgY2FydCBwYWdlICh3aGVyZSB3ZSBhbHNvIGRvIG5vdCBuZWVkIHRvIHJlbmRlciBzZXBhcmF0ZWx5KSwgd2hpY2ggbWF5IGZ1bGx5IHJlbG9hZCB0aGlzIHBhcnQgb2YgdGhlIHBhZ2UuXG4gICAgICAgIC8vIElkZWFsbHkgd2Ugc2hvdWxkIGFsc28gZmluZCBhIHdheSB0byBkZXRlY3Qgc3VjaCBmdWxsIHJlbG9hZHMgYW5kIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBrZXlzIGZyb20gdGhlIHNldC5cbiAgICAgICAgaWYgKCFoYXNFbmFibGVkU2VwYXJhdGVHYXRld2F5cykge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iod3JhcHBlcikuaGFzQ2hpbGROb2RlcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVkU291cmNlcy5oYXMod3JhcHBlciArIGZ1bmRpbmdTb3VyY2UgPz8gJycpO1xuICAgIH1cblxuICAgIGhpZGVCdXR0b25zKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZG9tRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWxlbWVudCk7XG4gICAgICAgIGlmICghIGRvbUVsZW1lbnQgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZG9tRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzaG93QnV0dG9ucyhlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGRvbUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnQpO1xuICAgICAgICBpZiAoISBkb21FbGVtZW50ICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGRvbUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGRpc2FibGVDcmVkaXRDYXJkRmllbGRzKCkge1xuICAgICAgICB0aGlzLmNyZWRpdENhcmRSZW5kZXJlci5kaXNhYmxlRmllbGRzKCk7XG4gICAgfVxuXG4gICAgZW5hYmxlQ3JlZGl0Q2FyZEZpZWxkcygpIHtcbiAgICAgICAgdGhpcy5jcmVkaXRDYXJkUmVuZGVyZXIuZW5hYmxlRmllbGRzKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZW5kZXJlcjtcbiIsImNvbnN0IGRjY0lucHV0RmFjdG9yeSA9IChvcmlnaW5hbCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG9yaWdpbmFsKTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgb3JpZ2luYWwuaWQpO1xuICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIG9yaWdpbmFsLmNsYXNzTmFtZSk7XG5cbiAgICBPYmplY3QudmFsdWVzKHN0eWxlcykuZm9yRWFjaCggKHByb3ApID0+IHtcbiAgICAgICAgaWYgKCEgc3R5bGVzW3Byb3BdIHx8ICEgaXNOYU4ocHJvcCkgfHwgcHJvcCA9PT0gJ2JhY2tncm91bmQtaW1hZ2UnICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG5ld0VsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocHJvcCwnJyArIHN0eWxlc1twcm9wXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRjY0lucHV0RmFjdG9yeTtcbiIsImltcG9ydCBkY2NJbnB1dEZhY3RvcnkgZnJvbSBcIi4uL0hlbHBlci9EY2NJbnB1dEZhY3RvcnlcIjtcbmltcG9ydCB7c2hvd30gZnJvbSBcIi4uL0hlbHBlci9IaWRpbmdcIjtcbmltcG9ydCBQcm9kdWN0IGZyb20gXCIuLi9FbnRpdHkvUHJvZHVjdFwiO1xuXG5jbGFzcyBDcmVkaXRDYXJkUmVuZGVyZXIge1xuXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdENvbmZpZywgZXJyb3JIYW5kbGVyLCBzcGlubmVyKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IGRlZmF1bHRDb25maWc7XG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyO1xuICAgICAgICB0aGlzLnNwaW5uZXIgPSBzcGlubmVyO1xuICAgICAgICB0aGlzLmNhcmRWYWxpZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcm1WYWxpZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmVuZGVyKHdyYXBwZXIsIGNvbnRleHRDb25maWcpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5jb250ZXh0ICE9PSAnY2hlY2tvdXQnXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5kZWZhdWx0Q29uZmlnLmNvbnRleHQgIT09ICdwYXktbm93J1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgfHwgd3JhcHBlciA9PT0gbnVsbFxuICAgICAgICAgICAgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih3cmFwcGVyKSA9PT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgcGF5cGFsLkhvc3RlZEZpZWxkcyA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgIHx8ICEgcGF5cGFsLkhvc3RlZEZpZWxkcy5pc0VsaWdpYmxlKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCB3cmFwcGVyRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iod3JhcHBlcik7XG4gICAgICAgICAgICB3cmFwcGVyRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHdyYXBwZXJFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1dHRvblNlbGVjdG9yID0gd3JhcHBlciArICcgYnV0dG9uJztcblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEhvc3RlZEZpZWxkc0luc3RhbmNlLnRlYXJkb3duKClcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoYEhvc3RlZCBmaWVsZHMgdGVhcmRvd24gZXJyb3I6ICR7ZXJyfWApKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEhvc3RlZEZpZWxkc0luc3RhbmNlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdhdGVXYXlCb3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGF5bWVudF9ib3gucGF5bWVudF9tZXRob2RfcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5Jyk7XG4gICAgICAgIGlmKCEgZ2F0ZVdheUJveCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2xkRGlzcGxheVN0eWxlID0gZ2F0ZVdheUJveC5zdHlsZS5kaXNwbGF5O1xuICAgICAgICBnYXRlV2F5Qm94LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXG4gICAgICAgIGNvbnN0IGhpZGVEY2NHYXRld2F5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BwY3AtaGlkZS1kY2MnKTtcbiAgICAgICAgaWYgKGhpZGVEY2NHYXRld2F5KSB7XG4gICAgICAgICAgICBoaWRlRGNjR2F0ZXdheS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGhpZGVEY2NHYXRld2F5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhcmROdW1iZXJGaWVsZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1udW1iZXInKTtcblxuICAgICAgICBjb25zdCBzdHlsZXNSYXcgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjYXJkTnVtYmVyRmllbGQpO1xuICAgICAgICBsZXQgc3R5bGVzID0ge307XG4gICAgICAgIE9iamVjdC52YWx1ZXMoc3R5bGVzUmF3KS5mb3JFYWNoKCAocHJvcCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEgc3R5bGVzUmF3W3Byb3BdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3R5bGVzW3Byb3BdID0gJycgKyBzdHlsZXNSYXdbcHJvcF07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNhcmROdW1iZXIgPSBkY2NJbnB1dEZhY3RvcnkoY2FyZE51bWJlckZpZWxkKTtcbiAgICAgICAgY2FyZE51bWJlckZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNhcmROdW1iZXIsIGNhcmROdW1iZXJGaWVsZCk7XG5cbiAgICAgICAgY29uc3QgY2FyZEV4cGlyeUZpZWxkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLWV4cGlyeScpO1xuICAgICAgICBjb25zdCBjYXJkRXhwaXJ5ID0gZGNjSW5wdXRGYWN0b3J5KGNhcmRFeHBpcnlGaWVsZCk7XG4gICAgICAgIGNhcmRFeHBpcnlGaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjYXJkRXhwaXJ5LCBjYXJkRXhwaXJ5RmllbGQpO1xuXG4gICAgICAgIGNvbnN0IGNhcmRDb2RlRmllbGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtY3ZjJyk7XG4gICAgICAgIGNvbnN0IGNhcmRDb2RlID0gZGNjSW5wdXRGYWN0b3J5KGNhcmRDb2RlRmllbGQpO1xuICAgICAgICBjYXJkQ29kZUZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNhcmRDb2RlLCBjYXJkQ29kZUZpZWxkKTtcblxuICAgICAgICBnYXRlV2F5Qm94LnN0eWxlLmRpc3BsYXkgPSBvbGREaXNwbGF5U3R5bGU7XG5cbiAgICAgICAgY29uc3QgZm9ybVdyYXBwZXIgPSAnLnBheW1lbnRfYm94IHBheW1lbnRfbWV0aG9kX3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheSc7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5lbmZvcmNlX3ZhdWx0XG4gICAgICAgICAgICAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGZvcm1XcmFwcGVyICsgJyAucHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihmb3JtV3JhcHBlciArICcgLnBwY3AtY3JlZGl0LWNhcmQtdmF1bHQnKS5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZm9ybVdyYXBwZXIgKyAnIC5wcGNwLWNyZWRpdC1jYXJkLXZhdWx0Jykuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHBheXBhbC5Ib3N0ZWRGaWVsZHMucmVuZGVyKHtcbiAgICAgICAgICAgIGNyZWF0ZU9yZGVyOiBjb250ZXh0Q29uZmlnLmNyZWF0ZU9yZGVyLFxuICAgICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICAgICAgJ2lucHV0Jzogc3R5bGVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgbnVtYmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLW51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLmRlZmF1bHRDb25maWcuaG9zdGVkX2ZpZWxkcy5sYWJlbHMuY3JlZGl0X2NhcmRfbnVtYmVyLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY3Z2OiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLWN2YycsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLmRlZmF1bHRDb25maWcuaG9zdGVkX2ZpZWxkcy5sYWJlbHMuY3Z2LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhwaXJhdGlvbkRhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6ICcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtZXhwaXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLmxhYmVscy5tbV95eSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oaG9zdGVkRmllbGRzID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiaG9zdGVkX2ZpZWxkc19sb2FkZWRcIikpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UgPSBob3N0ZWRGaWVsZHM7XG5cbiAgICAgICAgICAgIGhvc3RlZEZpZWxkcy5vbignaW5wdXRTdWJtaXRSZXF1ZXN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N1Ym1pdChjb250ZXh0Q29uZmlnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaG9zdGVkRmllbGRzLm9uKCdjYXJkVHlwZUNoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICggISBldmVudC5jYXJkcy5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRDYXJkcyA9IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLnZhbGlkX2NhcmRzO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZhbGlkID0gdmFsaWRDYXJkcy5pbmRleE9mKGV2ZW50LmNhcmRzWzBdLnR5cGUpICE9PSAtMTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuX2NhcmROdW1iZXJGaWxlZENMYXNzTmFtZUJ5Q2FyZFR5cGUoZXZlbnQuY2FyZHNbMF0udHlwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVjcmVhdGVFbGVtZW50Q2xhc3NBdHRyaWJ1dGUoY2FyZE51bWJlciwgY2FyZE51bWJlckZpZWxkLmNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmZpZWxkcy5udW1iZXIuaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgICBjYXJkTnVtYmVyLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgaG9zdGVkRmllbGRzLm9uKCd2YWxpZGl0eUNoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWxpZCA9IE9iamVjdC5rZXlzKGV2ZW50LmZpZWxkcykuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuZmllbGRzW2tleV0uaXNWYWxpZDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuX2NhcmROdW1iZXJGaWxlZENMYXNzTmFtZUJ5Q2FyZFR5cGUoZXZlbnQuY2FyZHNbMF0udHlwZSk7XG4gICAgICAgICAgICAgICAgZXZlbnQuZmllbGRzLm51bWJlci5pc1ZhbGlkXG4gICAgICAgICAgICAgICAgICAgID8gY2FyZE51bWJlci5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9yZWNyZWF0ZUVsZW1lbnRDbGFzc0F0dHJpYnV0ZShjYXJkTnVtYmVyLCBjYXJkTnVtYmVyRmllbGQuY2xhc3NOYW1lKTtcblxuICAgICAgICAgICAgICAgdGhpcy5mb3JtVmFsaWQgPSBmb3JtVmFsaWQ7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzaG93KGJ1dHRvblNlbGVjdG9yKTtcblxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iod3JhcHBlcikuZ2V0QXR0cmlidXRlKCdkYXRhLXBwY3Atc3Vic2NyaWJlZCcpICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihidXR0b25TZWxlY3RvcikuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1Ym1pdChjb250ZXh0Q29uZmlnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHdyYXBwZXIpLnNldEF0dHJpYnV0ZSgnZGF0YS1wcGNwLXN1YnNjcmliZWQnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BheW1lbnRfbWV0aG9kX3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheScpLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsW2Zvcj1wcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1udW1iZXJdJykuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cblxuICAgIGRpc2FibGVGaWVsZHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2Uuc2V0QXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2Uuc2V0QXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2N2dicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2Uuc2V0QXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2V4cGlyYXRpb25EYXRlJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbmFibGVGaWVsZHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2N2dicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2V4cGlyYXRpb25EYXRlJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfc3VibWl0KGNvbnRleHRDb25maWcpIHtcbiAgICAgICAgdGhpcy5zcGlubmVyLmJsb2NrKCk7XG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9ybVZhbGlkICYmIHRoaXMuY2FyZFZhbGlkKSB7XG4gICAgICAgICAgICBjb25zdCBzYXZlX2NhcmQgPSB0aGlzLmRlZmF1bHRDb25maWcuY2FuX3NhdmVfdmF1bHRfdG9rZW4gPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICBsZXQgdmF1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpID9cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpLmNoZWNrZWQgOiBzYXZlX2NhcmQ7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q29uZmlnLmVuZm9yY2VfdmF1bHQpIHtcbiAgICAgICAgICAgICAgICB2YXVsdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjb250aW5nZW5jeSA9IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLmNvbnRpbmdlbmN5O1xuICAgICAgICAgICAgY29uc3QgaG9zdGVkRmllbGRzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB2YXVsdDogdmF1bHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoY29udGluZ2VuY3kgIT09ICdOT18zRF9TRUNVUkUnKSB7XG4gICAgICAgICAgICAgICAgaG9zdGVkRmllbGRzRGF0YS5jb250aW5nZW5jaWVzID0gW2NvbnRpbmdlbmN5XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENvbmZpZy5wYXllcikge1xuICAgICAgICAgICAgICAgIGhvc3RlZEZpZWxkc0RhdGEuY2FyZGhvbGRlck5hbWUgPSB0aGlzLmRlZmF1bHRDb25maWcucGF5ZXIubmFtZS5naXZlbl9uYW1lICsgJyAnICsgdGhpcy5kZWZhdWx0Q29uZmlnLnBheWVyLm5hbWUuc3VybmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaG9zdGVkRmllbGRzRGF0YS5jYXJkaG9sZGVyTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaWxsaW5nX2ZpcnN0X25hbWUnKSA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaWxsaW5nX2ZpcnN0X25hbWUnKS52YWx1ZSA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3ROYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JpbGxpbmdfbGFzdF9uYW1lJykgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmlsbGluZ19sYXN0X25hbWUnKS52YWx1ZSA6ICcnO1xuXG4gICAgICAgICAgICAgICAgaG9zdGVkRmllbGRzRGF0YS5jYXJkaG9sZGVyTmFtZSA9IGZpcnN0TmFtZSArICcgJyArIGxhc3ROYW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZS5zdWJtaXQoaG9zdGVkRmllbGRzRGF0YSkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQub3JkZXJJRCA9IHBheWxvYWQub3JkZXJJZDtcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIudW5ibG9jaygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Q29uZmlnLm9uQXBwcm92ZShwYXlsb2FkKTtcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5jbGVhcigpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVyci5kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLm1lc3NhZ2UoZXJyLmRldGFpbHMubWFwKGQgPT4gYCR7ZC5pc3N1ZX0gJHtkLmRlc2NyaXB0aW9ufWApLmpvaW4oJzxici8+JyksIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAhIHRoaXMuY2FyZFZhbGlkID8gdGhpcy5kZWZhdWx0Q29uZmlnLmhvc3RlZF9maWVsZHMubGFiZWxzLmNhcmRfbm90X3N1cHBvcnRlZCA6IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLmxhYmVscy5maWVsZHNfbm90X3ZhbGlkO1xuICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIubWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9jYXJkTnVtYmVyRmlsZWRDTGFzc05hbWVCeUNhcmRUeXBlKGNhcmRUeXBlKSB7XG4gICAgICAgIHJldHVybiBjYXJkVHlwZSA9PT0gJ2FtZXJpY2FuLWV4cHJlc3MnID8gJ2FtZXgnIDogY2FyZFR5cGUucmVwbGFjZSgnLScsICcnKTtcbiAgICB9XG5cbiAgICBfcmVjcmVhdGVFbGVtZW50Q2xhc3NBdHRyaWJ1dGUoZWxlbWVudCwgbmV3Q2xhc3NOYW1lKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIG5ld0NsYXNzTmFtZSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQ3JlZGl0Q2FyZFJlbmRlcmVyO1xuIiwiY29uc3Qgc3RvcmFnZUtleSA9ICdwcGNwLWRhdGEtY2xpZW50LWlkJztcblxuY29uc3QgdmFsaWRhdGVUb2tlbiA9ICh0b2tlbiwgdXNlcikgPT4ge1xuICAgIGlmICghIHRva2VuKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRva2VuLnVzZXIgIT09IHVzZXIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGlzRXhwaXJlZCA9IGN1cnJlbnRUaW1lID49IHRva2VuLmV4cGlyYXRpb24gKiAxMDAwO1xuICAgIHJldHVybiAhIGlzRXhwaXJlZDtcbn1cblxuY29uc3Qgc3RvcmVkVG9rZW5Gb3JVc2VyID0gKHVzZXIpID0+IHtcbiAgICBjb25zdCB0b2tlbiA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSk7XG4gICAgaWYgKHZhbGlkYXRlVG9rZW4odG9rZW4sIHVzZXIpKSB7XG4gICAgICAgIHJldHVybiB0b2tlbi50b2tlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmNvbnN0IHN0b3JlVG9rZW4gPSAodG9rZW4pID0+IHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHN0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KHRva2VuKSk7XG59XG5cbmNvbnN0IGRhdGFDbGllbnRJZEF0dHJpYnV0ZUhhbmRsZXIgPSAoc2NyaXB0LCBjb25maWcpID0+IHtcbiAgICBmZXRjaChjb25maWcuZW5kcG9pbnQsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIG5vbmNlOiBjb25maWcubm9uY2VcbiAgICAgICAgfSlcbiAgICB9KS50aGVuKChyZXMpPT57XG4gICAgICAgIHJldHVybiByZXMuanNvbigpO1xuICAgIH0pLnRoZW4oKGRhdGEpPT57XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0ZVRva2VuKGRhdGEsIGNvbmZpZy51c2VyKTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3RvcmVUb2tlbihkYXRhKTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnZGF0YS1jbGllbnQtdG9rZW4nLCBkYXRhLnRva2VuKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGF0YUNsaWVudElkQXR0cmlidXRlSGFuZGxlcjtcbiIsImNsYXNzIE1lc3NhZ2VSZW5kZXJlciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAoISB0aGlzLnNob3VsZFJlbmRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwYXlwYWwuTWVzc2FnZXMoe1xuICAgICAgICAgICAgYW1vdW50OiB0aGlzLmNvbmZpZy5hbW91bnQsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMuY29uZmlnLnBsYWNlbWVudCxcbiAgICAgICAgICAgIHN0eWxlOiB0aGlzLmNvbmZpZy5zdHlsZVxuICAgICAgICB9KS5yZW5kZXIodGhpcy5jb25maWcud3JhcHBlcik7XG5cbiAgICAgICAgalF1ZXJ5KGRvY3VtZW50LmJvZHkpLm9uKCd1cGRhdGVkX2NhcnRfdG90YWxzJywgKCkgPT4ge1xuICAgICAgICAgICAgcGF5cGFsLk1lc3NhZ2VzKHtcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHRoaXMuY29uZmlnLmFtb3VudCxcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMuY29uZmlnLnBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICBzdHlsZTogdGhpcy5jb25maWcuc3R5bGVcbiAgICAgICAgICAgIH0pLnJlbmRlcih0aGlzLmNvbmZpZy53cmFwcGVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVuZGVyV2l0aEFtb3VudChhbW91bnQpIHtcblxuICAgICAgICBpZiAoISB0aGlzLnNob3VsZFJlbmRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIG5ld1dyYXBwZXIuc2V0QXR0cmlidXRlKCdpZCcsIHRoaXMuY29uZmlnLndyYXBwZXIucmVwbGFjZSgnIycsICcnKSk7XG5cbiAgICAgICAgY29uc3Qgc2libGluZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb25maWcud3JhcHBlcikubmV4dFNpYmxpbmc7XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb25maWcud3JhcHBlcikucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29uZmlnLndyYXBwZXIpKTtcbiAgICAgICAgc2libGluZy5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShuZXdXcmFwcGVyLCBzaWJsaW5nKTtcbiAgICAgICAgcGF5cGFsLk1lc3NhZ2VzKHtcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHBsYWNlbWVudDogdGhpcy5jb25maWcucGxhY2VtZW50LFxuICAgICAgICAgICAgc3R5bGU6IHRoaXMuY29uZmlnLnN0eWxlXG4gICAgICAgIH0pLnJlbmRlcih0aGlzLmNvbmZpZy53cmFwcGVyKTtcbiAgICB9XG5cbiAgICBzaG91bGRSZW5kZXIoKSB7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXlwYWwuTWVzc2FnZXMgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB0aGlzLmNvbmZpZy53cmFwcGVyID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29uZmlnLndyYXBwZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGlkZU1lc3NhZ2VzKCkge1xuICAgICAgICBjb25zdCBkb21FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmNvbmZpZy53cmFwcGVyKTtcbiAgICAgICAgaWYgKCEgZG9tRWxlbWVudCApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkb21FbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VSZW5kZXJlcjtcbiIsImNsYXNzIFNwaW5uZXIge1xuXG4gICAgY29uc3RydWN0b3IodGFyZ2V0ID0gJ2Zvcm0ud29vY29tbWVyY2UtY2hlY2tvdXQnKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH1cblxuICAgIHNldFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgfVxuXG4gICAgYmxvY2soKSB7XG5cbiAgICAgICAgalF1ZXJ5KCB0aGlzLnRhcmdldCApLmJsb2NrKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXG4gICAgICAgICAgICBvdmVybGF5Q1NTOiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNlxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bmJsb2NrKCkge1xuXG4gICAgICAgIGpRdWVyeSggdGhpcy50YXJnZXQgKS51bmJsb2NrKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTcGlubmVyO1xuIiwiaW1wb3J0IHtQYXltZW50TWV0aG9kc30gZnJvbSBcIi4uL0hlbHBlci9DaGVja291dE1ldGhvZFN0YXRlXCI7XG5pbXBvcnQgZXJyb3JIYW5kbGVyIGZyb20gXCIuLi9FcnJvckhhbmRsZXJcIjtcblxuY2xhc3MgRnJlZVRyaWFsSGFuZGxlciB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgc3Bpbm5lcixcbiAgICAgICAgZXJyb3JIYW5kbGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLnNwaW5uZXIgPSBzcGlubmVyO1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcjtcbiAgICB9XG5cbiAgICBoYW5kbGUoKVxuICAgIHtcbiAgICAgICAgdGhpcy5zcGlubmVyLmJsb2NrKCk7XG5cbiAgICAgICAgZmV0Y2godGhpcy5jb25maWcuYWpheC52YXVsdF9wYXlwYWwuZW5kcG9pbnQsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLmNvbmZpZy5hamF4LnZhdWx0X3BheXBhbC5ub25jZSxcbiAgICAgICAgICAgICAgICByZXR1cm5fdXJsOiBsb2NhdGlvbi5ocmVmXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gICAgICAgIH0pLnRoZW4oZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci51bmJsb2NrKCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5tZXNzYWdlKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihkYXRhLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBkYXRhLmRhdGEuYXBwcm92ZV9saW5rO1xuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLnNwaW5uZXIudW5ibG9jaygpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5nZW5lcmljRXJyb3IoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgRnJlZVRyaWFsSGFuZGxlcjtcbiIsImltcG9ydCBNaW5pQ2FydEJvb3RzdGFwIGZyb20gJy4vbW9kdWxlcy9Db250ZXh0Qm9vdHN0cmFwL01pbmlDYXJ0Qm9vdHN0YXAnO1xuaW1wb3J0IFNpbmdsZVByb2R1Y3RCb290c3RhcCBmcm9tICcuL21vZHVsZXMvQ29udGV4dEJvb3RzdHJhcC9TaW5nbGVQcm9kdWN0Qm9vdHN0YXAnO1xuaW1wb3J0IENhcnRCb290c3RyYXAgZnJvbSAnLi9tb2R1bGVzL0NvbnRleHRCb290c3RyYXAvQ2FydEJvb3RzdGFwJztcbmltcG9ydCBDaGVja291dEJvb3RzdGFwIGZyb20gJy4vbW9kdWxlcy9Db250ZXh0Qm9vdHN0cmFwL0NoZWNrb3V0Qm9vdHN0YXAnO1xuaW1wb3J0IFBheU5vd0Jvb3RzdHJhcCBmcm9tIFwiLi9tb2R1bGVzL0NvbnRleHRCb290c3RyYXAvUGF5Tm93Qm9vdHN0cmFwXCI7XG5pbXBvcnQgUmVuZGVyZXIgZnJvbSAnLi9tb2R1bGVzL1JlbmRlcmVyL1JlbmRlcmVyJztcbmltcG9ydCBFcnJvckhhbmRsZXIgZnJvbSAnLi9tb2R1bGVzL0Vycm9ySGFuZGxlcic7XG5pbXBvcnQgQ3JlZGl0Q2FyZFJlbmRlcmVyIGZyb20gXCIuL21vZHVsZXMvUmVuZGVyZXIvQ3JlZGl0Q2FyZFJlbmRlcmVyXCI7XG5pbXBvcnQgZGF0YUNsaWVudElkQXR0cmlidXRlSGFuZGxlciBmcm9tIFwiLi9tb2R1bGVzL0RhdGFDbGllbnRJZEF0dHJpYnV0ZUhhbmRsZXJcIjtcbmltcG9ydCBNZXNzYWdlUmVuZGVyZXIgZnJvbSBcIi4vbW9kdWxlcy9SZW5kZXJlci9NZXNzYWdlUmVuZGVyZXJcIjtcbmltcG9ydCBTcGlubmVyIGZyb20gXCIuL21vZHVsZXMvSGVscGVyL1NwaW5uZXJcIjtcbmltcG9ydCB7XG4gICAgZ2V0Q3VycmVudFBheW1lbnRNZXRob2QsXG4gICAgT1JERVJfQlVUVE9OX1NFTEVDVE9SLFxuICAgIFBheW1lbnRNZXRob2RzXG59IGZyb20gXCIuL21vZHVsZXMvSGVscGVyL0NoZWNrb3V0TWV0aG9kU3RhdGVcIjtcbmltcG9ydCB7aGlkZSwgc2V0VmlzaWJsZX0gZnJvbSBcIi4vbW9kdWxlcy9IZWxwZXIvSGlkaW5nXCI7XG5pbXBvcnQge2lzQ2hhbmdlUGF5bWVudFBhZ2V9IGZyb20gXCIuL21vZHVsZXMvSGVscGVyL1N1YnNjcmlwdGlvbnNcIjtcbmltcG9ydCBGcmVlVHJpYWxIYW5kbGVyIGZyb20gXCIuL21vZHVsZXMvQWN0aW9uSGFuZGxlci9GcmVlVHJpYWxIYW5kbGVyXCI7XG5cbi8vIFRPRE86IGNvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIGhhdmUgYSBzZXBhcmF0ZSBzcGlubmVyIGZvciBlYWNoIGdhdGV3YXksXG4vLyBidXQgSSB0aGluayB3ZSBjYXJlIG1haW5seSBhYm91dCB0aGUgc2NyaXB0IGxvYWRpbmcsIHNvIG9uZSBzcGlubmVyIHNob3VsZCBiZSBlbm91Z2guXG5jb25zdCBidXR0b25zU3Bpbm5lciA9IG5ldyBTcGlubmVyKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wcGMtYnV0dG9uLXdyYXBwZXInKSk7XG5jb25zdCBjYXJkc1NwaW5uZXIgPSBuZXcgU3Bpbm5lcignI3BwY3AtaG9zdGVkLWZpZWxkcycpO1xuXG5jb25zdCBib290c3RyYXAgPSAoKSA9PiB7XG4gICAgY29uc3QgZXJyb3JIYW5kbGVyID0gbmV3IEVycm9ySGFuZGxlcihQYXlQYWxDb21tZXJjZUdhdGV3YXkubGFiZWxzLmVycm9yLmdlbmVyaWMpO1xuICAgIGNvbnN0IHNwaW5uZXIgPSBuZXcgU3Bpbm5lcigpO1xuICAgIGNvbnN0IGNyZWRpdENhcmRSZW5kZXJlciA9IG5ldyBDcmVkaXRDYXJkUmVuZGVyZXIoUGF5UGFsQ29tbWVyY2VHYXRld2F5LCBlcnJvckhhbmRsZXIsIHNwaW5uZXIpO1xuXG4gICAgY29uc3QgZnJlZVRyaWFsSGFuZGxlciA9IG5ldyBGcmVlVHJpYWxIYW5kbGVyKFBheVBhbENvbW1lcmNlR2F0ZXdheSwgc3Bpbm5lciwgZXJyb3JIYW5kbGVyKTtcblxuICAgIGNvbnN0IG9uU21hcnRCdXR0b25DbGljayA9IChkYXRhLCBhY3Rpb25zKSA9PiB7XG4gICAgICAgIHdpbmRvdy5wcGNwRnVuZGluZ1NvdXJjZSA9IGRhdGEuZnVuZGluZ1NvdXJjZTtcblxuICAgICAgICBpZiAoUGF5UGFsQ29tbWVyY2VHYXRld2F5LmJhc2ljX2NoZWNrb3V0X3ZhbGlkYXRpb25fZW5hYmxlZCkge1xuICAgICAgICAgICAgLy8gVE9ETzogcXVpY2sgZml4IHRvIGdldCB0aGUgZXJyb3IgYWJvdXQgZW1wdHkgZm9ybSBiZWZvcmUgYXR0ZW1wdGluZyBQYXlQYWwgb3JkZXJcbiAgICAgICAgICAgIC8vIGl0IHNob3VsZCBzb2x2ZSAjNTEzIGZvciBtb3N0IG9mIHRoZSB1c2VycywgYnV0IHByb3BlciBzb2x1dGlvbiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgbGF0ZXIuXG4gICAgICAgICAgICBjb25zdCByZXF1aXJlZEZpZWxkcyA9IGpRdWVyeSgnZm9ybS53b29jb21tZXJjZS1jaGVja291dCAudmFsaWRhdGUtcmVxdWlyZWQ6dmlzaWJsZSA6aW5wdXQnKTtcbiAgICAgICAgICAgIHJlcXVpcmVkRmllbGRzLmVhY2goKGksIGlucHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KGlucHV0KS50cmlnZ2VyKCd2YWxpZGF0ZScpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkRmllbGRzID0gQXJyYXkuZnJvbShqUXVlcnkoJ2Zvcm0ud29vY29tbWVyY2UtY2hlY2tvdXQgLnZhbGlkYXRlLXJlcXVpcmVkLndvb2NvbW1lcmNlLWludmFsaWQ6dmlzaWJsZScpKTtcbiAgICAgICAgICAgIGlmIChpbnZhbGlkRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpbGxpbmdGaWVsZHNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcud29vY29tbWVyY2UtYmlsbGluZy1maWVsZHMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaGlwcGluZ0ZpZWxkc0NvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53b29jb21tZXJjZS1zaGlwcGluZy1maWVsZHMnKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVNZXNzYWdlTWFwID0gUGF5UGFsQ29tbWVyY2VHYXRld2F5LmxhYmVscy5lcnJvci5yZXF1aXJlZC5lbGVtZW50cztcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlcyA9IGludmFsaWRGaWVsZHMubWFwKGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGVsLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lXScpPy5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZSBpbiBuYW1lTWVzc2FnZU1hcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWVNZXNzYWdlTWFwW25hbWVdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJykudGV4dENvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKCcqJywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmlsbGluZ0ZpZWxkc0NvbnRhaW5lcj8uY29udGFpbnMoZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFBheVBhbENvbW1lcmNlR2F0ZXdheS5sYWJlbHMuYmlsbGluZ19maWVsZC5yZXBsYWNlKCclcycsIGxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2hpcHBpbmdGaWVsZHNDb250YWluZXI/LmNvbnRhaW5zKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBQYXlQYWxDb21tZXJjZUdhdGV3YXkubGFiZWxzLnNoaXBwaW5nX2ZpZWxkLnJlcGxhY2UoJyVzJywgbGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXlQYWxDb21tZXJjZUdhdGV3YXkubGFiZWxzLmVycm9yLnJlcXVpcmVkLmZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnJXMnLCBgPHN0cm9uZz4ke2xhYmVsfTwvc3Ryb25nPmApXG4gICAgICAgICAgICAgICAgfSkuZmlsdGVyKHMgPT4gcy5sZW5ndGggPiAyKTtcblxuICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5jbGVhcigpO1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyLm1lc3NhZ2VzKG1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIubWVzc2FnZShQYXlQYWxDb21tZXJjZUdhdGV3YXkubGFiZWxzLmVycm9yLnJlcXVpcmVkLmdlbmVyaWMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zLnJlamVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0ud29vY29tbWVyY2UtY2hlY2tvdXQnKTtcbiAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgIGpRdWVyeSgnI3BwY3AtZnVuZGluZy1zb3VyY2UtZm9ybS1pbnB1dCcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgZm9ybS5pbnNlcnRBZGphY2VudEhUTUwoXG4gICAgICAgICAgICAgICAgJ2JlZm9yZWVuZCcsXG4gICAgICAgICAgICAgICAgYDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInBwY3AtZnVuZGluZy1zb3VyY2VcIiB2YWx1ZT1cIiR7ZGF0YS5mdW5kaW5nU291cmNlfVwiIGlkPVwicHBjcC1mdW5kaW5nLXNvdXJjZS1mb3JtLWlucHV0XCI+YFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNGcmVlVHJpYWwgPSBQYXlQYWxDb21tZXJjZUdhdGV3YXkuaXNfZnJlZV90cmlhbF9jYXJ0O1xuICAgICAgICBpZiAoaXNGcmVlVHJpYWwgJiYgZGF0YS5mdW5kaW5nU291cmNlICE9PSAnY2FyZCcpIHtcbiAgICAgICAgICAgIGZyZWVUcmlhbEhhbmRsZXIuaGFuZGxlKCk7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9ucy5yZWplY3QoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25TbWFydEJ1dHRvbnNJbml0ID0gKCkgPT4ge1xuICAgICAgICBidXR0b25zU3Bpbm5lci51bmJsb2NrKCk7XG4gICAgfTtcbiAgICBjb25zdCByZW5kZXJlciA9IG5ldyBSZW5kZXJlcihjcmVkaXRDYXJkUmVuZGVyZXIsIFBheVBhbENvbW1lcmNlR2F0ZXdheSwgb25TbWFydEJ1dHRvbkNsaWNrLCBvblNtYXJ0QnV0dG9uc0luaXQpO1xuICAgIGNvbnN0IG1lc3NhZ2VSZW5kZXJlciA9IG5ldyBNZXNzYWdlUmVuZGVyZXIoUGF5UGFsQ29tbWVyY2VHYXRld2F5Lm1lc3NhZ2VzKTtcbiAgICBjb25zdCBjb250ZXh0ID0gUGF5UGFsQ29tbWVyY2VHYXRld2F5LmNvbnRleHQ7XG4gICAgaWYgKGNvbnRleHQgPT09ICdtaW5pLWNhcnQnIHx8IGNvbnRleHQgPT09ICdwcm9kdWN0Jykge1xuICAgICAgICBpZiAoUGF5UGFsQ29tbWVyY2VHYXRld2F5Lm1pbmlfY2FydF9idXR0b25zX2VuYWJsZWQgPT09ICcxJykge1xuICAgICAgICAgICAgY29uc3QgbWluaUNhcnRCb290c3RyYXAgPSBuZXcgTWluaUNhcnRCb290c3RhcChcbiAgICAgICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXksXG4gICAgICAgICAgICAgICAgcmVuZGVyZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG1pbmlDYXJ0Qm9vdHN0cmFwLmluaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb250ZXh0ID09PSAncHJvZHVjdCcgJiYgUGF5UGFsQ29tbWVyY2VHYXRld2F5LnNpbmdsZV9wcm9kdWN0X2J1dHRvbnNfZW5hYmxlZCA9PT0gJzEnKSB7XG4gICAgICAgIGNvbnN0IHNpbmdsZVByb2R1Y3RCb290c3RyYXAgPSBuZXcgU2luZ2xlUHJvZHVjdEJvb3RzdGFwKFxuICAgICAgICAgICAgUGF5UGFsQ29tbWVyY2VHYXRld2F5LFxuICAgICAgICAgICAgcmVuZGVyZXIsXG4gICAgICAgICAgICBtZXNzYWdlUmVuZGVyZXIsXG4gICAgICAgICk7XG5cbiAgICAgICAgc2luZ2xlUHJvZHVjdEJvb3RzdHJhcC5pbml0KCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgPT09ICdjYXJ0Jykge1xuICAgICAgICBjb25zdCBjYXJ0Qm9vdHN0cmFwID0gbmV3IENhcnRCb290c3RyYXAoXG4gICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXksXG4gICAgICAgICAgICByZW5kZXJlcixcbiAgICAgICAgKTtcblxuICAgICAgICBjYXJ0Qm9vdHN0cmFwLmluaXQoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCA9PT0gJ2NoZWNrb3V0Jykge1xuICAgICAgICBjb25zdCBjaGVja291dEJvb3RzdGFwID0gbmV3IENoZWNrb3V0Qm9vdHN0YXAoXG4gICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXksXG4gICAgICAgICAgICByZW5kZXJlcixcbiAgICAgICAgICAgIG1lc3NhZ2VSZW5kZXJlcixcbiAgICAgICAgICAgIHNwaW5uZXJcbiAgICAgICAgKTtcblxuICAgICAgICBjaGVja291dEJvb3RzdGFwLmluaXQoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCA9PT0gJ3BheS1ub3cnICkge1xuICAgICAgICBjb25zdCBwYXlOb3dCb290c3RyYXAgPSBuZXcgUGF5Tm93Qm9vdHN0cmFwKFxuICAgICAgICAgICAgUGF5UGFsQ29tbWVyY2VHYXRld2F5LFxuICAgICAgICAgICAgcmVuZGVyZXIsXG4gICAgICAgICAgICBtZXNzYWdlUmVuZGVyZXIsXG4gICAgICAgICAgICBzcGlubmVyXG4gICAgICAgICk7XG4gICAgICAgIHBheU5vd0Jvb3RzdHJhcC5pbml0KCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgIT09ICdjaGVja291dCcpIHtcbiAgICAgICAgbWVzc2FnZVJlbmRlcmVyLnJlbmRlcigpO1xuICAgIH1cbn07XG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICdET01Db250ZW50TG9hZGVkJyxcbiAgICAoKSA9PiB7XG4gICAgICAgIGlmICghdHlwZW9mIChQYXlQYWxDb21tZXJjZUdhdGV3YXkpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdQYXlQYWwgYnV0dG9uIGNvdWxkIG5vdCBiZSBjb25maWd1cmVkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGF5UGFsQ29tbWVyY2VHYXRld2F5LmNvbnRleHQgIT09ICdjaGVja291dCdcbiAgICAgICAgICAgICYmIFBheVBhbENvbW1lcmNlR2F0ZXdheS5kYXRhX2NsaWVudF9pZC51c2VyID09PSAwXG4gICAgICAgICAgICAmJiBQYXlQYWxDb21tZXJjZUdhdGV3YXkuZGF0YV9jbGllbnRfaWQuaGFzX3N1YnNjcmlwdGlvbnNcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXlwYWxCdXR0b25HYXRld2F5SWRzID0gW1xuICAgICAgICAgICAgUGF5bWVudE1ldGhvZHMuUEFZUEFMLFxuICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMoUGF5UGFsQ29tbWVyY2VHYXRld2F5LnNlcGFyYXRlX2J1dHRvbnMpLm1hcCgoW2ssIGRhdGFdKSA9PiBkYXRhLmlkKSxcbiAgICAgICAgXVxuXG4gICAgICAgIC8vIFNvbWV0aW1lcyBQYXlQYWwgc2NyaXB0IHRha2VzIGxvbmcgdGltZSB0byBsb2FkLFxuICAgICAgICAvLyBzbyB3ZSBhZGRpdGlvbmFsbHkgaGlkZSB0aGUgc3RhbmRhcmQgb3JkZXIgYnV0dG9uIGhlcmUgdG8gYXZvaWQgZmFpbGVkIG9yZGVycy5cbiAgICAgICAgLy8gTm9ybWFsbHkgaXQgaXMgaGlkZGVuIGxhdGVyIGFmdGVyIHRoZSBzY3JpcHQgbG9hZC5cbiAgICAgICAgY29uc3QgaGlkZU9yZGVyQnV0dG9uSWZQcGNwR2F0ZXdheSA9ICgpID0+IHtcbiAgICAgICAgICAgIC8vIG9ubHkgaW4gY2hlY2tvdXQgYW5kIHBheSBub3cgcGFnZSwgb3RoZXJ3aXNlIGl0IG1heSBicmVhayB0aGluZ3MgKGUuZy4gcGF5bWVudCB2aWEgcHJvZHVjdCBwYWdlKSxcbiAgICAgICAgICAgIC8vIGFuZCBhbHNvIHRoZSBsb2FkaW5nIHNwaW5uZXIgbWF5IGxvb2sgd2VpcmQgb24gb3RoZXIgcGFnZXNcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhWydjaGVja291dCcsICdwYXktbm93J10uaW5jbHVkZXMoUGF5UGFsQ29tbWVyY2VHYXRld2F5LmNvbnRleHQpXG4gICAgICAgICAgICAgICAgfHwgaXNDaGFuZ2VQYXltZW50UGFnZSgpXG4gICAgICAgICAgICAgICAgfHwgKFBheVBhbENvbW1lcmNlR2F0ZXdheS5pc19mcmVlX3RyaWFsX2NhcnQgJiYgUGF5UGFsQ29tbWVyY2VHYXRld2F5LnZhdWx0ZWRfcGF5cGFsX2VtYWlsICE9PSAnJylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY3VycmVudFBheW1lbnRNZXRob2QgPSBnZXRDdXJyZW50UGF5bWVudE1ldGhvZCgpO1xuICAgICAgICAgICAgY29uc3QgaXNQYXlwYWxCdXR0b24gPSBwYXlwYWxCdXR0b25HYXRld2F5SWRzLmluY2x1ZGVzKGN1cnJlbnRQYXltZW50TWV0aG9kKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FyZHMgPSBjdXJyZW50UGF5bWVudE1ldGhvZCA9PT0gUGF5bWVudE1ldGhvZHMuQ0FSRFM7XG5cbiAgICAgICAgICAgIHNldFZpc2libGUoT1JERVJfQlVUVE9OX1NFTEVDVE9SLCAhaXNQYXlwYWxCdXR0b24gJiYgIWlzQ2FyZHMsIHRydWUpO1xuXG4gICAgICAgICAgICBpZiAoaXNQYXlwYWxCdXR0b24pIHtcbiAgICAgICAgICAgICAgICAvLyBzdG9wcGVkIGFmdGVyIHRoZSBmaXJzdCByZW5kZXJpbmcgb2YgdGhlIGJ1dHRvbnMsIGluIG9uSW5pdFxuICAgICAgICAgICAgICAgIGJ1dHRvbnNTcGlubmVyLmJsb2NrKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1dHRvbnNTcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ2FyZHMpIHtcbiAgICAgICAgICAgICAgICBjYXJkc1NwaW5uZXIuYmxvY2soKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FyZHNTcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGpRdWVyeShkb2N1bWVudCkub24oJ2hvc3RlZF9maWVsZHNfbG9hZGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgY2FyZHNTcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGJvb3RzdHJhcHBlZCA9IGZhbHNlO1xuXG4gICAgICAgIGhpZGVPcmRlckJ1dHRvbklmUHBjcEdhdGV3YXkoKTtcblxuICAgICAgICBqUXVlcnkoZG9jdW1lbnQuYm9keSkub24oJ3VwZGF0ZWRfY2hlY2tvdXQgcGF5bWVudF9tZXRob2Rfc2VsZWN0ZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYm9vdHN0cmFwcGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoaWRlT3JkZXJCdXR0b25JZlBwY3BHYXRld2F5KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgYm9vdHN0cmFwcGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgYm9vdHN0cmFwKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdzcmMnLCBQYXlQYWxDb21tZXJjZUdhdGV3YXkuYnV0dG9uLnVybCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKFBheVBhbENvbW1lcmNlR2F0ZXdheS5zY3JpcHRfYXR0cmlidXRlcykuZm9yRWFjaChcbiAgICAgICAgICAgIChrZXlWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoa2V5VmFsdWVbMF0sIGtleVZhbHVlWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoUGF5UGFsQ29tbWVyY2VHYXRld2F5LmRhdGFfY2xpZW50X2lkLnNldF9hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGRhdGFDbGllbnRJZEF0dHJpYnV0ZUhhbmRsZXIoc2NyaXB0LCBQYXlQYWxDb21tZXJjZUdhdGV3YXkuZGF0YV9jbGllbnRfaWQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTtcbiAgICB9LFxuKTtcbiJdLCJuYW1lcyI6WyJFcnJvckhhbmRsZXIiLCJjb25zdHJ1Y3RvciIsImdlbmVyaWNFcnJvclRleHQiLCJ3cmFwcGVyIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwibWVzc2FnZXNMaXN0IiwiZ2VuZXJpY0Vycm9yIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJjbGVhciIsIm1lc3NhZ2UiLCJhcHBlbmRQcmVwYXJlZEVycm9yTWVzc2FnZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2VFbGVtZW50IiwiX3ByZXBhcmVNZXNzYWdlc0xpc3QiLCJyZXBsYWNlV2l0aCIsInRleHQiLCJwZXJzaXN0IiwiX2FkZE1lc3NhZ2UiLCJfc2Nyb2xsVG9NZXNzYWdlcyIsIm1lc3NhZ2VzIiwidGV4dHMiLCJmb3JFYWNoIiwidCIsIlN0cmluZyIsImxlbmd0aCIsIkVycm9yIiwiYWRkIiwicmVtb3ZlIiwibWVzc2FnZU5vZGUiLCJfcHJlcGFyZU1lc3NhZ2VzTGlzdEl0ZW0iLCJhcHBlbmRDaGlsZCIsImpRdWVyeSIsInNjcm9sbF90b19ub3RpY2VzIiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImxpIiwiaW5uZXJIVE1MIiwib25BcHByb3ZlIiwiY29udGV4dCIsImVycm9ySGFuZGxlciIsImRhdGEiLCJhY3Rpb25zIiwiZmV0Y2giLCJjb25maWciLCJhamF4IiwiYXBwcm92ZV9vcmRlciIsImVuZHBvaW50IiwibWV0aG9kIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJub25jZSIsIm9yZGVyX2lkIiwib3JkZXJJRCIsImZ1bmRpbmdfc291cmNlIiwid2luZG93IiwicHBjcEZ1bmRpbmdTb3VyY2UiLCJ0aGVuIiwicmVzIiwianNvbiIsInN1Y2Nlc3MiLCJyZXN0YXJ0IiwiY2F0Y2giLCJlcnIiLCJsb2NhdGlvbiIsImhyZWYiLCJyZWRpcmVjdCIsInBheWVyRGF0YSIsInBheWVyIiwiUGF5UGFsQ29tbWVyY2VHYXRld2F5IiwicGhvbmUiLCJwaG9uZV90eXBlIiwicGhvbmVfbnVtYmVyIiwibmF0aW9uYWxfbnVtYmVyIiwidmFsdWUiLCJlbWFpbF9hZGRyZXNzIiwibmFtZSIsInN1cm5hbWUiLCJnaXZlbl9uYW1lIiwiYWRkcmVzcyIsImNvdW50cnlfY29kZSIsImFkZHJlc3NfbGluZV8xIiwiYWRkcmVzc19saW5lXzIiLCJhZG1pbl9hcmVhXzEiLCJhZG1pbl9hcmVhXzIiLCJwb3N0YWxfY29kZSIsIlBheW1lbnRNZXRob2RzIiwiUEFZUEFMIiwiQ0FSRFMiLCJPWFhPIiwiQ0FSRF9CVVRUT04iLCJPUkRFUl9CVVRUT05fU0VMRUNUT1IiLCJnZXRDdXJyZW50UGF5bWVudE1ldGhvZCIsImVsIiwiaXNTYXZlZENhcmRTZWxlY3RlZCIsInNhdmVkQ2FyZExpc3QiLCJDYXJ0QWN0aW9uSGFuZGxlciIsImNvbmZpZ3VyYXRpb24iLCJjcmVhdGVPcmRlciIsImJuQ29kZSIsImJuX2NvZGVzIiwiY3JlYXRlX29yZGVyIiwicHVyY2hhc2VfdW5pdHMiLCJwYXltZW50X21ldGhvZCIsImJuX2NvZGUiLCJjb25zb2xlIiwiZXJyb3IiLCJpZCIsIm9uRXJyb3IiLCJNaW5pQ2FydEJvb3RzdGFwIiwiZ2F0ZXdheSIsInJlbmRlcmVyIiwiYWN0aW9uSGFuZGxlciIsImluaXQiLCJsYWJlbHMiLCJnZW5lcmljIiwicmVuZGVyIiwib24iLCJzaG91bGRSZW5kZXIiLCJidXR0b24iLCJtaW5pX2NhcnRfd3JhcHBlciIsImhvc3RlZF9maWVsZHMiLCJzdHlsZSIsIm1pbmlfY2FydF9zdHlsZSIsIlByb2R1Y3QiLCJVcGRhdGVDYXJ0IiwidXBkYXRlIiwib25SZXNvbHZlIiwicHJvZHVjdHMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlc3VsdCIsInJlc29sdmVkIiwiQnV0dG9uc1RvZ2dsZUxpc3RlbmVyIiwiZWxlbWVudCIsInNob3dDYWxsYmFjayIsImhpZGVDYWxsYmFjayIsIm9ic2VydmVyIiwiYXR0cmlidXRlcyIsImNhbGxiYWNrIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJkaXNjb25uZWN0IiwicXVhbnRpdHkiLCJ2YXJpYXRpb25zIiwiU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXIiLCJ1cGRhdGVDYXJ0Iiwic2hvd0J1dHRvbkNhbGxiYWNrIiwiaGlkZUJ1dHRvbkNhbGxiYWNrIiwiZm9ybUVsZW1lbnQiLCJoYXNWYXJpYXRpb25zIiwiZ2V0UHJvZHVjdHMiLCJpc0dyb3VwZWRQcm9kdWN0IiwicXR5IiwicXVlcnlTZWxlY3RvckFsbCIsImVsZW1lbnROYW1lIiwiZ2V0QXR0cmlidXRlIiwibWF0Y2giLCJwYXJzZUludCIsInB1c2giLCJwcm9taXNlIiwibWFwIiwiU2luZ2xlUHJvZHVjdEJvb3RzdGFwIiwiaGFuZGxlQ2hhbmdlIiwiaGlkZUJ1dHRvbnMiLCJoaWRlTWVzc2FnZXMiLCJhZGRFdmVudExpc3RlbmVyIiwiYmluZCIsInByaWNlQW1vdW50SXNaZXJvIiwicHJpY2VBbW91bnQiLCJwcmljZVRleHQiLCJpbm5lclRleHQiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImNoYW5nZV9jYXJ0Iiwic2hvd0J1dHRvbnMiLCJyZW5kZXJXaXRoQW1vdW50IiwiQ2FydEJvb3RzdHJhcCIsInNwaW5uZXIiLCJibG9jayIsInVuYmxvY2siLCJjb2RlIiwiY2xpY2siLCJDaGVja291dEFjdGlvbkhhbmRsZXIiLCJmb3JtU2VsZWN0b3IiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZm9ybUpzb25PYmoiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImNyZWF0ZWFjY291bnQiLCJpcyIsInBheW1lbnRNZXRob2QiLCJmdW5kaW5nU291cmNlIiwiZm9ybSIsImRvbVBhcnNlciIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsImRldGFpbHMiLCJkIiwiaXNzdWUiLCJkZXNjcmlwdGlvbiIsImpvaW4iLCJpbnB1dCIsImN1c3RvbV9pZCIsImFwcGVuZCIsIm9uQ2FuY2VsIiwiZ2V0RWxlbWVudCIsInNlbGVjdG9yT3JFbGVtZW50IiwiaXNWaXNpYmxlIiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJnZXRDbGllbnRSZWN0cyIsInNldFZpc2libGUiLCJzaG93IiwiaW1wb3J0YW50IiwiY3VycmVudFZhbHVlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInNldFByb3BlcnR5IiwicmVtb3ZlUHJvcGVydHkiLCJoaWRlIiwiQ2hlY2tvdXRCb290c3RhcCIsInN0YW5kYXJkT3JkZXJCdXR0b25TZWxlY3RvciIsImJ1dHRvbkNoYW5nZU9ic2VydmVyIiwidXBkYXRlVWkiLCJ2YWwiLCJjYW5jZWxfd3JhcHBlciIsImN1cnJlbnRQYXltZW50TWV0aG9kIiwiaXNQYXlwYWwiLCJpc0NhcmQiLCJpc1NlcGFyYXRlQnV0dG9uR2F0ZXdheSIsImluY2x1ZGVzIiwiaXNTYXZlZENhcmQiLCJpc05vdE91ckdhdGV3YXkiLCJpc0ZyZWVUcmlhbCIsImlzX2ZyZWVfdHJpYWxfY2FydCIsImhhc1ZhdWx0ZWRQYXlwYWwiLCJ2YXVsdGVkX3BheXBhbF9lbWFpbCIsInBheXBhbEJ1dHRvbldyYXBwZXJzIiwiZW50cmllcyIsInNlcGFyYXRlX2J1dHRvbnMiLCJyZWR1Y2UiLCJrIiwiZ2F0ZXdheUlkIiwiZGlzYWJsZUNyZWRpdENhcmRGaWVsZHMiLCJlbmFibGVDcmVkaXRDYXJkRmllbGRzIiwiYWRkQ2xhc3MiLCJhdHRyIiwicmVtb3ZlQ2xhc3MiLCJpc0NoYW5nZVBheW1lbnRQYWdlIiwidXJsUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiaGFzIiwiUGF5Tm93Qm9vdHN0cmFwIiwibWVyZ2UiLCJSZW5kZXJlciIsImNyZWRpdENhcmRSZW5kZXJlciIsImRlZmF1bHRTZXR0aW5ncyIsIm9uU21hcnRCdXR0b25DbGljayIsIm9uU21hcnRCdXR0b25zSW5pdCIsInJlbmRlcmVkU291cmNlcyIsIlNldCIsImNvbnRleHRDb25maWciLCJzZXR0aW5nc092ZXJyaWRlIiwic2V0dGluZ3MiLCJlbmFibGVkU2VwYXJhdGVHYXRld2F5cyIsImZpbHRlciIsInMiLCJoYXNFbmFibGVkU2VwYXJhdGVHYXRld2F5cyIsImtleXMiLCJyZW5kZXJCdXR0b25zIiwicGF5cGFsIiwiZ2V0RnVuZGluZ1NvdXJjZXMiLCJzaGFwZSIsImlzQWxyZWFkeVJlbmRlcmVkIiwiQnV0dG9ucyIsImJ0biIsIm9uQ2xpY2siLCJvbkluaXQiLCJpc0VsaWdpYmxlIiwiaGFzQ2hpbGROb2RlcyIsImRvbUVsZW1lbnQiLCJkaXNwbGF5IiwiZGlzYWJsZUZpZWxkcyIsImVuYWJsZUZpZWxkcyIsImRjY0lucHV0RmFjdG9yeSIsIm9yaWdpbmFsIiwic3R5bGVzIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm5ld0VsZW1lbnQiLCJjbGFzc05hbWUiLCJ2YWx1ZXMiLCJwcm9wIiwiaXNOYU4iLCJDcmVkaXRDYXJkUmVuZGVyZXIiLCJkZWZhdWx0Q29uZmlnIiwiY2FyZFZhbGlkIiwiZm9ybVZhbGlkIiwiY3VycmVudEhvc3RlZEZpZWxkc0luc3RhbmNlIiwiSG9zdGVkRmllbGRzIiwid3JhcHBlckVsZW1lbnQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJidXR0b25TZWxlY3RvciIsInRlYXJkb3duIiwiZ2F0ZVdheUJveCIsIm9sZERpc3BsYXlTdHlsZSIsImhpZGVEY2NHYXRld2F5IiwiY2FyZE51bWJlckZpZWxkIiwic3R5bGVzUmF3IiwiY2FyZE51bWJlciIsInJlcGxhY2VDaGlsZCIsImNhcmRFeHBpcnlGaWVsZCIsImNhcmRFeHBpcnkiLCJjYXJkQ29kZUZpZWxkIiwiY2FyZENvZGUiLCJmb3JtV3JhcHBlciIsImVuZm9yY2VfdmF1bHQiLCJjaGVja2VkIiwiZmllbGRzIiwibnVtYmVyIiwic2VsZWN0b3IiLCJwbGFjZWhvbGRlciIsImNyZWRpdF9jYXJkX251bWJlciIsImN2diIsImV4cGlyYXRpb25EYXRlIiwibW1feXkiLCJob3N0ZWRGaWVsZHMiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJfc3VibWl0IiwiZXZlbnQiLCJjYXJkcyIsInZhbGlkQ2FyZHMiLCJ2YWxpZF9jYXJkcyIsImluZGV4T2YiLCJ0eXBlIiwiX2NhcmROdW1iZXJGaWxlZENMYXNzTmFtZUJ5Q2FyZFR5cGUiLCJfcmVjcmVhdGVFbGVtZW50Q2xhc3NBdHRyaWJ1dGUiLCJpc1ZhbGlkIiwiZXZlcnkiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsImZpZWxkIiwiYXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwic2F2ZV9jYXJkIiwiY2FuX3NhdmVfdmF1bHRfdG9rZW4iLCJ2YXVsdCIsImdldEVsZW1lbnRCeUlkIiwiY29udGluZ2VuY3kiLCJob3N0ZWRGaWVsZHNEYXRhIiwiY29udGluZ2VuY2llcyIsImNhcmRob2xkZXJOYW1lIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJzdWJtaXQiLCJwYXlsb2FkIiwib3JkZXJJZCIsImNhcmRfbm90X3N1cHBvcnRlZCIsImZpZWxkc19ub3RfdmFsaWQiLCJjYXJkVHlwZSIsIm5ld0NsYXNzTmFtZSIsInN0b3JhZ2VLZXkiLCJ2YWxpZGF0ZVRva2VuIiwidG9rZW4iLCJ1c2VyIiwiY3VycmVudFRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsImlzRXhwaXJlZCIsImV4cGlyYXRpb24iLCJzdG9yZWRUb2tlbkZvclVzZXIiLCJwYXJzZSIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlVG9rZW4iLCJzZXRJdGVtIiwiZGF0YUNsaWVudElkQXR0cmlidXRlSGFuZGxlciIsInNjcmlwdCIsIk1lc3NhZ2VSZW5kZXJlciIsIk1lc3NhZ2VzIiwiYW1vdW50IiwicGxhY2VtZW50IiwibmV3V3JhcHBlciIsInNpYmxpbmciLCJuZXh0U2libGluZyIsInBhcmVudEVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJTcGlubmVyIiwidGFyZ2V0Iiwic2V0VGFyZ2V0Iiwib3ZlcmxheUNTUyIsImJhY2tncm91bmQiLCJvcGFjaXR5IiwiRnJlZVRyaWFsSGFuZGxlciIsImhhbmRsZSIsInZhdWx0X3BheXBhbCIsInJldHVybl91cmwiLCJhcHByb3ZlX2xpbmsiLCJidXR0b25zU3Bpbm5lciIsImNhcmRzU3Bpbm5lciIsImJvb3RzdHJhcCIsImZyZWVUcmlhbEhhbmRsZXIiLCJiYXNpY19jaGVja291dF92YWxpZGF0aW9uX2VuYWJsZWQiLCJyZXF1aXJlZEZpZWxkcyIsImVhY2giLCJpIiwidHJpZ2dlciIsImludmFsaWRGaWVsZHMiLCJBcnJheSIsImZyb20iLCJiaWxsaW5nRmllbGRzQ29udGFpbmVyIiwic2hpcHBpbmdGaWVsZHNDb250YWluZXIiLCJuYW1lTWVzc2FnZU1hcCIsInJlcXVpcmVkIiwiZWxlbWVudHMiLCJsYWJlbCIsInRleHRDb250ZW50IiwicmVwbGFjZUFsbCIsInRyaW0iLCJiaWxsaW5nX2ZpZWxkIiwic2hpcHBpbmdfZmllbGQiLCJpbnNlcnRBZGphY2VudEhUTUwiLCJtZXNzYWdlUmVuZGVyZXIiLCJtaW5pX2NhcnRfYnV0dG9uc19lbmFibGVkIiwibWluaUNhcnRCb290c3RyYXAiLCJzaW5nbGVfcHJvZHVjdF9idXR0b25zX2VuYWJsZWQiLCJzaW5nbGVQcm9kdWN0Qm9vdHN0cmFwIiwiY2FydEJvb3RzdHJhcCIsImNoZWNrb3V0Qm9vdHN0YXAiLCJwYXlOb3dCb290c3RyYXAiLCJkYXRhX2NsaWVudF9pZCIsImhhc19zdWJzY3JpcHRpb25zIiwicGF5cGFsQnV0dG9uR2F0ZXdheUlkcyIsImhpZGVPcmRlckJ1dHRvbklmUHBjcEdhdGV3YXkiLCJpc1BheXBhbEJ1dHRvbiIsImlzQ2FyZHMiLCJib290c3RyYXBwZWQiLCJ1cmwiLCJzY3JpcHRfYXR0cmlidXRlcyIsImtleVZhbHVlIiwic2V0X2F0dHJpYnV0ZSJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///536
                                    

#2 JavaScript::Eval (size: 10908, repeated: 1) - SHA256: 006fb5a66fcef7eb809ef663488a76fafc9a5922b9276fa7b556cef82beef69f

                                        var isMergeableObject = function isMergeableObject(value) {
    return isNonNullObject(value) && !isSpecial(value)
};

function isNonNullObject(value) {
    return !!value && typeof value === 'object'
}

function isSpecial(value) {
    var stringValue = Object.prototype.toString.call(value);

    return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value)
}

// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;

function isReactElement(value) {
    return value.$$typeof === REACT_ELEMENT_TYPE
}

function emptyTarget(val) {
    return Array.isArray(val) ? [] : {}
}

function cloneUnlessOtherwiseSpecified(value, options) {
    return (options.clone !== false && options.isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, options) : value
}

function defaultArrayMerge(target, source, options) {
    return target.concat(source).map(function(element) {
        return cloneUnlessOtherwiseSpecified(element, options)
    })
}

function getMergeFunction(key, options) {
    if (!options.customMerge) {
        return deepmerge
    }
    var customMerge = options.customMerge(key);
    return typeof customMerge === 'function' ? customMerge : deepmerge
}

function getEnumerableOwnPropertySymbols(target) {
    return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
        return target.propertyIsEnumerable(symbol)
    }) : []
}

function getKeys(target) {
    return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
}

function propertyIsOnObject(object, property) {
    try {
        return property in object
    } catch (_) {
        return false
    }
}

// Protects from prototype poisoning and unexpected merging up the prototype chain.
function propertyIsUnsafe(target, key) {
    return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,
        && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,
            && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.
}

function mergeObject(target, source, options) {
    var destination = {};
    if (options.isMergeableObject(target)) {
        getKeys(target).forEach(function(key) {
            destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
        });
    }
    getKeys(source).forEach(function(key) {
        if (propertyIsUnsafe(target, key)) {
            return
        }

        if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
            destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
        } else {
            destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
        }
    });
    return destination
}

function deepmerge(target, source, options) {
    options = options || {};
    options.arrayMerge = options.arrayMerge || defaultArrayMerge;
    options.isMergeableObject = options.isMergeableObject || isMergeableObject;
    // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()
    // implementations can use it. The caller may not replace it.
    options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;

    var sourceIsArray = Array.isArray(source);
    var targetIsArray = Array.isArray(target);
    var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;

    if (!sourceAndTargetTypesMatch) {
        return cloneUnlessOtherwiseSpecified(source, options)
    } else if (sourceIsArray) {
        return options.arrayMerge(target, source, options)
    } else {
        return mergeObject(target, source, options)
    }
}

deepmerge.all = function deepmergeAll(array, options) {
    if (!Array.isArray(array)) {
        throw new Error('first argument should be an array')
    }

    return array.reduce(function(prev, next) {
        return deepmerge(prev, next, options)
    }, {})
};

var deepmerge_1 = deepmerge;

module.exports = deepmerge_1;
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTk2LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUUsSUFBSTtBQUNOOztBQUVBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL25vZGVfbW9kdWxlcy9kZWVwbWVyZ2UvZGlzdC9janMuanM/M2M0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBpc01lcmdlYWJsZU9iamVjdCA9IGZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiBpc05vbk51bGxPYmplY3QodmFsdWUpXG5cdFx0JiYgIWlzU3BlY2lhbCh2YWx1ZSlcbn07XG5cbmZ1bmN0aW9uIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkge1xuXHRyZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzU3BlY2lhbCh2YWx1ZSkge1xuXHR2YXIgc3RyaW5nVmFsdWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuXG5cdHJldHVybiBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcblx0XHR8fCBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgRGF0ZV0nXG5cdFx0fHwgaXNSZWFjdEVsZW1lbnQodmFsdWUpXG59XG5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9iNWFjOTYzZmI3OTFkMTI5OGU3ZjM5NjIzNjM4M2JjOTU1ZjkxNmMxL3NyYy9pc29tb3JwaGljL2NsYXNzaWMvZWxlbWVudC9SZWFjdEVsZW1lbnQuanMjTDIxLUwyNVxudmFyIGNhblVzZVN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBjYW5Vc2VTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgOiAweGVhYzc7XG5cbmZ1bmN0aW9uIGlzUmVhY3RFbGVtZW50KHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG59XG5cbmZ1bmN0aW9uIGVtcHR5VGFyZ2V0KHZhbCkge1xuXHRyZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpID8gW10gOiB7fVxufVxuXG5mdW5jdGlvbiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCh2YWx1ZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gKG9wdGlvbnMuY2xvbmUgIT09IGZhbHNlICYmIG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodmFsdWUpKVxuXHRcdD8gZGVlcG1lcmdlKGVtcHR5VGFyZ2V0KHZhbHVlKSwgdmFsdWUsIG9wdGlvbnMpXG5cdFx0OiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0QXJyYXlNZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gdGFyZ2V0LmNvbmNhdChzb3VyY2UpLm1hcChmdW5jdGlvbihlbGVtZW50KSB7XG5cdFx0cmV0dXJuIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKGVsZW1lbnQsIG9wdGlvbnMpXG5cdH0pXG59XG5cbmZ1bmN0aW9uIGdldE1lcmdlRnVuY3Rpb24oa2V5LCBvcHRpb25zKSB7XG5cdGlmICghb3B0aW9ucy5jdXN0b21NZXJnZSkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2Vcblx0fVxuXHR2YXIgY3VzdG9tTWVyZ2UgPSBvcHRpb25zLmN1c3RvbU1lcmdlKGtleSk7XG5cdHJldHVybiB0eXBlb2YgY3VzdG9tTWVyZ2UgPT09ICdmdW5jdGlvbicgPyBjdXN0b21NZXJnZSA6IGRlZXBtZXJnZVxufVxuXG5mdW5jdGlvbiBnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc1xuXHRcdD8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpLmZpbHRlcihmdW5jdGlvbihzeW1ib2wpIHtcblx0XHRcdHJldHVybiB0YXJnZXQucHJvcGVydHlJc0VudW1lcmFibGUoc3ltYm9sKVxuXHRcdH0pXG5cdFx0OiBbXVxufVxuXG5mdW5jdGlvbiBnZXRLZXlzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXModGFyZ2V0KS5jb25jYXQoZ2V0RW51bWVyYWJsZU93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKVxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUlzT25PYmplY3Qob2JqZWN0LCBwcm9wZXJ0eSkge1xuXHR0cnkge1xuXHRcdHJldHVybiBwcm9wZXJ0eSBpbiBvYmplY3Rcblx0fSBjYXRjaChfKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cbn1cblxuLy8gUHJvdGVjdHMgZnJvbSBwcm90b3R5cGUgcG9pc29uaW5nIGFuZCB1bmV4cGVjdGVkIG1lcmdpbmcgdXAgdGhlIHByb3RvdHlwZSBjaGFpbi5cbmZ1bmN0aW9uIHByb3BlcnR5SXNVbnNhZmUodGFyZ2V0LCBrZXkpIHtcblx0cmV0dXJuIHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgLy8gUHJvcGVydGllcyBhcmUgc2FmZSB0byBtZXJnZSBpZiB0aGV5IGRvbid0IGV4aXN0IGluIHRoZSB0YXJnZXQgeWV0LFxuXHRcdCYmICEoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBrZXkpIC8vIHVuc2FmZSBpZiB0aGV5IGV4aXN0IHVwIHRoZSBwcm90b3R5cGUgY2hhaW4sXG5cdFx0XHQmJiBPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXQsIGtleSkpIC8vIGFuZCBhbHNvIHVuc2FmZSBpZiB0aGV5J3JlIG5vbmVudW1lcmFibGUuXG59XG5cbmZ1bmN0aW9uIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHZhciBkZXN0aW5hdGlvbiA9IHt9O1xuXHRpZiAob3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh0YXJnZXQpKSB7XG5cdFx0Z2V0S2V5cyh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQodGFyZ2V0W2tleV0sIG9wdGlvbnMpO1xuXHRcdH0pO1xuXHR9XG5cdGdldEtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdGlmIChwcm9wZXJ0eUlzVW5zYWZlKHRhcmdldCwga2V5KSkge1xuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0aWYgKHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdChzb3VyY2Vba2V5XSkpIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBnZXRNZXJnZUZ1bmN0aW9uKGtleSwgb3B0aW9ucykodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gZGVzdGluYXRpb25cbn1cblxuZnVuY3Rpb24gZGVlcG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXHRvcHRpb25zLmFycmF5TWVyZ2UgPSBvcHRpb25zLmFycmF5TWVyZ2UgfHwgZGVmYXVsdEFycmF5TWVyZ2U7XG5cdG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QgPSBvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0IHx8IGlzTWVyZ2VhYmxlT2JqZWN0O1xuXHQvLyBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCBpcyBhZGRlZCB0byBgb3B0aW9uc2Agc28gdGhhdCBjdXN0b20gYXJyYXlNZXJnZSgpXG5cdC8vIGltcGxlbWVudGF0aW9ucyBjYW4gdXNlIGl0LiBUaGUgY2FsbGVyIG1heSBub3QgcmVwbGFjZSBpdC5cblx0b3B0aW9ucy5jbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkO1xuXG5cdHZhciBzb3VyY2VJc0FycmF5ID0gQXJyYXkuaXNBcnJheShzb3VyY2UpO1xuXHR2YXIgdGFyZ2V0SXNBcnJheSA9IEFycmF5LmlzQXJyYXkodGFyZ2V0KTtcblx0dmFyIHNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2ggPSBzb3VyY2VJc0FycmF5ID09PSB0YXJnZXRJc0FycmF5O1xuXG5cdGlmICghc291cmNlQW5kVGFyZ2V0VHlwZXNNYXRjaCkge1xuXHRcdHJldHVybiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSBpZiAoc291cmNlSXNBcnJheSkge1xuXHRcdHJldHVybiBvcHRpb25zLmFycmF5TWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9XG59XG5cbmRlZXBtZXJnZS5hbGwgPSBmdW5jdGlvbiBkZWVwbWVyZ2VBbGwoYXJyYXksIG9wdGlvbnMpIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5Jylcblx0fVxuXG5cdHJldHVybiBhcnJheS5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgbmV4dCkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2UocHJldiwgbmV4dCwgb3B0aW9ucylcblx0fSwge30pXG59O1xuXG52YXIgZGVlcG1lcmdlXzEgPSBkZWVwbWVyZ2U7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVlcG1lcmdlXzE7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///996
                                    

#3 JavaScript::Eval (size: 14, repeated: 1) - SHA256: febdfe048180e3d111406700b501f8b465a7dfcbc8b79f70ad0d64f1224dff36

                                        _mlctemp_ = null
                                    

#4 JavaScript::Eval (size: 24, repeated: 1) - SHA256: 74867c5a2cf408b090752d3cb8767bb46fdb4a0529bc959d96f51aeb2607d7e3

                                        require('buffer').Buffer
                                    

Executed Writes (5)

#1 JavaScript::Write (size: 232, repeated: 1) - SHA256: 6b25b5e46fefb71d9f4179d719fde48f6d5b4071c569b0b44e44bc84ec5d986a

                                        < iframe src = "//www.redditstatic.com/button/button1.html?url=http%3A%2F%2Fpleasuretroveboutique.com%2Finteractive-webcam-livecam-model-video-sex-chat-room-kaileeshy%2F"
height = "22"
width = "120"
scrolling = 'no'
frameborder = '0' > < /iframe>
                                    

#2 JavaScript::Write (size: 530, repeated: 1) - SHA256: 00211f4c96996ebfb1983d8c067b8f2f5e4af97861fe637c4ae92689ec0aa12e

                                        < iframe src = "http://syndication.realsrv.com/ads-iframe-display.php?idzone=4260988&amp;type=160x600&amp;p=http%3A//pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/&amp;dt=1664749044863&amp;sub=&amp;tags=&amp;cookieconsent=true&amp;screen_resolution=1280x1024&amp;el=&quot; "
sandbox = "allow-forms allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
scrolling = "no"
marginwidth = "0"
marginheight = "0"
width = "160"
height = "600"
frameborder = "0" > < /iframe>
                                    

#3 JavaScript::Write (size: 530, repeated: 1) - SHA256: d6e1d98c8acb24bb5e32f38a8875f5381bb9c86c01b4f3f6bd122930fb707ade

                                        < iframe src = "http://syndication.realsrv.com/ads-iframe-display.php?idzone=4260988&amp;type=160x600&amp;p=http%3A//pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/&amp;dt=1664749044951&amp;sub=&amp;tags=&amp;cookieconsent=true&amp;screen_resolution=1280x1024&amp;el=&quot; "
sandbox = "allow-forms allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
scrolling = "no"
marginwidth = "0"
marginheight = "0"
width = "160"
height = "600"
frameborder = "0" > < /iframe>
                                    

#4 JavaScript::Write (size: 83, repeated: 1) - SHA256: cea1d5d23a85a269541c220e44799f4f1f2956afc7f2fafd3c78a68363284e78

                                        < script src = '//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js' > < /script>
                                    

#5 JavaScript::Write (size: 374, repeated: 1) - SHA256: bff5c19774db207e9fde4ae90442e5f786e5724926c8062b05f57ad6618392dc

                                        < !DOCTYPE html > < html > < head > < meta charset = "utf-8" > < link type = "text/css"
rel = "stylesheet"
href = "https://www.xing-share.com/plugins/css/spi-button.css" > < /head><body><div class="spi-wrapper"><div id="xing-share" class="spi-button spi-button-rectangle spi-button-green" title="Share on XING: You'll be able to see a preview before sharing."><i></i > Share < /div></div > < /body></html >
                                    


HTTP Transactions (266)


Request Response
                                        
                                            GET /v1/ HTTP/1.1 
Host: firefox.settings.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         13.224.222.54
HTTP/1.1 200 OK
Content-Type: application/json
                                        
Content-Length: 939
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Type, Alert, Backoff, Retry-After, Content-Length
Cache-Control: max-age=3600
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none';
Date: Sun, 02 Oct 2022 22:03:21 GMT
X-Content-Type-Options: nosniff
X-Cache: Hit from cloudfront
Via: 1.1 f79355bad214d64e02ae8e84a86f4932.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: LHR61-C2
X-Amz-Cf-Id: YOhEngqj2-XS8Y5mEBLWIIu7nKaXz70ERzzbS3yiO9IOCVrNtios9A==
Age: 842


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (939), with no line terminators
Size:   939
Md5:    2d12f67fe57a87e7366b662d153a5582
Sha1:   d7b02d81cc74f24a251d9363e0f4b0a149264ec1
Sha256: 73c273c0b5a2de3cb970b8e8c187999d3b55e760dc7766dab4bb76428d19b551
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "1F611155394FAC39439B8EC8217D8CD493D6B588D372D264E0D66C03129C50C6"
Last-Modified: Sun, 02 Oct 2022 21:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=17159
Expires: Mon, 03 Oct 2022 03:03:22 GMT
Date: Sun, 02 Oct 2022 22:17:23 GMT
Connection: keep-alive

                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "69D097718CAC37CC6B77D417711C4356557F2B47C78026303BFE5F985B94A5A5"
Last-Modified: Sat, 01 Oct 2022 12:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=16104
Expires: Mon, 03 Oct 2022 02:45:47 GMT
Date: Sun, 02 Oct 2022 22:17:23 GMT
Connection: keep-alive

                                        
                                            GET /chains/remote-settings.content-signature.mozilla.org-2022-10-30-18-47-44.chain HTTP/1.1 
Host: content-signature-2.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         34.160.144.191
HTTP/2 200 OK
content-type: binary/octet-stream
                                        
x-amz-id-2: Pgz2ctw0KVHC9q3IxUo6JaX+zXqE2u/WiBPDuzzOKMjGgB4a/wsq8j6VcWqY82FiiwtRvYgLb/JzaRAGBrO98g==
x-amz-request-id: AMT7HGKWBENBV2T2
content-disposition: attachment
accept-ranges: bytes
server: AmazonS3
content-length: 5348
via: 1.1 google
date: Sun, 02 Oct 2022 21:50:09 GMT
age: 1634
last-modified: Sat, 10 Sep 2022 18:47:45 GMT
etag: "6113f8408c59aebe188d6af273b90743"
cache-control: public,max-age=3600
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PEM certificate\012- , ASCII text
Size:   5348
Md5:    6113f8408c59aebe188d6af273b90743
Sha1:   7398873bf00f99944eaa77ad3ebc0d43c23dba6b
Sha256: b6e0cc9ad68306208a160f3835fb8da76acc5a82d8fde1da5a98e1de1c11a770
                                        
                                            GET /v1/tiles HTTP/1.1 
Host: contile.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.117.237.239
HTTP/2 200 OK
content-type: application/json
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:23 GMT
content-length: 12
strict-transport-security: max-age=31536000
via: 1.1 google
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with no line terminators
Size:   12
Md5:    23e88fb7b99543fb33315b29b1fad9d6
Sha1:   a48926c4ec03c7c8a4e8dffcd31e5a6cdda417ce
Sha256: 7d8f1de8b7de7bc21dfb546a1d0c51bf31f16eee5fad49dbceae1e76da38e5c3
                                        
                                            GET /v1/buckets/main/collections/ms-language-packs/records/cfr-v1-en-US HTTP/1.1 
Host: firefox.settings.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         13.224.222.54
HTTP/1.1 200 OK
Content-Type: application/json
                                        
Content-Length: 329
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Alert, Content-Type, Expires, Backoff, ETag, Last-Modified, Pragma, Cache-Control, Content-Length, Retry-After
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none';
Last-Modified: Fri, 25 Mar 2022 17:45:46 GMT
X-Content-Type-Options: nosniff
Date: Sun, 02 Oct 2022 21:32:53 GMT
Cache-Control: max-age=3600, max-age=3600
Expires: Sun, 02 Oct 2022 21:45:39 GMT
ETag: "1648230346554"
X-Cache: Hit from cloudfront
Via: 1.1 9c078cf62ea8987c07cb33f6c4e5cb5e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: LHR61-C2
X-Amz-Cf-Id: Fmu_dXRWg_g-95OUBVDCIcaH5SVkb7UsH_fLR4mgNi1oTZj4EvQ3gg==
Age: 2670


--- Additional Info ---
Magic:  JSON data\012- , ASCII text, with very long lines (329), with no line terminators
Size:   329
Md5:    0333b0655111aa68de771adfcc4db243
Sha1:   63f295a144ac87a7c8e23417626724eeca68a7eb
Sha256: 60636eb1dc67c9ed000fe0b49f03777ad6f549cb1d2b9ff010cf198465ae6300
                                        
                                            POST / HTTP/1.1 
Host: ocsp.digicert.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         93.184.220.29
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Accept-Ranges: bytes
Age: 4241
Cache-Control: 'max-age=158059'
Date: Sun, 02 Oct 2022 22:17:23 GMT
Last-Modified: Sun, 02 Oct 2022 21:06:42 GMT
Server: ECS (ska/F713)
X-Cache: HIT
Content-Length: 471

                                        
                                            GET /interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/ HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
Date: Sun, 02 Oct 2022 22:17:22 GMT
Server: Apache
Link: <https://pleasuretroveboutique.com/wp-json/>; rel="https://api.w.org/", <https://pleasuretroveboutique.com/wp-json/wp/v2/posts/5921>; rel="alternate"; type="application/json", <https://pleasuretroveboutique.com/?p=5921>; rel=shortlink
Expires: Sun, 02 Oct 2022 22:17:53 GMT
Pragma: public
Cache-Control: max-age=30, public, must-revalidate, proxy-revalidate
X-Powered-By: W3 Total Cache/0.9.4.6.4
X-Pingback: http://pleasuretroveboutique.com/xmlrpc.php
Set-Cookie: aiovg_rand_seed=158777655; expires=Mon, 03-Oct-2022 22:17:22 GMT; Max-Age=86400; path=/
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 02 Oct 2022 22:17:23 GMT
Etag: c499254ef7e6a0f4fea057d30dec0ed0
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 35917
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- exported SGML document, ASCII text, with very long lines (8047)
Size:   35917
Md5:    c806a32a3a64f7add966f6dfd1c2c84a
Sha1:   7abaf6055132ec9f1891ed11d10db927dc1565f2
Sha256: 5a13edd1c00d6dde434196ecd4b733475cf9100ff29766c1d6b43bbafa2fa54c
                                        
                                            GET / HTTP/1.1 
Host: push.services.mozilla.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-WebSocket-Version: 13
Origin: wss://push.services.mozilla.com/
Sec-WebSocket-Protocol: push-notification
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: mQph+4+99rDKva8Jl6dO6Q==
Connection: keep-alive, Upgrade
Sec-Fetch-Dest: websocket
Sec-Fetch-Mode: websocket
Sec-Fetch-Site: cross-site
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

                                         
                                         34.215.56.181
HTTP/1.1 101 Switching Protocols
                                        
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: PpCXEWskOx80lD2ahPvnh0kn32E=

                                        
                                            GET /wp-content/plugins/yith-woocommerce-wishlist/assets/css/jquery.selectBox.css?ver=1.2.0&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 21 Sep 2022 06:33:54 GMT
ETag: "a46-5e92a20f5f1e7-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 812
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (2630), with no line terminators
Size:   812
Md5:    8f448bc82d2befe019a7eb0123942876
Sha1:   f6a903712c57073e24a1ac79dca2cfc0f9001e6b
Sha256: 30f719833e77320f98fe6a7d115a710b381f8653a9ed69bcbdea7b198da2022e
                                        
                                            GET /wp-content/themes/new-york-business/js/scrollTop.js?ver=2.1.2&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 13 Feb 2022 21:19:47 GMT
ETag: "3eb-5d7ecdc0b5b18-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 339
Keep-Alive: timeout=3, max=499
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   339
Md5:    7baed2e1d7e3484abc97d7341181afe4
Sha1:   3a5c9df18e00297274e7e32eda184a041eb14a6b
Sha256: 6dbb589961a91595b98ff9a5ab95570733a80418eed44cbcb7a8b444405b9304
                                        
                                            GET /static/button/button1.js?6bfec1&6bfec1 HTTP/1.1 
Host: www.reddit.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/

                                         
                                         151.101.85.140
HTTP/1.1 301 Moved Permanently
                                        
Connection: close
Content-Length: 0
Retry-After: 0
Location: https://www.reddit.com/static/button/button1.js?6bfec1&6bfec1
Accept-Ranges: bytes
Date: Sun, 02 Oct 2022 22:17:24 GMT
Via: 1.1 varnish
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Cache-Control: private, max-age=3600
Server: snooserv
Report-To: {"group": "w3-reporting-nel", "max_age": 14400, "include_subdomains": true, "endpoints": [{ "url": "https://w3-reporting-nel.reddit.com/reports" }]}, {"group": "w3-reporting", "max_age": 14400, "include_subdomains": true, "endpoints": [{ "url": "https://w3-reporting.reddit.com/reports" }]}
NEL: {"report_to": "w3-reporting-nel", "max_age": 14400, "include_subdomains": false, "success_fraction": 0.2, "failure_fraction": 0.2}

                                        
                                            GET /in.js?6bfec1&6bfec1 HTTP/1.1 
Host: platform.linkedin.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/

                                         
                                         23.36.76.210
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
Server: Play
Expires: Sun, 2 Oct 2022 23:10:47 GMT
Cache-Control: public, max-age=3600
Content-Encoding: gzip
Content-Length: 163350
X-Li-Fabric: prod-ltx1
Report-To: {"group":"network-errors","max_age":2592000,"endpoints":[{"url":"https://www.linkedin.com/li/rep"}],"include_subdomains":true}
NEL: {"report_to":"network-errors","max_age":1296000,"success_fraction":0.00066,"failure_fraction":1,"include_subdomains":true}
X-Li-Pop: prod-ltx1-x
X-LI-Proto: http/1.1
X-LI-UUID: AAXqFH/Mx90J9hXAxJcaRA==
X-EdgeConnect-MidMile-RTT: 0, 16
X-EdgeConnect-Origin-MEX-Latency: 290, 290
Date: Sun, 02 Oct 2022 22:17:24 GMT
Connection: keep-alive
Vary: Accept-Encoding
X-CDN-CLIENT-IP-VERSION: IPV4
X-CDN: AKAM


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (41593)
Size:   163350
Md5:    8dc002ad31a5f9cbb883f640250e58fc
Sha1:   f4f4e8fec04e31d0927df4592aedece22693b685
Sha256: 9b898320b3cb04a63b6738e89f7deaeedd6c451c1dadd72dc3eb3cecc4d5a2f9
                                        
                                            GET /ads.js HTTP/1.1 
Host: a.realsrv.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         205.185.216.10
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 974
Accept-Ranges: bytes
Cache-Control: max-age=10800
Server: nginx
etag: W/"f4fddb85b686269b678e3caf766"
X-HW: 1664749044.dop203.sk1.t,1664749044.cds013.sk1.shn,1664749044.cds013.sk1.c
Access-Control-Allow-Origin: *, *


--- Additional Info ---
Magic:  ASCII text, with very long lines (2475), with no line terminators
Size:   974
Md5:    f2e9f79e4bd643ca1264fca98531c71e
Sha1:   7acaa14a18676a38bdc3043d0e016e8cfacb275a
Sha256: db8cf84b422102aa8bc89c36a569921dc69ed556703a96ca44434d2fe98af57b
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /p/woocommerce/6.9.4/assets/js/jquery-blockui/jquery.blockUI.min.js HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: application/javascript
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Tue, 19 Jul 2022 19:16:40 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (9115)
Size:   4319
Md5:    2345240a78462dc93f1d879b84a71ec5
Sha1:   a0471172deed25a8790f43a02c5eab05ad8d1719
Sha256: 459bf5b8bf7eb1264df5aa7e6ab111af33db360ebb70c88b1aa9588da2892e70
                                        
                                            GET /wp-content/plugins/yith-woocommerce-wishlist/assets/css/style.css?ver=3.13.0&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 21 Sep 2022 06:33:54 GMT
ETag: "7299-5e92a20f5fd9f-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 4857
Keep-Alive: timeout=3, max=499
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (29337), with no line terminators
Size:   4857
Md5:    b829fc5810a6323bcc36dd9664ab2ab4
Sha1:   50b54c410238e258d56d50451ac5c7ad0adf267d
Sha256: 27ebd5dde3d0179ffcf8200f1daadad1d4d5d9fe65eb0c31479de42b9783b6b6
                                        
                                            GET /wp-content/plugins/wootweet/public/css/wootweet-public.css?ver=1.5&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Fri, 11 Dec 2020 03:04:41 GMT
ETag: "62-5b6278dc157da-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 106
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text
Size:   106
Md5:    8af7d01cc8f7698605260aa25a37f45e
Sha1:   854439cb106afae13bace1acbdfd03e0ec2daee4
Sha256: 8b46abceed3ee90f0e9053977b5dcb569c09784270d0e5fff5aebf80256501e0
                                        
                                            GET /wp-content/plugins/woocommerce/assets/css/prettyPhoto.css?ver=3.1.6&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Tue, 27 Sep 2022 19:43:09 GMT
ETag: "2441-5e9adda922107-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 2034
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (9281), with no line terminators
Size:   2034
Md5:    df5420954321c8c99604b6dd995dedc0
Sha1:   75c028ff14483537c1fb68bc9406f46e4e426aac
Sha256: 981c5e5362aaf7b6c7503521941256ffdbe54793f6fe39ee0a9e6fb430956772
                                        
                                            GET /wp-content/themes/new-york-business/css/bootstrap.css?ver=3.3.6&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 13 Feb 2022 21:19:47 GMT
ETag: "86fd-5d7ecdc0b37f0-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 5727
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   5727
Md5:    6b8d67446028dc62caea275793fb37d8
Sha1:   9d4abdcdbf23a801ac23db9283a424d5509ce629
Sha256: 3d318489128228c5b7657350b9f008b96183c9f842ab1aefb987e6a0e45ae57d
                                        
                                            GET /wp-content/themes/new-york-business/fonts/font-awesome/css/font-awesome.css?ver=4.7&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 13 Feb 2022 21:19:47 GMT
ETag: "9226-5d7ecdc0b3020-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 7439
Keep-Alive: timeout=3, max=498
Connection: Keep-Alive


--- Additional Info ---
Magic:  troff or preprocessor input, ASCII text, with very long lines (372)
Size:   7439
Md5:    57a8ee32de25312ab303210ef3c556a9
Sha1:   388f783ee7c84801442370bf8d3812213a1198f5
Sha256: 8bdd62fda01c7b19a4d2ee31cfb4d2fc6123a958cb23bf902c9fead7fc6a9c0d
                                        
                                            GET /pn.php HTTP/1.1 
Host: js.wpnsrv.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         205.185.216.42
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 6204
Accept-Ranges: bytes
Cache-Control: max-age=10800
Server: nginx
etag: W/"c90a53df18c68c7ac69adeb47e8"
X-HW: 1664749044.dop208.sk1.t,1664749044.cds067.sk1.shn,1664749044.dop208.sk1.t,1664749044.cds241.sk1.c
Access-Control-Allow-Origin: *, *


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (17598), with no line terminators
Size:   6204
Md5:    3ec76fb4b763955f2f4be57021a89b4f
Sha1:   7a7eb48dc8bbb73f49c6c5011806101b380579a0
Sha256: e455773a91936c15eb0266bf2798fd3fe4a40c02b890b92095095b34418871cb
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /d/?resource=pubJS HTTP/1.1 
Host: d.smopy.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/

                                         
                                         23.235.244.225
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
                                        
Server: nginx
Date: Sun, 02 Oct 2022 22:17:24 GMT
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: Express
ETag: W/"8db5-OObUevVPGSkb3stn5jH4pa7nSA8"
Access-Control-Allow-Credentials: true
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with very long lines (10335)
Size:   12228
Md5:    562ab4d49290903025878d4d269a4c9b
Sha1:   3e66eacc46fc1c95db4637381c91f1eb83a9af8a
Sha256: d407fbd38249d36178809770289d17c9ba26eebe7b986b7fba859de425d4f373
                                        
                                            GET /p/woocommerce/6.9.4/assets/js/js-cookie/js.cookie.min.js HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: application/javascript
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Tue, 19 Jan 2021 23:55:30 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (1668)
Size:   1178
Md5:    0835f331618b89959a3bb78958f5e612
Sha1:   b8f5f0b6a2baf9544a515326413d0ae21249e444
Sha256: 81c0fa6206e60fa332e9cacbeb5bfcff5804f2cced2776fa5ca090dec74d4453
                                        
                                            GET /wp-content/plugins/sassy-social-share/public/css/sassy-social-share-public.css?ver=3.3.43&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 07 Sep 2022 16:50:42 GMT
ETag: "25e4-5e8191d0e7df6-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 2334
Keep-Alive: timeout=3, max=498
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (9700), with no line terminators
Size:   2334
Md5:    2fb8008b5c677c277c7a7a6b3db3ec3a
Sha1:   212d79c6ce1f87e9fa5cd436a5cb7b3f1b7f2aba
Sha256: 80a4a4e504cdfac6d14bd1077e74bda744ee96c916e639d1434dc537e16d0b12
                                        
                                            GET /wp-content/themes/new-york-business/style.css?ver=6.0.2&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 13 Feb 2022 21:19:47 GMT
ETag: "19b60-5d7ecdc0b5730-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 21101
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  assembler source, Unicode text, UTF-8 text, with very long lines (975), with CRLF line terminators
Size:   21101
Md5:    3ba676ec4bf125e9c4209ae180cd590e
Sha1:   36d9a191e253a61eea26e04ec6421d74a62c29f5
Sha256: dbce73274eb517f25547c886bdf99ba436616fe0d1033c3d51def047007fb155
                                        
                                            GET /wp-content/plugins/all-in-one-video-gallery/public/assets/css/public.css?ver=2.6.1&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 10 Aug 2022 20:40:08 GMT
ETag: "53ee-5e5e90dfac796-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 4046
Keep-Alive: timeout=3, max=499
Connection: Keep-Alive


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with CRLF line terminators
Size:   4046
Md5:    ef5258766a7468774d26699fa6897791
Sha1:   8fac62e5193d570578d78d51331b2643998eb09e
Sha256: 33dbd848fd7a596061d8c12ac1056e611c7c7cf090665db475a28270f78ecda0
                                        
                                            GET /wp-content/plugins/wootweet/public/js/wootweet-public.js?ver=1.5&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Fri, 11 Dec 2020 03:04:41 GMT
ETag: "346-5b6278dc157da-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 479
Keep-Alive: timeout=3, max=499
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text
Size:   479
Md5:    5850a4d6be478b5a5c29526a957840c4
Sha1:   1854bff2c967f028cf8c1f53b3c7878fb605e329
Sha256: 654a9a69300dd841ea2bc14d36c346377cee298b126463cc844fb26929260843
                                        
                                            GET /wp-content/plugins/yith-woocommerce-wishlist/assets/css/font-awesome.css?ver=4.7.0&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 21 Sep 2022 06:33:54 GMT
ETag: "778b-5e92a20f5f1e7-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 6968
Keep-Alive: timeout=3, max=499
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (30441)
Size:   6968
Md5:    33c2e4392fde2857ebfb23bb97fabab7
Sha1:   7945a7ecdb7d7ba137f256c0e952d52bdd5a19d1
Sha256: 8ca770c719117b328359634c7f1e8144b5f37c29bd12679dfbef2738c2b33efd
                                        
                                            GET /wp-content/plugins/wp-image-zoooom/assets/js/jquery.image_zoom.min.js?ver=1.51&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Mon, 11 Jul 2022 05:13:40 GMT
ETag: "5ee0-5e3809d6ea6e7-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 5339
Keep-Alive: timeout=3, max=497
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (14490)
Size:   5339
Md5:    78d51a8d8fac9fd72587b315b81daa0f
Sha1:   5acafa6de1eb25477577eddbdeb78ab5097e49ef
Sha256: 2bc1874ce8eb70dd111a7d685d007fdd69ec8bafb19eabe705bfda68a43f8999
                                        
                                            GET /gtag/js?id=UA-46267963-1 HTTP/1.1 
Host: www.googletagmanager.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         142.250.74.168
HTTP/2 200 OK
content-type: application/javascript; charset=UTF-8
                                        
access-control-allow-origin: *
access-control-allow-credentials: true
access-control-allow-headers: Cache-Control
content-encoding: br
vary: Accept-Encoding
date: Sun, 02 Oct 2022 22:17:24 GMT
expires: Sun, 02 Oct 2022 22:17:24 GMT
cache-control: private, max-age=900
strict-transport-security: max-age=31536000; includeSubDomains
cross-origin-resource-policy: cross-origin
server: Google Tag Manager
content-length: 43446
x-xss-protection: 0
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (2039)
Size:   43446
Md5:    a6b08f350c80e6206524c5f0ca094e74
Sha1:   01ab4d2f69b9a6d1422074bca283ab5aa29b3f28
Sha256: 1f06f4dc9d6fa548f9f76fb70710ee8f996f486860e712aca8d1d9c812aac602
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            POST / HTTP/1.1 
Host: ocsp.digicert.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         93.184.220.29
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Accept-Ranges: bytes
Age: 6134
Cache-Control: 'max-age=158059'
Date: Sun, 02 Oct 2022 22:17:24 GMT
Last-Modified: Sun, 02 Oct 2022 20:35:10 GMT
Server: ECS (ska/F713)
X-Cache: HIT
Content-Length: 278

                                        
                                            GET /sdks/OneSignalSDK.js?ver=6.0.2 HTTP/1.1 
Host: cdn.onesignal.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         104.18.225.52
HTTP/2 200 OK
content-type: application/javascript
                                        
date: Sun, 02 Oct 2022 22:17:24 GMT
etag: W/"ae63ef8ff03da61fffaa7f165729897a"
via: 1.1 google
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
cf-cache-status: HIT
age: 2956
expires: Wed, 05 Oct 2022 22:17:24 GMT
cache-control: public, max-age=259200
vary: Accept-Encoding
strict-transport-security: max-age=15552000; includeSubDomains
server: cloudflare
cf-ray: 7540ced6ed61b511-OSL
content-encoding: br
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (9097)
Size:   4396
Md5:    c1f3b2172ba22c59ccd40c9864c6c823
Sha1:   ec76a717808f0dbdbef017bd0c2597f79c57cd27
Sha256: 9e39af4fcec62900b5c59bba399c38cc97d5d5812565483e594c0943922c5d5d
                                        
                                            GET /wp-content/plugins/wp-image-zoooom/assets/js/image_zoom-init.js?ver=1.51&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Mon, 11 Jul 2022 05:13:40 GMT
ETag: "4189-5e3809d6eaacf-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 4705
Keep-Alive: timeout=3, max=497
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (2232)
Size:   4705
Md5:    88dbd257d5b74150d3a20ddb8ce31291
Sha1:   b0de118798c04d8b537612249e333b29224dd583
Sha256: 45c5eed0bcaf8cec901956b223865c7b885a556c196b7dde4084281199c19ea9
                                        
                                            GET /wp-includes/js/wp-emoji-release.min.js?ver=6.0.2 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 25 May 2022 06:39:23 GMT
ETag: "48b9-5dfd055769e09-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 5009
Keep-Alive: timeout=3, max=498
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (15660)
Size:   5009
Md5:    e6624e0b978e6ddba476be41aaaa82df
Sha1:   822e920d8233072110ed7c8a7f379e5b13209b18
Sha256: dac86a9ce08e4d8cded47b4fa900a664b0c997d8910c2a1be54a423678925a41
                                        
                                            GET /wp-content/plugins/yith-woocommerce-wishlist/assets/js/jquery.selectBox.min.js?ver=1.2.0&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 21 Sep 2022 06:33:54 GMT
ETag: "3a4f-5e92a20f60d3f-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 3780
Keep-Alive: timeout=3, max=498
Connection: Keep-Alive


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (14924), with no line terminators
Size:   3780
Md5:    2829d566a7b23618109b18588c49daf9
Sha1:   4ffec8708ef01c17c4dbbba9e1756fb60ad4f919
Sha256: bf6d483efd7c83b2cad0f9663fa86a357926a03a31573de4c98b6f962f7c0d48
                                        
                                            GET /delivery/et/16646?category=dating&channel=pleasuretroveboutique HTTP/1.1 
Host: traffdaq.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/

                                         
                                         165.227.253.207
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
Server: nginx
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.3.4
Cache-Control: no-cache, private
Date: Sun, 02 Oct 2022 22:17:24 GMT
Set-Cookie: XSRF-TOKEN=eyJpdiI6IndES3FPS3Z5NGM5ZHBJWTlFZVNyN2c9PSIsInZhbHVlIjoiT0hpbWtpR1lvb0IzQ3Bqd2FCYldYTWg3Ly9kVGVtOWk1SkJFckFSVDJNdlJnVVhSZmlRdFlUZWtMMjlkR0xWOWVDYlU4U0xPTkFDY25nRGVpVUNCVUdwQVVaazZqMmxCeXU5d0pQcmliQk9OOXVac2VaNm1kUTViZ3lpK1JPQjkiLCJtYWMiOiI5ZDk2Zjk2OTY1YTFiN2FjMjY5ODczNGY3MDk2OGE3Yzk1NTBhMWZjZGNlNzdlMDczY2JjY2ViYWQzZDI5Y2FlIiwidGFnIjoiIn0%3D; expires=Mon, 03-Oct-2022 00:17:24 GMT; Max-Age=7200; path=/; samesite=lax laravel_session=eyJpdiI6IlBQeE5vL3FGMHJlUWFBWlZRQnFxV3c9PSIsInZhbHVlIjoiSG16NnN3d0p3TEM4K1U3ckpSWUN3Ym5BTWs1dWpkQVRyQkM1eWQ1bjZiaWtneThQS2p6KzJwdFFzWWVLQlVZNThkMGMxclBKazZQWHpLbmt4N3dJSlJhb3UzTThGaGpFS0RiVzRMNHBEZEY3MWoyR1R2cWduSC9FVmUxZGFZaU0iLCJtYWMiOiI2NmYzMTljNDhhNTk2YzQxYWE2MDJkNWNmMzg1YTM4MGM0ZTkzMGUyODBlOTc1MTRiYWZhNTI0NThkNzcyMzY0IiwidGFnIjoiIn0%3D; expires=Mon, 03-Oct-2022 00:17:24 GMT; Max-Age=7200; path=/; httponly; samesite=lax


--- Additional Info ---
Magic:  ASCII text, with very long lines (588)
Size:   1628
Md5:    4505fed43217352618c6d5543545b15c
Sha1:   155fce37b58e17a0671e21d0f8751c3e254e6c46
Sha256: 56686db886d9b4c3fdb339056e7006aafd87ec51fde692390a31f72564a07aba
                                        
                                            GET /wp-content/plugins/woocommerce/assets/js/prettyPhoto/jquery.prettyPhoto.min.js?ver=3.1.6&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Tue, 27 Sep 2022 19:43:09 GMT
ETag: "533e-5e9adda93e627-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 5746
Keep-Alive: timeout=3, max=498
Connection: Keep-Alive


--- Additional Info ---
Magic:  HTML document, ASCII text, with very long lines (21310), with no line terminators
Size:   5746
Md5:    8f2aecfb93b1dda3f598191dc8466255
Sha1:   59013842a76704302d8722de7845409ca01e1c42
Sha256: 7ad7f12b2707922f94cfffa5dbaa1b727ddb09b744e07f95990afac9cdeba7ce
                                        
                                            GET /wp-content/plugins/yith-woocommerce-wishlist/assets/js/jquery.yith-wcwl.min.js?ver=3.13.0&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 21 Sep 2022 06:33:54 GMT
ETag: "6177-5e92a20f60d3f-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 6626
Keep-Alive: timeout=3, max=496
Connection: Keep-Alive


--- Additional Info ---
Magic:  HTML document, ASCII text, with very long lines (24951), with no line terminators
Size:   6626
Md5:    19a1cd1fd18d6f7ce881d3ccaab46f55
Sha1:   01b55b33faa7f68ea3e09046719acbc65ed150a1
Sha256: 20238c88e4cf7deef31d52a2129424b00dae1443a730e314e66acee4ed250c11
                                        
                                            POST / HTTP/1.1 
Host: ocsp.sectigo.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 84
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         172.64.155.188
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Content-Length: 472
Connection: keep-alive
Last-Modified: Fri, 30 Sep 2022 20:27:05 GMT
Expires: Fri, 07 Oct 2022 20:27:04 GMT
Etag: "66a44df59eb23973333a649b383b6bb9362ca71a"
Cache-Control: max-age=424779,s-maxage=1800,public,no-transform,must-revalidate
X-CCACDN-Proxy-ID: mcdpinlb1
X-Frame-Options: SAMEORIGIN
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 7540ced6eaa4fac8-OSL

                                        
                                            GET /p/woocommerce/6.9.4/assets/css/woocommerce-layout.css HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: text/css
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Tue, 21 Dec 2021 19:24:57 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (17809), with no line terminators
Size:   2746
Md5:    802a611ab38e8c0919bfc971dd744f28
Sha1:   73dfc93896d46a152496dccd305b08ff9d005be2
Sha256: e9715af489381ca5ed707fc8ca53d6c044edf473a2b3e3286df264ce2a082d5f
                                        
                                            GET /p/woocommerce/6.9.4/assets/css/woocommerce.css HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: text/css
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Tue, 21 Dec 2021 19:24:57 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (62753), with no line terminators
Size:   18270
Md5:    feb687f36f8e623474ade5ef8c3fb0a8
Sha1:   d45f4679ecd4ed198d1a4d8956a8653378330558
Sha256: 98ec5af1d84be32cb66124dcbca4465c2bdce9d524afce9bc9ea9effa8801551
                                        
                                            GET /js/jads.js HTTP/1.1 
Host: poweredby.jads.co
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         185.94.236.244
HTTP/1.1 301 Moved Permanently
Content-Type: text/html
                                        
Server: nginx
Date: Sun, 02 Oct 2022 22:17:24 GMT
Content-Length: 178
Connection: keep-alive
Location: jads2.js


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document, ASCII text, with CRLF line terminators
Size:   178
Md5:    cd2e0e43980a00fb6a2742d3afd803b8
Sha1:   81ffbd1712afe8cdf138b570c0fc9934742c33c1
Sha256: bd9df047d51943acc4bc6cf55d88edb5b6785a53337ee2a0f74dd521aedde87d
                                        
                                            GET /wp-content/themes/new-york-business/js/navigation.js?ver=1.0&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 13 Feb 2022 21:19:47 GMT
ETag: "180b-5d7ecdc0b5f00-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 1770
Keep-Alive: timeout=3, max=497
Connection: Keep-Alive


--- Additional Info ---
Magic:  assembler source, ASCII text, with CRLF line terminators
Size:   1770
Md5:    3d6071639f161e8b95715ae710d38705
Sha1:   a7370569f650109cc3e0f4e1dfd4413649542082
Sha256: 4dc76461b1f53bd3b5a04c9fd327796b817827cc3fc579f13e76b2fd8a46639c
                                        
                                            GET /wp-content/plugins/sassy-social-share/public/js/sassy-social-share-public.js?ver=3.3.43&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 07 Sep 2022 16:50:42 GMT
ETag: "1d595-5e8191d0e81de-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 40089
Keep-Alive: timeout=3, max=495
Connection: Keep-Alive


--- Additional Info ---
Magic:  ASCII text, with very long lines (2747), with CRLF line terminators
Size:   40089
Md5:    ed3a292b9ecbe65f36b7555bfd06d847
Sha1:   cf5142f4e091b135e2a306737f808a6a5aae769c
Sha256: 3c195b6030c154729352a6f8b7af345bfc23df95a4d50f7bad1b09caa8f73737
                                        
                                            GET /js/jads2.js HTTP/1.1 
Host: poweredby.jads.co
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://pleasuretroveboutique.com/
Connection: keep-alive
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         185.94.236.244
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Server: nginx
Date: Sun, 02 Oct 2022 22:17:24 GMT
Last-Modified: Mon, 11 Jul 2022 00:36:11 GMT
Transfer-Encoding: chunked
Connection: close
ETag: W/"62cb707b-eae"
Content-Encoding: gzip


--- Additional Info ---
Magic:  ASCII text, with very long lines (3758), with no line terminators
Size:   1719
Md5:    558e1b61fc513016183a3812938e79fb
Sha1:   5f72ea61a2aad8f7a0956321d3fd8524db70eddf
Sha256: a79f8c0aabfc2d1d45e4df2a86ca9172d292b08987f7a9d5c10bd10abf3aef54
                                        
                                            GET /delivery/gl/16646?&categories=general,gay,ebony,amateur,teen,shemale,bbw,babe,vr,dating,women_dating,gay_dating,lesbian_dating,trans_dating&rows=6&columns=1&width=200&height=300&borderColor=000000&borderHoverColor=ff0096&borderWidth=2&showText=1&textColor=000000&textHoverColor=ff0096&channel=pleasuretroveboutique HTTP/1.1 
Host: traffdaq.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/

                                         
                                         165.227.253.207
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
Server: nginx
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.3.4
Cache-Control: no-cache, private
Date: Sun, 02 Oct 2022 22:17:24 GMT
Set-Cookie: XSRF-TOKEN=eyJpdiI6InArTVhGM2NNdGNnN2UxSUUrVmZUNXc9PSIsInZhbHVlIjoicUlVRnRRalViQm5ieVl5bUN3aklsTFFPZ1VuNDRlWHlRRVI1em14V0tHZU1PSHVvQWNzV09ydC80SWFUMlExZHpmVmhzNTRhUmRhaXdoS3hrM1QwTmx5dkVtWCsvTytMWG9LK0pMb2NlOXkzYUkzbFJRblBkaTdwOWkxNFI3YloiLCJtYWMiOiIxMzQ0MGQ3YWI0ZGIwMGI3NzU3MzllMWYwNGI1ZmUzM2JkMTcxYzI5NWJjMTY1NzM5MWZiMGUwZjMzNWI3MjQ4IiwidGFnIjoiIn0%3D; expires=Mon, 03-Oct-2022 00:17:24 GMT; Max-Age=7200; path=/; samesite=lax laravel_session=eyJpdiI6IlhKUGxBeFRMTVcwbjVHK0FDeWkxUmc9PSIsInZhbHVlIjoiTjdaREtJZDF3ejk0ZGZOdHR1clBaWGxLSnpldGU3L0llL0NPbG9maTZJNi9ydFhLSmNQZ3c5MHRJU2dRbFlNT0l2aFR3dlgyaWFzeVM5ZEhoODBTYnlucVFqTm9CckdRTzYxZzB5eE9mVzhRZjRHdnpJcW1IVVlTSllvd2lEYjMiLCJtYWMiOiJlYWRhOThlMWIxNDU5Y2I1OWQyM2JkNzcyMWVmMGNjNzY0OTJhMTg0MDVkODNmZGMxYzYxZTEzMmMzNDg3Y2JkIiwidGFnIjoiIn0%3D; expires=Mon, 03-Oct-2022 00:17:24 GMT; Max-Age=7200; path=/; httponly; samesite=lax TDQCI=eyJpdiI6ImpWbDFCTHJOdTZ1QytKQkVBUk5XQ3c9PSIsInZhbHVlIjoia2xaeUlCdnF6SndiOHV1NlRNaVdZcHlhRW1wdUM4YlhaZGxmbWxNbnpaUE9ISi8xTVRzR21Sb0owTE9UMjkwZ3YxNVRaaEtTNGdPb0dVUnVqTHh4eVE9PSIsIm1hYyI6ImQ5Nzg4YjNkZTI3Zjc4MDE4MDQ4ODJmZDYxNDYxZTBlYmRjNjM1ZjgzYTcxN2JjNzlhZmI1Mzc5NjM3NGIzMjIiLCJ0YWciOiIifQ%3D%3D; expires=Sun, 02-Oct-2022 22:18:24 GMT; Max-Age=60; path=/; httponly; samesite=lax hashes=eyJpdiI6IkpDeEEvL2EzK0Z6cy8wOStoNWtUV1E9PSIsInZhbHVlIjoieGJaUFZBNGdZNms3cEYraWZ2ZGIyMkREbVVtdi9UdDV6R0tKNUhOYkI3T3l1bklUWDYzeVJxSWxPWUZheEdoWlZ3QVZEcWp5R1ZEQVBmU0RKT0pocGhMNkhaU0hoOXBYRmhOc0c0RHZWZzA9IiwibWFjIjoiMzRmZmRiODNjYjRhMzZhYjQ5OTVkMTIwMDRhMjRjZWQ4ODNmNDY3NTRlYTVlZmYyYjY4MmJmYTM1MTljN2MxNiIsInRhZyI6IiJ9; path=/; httponly; samesite=lax


--- Additional Info ---
Magic:  ASCII text, with very long lines (5048)
Size:   5445
Md5:    4575045e4269f72517c384a55bf1d750
Sha1:   d8cdabb7f07403ba59acd3a10dcf312509876605
Sha256: bad0c629280a176123fe3f21b0b344f6316c8c1d24ac40b66a8f400636b3e4d4
                                        
                                            GET /wp-content/plugins/woocommerce-paypal-payments/modules/ppcp-button/assets/js/button.js?ver=1.9.3&6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/
Cookie: aiovg_rand_seed=158777655

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:17:23 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 07 Sep 2022 16:50:52 GMT
ETag: "385cc-5e8191da40771-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:23 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Keep-Alive: timeout=3, max=496
Connection: Keep-Alive
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (65532), with no line terminators
Size:   60191
Md5:    a2437b7e1a60ef5f06c26e8c0f81fc46
Sha1:   81425431e5034909305a88e245b153c276c8c64d
Sha256: bbc18075318cabde6d2b5a55333a31c614fda994c6ea07b505192a43e804637a
                                        
                                            GET /c/6.0.2/wp-includes/css/dist/block-library/style.min.css HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: text/css
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Mon, 04 Jul 2022 12:10:37 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (43771)
Size:   11415
Md5:    53709769f899e9fe649400533455485b
Sha1:   4788dc5aa7ec0d55fec6521c6db64344ea1846b2
Sha256: ab0e9b12518ee440bf7a47ff46d6c812f1cce80c4a34d6acaabd06d32ef14493
                                        
                                            GET /c/6.0.2/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: text/css
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Tue, 29 Sep 2020 15:53:06 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (11256), with no line terminators
Size:   2898
Md5:    42772771bb045fd3c7c544242715e499
Sha1:   9783c5bd2ae8815a550c775a870a9f2d9b74fd1b
Sha256: c260be5fbaa7ea256510cfce1157bdb4a3b303fc950ea886da44333aed0c153c
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F98a090b5-0736-4ddd-b6ca-3c76661e7051.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 8158
x-amzn-requestid: 424c8c6c-7075-4ace-97e6-2b0a609d1b7e
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: ZZXDxGRlIAMFZrA=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-633a054b-046d963a345c15e81dc74e4d;Sampled=0
x-amzn-remapped-date: Sun, 02 Oct 2022 21:40:27 GMT
x-amz-cf-pop: HIO50-C1, SEA73-P1
x-cache: Hit from cloudfront
x-amz-cf-id: AM8Ox9ObWGoXI-QnnoI7QkY5mOh8j6xBPetTrhyVktVO40ekk4X2Eg==
via: 1.1 86b676273517904f44af31586adb06ae.cloudfront.net (CloudFront), 1.1 35575576af8067e30cfb17c6b9fde8e2.cloudfront.net (CloudFront), 1.1 google
date: Sun, 02 Oct 2022 21:45:27 GMT
age: 1918
etag: "3fc3aeae907a0ce0db21753c67c1000681e48b8e"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   8158
Md5:    721a8d8f94c3796abf021978fcdbc831
Sha1:   3fc3aeae907a0ce0db21753c67c1000681e48b8e
Sha256: cb497b15e7c2e49930b99f8d6659f0394acefb7b11613ca04397ee782dac759d
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Fcd0be942-f345-4da4-974e-a9fe16b90b3c.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 9083
x-amzn-requestid: fda71fd3-ef25-4a63-94ae-1bfc8aef8d14
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: ZZXD2H0DIAMFjrg=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-633a054b-198915fc17ce3dab571b7575;Sampled=0
x-amzn-remapped-date: Sun, 02 Oct 2022 21:40:27 GMT
x-amz-cf-pop: HIO50-C1, SEA73-P1
x-cache: Hit from cloudfront
x-amz-cf-id: _JxPe8uPQIgRKoJxtJAKjXpVy1hCW0rFcs8K_erJOHbVNpw339Pz6w==
via: 1.1 112c6b3f9aea37a6cb00b7d933e5af6e.cloudfront.net (CloudFront), 1.1 cd64decb1403270c914848213601a674.cloudfront.net (CloudFront), 1.1 google
date: Sun, 02 Oct 2022 21:45:27 GMT
age: 1918
etag: "8118ee462077c291b9d6f1402b85b55a9ceba8c2"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   9083
Md5:    523edd86af4757d0bc5fa5b3b8a3596a
Sha1:   8118ee462077c291b9d6f1402b85b55a9ceba8c2
Sha256: c27de9970317636df8c4a517a9ed38e573235b351bf92c9b8bb1f964cd100031
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "C17A343CEB786A421F8C3ABFFFAE350E12C92271A69FC88EB8E8BAB568877D6B"
Last-Modified: Fri, 30 Sep 2022 09:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=6297
Expires: Mon, 03 Oct 2022 00:02:22 GMT
Date: Sun, 02 Oct 2022 22:17:25 GMT
Connection: keep-alive

                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Feb7e3592-97bd-498d-bf7f-2c5bb0fc867b.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 6983
x-amzn-requestid: e551848c-073a-4317-8841-1fc5fd8a38c4
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: ZZWb3EGdoAMFY4Q=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-633a044b-6c6a638527bb19f621cd40b1;Sampled=0
x-amzn-remapped-date: Sun, 02 Oct 2022 21:36:11 GMT
x-amz-cf-pop: HIO50-C1, SEA73-P1
x-cache: Miss from cloudfront
x-amz-cf-id: dovur2A7-Vx80FdqmWlJZDBBKnAqX0t9FYOIaqikEumI9bebg171KQ==
via: 1.1 49b94a8674d6e86a841d6523f7dbaf14.cloudfront.net (CloudFront), 1.1 b8c4a4ca04bb1976e020396d211bc8dc.cloudfront.net (CloudFront), 1.1 google
date: Sun, 02 Oct 2022 21:45:27 GMT
etag: "2d543d6b1bed9901437c3b880bd415ece354cbf7"
age: 1918
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   6983
Md5:    91079e915678800d2e2e1f68415d5dc4
Sha1:   2d543d6b1bed9901437c3b880bd415ece354cbf7
Sha256: b9bda55eef23a199fff3bd3fde22486ef4d50edd36b105b0ee13479b96c2ba22
                                        
                                            GET /p/woocommerce/6.9.4/packages/woocommerce-blocks/build/wc-blocks-vendors-style.css HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: text/css
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Wed, 24 Aug 2022 20:12:33 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (10435), with no line terminators
Size:   2258
Md5:    b828fa9816501fc3dcce3654a2a037aa
Sha1:   fd1f4891186370704052f639a8a3a63472347bf1
Sha256: e3490a6fc7b5b5c103ecc0eb558586be749f36d52b4d2a4be1f20c46d7d7161c
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F180dee10-1cde-4fbe-8a74-62b7b3bdb1e2.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 6315
x-amzn-requestid: 6aa75b16-32e4-48a7-9fb0-9e3d5528c2d5
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: ZWSdsHUnIAMFXtw=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-6338cabd-742d8a436403683e0cd9368f;Sampled=0
x-amzn-remapped-date: Sat, 01 Oct 2022 23:18:21 GMT
x-amz-cf-pop: SEA73-P1
x-cache: Miss from cloudfront
x-amz-cf-id: 5sAzc5Ewv4g6Wqq6JJiLylG3Jyy_nlWrr5Oteeo6ebEgq7Rvss4XaQ==
via: 1.1 f13aef0c4b52f6f681401f232d03eb68.cloudfront.net (CloudFront), 1.1 09331f0822fc98eebaf04130a83dbd44.cloudfront.net (CloudFront), 1.1 google
date: Sun, 02 Oct 2022 04:41:00 GMT
age: 63385
etag: "58ff0bf8ce7528b303d28bab01a80ad721705569"
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   6315
Md5:    206fb65e75dbadf119512f71e0b78402
Sha1:   58ff0bf8ce7528b303d28bab01a80ad721705569
Sha256: 56c8d5f3b3060ee54bf81995269b86c070855d8c33bf437161339a45b309703f
                                        
                                            GET /p/woocommerce/6.9.4/packages/woocommerce-blocks/build/wc-blocks-style.css HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: style
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: text/css
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Wed, 24 Aug 2022 20:12:33 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  Unicode text, UTF-8 text, with very long lines (65527), with no line terminators
Size:   20839
Md5:    ca0de8c41cb19f3c631aef500215d068
Sha1:   0dc78bb30425fc7870957d907b6d905fe1ca96cf
Sha256: bda226a3871648ca9c54a614d88bb1ec8d5b679968606eb90a6701bb532676a3
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F943d6a55-696e-4fd8-901a-a9ab097959d7.jpeg HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: image/jpeg
                                        
server: nginx
content-length: 6321
x-amzn-requestid: 605adeca-4345-4481-999e-d50ebc123767
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: ZZWabGsgIAMFcSw=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-633a0442-68542d1b56697ab33dd63941;Sampled=0
x-amzn-remapped-date: Sun, 02 Oct 2022 21:36:02 GMT
x-amz-cf-pop: HIO50-C1, SEA73-P1
x-cache: Miss from cloudfront
x-amz-cf-id: xZUu90wyCNVEexHxRRNQz0aDhNy_u0WC2v8TVxHkQvW-evaDwfKTtQ==
via: 1.1 4dde8ec6d6c12741888c2d3a059d4a2e.cloudfront.net (CloudFront), 1.1 5fe5f2a3903f1378941d92eceaf3fa16.cloudfront.net (CloudFront), 1.1 google
date: Sun, 02 Oct 2022 21:45:27 GMT
etag: "89ce0e6d742144439a96ace034adae4e7e167311"
age: 1918
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 296x148, components 3\012- data
Size:   6321
Md5:    8bb7613964aef696917cb85a6d0bcac4
Sha1:   89ce0e6d742144439a96ace034adae4e7e167311
Sha256: 24b100b10aa041effad83e9379447f4f62d95dcf6eb27a6b093a7caaa484f964
                                        
                                            GET /ads-iframe-display.php?idzone=4260988&type=160x600&p=http%3A//pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/&dt=1664749044863&sub=&tags=&cookieconsent=true&screen_resolution=1280x1024&el=%22 HTTP/1.1 
Host: syndication.realsrv.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Upgrade-Insecure-Requests: 1

                                         
                                         95.211.229.247
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
                                        
Server: nginx
Date: Sun, 02 Oct 2022 22:17:25 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Set-Cookie: __uvt=a%3A1%3A%7Bi%3A0%3Bs%3A33%3A%22633a0df529d988.800654063343797354%22%3B%7D; expires=Tue, 01 Oct 2024 22:17:25 GMT; path=; domain=.realsrv.com; impressions=oslmroemnxgxaacmcrlolgeicxbmsbocnxgxaacolllxmgeioslmrxbrnxgxaacmobexrgeicxbmsbxcnxgxaacmcrlolgeicxbmsbcenxgxaacsxbrblgeislsaroornxgxaacmobexrgeicxbmsboenxgxaacsremoegeimreaomxcnxgxaasaoabsrgeimreaobsonxgxaasaoabsrgeioslmrxbmnxgxaacmobeecgeimcclsoeenxgxaasamsoccgeimcclosconxgxaacobbxcxgeimrblelmonxgxaasamsoccgeimrblxembnxgxaasamsoccgeimrblxeecnxgxaasamsoccgeimrblxemcnxgxaasamsoccgeialbserecnxgxaacxeermsgeioslmrxlsnxgxaacmobeeageicaormbbonxgxaacxeermsgeioslmrxlrnxgxaacsxbrblgeimcclsxscnxgxaacsxbrblgeimrerbmbbnxgxaasmeceesgeialbsereanxgxaacsxbrblgeialbserebnxgxaasborcsogeiccmblmmcnxgxaacosxlaageimrblelxcnxgxaasblsoxxgeimcclsxoanxgxaacmobexrgeimrblelmbnxgxaasblsoxxgeimcclossanxgxaacmobexrgeimcclselenxgxaasblsoxxgeimcclsoeonxgxaacmobexrgeimccloscenxgxaaslcsrobgeimcclsxacnxgxaaslcsrobgeicaormlebnxgxaacxeermsgeimcersxranxgxaacxeermsgeisaeeasslnxgxaacxeermsgeimcersxacnxgxaacxeermsgeimcersxrenxgxaacxeermsgeiccmblmmbnxgxaacosereageiccmblmmanxgxaacoabbclgeislsarosxnxgxaacsremoegeimrsreamonsgxaacaaolcbgxcceimrsreamanxgxaacaboxamgxcceimrsreamcnsgxaacmxsxargxcceimclsaoxbnsgxaacmooxrxgxcceimcoaxmxonxgxaacmoocbcgxcceiaaxcabeonxgxaacmomcebgxcceiabeocmsbnxgxaacmobeeageimemlxbocnxgxaacmobeecgxcceialbbebsanxgxaacmobeeagxcceimcclsxcanxgxaacmobexrgeimaecobxanxgxaacmobexrgeimcssmlronogxaacmobexrgxcceimsacexoonxgxaacmobexrgxcceimraeelsenxgxaacmobexrgxcceimrsreaabnxgxaacmollcmgxcceiaaxcabecnxgxaacmsxeebgxcceialaroxrcnxgxaacmsxeebgxcceimcoaxmxcnsgxaacmsxessgxcceimxlbmosanogxaacmsrbrmgxcceimxeoxsbenxgxaacmsrbrmgxcceimxlbmosonogxaacmsrbrmgxcceimcssmlrcnogxaacmsrbrmgxcceimcssmlrenxgxaacmsrbrmgxcceimxlbmoobnxgxaacmsrbrmgxcceiceecmorsnxgxaacmsabebgxcceiaaxcamlcnxgxaacmslrcrgxcceiaaxcamlanxgxaacmcserbgxcceimxlbmoscnxgxaacmcserbgxcceimxlbmoconxgxaacmcserbgxcceimxlbmosenxgxaacmcserbgxcceimcclsxsbnxgxaacmcrlolgeialbmmbbonxgxaacmclecrgxcce; expires=Mon, 03 Oct 2022 22:17:25 GMT; path=/; domain=.realsrv.com;
X-Robots-Tag: noindex, follow
Content-Encoding: gzip


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document, ASCII text, with very long lines (1206)
Size:   1204
Md5:    9ecfd8c1bd8d6540b1a129bfbc207088
Sha1:   b88013aa1b645a8fc4171dfa8610b31b9bb280c6
Sha256: 38740a156049b9e42acf1beeaf4b1ad66aba49eaf981ad8ebb658c6688a43921
                                        
                                            GET /button/button1.html?url=http%3A%2F%2Fpleasuretroveboutique.com%2Finteractive-webcam-livecam-model-video-sex-chat-room-kaileeshy%2F HTTP/1.1 
Host: www.redditstatic.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Upgrade-Insecure-Requests: 1

                                         
                                         151.101.85.140
HTTP/1.1 200 OK
Content-Type: text/html
                                        
Connection: keep-alive
Content-Length: 1709
Last-Modified: Wed, 30 Jul 2014 19:09:19 GMT
ETag: "ce91c4f683d32f8907f0e97f3fb93696"
Expires: Thu, 31 Dec 2037 23:59:59 GMT
Content-Encoding: gzip
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Sun, 02 Oct 2022 22:17:25 GMT
Vary: Accept-Encoding,Origin
Server: snooserv
Report-To: {"group": "w3-reporting-nel", "max_age": 14400, "include_subdomains": true, "endpoints": [{ "url": "https://w3-reporting-nel.reddit.com/reports" }]}, {"group": "w3-reporting", "max_age": 14400, "include_subdomains": true, "endpoints": [{ "url": "https://w3-reporting.reddit.com/reports" }]}
NEL: {"report_to": "w3-reporting-nel", "max_age": 14400, "include_subdomains": false, "success_fraction": 0.02, "failure_fraction": 0.02}


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- exported SGML document, ASCII text, with very long lines (1522)
Size:   1709
Md5:    4a408b7d64f2c0937eb0d1b944e3229e
Sha1:   e9edc11acdf9d5ae0357b680590d3dc719bf0adc
Sha256: 91aee29aee50d42c1a027a0c9b82f759847e37b6027af3d7b96ccf68db3fe685
                                        
                                            GET /button/button-embed.js HTTP/1.1 
Host: www.redditstatic.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://www.redditstatic.com/button/button1.html?url=http%3A%2F%2Fpleasuretroveboutique.com%2Finteractive-webcam-livecam-model-video-sex-chat-room-kaileeshy%2F

                                         
                                         151.101.85.140
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Connection: keep-alive
Content-Length: 983
Last-Modified: Wed, 22 Oct 2014 17:47:37 GMT
ETag: "f6e79e0098bfda54ca2e0e02da223645"
Expires: Thu, 31 Dec 2037 23:59:59 GMT
Content-Encoding: gzip
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Sun, 02 Oct 2022 22:17:25 GMT
Vary: Accept-Encoding,Origin
Server: snooserv
Report-To: {"group": "w3-reporting-nel", "max_age": 14400, "include_subdomains": true, "endpoints": [{ "url": "https://w3-reporting-nel.reddit.com/reports" }]}, {"group": "w3-reporting", "max_age": 14400, "include_subdomains": true, "endpoints": [{ "url": "https://w3-reporting.reddit.com/reports" }]}
NEL: {"report_to": "w3-reporting-nel", "max_age": 14400, "include_subdomains": false, "success_fraction": 0.02, "failure_fraction": 0.02}


--- Additional Info ---
Magic:  ASCII text
Size:   983
Md5:    894ad3ef79db45d25e29d456dc0d4749
Sha1:   44560c5236cc799ab5cb2e9aa39dfe85d2d9b120
Sha256: d61a96c13920a9de38d7d426dde2c890535856bda84a26845dc0272f05b33e2d
                                        
                                            POST /g/collect?v=2&tid=G-S9FQ2RW338&gtm=2oe9s0&_p=307072295&cid=368433929.1664749044&ul=en-us&sr=1280x1024&_z=ccd.v9B&_s=1&sid=1664749044&sct=1&seg=0&dl=http%3A%2F%2Fpleasuretroveboutique.com%2Finteractive-webcam-livecam-model-video-sex-chat-room-kaileeshy%2F&dt=Interactive%20Webcam%20LiveCam%20Model%20Video%20Sex%20Chat%20Room%3A%20kaileeshy%20-%20PLEASURE%20TROVE%20BOUTIQUE&en=page_view&_fv=1&_ss=1 HTTP/1.1 
Host: region1.google-analytics.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: http://pleasuretroveboutique.com
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
Content-Length: 0
TE: trailers

                                         
                                         216.239.34.36
HTTP/2 204 No Content
content-type: text/plain
                                        
access-control-allow-origin: http://pleasuretroveboutique.com
date: Sun, 02 Oct 2022 22:17:25 GMT
pragma: no-cache
expires: Fri, 01 Jan 1990 00:00:00 GMT
cache-control: no-cache, no-store, must-revalidate
access-control-allow-credentials: true
cross-origin-resource-policy: cross-origin
server: Golfe2
content-length: 0
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2

                                        
                                            POST /g/collect?v=2&tid=G-FQBYBTMS1C&gtm=2oe9s0&_p=307072295&gdid=dZTNiMT&cid=368433929.1664749044&ul=en-us&sr=1280x1024&_z=ccd.v9B&_s=1&sid=1664749044&sct=1&seg=0&dl=http%3A%2F%2Fpleasuretroveboutique.com%2Finteractive-webcam-livecam-model-video-sex-chat-room-kaileeshy%2F&dt=Interactive%20Webcam%20LiveCam%20Model%20Video%20Sex%20Chat%20Room%3A%20kaileeshy%20-%20PLEASURE%20TROVE%20BOUTIQUE&en=page_view&_fv=1&_nsi=1&_ss=1&_ee=1 HTTP/1.1 
Host: region1.google-analytics.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: http://pleasuretroveboutique.com
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
Content-Length: 0
TE: trailers

                                         
                                         216.239.34.36
HTTP/2 204 No Content
content-type: text/plain
                                        
access-control-allow-origin: http://pleasuretroveboutique.com
date: Sun, 02 Oct 2022 22:17:25 GMT
pragma: no-cache
expires: Fri, 01 Jan 1990 00:00:00 GMT
cache-control: no-cache, no-store, must-revalidate
access-control-allow-credentials: true
cross-origin-resource-policy: cross-origin
server: Golfe2
content-length: 0
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2

                                        
                                            GET /button_info.json?jsonp=buttonEmbed.parseSubmission&url=http%3A%2F%2Fpleasuretroveboutique.com%2Finteractive-webcam-livecam-model-video-sex-chat-room-kaileeshy%2F HTTP/1.1 
Host: buttons.reddit.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://www.redditstatic.com/

                                         
                                         151.101.85.140
HTTP/1.1 404 Not Found
Content-Type: text/plain
                                        
Connection: close
Content-Length: 13
Server: Varnish
Retry-After: 0
Accept-Ranges: bytes
Date: Sun, 02 Oct 2022 22:17:25 GMT
Via: 1.1 varnish
X-Served-By: cache-bma1677-BMA
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1664749045.314019,VS0,VE0


--- Additional Info ---
Magic:  ASCII text, with no line terminators
Size:   13
Md5:    1e6cd917ed71a1241e4bedc29264bd98
Sha1:   5b65037351caeb0e5a48d963d7ffa88d0271d546
Sha256: 7d04f7431bbfa41a04bcc7e6b98b9de0d919756c4c671c5785c99fff45f16402
                                        
                                            GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Faca14744-6a37-4b92-bc31-53527a78d6be.avif HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         34.120.237.76
HTTP/2 400 Bad Request
content-type: application/json
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 3
x-amzn-requestid: e40ec89f-b676-4647-8794-551615cb8dec
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: ZZcCsH_ToAMFyzg=
cache-control: max-age=120,public
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-633a0d44-4ced517b762b63da356c5458;Sampled=0
x-amz-cf-pop: SEA73-P2, SEA73-P1
x-cache: Error from cloudfront
x-amz-cf-id: X6xOUx9rgC__HtRNVvE8oikhsb_JDcgBN5u_3L111rOdy6KirNC7Hw==
age: 86
via: 1.1 2a44ef7b9d28e74c78ffadeedcbb887c.cloudfront.net (CloudFront), 1.1 31119c39c5a6dc62dfa1fe940afd7be2.cloudfront.net (CloudFront), 1.1 google
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with no line terminators
Size:   3
Md5:    fcc3d7489d15ef49dbbf735234234cf7
Sha1:   654e0aaee80e38636c503629d32225db31a616de
Sha256: 52109349dabf69106e04ec2f493fb8b6ade94ea100227cccce6559ab8b96553f
                                        
                                            GET /direct?url=https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Faca14744-6a37-4b92-bc31-53527a78d6be.avif&resize=w450 HTTP/1.1 
Host: img-getpocket.cdn.mozilla.net
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: null
Connection: keep-alive
Sec-Fetch-Dest: image
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         34.120.237.76
HTTP/2 200 OK
content-type: application/x-empty; charset=binary
                                        
server: nginx
content-length: 1
x-amzn-requestid: e07bcab1-4238-4f19-bd9f-5c13df7d377f
x-xss-protection: 1; mode=block
access-control-allow-origin: *
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-frame-options: DENY
content-security-policy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
x-amz-apigw-id: ZZWamH3tIAMFzbg=
x-content-type-options: nosniff
x-amzn-trace-id: Root=1-633a0443-074d95046d062c2475ab5efb;Sampled=0
x-amzn-remapped-date:
x-amz-cf-pop: HIO50-C1, SEA73-P1
x-cache: Hit from cloudfront
x-amz-cf-id: 5YU9gPtzbBt1JHoOo05mPgE4n4VPzMcFzGczDf49M3vsULsxlD_4oQ==
via: 1.1 e291f351a18746d40754b367095a2872.cloudfront.net (CloudFront), 1.1 ebe4011a81a36e2bf678f69ce1711330.cloudfront.net (CloudFront), 1.1 google
date: Sun, 02 Oct 2022 21:42:47 GMT
age: 2078
etag:
cache-control: max-age=3600,public,public
alt-svc: clear
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  very short file (no magic)
Size:   1
Md5:    7215ee9c7d9dc229d2921a40e899ec5f
Sha1:   b858cb282617fb0956d960215c8e84d1ccf909c6
Sha256: 36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068
                                        
                                            GET /ads-iframe-display.php?idzone=4260988&type=160x600&p=http%3A//pleasuretroveboutique.com/interactive-webcam-livecam-model-video-sex-chat-room-kaileeshy/&dt=1664749044951&sub=&tags=&cookieconsent=true&screen_resolution=1280x1024&el=%22 HTTP/1.1 
Host: syndication.realsrv.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Upgrade-Insecure-Requests: 1

                                         
                                         95.211.229.247
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
                                        
Server: nginx
Date: Sun, 02 Oct 2022 22:17:25 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Set-Cookie: __uvt=a%3A1%3A%7Bi%3A0%3Bs%3A33%3A%22633a0df55d9c52.519559321547241372%22%3B%7D; expires=Tue, 01 Oct 2024 22:17:25 GMT; path=; domain=.realsrv.com; impressions=oslmroemnxgxaacmcrlolgeicxbmsbocnxgxaacolllxmgeioslmrxbrnxgxaacmobexrgeicxbmsbxcnxgxaacmcrlolgeicxbmsbcenxgxaacsxbrblgeislsaroornxgxaacmobexrgeicxbmsboenxgxaacsremoegeimreaomxcnxgxaasaoabsrgeimreaobsonxgxaasaoabsrgeioslmrxbmnxgxaacmobeecgeimcclsoeenxgxaasamsoccgeimcclosconxgxaacobbxcxgeimrblelmonxgxaasamsoccgeimrblxembnxgxaasamsoccgeimrblxeecnxgxaasamsoccgeimrblxemcnxgxaasamsoccgeialbserecnxgxaacxeermsgeioslmrxlsnxgxaacmobeeageicaormbbonxgxaacxeermsgeioslmrxlrnxgxaacsxbrblgeimcclsxscnxgxaacsxbrblgeimrerbmbbnxgxaasmeceesgeialbsereanxgxaacsxbrblgeialbserebnxgxaasborcsogeiccmblmmcnxgxaacosxlaageimrblelxcnxgxaasblsoxxgeimcclsxoanxgxaacmobexrgeimrblelmbnxgxaasblsoxxgeimcclossanxgxaacmobexrgeimcclselenxgxaasblsoxxgeimcclsoeonxgxaacmobexrgeimccloscenxgxaaslcsrobgeimcclsxacnxgxaaslcsrobgeicaormlebnxgxaacxeermsgeimcersxranxgxaacxeermsgeisaeeasslnxgxaacxeermsgeimcersxacnxgxaacxeermsgeimcersxrenxgxaacxeermsgeiccmblmmbnxgxaacosereageiccmblmmanxgxaacoabbclgeislsarosxnxgxaacsremoegeimrsreamonsgxaacaaolcbgxcceimrsreamanxgxaacaboxamgxcceimrsreamcnsgxaacmxsxargxcceimclsaoxbnsgxaacmooxrxgxcceimcoaxmxonxgxaacmoocbcgxcceiaaxcabeonxgxaacmomcebgxcceiabeocmsbnxgxaacmobeeageimemlxbocnxgxaacmobeecgxcceialbbebsanxgxaacmobeeagxcceimcclsxcanxgxaacmobexrgeimaecobxanxgxaacmobexrgeimcssmlronogxaacmobexrgxcceimsacexoonxgxaacmobexrgxcceimraeelsenxgxaacmobexrgxcceimrsreaabnxgxaacmollcmgxcceiaaxcabecnxgxaacmsxeebgxcceialaroxrcnxgxaacmsxeebgxcceimcoaxmxcnsgxaacmsxessgxcceimxlbmosanogxaacmsrbrmgxcceimxeoxsbenxgxaacmsrbrmgxcceimxlbmosonogxaacmsrbrmgxcceimcssmlrcnogxaacmsrbrmgxcceimcssmlrenxgxaacmsrbrmgxcceimxlbmoobnxgxaacmsrbrmgxcceiceecmorsnxgxaacmsabebgxcceiaaxcamlcnxgxaacmslrcrgxcceiaaxcamlanxgxaacmcserbgxcceimxlbmoscnxgxaacmcserbgxcceimxlbmoconxgxaacmcserbgxcceimxlbmosenxgxaacmcserbgxcceimcclsxsbnxgxaacmcrlolgeialbmmbbonxgxaacmclecrgxcceialbmmbbenxgxaacmclecrgxcce; expires=Mon, 03 Oct 2022 22:17:25 GMT; path=/; domain=.realsrv.com;
X-Robots-Tag: noindex, follow
Content-Encoding: gzip


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document, ASCII text, with very long lines (1206)
Size:   1206
Md5:    8222b6136cbd478c38591a55c4d86dd3
Sha1:   a71ae721037c16ce050486588c6d6ebda7a15964
Sha256: 82d076a62032ca3444a996b0ebae6dcd5b319ebbf1b0e3f474829b050b688e8a
                                        
                                            GET /iframe.php?idzone=4251982&size=160x600 HTTP/1.1 
Host: a.realsrv.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Upgrade-Insecure-Requests: 1

                                         
                                         205.185.216.10
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Connection: Keep-Alive
Accept-Ranges: bytes
Content-Encoding: gzip
Content-Length: 1346
X-HW: 1664749045.dop202.sk1.t,1664749045.cds207.sk1.s,1664749045.dop008.ch4.t,1664749045.cds194.ch4.c,1664749045.cds207.sk1.p
Server: nginx
Cache-Control: max-age=10800
Access-Control-Allow-Origin: *, *


--- Additional Info ---
Magic:  HTML document, ASCII text
Size:   1346
Md5:    e09b8980e5950263bb29995f6f1a1340
Sha1:   e463a9b82416ca068f522cfdf21148867cde3ebf
Sha256: f5b4939fb45cd8735147db660d45c4209d7db42e1d745f63af7234b44cfc6605
                                        
                                            POST / HTTP/1.1 
Host: ocsp.usertrust.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         172.64.155.188
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Content-Length: 471
Connection: keep-alive
Last-Modified: Fri, 30 Sep 2022 03:35:10 GMT
Expires: Fri, 07 Oct 2022 03:35:09 GMT
Etag: "801eaa3813edb10bb7179bb6d303e33177fee0b8"
Cache-Control: max-age=603501,s-maxage=1800,public,no-transform,must-revalidate
X-CCACDN-Proxy-ID: mcdpinlb5
X-Frame-Options: SAMEORIGIN
CF-Cache-Status: HIT
Age: 223
Accept-Ranges: bytes
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 7540ceddbc191bfe-OSL

                                        
                                            GET /wp-content/themes/new-york-business/fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: identity
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/wp-content/themes/new-york-business/fonts/font-awesome/css/font-awesome.css?ver=4.7&6bfec1&6bfec1
Cookie: aiovg_rand_seed=158777655; _ga_FQBYBTMS1C=GS1.1.1664749044.1.0.1664749044.0.0.0; _ga=GA1.1.368433929.1664749044; _ga_S9FQ2RW338=GS1.1.1664749044.1.0.1664749044.0.0.0

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/font-woff2
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 13 Feb 2022 21:19:47 GMT
ETag: "12d68-5d7ecdc0b2c38"
Accept-Ranges: bytes
Content-Length: 77160
Cache-Control: max-age=31536000, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:24 GMT
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Keep-Alive: timeout=3, max=495
Connection: Keep-Alive


--- Additional Info ---
Magic:  Web Open Font Format (Version 2), TrueType, length 77160, version 4.459\012- data
Size:   77160
Md5:    af7ae505a9eed503f8b8e6982036873e
Sha1:   d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c
Sha256: 2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe
                                        
                                            GET /wp-content/themes/new-york-business/images/down-arrow.png HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/wp-content/themes/new-york-business/style.css?ver=6.0.2&6bfec1&6bfec1
Cookie: aiovg_rand_seed=158777655; _ga_FQBYBTMS1C=GS1.1.1664749044.1.0.1664749044.0.0.0; _ga=GA1.1.368433929.1664749044; _ga_S9FQ2RW338=GS1.1.1664749044.1.0.1664749044.0.0.0

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Date: Sun, 02 Oct 2022 22:17:24 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sun, 13 Feb 2022 21:19:47 GMT
ETag: "7363-5d7ecdc0b5348-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:24 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 28569
Keep-Alive: timeout=3, max=496
Connection: Keep-Alive


--- Additional Info ---
Magic:  PNG image data, 13 x 7, 8-bit/color RGBA, non-interlaced\012- data
Size:   28569
Md5:    5985394c0c078a068a8c63c6746e195c
Sha1:   f7f40f4c9067e97b3a39d2c4922c1753b25e90cb
Sha256: 854ea1233578568e5f043220c284452c3ae711a02923a26d2723ad408753d6f4
                                        
                                            GET /ad-provider.js HTTP/1.1 
Host: a.realsrv.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://a.realsrv.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         205.185.216.10
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 23726
Accept-Ranges: bytes
Cache-Control: max-age=10800
Server: nginx
etag: W/"2bf044048f482551901a41a7444"
X-HW: 1664749044.dop203.sk1.t,1664749045.cds013.sk1.shn,1664749045.cds013.sk1.c
Access-Control-Allow-Origin: *, *


--- Additional Info ---
Magic:  ASCII text, with very long lines (65536), with no line terminators
Size:   23726
Md5:    46504668ecf4671f582f5ba93a2f3c6b
Sha1:   8b165c478da3dd4fd4df3b40745733049b5acb0c
Sha256: 5230c0e2745fedbf038f97e374a5b6ea033434301aa86ec545eae37b29350799
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /img/crtv/TRAFFDAQ-272x225-1.jpg?6bfec1&6bfec1 HTTP/1.1 
Host: traffdaq.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/

                                         
                                         165.227.253.207
HTTP/1.1 200 OK
Content-Type: image/jpeg
                                        
Server: nginx
Date: Sun, 02 Oct 2022 22:17:25 GMT
Content-Length: 33189
Last-Modified: Wed, 02 Feb 2022 20:15:20 GMT
Connection: keep-alive
ETag: "61fae658-81a5"
Accept-Ranges: bytes


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, baseline, precision 8, 272x225, components 3\012- data
Size:   33189
Md5:    b1ada1c3ce683516942c172cf4bf77a6
Sha1:   b8afd0212fa41e999c7ffb5a360bf4f0934963bd
Sha256: 688662a279546fa1a9e17b16149033336dc72fc8964325ded7597149c9eb4ade
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /s/ptsans/v17/jizaRExUiTo99u79D0KExQ.woff2 HTTP/1.1 
Host: fonts.gstatic.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: identity
Origin: http://pleasuretroveboutique.com
Connection: keep-alive
Referer: https://fonts.googleapis.com/
Sec-Fetch-Dest: font
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         216.58.207.195
HTTP/2 200 OK
content-type: font/woff2
                                        
accept-ranges: bytes
access-control-allow-origin: *
content-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes
cross-origin-resource-policy: cross-origin
cross-origin-opener-policy: same-origin; report-to="apps-themes"
report-to: {"group":"apps-themes","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/apps-themes"}]}
timing-allow-origin: *
content-length: 45300
x-content-type-options: nosniff
server: sffe
x-xss-protection: 0
date: Wed, 28 Sep 2022 19:27:53 GMT
expires: Thu, 28 Sep 2023 19:27:53 GMT
cache-control: public, max-age=31536000
age: 355772
last-modified: Wed, 27 Apr 2022 16:11:08 GMT
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  Web Open Font Format (Version 2), TrueType, length 45300, version 1.0\012- data
Size:   45300
Md5:    5fe660c3a23b871807b0e1d3ee973d23
Sha1:   62a9dd423b30b6ee3ab3dd40d573545d579af10a
Sha256: e13ffa988be59cbf299d7ff68f019f902b60848203ac4990819eb7e4624ee52d
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            GET /s/oxygen/v15/2sDfZG1Wl4LcnbuKjk0m.woff2 HTTP/1.1 
Host: fonts.gstatic.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: identity
Origin: http://pleasuretroveboutique.com
Connection: keep-alive
Referer: https://fonts.googleapis.com/
Sec-Fetch-Dest: font
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         216.58.207.195
HTTP/2 200 OK
content-type: font/woff2
                                        
accept-ranges: bytes
access-control-allow-origin: *
content-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes
cross-origin-resource-policy: cross-origin
cross-origin-opener-policy: same-origin; report-to="apps-themes"
report-to: {"group":"apps-themes","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/apps-themes"}]}
timing-allow-origin: *
content-length: 16348
x-content-type-options: nosniff
server: sffe
x-xss-protection: 0
date: Mon, 26 Sep 2022 21:34:32 GMT
expires: Tue, 26 Sep 2023 21:34:32 GMT
cache-control: public, max-age=31536000
age: 520973
last-modified: Mon, 09 May 2022 18:31:32 GMT
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  Web Open Font Format (Version 2), TrueType, length 16348, version 1.0\012- data
Size:   16348
Md5:    8dc707b4818131fab44d482b1db5d458
Sha1:   8a0ff82b12fa25391ce17a6ae069d7fe5002f12d
Sha256: 9e64f128d5352d04ea5c87031e4cf1ad204b72a0afb003ece52eeb997d28a570
                                        
                                            GET /affiliates/banners/cb_a160x600_01.gif HTTP/1.1 
Host: static-assets.highwebmedia.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         104.16.93.42
HTTP/2 200 OK
content-type: image/gif
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 99027
x-amz-id-2: HKMi/Vq52ufBxH+duP/ZCvV1whxUIZ2/C4l1FLIB6ujdAtMCoKceWG8Y5JSsyusXrnDmG5scZnk=
x-amz-request-id: 8PT11KDH8WJ3P7S5
last-modified: Tue, 19 Jan 2021 22:00:56 GMT
etag: "a99da4ba23c1be20dd8498e4d482a3ab"
x-amz-meta-s3cmd-attrs: md5:a99da4ba23c1be20dd8498e4d482a3ab
cache-control: public, max-age=2592000
cf-cache-status: MISS
expires: Tue, 01 Nov 2022 22:17:25 GMT
accept-ranges: bytes
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=rqLA3orxkwTHuvHzrr1660KA66SJffVCpWBXDObd%2BsMisSJnZEeuMdk19XXLl0FT4QEMI8lwtbFx7AjMqmNrJ%2FLeQLOLWagf5WYOfc%2BMrLrrtvCnLCOnDkU2Hl1RLo4h3Cuk1E9fHJKh7qwPHpwFzg%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
vary: Accept-Encoding
set-cookie: _cfuvid=W9Iy9MDepqrPN9R1sqv6N87TIe4VEaV.Wqdu_RXTsdg-1664749045494-0-604800000; path=/; domain=.highwebmedia.com; HttpOnly; Secure; SameSite=None
server: cloudflare
cf-ray: 7540cedd3f46b527-OSL
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  GIF image data, version 89a, 160 x 600\012- data
Size:   99027
Md5:    a99da4ba23c1be20dd8498e4d482a3ab
Sha1:   16bf9338374cee2c95ea8e8b814ff25c3e18b752
Sha256: b7b0eb29be590ef72bf4035848d8c876e7ca58c56aea5dc60c408dde3d09508c
                                        
                                            GET /s/oxygen/v15/2sDcZG1Wl4LcnbuCJW8zaGW5.woff2 HTTP/1.1 
Host: fonts.gstatic.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: identity
Origin: http://pleasuretroveboutique.com
Connection: keep-alive
Referer: https://fonts.googleapis.com/
Sec-Fetch-Dest: font
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

                                         
                                         216.58.207.195
HTTP/2 200 OK
content-type: font/woff2
                                        
accept-ranges: bytes
access-control-allow-origin: *
content-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes
cross-origin-resource-policy: cross-origin
cross-origin-opener-policy: same-origin; report-to="apps-themes"
report-to: {"group":"apps-themes","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/apps-themes"}]}
timing-allow-origin: *
content-length: 15792
x-content-type-options: nosniff
server: sffe
x-xss-protection: 0
date: Tue, 27 Sep 2022 06:26:58 GMT
expires: Wed, 27 Sep 2023 06:26:58 GMT
cache-control: public, max-age=31536000
age: 489027
last-modified: Mon, 09 May 2022 18:30:32 GMT
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  Web Open Font Format (Version 2), TrueType, length 15792, version 1.0\012- data
Size:   15792
Md5:    94c3db6f7f5df851bc87a5bf309b9a89
Sha1:   986af9276cc364fe0b2a6801d4514fb3cd920cc3
Sha256: c5c877b2f70eaa51b17f81150decd43027fec02788fec5719be6befb12af115f
                                        
                                            POST /gts1c3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         142.250.74.3
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Cache-Control: public, max-age=14400
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

                                        
                                            POST / HTTP/1.1 
Host: ocsp.sca1b.amazontrust.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         13.224.227.57
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Content-Length: 471
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: 'max-age=158059'
Date: Sun, 02 Oct 2022 22:17:25 GMT
Last-Modified: Sun, 02 Oct 2022 22:10:08 GMT
Server: ECS (dcb/7F37)
X-Cache: Miss from cloudfront
Via: 1.1 b6a92d65d66a7dd6d685a94e79bd1aba.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: LHR61-C2
X-Amz-Cf-Id: Odkn8XPD8edDKRtM4FOtIpfC1G5LdXWpxSNJjl-dG5VAAoSgJnLX5Q==
Age: 437

                                        
                                            GET /wp-content/uploads/2020/12/fbu-150120x.jpg?6bfec1&6bfec1 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: image/jpeg
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Sat, 12 Dec 2020 18:10:49 GMT
ETag: "1d32-5b648542a6e0a-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:25 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 7455
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  JPEG image data, JFIF standard 1.01, resolution (DPI), density 100x100, segment length 16, baseline, precision 8, 150x120, components 3\012- data
Size:   7455
Md5:    91991bbd3e3171426c8872de4040f93c
Sha1:   a6c7a33905124e0db7c049371642daf7df7b73fb
Sha256: 11209990089ec007544cfea16cdb57251e77d5e447b11e36419601f3f2b4c482
                                        
                                            POST / HTTP/1.1 
Host: e1.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.76.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 345
ETag: "9EA6F6D75D91E8C417E5B3E3398308D8E20D4A4DDC60AFF27E21D301EE866523"
Last-Modified: Sat, 01 Oct 2022 12:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=15176
Expires: Mon, 03 Oct 2022 02:30:21 GMT
Date: Sun, 02 Oct 2022 22:17:25 GMT
Connection: keep-alive

                                        
                                            GET /wp-content/plugins/yith-woocommerce-wishlist/assets/fonts/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: identity
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/wp-content/plugins/yith-woocommerce-wishlist/assets/css/font-awesome.css?ver=4.7.0&6bfec1&6bfec1
Cookie: aiovg_rand_seed=158777655; _ga_FQBYBTMS1C=GS1.1.1664749044.1.0.1664749044.0.0.0; _ga=GA1.1.368433929.1664749044; _ga_S9FQ2RW338=GS1.1.1664749044.1.0.1664749044.0.0.0

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: application/font-woff2
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Wed, 21 Sep 2022 06:33:54 GMT
ETag: "12d68-5e92a20f5edff"
Accept-Ranges: bytes
Content-Length: 77160
Cache-Control: max-age=31536000, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:25 GMT
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Keep-Alive: timeout=3, max=494
Connection: Keep-Alive


--- Additional Info ---
Magic:  Web Open Font Format (Version 2), TrueType, length 77160, version 4.459\012- data
Size:   77160
Md5:    af7ae505a9eed503f8b8e6982036873e
Sha1:   d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c
Sha256: 2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe
                                        
                                            GET /05a/012/325/00c9b2c5dbe35b439cb4dec3b8629e8a_thumb_medium.jpg HTTP/1.1 
Host: i.bimbolive.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://bngpt.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         195.85.23.30
HTTP/2 200 OK
content-type: image/jpeg
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 8227
access-control-allow-origin: *
cache-control: max-age=2592000
cf-bgj: h2pri
etag: "62f53e44-2023"
expires: Wed, 26 Oct 2022 06:19:48 GMT
last-modified: Thu, 11 Aug 2022 17:37:08 GMT
x-o1-p5: EXPIRED
x-bc-o: 2
cf-cache-status: HIT
age: 203651
accept-ranges: bytes
vary: Accept-Encoding
strict-transport-security: max-age=15552000; includeSubDomains
x-content-type-options: nosniff
server: cloudflare
cf-ray: 7540cedf3836b503-OSL
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, progressive, precision 8, 232x174, components 3\012- data
Size:   8227
Md5:    da9b629c5b8771f8262c8aabed31f520
Sha1:   00295eaf6ec9d37d5f3c7e518df13afb4e670134
Sha256: a37b50ec6fb7dfa881a722f30e8b1f0951a59e7e7226ec32f65cd7432b8c84a2
                                        
                                            GET /034/253/08f/939738377e415a9d45a952029c2c56c6_thumb_medium.jpg HTTP/1.1 
Host: i.bimbolive.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://bngpt.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         195.85.23.30
HTTP/2 200 OK
content-type: image/jpeg
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 10152
access-control-allow-origin: *
cache-control: max-age=2592000
cf-bgj: h2pri
etag: "61a303d8-27a8"
expires: Wed, 19 Oct 2022 13:49:14 GMT
last-modified: Sun, 28 Nov 2021 04:21:44 GMT
x-o1-p3: STALE
x-bc-o: 1
cf-cache-status: HIT
age: 438464
accept-ranges: bytes
vary: Accept-Encoding
strict-transport-security: max-age=15552000; includeSubDomains
x-content-type-options: nosniff
server: cloudflare
cf-ray: 7540cedf3839b503-OSL
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, progressive, precision 8, 232x174, components 3\012- data
Size:   10152
Md5:    a1896a7cc4ee65e9ea45e704139529b5
Sha1:   2ee712954f6c6ea43b98e9cc9c26f34c73cc69e4
Sha256: 1c37dbbc63c0e0a0e3d825910919a95c17186ae4b380ecde462b09de8229affe
                                        
                                            GET /018/25b/245/c0aa8562d487c580d00fb18091ff3fa2_thumb_medium.jpg HTTP/1.1 
Host: i.bimbolive.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://bngpt.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         195.85.23.30
HTTP/2 200 OK
content-type: image/jpeg
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 10994
access-control-allow-origin: *
cache-control: max-age=2592000
cf-bgj: h2pri
etag: "61a1938b-2af2"
expires: Wed, 19 Oct 2022 13:49:01 GMT
last-modified: Sat, 27 Nov 2021 02:10:19 GMT
x-o1-p2: STALE
x-bc-o: 1
cf-cache-status: HIT
age: 1096307
accept-ranges: bytes
vary: Accept-Encoding
strict-transport-security: max-age=15552000; includeSubDomains
x-content-type-options: nosniff
server: cloudflare
cf-ray: 7540cedf3835b503-OSL
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  JPEG image data, progressive, precision 8, 232x174, components 3\012- data
Size:   10994
Md5:    5ed715edbfdbf229f23fe2bf21e45c86
Sha1:   2f58f71684e33a3921f3ba5576b2ba5b3442f982
Sha256: f1db3c8e0d40edcd73d90936ced39e6e600a36f7c63705f7a46db0aa02a493c6
                                        
                                            POST /gsgccr3dvtlsca2020 HTTP/1.1 
Host: ocsp.globalsign.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 79
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         104.18.21.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Content-Length: 1414
Connection: keep-alive
Expires: Thu, 06 Oct 2022 19:05:27 GMT
ETag: "5b49d0132039f90b6b6ebe51a8b970f9893b8032"
Last-Modified: Sun, 02 Oct 2022 19:05:28 GMT
Cache-Control: public, no-transform, must-revalidate, s-maxage=3600
CF-Cache-Status: HIT
Age: 3164
Accept-Ranges: bytes
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 7540cedf3de70afa-OSL


--- Additional Info ---
Magic:  data
Size:   1414
Md5:    91b94d6ee67995ca9d7d8350130b85e4
Sha1:   5b49d0132039f90b6b6ebe51a8b970f9893b8032
Sha256: 225addc179fb19dccff7ee46493019c98776b9717902c08c456e7017816bcd34
                                        
                                            GET /c/6.0.2/wp-includes/js/jquery/jquery-migrate.min.js HTTP/1.1 
Host: c0.wp.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         192.0.77.37
HTTP/2 200 OK
content-type: application/javascript
                                        
server: nginx
date: Sun, 02 Oct 2022 22:17:24 GMT
vary: Accept-Encoding
last-modified: Wed, 18 Nov 2020 09:06:06 GMT
content-encoding: br
expires: Mon, 02 Oct 2023 22:17:24 GMT
cache-control: max-age=31536000
strict-transport-security: max-age=15552000
x-nc: HIT arn 1
timing-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-allow-origin: *
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  ASCII text, with very long lines (11126)
Size:   7871
Md5:    fc5036a5f5f9c1e7a846737c402dcdaa
Sha1:   85f45adde6a1fdafa04c6510ab69c7d13587b405
Sha256: 9a60c017c7882e72ae7fcf54d89d9345f2777c19043a4b57a3392683f27ed82b
                                        
                                            POST / HTTP/1.1 
Host: r3.o.lencr.org
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 85
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         23.36.77.32
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Server: nginx
Content-Length: 503
ETag: "CB2E89F9CA7DC17D38C9DD3155EA4B21F928A36DCF907E51322C70C275F57C97"
Last-Modified: Sat, 01 Oct 2022 12:00:00 UTC
Cache-Control: public, no-transform, must-revalidate, max-age=13180
Expires: Mon, 03 Oct 2022 01:57:05 GMT
Date: Sun, 02 Oct 2022 22:17:25 GMT
Connection: keep-alive

                                        
                                            GET /releasese/ActivePage1473.asp?WID=126564754605&LinkID=702&QueryID=138&promocode=BCODE837C3H3F_00000 HTTP/1.1 
Host: pc2121.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: iframe
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site

                                         
                                         54.88.125.120
HTTP/2 200 OK
content-type: text/html
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 3191
cache-control: no-cache
content-encoding: gzip
expires: Mon, 06 Jan 2020 22:17:24 GMT
vary: Accept-Encoding
server: Microsoft-IIS/10.0
set-cookie: pcsiml=LocationByIP=41%2C03%2Coslo; expires=Sun, 09-Oct-2022 00:00:00 GMT; path=/ ASPSESSIONIDQARCQARA=DLJPIOPAIOILJOMELKJKKEHO; path=/
x-powered-by: ASP20.NET
n: a2
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- HTML document text\012- assembler source, ASCII text, with CRLF line terminators
Size:   3191
Md5:    42ec18f89fe45e3a222238ee2806ed24
Sha1:   9bd6b10e98187a370535408404dc149213f55bea
Sha256: b274b5f03375b31e7751b84c2eeb37353b8a292e45f3d5c3cd69e29a75253901
                                        
                                            GET /chatinline.aspx?hccid=99068201 HTTP/1.1 
Host: mylivechat.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         52.117.22.28
HTTP/1.1 302 Found
Content-Type: text/html; charset=utf-8
                                        
Cache-Control: private
Location: https://c1.mylivechat.com/livechat2/livechat2.aspx?hccid=99068201&apimode=chatinline
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Date: Sun, 02 Oct 2022 22:17:26 GMT
Content-Length: 205


--- Additional Info ---
Magic:  HTML document text\012- HTML document text\012- HTML document text\012- HTML document, ASCII text, with CRLF line terminators
Size:   205
Md5:    aef0d2528ef0060905499800abecef39
Sha1:   c4b50494b2a07c6627753d77078e54abae18b51b
Sha256: 910323506c10932e5bb70cfaacc7632a6ccc74296055ae896156f11a3225af64
                                        
                                            GET /delivery/gl/16646?&categories=general,gay,ebony,amateur,teen,shemale,bbw,babe,vr,dating,women_dating,gay_dating,lesbian_dating,trans_dating&rows=6&columns=1&width=200&height=300&borderColor=000000&borderHoverColor=ff0096&borderWidth=2&showText=1&textColor=000000&textHoverColor=ff0096&channel=pleasuretroveboutique HTTP/1.1 
Host: traffdaq.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/

                                         
                                         165.227.253.207
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
Server: nginx
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.3.4
Cache-Control: no-cache, private
Date: Sun, 02 Oct 2022 22:17:25 GMT
Set-Cookie: XSRF-TOKEN=eyJpdiI6IlRLNkZIUkdCbEl1NEd6NnBpaWJmdnc9PSIsInZhbHVlIjoiQkxqWG5lcEd3V3pBZ2krRG54a3IrbGNWN05LQTh5dTdvWXZnVW1WbXEzc3VuWDF1TnRObGJnYldWTDYyYW5oNVNaYzBPOVVlUVNxeW1ITTFWSHhSK21rak5JWkZoOW9SKzZuMUl2bVpnblpybW9GaDVxbVlmbktwbEdjTDZxQVgiLCJtYWMiOiIyZjQ4Njk3NDAxZTEzYzgzZGQyZjQyM2RmZGMxODA4NzY2NDQ4YjEyNzU4OGI1ODgxZDdiYmU1NTM3MzllNGVhIiwidGFnIjoiIn0%3D; expires=Mon, 03-Oct-2022 00:17:25 GMT; Max-Age=7200; path=/; samesite=lax laravel_session=eyJpdiI6IjJPSDVFOXJSb2lldlNPWkg0a1RUVEE9PSIsInZhbHVlIjoiOFhXWFdYNWdBeXJpS08rRnIxS09xNHViMHRkdGJxVWRKWWg3Q1hCRjM3c3JGbHptTXNEWnkwcW9XZ0xkRy9lZlVSQjJ6aU5WUzNoSmxackNhdmNXOW85clZCdkdlemQ0OXRHbE93WXVoL0NQSGRoMlFqTXF5VTdvazFEa3ROZDMiLCJtYWMiOiJhMTk4NjI5ZTg3MDcyMWI1MWQwZTEwYjM3YzlmNTJjM2RjYjM2YjhkMDEyODQwMzliYmQ2ZDAxZjIzMjA1YTcyIiwidGFnIjoiIn0%3D; expires=Mon, 03-Oct-2022 00:17:25 GMT; Max-Age=7200; path=/; httponly; samesite=lax TDQCI=eyJpdiI6InZ1REROU1M1bUVPc2pLbExHR0VCVXc9PSIsInZhbHVlIjoickxYaWk3cDB3RzViaGZDVzRkaVYvUURHWHdtZkFqbTRycGt4QWRLV2pHdHQxK1ZJeFB4ZmQ3UW9VN0NQUmZrdGVlUXFHaW9xR0Y3eU5rNWtkN3QrZFE9PSIsIm1hYyI6ImE0MGQ3NmFhMTk4YmM4ZGI3MjgzYjA5YzhlZWFmZGVmMWVkODc0M2UzMTI4NTUwM2JlYmQxNjMyZGJlYzQ5ZTMiLCJ0YWciOiIifQ%3D%3D; expires=Sun, 02-Oct-2022 22:18:25 GMT; Max-Age=60; path=/; httponly; samesite=lax hashes=eyJpdiI6IndTU1krV0FvZmJNU2NucGcrM3NlQ2c9PSIsInZhbHVlIjoiNitnQWliQUJPUXNwUVYrR0FrSzNqYmpLbFE4YUY1YW81cWJCWlprZmIveVAzK2JycjF1Y2VCRkFXU2MxdjMrVCt4ZVdQTVYwMmh3UUdsZzZ1L3NHZ2VZWHJ4V2dGU2YyYkF1KytNYjVjTGc9IiwibWFjIjoiMTA1N2I1NjZjOWMzMTFlNTZkYjdjOWY2MTk4ZmZhMzc4ZDI4NjdmNjk4MTE4MTU5NTE0MDNiMjI3NDQ5ZjIxMSIsInRhZyI6IiJ9; path=/; httponly; samesite=lax


--- Additional Info ---
Magic:  ASCII text, with very long lines (5051)
Size:   5448
Md5:    cb40342b8f09755e459e527f19c158fc
Sha1:   e3102120a0849f35fb87914208774999f4a28b31
Sha256: 6a49a5c864aad881ab1ed2cdf5dd050d404c649f11b2add49081ad98c6fd7655
                                        
                                            GET /js/external/share.js HTTP/1.1 
Host: www.xing-share.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: script
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         109.233.159.12
HTTP/1.1 200 OK
Content-Type: application/x-javascript
                                        
Date: Sun, 02 Oct 2022 22:08:57 GMT
Last-Modified: Mon, 04 Jul 2022 12:12:23 GMT
ETag: "62c2d927-2943"
Content-Encoding: gzip
Vary: Accept-Encoding
X-Varnish: 483379240 483189284
Age: 508
Via: 1.1 varnish (Varnish/6.2)
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Accept-Ranges: bytes
Content-Length: 4390
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
X-UA-Compatible: IE=edge
X-XSS-Protection: 1; mode=block;
Strict-Transport-Security: max-age=31556926


--- Additional Info ---
Magic:  ASCII text, with very long lines (10530)
Size:   4390
Md5:    7938a14733f5fd3ddaa69f2b180435dd
Sha1:   e2dc4e0eb7f4d774e5d3f9b9f7335518c7d81463
Sha256: 9be07069c60de7bbcd44937746b1b81874328f5a5ffdf15049f13aef77b1cacc
                                        
                                            POST / HTTP/1.1 
Host: ocsp.usertrust.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         172.64.155.188
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Content-Length: 471
Connection: keep-alive
Last-Modified: Sun, 02 Oct 2022 02:39:42 GMT
Expires: Sun, 09 Oct 2022 02:39:41 GMT
Etag: "874e87453a15e3096ea1104e9a5b77622fe86d41"
Cache-Control: max-age=603356,s-maxage=1800,public,no-transform,must-revalidate
X-CCACDN-Proxy-ID: mcdpinlb6
X-Frame-Options: SAMEORIGIN
CF-Cache-Status: HIT
Age: 1313
Accept-Ranges: bytes
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 7540cedfdfe6b4e8-OSL

                                        
                                            POST / HTTP/1.1 
Host: ocsp.usertrust.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         172.64.155.188
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Content-Length: 471
Connection: keep-alive
Last-Modified: Sun, 02 Oct 2022 02:39:42 GMT
Expires: Sun, 09 Oct 2022 02:39:41 GMT
Etag: "874e87453a15e3096ea1104e9a5b77622fe86d41"
Cache-Control: max-age=603356,s-maxage=1800,public,no-transform,must-revalidate
X-CCACDN-Proxy-ID: mcdpinlb6
X-Frame-Options: SAMEORIGIN
CF-Cache-Status: HIT
Age: 1313
Accept-Ranges: bytes
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 7540cee03846b4e8-OSL

                                        
                                            POST / HTTP/1.1 
Host: ocsp.usertrust.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         172.64.155.188
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Content-Length: 471
Connection: keep-alive
Last-Modified: Sun, 02 Oct 2022 02:39:42 GMT
Expires: Sun, 09 Oct 2022 02:39:41 GMT
Etag: "874e87453a15e3096ea1104e9a5b77622fe86d41"
Cache-Control: max-age=603356,s-maxage=1800,public,no-transform,must-revalidate
X-CCACDN-Proxy-ID: mcdpinlb6
X-Frame-Options: SAMEORIGIN
CF-Cache-Status: HIT
Age: 1313
Accept-Ranges: bytes
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 7540cee03a3cb527-OSL

                                        
                                            GET /wp-content/uploads/2022/09/kaileeshy.png HTTP/1.1 
Host: pleasuretroveboutique.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: http://pleasuretroveboutique.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

                                         
                                         70.32.23.76
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Last-Modified: Mon, 05 Sep 2022 21:56:28 GMT
ETag: "d935-5e7f526d74e71-gzip"
Accept-Ranges: bytes
Cache-Control: max-age=604800, public, public, must-revalidate, proxy-revalidate
Expires: Mon, 02 Oct 2023 22:17:25 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Pragma: public
X-Powered-By: W3 Total Cache/0.9.4.6.4
Content-Length: 55615
Keep-Alive: timeout=3, max=500
Connection: Keep-Alive


--- Additional Info ---
Magic:  PNG image data, 262 x 161, 8-bit/color RGB, non-interlaced\012- data
Size:   55615
Md5:    311fed530a22aed357fd670be37f4583
Sha1:   7ee615a7f4fe0971f13303dfdd9c64479efaa99b
Sha256: 8ce3f0c686347da35f3c881d0a4a3e7eacf4cb3a9b6fb5c02d8f0b69d4d99fcb
                                        
                                            POST / HTTP/1.1 
Host: ocsp.usertrust.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

                                         
                                         172.64.155.188
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Sun, 02 Oct 2022 22:17:25 GMT
Content-Length: 471
Connection: keep-alive
Last-Modified: Sun, 02 Oct 2022 02:39:42 GMT
Expires: Sun, 09 Oct 2022 02:39:41 GMT
Etag: "874e87453a15e3096ea1104e9a5b77622fe86d41"
Cache-Control: max-age=603356,s-maxage=1800,public,no-transform,must-revalidate
X-CCACDN-Proxy-ID: mcdpinlb6
X-Frame-Options: SAMEORIGIN
CF-Cache-Status: HIT
Age: 1313
Accept-Ranges: bytes
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 7540cee04e26b51d-OSL

                                        
                                            GET /dynamic_banner/images/lang/english.png HTTP/1.1 
Host: i.bcprm.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://bngpt.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         64.210.135.151
HTTP/2 200 OK
content-type: image/png
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 542
last-modified: Tue, 18 Jun 2019 13:44:19 GMT
expires: Sat, 14 Nov 2020 07:18:41 GMT
cache-control: max-age=2592000
accept-ranges: bytes
x-cdn-diag: ams5-6296-7-44360-h-0-0---;6296-22-31694----0-0-1
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PNG image data, 16 x 16, 8-bit colormap, non-interlaced\012- data
Size:   542
Md5:    03a157beed587d63440f363d9bf39d0e
Sha1:   2c848a1a1dbd425c7c9d2e9ca790ed6c96c72e93
Sha256: 097f8db12c193936f803052d0e27068c5e8959011a541b12d609c5c73d464d52
                                        
                                            GET /dynamic_banner/images/logo2_default.png HTTP/1.1 
Host: i.bcprm.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://bngpt.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         64.210.135.151
HTTP/2 200 OK
content-type: image/png
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 3813
last-modified: Tue, 18 Jun 2019 13:44:19 GMT
expires: Fri, 15 Jan 2021 11:19:54 GMT
cache-control: max-age=2592000
accept-ranges: bytes
x-cdn-diag: ams5-7734-7-33356-h-0-0---;6296-22-31694----0-1-0
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PNG image data, 228 x 55, 8-bit/color RGBA, non-interlaced\012- data
Size:   3813
Md5:    5f9e278767291039059529b5d0bde85c
Sha1:   d66de1002275b6be28edcb6d5c20c69745510688
Sha256: ea5bb79665ee9cab463d102ec757ae3028aab2c32267326aeb6c1a8aa978cc4f
                                        
                                            GET /dynamic_banner/images/lang/russian.png HTTP/1.1 
Host: i.bcprm.com
                                        
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: image/avif,image/webp,*/*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://bngpt.com/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
TE: trailers

                                         
                                         64.210.135.151
HTTP/2 200 OK
content-type: image/png
                                        
date: Sun, 02 Oct 2022 22:17:25 GMT
content-length: 287
last-modified: Tue, 18 Jun 2019 13:44:19 GMT
expires: Sat, 14 Nov 2020 07:18:42 GMT
cache-control: max-age=2592000
accept-ranges: bytes
x-cdn-diag: ams5-7735-3-46154-h-0-0---;6296-22-31694----0-0-1
X-Firefox-Spdy: h2


--- Additional Info ---
Magic:  PNG image data, 16 x 16, 8-bit colormap, non-interlaced\012- data
Size:   287
Md5:    42a3f939f0021d64159941dae12becbe
Sha1:   57c40bad672317622ab256378fafa750f1f1e947
Sha256: 4bfa891ddc3786bc6ad204bb6e25cfa3f70d4e2a2bd9a47d5d1354d1d13ea492