!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=301)}({2:function(e,t){e.exports=window.wp.i18n},204:function(e,t){e.exports=window.wp.domReady},254:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(204),o=n.n(r);const c={recordEvent:()=>null};function i(e,t){o()(()=>{window.wcTracks&&window.wcTracks.isEnabled&&(window.wc&&window.wc.tracks&&window.wc.tracks.recordEvent&&"function"==typeof window.wc.tracks.recordEvent?window.wc.tracks:window.wcTracks&&window.wcTracks.recordEvent?window.wcTracks:c).recordEvent(e,t)})}},301:function(e,t,n){"use strict";n.r(t);var r=n(4),o=n(2),c=n(204),i=n.n(c),a=n(254);i()(()=>{if(!wc_stripe_old_settings_param)return;const{was_upe_enabled:e,is_upe_enabled:t}=wc_stripe_old_settings_param;if("1"!==t&&Object(r.dispatch)("core/notices").createSuccessNotice(Object(o.__)("🤔 What made you disable the new payments experience?","woocommerce-gateway-stripe"),{actions:[{label:Object(o.__)("Share feedback (1 min)","woocommerce-gateway-stripe"),url:"https://woocommerce.survey.fm/woocommerce-stripe-upe-opt-out-survey"}]}),e!==t){const e=t?"wcstripe_upe_enabled":"wcstripe_upe_disabled";Object(a.a)(e)}})},4:function(e,t){e.exports=window.wp.data}});