diff --git a/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-admin-css-98d54febeadaa74bad87.min.css b/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-admin-css-98d54febeadaa74bad87.min.css new file mode 100644 index 000000000..8189f8878 --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-admin-css-98d54febeadaa74bad87.min.css @@ -0,0 +1 @@ +.mdc-button{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:2.25rem;font-weight:500;letter-spacing:.0892857143em;text-decoration:none;text-transform:uppercase;padding:0 8px 0 8px;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;height:36px;border:none;outline:none;line-height:inherit;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;overflow:hidden;vertical-align:middle;border-radius:4px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{background-color:transparent;color:rgba(0,0,0,.37);cursor:default;pointer-events:none}.mdc-button.mdc-button--dense{border-radius:4px}.mdc-button:not(:disabled){background-color:transparent}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;width:18px;height:18px;font-size:18px;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button:not(:disabled){color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--raised .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon,.mdc-button--outlined .mdc-button__icon{margin-left:-4px;margin-right:8px}[dir=rtl] .mdc-button--raised .mdc-button__icon,.mdc-button--raised .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__icon,.mdc-button--outlined .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--raised .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mdc-button--raised,.mdc-button--unelevated{padding:0 16px 0 16px}.mdc-button--raised:disabled,.mdc-button--unelevated:disabled{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.37)}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){color:#fff;color:#fff;color:var(--mdc-theme-on-primary, #fff)}.mdc-button--raised{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2),0px 2px 2px 0px rgba(0, 0, 0, 0.14),0px 1px 5px 0px rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--raised:hover,.mdc-button--raised:focus{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0,0,0,.12)}.mdc-button--raised:active{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0,0,0,.12)}.mdc-button--raised:disabled{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2),0px 0px 0px 0px rgba(0, 0, 0, 0.14),0px 0px 0px 0px rgba(0,0,0,.12)}.mdc-button--outlined{border-style:solid;padding:0 15px 0 15px;border-width:1px}.mdc-button--outlined:disabled{border-color:rgba(0,0,0,.37)}.mdc-button--outlined:not(:disabled){border-color:#3c7251;border-color:#3c7251;border-color:var(--mdc-theme-primary, #3c7251)}.mdc-button--dense{height:32px;font-size:.8125rem}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:0;opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:0;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface--test-edge-var-bug{--mdc-ripple-surface-test-edge-var: 1px solid #000;visibility:hidden}.mdc-ripple-surface--test-edge-var-bug::before{border:var(--mdc-ripple-surface-test-edge-var)}.mdc-button{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-button::before,.mdc-button::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-button::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-button.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-button.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-button.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-button.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button::before,.mdc-button::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-button.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-button::before,.mdc-button::after{background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-button::before,.mdc-button::after{background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-button:hover::before{opacity:.04}.mdc-button:not(.mdc-ripple-upgraded):focus::before,.mdc-button.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-button:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-button:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-button--raised::before,.mdc-button--raised::after,.mdc-button--unelevated::before,.mdc-button--unelevated::after{background-color:#fff}@supports not (-ms-ime-align: auto){.mdc-button--raised::before,.mdc-button--raised::after,.mdc-button--unelevated::before,.mdc-button--unelevated::after{background-color:#fff;background-color:var(--mdc-theme-on-primary, #fff)}}.mdc-button--raised:hover::before,.mdc-button--unelevated:hover::before{opacity:.08}.mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,.mdc-button--raised.mdc-ripple-upgraded--background-focused::before,.mdc-button--unelevated:not(.mdc-ripple-upgraded):focus::before,.mdc-button--unelevated.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.mdc-button--raised:not(.mdc-ripple-upgraded)::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-button--raised:not(.mdc-ripple-upgraded):active::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.mdc-button--raised.mdc-ripple-upgraded,.mdc-button--unelevated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;padding:11px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}.mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:rgba(0,0,0,.54);background-color:transparent}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:#446199;border-color:#446199;border-color:var(--mdc-theme-secondary, #446199);background-color:#446199;background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}@keyframes mdc-checkbox-fade-in-background-0{0%{border-color:rgba(0,0,0,.54);background-color:transparent}50%{border-color:#446199;border-color:#446199;border-color:var(--mdc-theme-secondary, #446199);background-color:#446199;background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}}@keyframes mdc-checkbox-fade-out-background-0{0%,80%{border-color:#446199;border-color:#446199;border-color:var(--mdc-theme-secondary, #446199);background-color:#446199;background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}100%{border-color:rgba(0,0,0,.54);background-color:transparent}}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-0}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-0}.mdc-checkbox__checkmark{color:#fff}.mdc-checkbox__mixedmark{border-color:#fff}.mdc-checkbox__background::before{background-color:#446199}@supports not (-ms-ime-align: auto){.mdc-checkbox__background::before{background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}}.mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:rgba(0,0,0,.26)}.mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background{border-color:transparent;background-color:rgba(0,0,0,.26)}@media screen and (-ms-high-contrast: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{left:11px;right:auto;right:initial;display:inline-flex;position:absolute;top:11px;bottom:0;align-items:center;justify-content:center;box-sizing:border-box;width:45%;height:45%;border:2px solid currentColor;border-radius:2px;background-color:transparent;pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox[dir=rtl] .mdc-checkbox__background,[dir=rtl] .mdc-checkbox .mdc-checkbox__background{left:auto;left:initial;right:11px}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none !important}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__background::before{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";will-change:opacity,transform;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:focus~.mdc-checkbox__background::before{transform:scale(2.75, 2.75);opacity:.12;transition:opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-checkbox::before,.mdc-checkbox::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-checkbox::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-checkbox.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-checkbox.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-checkbox.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-checkbox.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-checkbox.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-checkbox::before,.mdc-checkbox::after{background-color:#446199}@supports not (-ms-ime-align: auto){.mdc-checkbox::before,.mdc-checkbox::after{background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}}.mdc-checkbox:hover::before{opacity:.04}.mdc-checkbox:not(.mdc-ripple-upgraded):focus::before,.mdc-checkbox.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-checkbox:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-checkbox:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-checkbox.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-checkbox::before,.mdc-checkbox::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-checkbox.mdc-ripple-upgraded::before,.mdc-checkbox.mdc-ripple-upgraded::after{top:calc(50% - 50%);top:var(--mdc-ripple-top, calc(50% - 50%));left:calc(50% - 50%);left:var(--mdc-ripple-left, calc(50% - 50%));width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-checkbox.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-upgraded--background-focused .mdc-checkbox__background::before{content:none}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:7}.mdc-dialog .mdc-dialog__surface{background-color:#fff;background-color:#fff;background-color:var(--mdc-theme-surface, #fff)}.mdc-dialog .mdc-dialog__scrim{background-color:rgba(0,0,0,.32)}.mdc-dialog .mdc-dialog__title{color:rgba(0,0,0,.87)}.mdc-dialog .mdc-dialog__content{color:rgba(0,0,0,.6)}.mdc-dialog.mdc-dialog--scrollable .mdc-dialog__title,.mdc-dialog.mdc-dialog--scrollable .mdc-dialog__actions{border-color:rgba(0,0,0,.12)}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100vh - 32px)}.mdc-dialog .mdc-dialog__surface{border-radius:4px}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;justify-content:space-around;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-dialog__surface{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2),0px 24px 38px 3px rgba(0, 0, 0, 0.14),0px 9px 46px 8px rgba(0,0,0,.12);display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%}.mdc-dialog[dir=rtl] .mdc-dialog__surface,[dir=rtl] .mdc-dialog .mdc-dialog__surface{text-align:right}.mdc-dialog__title{display:block;margin-top:0;line-height:normal;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1.25rem;line-height:2rem;font-weight:500;letter-spacing:.0125em;text-decoration:inherit;text-transform:inherit;display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0;padding:0 24px 9px;border-bottom:1px solid transparent}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-dialog[dir=rtl] .mdc-dialog__title,[dir=rtl] .mdc-dialog .mdc-dialog__title{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{padding-bottom:15px}.mdc-dialog__content{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.5rem;font-weight:400;letter-spacing:.03125em;text-decoration:inherit;text-transform:inherit;flex-grow:1;box-sizing:border-box;margin:0;padding:20px 24px;overflow:auto;-webkit-overflow-scrolling:touch}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid transparent}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}.mdc-dialog[dir=rtl] .mdc-dialog__button,[dir=rtl] .mdc-dialog .mdc-dialog__button{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:scale(1)}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:scale(1);opacity:1}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-form-field{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:1.25rem;font-weight:400;letter-spacing:.0178571429em;text-decoration:inherit;text-transform:inherit;color:rgba(0,0,0,.87);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field>label{order:0;margin-right:auto;padding-left:4px}[dir=rtl] .mdc-form-field>label,.mdc-form-field[dir=rtl]>label{margin-left:auto;padding-right:4px}.mdc-form-field--align-end>label{order:-1;margin-left:auto;padding-right:4px}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end[dir=rtl]>label{margin-right:auto;padding-left:4px}:root{--mdc-layout-grid-margin-desktop: 24px;--mdc-layout-grid-gutter-desktop: 24px;--mdc-layout-grid-column-width-desktop: 72px;--mdc-layout-grid-margin-tablet: 16px;--mdc-layout-grid-gutter-tablet: 16px;--mdc-layout-grid-column-width-tablet: 72px;--mdc-layout-grid-margin-phone: 16px;--mdc-layout-grid-gutter-phone: 16px;--mdc-layout-grid-column-width-phone: 72px}@media(min-width: 961px){.mdc-layout-grid{box-sizing:border-box;margin:0 auto;padding:24px;padding:24px;padding:var(--mdc-layout-grid-margin-desktop, 24px)}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid{box-sizing:border-box;margin:0 auto;padding:16px;padding:16px;padding:var(--mdc-layout-grid-margin-tablet, 16px)}}@media(max-width: 600px){.mdc-layout-grid{box-sizing:border-box;margin:0 auto;padding:16px;padding:16px;padding:var(--mdc-layout-grid-margin-phone, 16px)}}@media(min-width: 961px){.mdc-layout-grid__inner{display:flex;flex-flow:row wrap;align-items:stretch;margin:-12px;margin:calc(24px / 2 * -1);margin:calc(var(--mdc-layout-grid-gutter-desktop, 24px) / 2 * -1)}@supports(display: grid){.mdc-layout-grid__inner{display:grid;margin:0;grid-gap:24px;grid-gap:24px;grid-gap:var(--mdc-layout-grid-gutter-desktop, 24px);grid-template-columns:repeat(12, minmax(0, 1fr))}}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid__inner{display:flex;flex-flow:row wrap;align-items:stretch;margin:-8px;margin:calc(16px / 2 * -1);margin:calc(var(--mdc-layout-grid-gutter-tablet, 16px) / 2 * -1)}@supports(display: grid){.mdc-layout-grid__inner{display:grid;margin:0;grid-gap:16px;grid-gap:16px;grid-gap:var(--mdc-layout-grid-gutter-tablet, 16px);grid-template-columns:repeat(8, minmax(0, 1fr))}}}@media(max-width: 600px){.mdc-layout-grid__inner{display:flex;flex-flow:row wrap;align-items:stretch;margin:-8px;margin:calc(16px / 2 * -1);margin:calc(var(--mdc-layout-grid-gutter-phone, 16px) / 2 * -1)}@supports(display: grid){.mdc-layout-grid__inner{display:grid;margin:0;grid-gap:16px;grid-gap:16px;grid-gap:var(--mdc-layout-grid-gutter-phone, 16px);grid-template-columns:repeat(4, minmax(0, 1fr))}}}@media(min-width: 961px){.mdc-layout-grid__cell{width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px));box-sizing:border-box;margin:12px;margin:calc(24px / 2);margin:calc(var(--mdc-layout-grid-gutter-desktop, 24px) / 2)}@supports(display: grid){.mdc-layout-grid__cell{width:auto;grid-column-end:span 4}}@supports(display: grid){.mdc-layout-grid__cell{margin:0}}.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-desktop{width:calc(8.3333333333% - 24px);width:calc(8.3333333333% - 24px);width:calc(8.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-desktop{width:auto;grid-column-end:span 1}}.mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-desktop{width:calc(16.6666666667% - 24px);width:calc(16.6666666667% - 24px);width:calc(16.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-desktop{width:auto;grid-column-end:span 2}}.mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-desktop{width:calc(25% - 24px);width:calc(25% - 24px);width:calc(25% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-desktop{width:auto;grid-column-end:span 3}}.mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-desktop{width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-desktop{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-desktop{width:calc(41.6666666667% - 24px);width:calc(41.6666666667% - 24px);width:calc(41.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-desktop{width:auto;grid-column-end:span 5}}.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-desktop{width:calc(50% - 24px);width:calc(50% - 24px);width:calc(50% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-desktop{width:auto;grid-column-end:span 6}}.mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-desktop{width:calc(58.3333333333% - 24px);width:calc(58.3333333333% - 24px);width:calc(58.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-desktop{width:auto;grid-column-end:span 7}}.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-desktop{width:calc(66.6666666667% - 24px);width:calc(66.6666666667% - 24px);width:calc(66.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-desktop{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-desktop{width:calc(75% - 24px);width:calc(75% - 24px);width:calc(75% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-desktop{width:auto;grid-column-end:span 9}}.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-desktop{width:calc(83.3333333333% - 24px);width:calc(83.3333333333% - 24px);width:calc(83.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-desktop{width:auto;grid-column-end:span 10}}.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-desktop{width:calc(91.6666666667% - 24px);width:calc(91.6666666667% - 24px);width:calc(91.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-desktop{width:auto;grid-column-end:span 11}}.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-desktop{width:calc(100% - 24px);width:calc(100% - 24px);width:calc(100% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-desktop{width:auto;grid-column-end:span 12}}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid__cell{width:calc(50% - 16px);width:calc(50% - 16px);width:calc(50% - var(--mdc-layout-grid-gutter-tablet, 16px));box-sizing:border-box;margin:8px;margin:calc(16px / 2);margin:calc(var(--mdc-layout-grid-gutter-tablet, 16px) / 2)}@supports(display: grid){.mdc-layout-grid__cell{width:auto;grid-column-end:span 4}}@supports(display: grid){.mdc-layout-grid__cell{margin:0}}.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-tablet{width:calc(12.5% - 16px);width:calc(12.5% - 16px);width:calc(12.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-tablet{width:auto;grid-column-end:span 1}}.mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-tablet{width:calc(25% - 16px);width:calc(25% - 16px);width:calc(25% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-tablet{width:auto;grid-column-end:span 2}}.mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-tablet{width:calc(37.5% - 16px);width:calc(37.5% - 16px);width:calc(37.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-tablet{width:auto;grid-column-end:span 3}}.mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-tablet{width:calc(50% - 16px);width:calc(50% - 16px);width:calc(50% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-tablet{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-tablet{width:calc(62.5% - 16px);width:calc(62.5% - 16px);width:calc(62.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-tablet{width:auto;grid-column-end:span 5}}.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-tablet{width:calc(75% - 16px);width:calc(75% - 16px);width:calc(75% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-tablet{width:auto;grid-column-end:span 6}}.mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-tablet{width:calc(87.5% - 16px);width:calc(87.5% - 16px);width:calc(87.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-tablet{width:auto;grid-column-end:span 7}}.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-tablet{width:auto;grid-column-end:span 8}}}@media(max-width: 600px){.mdc-layout-grid__cell{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px));box-sizing:border-box;margin:8px;margin:calc(16px / 2);margin:calc(var(--mdc-layout-grid-gutter-phone, 16px) / 2)}@supports(display: grid){.mdc-layout-grid__cell{width:auto;grid-column-end:span 4}}@supports(display: grid){.mdc-layout-grid__cell{margin:0}}.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-phone{width:calc(25% - 16px);width:calc(25% - 16px);width:calc(25% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-phone{width:auto;grid-column-end:span 1}}.mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-phone{width:calc(50% - 16px);width:calc(50% - 16px);width:calc(50% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-phone{width:auto;grid-column-end:span 2}}.mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-phone{width:calc(75% - 16px);width:calc(75% - 16px);width:calc(75% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-phone{width:auto;grid-column-end:span 3}}.mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-phone{width:auto;grid-column-end:span 4}}}.mdc-layout-grid__cell--order-1{order:1}.mdc-layout-grid__cell--order-2{order:2}.mdc-layout-grid__cell--order-3{order:3}.mdc-layout-grid__cell--order-4{order:4}.mdc-layout-grid__cell--order-5{order:5}.mdc-layout-grid__cell--order-6{order:6}.mdc-layout-grid__cell--order-7{order:7}.mdc-layout-grid__cell--order-8{order:8}.mdc-layout-grid__cell--order-9{order:9}.mdc-layout-grid__cell--order-10{order:10}.mdc-layout-grid__cell--order-11{order:11}.mdc-layout-grid__cell--order-12{order:12}.mdc-layout-grid__cell--align-top{align-self:flex-start}@supports(display: grid){.mdc-layout-grid__cell--align-top{align-self:start}}.mdc-layout-grid__cell--align-middle{align-self:center}.mdc-layout-grid__cell--align-bottom{align-self:flex-end}@supports(display: grid){.mdc-layout-grid__cell--align-bottom{align-self:end}}@media(min-width: 961px){.mdc-layout-grid--fixed-column-width{width:1176px;width:calc( 72px * 12 + 24px * 11 + 24px * 2 );width:calc( var(--mdc-layout-grid-column-width-desktop, 72px) * 12 + var(--mdc-layout-grid-gutter-desktop, 24px) * 11 + var(--mdc-layout-grid-margin-desktop, 24px) * 2 )}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid--fixed-column-width{width:720px;width:calc( 72px * 8 + 16px * 7 + 16px * 2 );width:calc( var(--mdc-layout-grid-column-width-tablet, 72px) * 8 + var(--mdc-layout-grid-gutter-tablet, 16px) * 7 + var(--mdc-layout-grid-margin-tablet, 16px) * 2 )}}@media(max-width: 600px){.mdc-layout-grid--fixed-column-width{width:368px;width:calc( 72px * 4 + 16px * 3 + 16px * 2 );width:calc( var(--mdc-layout-grid-column-width-phone, 72px) * 4 + var(--mdc-layout-grid-gutter-phone, 16px) * 3 + var(--mdc-layout-grid-margin-phone, 16px) * 2 )}}.mdc-layout-grid--align-left{margin-right:auto;margin-left:0}.mdc-layout-grid--align-right{margin-right:0;margin-left:auto}@keyframes primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes buffering{to{transform:translateX(-10px)}}@keyframes primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes buffering-reverse{to{transform:translateX(10px)}}.mdc-linear-progress{position:relative;width:100%;height:4px;transform:translateZ(0);transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);overflow:hidden}.mdc-linear-progress__bar{position:absolute;width:100%;height:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;height:100%;animation:none}.mdc-linear-progress__buffering-dots{position:absolute;width:100%;height:100%;animation:buffering 250ms infinite linear;background-repeat:repeat-x;background-size:10px 4px}.mdc-linear-progress__buffer{position:absolute;width:100%;height:100%;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar{visibility:hidden}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%;animation:primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;animation:secondary-indeterminate-translate 2s infinite linear;visibility:visible}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:secondary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--reversed .mdc-linear-progress__bar,.mdc-linear-progress--reversed .mdc-linear-progress__buffer{right:0;transform-origin:center right}.mdc-linear-progress--reversed .mdc-linear-progress__primary-bar{animation-name:primary-indeterminate-translate-reverse}.mdc-linear-progress--reversed .mdc-linear-progress__secondary-bar{animation-name:secondary-indeterminate-translate-reverse}.mdc-linear-progress--reversed .mdc-linear-progress__buffering-dots{animation:buffering-reverse 250ms infinite linear}.mdc-linear-progress--closed{opacity:0}.mdc-linear-progress__bar-inner{background-color:#3c7251;background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}.mdc-linear-progress__buffering-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='%23e6e6e6'/%3E%3C/svg%3E")}.mdc-linear-progress__buffer{background-color:#e6e6e6}.mdc-linear-progress--indeterminate.mdc-linear-progress--reversed .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress--indeterminate.mdc-linear-progress--reversed .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.mdc-list{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;line-height:1.5rem;margin:0;padding:8px 0;list-style-type:none;color:rgba(0,0,0,.87);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mdc-list:focus{outline:none}.mdc-list-item__secondary-text{color:rgba(0,0,0,.54);color:rgba(0, 0, 0, 0.54);color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54))}.mdc-list-item__graphic{background-color:transparent}.mdc-list-item__graphic{color:rgba(0,0,0,.38);color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, 0.38))}.mdc-list-item__meta{color:rgba(0,0,0,.38);color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, 0.38))}.mdc-list-group__subheader{color:rgba(0,0,0,.87);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mdc-list--dense{padding-top:4px;padding-bottom:4px;font-size:.812rem}.mdc-list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item{display:flex;position:relative;align-items:center;justify-content:flex-start;height:48px;padding:0 16px;overflow:hidden}.mdc-list-item:focus,.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item:focus{outline:none}.mdc-list-item--selected,.mdc-list-item--activated{color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-list-item--selected .mdc-list-item__graphic,.mdc-list-item--activated .mdc-list-item__graphic{color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-list-item--disabled{color:rgba(0,0,0,.38);color:rgba(0, 0, 0, 0.38);color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, 0.38))}.mdc-list-item__graphic{margin-left:0;margin-right:32px;width:24px;height:24px;flex-shrink:0;align-items:center;justify-content:center;fill:currentColor}.mdc-list-item[dir=rtl] .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl].googlesitekit-view-only-menu__list-item .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list-item__graphic,[dir=rtl] .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl] .googlesitekit-view-only-menu__list-item .mdc-list-item__graphic{margin-left:32px;margin-right:0}.mdc-list .mdc-list-item__graphic{display:inline-flex}.mdc-list-item__meta{margin-left:auto;margin-right:0}.mdc-list-item__meta:not(.material-icons){font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.75rem;line-height:1.25rem;font-weight:400;letter-spacing:.0333333333em;text-decoration:inherit;text-transform:inherit}.mdc-list-item[dir=rtl] .mdc-list-item__meta,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl].googlesitekit-view-only-menu__list-item .mdc-list-item__meta,[dir=rtl] .mdc-list-item .mdc-list-item__meta,[dir=rtl] .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item .mdc-list-item__meta,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl] .googlesitekit-view-only-menu__list-item .mdc-list-item__meta{margin-left:0;margin-right:auto}.mdc-list-item__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item__text[for]{pointer-events:none}.mdc-list-item__primary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal;margin-bottom:-20px;display:block}.mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list--dense .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list--dense .mdc-list-item__primary-text::before{display:inline-block;width:0;height:24px;content:"";vertical-align:0}.mdc-list--dense .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item__secondary-text{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:1.25rem;font-weight:400;letter-spacing:.0178571429em;text-decoration:inherit;text-transform:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal;display:block}.mdc-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list--dense .mdc-list-item__secondary-text{display:block;margin-top:0;line-height:normal;font-size:inherit}.mdc-list--dense .mdc-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list--dense .mdc-list-item,.mdc-list--dense .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-list--dense .googlesitekit-view-only-menu__list-item{height:40px}.mdc-list--dense .mdc-list-item__graphic{margin-left:0;margin-right:36px;width:20px;height:20px}.mdc-list-item[dir=rtl] .mdc-list--dense .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl].googlesitekit-view-only-menu__list-item .mdc-list--dense .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list--dense .mdc-list-item__graphic,[dir=rtl] .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item .mdc-list--dense .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl] .googlesitekit-view-only-menu__list-item .mdc-list--dense .mdc-list-item__graphic{margin-left:36px;margin-right:0}.mdc-list--avatar-list .mdc-list-item,.mdc-list--avatar-list .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-list--avatar-list .googlesitekit-view-only-menu__list-item{height:56px}.mdc-list--avatar-list .mdc-list-item__graphic{margin-left:0;margin-right:16px;width:40px;height:40px;border-radius:50%}.mdc-list-item[dir=rtl] .mdc-list--avatar-list .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl].googlesitekit-view-only-menu__list-item .mdc-list--avatar-list .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list--avatar-list .mdc-list-item__graphic,[dir=rtl] .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item .mdc-list--avatar-list .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl] .googlesitekit-view-only-menu__list-item .mdc-list--avatar-list .mdc-list-item__graphic{margin-left:16px;margin-right:0}.mdc-list--two-line .mdc-list-item__text{align-self:flex-start}.mdc-list--two-line .mdc-list-item,.mdc-list--two-line .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-list--two-line .googlesitekit-view-only-menu__list-item{height:72px}.mdc-list--two-line.mdc-list--dense .mdc-list-item,.mdc-list--two-line.mdc-list--dense .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-list--two-line.mdc-list--dense .googlesitekit-view-only-menu__list-item,.mdc-list--avatar-list.mdc-list--dense .mdc-list-item,.mdc-list--avatar-list.mdc-list--dense .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-list--avatar-list.mdc-list--dense .googlesitekit-view-only-menu__list-item{height:60px}.mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic{margin-left:0;margin-right:20px;width:36px;height:36px}.mdc-list-item[dir=rtl] .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl].googlesitekit-view-only-menu__list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic,[dir=rtl] .mdc-list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic,[dir=rtl] .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl] .googlesitekit-view-only-menu__list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list-item__graphic{margin-left:20px;margin-right:0}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled){cursor:pointer}a.mdc-list-item,.googlesitekit-plugin .googlesitekit-view-only-menu a.googlesitekit-view-only-menu__list-item{color:inherit;text-decoration:none}.mdc-list-divider{height:0;margin:0;border:none;border-bottom-width:1px;border-bottom-style:solid}.mdc-list-divider{border-bottom-color:rgba(0,0,0,.12)}.mdc-list-divider--padded{margin:0 16px}.mdc-list-divider--inset{margin-left:72px;margin-right:0;width:calc(100% - 72px)}.mdc-list-group[dir=rtl] .mdc-list-divider--inset,[dir=rtl] .mdc-list-group .mdc-list-divider--inset{margin-left:0;margin-right:72px}.mdc-list-divider--inset.mdc-list-divider--padded{width:calc(100% - 72px - 16px)}.mdc-list-group .mdc-list{padding:0}.mdc-list-group__subheader{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;margin:.75rem 16px}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled){--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled)::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled)::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled)::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--unbounded::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-activation::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--foreground-deactivation::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled)::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled)::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled)::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled)::after{background-color:#000}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:hover::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled):hover::before{opacity:.04}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled):not(.mdc-ripple-upgraded):focus::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled):not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled):not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item.mdc-ripple-upgraded,.googlesitekit-plugin .googlesitekit-view-only-menu :not(.mdc-list--non-interactive)>.googlesitekit-view-only-menu__list-item:not(.mdc-list-item--disabled).mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated::before{opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated::after{background-color:#3c7251}@supports not (-ms-ime-align: auto){:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated::after{background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:hover::before{opacity:.16}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):focus::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--activated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected::before{opacity:.08}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected::after{background-color:#3c7251}@supports not (-ms-ime-align: auto){:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected::after{background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:hover::before{opacity:.12}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):focus::before,:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.2}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.2}:not(.mdc-list--non-interactive)>:not(.mdc-list-item--disabled).mdc-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.2}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled::before,:not(.mdc-list--non-interactive)>.mdc-list-item--disabled::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled::before,:not(.mdc-list--non-interactive)>.mdc-list-item--disabled::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled::before,:not(.mdc-list--non-interactive)>.mdc-list-item--disabled::after{background-color:#000}:not(.mdc-list--non-interactive)>.mdc-list-item--disabled:not(.mdc-ripple-upgraded):focus::before,:not(.mdc-list--non-interactive)>.mdc-list-item--disabled.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-menu{min-width:112px}.mdc-menu .mdc-list-item__meta{color:rgba(0,0,0,.87)}.mdc-menu .mdc-list-item__graphic{color:rgba(0,0,0,.87)}.mdc-menu .mdc-list{color:rgba(0,0,0,.87)}.mdc-menu .mdc-list-divider{margin:8px 0}.mdc-menu .mdc-list-item,.mdc-menu .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-menu .googlesitekit-view-only-menu__list-item{-webkit-user-select:none;-ms-user-select:none;user-select:none}.mdc-menu .mdc-list-item--disabled{cursor:auto}.mdc-menu a.mdc-list-item .mdc-list-item__text,.mdc-menu .googlesitekit-plugin .googlesitekit-view-only-menu a.googlesitekit-view-only-menu__list-item .mdc-list-item__text,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-menu a.googlesitekit-view-only-menu__list-item .mdc-list-item__text,.mdc-menu a.mdc-list-item .mdc-list-item__graphic,.mdc-menu .googlesitekit-plugin .googlesitekit-view-only-menu a.googlesitekit-view-only-menu__list-item .mdc-list-item__graphic,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-menu a.googlesitekit-view-only-menu__list-item .mdc-list-item__graphic{pointer-events:none}.mdc-menu__selection-group{padding:0;fill:currentColor}.mdc-menu__selection-group .mdc-list-item,.mdc-menu__selection-group .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-menu__selection-group .googlesitekit-view-only-menu__list-item{padding-left:56px;padding-right:16px}[dir=rtl] .mdc-menu__selection-group .mdc-list-item,[dir=rtl] .mdc-menu__selection-group .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl] .mdc-menu__selection-group .googlesitekit-view-only-menu__list-item,.mdc-menu__selection-group .mdc-list-item[dir=rtl],.mdc-menu__selection-group .googlesitekit-plugin .googlesitekit-view-only-menu [dir=rtl].googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-menu__selection-group [dir=rtl].googlesitekit-view-only-menu__list-item{padding-left:16px;padding-right:56px}.mdc-menu__selection-group .mdc-menu__selection-group-icon{left:16px;right:auto;right:initial;display:none;position:absolute}[dir=rtl] .mdc-menu__selection-group .mdc-menu__selection-group-icon,.mdc-menu__selection-group .mdc-menu__selection-group-icon[dir=rtl]{left:auto;left:initial;right:16px}.mdc-menu-item--selected .mdc-menu__selection-group-icon{display:inline}.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;transition:opacity .03s linear,transform .12s cubic-bezier(0, 0, 0.2, 1);box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:#fff;background-color:#fff;background-color:var(--mdc-theme-surface, #fff);color:#000;color:#000;color:var(--mdc-theme-on-surface, #000);border-radius:4px;transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0;transition:opacity .075s linear}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:border-box;width:40px;height:40px;padding:10px;cursor:pointer;will-change:opacity,transform,border-color,color}.mdc-radio .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.54)}.mdc-radio .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:#446199;border-color:#446199;border-color:var(--mdc-theme-secondary, #446199)}.mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:#446199;border-color:#446199;border-color:var(--mdc-theme-secondary, #446199)}.mdc-radio .mdc-radio__background::before{background-color:#446199}@supports not (-ms-ime-align: auto){.mdc-radio .mdc-radio__background::before{background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}}.mdc-radio__background{display:inline-block;position:absolute;left:10px;box-sizing:border-box;width:50%;height:50%}.mdc-radio__background::before{position:absolute;top:0;left:0;width:100%;height:100%;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";transition:opacity 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__native-control{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.mdc-radio__native-control:checked+.mdc-radio__background,.mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{transition:border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1),border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio--disabled{cursor:default;pointer-events:none}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle{transform:scale(0.5);transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1),border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:disabled+.mdc-radio__background,[aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background{cursor:default}.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle,[aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.26)}.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle,[aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle{border-color:rgba(0,0,0,.26)}.mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(2, 2);opacity:.12;transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-radio::before,.mdc-radio::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-radio::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-radio.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-radio.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-radio.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-radio.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-radio.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-radio::before,.mdc-radio::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-radio.mdc-ripple-upgraded::before,.mdc-radio.mdc-ripple-upgraded::after{top:calc(50% - 50%);top:var(--mdc-ripple-top, calc(50% - 50%));left:calc(50% - 50%);left:var(--mdc-ripple-left, calc(50% - 50%));width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-radio.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-radio::before,.mdc-radio::after{background-color:#446199}@supports not (-ms-ime-align: auto){.mdc-radio::before,.mdc-radio::after{background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}}.mdc-radio:hover::before{opacity:.04}.mdc-radio:not(.mdc-ripple-upgraded):focus::before,.mdc-radio.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-radio:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-radio:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-radio.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__background::before{content:none}.mdc-card{border-radius:4px;background-color:#fff;background-color:#fff;background-color:var(--mdc-theme-surface, #fff);box-shadow:0px 2px 1px -1px rgba(0, 0, 0, 0.2),0px 1px 1px 0px rgba(0, 0, 0, 0.14),0px 1px 3px 0px rgba(0,0,0,.12);display:flex;flex-direction:column;box-sizing:border-box}.mdc-card--outlined{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2),0px 0px 0px 0px rgba(0, 0, 0, 0.14),0px 0px 0px 0px rgba(0,0,0,.12);border-width:1px;border-style:solid;border-color:#e0e0e0}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:""}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__media--square::before{margin-top:100%}.mdc-card__media--16-9::before{margin-top:56.25%}.mdc-card__media-content{position:absolute;top:0;right:0;bottom:0;left:0;box-sizing:border-box}.mdc-card__primary-action{display:flex;flex-direction:column;box-sizing:border-box;position:relative;outline:none;color:inherit;text-decoration:none;cursor:pointer;overflow:hidden}.mdc-card__primary-action:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__primary-action:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mdc-card__actions--full-bleed{padding:0}.mdc-card__action-buttons,.mdc-card__action-icons{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}.mdc-card__action-icons{color:rgba(0,0,0,.6);flex-grow:1;justify-content:flex-end}.mdc-card__action-buttons+.mdc-card__action-icons{margin-left:16px;margin-right:0}[dir=rtl] .mdc-card__action-buttons+.mdc-card__action-icons,.mdc-card__action-buttons+.mdc-card__action-icons[dir=rtl]{margin-left:0;margin-right:16px}.mdc-card__action{display:inline-flex;flex-direction:row;align-items:center;box-sizing:border-box;justify-content:center;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mdc-card__action:focus{outline:none}.mdc-card__action--button{margin-left:0;margin-right:8px;padding:0 8px}[dir=rtl] .mdc-card__action--button,.mdc-card__action--button[dir=rtl]{margin-left:8px;margin-right:0}.mdc-card__action--button:last-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-card__action--button:last-child,.mdc-card__action--button:last-child[dir=rtl]{margin-left:0;margin-right:0}.mdc-card__actions--full-bleed .mdc-card__action--button{justify-content:space-between;width:100%;height:auto;max-height:none;margin:0;padding:8px 16px;text-align:left}[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button,.mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl]{text-align:right}.mdc-card__action--icon{margin:-6px 0;padding:12px}.mdc-card__action--icon:not(:disabled){color:rgba(0,0,0,.6)}.mdc-card__primary-action{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-card__primary-action::before,.mdc-card__primary-action::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-card__primary-action::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-card__primary-action.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-card__primary-action.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-card__primary-action.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-card__primary-action.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-card__primary-action.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-card__primary-action::before,.mdc-card__primary-action::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-card__primary-action.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-card__primary-action::before,.mdc-card__primary-action::after{background-color:#000}.mdc-card__primary-action:hover::before{opacity:.04}.mdc-card__primary-action:not(.mdc-ripple-upgraded):focus::before,.mdc-card__primary-action.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-card__primary-action:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-card__primary-action:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-card__primary-action.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-chip__icon--leading{color:rgba(0,0,0,.54)}.mdc-chip__icon--trailing{color:rgba(0,0,0,.54)}.mdc-chip__icon--trailing:hover{color:rgba(0,0,0,.62)}.mdc-chip__icon--trailing:focus{color:rgba(0,0,0,.87)}.mdc-chip__icon.mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden){width:20px;height:20px;font-size:20px}.mdc-chip__icon.mdc-chip__icon--trailing{width:18px;height:18px;font-size:18px}.mdc-chip__icon--trailing{margin:0 -4px 0 4px}.mdc-chip{border-radius:16px;background-color:#e0e0e0;color:rgba(0,0,0,.87);font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:1.25rem;font-weight:400;letter-spacing:.0178571429em;text-decoration:inherit;text-transform:inherit;height:32px;display:inline-flex;position:relative;align-items:center;box-sizing:border-box;padding:7px 12px;outline:none;cursor:pointer;overflow:hidden}.mdc-chip:hover{color:rgba(0,0,0,.87)}.mdc-chip.mdc-chip--selected .mdc-chip__checkmark,.mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden){margin-left:-4px;margin-right:4px;margin-top:-4px;margin-bottom:-4px}[dir=rtl] .mdc-chip.mdc-chip--selected .mdc-chip__checkmark,.mdc-chip.mdc-chip--selected .mdc-chip__checkmark[dir=rtl],[dir=rtl] .mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden),.mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden)[dir=rtl]{margin-left:4px;margin-right:-4px}.mdc-chip:hover{color:#000;color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-chip--exit{transition:opacity 75ms cubic-bezier(0.4, 0, 0.2, 1),width 150ms cubic-bezier(0, 0, 0.2, 1),padding 100ms linear,margin 100ms linear;opacity:0}.mdc-chip__text{white-space:nowrap}.mdc-chip__icon{border-radius:50%;outline:none;vertical-align:middle}.mdc-chip__checkmark{height:20px}.mdc-chip__checkmark-path{transition:stroke-dashoffset 150ms 50ms cubic-bezier(0.4, 0, 0.6, 1);stroke-width:2px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-chip--selected .mdc-chip__checkmark-path{stroke-dashoffset:0}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected{color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected .mdc-chip__icon--leading{color:rgba(60,114,81,.54)}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected:hover{color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-chip-set--choice .mdc-chip .mdc-chip__checkmark-path{stroke:#3c7251;stroke:#3c7251;stroke:var(--mdc-theme-primary, #3c7251)}.mdc-chip-set--choice .mdc-chip--selected{background-color:#fff;background-color:#fff;background-color:var(--mdc-theme-surface, #fff)}.mdc-chip__checkmark-svg{width:0;height:20px;transition:width 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-chip--selected .mdc-chip__checkmark-svg{width:20px}.mdc-chip-set--filter .mdc-chip__icon--leading{transition:opacity 75ms linear;transition-delay:-50ms;opacity:1}.mdc-chip-set--filter .mdc-chip__icon--leading+.mdc-chip__checkmark{transition:opacity 75ms linear;transition-delay:80ms;opacity:0}.mdc-chip-set--filter .mdc-chip__icon--leading+.mdc-chip__checkmark .mdc-chip__checkmark-svg{transition:width 0ms}.mdc-chip-set--filter .mdc-chip--selected .mdc-chip__icon--leading{opacity:0}.mdc-chip-set--filter .mdc-chip--selected .mdc-chip__icon--leading+.mdc-chip__checkmark{width:0;opacity:1}.mdc-chip-set--filter .mdc-chip__icon--leading-hidden.mdc-chip__icon--leading{width:0;opacity:0}.mdc-chip-set--filter .mdc-chip__icon--leading-hidden.mdc-chip__icon--leading+.mdc-chip__checkmark{width:20px}.mdc-chip{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-chip::before,.mdc-chip::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-chip::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-chip.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-chip.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-chip.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-chip.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-chip.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-chip::before,.mdc-chip::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-chip.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-chip::before,.mdc-chip::after{background-color:rgba(0,0,0,.87)}.mdc-chip:hover::before{opacity:.04}.mdc-chip:not(.mdc-ripple-upgraded):focus::before,.mdc-chip.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-chip:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-chip:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-chip.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected::before{opacity:.08}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected::before,.mdc-chip-set--choice .mdc-chip.mdc-chip--selected::after{background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-chip-set--choice .mdc-chip.mdc-chip--selected::before,.mdc-chip-set--choice .mdc-chip.mdc-chip--selected::after{background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected:hover::before{opacity:.12}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected:not(.mdc-ripple-upgraded):focus::before,.mdc-chip-set--choice .mdc-chip.mdc-chip--selected.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.2}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.2}.mdc-chip-set--choice .mdc-chip.mdc-chip--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.2}@keyframes mdc-chip-entry{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-chip-set{padding:4px;display:flex;flex-wrap:wrap;box-sizing:border-box}.mdc-chip-set .mdc-chip{margin:4px}.mdc-chip-set--input .mdc-chip{animation:mdc-chip-entry 100ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:7}.mdc-dialog .mdc-dialog__surface{background-color:#fff;background-color:#fff;background-color:var(--mdc-theme-surface, #fff)}.mdc-dialog .mdc-dialog__scrim{background-color:rgba(0,0,0,.32)}.mdc-dialog .mdc-dialog__title{color:rgba(0,0,0,.87)}.mdc-dialog .mdc-dialog__content{color:rgba(0,0,0,.6)}.mdc-dialog.mdc-dialog--scrollable .mdc-dialog__title,.mdc-dialog.mdc-dialog--scrollable .mdc-dialog__actions{border-color:rgba(0,0,0,.12)}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100vh - 32px)}.mdc-dialog .mdc-dialog__surface{border-radius:4px}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;justify-content:space-around;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-dialog__surface{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2),0px 24px 38px 3px rgba(0, 0, 0, 0.14),0px 9px 46px 8px rgba(0,0,0,.12);display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%}.mdc-dialog[dir=rtl] .mdc-dialog__surface,[dir=rtl] .mdc-dialog .mdc-dialog__surface{text-align:right}.mdc-dialog__title{display:block;margin-top:0;line-height:normal;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1.25rem;line-height:2rem;font-weight:500;letter-spacing:.0125em;text-decoration:inherit;text-transform:inherit;display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0;padding:0 24px 9px;border-bottom:1px solid transparent}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-dialog[dir=rtl] .mdc-dialog__title,[dir=rtl] .mdc-dialog .mdc-dialog__title{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{padding-bottom:15px}.mdc-dialog__content{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.5rem;font-weight:400;letter-spacing:.03125em;text-decoration:inherit;text-transform:inherit;flex-grow:1;box-sizing:border-box;margin:0;padding:20px 24px;overflow:auto;-webkit-overflow-scrolling:touch}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid transparent}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}.mdc-dialog[dir=rtl] .mdc-dialog__button,[dir=rtl] .mdc-dialog .mdc-dialog__button{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:scale(1)}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:scale(1);opacity:1}.mdc-dialog-scroll-lock{overflow:hidden}@keyframes mdc-select-float-native-control{0%{transform:translateY(8px);opacity:0}100%{transform:translateY(0);opacity:1}}.mdc-line-ripple{position:absolute;bottom:0;left:0;width:100%;height:2px;transform:scaleX(0);transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;z-index:2}.mdc-line-ripple--active{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating{opacity:0}.mdc-notched-outline{display:flex;position:absolute;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;transition:border 150ms cubic-bezier(0.4, 0, 0.2, 1);border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;top:17px;bottom:auto;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(100% / .75)}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{padding:0}.mdc-floating-label{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;position:absolute;left:0;transform-origin:left top;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1);line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--float-above{transform:translateY(-50%) scale(0.75)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-50%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-50%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-50%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-50%) scale(0.75)}}.mdc-select--with-leading-icon:not(.mdc-select--disabled) .mdc-select__icon{color:#000;color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-select--with-leading-icon .mdc-select__icon{display:inline-block;position:absolute;bottom:16px;box-sizing:border-box;width:24px;height:24px;border:none;background-color:transparent;fill:currentColor;opacity:.54;text-decoration:none;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mdc-select__icon:not([tabindex]),.mdc-select__icon[tabindex="-1"]{cursor:default;pointer-events:none}.mdc-select-helper-text{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.75rem;line-height:1.25rem;font-weight:400;letter-spacing:.0333333333em;text-decoration:inherit;text-transform:inherit;display:block;margin-top:0;line-height:normal;margin:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;will-change:opacity}.mdc-select-helper-text::before{display:inline-block;width:0;height:16px;content:"";vertical-align:0}.mdc-select-helper-text--persistent{transition:none;opacity:1;will-change:initial}.mdc-select{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0);display:inline-flex;position:relative;box-sizing:border-box;height:56px;overflow:hidden;will-change:opacity,transform,color}.mdc-select:not(.mdc-select--disabled){background-color:#f5f5f5}.mdc-select::before,.mdc-select::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-select::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-select.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-select.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-select.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-select.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-select.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-select::before,.mdc-select::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-select.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-select::before,.mdc-select::after{background-color:rgba(0,0,0,.87)}.mdc-select:hover::before{opacity:.04}.mdc-select:not(.mdc-ripple-upgraded):focus::before,.mdc-select.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control,.mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text{color:rgba(0,0,0,.87)}.mdc-select:not(.mdc-select--disabled) .mdc-floating-label{color:rgba(0,0,0,.6)}.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control,.mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text{border-bottom-color:rgba(0,0,0,.42)}.mdc-select:not(.mdc-select--disabled)+.mdc-select-helper-text{color:rgba(0,0,0,.6)}.mdc-select,.mdc-select__native-control{border-radius:4px 4px 0 0}.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple{background-color:#3c7251;background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label{color:rgba(60,114,81,.87)}.mdc-select:not(.mdc-select--disabled) .mdc-select__native-control:hover{border-bottom-color:rgba(0,0,0,.87)}.mdc-select .mdc-floating-label--float-above{transform:translateY(-70%) scale(0.75)}.mdc-select .mdc-floating-label{left:16px;right:auto;right:initial;top:21px;pointer-events:none}[dir=rtl] .mdc-select .mdc-floating-label,.mdc-select .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:16px}.mdc-select.mdc-select--with-leading-icon .mdc-floating-label{left:48px;right:auto;right:initial}[dir=rtl] .mdc-select.mdc-select--with-leading-icon .mdc-floating-label,.mdc-select.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:48px}.mdc-select.mdc-select--outlined .mdc-floating-label{left:4px;right:auto;right:initial;top:17px}[dir=rtl] .mdc-select.mdc-select--outlined .mdc-floating-label,.mdc-select.mdc-select--outlined .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:4px}.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label{left:36px;right:auto;right:initial}[dir=rtl] .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label,.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:36px}.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above{left:36px;right:auto;right:initial}[dir=rtl] .mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above,.mdc-select.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above[dir=rtl]{left:auto;left:initial;right:36px}.mdc-select__dropdown-icon{background:url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E") no-repeat center;left:auto;right:8px;position:absolute;bottom:16px;width:24px;height:24px;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}[dir=rtl] .mdc-select__dropdown-icon,.mdc-select__dropdown-icon[dir=rtl]{left:8px;right:auto}.mdc-select--focused .mdc-select__dropdown-icon{background:url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%233c7251%22%20fill-rule%3D%22evenodd%22%20opacity%3D%221%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E") no-repeat center;transform:rotate(180deg) translateY(-5px);transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-select__native-control{padding-top:20px}.mdc-select.mdc-select--focused .mdc-line-ripple::after{transform:scale(1, 2);opacity:1}.mdc-select+.mdc-select-helper-text{margin-right:12px;margin-left:12px}.mdc-select--outlined+.mdc-select-helper-text{margin-right:16px;margin-left:16px}.mdc-select--focused+.mdc-select-helper-text:not(.mdc-select-helper-text--validation-msg){opacity:1}.mdc-select__selected-text{min-width:200px;padding-top:22px}.mdc-select__native-control,.mdc-select__selected-text{padding-left:16px;padding-right:52px;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;box-sizing:border-box;width:100%;height:56px;padding-top:20px;padding-bottom:4px;border:none;border-bottom:1px solid;outline:none;background-color:transparent;color:inherit;white-space:nowrap;cursor:pointer;-webkit-appearance:none;appearance:none}[dir=rtl] .mdc-select__native-control,.mdc-select__native-control[dir=rtl],[dir=rtl] .mdc-select__selected-text,.mdc-select__selected-text[dir=rtl]{padding-left:52px;padding-right:16px}.mdc-select__native-control::-ms-expand,.mdc-select__selected-text::-ms-expand{display:none}.mdc-select__native-control::-ms-value,.mdc-select__selected-text::-ms-value{background-color:transparent;color:inherit}@-moz-document url-prefix(""){.mdc-select__native-control,.mdc-select__selected-text{text-indent:-2px}}.mdc-select--outlined{border:none;overflow:visible}.mdc-select--outlined:not(.mdc-select--disabled){background-color:transparent}.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.24)}.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.87)}.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px}.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#3c7251;border-color:#3c7251;border-color:var(--mdc-theme-primary, #3c7251)}.mdc-select--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-radius:4px 0 0 4px}[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-radius:0 4px 4px 0}.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-radius:0 4px 4px 0}[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-radius:4px 0 0 4px}.mdc-select--outlined .mdc-select__native-control{border-radius:4px}.mdc-select--outlined::before,.mdc-select--outlined::after{content:none}.mdc-select--outlined:not(.mdc-select--disabled){background-color:transparent}.mdc-select--outlined .mdc-floating-label--float-above{transform:translateY(-144%) scale(1)}.mdc-select--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-130%) scale(0.75)}.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-select--outlined .mdc-select__native-control,.mdc-select--outlined .mdc-select__selected-text{padding-left:16px;padding-right:52px;display:flex;padding-top:12px;padding-bottom:12px;border:none;background-color:transparent;z-index:1}[dir=rtl] .mdc-select--outlined .mdc-select__native-control,.mdc-select--outlined .mdc-select__native-control[dir=rtl],[dir=rtl] .mdc-select--outlined .mdc-select__selected-text,.mdc-select--outlined .mdc-select__selected-text[dir=rtl]{padding-left:52px;padding-right:16px}.mdc-select--outlined .mdc-select__selected-text{padding-top:14px}.mdc-select--outlined .mdc-select__icon{z-index:2}.mdc-select--outlined .mdc-floating-label{line-height:1.15rem;pointer-events:auto}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-floating-label{color:#b00020;color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__native-control,.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__selected-text{border-bottom-color:#b00020;border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple{background-color:#b00020;background-color:#b00020;background-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label{color:#b00020}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--invalid+.mdc-select-helper-text--validation-msg{color:#b00020;color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__native-control:hover{border-bottom-color:#b00020;border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#b00020;border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#b00020;border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px}.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--invalid.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#b00020;border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid .mdc-select__dropdown-icon{background:url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23b00020%22%20fill-rule%3D%22evenodd%22%20opacity%3D%221%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E") no-repeat center}.mdc-select--invalid+.mdc-select-helper-text--validation-msg{opacity:1}.mdc-select--required .mdc-floating-label::after{content:"*"}.mdc-select--disabled{background-color:#fafafa;cursor:default;pointer-events:none}.mdc-select--disabled .mdc-floating-label{color:rgba(0,0,0,.37)}.mdc-select--disabled .mdc-select__dropdown-icon{background:url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.37%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E") no-repeat center}.mdc-select--disabled .mdc-line-ripple{display:none}.mdc-select--disabled .mdc-select__icon{color:rgba(0,0,0,.37)}.mdc-select--disabled .mdc-select__native-control,.mdc-select--disabled .mdc-select__selected-text{color:rgba(0,0,0,.37);border-bottom-style:dotted}.mdc-select--disabled .mdc-select__selected-text{pointer-events:none}.mdc-select--disabled.mdc-select--outlined{background-color:transparent}.mdc-select--disabled.mdc-select--outlined .mdc-select__native-control,.mdc-select--disabled.mdc-select--outlined .mdc-select__selected-text{border-bottom-style:none}.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__leading,.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__notch,.mdc-select--disabled.mdc-select--outlined .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.16)}.mdc-select--with-leading-icon .mdc-select__icon{left:16px;right:auto;right:initial}[dir=rtl] .mdc-select--with-leading-icon .mdc-select__icon,.mdc-select--with-leading-icon .mdc-select__icon[dir=rtl]{left:auto;left:initial;right:16px}.mdc-select--with-leading-icon .mdc-select__native-control,.mdc-select--with-leading-icon .mdc-select__selected-text{padding-left:48px;padding-right:32px}[dir=rtl] .mdc-select--with-leading-icon .mdc-select__native-control,.mdc-select--with-leading-icon .mdc-select__native-control[dir=rtl],[dir=rtl] .mdc-select--with-leading-icon .mdc-select__selected-text,.mdc-select--with-leading-icon .mdc-select__selected-text[dir=rtl]{padding-left:32px;padding-right:48px}.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above{transform:translateY(-144%) translateX(-32px) scale(1)}[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above,.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-144%) translateX(32px) scale(1)}.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-130%) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-130%) translateX(32px) scale(0.75)}.mdc-select--with-leading-icon.mdc-select--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--with-leading-icon.mdc-select--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon 250ms 1}[dir=rtl] .mdc-select--with-leading-icon.mdc-select--outlined .mdc-floating-label--shake,.mdc-select--with-leading-icon.mdc-select--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl 250ms 1}.mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text{padding-left:32px;padding-right:32px}[dir=rtl] .mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text,.mdc-select--with-leading-icon.mdc-select__menu .mdc-list-item__text[dir=rtl]{padding-left:32px;padding-right:32px}.mdc-select__menu .mdc-list .mdc-list-item--selected{color:#000;color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-select__menu .mdc-list .mdc-list-item--selected::before,.mdc-select__menu .mdc-list .mdc-list-item--selected::after{background-color:#000}@supports not (-ms-ime-align: auto){.mdc-select__menu .mdc-list .mdc-list-item--selected::before,.mdc-select__menu .mdc-list .mdc-list-item--selected::after{background-color:#000;background-color:var(--mdc-theme-on-surface, #000)}}.mdc-select__menu .mdc-list .mdc-list-item--selected:hover::before{opacity:.04}.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded):focus::before,.mdc-select__menu .mdc-list .mdc-list-item--selected.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-select__menu .mdc-list .mdc-list-item--selected:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-select__menu .mdc-list .mdc-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-130%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-130%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-130%) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-130%) scale(0.75)}}@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-130%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-130%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-130%) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-130%) scale(0.75)}}.mdc-tab{position:relative;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:2.25rem;font-weight:500;letter-spacing:.0892857143em;text-decoration:none;text-transform:uppercase;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;height:48px;padding:0 24px;border:none;outline:none;background:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab .mdc-tab__text-label{color:#000;color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-tab .mdc-tab__icon{color:#000;color:#000;color:var(--mdc-theme-on-surface, #000);fill:currentColor}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__ripple{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.mdc-tab__ripple::before,.mdc-tab__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-tab__ripple::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-tab__ripple.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-tab__ripple.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-tab__ripple.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-tab__ripple.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-tab__ripple.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-tab__ripple::before,.mdc-tab__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-tab__ripple.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-tab__ripple::before,.mdc-tab__ripple::after{background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-tab__ripple::before,.mdc-tab__ripple::after{background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-tab__ripple:hover::before{opacity:.04}.mdc-tab__ripple:not(.mdc-ripple-upgraded):focus::before,.mdc-tab__ripple.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-tab__ripple:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-tab__ripple:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-tab__ripple.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-tab__content{position:relative;display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label,.mdc-tab__icon{transition:150ms color linear,150ms opacity linear;z-index:2}.mdc-tab__text-label{display:inline-block;opacity:.6;line-height:1}.mdc-tab__icon{width:24px;height:24px;opacity:.54;font-size:24px}.mdc-tab--stacked{height:72px}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:space-between}.mdc-tab--stacked .mdc-tab__icon{padding-top:12px}.mdc-tab--stacked .mdc-tab__text-label{padding-bottom:16px}.mdc-tab--active .mdc-tab__text-label{color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-tab--active .mdc-tab__icon{color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251);fill:currentColor}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms;opacity:1}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-bar{width:100%}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator>.mdc-tab-indicator__content--underline{background-color:#3c7251;background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}.mdc-tab-indicator>.mdc-tab-indicator__content--underline{height:2px}.mdc-tab-indicator>.mdc-tab-indicator__content--icon{color:#446199;color:#446199;color:var(--mdc-theme-secondary, #446199)}.mdc-tab-indicator>.mdc-tab-indicator__content--icon{height:34px;font-size:34px}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;width:100%}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active>.mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator>.mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition>.mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade>.mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade>.mdc-tab-indicator__content{transition-delay:100ms}.mdc-tab-scroller{overflow-y:hidden}.mdc-tab-scroller__test{position:absolute;top:-9999px;width:100px;height:100px;overflow-x:scroll}.mdc-tab-scroller__scroll-area{-webkit-overflow-scrolling:touch;display:flex;overflow-x:hidden}.mdc-tab-scroller__scroll-area::-webkit-scrollbar,.mdc-tab-scroller__test::-webkit-scrollbar{display:none}.mdc-tab-scroller__scroll-area--scroll{overflow-x:scroll}.mdc-tab-scroller__scroll-content{position:relative;display:flex;flex:1 0 auto;transform:none;will-change:transform}.mdc-tab-scroller--align-start .mdc-tab-scroller__scroll-content{justify-content:flex-start}.mdc-tab-scroller--align-end .mdc-tab-scroller__scroll-content{justify-content:flex-end}.mdc-tab-scroller--align-center .mdc-tab-scroller__scroll-content{justify-content:center}.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-area{-webkit-overflow-scrolling:auto}.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-text-field--with-leading-icon .mdc-text-field__icon,.mdc-text-field--with-trailing-icon .mdc-text-field__icon{position:absolute;bottom:16px;cursor:pointer}.mdc-text-field__icon:not([tabindex]),.mdc-text-field__icon[tabindex="-1"]{cursor:default;pointer-events:none}.mdc-text-field-helper-text{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.75rem;line-height:1.25rem;font-weight:400;letter-spacing:.0333333333em;text-decoration:inherit;text-transform:inherit;display:block;margin-top:0;line-height:normal;margin:0;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;will-change:opacity}.mdc-text-field-helper-text::before{display:inline-block;width:0;height:16px;content:"";vertical-align:0}.mdc-text-field-helper-text--persistent{transition:none;opacity:1;will-change:initial}.mdc-text-field-helper-text{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.75rem;line-height:1.25rem;font-weight:400;letter-spacing:.0333333333em;text-decoration:inherit;text-transform:inherit;display:block;margin-top:0;line-height:normal;margin:0;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;will-change:opacity}.mdc-text-field-helper-text::before{display:inline-block;width:0;height:16px;content:"";vertical-align:0}.mdc-text-field-helper-text--persistent{transition:none;opacity:1;will-change:initial}.mdc-text-field-character-counter{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.75rem;line-height:1.25rem;font-weight:400;letter-spacing:.0333333333em;text-decoration:inherit;text-transform:inherit;display:block;margin-top:0;line-height:normal;margin-left:auto;margin-right:0;padding-left:16px;padding-right:0;white-space:nowrap}.mdc-text-field-character-counter::before{display:inline-block;width:0;height:16px;content:"";vertical-align:0}[dir=rtl] .mdc-text-field-character-counter,.mdc-text-field-character-counter[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-text-field-character-counter,.mdc-text-field-character-counter[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-leading-icon .mdc-text-field__icon,.mdc-text-field--with-trailing-icon .mdc-text-field__icon{position:absolute;bottom:16px;cursor:pointer}.mdc-text-field__icon:not([tabindex]),.mdc-text-field__icon[tabindex="-1"]{cursor:default;pointer-events:none}.mdc-text-field{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:4px 4px 0 0;display:inline-flex;position:relative;box-sizing:border-box;height:56px;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field::before,.mdc-text-field::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-text-field::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-text-field.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-text-field.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-text-field.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-text-field.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-text-field.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-text-field::before,.mdc-text-field::after{background-color:rgba(0,0,0,.87)}.mdc-text-field:hover::before{opacity:.04}.mdc-text-field:not(.mdc-ripple-upgraded):focus::before,.mdc-text-field.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-text-field::before,.mdc-text-field::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-text-field.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(3,14,7,.32)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:rgba(0,0,0,.87)}.mdc-text-field .mdc-text-field__input{caret-color:#3c7251;caret-color:#3c7251;caret-color:var(--mdc-theme-primary, #3c7251)}.mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-text-field__input{border-bottom-color:rgba(0,0,0,.42)}.mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-text-field__input:hover{border-bottom-color:rgba(0,0,0,.87)}.mdc-text-field .mdc-line-ripple{background-color:#3c7251;background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}.mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--textarea){border-bottom-color:rgba(0,0,0,.12)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0,0,0,.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0,0,0,.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon{color:rgba(0,0,0,.54)}.mdc-text-field:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field .mdc-floating-label{left:16px;right:auto;right:initial;top:18px;pointer-events:none}[dir=rtl] .mdc-text-field .mdc-floating-label,.mdc-text-field .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:16px}.mdc-text-field--textarea .mdc-floating-label{left:4px;right:auto;right:initial}[dir=rtl] .mdc-text-field--textarea .mdc-floating-label,.mdc-text-field--textarea .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:4px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto;right:initial;top:17px}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:4px}.mdc-text-field--outlined--with-leading-icon .mdc-floating-label{left:36px;right:auto;right:initial}[dir=rtl] .mdc-text-field--outlined--with-leading-icon .mdc-floating-label,.mdc-text-field--outlined--with-leading-icon .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:36px}.mdc-text-field--outlined--with-leading-icon .mdc-floating-label--float-above{left:40px;right:auto;right:initial}[dir=rtl] .mdc-text-field--outlined--with-leading-icon .mdc-floating-label--float-above,.mdc-text-field--outlined--with-leading-icon .mdc-floating-label--float-above[dir=rtl]{left:auto;left:initial;right:40px}.mdc-text-field__input{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.75rem;font-weight:400;letter-spacing:.009375em;text-decoration:inherit;text-transform:inherit;align-self:flex-end;box-sizing:border-box;width:100%;height:100%;padding:20px 16px 6px;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);border:none;border-bottom:1px solid;border-radius:0;background:none;-webkit-appearance:none;appearance:none}.mdc-text-field__input:-ms-input-placeholder{-ms-transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;color:rgba(3,14,7,.32)}.mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;color:rgba(3,14,7,.32)}.mdc-text-field__input:-ms-input-placeholder{color:rgba(3,14,7,.32) !important}.mdc-text-field--fullwidth .mdc-text-field__input:-ms-input-placeholder, .mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder, .mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mdc-text-field--fullwidth .mdc-text-field__input::placeholder,.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input:-webkit-autofill{z-index:auto !important}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-text-field__input{padding-top:16px;padding-bottom:16px}.mdc-text-field__input:-webkit-autofill+.mdc-floating-label{transform:translateY(-50%) scale(0.75);cursor:auto}.mdc-text-field--outlined{border:none;overflow:visible}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.38)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.87)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#3c7251;border-color:#3c7251;border-color:var(--mdc-theme-primary, #3c7251)}.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-radius:4px 0 0 4px}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-radius:0 4px 4px 0}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-radius:0 4px 4px 0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-radius:4px 0 0 4px}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-144%) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-130%) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined::before,.mdc-text-field--outlined::after{content:none}.mdc-text-field--outlined:not(.mdc-text-field--disabled){background-color:transparent}.mdc-text-field--outlined .mdc-text-field__input{display:flex;padding:12px 16px 14px;border:none !important;background-color:transparent;z-index:1}.mdc-text-field--outlined .mdc-text-field__icon{z-index:2}.mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--outlined.mdc-text-field--disabled{background-color:transparent}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.06)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{border-bottom:none}.mdc-text-field--outlined.mdc-text-field--dense{height:48px}.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--float-above{transform:translateY(-134%) scale(1)}.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--float-above{font-size:.8rem}.mdc-text-field--outlined.mdc-text-field--dense.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined.mdc-text-field--dense .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-120%) scale(0.8)}.mdc-text-field--outlined.mdc-text-field--dense.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined.mdc-text-field--dense .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-dense 250ms 1}.mdc-text-field--outlined.mdc-text-field--dense .mdc-text-field__input{padding:12px 12px 7px}.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label{top:14px}.mdc-text-field--outlined.mdc-text-field--dense .mdc-text-field__icon{top:12px}.mdc-text-field--with-leading-icon .mdc-text-field__icon{left:16px;right:auto;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon .mdc-text-field__icon,.mdc-text-field--with-leading-icon .mdc-text-field__icon[dir=rtl]{left:auto;left:initial;right:16px}.mdc-text-field--with-leading-icon .mdc-text-field__input{padding-left:48px;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon .mdc-text-field__input,.mdc-text-field--with-leading-icon .mdc-text-field__input[dir=rtl]{padding-left:16px;padding-right:48px}.mdc-text-field--with-leading-icon .mdc-floating-label{left:48px;right:auto;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon .mdc-floating-label,.mdc-text-field--with-leading-icon .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-text-field__icon{left:16px;right:auto;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-text-field__icon,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-text-field__icon[dir=rtl]{left:auto;left:initial;right:16px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-text-field__input{padding-left:48px;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-text-field__input[dir=rtl]{padding-left:16px;padding-right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-144%) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-144%) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-130%) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-130%) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl 250ms 1}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:auto;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--float-above{transform:translateY(-134%) translateX(-21px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-134%) translateX(21px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--float-above{font-size:.8rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-120%) translateX(-21px) scale(0.8)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-120%) translateX(21px) scale(0.8)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-dense 250ms 1}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label--shake,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-dense-rtl 250ms 1}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label{left:32px;right:auto;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:32px}.mdc-text-field--with-trailing-icon .mdc-text-field__icon{left:auto;left:initial;right:12px}[dir=rtl] .mdc-text-field--with-trailing-icon .mdc-text-field__icon,.mdc-text-field--with-trailing-icon .mdc-text-field__icon[dir=rtl]{left:12px;right:auto;right:initial}.mdc-text-field--with-trailing-icon .mdc-text-field__input{padding-left:16px;padding-right:48px}[dir=rtl] .mdc-text-field--with-trailing-icon .mdc-text-field__input,.mdc-text-field--with-trailing-icon .mdc-text-field__input[dir=rtl]{padding-left:48px;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined .mdc-text-field__icon{left:auto;left:initial;right:16px}[dir=rtl] .mdc-text-field--with-trailing-icon.mdc-text-field--outlined .mdc-text-field__icon,.mdc-text-field--with-trailing-icon.mdc-text-field--outlined .mdc-text-field__icon[dir=rtl]{left:16px;right:auto;right:initial}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined .mdc-text-field__input{padding-left:16px;padding-right:48px}[dir=rtl] .mdc-text-field--with-trailing-icon.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--with-trailing-icon.mdc-text-field--outlined .mdc-text-field__input[dir=rtl]{padding-left:48px;padding-right:16px}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__icon{left:16px;right:auto}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__icon,.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__icon[dir=rtl]{left:auto;right:16px}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__icon~.mdc-text-field__icon{right:12px;left:auto}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__icon~.mdc-text-field__icon,.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__icon~.mdc-text-field__icon[dir=rtl]{right:auto;left:12px}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__input{padding-left:48px;padding-right:48px}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__input,.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon .mdc-text-field__input[dir=rtl]{padding-left:48px;padding-right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__icon,.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon{bottom:16px;transform:scale(0.8)}.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__icon{left:12px;right:auto;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__icon,.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__icon[dir=rtl]{left:auto;left:initial;right:12px}.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__input{padding-left:44px;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__input,.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__input[dir=rtl]{padding-left:16px;padding-right:44px}.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-floating-label{left:44px;right:auto;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-floating-label[dir=rtl]{left:auto;left:initial;right:44px}.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon{left:auto;left:initial;right:12px}[dir=rtl] .mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon,.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon[dir=rtl]{left:12px;right:auto;right:initial}.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__input{padding-left:16px;padding-right:44px}[dir=rtl] .mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__input,.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__input[dir=rtl]{padding-left:44px;padding-right:16px}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon{left:12px;right:auto}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon,.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon[dir=rtl]{left:auto;right:12px}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon~.mdc-text-field__icon{right:12px;left:auto}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon~.mdc-text-field__icon,.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon~.mdc-text-field__icon[dir=rtl]{right:auto;left:12px}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__input{padding-left:44px;padding-right:44px}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__input,.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__input[dir=rtl]{padding-left:44px;padding-right:44px}.mdc-text-field--dense .mdc-floating-label--float-above{transform:translateY(-70%) scale(0.8)}.mdc-text-field--dense .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-dense 250ms 1}.mdc-text-field--dense .mdc-text-field__input{padding:12px 12px 0}.mdc-text-field--dense .mdc-floating-label{font-size:.813rem}.mdc-text-field--dense .mdc-floating-label--float-above{font-size:.813rem}.mdc-text-field__input:required~.mdc-floating-label::after,.mdc-text-field__input:required~.mdc-notched-outline .mdc-floating-label::after{margin-left:1px;content:"*"}.mdc-text-field--textarea{display:inline-flex;width:auto;height:auto;transition:none;overflow:visible}.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.38)}.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.87)}.mdc-text-field--textarea:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--textarea:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--textarea:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#3c7251;border-color:#3c7251;border-color:var(--mdc-theme-primary, #3c7251)}.mdc-text-field--textarea .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}.mdc-text-field--textarea .mdc-notched-outline .mdc-notched-outline__leading{border-radius:4px 0 0 4px}[dir=rtl] .mdc-text-field--textarea .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--textarea .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-radius:0 4px 4px 0}.mdc-text-field--textarea .mdc-notched-outline .mdc-notched-outline__trailing{border-radius:0 4px 4px 0}[dir=rtl] .mdc-text-field--textarea .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--textarea .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-radius:4px 0 0 4px}.mdc-text-field--textarea::before,.mdc-text-field--textarea::after{content:none}.mdc-text-field--textarea:not(.mdc-text-field--disabled){background-color:transparent}.mdc-text-field--textarea .mdc-floating-label--float-above{transform:translateY(-144%) scale(1)}.mdc-text-field--textarea .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-130%) scale(0.75)}.mdc-text-field--textarea.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea .mdc-text-field-character-counter{left:auto;left:initial;right:16px;position:absolute;bottom:13px}[dir=rtl] .mdc-text-field--textarea .mdc-text-field-character-counter,.mdc-text-field--textarea .mdc-text-field-character-counter[dir=rtl]{left:16px;right:auto;right:initial}.mdc-text-field--textarea .mdc-text-field__input{align-self:auto;box-sizing:border-box;height:auto;margin:8px 1px 1px 0;padding:0 16px 16px;border:none}.mdc-text-field--textarea .mdc-text-field-character-counter+.mdc-text-field__input{margin-bottom:28px;padding-bottom:0}.mdc-text-field--textarea .mdc-floating-label{top:17px;bottom:auto;width:auto;pointer-events:none}.mdc-text-field--textarea.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--textarea.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--textarea.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--fullwidth{width:100%}.mdc-text-field--fullwidth:not(.mdc-text-field--textarea){display:block}.mdc-text-field--fullwidth:not(.mdc-text-field--textarea)::before,.mdc-text-field--fullwidth:not(.mdc-text-field--textarea)::after{content:none}.mdc-text-field--fullwidth:not(.mdc-text-field--textarea):not(.mdc-text-field--disabled){background-color:transparent}.mdc-text-field--fullwidth:not(.mdc-text-field--textarea) .mdc-text-field__input{padding:0}.mdc-text-field--fullwidth.mdc-text-field--textarea .mdc-text-field__input{resize:vertical}.mdc-text-field--fullwidth.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--textarea){border-bottom-color:#ac4220}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field--dense+.mdc-text-field-helper-line{margin-bottom:4px}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(60,114,81,.87)}.mdc-text-field--focused .mdc-text-field__input:required~.mdc-floating-label::after,.mdc-text-field--focused .mdc-text-field__input:required~.mdc-notched-outline .mdc-floating-label::after{color:rgba(60,114,81,.87)}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--textarea.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--textarea.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--textarea.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#3c7251;border-color:#3c7251;border-color:var(--mdc-theme-primary, #3c7251)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-text-field__input{border-bottom-color:#ac4220}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-text-field__input:hover{border-bottom-color:#ac4220}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple{background-color:#ac4220}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ac4220}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:#ac4220}.mdc-text-field--invalid .mdc-text-field__input{caret-color:#ac4220}.mdc-text-field--invalid .mdc-text-field__input:required~.mdc-floating-label::after,.mdc-text-field--invalid .mdc-text-field__input:required~.mdc-notched-outline .mdc-floating-label::after{color:#ac4220}.mdc-text-field--invalid.mdc-text-field--with-trailing-icon:not(.mdc-text-field--with-leading-icon):not(.mdc-text-field--disabled) .mdc-text-field__icon{color:#ac4220}.mdc-text-field--invalid.mdc-text-field--with-trailing-icon.mdc-text-field--with-leading-icon:not(.mdc-text-field--disabled) .mdc-text-field__icon~.mdc-text-field__icon{color:#ac4220}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ac4220}.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ac4220}.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--textarea.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#ac4220}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ac4220}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ac4220}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#ac4220}.mdc-text-field--disabled{background-color:#fafafa;border-bottom:none;pointer-events:none}.mdc-text-field--disabled .mdc-text-field__input{border-bottom-color:rgba(0,0,0,.06)}.mdc-text-field--disabled .mdc-text-field__input{color:rgba(0,0,0,.37)}.mdc-text-field--disabled .mdc-floating-label{color:rgba(0,0,0,.37)}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0,0,0,.37)}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0,0,0,.37)}.mdc-text-field--disabled .mdc-text-field__icon{color:rgba(0,0,0,.3)}.mdc-text-field--disabled:not(.mdc-text-field--textarea){border-bottom-color:rgba(0,0,0,.12)}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--textarea.mdc-text-field--disabled{background-color:transparent;background-color:#f9f9f9}.mdc-text-field--textarea.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--textarea.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--textarea.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:rgba(0,0,0,.06)}.mdc-text-field--textarea.mdc-text-field--disabled .mdc-text-field__input{border-bottom:none}@keyframes mdc-floating-label-shake-float-above-text-field-dense{0%{transform:translateX(calc(0 - 0%)) translateY(-70%) scale(0.8)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-70%) scale(0.8)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-70%) scale(0.8)}100%{transform:translateX(calc(0 - 0%)) translateY(-70%) scale(0.8)}}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-130%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-130%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-130%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-130%) scale(0.75)}}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-dense{0%{transform:translateX(calc(0 - 0%)) translateY(-120%) scale(0.8)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-120%) scale(0.8)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-120%) scale(0.8)}100%{transform:translateX(calc(0 - 0%)) translateY(-120%) scale(0.8)}}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 0)) translateY(-130%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0)) translateY(-130%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0)) translateY(-130%) scale(0.75)}100%{transform:translateX(calc(0 - 0)) translateY(-130%) scale(0.75)}}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-dense{0%{transform:translateX(calc(0 - 21px)) translateY(-120%) scale(0.8)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 21px)) translateY(-120%) scale(0.8)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 21px)) translateY(-120%) scale(0.8)}100%{transform:translateX(calc(0 - 21px)) translateY(-120%) scale(0.8)}}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - 0)) translateY(-130%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0)) translateY(-130%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0)) translateY(-130%) scale(0.75)}100%{transform:translateX(calc(0 - 0)) translateY(-130%) scale(0.75)}}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-dense-rtl{0%{transform:translateX(calc(0 - -21px)) translateY(-120%) scale(0.8)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -21px)) translateY(-120%) scale(0.8)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -21px)) translateY(-120%) scale(0.8)}100%{transform:translateX(calc(0 - -21px)) translateY(-120%) scale(0.8)}}@keyframes mdc-floating-label-shake-float-above-textarea{0%{transform:translateX(calc(0 - 0%)) translateY(-130%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-130%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-130%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-130%) scale(0.75)}}.mdc-switch{display:inline-block;position:relative;outline:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mdc-switch.mdc-switch--checked .mdc-switch__track{background-color:#446199;background-color:#446199;background-color:var(--mdc-theme-secondary, #446199);border-color:#446199;border-color:#446199;border-color:var(--mdc-theme-secondary, #446199)}.mdc-switch.mdc-switch--checked .mdc-switch__thumb{background-color:#446199;background-color:#446199;background-color:var(--mdc-theme-secondary, #446199);border-color:#446199;border-color:#446199;border-color:var(--mdc-theme-secondary, #446199)}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__track{background-color:#000;border-color:#000}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb{background-color:#fff;border-color:#fff}.mdc-switch__native-control{left:0;right:auto;right:initial;position:absolute;top:0;width:68px;height:48px;margin:0;opacity:0;cursor:pointer;pointer-events:auto}[dir=rtl] .mdc-switch__native-control,.mdc-switch__native-control[dir=rtl]{left:auto;left:initial;right:0}.mdc-switch__track{box-sizing:border-box;width:32px;height:14px;border:1px solid;border-radius:7px;opacity:.38;transition:opacity 90ms cubic-bezier(0.4, 0, 0.2, 1),background-color 90ms cubic-bezier(0.4, 0, 0.2, 1),border-color 90ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-switch__thumb-underlay{left:-18px;right:auto;right:initial;display:flex;position:absolute;top:-17px;align-items:center;justify-content:center;width:48px;height:48px;transform:translateX(0);transition:transform 90ms cubic-bezier(0.4, 0, 0.2, 1),background-color 90ms cubic-bezier(0.4, 0, 0.2, 1),border-color 90ms cubic-bezier(0.4, 0, 0.2, 1)}[dir=rtl] .mdc-switch__thumb-underlay,.mdc-switch__thumb-underlay[dir=rtl]{left:auto;left:initial;right:-18px}.mdc-switch__thumb{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2),0px 2px 2px 0px rgba(0, 0, 0, 0.14),0px 1px 5px 0px rgba(0,0,0,.12);box-sizing:border-box;width:20px;height:20px;border:10px solid;border-radius:50%;pointer-events:none;z-index:1}.mdc-switch--checked .mdc-switch__track{opacity:.54}.mdc-switch--checked .mdc-switch__thumb-underlay{transform:translateX(20px)}[dir=rtl] .mdc-switch--checked .mdc-switch__thumb-underlay,.mdc-switch--checked .mdc-switch__thumb-underlay[dir=rtl]{transform:translateX(-20px)}.mdc-switch--checked .mdc-switch__native-control{transform:translateX(-20px)}[dir=rtl] .mdc-switch--checked .mdc-switch__native-control,.mdc-switch--checked .mdc-switch__native-control[dir=rtl]{transform:translateX(20px)}.mdc-switch--disabled{opacity:.38;pointer-events:none}.mdc-switch--disabled .mdc-switch__thumb{border-width:1px}.mdc-switch--disabled .mdc-switch__native-control{cursor:default;pointer-events:none}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay::before,.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay::after{background-color:#9e9e9e}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay:hover::before{opacity:.08}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded):focus::before,.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb-underlay.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.mdc-switch__thumb-underlay{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-switch__thumb-underlay::before,.mdc-switch__thumb-underlay::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-switch__thumb-underlay::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-switch__thumb-underlay.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-switch__thumb-underlay.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-switch__thumb-underlay.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-switch__thumb-underlay.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-switch__thumb-underlay.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-switch__thumb-underlay::before,.mdc-switch__thumb-underlay::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-switch__thumb-underlay.mdc-ripple-upgraded::before,.mdc-switch__thumb-underlay.mdc-ripple-upgraded::after{top:calc(50% - 50%);top:var(--mdc-ripple-top, calc(50% - 50%));left:calc(50% - 50%);left:var(--mdc-ripple-left, calc(50% - 50%));width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-switch__thumb-underlay.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-switch__thumb-underlay::before,.mdc-switch__thumb-underlay::after{background-color:#446199}@supports not (-ms-ime-align: auto){.mdc-switch__thumb-underlay::before,.mdc-switch__thumb-underlay::after{background-color:#446199;background-color:var(--mdc-theme-secondary, #446199)}}.mdc-switch__thumb-underlay:hover::before{opacity:.04}.mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded):focus::before,.mdc-switch__thumb-underlay.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-switch__thumb-underlay.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.googlesitekit-plugin .mdc-button{box-shadow:none;text-transform:none}.googlesitekit-plugin .mdc-button:not(:disabled){color:#3c7251}@media(max-width: 960px){.googlesitekit-plugin .mdc-button{min-width:auto}}.googlesitekit-plugin .mdc-button--raised{border-radius:100px;box-shadow:none;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;height:auto;letter-spacing:normal;min-height:40px;padding-bottom:8px;padding-top:8px;text-align:center}.googlesitekit-plugin .mdc-button--raised:not(:disabled){background-color:#3c7251}.googlesitekit-plugin .mdc-button--raised:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin .mdc-button--raised::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin .mdc-button--raised::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--raised:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--raised.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--raised.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button--raised.mdc-button--dense{border-radius:100px}.googlesitekit-plugin .mdc-button--raised:hover{text-decoration:none}.googlesitekit-plugin .mdc-button--raised:focus{outline:none}.googlesitekit-plugin .mdc-button--danger:not(:disabled){background-color:#ac4220}.googlesitekit-plugin .mdc-button--danger:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--danger::before,.googlesitekit-plugin .mdc-button--danger::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--danger::before,.googlesitekit-plugin .mdc-button--danger::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--danger:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--danger.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--danger.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button--dropdown{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20viewBox%3D%220%200%2012%208%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.6.6L12%202%206%208%200%202%201.4.6%206%205.2z%22%20fill%3D%22%23757575%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:calc(100% - 8px) center;background-repeat:no-repeat;background-size:9px 6px;letter-spacing:normal;padding-right:12px;text-transform:none}.googlesitekit-plugin .mdc-button--dropdown:not(:disabled){color:#131418}@media(min-width: 600px){.googlesitekit-plugin .mdc-button--dropdown{padding-right:25px}}.googlesitekit-plugin .mdc-button--dropdown:hover,.googlesitekit-plugin .mdc-button--dropdown:active,.googlesitekit-plugin .mdc-button--dropdown:focus{text-decoration:none}.googlesitekit-plugin .mdc-button--dropdown:hover:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:active:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:focus:not(:disabled){background-color:#ebeef0}.googlesitekit-plugin .mdc-button--dropdown:hover:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:active:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:focus:not(:disabled){color:rgba(0,0,0,.87);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87))}.googlesitekit-plugin .mdc-button--dropdown:hover::before,.googlesitekit-plugin .mdc-button--dropdown:hover::after,.googlesitekit-plugin .mdc-button--dropdown:active::before,.googlesitekit-plugin .mdc-button--dropdown:active::after,.googlesitekit-plugin .mdc-button--dropdown:focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus::after{background-color:rgba(0,0,0,.87)}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--dropdown:hover::before,.googlesitekit-plugin .mdc-button--dropdown:hover::after,.googlesitekit-plugin .mdc-button--dropdown:active::before,.googlesitekit-plugin .mdc-button--dropdown:active::after,.googlesitekit-plugin .mdc-button--dropdown:focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus::after{background-color:rgba(0, 0, 0, 0.87);background-color:var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87))}}.googlesitekit-plugin .mdc-button--dropdown:hover:hover::before,.googlesitekit-plugin .mdc-button--dropdown:active:hover::before,.googlesitekit-plugin .mdc-button--dropdown:focus:hover::before{opacity:.04}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:hover.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:active.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-button--dropdown:hover.mdc-ripple-upgraded,.googlesitekit-plugin .mdc-button--dropdown:active.mdc-ripple-upgraded,.googlesitekit-plugin .mdc-button--dropdown:focus.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}@media(max-width: 599px){.googlesitekit-plugin .mdc-button--dropdown{background-image:none}}@media(max-width: 599px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}}@media(min-width: 600px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(min-width: 960px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:300px}}@media(min-width: 1280px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:450px}}.googlesitekit-plugin .mdc-button--inverse:not(:disabled){background-color:#161b18}.googlesitekit-plugin .mdc-button--inverse:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--inverse::before,.googlesitekit-plugin .mdc-button--inverse::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--inverse::before,.googlesitekit-plugin .mdc-button--inverse::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--inverse:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--inverse.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--inverse.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button .mdc-button__icon--image{border-radius:50%;display:block;height:18px;width:18px}.googlesitekit-plugin .mdc-button .mdc-button__trailing-icon{margin-left:8px}.googlesitekit-plugin .mdc-checkbox{box-sizing:content-box}.googlesitekit-plugin .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:#131418;background-color:#fff}.googlesitekit-plugin .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.googlesitekit-plugin .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:#131418;background-color:#000}@keyframes mdc-checkbox-fade-in-background-0{0%{border-color:#131418;background-color:#fff}50%{border-color:#131418;background-color:#000}}@keyframes mdc-checkbox-fade-out-background-0{0%,80%{border-color:#131418;background-color:#000}100%{border-color:#131418;background-color:#fff}}.googlesitekit-plugin .mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.googlesitekit-plugin .mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-0}.googlesitekit-plugin .mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.googlesitekit-plugin .mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-0}.googlesitekit-plugin .mdc-checkbox .mdc-checkbox__checkmark{color:#fff}.googlesitekit-plugin .mdc-checkbox .mdc-checkbox__mixedmark{border-color:#fff}.googlesitekit-plugin .mdc-checkbox .mdc-checkbox__background::before{background-color:#00220d}.googlesitekit-plugin .mdc-checkbox .mdc-checkbox__native-control{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:0;box-shadow:none;clear:none;color:#131418;cursor:inherit;display:block;height:100%;line-height:normal;margin:0;min-width:auto;opacity:0;outline:0;padding:0;text-align:center;transition:none;vertical-align:middle;width:100%;z-index:1}.googlesitekit-plugin .mdc-chip{border-radius:100px;font-weight:500;height:auto;padding:8px 12px}@media(min-width: 783px){.googlesitekit-plugin .mdc-chip{font-size:16px;letter-spacing:.5px;margin:4px 16px;padding:12px 16px}}.googlesitekit-plugin .mdc-dialog{z-index:10000}.googlesitekit-plugin .mdc-dialog .mdc-dialog__surface{padding:24px 48px}.googlesitekit-plugin .mdc-dialog .mdc-dialog__lead,.googlesitekit-plugin .mdc-dialog .mdc-dialog__title{color:#00220d;text-align:center}.googlesitekit-plugin .mdc-dialog .mdc-dialog__lead{font-size:16px;font-weight:300;letter-spacing:.5px;margin:0;max-width:430px}.googlesitekit-plugin .mdc-dialog .mdc-dialog__content{overflow:visible;overflow:initial;padding:20px 16px}.googlesitekit-plugin .mdc-dialog .mdc-dialog__actions{justify-content:space-between;margin:1em 0}.googlesitekit-plugin .mdc-floating-label{vertical-align:baseline;vertical-align:initial}.googlesitekit-plugin .mdc-form-field{color:#131418}.googlesitekit-plugin .mdc-layout-grid+.mdc-layout-grid{padding-top:0}.googlesitekit-plugin .mdc-layout-grid--collapsed{padding:0}.googlesitekit-plugin .mdc-layout-grid--collapsed .mdc-layout-grid__inner{grid-gap:0}.googlesitekit-plugin .mdc-layout-grid--fill .mdc-layout-grid__inner{height:100%}.googlesitekit-plugin .mdc-layout-grid__cell--align-left{margin-right:auto;width:auto}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--align-left{justify-self:start}}.googlesitekit-plugin .mdc-layout-grid__cell--align-right{margin-left:auto;width:auto}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--align-right{justify-self:end}}@media(min-width: 0){.googlesitekit-plugin .mdc-layout-grid__cell--align-right-phone{margin-left:auto;width:auto}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--align-right-phone{justify-self:end}}}@media(min-width: 601px){.googlesitekit-plugin .mdc-layout-grid__cell--align-right-tablet{margin-left:auto;width:auto}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--align-right-tablet{justify-self:end}}}@media(min-width: 961px){.googlesitekit-plugin .mdc-layout-grid__cell--align-right-desktop{margin-left:auto;width:auto}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--align-right-desktop{justify-self:end}}}@media(min-width: 600px){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1{margin-left:8.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-1{grid-column-start:2}.googlesitekit-plugin .mdc-layout-grid__cell--offset-2{margin-left:16.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-2{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-2{grid-column-start:3}.googlesitekit-plugin .mdc-layout-grid__cell--offset-3{margin-left:25%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-3{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-3{grid-column-start:4}.googlesitekit-plugin .mdc-layout-grid__cell--offset-4{margin-left:33.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-4{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-4{grid-column-start:5}.googlesitekit-plugin .mdc-layout-grid__cell--offset-5{margin-left:41.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-5{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-5{grid-column-start:6}.googlesitekit-plugin .mdc-layout-grid__cell--offset-6{margin-left:50%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-6{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-6{grid-column-start:7}.googlesitekit-plugin .mdc-layout-grid__cell--offset-7{margin-left:58.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-7{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-7{grid-column-start:8}.googlesitekit-plugin .mdc-layout-grid__cell--offset-8{margin-left:66.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-8{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-8{grid-column-start:9}.googlesitekit-plugin .mdc-layout-grid__cell--offset-9{margin-left:75%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-9{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-9{grid-column-start:10}.googlesitekit-plugin .mdc-layout-grid__cell--offset-10{margin-left:83.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-10{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-10{grid-column-start:11}.googlesitekit-plugin .mdc-layout-grid__cell--offset-11{margin-left:91.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-11{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-11{grid-column-start:12}.googlesitekit-plugin .mdc-layout-grid__cell--offset-12{margin-left:100%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-12{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-12{grid-column-start:13}}@media(min-width: 0){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1-phone{margin-left:8.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-1-phone{grid-column-start:2}.googlesitekit-plugin .mdc-layout-grid__cell--offset-2-phone{margin-left:16.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-2-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-2-phone{grid-column-start:3}.googlesitekit-plugin .mdc-layout-grid__cell--offset-3-phone{margin-left:25%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-3-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-3-phone{grid-column-start:4}.googlesitekit-plugin .mdc-layout-grid__cell--offset-4-phone{margin-left:33.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-4-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-4-phone{grid-column-start:5}.googlesitekit-plugin .mdc-layout-grid__cell--offset-5-phone{margin-left:41.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-5-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-5-phone{grid-column-start:6}.googlesitekit-plugin .mdc-layout-grid__cell--offset-6-phone{margin-left:50%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-6-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-6-phone{grid-column-start:7}.googlesitekit-plugin .mdc-layout-grid__cell--offset-7-phone{margin-left:58.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-7-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-7-phone{grid-column-start:8}.googlesitekit-plugin .mdc-layout-grid__cell--offset-8-phone{margin-left:66.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-8-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-8-phone{grid-column-start:9}.googlesitekit-plugin .mdc-layout-grid__cell--offset-9-phone{margin-left:75%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-9-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-9-phone{grid-column-start:10}.googlesitekit-plugin .mdc-layout-grid__cell--offset-10-phone{margin-left:83.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-10-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-10-phone{grid-column-start:11}.googlesitekit-plugin .mdc-layout-grid__cell--offset-11-phone{margin-left:91.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-11-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-11-phone{grid-column-start:12}.googlesitekit-plugin .mdc-layout-grid__cell--offset-12-phone{margin-left:100%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-12-phone{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-12-phone{grid-column-start:13}}@media(min-width: 601px){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1-tablet{margin-left:8.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-1-tablet{grid-column-start:2}.googlesitekit-plugin .mdc-layout-grid__cell--offset-2-tablet{margin-left:16.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-2-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-2-tablet{grid-column-start:3}.googlesitekit-plugin .mdc-layout-grid__cell--offset-3-tablet{margin-left:25%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-3-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-3-tablet{grid-column-start:4}.googlesitekit-plugin .mdc-layout-grid__cell--offset-4-tablet{margin-left:33.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-4-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-4-tablet{grid-column-start:5}.googlesitekit-plugin .mdc-layout-grid__cell--offset-5-tablet{margin-left:41.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-5-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-5-tablet{grid-column-start:6}.googlesitekit-plugin .mdc-layout-grid__cell--offset-6-tablet{margin-left:50%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-6-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-6-tablet{grid-column-start:7}.googlesitekit-plugin .mdc-layout-grid__cell--offset-7-tablet{margin-left:58.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-7-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-7-tablet{grid-column-start:8}.googlesitekit-plugin .mdc-layout-grid__cell--offset-8-tablet{margin-left:66.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-8-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-8-tablet{grid-column-start:9}.googlesitekit-plugin .mdc-layout-grid__cell--offset-9-tablet{margin-left:75%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-9-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-9-tablet{grid-column-start:10}.googlesitekit-plugin .mdc-layout-grid__cell--offset-10-tablet{margin-left:83.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-10-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-10-tablet{grid-column-start:11}.googlesitekit-plugin .mdc-layout-grid__cell--offset-11-tablet{margin-left:91.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-11-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-11-tablet{grid-column-start:12}.googlesitekit-plugin .mdc-layout-grid__cell--offset-12-tablet{margin-left:100%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-12-tablet{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-12-tablet{grid-column-start:13}}@media(min-width: 961px){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1-desktop{margin-left:8.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-1-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-1-desktop{grid-column-start:2}.googlesitekit-plugin .mdc-layout-grid__cell--offset-2-desktop{margin-left:16.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-2-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-2-desktop{grid-column-start:3}.googlesitekit-plugin .mdc-layout-grid__cell--offset-3-desktop{margin-left:25%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-3-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-3-desktop{grid-column-start:4}.googlesitekit-plugin .mdc-layout-grid__cell--offset-4-desktop{margin-left:33.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-4-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-4-desktop{grid-column-start:5}.googlesitekit-plugin .mdc-layout-grid__cell--offset-5-desktop{margin-left:41.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-5-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-5-desktop{grid-column-start:6}.googlesitekit-plugin .mdc-layout-grid__cell--offset-6-desktop{margin-left:50%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-6-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-6-desktop{grid-column-start:7}.googlesitekit-plugin .mdc-layout-grid__cell--offset-7-desktop{margin-left:58.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-7-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-7-desktop{grid-column-start:8}.googlesitekit-plugin .mdc-layout-grid__cell--offset-8-desktop{margin-left:66.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-8-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-8-desktop{grid-column-start:9}.googlesitekit-plugin .mdc-layout-grid__cell--offset-9-desktop{margin-left:75%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-9-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-9-desktop{grid-column-start:10}.googlesitekit-plugin .mdc-layout-grid__cell--offset-10-desktop{margin-left:83.3333333333%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-10-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-10-desktop{grid-column-start:11}.googlesitekit-plugin .mdc-layout-grid__cell--offset-11-desktop{margin-left:91.6666666667%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-11-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-11-desktop{grid-column-start:12}.googlesitekit-plugin .mdc-layout-grid__cell--offset-12-desktop{margin-left:100%}@supports(display: grid){.googlesitekit-plugin .mdc-layout-grid__cell--offset-12-desktop{margin-left:0}}.googlesitekit-plugin .mdc-layout-grid__cell--start-12-desktop{grid-column-start:13}}@media(min-width: 0){.googlesitekit-plugin .mdc-layout-grid__cell--order-1-phone{order:1}.googlesitekit-plugin .mdc-layout-grid__cell--order-2-phone{order:2}.googlesitekit-plugin .mdc-layout-grid__cell--order-3-phone{order:3}.googlesitekit-plugin .mdc-layout-grid__cell--order-4-phone{order:4}.googlesitekit-plugin .mdc-layout-grid__cell--order-5-phone{order:5}.googlesitekit-plugin .mdc-layout-grid__cell--order-6-phone{order:6}.googlesitekit-plugin .mdc-layout-grid__cell--order-7-phone{order:7}.googlesitekit-plugin .mdc-layout-grid__cell--order-8-phone{order:8}.googlesitekit-plugin .mdc-layout-grid__cell--order-9-phone{order:9}.googlesitekit-plugin .mdc-layout-grid__cell--order-10-phone{order:10}.googlesitekit-plugin .mdc-layout-grid__cell--order-11-phone{order:11}.googlesitekit-plugin .mdc-layout-grid__cell--order-12-phone{order:12}}@media(min-width: 601px){.googlesitekit-plugin .mdc-layout-grid__cell--order-1-tablet{order:1}.googlesitekit-plugin .mdc-layout-grid__cell--order-2-tablet{order:2}.googlesitekit-plugin .mdc-layout-grid__cell--order-3-tablet{order:3}.googlesitekit-plugin .mdc-layout-grid__cell--order-4-tablet{order:4}.googlesitekit-plugin .mdc-layout-grid__cell--order-5-tablet{order:5}.googlesitekit-plugin .mdc-layout-grid__cell--order-6-tablet{order:6}.googlesitekit-plugin .mdc-layout-grid__cell--order-7-tablet{order:7}.googlesitekit-plugin .mdc-layout-grid__cell--order-8-tablet{order:8}.googlesitekit-plugin .mdc-layout-grid__cell--order-9-tablet{order:9}.googlesitekit-plugin .mdc-layout-grid__cell--order-10-tablet{order:10}.googlesitekit-plugin .mdc-layout-grid__cell--order-11-tablet{order:11}.googlesitekit-plugin .mdc-layout-grid__cell--order-12-tablet{order:12}}@media(min-width: 961px){.googlesitekit-plugin .mdc-layout-grid__cell--order-1-desktop{order:1}.googlesitekit-plugin .mdc-layout-grid__cell--order-2-desktop{order:2}.googlesitekit-plugin .mdc-layout-grid__cell--order-3-desktop{order:3}.googlesitekit-plugin .mdc-layout-grid__cell--order-4-desktop{order:4}.googlesitekit-plugin .mdc-layout-grid__cell--order-5-desktop{order:5}.googlesitekit-plugin .mdc-layout-grid__cell--order-6-desktop{order:6}.googlesitekit-plugin .mdc-layout-grid__cell--order-7-desktop{order:7}.googlesitekit-plugin .mdc-layout-grid__cell--order-8-desktop{order:8}.googlesitekit-plugin .mdc-layout-grid__cell--order-9-desktop{order:9}.googlesitekit-plugin .mdc-layout-grid__cell--order-10-desktop{order:10}.googlesitekit-plugin .mdc-layout-grid__cell--order-11-desktop{order:11}.googlesitekit-plugin .mdc-layout-grid__cell--order-12-desktop{order:12}}.googlesitekit-plugin .mdc-linear-progress{margin:32px 0}.googlesitekit-plugin .mdc-linear-progress .mdc-linear-progress__bar-inner{background-color:#3c7251}@media(min-width: 960px){.googlesitekit-plugin .mdc-linear-progress{margin:48px 0}}.googlesitekit-plugin .mdc-linear-progress--small{max-width:150px}.googlesitekit-plugin .mdc-linear-progress--compress{margin:0}.googlesitekit-plugin .mdc-list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item{margin:0}.googlesitekit-plugin .mdc-list.mdc-list--underlined .mdc-list-item,.googlesitekit-plugin .mdc-list.mdc-list--underlined .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item,.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-list.mdc-list--underlined .googlesitekit-view-only-menu__list-item{border-bottom:1px solid #ebeef0;padding-left:0;padding-right:0}.mdc-menu-surface{box-shadow:0 1.25px 5px 0 rgba(0,0,0,.19),0 .33px 1.5px 0 rgba(0,0,0,.039);border-radius:16px}.googlesitekit-plugin .mdc-menu-surface{left:auto !important;right:-8px;top:calc(100% + 10px) !important;width:calc(100% + 8px)}.mdc-menu-surface--open{z-index:13}.googlesitekit-plugin .mdc-radio .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:#000}.googlesitekit-plugin .mdc-radio .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:#000}.googlesitekit-plugin .mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:#000}.googlesitekit-plugin .mdc-radio .mdc-radio__background::before{background-color:#00220d}.googlesitekit-plugin .mdc-radio .mdc-radio__native-control{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:0;box-shadow:none;clear:none;color:#131418;cursor:inherit;display:block;height:100%;line-height:normal;margin:0;min-width:auto;opacity:0;outline:0;padding:0;text-align:center;transition:none;vertical-align:middle;width:100%;z-index:1}.googlesitekit-plugin .mdc-select{max-width:100%}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled) .mdc-select__native-control,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text{color:#131418}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled) .mdc-floating-label{color:#131418}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label{color:#131418}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#b8bdb9}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#757575}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#3c7251}.googlesitekit-plugin .mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple{background-color:#446199}.googlesitekit-plugin .mdc-select .mdc-notched-outline .mdc-notched-outline__leading{border-radius:8px 0 0 8px}[dir=rtl] .googlesitekit-plugin .mdc-select .mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-radius:0 8px 8px 0}.googlesitekit-plugin .mdc-select .mdc-notched-outline .mdc-notched-outline__trailing{border-radius:0 8px 8px 0}[dir=rtl] .googlesitekit-plugin .mdc-select .mdc-notched-outline .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-select .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-radius:8px 0 0 8px}.googlesitekit-plugin .mdc-select .mdc-select__native-control{border-radius:8px}.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#ac4220}.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__native-control:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ac4220}.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px}.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ac4220}.googlesitekit-plugin .mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-line-ripple{background-color:#ac4220}.googlesitekit-plugin .mdc-select--minimal{background-color:transparent;background-position:right center;display:block;height:20px;line-height:1;margin:0 0 -6px;padding-bottom:6px;width:90px}.googlesitekit-plugin .mdc-select--minimal::before{background-color:transparent}.googlesitekit-plugin .mdc-select .mdc-select__selected-text{display:block;overflow:hidden;text-overflow:ellipsis}.googlesitekit-plugin .mdc-select .mdc-select__native-control{-webkit-appearance:none;appearance:none;box-shadow:none;height:56px !important;line-height:1.75rem;margin:0;padding:20px 26px 4px 16px}.googlesitekit-plugin .mdc-select--outlined .mdc-select__native-control{background-color:transparent;border:none;box-shadow:none;display:flex;padding:12px 26px 12px 16px;z-index:1}.googlesitekit-plugin .mdc-select--minimal .mdc-select__selected-text{border:none;font-size:12px !important;height:14px !important;letter-spacing:.2px;line-height:1;min-width:0;padding:0 18px 0 0;text-align:right;text-indent:0}.googlesitekit-plugin .mdc-select--minimal .mdc-select__dropdown-icon{bottom:2px;right:-5px}.googlesitekit-plugin .mdc-select--minimal.mdc-select--focused .mdc-select__dropdown-icon{transform:rotate(180deg) translateY(0)}.googlesitekit-plugin .mdc-select.mdc-select--focused:not(.mdc-select--disabled) .mdc-floating-label--float-above{color:#3c7251}.googlesitekit-plugin .mdc-switch{vertical-align:middle}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__track{background-color:#3c7251;border-color:#3c7251}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb{background-color:#3c7251;border-color:#3c7251}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay::before,.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay::after{background-color:#3c7251}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay:hover::before{opacity:.04}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb-underlay.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__thumb{background-color:#3c7251;border-color:#3c7251}.googlesitekit-plugin .mdc-switch.mdc-switch--checked .mdc-switch__track{background-color:#b0e6c5;border-color:#b0e6c5}.googlesitekit-plugin .mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb{background-color:#5f6561;border-color:#5f6561}.googlesitekit-plugin .mdc-switch:not(.mdc-switch--checked) .mdc-switch__track{background-color:#cbd0d3;border-color:#cbd0d3}.googlesitekit-plugin .mdc-switch .mdc-switch__native-control{-webkit-appearance:none;appearance:none;background:transparent;border:none;box-shadow:none;clear:none;color:#131418;cursor:pointer;display:block;height:48px;line-height:normal;margin:0;min-width:auto;outline:0;padding:0;text-align:center;transition:none;vertical-align:middle;width:68px}.googlesitekit-plugin .mdc-switch .mdc-switch__native-control::before{opacity:0 !important}.googlesitekit-plugin .mdc-switch+label{font-size:14px;letter-spacing:.25px;line-height:1.43;margin-left:10px}.googlesitekit-plugin .mdc-switch .mdc-switch__track{opacity:1}.googlesitekit-plugin .mdc-switch .mdc-switch__thumb{box-shadow:none}.googlesitekit-plugin .mdc-tab{font-size:12px;letter-spacing:.2px;line-height:1;text-transform:none}.googlesitekit-plugin .mdc-tab.mdc-tab--active .mdc-tab__text-label{color:#3c7251}.googlesitekit-plugin .mdc-tab .mdc-tab__ripple::before,.googlesitekit-plugin .mdc-tab .mdc-tab__ripple::after{background-color:#3c7251}.googlesitekit-plugin .mdc-tab .mdc-tab__ripple:hover::before{opacity:.04}.googlesitekit-plugin .mdc-tab .mdc-tab__ripple:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-tab .mdc-tab__ripple.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-tab .mdc-tab__ripple:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-tab .mdc-tab__ripple:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-tab .mdc-tab__ripple.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.googlesitekit-plugin .mdc-tab:hover{text-decoration:none}.googlesitekit-plugin .mdc-tab:focus{color:#3c7251;outline:none}.googlesitekit-plugin .mdc-text-field{width:250px}.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#131418}.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#131418}.googlesitekit-plugin .mdc-text-field .mdc-text-field__input{caret-color:#3c7251}.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#3c7251}.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#757575}.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#999f9b}.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#999f9b}.googlesitekit-plugin .mdc-text-field .mdc-notched-outline__leading{border-radius:8px 0 0 8px}[dir=rtl] .googlesitekit-plugin .mdc-text-field .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field .mdc-notched-outline__leading[dir=rtl]{border-radius:0 8px 8px 0}.googlesitekit-plugin .mdc-text-field .mdc-notched-outline__trailing{border-radius:0 8px 8px 0}[dir=rtl] .googlesitekit-plugin .mdc-text-field .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field .mdc-notched-outline__trailing[dir=rtl]{border-radius:8px 0 0 8px}.googlesitekit-plugin .mdc-text-field .mdc-notched-outline__notch{padding-right:0;width:auto !important}@media(min-width: 600px){.googlesitekit-plugin .mdc-text-field{width:350px}}.googlesitekit-plugin .mdc-text-field--textarea{max-width:650px;width:100%}.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#ac4220}.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__icon:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ac4220}.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ac4220}.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ac4220}.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--disabled) .mdc-floating-label,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ac4220}.googlesitekit-plugin .mdc-text-field--error:not(.mdc-text-field--focused) .mdc-floating-label--float-above,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea:not(.mdc-text-field--focused) .mdc-floating-label--float-above{color:#ac4220}.googlesitekit-plugin .mdc-text-field--error+.mdc-text-field-helper-line .mdc-text-field-helper-text,.googlesitekit-plugin .mdc-text-field--error.mdc-text-field--textarea+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#ac4220}.googlesitekit-plugin .mdc-text-field--textarea.mdc-text-field--focused{border-color:#446199}.googlesitekit-plugin .mdc-text-field--textarea .mdc-text-field__input{box-shadow:none;padding:8px 12px 12px}.googlesitekit-plugin .mdc-text-field--textarea:not(.mdc-text-field--disabled) .mdc-text-field__input:focus{border-color:#446199}:root{--reach-combobox: 1}.googlesitekit-plugin{color:#131418;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.43}.googlesitekit-plugin *,.googlesitekit-plugin *::before,.googlesitekit-plugin *::after{box-sizing:border-box}.googlesitekit-plugin svg{color:inherit}.googlesitekit-plugin svg:not(:root){overflow:hidden}.googlesitekit-plugin h1,.googlesitekit-plugin h2,.googlesitekit-plugin h3,.googlesitekit-plugin h4,.googlesitekit-plugin h5,.googlesitekit-plugin h6{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.16}.googlesitekit-plugin h1,.googlesitekit-plugin .googlesitekit-heading-1{font-size:32px;font-weight:400;line-height:1.25}.googlesitekit-plugin h2,.googlesitekit-plugin .googlesitekit-heading-2{font-size:28px;font-weight:400;line-height:1.28}.googlesitekit-plugin h3,.googlesitekit-plugin .googlesitekit-heading-3{font-size:24px;font-weight:400;line-height:1.33}.googlesitekit-plugin h4,.googlesitekit-plugin .googlesitekit-heading-4{font-size:20px;font-weight:700;line-height:1.2}.googlesitekit-plugin .googlesitekit-subheading-1{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14}.googlesitekit-plugin .googlesitekit-subheading-2{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33}.googlesitekit-plugin .googlesitekit-nodata{display:none}.googlesitekit-plugin legend,.googlesitekit-plugin p:not([class*=mdc-]){font-size:14px;letter-spacing:.25px}.googlesitekit-plugin a{color:#108080;text-decoration:none}.googlesitekit-plugin a:hover{text-decoration:underline}.googlesitekit-plugin a:focus{box-shadow:none;outline:1px dotted #000;outline-offset:3px}.googlesitekit-plugin button{background:none;border:none;border-radius:100px;color:#108080;text-decoration:none}.googlesitekit-plugin button:hover{text-decoration:underline}.googlesitekit-plugin button:focus{outline:1px dotted #000;outline-offset:6px}.googlesitekit-plugin legend{line-height:1.5;margin:1em 0}.googlesitekit-plugin .screen-reader-only{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}@media(max-width: 599px){.googlesitekit-plugin .hidden-on-mobile{display:none}}.googlesitekit-hidden{display:none !important}.googlesitekit-activation .googlesitekit-activation__title{margin:10px 0 20px}.googlesitekit-noscript #googlesitekit-notice-activated{border-left-color:#fece72;margin:5px 15px 5px 0;padding:0}.googlesitekit-noscript #googlesitekit-notice-activated .googlesitekit-noscript{border:0;margin:0;padding:0}.googlesitekit-accordion{border:1px solid #ebeef0}.googlesitekit-accordion .googlesitekit-accordion__header,.googlesitekit-accordion .googlesitekit-accordion__content{padding:14px 20px}.googlesitekit-accordion .googlesitekit-accordion__header{cursor:pointer;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14;padding-right:32px;position:relative;width:100%}.googlesitekit-accordion .googlesitekit-accordion__header:hover{text-decoration:none}.googlesitekit-accordion .googlesitekit-accordion__header:focus{outline-offset:0}.googlesitekit-accordion .googlesitekit-accordion__header::after{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20viewBox%3D%220%200%2012%208%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.6.6L12%202%206%208%200%202%201.4.6%206%205.2z%22%20fill%3D%22%235B5B61%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:center center;background-repeat:no-repeat;content:"";display:block;height:20px;position:absolute;right:16px;top:50%;transform:translateY(-50%);width:20px}.googlesitekit-accordion .googlesitekit-accordion__header.is-active{font-weight:700}.googlesitekit-accordion .googlesitekit-accordion__header.is-active::after{transform:translateY(-50%) rotate(180deg)}.js .googlesitekit-accordion .googlesitekit-accordion__content{display:none}.js .googlesitekit-accordion .googlesitekit-accordion__content.is-active{display:block}.googlesitekit-accordion .googlesitekit-accordion__content p{margin-top:0}.googlesitekit-accordion+.googlesitekit-accordion{border-top-width:0}.googlesitekit-plugin .googlesitekit-analytics-cta{--cta-analytics-gap: 16px;--cta-analytics-gap-narrow: calc(var(--cta-analytics-gap) / 2);background-color:#ebeef0;display:flex;flex-direction:column;grid-gap:var(--cta-analytics-gap);gap:var(--cta-analytics-gap);padding:var(--cta-analytics-gap)}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta{--cta-analytics-gap: 24px;flex-direction:row-reverse}}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta--description{color:#161b18;font-size:14px;letter-spacing:.25px;margin:0}.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{margin-top:var(--cta-analytics-gap-narrow);width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{width:auto}}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{margin-top:var(--cta-analytics-gap)}}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-cta--activate-analytics,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs{display:flex;grid-gap:var(--cta-analytics-gap);gap:var(--cta-analytics-gap)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph{background-color:#fff;border-radius:4px;display:flex;flex:1;flex-direction:column;padding:var(--cta-analytics-gap-narrow)}#dashboard-widgets .googlesitekit-plugin .googlesitekit-analytics-cta h3.googlesitekit-analytics-cta__preview-graph--title,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--title{color:#333935;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;letter-spacing:.2px;margin:0 0 auto;padding-bottom:var(--cta-analytics-gap-narrow)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--icons{align-items:center;color:#cbd0d3;display:flex;grid-gap:4px;gap:4px;padding-top:var(--cta-analytics-gap-narrow)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--up-arrow{height:12px}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--bar{background-color:#cbd0d3;border-radius:5px;height:8px;width:24px}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__details{flex:1}}.autocomplete__wrapper{flex:1 1 100%;margin:0 0 16px 0;position:relative}@media(min-width: 600px){.autocomplete__wrapper{flex:1;margin:0 16px 0 0}}@media(min-width: 960px){.autocomplete__wrapper{margin-right:24px}}.autocomplete__wrapper .autocomplete__input{border-color:#b8bdb9;border-radius:4px;color:#131418;font-size:14px;font-weight:400;height:48px;letter-spacing:.25px;line-height:1.43;padding:12px 16px;position:relative;transition:border-color 150ms ease-in-out;width:100%;z-index:3}.autocomplete__wrapper .autocomplete__input:hover{border-color:#757575}.autocomplete__wrapper .autocomplete__input:focus{border-color:#446199;border-width:2px;box-shadow:none;padding:12px 15px}.autocomplete__input--default{padding:4px}.autocomplete__input--show-all-values{cursor:pointer;padding:4px 34px 4px 4px}.autocomplete__menu{background-color:#446199;border-radius:4px;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;left:1px;line-height:1.5rem;margin:0;padding:8px 0;top:calc(100% - 10px);width:100%}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--inline{position:absolute;z-index:2}.autocomplete__option{color:#fff;font-weight:400;margin-bottom:0;overflow:hidden;padding:12px 16px;position:relative}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#6380b8}.googlesitekit-badge{background-color:#ebeef0;border-radius:100px;color:#333935;display:inline-block;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1;padding:6px 12px;text-transform:uppercase;vertical-align:middle;white-space:nowrap}.googlesitekit-badge--has-left-spacing{margin-left:12px}.googlesitekit-badge--primary{background-color:#b0e6c5;color:#00220d}.googlesitekit-plugin .mdc-button.googlesitekit-button-icon{min-height:auto;min-width:auto;padding:8px}@media(max-width: 599px){.googlesitekit-plugin .mdc-button.googlesitekit-button-icon--phone{min-height:auto;min-width:auto;padding:8px}}.googlesitekit-plugin .mdc-button.googlesitekit-button-icon--spinner__running .mdc-button__label{margin-right:8px}.googlesitekit-plugin .mdc-button.googlesitekit-button-icon--spinner__running svg circle{stroke:#fff}.googlesitekit-plugin .googlesitekit-change-arrow{--color-up: #4d760b;--color-down: #ac4220}.googlesitekit-plugin .googlesitekit-change-arrow--inverted-color{--color-up: #ac4220;--color-down: #4d760b}.googlesitekit-plugin .googlesitekit-change-arrow--up{color:var(--color-up)}.googlesitekit-plugin .googlesitekit-change-arrow--down{color:var(--color-up);transform:rotate(180deg)}.googlesitekit-plugin .googlesitekit-change-arrow--down path{fill:var(--color-down)}.googlesitekit-chart{position:relative}.googlesitekit-chart .googlesitekit-chart__source{font-size:12px;letter-spacing:.2px;margin-top:16px}.googlesitekit-chart--PieChart svg{overflow:visible !important}.googlesitekit-chart--PieChart svg>g>g{pointer-events:none}.googlesitekit-chart--PieChart svg>g:last-child>g:last-child{pointer-events:none}.googlesitekit-chart--PieChart div.google-visualization-tooltip{pointer-events:none;z-index:8}.googlesitekit-chart-loading__forced{height:100%;width:100%}.googlesitekit-chart-loading{align-items:center;display:flex;flex-wrap:wrap;height:100%;justify-items:center;width:100%}.googlesitekit-chart-loading .googlesitekit-chart-loading__wrapper{margin:0 auto;text-align:center;width:100%}.googlesitekit-plugin .googlesitekit-chip{background-color:transparent;border:1px solid #999f9b;border-radius:8px;color:#131418;flex-direction:row-reverse;font-size:12px;justify-content:center;letter-spacing:.2px;line-height:1.33;margin:0;min-width:80px;padding:13px 12px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-chip{padding:3px 12px}}.googlesitekit-plugin .googlesitekit-chip .mdc-chip__checkmark{margin:0}.googlesitekit-plugin .googlesitekit-chip .mdc-chip__checkmark-svg{transition:none}.googlesitekit-plugin .googlesitekit-chip .mdc-chip__text{padding:0 12px}.googlesitekit-plugin .googlesitekit-chip.mdc-chip--selected{background-color:#b0e6c5;border-color:#b0e6c5;grid-gap:6px;gap:6px}.googlesitekit-plugin .googlesitekit-chip.mdc-chip--selected .mdc-chip__checkmark-path{stroke:#131418}.googlesitekit-plugin .googlesitekit-chip.mdc-chip--selected .mdc-chip__checkmark-svg{height:18px;width:18px}.googlesitekit-plugin .googlesitekit-chip.mdc-chip--selected .mdc-chip__text{padding:0}.googlesitekit-plugin .googlesitekit-cta{background-color:#ebeef0;border-radius:16px;font-size:14px;height:100%;letter-spacing:.25px;line-height:1.43;padding:16px;width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-cta{padding:24px}}.googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta--error{background-color:#fff}.googlesitekit-adminbar-modules .googlesitekit-plugin .googlesitekit-cta{padding:16px}.googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta{background-color:#ebeef0;box-sizing:border-box;height:auto;margin-top:12px;padding:12px}.googlesitekit-wp-dashboard .googlesitekit-wp-dashboard-stats__cta .googlesitekit-plugin .googlesitekit-cta{margin-top:0}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__title{color:#131418;font-size:14px;font-weight:500;margin:0 0 5px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-adminbar-modules .googlesitekit-cta__title{font-weight:700;letter-spacing:.5px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description{color:#131418;margin:0 0 20px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description p:first-child{margin-top:0}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error{background-color:#ffc2ae}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error a,.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta__title{color:#7a1e00}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta__description{color:#7a1e00;word-break:break-word}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .mdc-button:not(:disabled){background-color:#ac4220;color:#fff}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta-link--external{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M11%2011H2V2h3V0H2a2%202%200%200%200-2%202v9a2%202%200%200%200%202%202h9c1.1%200%202-.9%202-2V8h-2v3z%22%20fill%3D%22%237a1e00%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20fill%3D%22%237a1e00%22%20d%3D%22M7%200h6v2H7zM11%202h2v4h-2z%22%2F%3E%3Cpath%20d%3D%22M11%202L5%208%22%20stroke%3D%22%237a1e00%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22square%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-plugin .googlesitekit-cta *:last-child{margin-bottom:0}.googlesitekit-cta-link{color:#108080;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;text-align:left;text-decoration:none}.googlesitekit-cta-link:hover{color:#108080;text-decoration:underline}.googlesitekit-cta-link.googlesitekit-cta-link--caps{text-transform:uppercase}.googlesitekit-cta-link.googlesitekit-cta-link--danger{color:#ac4220}.googlesitekit-cta-link.googlesitekit-cta-link--small{font-size:12px;letter-spacing:.2px}.googlesitekit-cta-link.googlesitekit-cta-link--arrow,.googlesitekit-cta-link.googlesitekit-cta-link--external{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M11%2011H2V2h3V0H2a2%202%200%200%200-2%202v9a2%202%200%200%200%202%202h9c1.1%200%202-.9%202-2V8h-2v3z%22%20fill%3D%22%23108080%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20fill%3D%22%23108080%22%20d%3D%22M7%200h6v2H7zM11%202h2v4h-2z%22%2F%3E%3Cpath%20d%3D%22M11%202L5%208%22%20stroke%3D%22%23108080%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22square%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:calc(100% - 1px) center;background-repeat:no-repeat;background-size:13px 13px;padding-right:20px}.googlesitekit-cta-link.googlesitekit-cta-link--arrow{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23108080%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--arrow.googlesitekit-cta-link--inverse{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23FFF%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23108080%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--arrow.googlesitekit-cta-link--disabled{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23bbb%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--inverse{color:#fff}.googlesitekit-cta-link.googlesitekit-cta-link--inverse:hover{color:#fff}.googlesitekit-cta-link.googlesitekit-cta-link--back::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%228%22%20height%3D%227%22%20viewBox%3D%220%200%208%207%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.722%203.96H1.573l2.25%202.25a.464.464%200%200%201-.325.79.459.459%200%200%201-.325-.135L.135%203.827a.459.459%200%200%201%200-.65L3.168.135a.46.46%200%201%201%20.65.65L1.573%203.039h5.15c.253%200%20.46.207.46.46a.462.462%200%200%201-.46.462z%22%20fill%3D%22%23108080%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:center center;background-repeat:no-repeat;background-size:9px 9px;content:"";display:inline-block;height:9px;margin-right:5px;width:9px}.googlesitekit-cta-link.googlesitekit-cta-link--disabled{color:#b8bdb9;cursor:default}.googlesitekit-cta-link.googlesitekit-cta-link--danger:hover{color:#ac4220}.googlesitekit-cta-link.googlesitekit-cta-link--disabled:hover{color:#b8bdb9;text-decoration:none}button.googlesitekit-cta-link{color:#3c7251}button.googlesitekit-cta-link:hover{color:#2e5f41}button.googlesitekit-cta-link.googlesitekit-cta-link--arrow{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%233c7251%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-plugin .googlesitekit-navigation{background-color:#fff;border-bottom:1px solid #ebeef0;justify-content:center;left:0;padding:12px 0;position:sticky;right:0;top:68px;z-index:10}.googlesitekit-plugin .googlesitekit-navigation::before{content:"";display:block;height:3px;left:0;opacity:1;position:absolute;top:-3px;transition:opacity 0s;width:100%}body.googlesitekit-showing-feature-tour .googlesitekit-plugin .googlesitekit-navigation{position:static}@media(min-width: 601px){body.admin-bar .googlesitekit-plugin .googlesitekit-navigation{top:114px}}@media(min-width: 783px){body.admin-bar .googlesitekit-plugin .googlesitekit-navigation{top:100px}}@media(min-width: 961px){body.admin-bar .googlesitekit-plugin .googlesitekit-navigation{top:116px}}.googlesitekit-plugin .googlesitekit-navigation .mdc-chip{background-color:#fff;border:1px solid #ebeef0;border-radius:100px;color:#131418;font-size:14px;letter-spacing:.2px;line-height:1;padding:11px 14px 11px 19px}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-navigation .mdc-chip{padding:5px 10px 5px 12px}}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-navigation .mdc-chip{margin:4px 12px}}.googlesitekit-plugin .googlesitekit-navigation .mdc-chip .mdc-chip__icon{border-radius:0;height:auto;margin-right:6px;width:auto}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-navigation .mdc-chip .mdc-chip__icon{display:none}}.googlesitekit-plugin .googlesitekit-navigation .mdc-chip--selected{color:#3c7251}.googlesitekit-plugin .googlesitekit-navigation--is-sticky{border-bottom:1px solid #ebeef0}.googlesitekit-plugin .googlesitekit-navigation--is-sticky+.googlesitekit-entity-header{border-bottom:1px solid #ebeef0}.googlesitekit-plugin .googlesitekit-navigation--entityDashboard{border-bottom:1px solid #ebeef0;border-radius:0}.googlesitekit-plugin--has-scrolled .googlesitekit-plugin .googlesitekit-header--has-subheader+.googlesitekit-subheader+.googlesitekit-navigation--is-sticky::before{opacity:0;transition:opacity .1s ease-out}.googlesitekit-data-block{--color-up: #4d760b;--color-down: #ac4220;position:relative;text-align:left}.post-php .googlesitekit-data-block{min-width:150px}.googlesitekit-wp-dashboard .googlesitekit-data-block{padding-top:12px}.googlesitekit-data-block--button{cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:flex-end;padding-bottom:16px;padding-top:20px;text-align:center;transition:background-color .2s ease-in-out}@media(min-width: 960px){.googlesitekit-data-block--button{padding-bottom:24px;padding-top:28px}}.googlesitekit-data-block--button::before{content:"";height:4px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.googlesitekit-data-block--selected::before{opacity:1}.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(99,128,184,.1)}.googlesitekit-data-block--button-1.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-1.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-1::before{background-color:#6380b8}.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(190,212,255,.1)}.googlesitekit-data-block--button-2.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-2.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-2::before{background-color:#bed4ff}.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(92,146,113,.1)}.googlesitekit-data-block--button-3.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-3.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-3::before{background-color:#5c9271}.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(110,72,171,.1)}.googlesitekit-data-block--button-4.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-4.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-4::before{background-color:#6e48ab}.googlesitekit-data-block .googlesitekit-data-block__title{color:#5f6561;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14;margin:0 0 12px}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__title{font-size:16px;font-weight:700;letter-spacing:.5px;margin-bottom:5px}#dashboard-widgets .googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__title{font-size:12px;letter-spacing:.2px}.googlesitekit-data-block .googlesitekit-data-block__datapoint{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:46px;font-weight:500;line-height:1.13;margin:0}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__datapoint{display:inline-block;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:38px;line-height:1.15;margin-right:5px}.googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__datapoint{font-size:32px}.googlesitekit-data-block .googlesitekit-data-block__change{color:#5f6561;font-size:12px;letter-spacing:.2px;line-height:1;margin-top:16px;text-transform:none}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__change{display:inline-block;font-size:16px;letter-spacing:.5px;margin-top:0}.googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__change{margin-top:10px}.googlesitekit-data-block .googlesitekit-data-block__change--no-change{visibility:hidden}.googlesitekit-data-block .googlesitekit-data-block__sparkline{margin-top:8px;max-width:150px}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__sparkline{display:none}.googlesitekit-data-block--button .googlesitekit-data-block__sparkline{margin:8px auto 0 auto}.googlesitekit-data-block .googlesitekit-data-block__arrow{display:inline-block;line-height:1;margin-right:2px;vertical-align:baseline}.googlesitekit-data-block .googlesitekit-data-block__arrow--reverse{transform:rotate(180deg)}#wpadminbar .googlesitekit-data-block .googlesitekit-data-block__arrow .svg{height:9px;width:9px}.googlesitekit-data-block .googlesitekit-data-block__suffix{margin-left:4px}.googlesitekit-data-block .googlesitekit-data-block__value,.googlesitekit-data-block .googlesitekit-data-block__suffix{color:#5f6561;display:inline-block;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33;text-transform:none}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__value,.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix{font-size:16px;font-weight:400;letter-spacing:.5px}.googlesitekit-data-block .googlesitekit-data-block__value--up,.googlesitekit-data-block .googlesitekit-data-block__suffix--up{color:var(--color-up)}.googlesitekit-data-block .googlesitekit-data-block__value--down,.googlesitekit-data-block .googlesitekit-data-block__suffix--down{color:var(--color-down)}.googlesitekit-data-block .googlesitekit-data-block__source{font-size:12px;letter-spacing:.2px;margin-top:8px}@media(min-width: 960px){.googlesitekit-data-block .googlesitekit-data-block__source{margin-top:12px}}.googlesitekit-plugin .googlesitekit-data-block__loading{align-items:center;display:flex;flex-direction:row}.googlesitekit-plugin .googlesitekit-data-block--is-gathering-data{cursor:auto}.admin-bar .googlesitekit-plugin .googlesitekit-dialog{align-items:stretch}@media(min-width: 600px){.admin-bar .googlesitekit-plugin .googlesitekit-dialog{align-items:center}}.googlesitekit-plugin .googlesitekit-dialog .mdc-dialog__container{height:100%;max-width:908px;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dialog .mdc-dialog__container{height:auto;max-height:calc(100vh - 120px);width:80%}}.googlesitekit-plugin .googlesitekit-dialog .mdc-dialog__surface{border-radius:0;box-shadow:none;max-height:100%;max-width:100%;padding:0;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dialog .mdc-dialog__surface{border-radius:24px;height:auto}}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__back-wrapper{padding:20px 16px}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__back-wrapper[aria-hidden=true]{display:none}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__back{background-color:transparent;border-radius:0;box-shadow:none;min-height:auto;min-width:auto;padding:0;width:24px}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__back:focus{outline:1px dotted #6380b8;outline-offset:3px}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__back .mdc-button__label{height:24px;line-height:1}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__content{overflow:auto;padding:24px 16px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__content{padding:32px}}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__header{display:flex;flex-wrap:nowrap;grid-gap:12px;gap:12px;margin:0 0 32px}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__header-icon span{align-items:center;background-color:#4d760b;border-radius:50%;color:#fff;display:flex;height:36px;justify-content:center;width:36px}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__header-icon[aria-hidden=true]{display:none}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__title{color:#131418;font-size:24px;font-weight:700;line-height:1.33;margin:0 0 12px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__title{margin:0 0 8px}}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__subtitle{color:#5f6561;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__subtitle--emphasis{font-size:14px}.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__footer{border-top:1px solid #ebeef0;justify-content:flex-end;margin:0;padding:16px;z-index:2}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dialog .googlesitekit-dialog__footer{padding:20px 32px}}.googlesitekit-device-size-tab-bar{border-radius:100px;overflow:hidden;width:auto}.googlesitekit-device-size-tab-bar .mdc-tab-scroller__scroll-content button.mdc-tab{background:#ebeef0;height:32px;width:56px}.googlesitekit-device-size-tab-bar .mdc-tab-scroller__scroll-content button.mdc-tab:first-child{border-radius:100px 0 0 100px}.googlesitekit-device-size-tab-bar .mdc-tab-scroller__scroll-content button.mdc-tab:last-child{border-radius:0 100px 100px 0}.googlesitekit-device-size-tab-bar .mdc-tab-scroller__scroll-content button.mdc-tab svg{color:#5f6561}.googlesitekit-device-size-tab-bar .mdc-tab-scroller__scroll-content button.mdc-tab.mdc-tab--active{background:#3c7251}.googlesitekit-device-size-tab-bar .mdc-tab-scroller__scroll-content button.mdc-tab.mdc-tab--active svg{color:#fff}.googlesitekit-device-size-tab-bar .mdc-tab-scroller__scroll-content button.mdc-tab .mdc-tab-indicator{display:none}.googlesitekit-dropdown-menu .googlesitekit-header__dropdown:focus{outline:0}.googlesitekit-dropdown-menu .mdc-list-item .googlesitekit-cta-link:hover,.googlesitekit-dropdown-menu .googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item .googlesitekit-cta-link:hover,.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-dropdown-menu .googlesitekit-view-only-menu__list-item .googlesitekit-cta-link:hover{text-decoration:none}.googlesitekit-dropdown-menu.googlesitekit-dropdown-menu__icon-menu .mdc-button--dropdown{background-image:none;color:#5f6561;padding-right:8px}.googlesitekit-dropdown-menu .mdc-button--dropdown[aria-expanded=true]{background-color:#ebeef0;color:rgba(0,0,0,.87)}.googlesitekit-plugin .googlesitekit-entity-header{align-items:center;background-color:#fff;border-bottom:1px solid transparent;color:#5f6561;display:flex;justify-content:space-between;padding:16px;-webkit-position:sticky;position:sticky;top:120px;z-index:9}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-entity-header{padding-left:36px;padding-right:36px}}.googlesitekit-navigation--is-sticky+.googlesitekit-plugin .googlesitekit-entity-header{border-bottom:1px solid #ebeef0}@media(min-width: 601px){body.admin-bar .googlesitekit-plugin .googlesitekit-entity-header{top:183px}}@media(min-width: 783px){body.admin-bar .googlesitekit-plugin .googlesitekit-entity-header{top:169px}}@media(min-width: 961px){body.admin-bar .googlesitekit-plugin .googlesitekit-entity-header{top:185px}}body.googlesitekit-showing-feature-tour .googlesitekit-plugin .googlesitekit-entity-header{position:static}.googlesitekit-plugin .googlesitekit-entity-header__back{height:auto;min-width:20%;padding-right:30px}.googlesitekit-plugin .googlesitekit-entity-header__back::before,.googlesitekit-plugin .googlesitekit-entity-header__back::after{display:none}.googlesitekit-plugin .googlesitekit-entity-header__back .mdc-button{height:100%;padding-left:0}.googlesitekit-plugin .googlesitekit-entity-header__back .mdc-button:not(:disabled){color:#5f6561}.googlesitekit-plugin .googlesitekit-entity-header__back .mdc-button__label{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;letter-spacing:.25px;line-height:1.43;margin:0 0 0 8px;text-align:left;text-transform:none}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-entity-header__back .mdc-button__label{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif}}.googlesitekit-plugin .googlesitekit-entity-header__details{font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33;overflow:hidden;text-align:right;white-space:nowrap;width:100%}.googlesitekit-plugin .googlesitekit-entity-header__details p{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0;overflow:hidden;text-overflow:ellipsis}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-entity-header__details p{margin:0}}.googlesitekit-plugin .googlesitekit-entity-header__details a{background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6667 10.6667H1.33333V1.33333H6V0H1.33333C0.979711 0 0.640573 0.140476 0.390524 0.390524C0.140476 0.640573 0 0.979711 0 1.33333V10.6667C0 11.0203 0.140476 11.3594 0.390524 11.6095C0.640573 11.8595 0.979711 12 1.33333 12H10.6667C11.4 12 12 11.4 12 10.6667V6H10.6667V10.6667ZM7.33333 0V1.33333H9.72667L3.17333 7.88667L4.11333 8.82667L10.6667 2.27333V4.66667H12V0H7.33333Z' fill='%23108080'/%3E%3C/svg%3E");background-size:12px;color:#108080;display:inline-block;margin:4px;max-width:100%;text-decoration:underline}.googlesitekit-plugin .googlesitekit-entity-header__details a:hover,.googlesitekit-plugin .googlesitekit-entity-header__details a:focus{color:#2e5f41}.googlesitekit-plugin .googlesitekit-entity-search{background-color:#fff;position:relative}.googlesitekit-plugin .googlesitekit-entity-search .googlesitekit-entity-search__actions{position:absolute;right:17px;top:50%;transform:translateY(-50%);z-index:3}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-entity-search .googlesitekit-entity-search__actions{right:2px}}.googlesitekit-plugin .googlesitekit-entity-search .googlesitekit-entity-search__actions svg{color:#5f6561}.googlesitekit-plugin .googlesitekit-entity-search .googlesitekit-entity-search__close{height:32px;min-height:36px;padding:0}@media(max-width: 960px){.googlesitekit-plugin .googlesitekit-entity-search .googlesitekit-entity-search__close{border-radius:50%}}.googlesitekit-plugin .googlesitekit-entity-search .mdc-button.googlesitekit-entity-search__close{border-radius:50%;min-width:36px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-entity-search .mdc-button.googlesitekit-entity-search__close{min-height:31px;min-width:31px}}.googlesitekit-plugin .googlesitekit-entity-search .googlesitekit-entity-search__loading{border-radius:0 0 16px 16px;bottom:-4px;position:absolute;right:4px;width:calc(100% - 8px);z-index:4}@media(min-width: 783px){.googlesitekit-plugin .googlesitekit-entity-search .googlesitekit-entity-search__loading{bottom:-4px;left:0;margin:0 auto;right:0;width:calc(100% - 25px)}}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__wrapper{margin:0}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__input{border:none;border-radius:100px;font-size:14px;height:34px;letter-spacing:.25px;margin:0;padding:0 32px 0 0}@media(min-width: 783px){.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__input{border:1px solid #999f9b;padding:0 32px 0 16px}}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__input:hover{border-color:#161b18}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__input:focus{border-color:#3c7251;border-width:2px}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__menu{box-shadow:0 1.25px 5px 0 rgba(0,0,0,.19),0 .33px 1.5px 0 rgba(0,0,0,.039);background-color:#fff;border-radius:16px;margin-left:-12px;overflow:hidden;padding:0;top:calc(100% + 14px);width:calc(100% + 24px)}@media(min-width: 783px){.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__menu{margin:0;top:calc(100% + 1px);width:100%}}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option{color:#131418;font-size:14px;letter-spacing:.25px;line-height:1}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option:first-child{border-radius:16px 16px 0 0}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option:last-child{border-radius:0 0 16px 16px}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option--focused,.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option:hover,.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option[data-highlighted]{background-color:rgba(22,27,24,.16);cursor:pointer}.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option--no-results,.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option--no-results:hover,.googlesitekit-plugin .googlesitekit-entity-search .autocomplete__option--no-results[data-highlighted]{background:none;cursor:default}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-entity-search .mdc-button__label{line-height:0}}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-entity-search .mdc-button__label+svg{margin-left:8px}}.googlesitekit-plugin .googlesitekit-entity-search .mdc-button{color:#5f6561;font-weight:400;letter-spacing:.3px;min-width:auto;outline:none;text-transform:none}.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:hover,.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:active,.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:focus{background-color:#f8fafb;color:rgba(0,0,0,.87);text-decoration:none}.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:hover::before,.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:hover::after,.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:active::before,.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:active::after,.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:focus::before,.googlesitekit-plugin .googlesitekit-entity-search .mdc-button:focus::after{background-color:rgba(0,0,0,.87)}.googlesitekit-plugin .googlesitekit-entity-search--is-open{flex:1}@media(max-width: 783px){.googlesitekit-plugin .googlesitekit-entity-search--is-open{align-items:center;display:flex;left:0;margin:0;max-height:68px;padding:14px 16px;position:absolute;right:0;top:0;z-index:1}}.googlesitekit-plugin .googlesitekit-error-handler .googlesitekit-publisher-win__desc p{align-items:center;display:flex;flex-wrap:wrap;grid-gap:16px;gap:16px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-error-handler .googlesitekit-publisher-win__desc p{grid-gap:24px;gap:24px}}.googlesitekit-error-text{color:#ac4220;font-weight:500}.googlesitekit-error-retry-text{color:#ac4220;margin-left:1rem}.googlesitekit-error-cta-wrapper{align-items:center;display:flex;grid-gap:1rem;gap:1rem}.googlesitekit-plugin .googlesitekit-gathering-data-notice{text-transform:lowercase}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small span{font-size:12px;letter-spacing:.2px;line-height:1.33;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-default{position:relative;text-align:inherit}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-default span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-overlay{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-overlay span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay span{font-size:20px;line-height:1.2;max-width:80px;padding:0;text-align:center}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-large span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}#wpadminbar .googlesitekit-plugin .googlesitekit-gathering-data-notice span{color:#999f9b;font-size:12px;letter-spacing:.2px;line-height:1.33;text-transform:lowercase}.googlesitekit-plugin .googlesitekit-subheader{background-color:#fff;position:relative;z-index:11}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-subheader{padding:0 10px}}.googlesitekit-plugin .googlesitekit-subheader:not(:empty){border-bottom:1px solid #ebeef0}.googlesitekit-plugin .googlesitekit-header{background-color:#fff;left:0;position:sticky;right:0;top:0;transition:box-shadow .2s ease-in-out;z-index:12}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-header{padding-left:10px;padding-right:10px}}.wp-responsive-open .googlesitekit-plugin .googlesitekit-header{margin-left:-18px;padding-left:28px}body.googlesitekit-showing-feature-tour .googlesitekit-plugin .googlesitekit-header{position:static}@media(min-width: 601px){body.admin-bar .googlesitekit-plugin .googlesitekit-header{top:46px}}@media(min-width: 783px){body.admin-bar .googlesitekit-plugin .googlesitekit-header{top:32px}}.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__logo{min-width:150px}@media(max-width: 449px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__logo{min-width:100px}}.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__logo-link{display:inline-block}.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__button{align-items:center;background-color:transparent;cursor:pointer;display:flex;font-size:12px;letter-spacing:.2px;margin-right:-8px;padding:8px;transition:background-color .2s ease-in-out,color .2s ease-in-out}.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__button:hover{background-color:#446199;color:#fff;text-decoration:none}.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__button svg{fill:currentColor;margin-left:8px}.googlesitekit-plugin .googlesitekit-header .googlesitekit-dropdown-menu{display:inline-block}.googlesitekit-plugin .googlesitekit-header .googlesitekit-dropdown-menu .mdc-button__icon{margin-right:12px}.googlesitekit-plugin .googlesitekit-header .googlesitekit-dropdown-menu .mdc-button__account{margin-right:0}.googlesitekit-plugin .googlesitekit-header .googlesitekit-dropdown-menu .mdc-button__icon,.googlesitekit-plugin .googlesitekit-header .googlesitekit-dropdown-menu .mdc-button__icon--image{height:28px;width:28px}.googlesitekit-plugin .googlesitekit-header .googlesitekit-dropdown-menu .mdc-button__label{font-weight:400}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-date-range-selector{background:none}}.googlesitekit-plugin .googlesitekit-header .googlesitekit-date-range-selector svg{margin-right:0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-date-range-selector svg{margin-right:8px}}.googlesitekit-plugin .googlesitekit-header .googlesitekit-date-range-selector .mdc-button--dropdown{color:#5f6561;padding-right:24px}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-date-range-selector .mdc-button--dropdown{background:none;margin-right:0;padding-right:8px}}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-date-range-selector .mdc-button--dropdown svg{margin-right:0}}.googlesitekit-plugin .googlesitekit-header .googlesitekit-date-range-selector .mdc-menu-surface{right:0}.googlesitekit-plugin .googlesitekit-header .googlesitekit-user-selector{margin-right:-4px}@media(max-width: 783px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-user-selector .mdc-button__label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}}@media(max-width: 783px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-user-selector .mdc-button__icon{margin-right:0}}.googlesitekit-plugin .googlesitekit-header .googlesitekit-user-selector button{padding:4px}.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__children{align-items:center;display:flex;grid-gap:16px;gap:16px;justify-content:flex-end}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__children{grid-gap:24px;gap:24px}}.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__children div>button>.mdc-button__label{display:none}@media(min-width: 784px){.googlesitekit-plugin .googlesitekit-header .googlesitekit-header__children div>button>.mdc-button__label{display:inline-block}}.googlesitekit-plugin .googlesitekit-help-menu-link{padding:0}.googlesitekit-plugin .googlesitekit-help-menu-link .googlesitekit-cta-link{align-items:center;color:#131418;display:flex;height:100%;padding:0 16px;width:100%}.googlesitekit-layout{background:#fff}.googlesitekit-layout--fill{display:flex;flex-direction:column;height:100%}.googlesitekit-layout--fill>*{flex:1 1 auto;width:100%}.googlesitekit-layout--relative{position:relative}.googlesitekit-layout .googlesitekit-layout__header{border-bottom:1px solid #ebeef0;font-size:16px;letter-spacing:.5px}.googlesitekit-layout--fill .googlesitekit-layout__header{flex:0 0 auto}.googlesitekit-layout .googlesitekit-layout__header-title{margin:0}.googlesitekit-layout .googlesitekit-layout__footer{border-top:1px solid #ebeef0;font-size:12px;letter-spacing:.2px}.googlesitekit-layout--fill .googlesitekit-layout__footer{flex:0 0 auto}.googlesitekit-layout.googlesitekit-layout--transparent{background-color:transparent}.googlesitekit-layout.googlesitekit-layout--rounded{border-radius:24px}.googlesitekit-logo{color:#5f6561;line-height:0}.googlesitekit-logo .googlesitekit-logo__logo-g,.googlesitekit-logo .googlesitekit-svg-logo-g{height:24px;vertical-align:middle;width:23px}@media(min-width: 600px){.googlesitekit-logo .googlesitekit-logo__logo-g,.googlesitekit-logo .googlesitekit-svg-logo-g{height:34px;width:32px}}.googlesitekit-logo .googlesitekit-logo__logo-sitekit,.googlesitekit-logo .googlesitekit-svg-logo-sitekit{fill:currentColor;height:16px;margin-left:8px;vertical-align:middle;width:61px}@media(min-width: 600px){.googlesitekit-logo .googlesitekit-logo__logo-sitekit,.googlesitekit-logo .googlesitekit-svg-logo-sitekit{height:26px;margin-left:16px;width:99px}}.googlesitekit-logo--mini .googlesitekit-logo__logo-g,.googlesitekit-logo--mini .googlesitekit-svg-logo-g{height:19px;width:19px}.googlesitekit-logo--mini .googlesitekit-logo__logo-sitekit,.googlesitekit-logo--mini .googlesitekit-svg-logo-sitekit{height:17px;margin-left:4px;width:78px}.googlesitekit-mini-chart{margin-left:16px;width:28px}.googlesitekit-module-outro{background-color:#fff;padding:45px 0;text-align:center}@media(min-width: 600px){.googlesitekit-module-outro{padding:45px}}.googlesitekit-module-outro .googlesitekit-module-outro__logo{align-items:center;display:inline-flex}.googlesitekit-module-outro .googlesitekit-module-outro__logo>svg{margin:0 8px}@media(min-width: 960px){.googlesitekit-module-outro .googlesitekit-module-outro__logo>svg{margin:0 12px}}.googlesitekit-module-outro .googlesitekit-module-outro__title{margin:20px auto 25px;max-width:600px}.googlesitekit-module-page{padding-bottom:10px;padding-top:10px}@media(min-width: 600px){.googlesitekit-module-page{padding-left:10px;padding-right:10px}}.googlesitekit-module-recovery-errors{color:#ac4220}.googlesitekit-module-recovery-errors ul{list-style:disc;list-style-position:inside}.googlesitekit-noscript{background-color:#fff;margin:5px 20px 5px 0}@media(min-width: 600px){.googlesitekit-noscript{padding-left:10px;padding-right:10px}}.googlesitekit-noscript__title{margin:0}.no-js:not([amp-version]) [id^=js-googlesitekit-]{display:none}.googlesitekit-opt-in{position:relative}.googlesitekit-opt-in--border{border-top:1px solid #b8bdb9;padding-top:16px}@media(min-width: 960px){.googlesitekit-opt-in--border{padding-top:24px}}.googlesitekit-opt-in .mdc-form-field{position:relative}.googlesitekit-opt-in .mdc-form-field label{font-size:12px;letter-spacing:.2px;line-height:1.33}.googlesitekit-opt-in--align-top .mdc-form-field{align-items:flex-start}.googlesitekit-opt-in--align-top .mdc-checkbox{margin-top:-7px}@media(min-width: 960px){.googlesitekit-opt-in span{display:block}}.googlesitekit-overlay{align-items:center;background:rgba(235,238,240,.8);bottom:0;cursor:not-allowed;display:flex;height:100%;justify-content:center;left:0;position:absolute;right:0;top:0;width:100%;z-index:10}.googlesitekit-overlay--compress .googlesitekit-overlay__wrapper{align-items:center;display:flex}.googlesitekit-overlay .googlesitekit-overlay__icon{align-items:center;background:#ebeef0;border-radius:50%;display:flex;height:60px;justify-content:center;margin:0 auto;width:60px}.googlesitekit-overlay .googlesitekit-overlay__icon svg{color:#333935}.googlesitekit-overlay--compress .googlesitekit-overlay__icon{height:40px;width:40px}.googlesitekit-overlay--compress .googlesitekit-overlay__icon .svg{height:20px;width:auto}.googlesitekit-overlay .googlesitekit-overlay__title{margin-bottom:0;padding:0 16px;text-align:center}.googlesitekit-overlay--compress .googlesitekit-overlay__title{font-size:16px;font-weight:700;line-height:1.25;margin-top:0;padding-right:0}.googlesitekit-page{margin-left:-10px}@media(min-width: 783px){.googlesitekit-page{margin-left:-20px}}#wpbody-content>div:not(#screen-meta)+.googlesitekit-plugin>.googlesitekit-page,#wpbody-content>div:not(#screen-meta)+script+.googlesitekit-plugin>.googlesitekit-page{margin-top:25px}.googlesitekit-pagespeed-widget header{display:flex;justify-content:space-between}.googlesitekit-pagespeed-widget__refreshing{filter:grayscale(1);opacity:.5}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__data-src-tabs{display:flex}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__refreshing-progress-bar-wrapper{margin-top:-4px}.googlesitekit-page-footer{display:flex;justify-content:flex-end;margin:0}.googlesitekit-page-header{margin:0}.googlesitekit-page-header .googlesitekit-page-header__title{display:inline-block;font-weight:500;line-height:1;margin:0 0 -2px;padding:0;vertical-align:middle}.googlesitekit-page-header .googlesitekit-page-header__icon+.googlesitekit-page-header__title{margin-left:8px}.googlesitekit-page-header .googlesitekit-page-header__icon{vertical-align:middle}.googlesitekit-page-header .googlesitekit-page-header__details{align-items:center;display:flex;justify-content:space-between}@media(min-width: 600px){.googlesitekit-page-header .googlesitekit-page-header__details{justify-content:flex-end}}.googlesitekit-page-header .googlesitekit-page-header__status{font-size:12px;letter-spacing:.2px;line-height:1;margin:0}.googlesitekit-page-header .googlesitekit-page-header__status--connected{color:#4d760b}.googlesitekit-page-header .googlesitekit-page-header__status::after{background-position:center center;background-repeat:no-repeat;border-radius:50%;content:"";display:inline-block;height:19px;margin-left:8px;margin-top:-2px;vertical-align:middle;width:19px}.googlesitekit-page-header .googlesitekit-page-header__status--connected::after{background-color:#4d760b;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2212%22%20viewBox%3D%220%200%2016%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M0%206.414L1.415%205l5.292%205.292-1.414%201.415z%22%2F%3E%3Cpath%20d%3D%22M14.146.146l1.415%201.414L5.414%2011.707%204%2010.292z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-size:10px 8px}.googlesitekit-page-header .googlesitekit-page-header__status--not-connected::after{background-color:#895a00;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%222%22%20height%3D%2212%22%20viewBox%3D%220%200%202%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M0%200h2v7H0zM0%2010h2v2H0z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-size:2px 12px}.googlesitekit-page-header .googlesitekit-page-header__status+.googlesitekit-page-header__range{margin-left:16px;margin-top:-3px}@media(min-width: 960px){.googlesitekit-page-header .googlesitekit-page-header__status+.googlesitekit-page-header__range{margin-left:24px}}.googlesitekit-percentage-circle{background-color:#ebeef0;border-radius:50%;font-size:28px;height:1em;margin:0 auto;position:relative;width:1em}.googlesitekit-percentage-circle--fast{color:#4d760b}.googlesitekit-percentage-circle--average{color:#895a00}.googlesitekit-percentage-circle--slow{color:#ac4220}.googlesitekit-percentage-circle::after{background-color:#fff;border-radius:50%;box-sizing:content-box;content:"";display:block;height:.8em;left:.1em;position:absolute;top:.1em;width:.8em}.googlesitekit-percentage-circle .googlesitekit-percentage-circle__text{box-sizing:content-box;font-size:20px;font-weight:700;left:0;line-height:50px;position:absolute;text-align:center;top:0;width:50px;z-index:1}.googlesitekit-percentage-circle .googlesitekit-percentage-circle__slice{box-sizing:content-box;clip:rect(0, 1em, 1em, 0.5em);height:1em;position:absolute;width:1em}.googlesitekit-percentage-circle .googlesitekit-percentage-circle__bar{border:.1em solid transparent;border-radius:50%;box-sizing:content-box;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(0deg);width:.8em}.googlesitekit-percentage-circle .googlesitekit-percentage-circle__fill{box-sizing:content-box}.googlesitekit-percentage-circle--percent-51 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-51 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-51 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-52 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-52 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-52 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-53 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-53 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-53 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-54 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-54 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-54 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-55 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-55 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-55 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-56 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-56 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-56 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-57 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-57 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-57 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-58 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-58 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-58 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-59 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-59 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-59 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-60 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-60 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-60 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-61 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-61 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-61 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-62 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-62 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-62 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-63 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-63 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-63 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-64 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-64 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-64 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-65 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-65 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-65 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-66 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-66 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-66 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-67 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-67 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-67 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-68 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-68 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-68 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-69 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-69 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-69 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-70 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-70 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-70 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-71 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-71 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-71 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-72 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-72 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-72 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-73 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-73 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-73 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-74 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-74 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-74 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-75 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-75 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-75 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-76 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-76 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-76 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-77 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-77 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-77 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-78 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-78 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-78 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-79 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-79 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-79 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-80 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-80 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-80 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-81 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-81 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-81 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-82 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-82 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-82 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-83 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-83 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-83 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-84 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-84 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-84 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-85 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-85 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-85 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-86 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-86 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-86 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-87 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-87 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-87 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-88 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-88 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-88 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-89 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-89 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-89 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-90 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-90 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-90 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-91 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-91 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-91 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-92 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-92 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-92 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-93 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-93 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-93 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-94 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-94 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-94 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-95 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-95 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-95 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-96 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-96 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-96 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-97 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-97 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-97 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-98 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-98 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-98 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-99 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-99 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-99 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-100 .googlesitekit-percentage-circle__slice{clip:rect(auto, auto, auto, auto)}.googlesitekit-percentage-circle--percent-100 .googlesitekit-percentage-circle__bar::after{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-100 .googlesitekit-percentage-circle__fill{border:.1em solid transparent;border-radius:50%;clip:rect(0, 0.5em, 1em, 0);height:.8em;position:absolute;transform:rotate(180deg);width:.8em}.googlesitekit-percentage-circle--percent-1 .googlesitekit-percentage-circle__bar{transform:rotate(3.6deg)}.googlesitekit-percentage-circle--percent-2 .googlesitekit-percentage-circle__bar{transform:rotate(7.2deg)}.googlesitekit-percentage-circle--percent-3 .googlesitekit-percentage-circle__bar{transform:rotate(10.8deg)}.googlesitekit-percentage-circle--percent-4 .googlesitekit-percentage-circle__bar{transform:rotate(14.4deg)}.googlesitekit-percentage-circle--percent-5 .googlesitekit-percentage-circle__bar{transform:rotate(18deg)}.googlesitekit-percentage-circle--percent-6 .googlesitekit-percentage-circle__bar{transform:rotate(21.6deg)}.googlesitekit-percentage-circle--percent-7 .googlesitekit-percentage-circle__bar{transform:rotate(25.2deg)}.googlesitekit-percentage-circle--percent-8 .googlesitekit-percentage-circle__bar{transform:rotate(28.8deg)}.googlesitekit-percentage-circle--percent-9 .googlesitekit-percentage-circle__bar{transform:rotate(32.4deg)}.googlesitekit-percentage-circle--percent-10 .googlesitekit-percentage-circle__bar{transform:rotate(36deg)}.googlesitekit-percentage-circle--percent-11 .googlesitekit-percentage-circle__bar{transform:rotate(39.6deg)}.googlesitekit-percentage-circle--percent-12 .googlesitekit-percentage-circle__bar{transform:rotate(43.2deg)}.googlesitekit-percentage-circle--percent-13 .googlesitekit-percentage-circle__bar{transform:rotate(46.8deg)}.googlesitekit-percentage-circle--percent-14 .googlesitekit-percentage-circle__bar{transform:rotate(50.4deg)}.googlesitekit-percentage-circle--percent-15 .googlesitekit-percentage-circle__bar{transform:rotate(54deg)}.googlesitekit-percentage-circle--percent-16 .googlesitekit-percentage-circle__bar{transform:rotate(57.6deg)}.googlesitekit-percentage-circle--percent-17 .googlesitekit-percentage-circle__bar{transform:rotate(61.2deg)}.googlesitekit-percentage-circle--percent-18 .googlesitekit-percentage-circle__bar{transform:rotate(64.8deg)}.googlesitekit-percentage-circle--percent-19 .googlesitekit-percentage-circle__bar{transform:rotate(68.4deg)}.googlesitekit-percentage-circle--percent-20 .googlesitekit-percentage-circle__bar{transform:rotate(72deg)}.googlesitekit-percentage-circle--percent-21 .googlesitekit-percentage-circle__bar{transform:rotate(75.6deg)}.googlesitekit-percentage-circle--percent-22 .googlesitekit-percentage-circle__bar{transform:rotate(79.2deg)}.googlesitekit-percentage-circle--percent-23 .googlesitekit-percentage-circle__bar{transform:rotate(82.8deg)}.googlesitekit-percentage-circle--percent-24 .googlesitekit-percentage-circle__bar{transform:rotate(86.4deg)}.googlesitekit-percentage-circle--percent-25 .googlesitekit-percentage-circle__bar{transform:rotate(90deg)}.googlesitekit-percentage-circle--percent-26 .googlesitekit-percentage-circle__bar{transform:rotate(93.6deg)}.googlesitekit-percentage-circle--percent-27 .googlesitekit-percentage-circle__bar{transform:rotate(97.2deg)}.googlesitekit-percentage-circle--percent-28 .googlesitekit-percentage-circle__bar{transform:rotate(100.8deg)}.googlesitekit-percentage-circle--percent-29 .googlesitekit-percentage-circle__bar{transform:rotate(104.4deg)}.googlesitekit-percentage-circle--percent-30 .googlesitekit-percentage-circle__bar{transform:rotate(108deg)}.googlesitekit-percentage-circle--percent-31 .googlesitekit-percentage-circle__bar{transform:rotate(111.6deg)}.googlesitekit-percentage-circle--percent-32 .googlesitekit-percentage-circle__bar{transform:rotate(115.2deg)}.googlesitekit-percentage-circle--percent-33 .googlesitekit-percentage-circle__bar{transform:rotate(118.8deg)}.googlesitekit-percentage-circle--percent-34 .googlesitekit-percentage-circle__bar{transform:rotate(122.4deg)}.googlesitekit-percentage-circle--percent-35 .googlesitekit-percentage-circle__bar{transform:rotate(126deg)}.googlesitekit-percentage-circle--percent-36 .googlesitekit-percentage-circle__bar{transform:rotate(129.6deg)}.googlesitekit-percentage-circle--percent-37 .googlesitekit-percentage-circle__bar{transform:rotate(133.2deg)}.googlesitekit-percentage-circle--percent-38 .googlesitekit-percentage-circle__bar{transform:rotate(136.8deg)}.googlesitekit-percentage-circle--percent-39 .googlesitekit-percentage-circle__bar{transform:rotate(140.4deg)}.googlesitekit-percentage-circle--percent-40 .googlesitekit-percentage-circle__bar{transform:rotate(144deg)}.googlesitekit-percentage-circle--percent-41 .googlesitekit-percentage-circle__bar{transform:rotate(147.6deg)}.googlesitekit-percentage-circle--percent-42 .googlesitekit-percentage-circle__bar{transform:rotate(151.2deg)}.googlesitekit-percentage-circle--percent-43 .googlesitekit-percentage-circle__bar{transform:rotate(154.8deg)}.googlesitekit-percentage-circle--percent-44 .googlesitekit-percentage-circle__bar{transform:rotate(158.4deg)}.googlesitekit-percentage-circle--percent-45 .googlesitekit-percentage-circle__bar{transform:rotate(162deg)}.googlesitekit-percentage-circle--percent-46 .googlesitekit-percentage-circle__bar{transform:rotate(165.6deg)}.googlesitekit-percentage-circle--percent-47 .googlesitekit-percentage-circle__bar{transform:rotate(169.2deg)}.googlesitekit-percentage-circle--percent-48 .googlesitekit-percentage-circle__bar{transform:rotate(172.8deg)}.googlesitekit-percentage-circle--percent-49 .googlesitekit-percentage-circle__bar{transform:rotate(176.4deg)}.googlesitekit-percentage-circle--percent-50 .googlesitekit-percentage-circle__bar{transform:rotate(180deg)}.googlesitekit-percentage-circle--percent-51 .googlesitekit-percentage-circle__bar{transform:rotate(183.6deg)}.googlesitekit-percentage-circle--percent-52 .googlesitekit-percentage-circle__bar{transform:rotate(187.2deg)}.googlesitekit-percentage-circle--percent-53 .googlesitekit-percentage-circle__bar{transform:rotate(190.8deg)}.googlesitekit-percentage-circle--percent-54 .googlesitekit-percentage-circle__bar{transform:rotate(194.4deg)}.googlesitekit-percentage-circle--percent-55 .googlesitekit-percentage-circle__bar{transform:rotate(198deg)}.googlesitekit-percentage-circle--percent-56 .googlesitekit-percentage-circle__bar{transform:rotate(201.6deg)}.googlesitekit-percentage-circle--percent-57 .googlesitekit-percentage-circle__bar{transform:rotate(205.2deg)}.googlesitekit-percentage-circle--percent-58 .googlesitekit-percentage-circle__bar{transform:rotate(208.8deg)}.googlesitekit-percentage-circle--percent-59 .googlesitekit-percentage-circle__bar{transform:rotate(212.4deg)}.googlesitekit-percentage-circle--percent-60 .googlesitekit-percentage-circle__bar{transform:rotate(216deg)}.googlesitekit-percentage-circle--percent-61 .googlesitekit-percentage-circle__bar{transform:rotate(219.6deg)}.googlesitekit-percentage-circle--percent-62 .googlesitekit-percentage-circle__bar{transform:rotate(223.2deg)}.googlesitekit-percentage-circle--percent-63 .googlesitekit-percentage-circle__bar{transform:rotate(226.8deg)}.googlesitekit-percentage-circle--percent-64 .googlesitekit-percentage-circle__bar{transform:rotate(230.4deg)}.googlesitekit-percentage-circle--percent-65 .googlesitekit-percentage-circle__bar{transform:rotate(234deg)}.googlesitekit-percentage-circle--percent-66 .googlesitekit-percentage-circle__bar{transform:rotate(237.6deg)}.googlesitekit-percentage-circle--percent-67 .googlesitekit-percentage-circle__bar{transform:rotate(241.2deg)}.googlesitekit-percentage-circle--percent-68 .googlesitekit-percentage-circle__bar{transform:rotate(244.8deg)}.googlesitekit-percentage-circle--percent-69 .googlesitekit-percentage-circle__bar{transform:rotate(248.4deg)}.googlesitekit-percentage-circle--percent-70 .googlesitekit-percentage-circle__bar{transform:rotate(252deg)}.googlesitekit-percentage-circle--percent-71 .googlesitekit-percentage-circle__bar{transform:rotate(255.6deg)}.googlesitekit-percentage-circle--percent-72 .googlesitekit-percentage-circle__bar{transform:rotate(259.2deg)}.googlesitekit-percentage-circle--percent-73 .googlesitekit-percentage-circle__bar{transform:rotate(262.8deg)}.googlesitekit-percentage-circle--percent-74 .googlesitekit-percentage-circle__bar{transform:rotate(266.4deg)}.googlesitekit-percentage-circle--percent-75 .googlesitekit-percentage-circle__bar{transform:rotate(270deg)}.googlesitekit-percentage-circle--percent-76 .googlesitekit-percentage-circle__bar{transform:rotate(273.6deg)}.googlesitekit-percentage-circle--percent-77 .googlesitekit-percentage-circle__bar{transform:rotate(277.2deg)}.googlesitekit-percentage-circle--percent-78 .googlesitekit-percentage-circle__bar{transform:rotate(280.8deg)}.googlesitekit-percentage-circle--percent-79 .googlesitekit-percentage-circle__bar{transform:rotate(284.4deg)}.googlesitekit-percentage-circle--percent-80 .googlesitekit-percentage-circle__bar{transform:rotate(288deg)}.googlesitekit-percentage-circle--percent-81 .googlesitekit-percentage-circle__bar{transform:rotate(291.6deg)}.googlesitekit-percentage-circle--percent-82 .googlesitekit-percentage-circle__bar{transform:rotate(295.2deg)}.googlesitekit-percentage-circle--percent-83 .googlesitekit-percentage-circle__bar{transform:rotate(298.8deg)}.googlesitekit-percentage-circle--percent-84 .googlesitekit-percentage-circle__bar{transform:rotate(302.4deg)}.googlesitekit-percentage-circle--percent-85 .googlesitekit-percentage-circle__bar{transform:rotate(306deg)}.googlesitekit-percentage-circle--percent-86 .googlesitekit-percentage-circle__bar{transform:rotate(309.6deg)}.googlesitekit-percentage-circle--percent-87 .googlesitekit-percentage-circle__bar{transform:rotate(313.2deg)}.googlesitekit-percentage-circle--percent-88 .googlesitekit-percentage-circle__bar{transform:rotate(316.8deg)}.googlesitekit-percentage-circle--percent-89 .googlesitekit-percentage-circle__bar{transform:rotate(320.4deg)}.googlesitekit-percentage-circle--percent-90 .googlesitekit-percentage-circle__bar{transform:rotate(324deg)}.googlesitekit-percentage-circle--percent-91 .googlesitekit-percentage-circle__bar{transform:rotate(327.6deg)}.googlesitekit-percentage-circle--percent-92 .googlesitekit-percentage-circle__bar{transform:rotate(331.2deg)}.googlesitekit-percentage-circle--percent-93 .googlesitekit-percentage-circle__bar{transform:rotate(334.8deg)}.googlesitekit-percentage-circle--percent-94 .googlesitekit-percentage-circle__bar{transform:rotate(338.4deg)}.googlesitekit-percentage-circle--percent-95 .googlesitekit-percentage-circle__bar{transform:rotate(342deg)}.googlesitekit-percentage-circle--percent-96 .googlesitekit-percentage-circle__bar{transform:rotate(345.6deg)}.googlesitekit-percentage-circle--percent-97 .googlesitekit-percentage-circle__bar{transform:rotate(349.2deg)}.googlesitekit-percentage-circle--percent-98 .googlesitekit-percentage-circle__bar{transform:rotate(352.8deg)}.googlesitekit-percentage-circle--percent-99 .googlesitekit-percentage-circle__bar{transform:rotate(356.4deg)}.googlesitekit-percentage-circle--percent-100 .googlesitekit-percentage-circle__bar{transform:rotate(360deg)}.googlesitekit-percentage-circle--fast .googlesitekit-percentage-circle__bar,.googlesitekit-percentage-circle--fast .googlesitekit-percentage-circle__fill{border-color:#4d760b}.googlesitekit-percentage-circle--average .googlesitekit-percentage-circle__bar,.googlesitekit-percentage-circle--average .googlesitekit-percentage-circle__fill{border-color:#895a00}.googlesitekit-percentage-circle--slow .googlesitekit-percentage-circle__bar,.googlesitekit-percentage-circle--slow .googlesitekit-percentage-circle__fill{border-color:#ac4220}.googlesitekit-post-searcher{display:flex;flex-wrap:wrap;position:relative;width:100%}.googlesitekit-post-searcher .googlesitekit-post-searcher__label{background-color:#fff;color:#5f6561;font-size:12px;left:12px;letter-spacing:.2px;padding:0 4px;position:absolute;top:-8px;z-index:4}.googlesitekit-post-searcher .googlesitekit-post-searcher__button-wrapper{flex:0 0 auto}.googlesitekit-post-searcher .googlesitekit-post-searcher__button-wrapper .googlesitekit-post-searcher__button{min-height:100%}.googlesitekit-preview-block{display:flex;flex-direction:column}.googlesitekit-preview-block--padding{padding:16px}.googlesitekit-preview-block--padding+.googlesitekit-preview-block--padding{padding-top:0}@media(min-width: 960px){.googlesitekit-preview-block--padding{padding:24px}}.googlesitekit-preview-block__wrapper{animation:googlesitekit-pulse 1s infinite ease-in-out;animation-direction:alternate;flex:1 1 auto}@media(prefers-reduced-motion: reduce){.googlesitekit-preview-block__wrapper{animation:none;background-image:linear-gradient(150deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.15))}}.googlesitekit-preview-block__wrapper--circle{border-radius:50%}@keyframes googlesitekit-pulse{0%{background-color:#ebeef0}100%{background-color:#cbd0d3}}.googlesitekit-preview-table{width:100%}.googlesitekit-preview-table--padding{padding:16px}.googlesitekit-preview-table--padding+.googlesitekit-preview-table--padding{padding-top:0}@media(min-width: 960px){.googlesitekit-preview-table--padding{padding:24px}}.googlesitekit-preview-table .googlesitekit-preview-table__row{margin:0 0 9px}.googlesitekit-preview-table .googlesitekit-preview-table__row:last-child{margin-bottom:0}.googlesitekit-publisher-win{background:#fff;display:flex;flex-direction:column;opacity:1;position:relative;transition:opacity .2s ease-in-out,visibility .2s ease-in-out;visibility:visible}@media(min-width: 600px){.googlesitekit-publisher-win{padding-left:10px;padding-right:10px}}@media(min-width: 600px){.googlesitekit-publisher-win{flex-direction:row}.googlesitekit-publisher-win .googlesitekit-publisher-win__secondary-pane-divider{border-left:1px solid #edf0f4;height:106px;margin:auto 30px}}.googlesitekit-publisher-win .mdc-layout-grid{flex:1 1 0}.googlesitekit-publisher-win+.googlesitekit-publisher-win{display:none}.googlesitekit-publisher-win--win-warning{border-right:4px solid #895a00}.googlesitekit-publisher-win--win-warning .googlesitekit-publisher-win__icons{color:#895a00}.googlesitekit-publisher-win--win-error{border-right:4px solid #ac4220}.googlesitekit-publisher-win--win-error .googlesitekit-publisher-win__icons{color:#cc6240}.googlesitekit-publisher-win--is-closed{opacity:0;visibility:hidden}.googlesitekit-publisher-win .googlesitekit-publisher-win__image-smaller svg{max-height:105px;width:100%}.googlesitekit-publisher-win .googlesitekit-publisher-win__title{flex:1;margin:0}.googlesitekit-publisher-win .googlesitekit-publisher-win__title .googlesitekit-badge{margin-left:8px}.googlesitekit-publisher-win .googlesitekit-publisher-win__title .googlesitekit-publisher-win__image-smaller{flex-basis:75px}.googlesitekit-publisher-win .googlesitekit-publisher-win__desc{max-width:700px}.googlesitekit-publisher-win .googlesitekit-publisher-win__desc:first-child>*:first-child{margin-top:0}.googlesitekit-publisher-win .googlesitekit-cta-link--external{margin-right:7px}.googlesitekit-publisher-win .googlesitekit-publisher-win__small-image{max-width:100%}.googlesitekit-publisher-win .googlesitekit-publisher-win__icons{position:absolute;right:8px;top:50%;transform:translateY(-50%)}@media(min-width: 960px){.googlesitekit-publisher-win .googlesitekit-publisher-win__icons{right:calc(24px * 2)}}.googlesitekit-publisher-win .googlesitekit-publisher-win__image-large{margin-bottom:24px;text-align:center}@media(min-width: 600px){.googlesitekit-publisher-win .googlesitekit-publisher-win__image-large{text-align:left}}@media(min-width: 960px){.googlesitekit-publisher-win .googlesitekit-publisher-win__image-large{text-align:center}}.googlesitekit-publisher-win .googlesitekit-publisher-win__image-large img{display:inline-block;max-width:100%}@media(max-width: 599px),(min-width: 960px){.googlesitekit-publisher-win .googlesitekit-publisher-win__image-large svg{width:200px}}.googlesitekit-publisher-win .googlesitekit-publisher-win__detect{font-size:12px;letter-spacing:.2px}@media(min-width: 960px){.googlesitekit-publisher-win .googlesitekit-publisher-win__detect{margin-left:48px}}.googlesitekit-publisher-win .googlesitekit-publisher-win__link a{font-size:16px;letter-spacing:.5px}.googlesitekit-publisher-win .googlesitekit-publisher-win__stats{margin-bottom:24px}.googlesitekit-publisher-win.win-stats-increase .googlesitekit-publisher-win__stats{margin-bottom:0}.googlesitekit-publisher-win.win-stats-increase .googlesitekit-subheading-1{margin-top:0}.googlesitekit-publisher-win .spinner+.googlesitekit-cta-link{margin-left:24px}.googlesitekit-publisher-win .googlesitekit-publisher-win__logo{display:inline-block;line-height:0;margin-right:5px;vertical-align:bottom}.googlesitekit-publisher-win .googlesitekit-publisher-win__module-name{display:inline-block;font-size:12px;letter-spacing:.2px;line-height:1;margin-bottom:-1px;vertical-align:bottom}.googlesitekit-publisher-win .googlesitekit-publisher-win__small-media svg{max-height:85px;max-width:85px}.googlesitekit-publisher-win .googlesitekit-publisher-win__title-image-wrapper{display:flex;flex-wrap:nowrap;grid-gap:16px;gap:16px}.googlesitekit-publisher-win .googlesitekit-publisher-win__title-image-wrapper+.googlesitekit-cta-link,.googlesitekit-publisher-win .googlesitekit-publisher-win__title-image-wrapper+.googlesitekit-publisher-win__actions{margin-top:16px}@media(min-width: 960px){.googlesitekit-publisher-win .googlesitekit-publisher-win__title-image-wrapper+.googlesitekit-cta-link,.googlesitekit-publisher-win .googlesitekit-publisher-win__title-image-wrapper+.googlesitekit-publisher-win__actions{margin-top:24px}}.googlesitekit-publisher-win.googlesitekit-publisher-win--no-bottom-padding .googlesitekit-publisher-win__content{padding-bottom:16px}@media(min-width: 960px){.googlesitekit-publisher-win.googlesitekit-publisher-win--no-bottom-padding .googlesitekit-publisher-win__content{padding-bottom:24px}}.googlesitekit-publisher-win .googlesitekit-publisher-win__image-larger svg{display:block}.googlesitekit-publisher-win.googlesitekit-publisher-win--rounded{border-radius:24px}.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button{background-color:transparent;box-shadow:none;color:#5f6561}.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button:focus,.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button:hover{background-color:#f8fafb;color:rgba(0,0,0,.87)}.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button:focus::before,.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button:focus::after,.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button:hover::before,.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button:hover::after{background-color:rgba(0,0,0,.87)}.googlesitekit-plugin .googlesitekit-sharing-settings__button.mdc-button:hover::before{opacity:.04}.googlesitekit-plugin .googlesitekit-sharing-settings-dialog .googlesitekit-dialog__content{padding-bottom:0}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-sharing-settings-dialog .googlesitekit-dialog__footer{border-color:transparent;box-shadow:none;padding:0}}.googlesitekit-plugin .googlesitekit-user-role-select{align-items:center;grid-column-gap:12px;column-gap:12px;display:flex;flex-wrap:wrap;position:relative;grid-row-gap:4px;row-gap:4px}.googlesitekit-plugin .googlesitekit-user-role-select__button{border:1px solid #3c7251;border-radius:50%;box-shadow:none;color:#3c7251;display:flex;height:48px;min-height:auto;min-width:auto;padding:0;width:48px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-role-select__button{height:28px;width:28px}}.googlesitekit-plugin .googlesitekit-user-role-select__button:not(:disabled){background-color:#fff;color:#3c7251}.googlesitekit-plugin .googlesitekit-user-role-select__button svg{fill:#3c7251}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-role-select__button svg{height:14px;width:14px}}.googlesitekit-plugin .googlesitekit-user-role-select--open{align-items:flex-start;grid-row-gap:8px;row-gap:8px}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings{color:#131418;font-size:14px;line-height:1.14}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__header{align-items:flex-start;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--product{flex:0 0 50%}@media(max-width: 960px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--product svg{height:28px;width:28px}}.googlesitekit-plugin .googlesitekit-user-role-select__current-roles{color:#333935;display:block;font-size:14px;line-height:1.14}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-role-select__current-roles{flex:1}}.googlesitekit-plugin .googlesitekit-user-role-select__add-roles{display:block}.googlesitekit-plugin .googlesitekit-user-role-select__add-roles button{color:#999f9b;font-size:14px;font-weight:400;line-height:1.14}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--view{flex:1 1 30%;position:relative}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--view{align-items:center;display:flex;flex:1 1 45%}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__row{display:flex;flex-wrap:nowrap;grid-gap:16px;gap:16px;position:relative}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__row--disabled::after{background-color:rgba(255,255,255,.6);content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__row--editing{flex-direction:column}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__row--editing{align-items:flex-start;flex-direction:row}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__row--editing .googlesitekit-dashboard-sharing-settings__column--product{min-height:48px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__row--editing .googlesitekit-dashboard-sharing-settings__column--product{min-height:28px}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__module{border-bottom:1px solid #ebeef0;padding:16px 0}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__module:last-child{border-bottom:0}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__module .googlesitekit-dashboard-sharing-settings__column--product{align-items:center;display:flex;flex-flow:row nowrap;grid-gap:12px;gap:12px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__module .googlesitekit-dashboard-sharing-settings__column--product{align-items:center;flex-flow:row nowrap;grid-gap:16px;gap:16px}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__module-name{flex:1}.googlesitekit-plugin p.googlesitekit-dashboard-sharing-settings__note{color:#757575;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__select{height:48px;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__select{height:30px}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__select .mdc-select__selected-text{min-width:100px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__select .mdc-select__selected-text{min-width:140px}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__select .mdc-select__native-control{-webkit-appearance:none;appearance:none;background:none;font-size:14px;height:48px !important;padding-bottom:0;padding-top:0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__select .mdc-select__native-control{height:30px !important;min-height:30px}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__select .mdc-select__dropdown-icon{bottom:auto;top:50%;transform:translateY(-50%)}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--manage{flex:1 1 45%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--manage{align-items:center;display:flex;flex:0 0 30%}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--manage .googlesitekit-dashboard-sharing-settings__note{align-items:flex-end;display:flex;flex-wrap:wrap;font-size:12px;letter-spacing:.2px;line-height:1.33}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--manage .googlesitekit-dashboard-sharing-settings__note span:not(.googlesitekit-dashboard-sharing-settings__tooltip-icon){width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--manage .googlesitekit-dashboard-sharing-settings__note span:not(.googlesitekit-dashboard-sharing-settings__tooltip-icon){margin-right:4px;width:auto}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--manage .googlesitekit-dashboard-sharing-settings__note svg{fill:#757575}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__column--manage .googlesitekit-dashboard-sharing-settings__tooltip-icon{display:block;height:18px;line-height:1;margin:0 0 0 4px}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__footer{display:flex;flex-basis:100%;flex-direction:column;grid-gap:24px;gap:24px;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__footer{align-items:center;display:flex;flex-direction:row;grid-gap:32px;gap:32px;justify-content:flex-end;width:auto}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__footer-notice{margin:-0.625rem 0}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__footer-notice{padding:16px 16px 0}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__footer-actions{align-items:center;display:flex;flex:1;flex-direction:row;grid-gap:32px;gap:32px;justify-content:flex-end}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__footer-actions{box-shadow:0 -1px 4px 2px rgba(60,64,67,.15);padding:16px}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings__footer-actions-right{align-items:center;display:flex;flex:1;flex-direction:row;grid-gap:32px;gap:32px;grid-gap:32px;justify-content:flex-end}.googlesitekit-plugin p.googlesitekit-dashboard-sharing-settings__notice{background-color:#cbd0d3;border-radius:8px;color:#131418;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0;padding:12px 24px;width:100%}@media(min-width: 600px){.googlesitekit-plugin p.googlesitekit-dashboard-sharing-settings__notice{padding:8px}}.googlesitekit-plugin p.googlesitekit-dashboard-sharing-settings__notice:empty{display:none}.googlesitekit-plugin .googlesitekit-user-role-select__chipset{display:flex;flex-wrap:wrap;grid-gap:8px;gap:8px;padding:0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-role-select__chipset{flex:1;grid-gap:10px;gap:10px}}.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings--has-multiple-admins .googlesitekit-dashboard-sharing-settings__column--product{align-items:flex-start;flex-basis:25%;flex-direction:column;max-width:25%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-dashboard-sharing-settings--has-multiple-admins .googlesitekit-dashboard-sharing-settings__column--product{align-items:center;flex-direction:row;max-width:none}}.googlesitekit-source-link{color:#5f6561;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1}.googlesitekit-plugin .googlesitekit-tab-bar__settings{margin:0 -16px;width:calc(100% + (16px * 2))}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-tab-bar__settings{margin:0;width:100%}}.googlesitekit-plugin .googlesitekit-tab-bar__settings .mdc-tab-scroller__scroll-content{grid-gap:1px;gap:1px}.googlesitekit-plugin .googlesitekit-tab-bar__settings .mdc-tab{background-color:#fff;color:#131418;font-size:14px;font-weight:500;letter-spacing:.25px;line-height:1}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-tab-bar__settings .mdc-tab:first-child{border-radius:16px 0 0 16px;overflow:hidden}}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-tab-bar__settings .mdc-tab:last-child{border-radius:0 16px 16px 0;overflow:hidden}}.googlesitekit-plugin .googlesitekit-tab-bar__settings .mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .googlesitekit-tab-bar__settings .mdc-ripple-upgraded--background-focused::after{background-color:#fff}.googlesitekit-plugin .googlesitekit-tab-bar__settings .mdc-tab__text-label{color:#131418;opacity:1}.googlesitekit-table{counter-reset:table;font-size:14px;letter-spacing:.25px;padding:16px;position:relative}@media(min-width: 960px){.googlesitekit-table{padding:24px}}.googlesitekit-alltraffic-widget .googlesitekit-table,.googlesitekit-wp-dashboard .googlesitekit-table{padding:0}.googlesitekit-table .googlesitekit-table__wrapper{border-collapse:collapse;table-layout:fixed;width:100%}@media(max-width: 599px){.googlesitekit-table .googlesitekit-table__wrapper.googlesitekit-table__wrapper--mobile-2-col .googlesitekit-table__head-item--primary{width:75%}}.googlesitekit-table .googlesitekit-table__head-row{border-bottom:1px solid #ebeef0}.googlesitekit-table .googlesitekit-table__head-item{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:700;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;line-height:1.25;outline:0;padding:0 4px 8px 4px;position:relative;text-align:right;text-decoration:none;white-space:normal}@media(min-width: 600px){.googlesitekit-table .googlesitekit-table__head-item{padding:0 8px 8px 8px}}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__head-item{padding:0 12px 12px 12px}}.googlesitekit-table .googlesitekit-table__head-item:first-child{padding-left:0;text-align:left}.googlesitekit-table .googlesitekit-table__head-item:last-child{padding-right:0}.googlesitekit-table .googlesitekit-table__head-item--primary{width:50%}.googlesitekit-widget--with-header .googlesitekit-table .googlesitekit-table__head-item{font-size:14px;line-height:1.14}.googlesitekit-table-overflow .googlesitekit-table .googlesitekit-table__head-item:last-child{padding-right:0}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__head-item[data-tooltip]::before{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;content:attr(data-tooltip);display:none;font-size:12px;letter-spacing:.2px;max-width:250px;opacity:0;padding:calc(16px / 2) 24px;pointer-events:none;position:absolute;right:0;text-align:center;top:100%;transition:opacity .2s ease-in-out,visibility .2s ease-in-out;visibility:hidden}}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__head-item:first-child[data-tooltip]::before{left:0}}.googlesitekit-table .googlesitekit-table__wrapper--2-col .googlesitekit-table__head-item--primary{width:75%}.googlesitekit-table .googlesitekit-table__body{color:#131418;font-weight:400}.googlesitekit-table .googlesitekit-table__body-row{border-bottom:1px solid #ebeef0}.googlesitekit-table .googlesitekit-table__body-row--no-data td{white-space:normal}.googlesitekit-table .googlesitekit-table__body-item{padding:8px 4px;text-align:right}@media(min-width: 600px){.googlesitekit-table .googlesitekit-table__body-item{padding:8px}}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__body-item{padding:12px}}.googlesitekit-table .googlesitekit-table__body-item:first-child{padding-left:0;text-align:left}.googlesitekit-table .googlesitekit-table__body-item:last-child{padding-right:0}.googlesitekit-table .googlesitekit-table__body-item .googlesitekit-mini-chart{display:none}@media(min-width: 600px){.googlesitekit-table .googlesitekit-table__body-item .googlesitekit-mini-chart{display:block}}.googlesitekit-table-overflow .googlesitekit-table .googlesitekit-table__body-item:last-child{padding-right:0}.googlesitekit-table--with-list .googlesitekit-table__body-row{transition:background-color .2s ease-in-out}.googlesitekit-table--with-list .googlesitekit-table__body-row:last-child{border-bottom:0}.googlesitekit-table--with-list .googlesitekit-table__body-row:hover{background-color:rgba(51,57,53,.05)}.googlesitekit-table--with-list .googlesitekit-table__body-row--no-data:hover{background-color:transparent}.googlesitekit-table--with-list .googlesitekit-table__body-item:first-child .googlesitekit-table__body-item-content{margin-left:24px;position:relative}.googlesitekit-table--with-list .googlesitekit-table__body-item:first-child .googlesitekit-table__body-item-content::before{content:counter(table) ".";counter-increment:table;left:-24px;position:absolute}@media(max-width: 600px){.googlesitekit-table .googlesitekit-table__body-item-content .googlesitekit-cta-link{display:block;overflow:hidden;text-overflow:ellipsis}}.googlesitekit-wp-dashboard .googlesitekit-table .googlesitekit-table__body-item-link{background-image:none}.googlesitekit-table .googlesitekit-table__body-item-url{background-image:none;display:block;font-size:12px;letter-spacing:.2px;word-break:break-word}.googlesitekit-table .googlesitekit-table__body-item-chart-wrap{align-items:center;display:flex;justify-content:flex-end}.googlesitekit-table .googlesitekit-table__source{margin-top:16px}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__source{margin-top:24px}}.googlesitekit-table--gathering-data{padding-bottom:0}.googlesitekit-table-overflow{position:relative}@media(max-width: 600px){.googlesitekit-table-overflow::after{background:linear-gradient(to right, rgba(255, 255, 255, 0) 0%, white 85%, white 100%);bottom:0;content:"";display:block;pointer-events:none;position:absolute;right:0;top:0;transition:all .2s ease-in-out;width:0}}@media(max-width: 600px){.googlesitekit-table-overflow--gradient::after{width:15%}}.googlesitekit-table-overflow .googlesitekit-table-overflow__container{overflow-x:auto;white-space:nowrap}@media(min-width: 600px){.googlesitekit-table-overflow .googlesitekit-table-overflow__container{overflow-x:visible;white-space:normal}}.googlesitekit-plugin .googlesitekit-text-field-icon--warning::before,.googlesitekit-plugin .googlesitekit-text-field-icon--error::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2222%22%20height%3D%2219%22%20viewBox%3D%220%200%2022%2019%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M0%2019h22L11%200%200%2019zm12-3h-2v-2h2v2zm0-4h-2V8h2v4z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E");background-position:center 4px;background-repeat:no-repeat;background-size:14px 12px;border-radius:50%;content:"";display:inline-block;height:22px;vertical-align:middle;width:22px}.googlesitekit-plugin .googlesitekit-text-field-icon--warning::before{background-color:#895a00}.googlesitekit-plugin .googlesitekit-text-field-icon--error::before{background-color:#ac4220}.googlesitekit-tooltip-popper.MuiTooltip-popper{z-index:99999}.googlesitekit-tooltip.MuiTooltip-tooltip{background-color:#161b18;border-radius:32px;color:#ebeef0;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;padding:14.5px 19px}.googlesitekit-tooltip .MuiTooltip-arrow{color:#161b18}.googlesitekit-plugin .googlesitekit-analytics-usesnippet p,.googlesitekit-plugin .googlesitekit-tagmanager-usesnippet p{font-size:12px;letter-spacing:.2px;margin:0 0 0 2.625rem}.googlesitekit-plugin .googlesitekit-analytics-usesnippet p:first-of-type,.googlesitekit-plugin .googlesitekit-tagmanager-usesnippet p:first-of-type{margin-top:.375rem}.googlesitekit-plugin .googlesitekit-view-only-menu h4{font-size:16px;letter-spacing:.5px;margin:15px 0}.googlesitekit-plugin .googlesitekit-view-only-menu p{color:#131418;font-size:14px;letter-spacing:.25px}.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-button--dropdown .mdc-button__icon{margin-right:0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-button--dropdown .mdc-button__icon{height:16px;margin-right:8px;width:16px}}.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-button--dropdown .mdc-button__icon--image{height:inherit;width:inherit}.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-menu{width:320px}.googlesitekit-plugin .googlesitekit-view-only-menu .mdc-list-divider{margin:8px 32px 4px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item{display:block;height:auto;padding:0 32px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__list-item:last-child{margin-bottom:5px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__description p{margin-bottom:8px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__description .mdc-button{margin:6px 0 9px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__service{display:flex;grid-gap:8px;gap:8px;margin-bottom:10px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__service svg{padding:2px;width:24px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__service--icon{flex:0 0 24px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__service--name{font-size:14px;letter-spacing:.25px}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-view-only-menu__service--owner{color:#131418;flex:1;font-size:12px;letter-spacing:.2px;margin-left:auto;overflow:hidden;text-overflow:ellipsis}.googlesitekit-plugin .googlesitekit-view-only-menu .googlesitekit-opt-in{margin-left:-11px}.googlesitekit-plugin .googlesitekit-view-only-menu--user-can-authenticate .googlesitekit-view-only-menu__service--name{flex:0 0 100px;margin-right:8px}.googlesitekit-plugin .googlesitekit-image-radio-options{display:flex;flex-wrap:wrap;grid-gap:24px;gap:24px}.googlesitekit-plugin .googlesitekit-image-radio{display:flex;flex-direction:column;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-image-radio{max-width:16.5rem}}.googlesitekit-plugin .googlesitekit-image-radio>label{color:#5f6561;font-size:.75rem;margin-top:.625rem;padding:0}.googlesitekit-plugin .googlesitekit-image-radio>label span{color:#161b18;display:block;font-size:.875rem;margin-bottom:.125rem}.googlesitekit-plugin .googlesitekit-image-radio .image-radio{--mdc-ripple-fg-size: 0 !important;height:unset;padding:0;width:100%}.googlesitekit-plugin .googlesitekit-image-radio .image-radio .mdc-image-radio__background .mdc-image-radio__content{align-items:center;background-color:#fff;border:.375rem solid #fff;border-radius:.5625rem;color:#161b18;display:flex;justify-content:center;min-height:12.1875rem}.googlesitekit-plugin .googlesitekit-image-radio .image-radio .mdc-image-radio__background .mdc-image-radio__content svg{-o-object-fit:contain;object-fit:contain;width:100%}.googlesitekit-plugin .googlesitekit-image-radio .image-radio .mdc-image-radio__background::after{border:.0625rem solid #999f9b;border-radius:.5625rem;content:"";height:100%;left:0;position:absolute;top:0;width:100%}.googlesitekit-plugin .googlesitekit-image-radio .image-radio .mdc-image-radio__background--checked::after{border:.1875rem solid #3c7251}.googlesitekit-plugin .googlesitekit-image-radio .image-radio .mdc-image-radio__background .mdc-image-radio__content--no-image{background-color:#ebeef0;min-height:5.0625rem;text-align:center}.googlesitekit-plugin .googlesitekit-image-radio .image-radio:hover .mdc-image-radio__content{position:relative}.googlesitekit-plugin .googlesitekit-image-radio .image-radio:hover .mdc-image-radio__content::after{background-color:#cbd0d3;border-radius:.5625rem;content:"";height:calc(100% + 0.75rem);left:50%;opacity:.3;position:absolute;top:50%;transform:translate(-50%, -50%);width:calc(100% + 0.75rem)}.googlesitekit-plugin .googlesitekit-image-radio .image-radio:hover .mdc-image-radio__content--no-image{background-color:#cbd0d3}.googlesitekit-plugin .googlesitekit-image-radio .image-radio:hover .mdc-image-radio__content--no-image::after{content:unset}.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--background-focused .mdc-image-radio__content,.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--foreground-activation .mdc-image-radio__content{position:relative}.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--background-focused .mdc-image-radio__content::after,.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--foreground-activation .mdc-image-radio__content::after{background-color:rgba(0,34,13,.32);border-radius:.5625rem;content:"";height:100%;opacity:1;position:absolute;width:100%}.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--background-focused .mdc-image-radio__content--no-image,.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--foreground-activation .mdc-image-radio__content--no-image{background-color:rgba(0,34,13,.32)}.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--background-focused .mdc-image-radio__content--no-image::after,.googlesitekit-plugin .googlesitekit-image-radio .image-radio.mdc-ripple-upgraded--foreground-activation .mdc-image-radio__content--no-image::after{content:unset}.googlesitekit-signin-box{background-color:#fff;border-color:#b8bdb9;display:block;margin:20px auto;padding:20px;text-align:center}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__chart-zero-data{align-items:center;display:flex;justify-content:center;min-height:368px}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__chart-zero-data>svg{color:#cbd0d3;height:300px;width:300px}.googlesitekit-plugin .googlesitekit-adsense-site-stats .google-visualization-tooltip,.googlesitekit-plugin .googlesitekit-analytics-site-stats .google-visualization-tooltip,.googlesitekit-plugin .googlesitekit-search-console-site-stats .google-visualization-tooltip,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .google-visualization-tooltip{border-color:#999f9b;border-radius:8px;box-shadow:none;height:auto !important;width:auto !important;z-index:8}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip{padding:0 1em}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip--up em,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip--up em,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip--up em,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip--up em{color:#4d760b}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip--down em,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip--down em,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip--down em,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip--down em{color:#ac4220}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip em,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip em,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip em,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip em{font-style:normal;font-weight:700}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip strong,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip strong,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip strong,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip strong{color:#000;margin:0 .25em 0 1em}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip p,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip p,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip p,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip p{font-size:14px;letter-spacing:.25px}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip svg,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip svg,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip svg,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip svg{margin-right:.25em}.googlesitekit-plugin .googlesitekit-adsense-site-stats .googlesitekit-visualization-tooltip-others em,.googlesitekit-plugin .googlesitekit-analytics-site-stats .googlesitekit-visualization-tooltip-others em,.googlesitekit-plugin .googlesitekit-search-console-site-stats .googlesitekit-visualization-tooltip-others em,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-visualization-tooltip-others em{display:none}.googlesitekit-dashboard-module-header{margin:0 0 -5px}@media(min-width: 960px){.googlesitekit-dashboard-module-header{margin-bottom:-10px}}.googlesitekit-dashboard-module-header .googlesitekit-dashboard-module-header__title{color:#5f6561;margin:0}.googlesitekit-dashboard-module-header .googlesitekit-dashboard-module-header__description{font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0}.googlesitekit-dashboard-module-header .googlesitekit-dashboard-module-header__time{font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0}.googlesitekit-entity-dashboard .googlesitekit-entity-dashboard__heading{margin:10px 0 0}@media(min-width: 961px){.googlesitekit-entity-dashboard .googlesitekit-entity-dashboard__entity-header{margin-top:24px;margin-top:var(--mdc-layout-grid-gutter-desktop, 24px)}}@media(min-width: 601px)and (max-width: 960px){.googlesitekit-entity-dashboard .googlesitekit-entity-dashboard__entity-header{margin-top:16px;margin-top:var(--mdc-layout-grid-gutter-tablet, 16px)}}@media(max-width: 600px){.googlesitekit-entity-dashboard .googlesitekit-entity-dashboard__entity-header{margin-top:16px;margin-top:var(--mdc-layout-grid-gutter-phone, 16px)}}.googlesitekit-entity-dashboard .googlesitekit-entity-dashboard__title{margin:0 0 10px}.googlesitekit-pagespeed-widget .googlesitekit-cta-link{font-size:14px;font-weight:500;letter-spacing:.25px;line-height:1.43;white-space:nowrap}.googlesitekit-pagespeed-widget .googlesitekit-table{border-spacing:0;padding:0;width:100%}.googlesitekit-pagespeed-widget .googlesitekit-table thead{display:none}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__content-wrapper{position:relative}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__content-wrapper--loading .googlesitekit-pagespeed-widget__content{visibility:hidden}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__progress-bar{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:100%}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__header{align-items:flex-end;border-bottom:1px solid #ebeef0;border-radius:16px 16px 0 0;display:flex;justify-content:space-between}@media(max-width: 599px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__header{align-items:center;flex-direction:column-reverse;justify-content:flex-end}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__data-src-tabs button.mdc-tab{margin:0 10px;text-transform:none}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__data-src-tabs button.mdc-tab .mdc-tab-indicator__content--underline{border-top-left-radius:3px;border-top-right-radius:3px;height:3px}@media(max-width: 449px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__data-src-tabs button.mdc-tab{margin:0 6px;padding:0 6px}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-widget__device-size-tab-bar-wrapper{padding:12px;width:auto}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-insights-web-vitals-metrics--field-data-unavailable{align-items:center;display:flex;height:auto;justify-content:center;padding:16px}@media(min-width: 600px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-insights-web-vitals-metrics--field-data-unavailable{min-height:285px;padding:24px}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-insights-web-vitals-metrics__field-data-unavailable-content{display:flex;flex-direction:column;justify-content:flex-start;max-width:600px;width:75%}@media(max-width: 599px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-insights-web-vitals-metrics__field-data-unavailable-content{width:100%}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-insights-web-vitals-metrics__field-data-unavailable-content h3{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:20px;line-height:1.2;margin:0 0 .25rem}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-insights-web-vitals-metrics__field-data-unavailable-content p{font-size:14px;letter-spacing:.25px;line-height:1.43;margin:.25rem 0}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-insights-web-vitals-metrics__field-data-unavailable-content a{margin:0}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer{border-top:1px solid #ebeef0;grid-gap:16px;gap:16px;justify-content:flex-end;padding-top:0}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer p,.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer .googlesitekit-cta-link{font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33;text-align:right}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer button.googlesitekit-cta-link{color:#5f6561;font-size:14px;font-weight:500;line-height:1.43}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer--with-action{justify-content:space-between}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row,.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer{align-items:center;display:flex;padding:18px 16px}@media(min-width: 600px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row,.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer{padding:18px 24px}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row p,.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__footer p{color:#5f6561;letter-spacing:.25px}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row{justify-content:space-between}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row .googlesitekit-error-text p{color:#ac4220}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row--first{padding:12px 16px 8px 16px}@media(min-width: 600px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row--first{padding:18px 24px 12px 24px}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row--single-item{flex-direction:row-reverse}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row--last{padding:8px 16px 12px 16px}@media(min-width: 600px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row--last{padding:12px 24px 18px 24px}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed-report__row--hidden{visibility:hidden}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations{box-shadow:inset 0 1px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;padding:16px 16px 0}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-pagespeed-recommendations__title{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:700;letter-spacing:.1px;line-height:1.25}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-accordion{border-top-left-radius:16px;border-top-right-radius:16px;color:#000}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-accordion+.googlesitekit-accordion{border-radius:0}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-accordion:last-of-type{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-pagespeed-recommendations__title,.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-accordion:last-child{margin-bottom:16px}@media(min-width: 600px){.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations{padding:24px 24px 0}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-pagespeed-recommendations__title,.googlesitekit-pagespeed-widget .googlesitekit-pagespeed--recommendations .googlesitekit-accordion:last-child{margin-bottom:24px}}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed__recommendations-cta--hidden{visibility:hidden}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed__zero-recommendations{display:flex;justify-content:center}.googlesitekit-pagespeed-widget .googlesitekit-pagespeed__zero-recommendations svg{max-height:150px}.googlesitekit-pagespeed-report-metric--fast{color:#4d760b}.googlesitekit-pagespeed-report-metric--average{color:#895a00}.googlesitekit-pagespeed-report-metric--slow{color:#ac4220}.googlesitekit-pagespeed-report-metric__title{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:700;letter-spacing:.1px;line-height:1.25}.googlesitekit-pagespeed-report-metric__badge{margin-left:6px;vertical-align:bottom}.googlesitekit-pagespeed-report-metric .googlesitekit-pagespeed-report-metric-value-container{align-items:flex-end;display:flex;flex-direction:column;font-size:14px;justify-content:center;letter-spacing:.25px;line-height:1.43;text-align:right}.googlesitekit-pagespeed-report-metric .googlesitekit-pagespeed-report-metric-value__display-value,.googlesitekit-pagespeed-report-metric .googlesitekit-pagespeed-report-metric-value__rating{width:auto}.googlesitekit-pagespeed-report-metric .googlesitekit-pagespeed-report-metric-value__display-value{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:700;line-height:1.25;white-space:nowrap}.googlesitekit-wizard{padding-top:10px}@media(min-width: 600px){.googlesitekit-wizard{padding-left:10px;padding-right:10px}}.googlesitekit-wizard .googlesitekit-opt-in{margin-bottom:8px;margin-top:8px}.googlesitekit-wizard .googlesitekit-wizard__asterisk{color:#ac4220}.googlesitekit-wizard .googlesitekit-wizard__asterisk--space{margin-left:3px}.googlesitekit-wizard .googlesitekit-wizard__error-text{color:#ac4220;font-weight:500}.googlesitekit-wizard-auth{border-bottom:1px solid #ebeef0;display:flex;padding-bottom:40px}.googlesitekit-wizard-auth .googlesitekit-wizard-auth__image{border-radius:50%;display:block;flex:0 0 auto;height:32px;margin-right:16px;width:32px}@media(min-width: 600px){.googlesitekit-wizard-auth .googlesitekit-wizard-auth__image{height:64px;width:64px}}@media(min-width: 960px){.googlesitekit-wizard-auth .googlesitekit-wizard-auth__image{margin-right:24px}}.googlesitekit-wizard-auth .googlesitekit-wizard-auth__title{margin:0 0 10px}.googlesitekit-wizard-auth .googlesitekit-wizard-auth__text{margin:0}.googlesitekit-wizard-component .googlesitekit-wizard-component__title{display:inline-block;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;margin:0 0 10px}.googlesitekit-wizard-component .googlesitekit-wizard-component__logo{display:inline-block;margin:0 16px 8px 0;vertical-align:bottom}.googlesitekit-wizard-component .googlesitekit-wizard-component__logo img{display:block}.googlesitekit-wizard-component .googlesitekit-wizard-component__description{margin:0 0 17px 0}@media(min-width: 960px){.googlesitekit-wizard-component .googlesitekit-wizard-component__description{margin:0 0 29px 0}}.googlesitekit-wizard-component .googlesitekit-wizard-component__inputs{align-items:center;display:flex;flex-wrap:wrap;margin:0}.googlesitekit-wizard-component .googlesitekit-wizard-component__inputs--multiline{display:block}.googlesitekit-wizard-component .googlesitekit-wizard-component__inputs>div{margin:16px 16px 16px 0}@media(min-width: 960px){.googlesitekit-wizard-component .googlesitekit-wizard-component__inputs>div{margin:24px 24px 24px 0}}.googlesitekit-wizard-component .googlesitekit-wizard-component__inputs--multiline>div{margin:0;width:100%}.googlesitekit-wizard-component .googlesitekit-wizard-component__action{margin:24px 0 0 0}@media(min-width: 600px){.googlesitekit-wizard-component .googlesitekit-wizard-component__action{align-items:center;display:flex;justify-content:space-between}}@media(min-width: 960px){.googlesitekit-wizard-component .googlesitekit-wizard-component__action{margin:36px 0 0 0}}.googlesitekit-wizard-component .googlesitekit-wizard-component__skip{display:flex;flex:1 1 auto;justify-content:space-between;margin-top:16px}@media(min-width: 600px){.googlesitekit-wizard-component .googlesitekit-wizard-component__skip{margin-left:16px;margin-top:0}}@media(min-width: 960px){.googlesitekit-wizard-component .googlesitekit-wizard-component__skip{margin-left:24px}}.googlesitekit-wizard-component .googlesitekit-wizard-component__steps{font-size:12px;letter-spacing:.2px}.googlesitekit-wizard-component-nav{align-items:center;display:flex}.googlesitekit-wizard-component-nav .googlesitekit-wizard-component-nav__button{cursor:pointer}.googlesitekit-wizard-component-nav .googlesitekit-wizard-component-nav__icon{display:inline-block;opacity:.6}.googlesitekit-wizard-component-nav .googlesitekit-wizard-component-nav__icon:focus,.googlesitekit-wizard-component-nav .googlesitekit-wizard-component-nav__icon:active,.googlesitekit-wizard-component-nav .googlesitekit-wizard-component-nav__icon:hover{opacity:1}.googlesitekit-wizard-component-nav .googlesitekit-wizard-component-nav__icon--reverse{transform:rotate(180deg)}.googlesitekit-wizard-module{border:1px solid #ebeef0;height:100%;padding:16px;width:100%}@media(min-width: 960px){.googlesitekit-wizard-module{padding:24px}}.googlesitekit-wizard-module .googlesitekit-wizard-module__logo{align-items:flex-end;display:flex;height:36px}.googlesitekit-wizard-module .googlesitekit-wizard-module__logo img{display:block}.googlesitekit-wizard-module .googlesitekit-wizard-module__title{margin:15px 0 10px}.googlesitekit-wizard-module .googlesitekit-wizard-module__text{font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0}.googlesitekit-wizard-module .googlesitekit-wizard-module__switch{float:right}.googlesitekit-wizard-module .googlesitekit-wizard-module__switch .spinner{margin-top:-5px}.googlesitekit-wizard-module .googlesitekit-wizard-module__cta{font-size:12px;letter-spacing:.2px}.googlesitekit-wizard-progress{background-color:#fff}@media(min-width: 600px){.googlesitekit-wizard-progress{padding-left:10px;padding-right:10px}}@media(min-width: 600px){.googlesitekit-wizard-progress{border-bottom:1px solid #ebeef0}}.googlesitekit-wizard-progress .googlesitekit-wizard-progress__subtitle{margin:10px 0 17px}.googlesitekit-wizard-progress .googlesitekit-wizard-progress__title{margin:0 0 10px}@media(min-width: 600px){.googlesitekit-wizard-progress .googlesitekit-wizard-progress__title{margin:0 0 30px}}.googlesitekit-wizard-progress .googlesitekit-wizard-progress__description{font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0 0 10px}@media(min-width: 600px){.googlesitekit-wizard-progress .googlesitekit-wizard-progress__description{margin:0 0 30px}}.googlesitekit-wizard-progress .googlesitekit-wizard-progress__steps{display:flex;padding:16px}@media(min-width: 960px){.googlesitekit-wizard-progress .googlesitekit-wizard-progress__steps{padding:24px 0 0 0}}.googlesitekit-plugin .googlesitekit-wizard-progress-step{display:none;flex:1;flex-wrap:nowrap;text-align:center}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-wizard-progress-step{display:block;margin-bottom:40px}}.googlesitekit-plugin .googlesitekit-wizard-progress-step--current{display:block}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number-wrapper{position:relative}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number-wrapper::before{position:absolute;top:50%;transform:translateY(-50%);background-color:#ebeef0;content:"";display:block;height:2px;left:-16px;right:-16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number-wrapper::before{left:-24px;right:-24px}}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-wizard-progress-step--1 .googlesitekit-wizard-progress-step__number-wrapper::after,.googlesitekit-plugin .googlesitekit-wizard-progress-step--completeSetup .googlesitekit-wizard-progress-step__number-wrapper::after{position:absolute;top:50%;transform:translateY(-50%);background-color:#fff;content:"";display:block;height:4px}}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-wizard-progress-step--1 .googlesitekit-wizard-progress-step__number-wrapper::after{left:-16px;right:50%}}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-wizard-progress-step--1 .googlesitekit-wizard-progress-step__number-wrapper::after{left:-24px}}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-wizard-progress-step--completeSetup .googlesitekit-wizard-progress-step__number-wrapper::after{left:50%;right:-16px}}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-wizard-progress-step--completeSetup .googlesitekit-wizard-progress-step__number-wrapper::after{right:-24px}}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number{background-color:#ebeef0;border:15px solid #fff;border-radius:50%;color:#333935;font-size:14px;height:54px;letter-spacing:.25px;line-height:1.43;margin:0 auto;position:relative;width:54px;z-index:2}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number--inprogress{background-color:#446199;color:#fff}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number--warning{background-color:#895a00;color:#fff}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number--warning svg{color:#fff}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number--error{background-color:#ac4220;color:#fff}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number--error svg{color:#fff}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number--completed{background-color:#4d760b;color:#fff}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number--completed svg{color:#fff}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number-text--warning,.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number-text--error,.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number-text--completed{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__number-icon{align-items:center;display:flex;height:100%;justify-content:center}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__text{color:#5f6561;font-size:14px;font-weight:500;letter-spacing:.25px;margin:0}.googlesitekit-plugin .googlesitekit-wizard-progress-step .googlesitekit-wizard-progress-step__text span{color:#ac4220;display:inline-block;margin-left:5px}.googlesitekit-wizard-step{background-color:#fff;overflow:hidden;padding-bottom:16px;padding-top:16px}@media(min-width: 600px){.googlesitekit-wizard-step{padding-left:10px;padding-right:10px}}@media(min-width: 960px){.googlesitekit-wizard-step{padding-bottom:24px;padding-top:24px}}.googlesitekit-wizard-step .googlesitekit-wizard-step__title{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;margin:0 0 10px}.googlesitekit-wizard-step .googlesitekit-wizard-step__text{margin:0}.googlesitekit-wizard-step .googlesitekit-wizard-step__subtitle{margin:16px 0 0 0}@media(min-width: 960px){.googlesitekit-wizard-step .googlesitekit-wizard-step__subtitle{margin-top:24px}}.googlesitekit-wizard-step .googlesitekit-wizard-step__inputs{align-items:center;display:flex;flex-wrap:wrap;margin:0}.googlesitekit-wizard-step .googlesitekit-wizard-step__inputs--multiline{display:block}.googlesitekit-wizard-step .googlesitekit-wizard-step__inputs>div{margin:16px 16px 16px 0}@media(min-width: 960px){.googlesitekit-wizard-step .googlesitekit-wizard-step__inputs>div{margin:24px 24px 24px 0}}.googlesitekit-wizard-step .googlesitekit-wizard-step__inputs--multiline>div{margin:0;width:100%}.googlesitekit-wizard-step .googlesitekit-wizard-step__inputs>.googlesitekit-setup-module__input{margin:1em 0}.googlesitekit-wizard-step .googlesitekit-wizard-step__action{margin-top:16px}@media(min-width: 960px){.googlesitekit-wizard-step .googlesitekit-wizard-step__action{margin-top:24px}}.googlesitekit-wizard-step .googlesitekit-wizard-step__action--justify{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin-top:0}.googlesitekit-wizard-step .googlesitekit-wizard-step__action--justify>*:first-child{margin-right:16px;margin-top:16px}@media(min-width: 960px){.googlesitekit-wizard-step .googlesitekit-wizard-step__action--justify>*:first-child{margin-right:24px;margin-top:24px}}.googlesitekit-wizard-step .googlesitekit-wizard-step__action--justify>*:last-child{flex:0 0 auto;margin-top:16px}@media(min-width: 960px){.googlesitekit-wizard-step .googlesitekit-wizard-step__action--justify>*:last-child{margin-top:24px}}.googlesitekit-wizard-step .googlesitekit-wizard-step__back{margin-left:16px}@media(min-width: 960px){.googlesitekit-wizard-step .googlesitekit-wizard-step__back{margin-left:24px}}.googlesitekit-plugin .googlesitekit-setup{padding-top:10px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-setup{padding-left:10px;padding-right:10px}}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-opt-in{margin-bottom:8px;margin-top:8px}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__step{border-bottom:1px solid #ebeef0;margin-bottom:16px;padding-bottom:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__step{margin-bottom:24px;padding-bottom:24px}}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__step:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__title{display:inline-block;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;margin:.67em 0}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__notice{font-weight:500}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__description+.googlesitekit-setup__notice{margin-top:1em}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__notice-text{display:inline-block;margin-left:5px;vertical-align:middle}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__notice-warning-icon{display:inline-block}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__notice-warning-icon::before{background-color:#895a00;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2222%22%20height%3D%2219%22%20viewBox%3D%220%200%2022%2019%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M0%2019h22L11%200%200%2019zm12-3h-2v-2h2v2zm0-4h-2V8h2v4z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E");background-position:center 4px;background-repeat:no-repeat;background-size:14px 12px;border-radius:50%;content:"";display:inline-block;height:22px;vertical-align:middle;width:22px}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__success-notice-icon{align-items:center;background-color:#4d760b;border-radius:50%;display:inline-flex;height:22px;justify-content:center;line-height:22px;margin:0 auto;position:relative;width:22px;z-index:2}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__footer{border-top:1px solid #ebeef0}.googlesitekit-plugin .googlesitekit-setup .googlesitekit-setup__splash{border-bottom:1px solid #ebeef0;padding-left:10px;padding-right:10px}.googlesitekit-plugin .googlesitekit-setup-compat{max-width:60rem}.googlesitekit-plugin .googlesitekit-start-setup-wrap{display:flex}.googlesitekit-plugin .googlesitekit-start-setup{margin-right:16px}.googlesitekit-plugin .googlesitekit-setup__wrapper{background-color:#fff;border-radius:16px}.googlesitekit-plugin .googlesitekit-setup__wrapper .googlesitekit-setup__intro-title{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14;margin:0 0 17px}.googlesitekit-plugin .googlesitekit-setup__warning{align-items:center;display:flex}.googlesitekit-plugin .googlesitekit-setup__warning svg{color:#895a00;width:34px}.googlesitekit-plugin .googlesitekit-setup__warning div{flex:1;margin:0 0 0 24px}.googlesitekit-plugin .googlesitekit-setup__content{margin:0 auto;max-width:465px;padding:2rem 0}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup__content{max-width:none;padding:0}}.googlesitekit-plugin .googlesitekit-setup__content .googlesitekit-setup__description{margin:0}.googlesitekit-plugin .googlesitekit-setup__content .googlesitekit-opt-in{margin:2rem 0}.googlesitekit-plugin .googlesitekit-setup__icon{text-align:center}.googlesitekit-plugin .googlesitekit-setup__icon svg{height:auto;max-width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup__icon{align-self:center;order:2}}.googlesitekit-plugin .googlesitekit-setup-analytics-notice{background-color:#f8fafb;border-radius:16px;display:flex;flex-direction:column-reverse;margin:24px 0 0;padding:16px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-setup-analytics-notice{padding:24px}}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-setup-analytics-notice{align-items:center;flex-flow:row nowrap}}.googlesitekit-plugin .googlesitekit-setup-analytics-notice label{color:#333935;font-size:16px;letter-spacing:.5px;line-height:1.5;padding-top:8px}.googlesitekit-plugin .googlesitekit-setup-analytics-notice .mdc-form-field{align-items:flex-start}.googlesitekit-plugin .googlesitekit-setup-analytics-notice__icon{margin:0 0 24px}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-setup-analytics-notice__icon{margin:0;padding-left:24px}}.googlesitekit-plugin .googlesitekit-setup-analytics-notice__icon svg{display:block;margin:0 auto;max-width:378px;width:100%}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-setup-analytics-notice__icon svg{margin:0;width:378px}}.googlesitekit-plugin .googlesitekit-setup-module{flex:1 1 auto}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__step{border-bottom:1px solid #ebeef0;margin-bottom:16px;padding-bottom:6px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__step{margin-bottom:24px;padding-bottom:14px}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__step:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__logo{display:inline-block;line-height:0;margin:0 16px 8px 0;vertical-align:bottom}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__logo img{display:block;height:auto;width:33px}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__title{display:inline-block;margin:0 0 10px}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__text--no-margin{margin:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs+p,.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs+.googlesitekit-settings-notice{margin-top:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs+.googlesitekit-settings-notice{margin-top:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__title+p{margin-bottom:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__title+p~p{margin-bottom:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__user{align-items:center;display:flex}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__user-image{border-radius:50%;height:32px;margin-right:10px;width:32px}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs{align-items:center;display:flex;flex-wrap:wrap;margin:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs--collapsed{align-items:flex-start}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs--multiline{display:block}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>div{margin:16px 16px 16px 0}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>div{margin:24px 24px 24px 0}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>div.googlesitekit-optimize__container-id{margin-right:0;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>div.googlesitekit-optimize__container-id{align-items:center;display:flex;flex-wrap:nowrap}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>div.googlesitekit-optimize__container-id .mdc-text-field-helper-line{margin:8px 0 0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>div.googlesitekit-optimize__container-id .mdc-text-field-helper-line{margin:0}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>div.googlesitekit-twg-setting-field{margin-bottom:0;margin-right:0;width:100%}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs--collapsed>div{margin-top:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs--multiline>div{margin:0;width:100%}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs>.googlesitekit-setup-module__input{margin:1em 0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs+.googlesitekit-error-text{margin-top:-16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__inputs+.googlesitekit-error-text{margin-top:-24px}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__switch{margin:16px 0}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__switch{margin:24px 0}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__action{margin:24px 0 0 0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__action{align-items:center;display:flex}}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__action{margin:36px 0 0 0}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__action .googlesitekit-cta-link{font-size:14px;letter-spacing:.25px;line-height:1.43}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__action .mdc-button+.googlesitekit-cta-link{margin-left:24px}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__sub-action{display:flex;margin-top:16px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__sub-action{margin-left:16px;margin-top:0}}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__sub-action{margin-left:24px}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__list-wrapper{background:#ebeef0;border-radius:16px;margin:16px 0 0 0;padding:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__list-wrapper{margin-top:24px}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__cta{margin-top:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__cta{margin-top:24px}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__cta-link{display:inline-block;margin-right:50px}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__cta-link:last-child{margin-right:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__action+.googlesitekit-setup-module__footer-text{margin:24px 0 0 0}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__action+.googlesitekit-setup-module__footer-text{margin:36px 0 0 0}}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__header{align-items:center;display:flex;flex-wrap:wrap;grid-gap:10px 12px}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__header .googlesitekit-setup-module__logo,.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__header .googlesitekit-setup-module__title{margin-bottom:0}.googlesitekit-plugin .googlesitekit-setup-module .googlesitekit-setup-module__badges{align-items:center;display:flex;flex-wrap:wrap;grid-gap:10px 12px;gap:10px 12px}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect{--adsense-connect-cta-fade-in-duration: 7.5s;--adsense-connect-cta-fade-out-duration: 500ms}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption-container{display:grid;grid-template-columns:1fr;margin:0}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption-container{display:block;padding:32px 0 0}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption{color:#999f9b;display:flex;grid-column-start:1;grid-row-start:1;margin:0;opacity:0;transition:color 500ms ease-in-out}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption{margin-bottom:24px;opacity:1}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption .googlesitekit-setup-module--adsense__stage-caption-indicator{align-self:stretch;background-color:rgba(0,0,0,.1);display:none;margin-right:20px;width:1px}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption .googlesitekit-setup-module--adsense__stage-caption-indicator{display:block}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption h4{color:#7b807d;font-size:18px;font-weight:400;margin:0 0 4px}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption p{color:#7b807d;font-size:12px;margin:0}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption *{transition:inherit}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--static h4,.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--enter h4,.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--leave h4{color:#446199}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--static p,.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--enter p,.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--leave p{color:#333935}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--static{opacity:1}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--static .googlesitekit-setup-module--adsense__stage-caption-indicator{background-color:#446199}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--enter .googlesitekit-setup-module--adsense__stage-caption-indicator,.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--leave .googlesitekit-setup-module--adsense__stage-caption-indicator{background-image:linear-gradient(0deg, #446199 0%, #446199 100%);background-repeat:no-repeat}@keyframes googlesitekit-fade-in{0%{opacity:0}6.67%{opacity:1}100%{opacity:1}}@keyframes googlesitekit-fade-out{0%{opacity:1}50%{opacity:0}100%{opacity:0}}@keyframes googlesitekit-caption-indicator-enter{from{background-size:100% 0%}to{background-size:100% 100%}}@keyframes googlesitekit-caption-indicator-leave{from{background-size:100% 100%}to{background-size:100% 0%}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--enter{animation:googlesitekit-fade-in var(--adsense-connect-cta-fade-in-duration) linear forwards}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--enter{animation:none}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--enter .googlesitekit-setup-module--adsense__stage-caption-indicator{animation:googlesitekit-caption-indicator-enter 500ms linear forwards;background-position:0% 0%}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--leave{animation:googlesitekit-fade-out var(--adsense-connect-cta-fade-out-duration) linear forwards}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--leave{animation:none}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-caption--current--leave .googlesitekit-setup-module--adsense__stage-caption-indicator{animation:googlesitekit-caption-indicator-leave 500ms linear forwards;background-position:0% 100%}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-image-container{display:grid;grid-template-columns:1fr;height:100%;padding:16px 0;width:100%}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-image-container{height:calc(100% + 70px);margin-bottom:12px;margin-top:-70px}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-image{align-items:center;display:flex;grid-column-start:1;grid-row-start:1;height:100%;justify-content:center;opacity:0;width:100%}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-image svg{flex:1;max-height:312px;max-width:100%}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-image--current--static{opacity:1}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-image--current--enter{animation:googlesitekit-fade-in var(--adsense-connect-cta-fade-in-duration) linear forwards}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-image--current--leave{animation:googlesitekit-fade-out var(--adsense-connect-cta-fade-out-duration) linear forwards}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator{display:grid;grid-auto-flow:column;grid-gap:6px;justify-content:flex-start;margin:12px 0 20px}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator{display:none}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator li{background-color:rgba(0,0,0,.1);border-radius:1px;height:2px;width:26px;--adsense-connect-cta-indicator-duration: 500ms}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator li.googlesitekit-setup-module--adsense__stage-indicator--current--static{background-color:#446199}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator li.googlesitekit-setup-module--adsense__stage-indicator--current--enter,.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator li.googlesitekit-setup-module--adsense__stage-indicator--current--leave{background-image:linear-gradient(0deg, #446199 0%, #446199 100%);background-repeat:no-repeat}@keyframes googlesitekit-indicator-enter{from{background-size:0% 100%}to{background-size:100% 100%}}@keyframes googlesitekit-indicator-leave{from{background-size:100% 100%}to{background-size:0% 100%}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator li.googlesitekit-setup-module--adsense__stage-indicator--current--enter{animation:googlesitekit-indicator-enter var(--adsense-connect-cta-indicator-duration) linear forwards;background-position:0% 0%}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module--adsense__stage-indicator li.googlesitekit-setup-module--adsense__stage-indicator--current--leave{animation:googlesitekit-indicator-leave var(--adsense-connect-cta-indicator-duration) linear forwards;background-position:100% 0%}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module__action{display:flex;flex-wrap:wrap;grid-gap:8px 24px;gap:8px 24px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module__action{grid-column-gap:48px;column-gap:48px}}@media(min-width: 601px){.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module__footer-text{align-items:flex-end;display:flex;justify-content:flex-end}}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module__footer-text a{text-decoration:underline}.googlesitekit-plugin .googlesitekit-setup__wrapper--adsense-connect .googlesitekit-setup-module__footer-text p{font-size:12px;margin:0}.googlesitekit-plugin .googlesitekit-settings-connect-module{border:1px solid #ebeef0;border-radius:8px;height:100%;padding:16px;width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-settings-connect-module{padding:24px}}.googlesitekit-plugin .googlesitekit-settings-connect-module--disabled{color:#b8bdb9}.googlesitekit-plugin .googlesitekit-settings-connect-module--disabled .googlesitekit-settings-connect-module__logo{filter:saturate(0);opacity:.5}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__logo{align-items:flex-end;display:flex;height:36px}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__logo img{display:block}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__heading{align-items:center;display:flex;flex-wrap:wrap;grid-gap:10px 12px;margin:15px 0 10px}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__title{margin:0}.googlesitekit-plugin .googlesitekit-settings-connect-module--disabled .googlesitekit-settings-connect-module__title{color:#b8bdb9}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__badges{display:flex;flex-wrap:wrap;grid-gap:10px 12px}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__text{font-size:14px;letter-spacing:.25px;line-height:1.43;margin:0}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__switch{float:right}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__switch .spinner{margin-top:-5px}.googlesitekit-plugin .googlesitekit-settings-connect-module .googlesitekit-settings-connect-module__cta{font-size:14px;letter-spacing:.25px}.googlesitekit-settings-meta .googlesitekit-settings-meta__profile{align-items:center;display:flex;margin:16px 0}@media(min-width: 960px){.googlesitekit-settings-meta .googlesitekit-settings-meta__profile{margin:24px 0}}.googlesitekit-settings-meta .googlesitekit-settings-meta__profile .googlesitekit-cta-link{font-style:italic}.googlesitekit-settings-meta .googlesitekit-settings-meta__avatar{border-radius:50%;height:64px;margin-right:16px;width:64px}@media(min-width: 960px){.googlesitekit-settings-meta .googlesitekit-settings-meta__avatar{margin-right:24px}}.googlesitekit-settings-meta .googlesitekit-settings-meta__user-details{font-size:12px;letter-spacing:.2px}.googlesitekit-settings-meta .googlesitekit-settings-meta__user{font-weight:700;margin:0}.googlesitekit-settings-meta .googlesitekit-settings-meta__unlink{font-size:12px;letter-spacing:.2px}.googlesitekit-plugin .googlesitekit-settings-module{border-bottom:1px solid #ebeef0;position:relative}.googlesitekit-plugin .googlesitekit-settings-module--error{border:3px solid #ac4220}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__status{align-items:center;color:#131418;display:flex;font-size:14px;font-weight:500;letter-spacing:.25px;line-height:1.43;margin:0;text-align:right}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__status--not-connected{color:#895a00}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__status-icon{color:#4d760b;margin-left:16px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__status-icon::before{background-position:center center;background-repeat:no-repeat;border-radius:50%;content:"";display:inline-block;height:19px;vertical-align:middle;width:19px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__status-icon--connected::before{background-color:#4d760b;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2212%22%20viewBox%3D%220%200%2016%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M0%206.414L1.415%205l5.292%205.292-1.414%201.415z%22%2F%3E%3Cpath%20d%3D%22M14.146.146l1.415%201.414L5.414%2011.707%204%2010.292z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-size:10px 8px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__status-icon--not-connected::before,.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__status-icon--warning::before{background-color:#fff;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2222%22%20height%3D%2219%22%20viewBox%3D%220%200%2022%2019%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M0%2019h22L11%200%200%2019zm12-3h-2v-2h2v2zm0-4h-2V8h2v4z%22%20fill%3D%22%23FECE72%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E");background-position:center 3px;background-size:19px 17px;height:26px;width:26px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header{cursor:pointer;display:block;padding:0 32px 0 0;position:relative;width:100%}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header:hover{text-decoration:none}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header:focus{outline-offset:0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header::after{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20viewBox%3D%220%200%2012%208%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.6.6L12%202%206%208%200%202%201.4.6%206%205.2z%22%20fill%3D%22%235B5B61%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:center center;background-repeat:no-repeat;content:"";display:block;height:20px;position:absolute;right:16px;top:50%;transform:translateY(-50%);width:20px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header--open::after{transform:translateY(-50%) rotate(180deg)}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header .mdc-button{background-color:#cbd0d3;color:#131418;font-weight:500}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header .googlesitekit-settings-module__status p{margin:8px 0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header .googlesitekit-settings-module__status--not-connected .mdc-button{margin:-1.5px 0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__header .googlesitekit-settings-module__status--loading{align-items:center;display:flex;min-width:150px;padding:.5px 0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__content{border-top:1px solid #ebeef0;display:none}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__content--open{display:block}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__content .mdc-layout-grid__cell{font-size:14px;letter-spacing:.25px;line-height:1.43}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__heading{align-items:center;display:flex;flex-wrap:wrap;grid-row-gap:12px;row-gap:12px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__title{align-items:center;display:flex;font-size:16px;line-height:1.25;margin:0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__heading-icon{height:auto;margin-right:16px;width:24px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__heading-badges{align-items:center;display:flex;flex-wrap:wrap;grid-row-gap:12px;row-gap:12px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__footer-cancel{margin-left:24px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-header{margin:0 0 8px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__fields-group{border-bottom:1px solid #ebeef0;margin-bottom:1em}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__fields-group:last-child{border-bottom:none;margin-bottom:0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-items{align-items:stretch;display:flex;flex-wrap:wrap;margin:0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-select{margin:0 16px 16px 0}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-select{margin:0 24px 24px 0}}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item{margin:0 32px 16px 0;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item{width:auto}}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item{margin:0 48px 24px 0}}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item--data-only{align-items:flex-end;display:flex}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item--nomargin{margin:0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-setup-module--analytics .googlesitekit-settings-module__meta-item--data-only{margin-top:-16px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-setup-module--analytics .googlesitekit-settings-module__meta-item--data-only{margin-top:0}}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__inline-items{display:flex;flex-wrap:wrap}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__inline-item{margin:0 1rem 1rem 0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item-type{color:#131418;font-size:12px;font-weight:700;letter-spacing:.2px;line-height:1.33;margin:0 0 8px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item-data{color:#131418;font-size:14px;letter-spacing:.25px;line-height:1.43;margin:0}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item-data--wrap{word-break:break-all}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item-data--tiny{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:1.33}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__meta-item-info{color:#5f6561;font-size:.75rem}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__edit-button-icon,.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__remove-button-icon{margin-left:16px}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__edit-button-icon svg{color:#6380b8}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__remove-button-icon{color:#cc6240}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__remove-button{align-items:center;display:flex}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__error{background-color:#ac4220;color:#fff;font-weight:700}.googlesitekit-plugin .googlesitekit-settings-module .googlesitekit-settings-module__apikey-cancel{font-size:12px;letter-spacing:.2px;margin-left:24px}.googlesitekit-settings-module-warning{font-size:14px;letter-spacing:.25px;line-height:1.43}.googlesitekit-settings-module-warning--settings{margin-bottom:1em}.googlesitekit-settings-module-warning--modules-list{font-size:12px;letter-spacing:.2px;margin:1em 0}.googlesitekit-settings-module-warning--modules-list .svg{height:auto;width:15px}.googlesitekit-settings-module-warning svg{color:#895a00}.googlesitekit-settings-module-warning--module-sitekit-dashboard{margin-top:1em}.googlesitekit-settings-module-warning--module-dashboard{margin-bottom:1em}.googlesitekit-settings-notice{background-color:#ffe4b1;border-radius:16px;color:rgba(0,0,0,.7);display:flex;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:1.5em 0;max-width:1098px;padding:16px}@media(min-width: 960px){.googlesitekit-settings-notice{padding-left:24px}}.googlesitekit-settings-notice .googlesitekit-settings-notice__body{flex-grow:1;min-width:0}@media(min-width: 600px){.googlesitekit-settings-notice .googlesitekit-settings-notice__body{display:flex}}.googlesitekit-settings-notice .googlesitekit-settings-notice__children-container{flex-grow:1}.googlesitekit-settings-notice .googlesitekit-settings-notice__icon{line-height:0;margin-right:10px}.googlesitekit-settings-notice .googlesitekit-settings-notice__text{flex-grow:1;line-height:20px}.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled) .mdc-notched-outline__leading,.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled) .mdc-notched-outline__notch,.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled) .mdc-notched-outline__trailing,.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#999f9b}.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled) .mdc-floating-label,.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#131418}.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#131418}.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-settings-notice .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--focused) .mdc-text-field__input:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#7f9cd4}.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text{color:#131418}.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__leading,.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__notch,.googlesitekit-settings-notice .mdc-select:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__selected-text:hover~.mdc-notched-outline .mdc-notched-outline__trailing{border-color:#161b18}.googlesitekit-settings-notice--single-row .googlesitekit-settings-notice__learn-more{flex-shrink:0;line-height:20px;text-align:right}@media(min-width: 600px){.googlesitekit-settings-notice--single-row .googlesitekit-settings-notice__learn-more{padding-left:24px;text-align:inherit}}.googlesitekit-settings-notice--multi-row .googlesitekit-settings-notice__body{flex-direction:column}.googlesitekit-settings-notice--multi-row .googlesitekit-settings-notice__inner-row{padding-top:16px}@media(min-width: 600px){.googlesitekit-settings-notice--multi-row .googlesitekit-settings-notice__inner-row{display:flex;padding-top:24px}}@media(min-width: 960px){.googlesitekit-settings-notice--multi-row .googlesitekit-settings-notice__inner-row{padding-top:24px}}.googlesitekit-settings-notice--multi-row .googlesitekit-settings-notice__learn-more{flex-shrink:0;text-align:right}@media(min-width: 600px){.googlesitekit-settings-notice--multi-row .googlesitekit-settings-notice__learn-more{display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:4px;padding-right:12px;text-align:left}}@media(min-width: 960px){.googlesitekit-settings-notice--multi-row .googlesitekit-settings-notice__learn-more{margin-left:24px}}.googlesitekit-settings-notice--warning{background-color:#ffe4b1;color:rgba(0,0,0,.7)}.googlesitekit-settings-notice--info{background-color:#ebeef0;color:#131418}.googlesitekit-settings-notice--info .googlesitekit-cta-link{color:#108080}.googlesitekit-settings-notice--suggestion{background-color:#f8faff;color:#7f9cd4}.googlesitekit-plugin .googlesitekit-settings-user-input .googlesitekit-user-input__preview{margin-left:0;margin-right:0;padding:0}.googlesitekit-plugin .googlesitekit-settings-user-input p{margin-top:0}.googlesitekit-plugin .googlesitekit-user-input__header{padding-bottom:30px;padding-top:30px}.googlesitekit-plugin .googlesitekit-user-input__header .mdc-layout-grid__inner{align-items:center}.googlesitekit-plugin .googlesitekit-user-input__heading{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:24px;font-weight:400;line-height:1.28}.googlesitekit-plugin .googlesitekit-user-input__subtitle{color:#5f6561;font-size:14px;line-height:1.14}.googlesitekit-plugin .googlesitekit-user-input__content{padding:0}.googlesitekit-plugin .googlesitekit-user-input__content .mdc-linear-progress__buffer{background-color:#f8faff}.googlesitekit-plugin .googlesitekit-user-input__congrats{background-color:#fff;margin:-10px;padding:35px}.googlesitekit-plugin .googlesitekit-user-input__congrats h1{margin-bottom:0}.googlesitekit-plugin .googlesitekit-user-input__note{color:#5f6561;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0}.googlesitekit-plugin .googlesitekit-user-input__footer{display:flex;flex-direction:column;justify-content:space-between}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-user-input__footer{align-items:center;border-top:1px solid #ebeef0;flex-direction:row-reverse;margin:42px 0 0;padding:28px 24px}}.googlesitekit-plugin .googlesitekit-user-input__footer-nav{align-items:center;grid-column-gap:20px;column-gap:20px;display:flex;padding:17px 17px 33px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-user-input__footer-nav{flex-direction:row-reverse;padding:0}}.googlesitekit-plugin .googlesitekit-user-input__footer-cancel{border-top:1px solid #ebeef0;padding:17px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-user-input__footer-cancel{border:none;padding:0}}.googlesitekit-plugin .googlesitekit-user-input__select-options-wrapper{grid-row:span 2}.googlesitekit-plugin p.googlesitekit-user-input__select-instruction{border-bottom:1px solid #ebeef0;color:#131418;font-size:12px;line-height:1.33;margin:0;padding-bottom:15px}@media(min-width: 600px){.googlesitekit-plugin p.googlesitekit-user-input__select-instruction{color:#5f6561;font-size:20px;font-weight:500}}.googlesitekit-plugin .googlesitekit-user-input__question{background-color:#fff;border-radius:0 0 24px 24px}.googlesitekit-plugin .googlesitekit-user-input__question-contents{padding:17px;position:relative}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-user-input__question-contents{padding:28px 24px}}.googlesitekit-plugin .googlesitekit-user-input__question--next::before{background-color:#fff;content:"";height:100%;left:0;opacity:.75;position:absolute;top:0;width:100%;z-index:10}.googlesitekit-plugin .googlesitekit-user-input__question--next{display:none;position:relative}.googlesitekit-plugin .googlesitekit-user-input__question-number{color:rgba(3,14,7,.32);font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:38px;line-height:1.15;margin:0 0 13px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-user-input__question-number{color:#131418}}.googlesitekit-plugin .googlesitekit-user-input__question-instructions{display:flex;flex-direction:column}.googlesitekit-plugin .googlesitekit-user-input__question-instructions h1{color:#131418;font-size:14px;font-weight:500;line-height:1.2;margin:0 0 14px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-user-input__question-instructions h1{font-size:32px;font-weight:400;line-height:1.25;margin:0 0 16px}}.googlesitekit-plugin .googlesitekit-user-input__question-instructions .googlesitekit-user-input__question-instructions--description{color:#131418;font-size:12px;letter-spacing:.25px;line-height:1.15;margin:0 0 1em}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-user-input__question-instructions .googlesitekit-user-input__question-instructions--description{font-size:14px;line-height:1.43;margin:0 0 16px}}.googlesitekit-plugin .googlesitekit-user-input__question-info p{color:#5f6561;font-size:12px;letter-spacing:.25px;line-height:1.33;margin:0 0 3px}.googlesitekit-plugin .googlesitekit-user-input__question-info--author{align-items:center;color:#5f6561;display:flex;font-size:12px;letter-spacing:.2px;margin-top:4px}.googlesitekit-plugin .googlesitekit-user-input__question-info--author img{border-radius:50%;height:24px;margin-right:8px;width:24px}.googlesitekit-plugin p.googlesitekit-user-input__question-notice{color:#5f6561;font-size:12px;letter-spacing:.25px;line-height:1.33;margin:0 0 1em}@media(min-width: 960px){.googlesitekit-plugin p.googlesitekit-user-input__question-notice{margin:0 0 16px}}.googlesitekit-plugin .googlesitekit-user-input__question--progress{margin:0 auto}.googlesitekit-plugin .googlesitekit-user-input__preview{background-color:#fff;padding:50px 23px;position:relative}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-input__preview{margin-left:-10px;margin-right:-10px}}.googlesitekit-plugin .googlesitekit-user-input__preview .googlesitekit-user-input__question-instructions--notice{background-color:#cbd0d3;color:#131418;display:block;font-size:14px;letter-spacing:.25px;line-height:1.43;width:100%}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-input__preview .googlesitekit-user-input__question-instructions--notice{display:inline-block;margin:0;width:auto}}.googlesitekit-plugin .googlesitekit-user-input__preview-answers{display:flex;flex-wrap:wrap}.googlesitekit-plugin .googlesitekit-user-input__preview-answer{align-items:center;background-color:#b0e6c5;border-radius:8px;color:#00220d;display:flex;font-size:14px;letter-spacing:.25px;line-height:1.43;margin-bottom:12px;margin-right:12px;padding:8px 13px;word-break:break-word}.googlesitekit-plugin .googlesitekit-user-input__preview-group{border-bottom:1px solid #ebeef0;margin-bottom:12px;padding-bottom:12px}.googlesitekit-plugin .googlesitekit-user-input__preview-group-title{align-items:flex-start;display:flex;justify-content:space-between}.googlesitekit-plugin .googlesitekit-user-input__preview-group-title p{color:#131418;margin-top:0}.googlesitekit-plugin .googlesitekit-user-input__preview-group-title button{border-radius:100px;font-weight:400;letter-spacing:normal;margin-top:-4px;text-transform:none}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-input__preview--footer{align-items:center;display:flex;justify-content:space-between;margin-top:50px}}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-input__preview--footer .googlesitekit-user-input__buttons{margin:0}}.googlesitekit-plugin .googlesitekit-user-input__select-options{margin:0 0 20px}.googlesitekit-plugin .googlesitekit-user-input__select-option{align-items:center;display:flex;padding:20px 0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-input__select-option{padding:3px 0}}.googlesitekit-plugin .googlesitekit-user-input__select-option .mdc-text-field{background-color:transparent;height:36px;margin:0 1rem;max-width:250px;width:calc(100% - 2rem)}.googlesitekit-plugin .googlesitekit-user-input__select-option .mdc-text-field input{border:none;padding:0}.googlesitekit-plugin .googlesitekit-user-input__select-option .mdc-text-field input:-ms-input-placeholder{text-overflow:ellipsis}.googlesitekit-plugin .googlesitekit-user-input__select-option .mdc-text-field input:placeholder-shown{text-overflow:ellipsis}.googlesitekit-plugin .googlesitekit-user-input__select-option label{color:#161b18;font-size:14px;letter-spacing:.25px;line-height:1.43}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-input__select-option label{padding:10px 0}}.googlesitekit-plugin .googlesitekit-user-input__select-option .mdc-text-field--disabled,.googlesitekit-plugin .googlesitekit-user-input__select-option .mdc-checkbox--disabled,.googlesitekit-plugin .googlesitekit-user-input__select-option .mdc-checkbox--disabled+label{opacity:.25}.googlesitekit-plugin .googlesitekit-user-input__select-option-text-field{flex:1}.googlesitekit-plugin .googlesitekit-user-input__select-option-text-field .mdc-text-field--error .mdc-line-ripple--active{background-color:#000;opacity:1}.googlesitekit-plugin .googlesitekit-user-input__select-option:not(:last-child){border-bottom:1px solid #ebeef0}.googlesitekit-plugin .googlesitekit-user-input__text-options{border:2px solid #999f9b;border-radius:4px;margin:13px 0 8px;padding:0 12px}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-user-input__text-options{margin-top:0}}.googlesitekit-plugin .googlesitekit-user-input__text-options>div{margin:12px;margin-left:0}.googlesitekit-plugin .googlesitekit-user-input__text-options svg{color:#fff}.googlesitekit-plugin .googlesitekit-user-input__text-options .mdc-text-field,.googlesitekit-plugin .googlesitekit-user-input__text-options .mdc-text-field__input{background-color:transparent}.googlesitekit-plugin .googlesitekit-user-input__text-options .mdc-text-field{height:32px;width:100%}.googlesitekit-plugin .googlesitekit-user-input__text-options .mdc-text-field__input{border:none;margin:0;padding:0 6px}.googlesitekit-plugin .googlesitekit-user-input__text-options .mdc-text-field__input:-ms-input-placeholder{color:#b8bdb9}.googlesitekit-plugin .googlesitekit-user-input__text-options .mdc-text-field__input::placeholder{color:#b8bdb9}.googlesitekit-plugin .googlesitekit-user-input__text-options .mdc-line-ripple{display:none}.googlesitekit-plugin .googlesitekit-user-input__text-option{align-items:center;background-color:#b0e6c5;border-radius:8px;color:#00220d;display:inline-flex;font-size:14px;font-weight:500;letter-spacing:.25px;line-height:1.43;padding:3px 3px 3px 12px;white-space:nowrap}.googlesitekit-plugin .googlesitekit-user-input__text-option button{border-radius:100px;margin:0;min-width:35px;padding:0 12px}.googlesitekit-plugin .googlesitekit-user-input__text-option button svg path{fill:#00220d}.googlesitekit-plugin .googlesitekit-user-input__text-option .mdc-text-field{width:auto}.googlesitekit-plugin .googlesitekit-user-input__text-option .mdc-text-field .mdc-text-field__input{color:#00220d;font-weight:500}.googlesitekit-plugin .googlesitekit-user-input__text-option+div{margin-top:0}.googlesitekit-plugin .googlesitekit-user-input__text-options>div:last-child{margin-right:0}.googlesitekit-plugin .googlesitekit-user-input__buttons button{letter-spacing:.25px}.googlesitekit-plugin .googlesitekit-user-input__buttons button.mdc-button{border:none;padding:10px 16px}.googlesitekit-plugin .googlesitekit-user-input__buttons button.googlesitekit-cta-link{color:#5f6561}.googlesitekit-showing-feature-tour .react-joyride__overlay{mix-blend-mode:multiply !important}.googlesitekit-showing-feature-tour .react-joyride__spotlight{border-radius:16px !important}.googlesitekit-tour-tooltip .googlesitekit-tooltip-card{--mdc-theme-surface: #3c7251;border-radius:8px;box-shadow:none;color:#fff;position:relative}.googlesitekit-tour-tooltip .googlesitekit-tooltip-card a:active,.googlesitekit-tour-tooltip .googlesitekit-tooltip-card a:hover,.googlesitekit-tour-tooltip .googlesitekit-tooltip-card a:visited{color:#fff}.googlesitekit-tour-tooltip .googlesitekit-tooltip-card svg{color:#fff}.googlesitekit-tooltip-title{color:#fff;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:500;letter-spacing:.5px;line-height:1.5;margin-bottom:4px;margin-top:0}.googlesitekit-tooltip-body{box-sizing:border-box;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:300;letter-spacing:.25px;line-height:1.43;max-width:352px;padding:24px 56px 2px 24px}.googlesitekit-tooltip-buttons{line-height:1em}.googlesitekit-tooltip-button,.googlesitekit-tooltip-button:not(:disabled){color:#fff;height:auto;letter-spacing:normal;line-height:1em;min-width:0;min-width:initial;padding:0;text-transform:none}.googlesitekit-tooltip-button:not(:first-of-type),.googlesitekit-tooltip-button:not(:disabled):not(:first-of-type){margin-left:28px}.googlesitekit-tooltip-close{height:auto;min-width:auto;padding:0;position:absolute;right:29px;top:29px}.mdc-card__actions.googlesitekit-tooltip-actions{align-items:center;display:flex;justify-content:space-between;padding:12px 24px 18px;text-align:right}.googlesitekit-tooltip-indicators{display:flex;margin:0;margin-right:16px;padding:0}.googlesitekit-tooltip-indicator{background:#fff;border-radius:50%;height:8px;list-style:none;margin-bottom:0;margin-right:8px;opacity:.5;width:8px}.googlesitekit-tooltip-indicator.active{opacity:1}body.googlesitekit-showing-feature-tour--dashboardSharing .googlesitekit-sharing-settings-dialog .mdc-dialog__container,body.googlesitekit-showing-feature-tour--dashboardSharing .googlesitekit-sharing-settings-dialog .mdc-dialog__scrim{opacity:1;transform:none}body.googlesitekit-showing-feature-tour--dashboardSharing .googlesitekit-sharing-settings-dialog:not(.mdc-dialog--open):not(.mdc-dialog--opening){display:flex !important;opacity:0;z-index:-99}.googlesitekit-plugin .googlesitekit-idea-hub{background-color:#fff;height:100%}.googlesitekit-plugin .googlesitekit-idea-hub .googlesitekit-idea-hub__idea--text{color:#131418;font-size:14px;letter-spacing:.25px;line-height:1.43;margin:0}.googlesitekit-plugin .googlesitekit-idea-hub__title{align-items:center;border-bottom:1px solid #ebeef0;display:flex;flex-wrap:nowrap;font-size:16px;font-weight:700;justify-content:space-between;line-height:1.25;margin:0 0 12px;padding:0 120px 12px 0;position:relative}.googlesitekit-plugin .googlesitekit-idea-hub__title .googlesitekit-badge{position:absolute;right:0}.googlesitekit-plugin .googlesitekit-idea-hub__tabs .mdc-tab{flex:0;height:40px;padding:0 12px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__tabs .mdc-tab{padding:0 40px}}.googlesitekit-plugin .googlesitekit-idea-hub__tabs .mdc-tab__content{color:#5f6561}.googlesitekit-plugin .googlesitekit-idea-hub__tabs .mdc-tab__content>span{margin-left:2px}.googlesitekit-plugin .googlesitekit-idea-hub__tabs .mdc-tab-indicator__content--underline{border-radius:3px 3px 0 0;height:3px}.googlesitekit-plugin .googlesitekit-idea-hub__tabs [aria-selected=true] .mdc-tab__content{color:#3c7251}.googlesitekit-plugin .googlesitekit-idea-hub__body{display:flex;margin:0 -16px;overflow-x:hidden}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__body{margin:0 -24px}}.googlesitekit-plugin .googlesitekit-idea-hub__content{width:100%}.googlesitekit-plugin .googlesitekit-idea-hub__content[aria-hidden=true]{display:none}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__content[aria-hidden=true]{display:block;margin-right:-100%;visibility:hidden}}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__content[aria-hidden=false]{visibility:visible}}.googlesitekit-plugin .googlesitekit-idea-hub__content .googlesitekit-preview-table__row{margin-bottom:1px}.googlesitekit-plugin .googlesitekit-idea-hub__idea--topics{line-height:1}.googlesitekit-plugin .googlesitekit-idea-hub__idea--topic{background-color:#b0e6c5;border-radius:100px;color:#00220d;display:inline-block;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:0 8px 4px 0;padding:2px 7px;vertical-align:top}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-idea-hub__actions--delete,.googlesitekit-plugin .googlesitekit-idea-hub__actions--pin,.googlesitekit-plugin .googlesitekit-idea-hub__actions--unpin{display:none}}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-idea-hub__actions--pin.googlesitekit-idea-hub__actions--unhide,.googlesitekit-plugin .googlesitekit-idea-hub__actions--delete.googlesitekit-idea-hub__actions--unhide{display:block}}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single{border-radius:16px;margin:0 auto;max-width:calc(100% - 16px);padding:16px;transition:background .2s ease-in-out}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__idea--single{padding:16px}}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-idea-hub__idea--single{display:flex;justify-content:space-between}}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:hover,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:focus{background-color:rgba(22,27,24,.08)}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:hover .googlesitekit-idea-hub__actions--delete,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:hover .googlesitekit-idea-hub__actions--pin,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:hover .googlesitekit-idea-hub__actions--unpin,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:focus .googlesitekit-idea-hub__actions--delete,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:focus .googlesitekit-idea-hub__actions--pin,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:focus .googlesitekit-idea-hub__actions--unpin{display:inline-flex}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:hover svg,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single:focus svg{opacity:.54;transition:opacity .2s ease-in-out}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions{display:flex;min-height:48px;width:144px}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions{justify-content:flex-end;margin:0 0 0 12px}}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions:empty{display:none}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions .googlesitekit-idea-hub__actions--unpin svg{color:#3c7251}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions button,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions .mdc-button{background-color:transparent;border-radius:50%;box-shadow:none;color:#5f6561;height:48px;min-width:48px;padding:0;width:48px}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions button:hover,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions .mdc-button:hover{background-color:#b8bdb9}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions button:hover svg,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .googlesitekit-idea-hub__idea--actions .mdc-button:hover svg{opacity:1}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single.googlesitekit-idea-hub__idea--is-processing .googlesitekit-idea-hub__actions--delete,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single.googlesitekit-idea-hub__idea--is-processing .googlesitekit-idea-hub__actions--pin,.googlesitekit-plugin .googlesitekit-idea-hub__idea--single.googlesitekit-idea-hub__idea--is-processing .googlesitekit-idea-hub__actions--unpin{display:inline-flex}.googlesitekit-plugin .googlesitekit-idea-hub__idea--single .MuiCircularProgress-colorPrimary{color:#3c7251}.googlesitekit-plugin .googlesitekit-idea-hub__idea--details{flex:1 0}.googlesitekit-plugin .mdc-button.googlesitekit-idea-hub__actions--view{background-color:transparent;box-shadow:none;color:#7f9cd4;font-size:12px;letter-spacing:.2px;line-height:1.33;text-transform:none}.googlesitekit-plugin .mdc-button.googlesitekit-idea-hub__actions--view:hover,.googlesitekit-plugin .mdc-button.googlesitekit-idea-hub__actions--view:focus{text-decoration:underline}.googlesitekit-plugin .googlesitekit-idea-hub__loading-notice{align-items:center;display:flex}.googlesitekit-plugin .googlesitekit-idea-hub__loading-notice p{color:#3c7251;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33}.googlesitekit-plugin .googlesitekit-idea-hub__loading-notice .googlesitekit-idea-hub__loading-notice__spinner-wrapper{margin-left:8px}.googlesitekit-plugin .googlesitekit-idea-hub__loading-notice .googlesitekit-idea-hub__loading-notice__spinner-wrapper svg{height:inherit;width:inherit}.googlesitekit-plugin .googlesitekit-idea-hub__footer--updated{align-items:center;color:#5f6561;display:inline-flex;font-size:12px;justify-content:center;letter-spacing:.2px;line-height:1.33}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-idea-hub__footer--updated{justify-content:flex-start}}.googlesitekit-plugin .googlesitekit-widget--ideaHubIdeas .googlesitekit-widget__footer{padding:14px 24px}.googlesitekit-plugin .googlesitekit-widget--ideaHubIdeas .googlesitekit-idea-hub__footer{padding:0}.googlesitekit-plugin .googlesitekit-widget--ideaHubIdeas .googlesitekit-idea-hub__footer .googlesitekit-idea-hub__footer--updated{height:40px}.googlesitekit-plugin .googlesitekit-idea-hub__empty{padding:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__empty{padding:24px}}.googlesitekit-plugin .googlesitekit-idea-hub__empty .mdc-layout-grid__inner{align-items:center;min-height:120px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__empty .mdc-layout-grid__inner{min-height:270px}}.googlesitekit-plugin .googlesitekit-idea-hub__empty--icon{text-align:center}.googlesitekit-plugin .googlesitekit-idea-hub__empty--icon svg{max-width:140px}.googlesitekit-plugin .googlesitekit-idea-hub__empty--title{color:#5f6561;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:24px;font-weight:400;line-height:1.33;margin:0}.googlesitekit-plugin .googlesitekit-idea-hub__empty--subtitle{color:#7b807d;margin:4px 0 0}.googlesitekit-plugin .googlesitekit-idea-hub__empty--layout-stacked .mdc-layout-grid__inner{min-height:auto;padding:40px 0}.googlesitekit-plugin .googlesitekit-idea-hub__empty--layout-stacked .googlesitekit-idea-hub__empty--details{text-align:center}.googlesitekit-plugin .googlesitekit-idea-hub__empty--layout-stacked .googlesitekit-idea-hub__empty--title{color:#5f6561;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:.5px;line-height:1.5}.googlesitekit-plugin .googlesitekit-idea-hub__empty--layout-stacked .googlesitekit-idea-hub__empty--subtitle{color:rgba(0,0,0,.54);font-size:12px;letter-spacing:.2px;line-height:1.33}.googlesitekit-plugin #idea-hub-module-notification .googlesitekit-publisher-win__image-larger{overflow:hidden}@media(min-width: 961px){.googlesitekit-plugin #idea-hub-module-notification .googlesitekit-publisher-win__image-larger svg{margin-bottom:-9px}}.googlesitekit-plugin .googlesitekit-idea-hub__pagination{align-items:center;display:flex;justify-content:center}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-idea-hub__pagination{justify-content:flex-end}}.googlesitekit-plugin .googlesitekit-idea-hub__pagination--legend{color:#5f6561;font-size:12px;letter-spacing:.2px;line-height:1.33}.googlesitekit-plugin .googlesitekit-idea-hub__pagination--buttons svg{fill:#5f6561;opacity:.54;width:36px}.googlesitekit-plugin .googlesitekit-idea-hub__pagination--buttons button.mdc-button{background-color:transparent;border-radius:50%;box-shadow:none;height:36px;min-height:36px;min-width:36px;padding:0;width:36px}.googlesitekit-plugin .googlesitekit-idea-hub__pagination--buttons button.mdc-button:hover{background-color:#b8bdb9}.googlesitekit-plugin .googlesitekit-idea-hub__pagination--buttons button.mdc-button[disabled] svg{opacity:.26}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta{display:flex;flex-direction:column;height:100%;justify-content:flex-start}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta .googlesitekit-heading-4,.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta p{margin-top:0}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta .googlesitekit-heading-4{color:#232824}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta .googlesitekit-badge{margin-left:12px}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta-body{overflow:hidden;text-align:center}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta-body svg{margin-bottom:-12px;max-width:100%;min-width:90%}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta-footer{border-top:1px solid #ebeef0;padding:16px 16px 0}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta-footer{padding:24px 24px 0}}.googlesitekit-plugin .googlesitekit-idea-hub__dashboard-cta-footer .googlesitekit-cta-link{margin-left:24px}.googlesitekit-ideahub-setup__button{margin-top:16px}@media(min-width: 960px){.googlesitekit-ideahub-setup__button{margin-top:24px}}.googlesitekit-ideahub-setup__checkbox{margin-left:-11px}.googlesitekit-ideahub-setup__checkbox label[for=tosAccepted]{font-size:16px;letter-spacing:.5px;line-height:1.5}.googlesitekit-plugin .googlesitekit-twg-setting-field>h4{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;font-weight:500;margin:0 0 21px}.googlesitekit-plugin .googlesitekit-twg-setting-field>p{color:#5f6561;font-size:.75rem}.googlesitekit-plugin .googlesitekit-twg-setting-field+.googlesitekit-twg-setting-field{border-top:1px solid #ebeef0;margin:16px 0;padding-top:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-twg-setting-field+.googlesitekit-twg-setting-field{margin:24px 0;padding-top:24px}}.googlesitekit-plugin .googlesitekit-twg-setup-customize>p{font-size:1rem;margin:16px 0 0}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-twg-setup-customize>p{margin:24px 0 0}}.googlesitekit-plugin .googlesitekit-setup-module__publication-screen{margin:25px 0 40px}.googlesitekit-plugin .googlesitekit-setup-module__publication-screen .googlesitekit-setup-module__title+p{margin:0}.googlesitekit-plugin .googlesitekit-twg-color-radio__options{display:flex;flex-wrap:wrap}.googlesitekit-plugin .googlesitekit-twg-color-radio__options .googlesitekit-image-radio{width:-moz-fit-content;width:fit-content}.googlesitekit-plugin .googlesitekit-twg-color-radio__options .googlesitekit-image-radio .image-radio .mdc-image-radio__background .mdc-image-radio__content{border-radius:50%;border-width:3.5px;height:43px;min-height:0;overflow:hidden;position:relative;width:43px}.googlesitekit-plugin .googlesitekit-twg-color-radio__options .googlesitekit-image-radio .image-radio .mdc-image-radio__background .mdc-image-radio__content svg{height:50px;left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:50px}.googlesitekit-plugin .googlesitekit-twg-color-radio__options .googlesitekit-image-radio .image-radio .mdc-image-radio__background::after{border:none}.googlesitekit-plugin .googlesitekit-twg-color-radio__options .googlesitekit-image-radio .image-radio .mdc-image-radio__background--checked::after{border:.1875rem solid var(--border-color);border-radius:50%;transform:scale(1.15)}.googlesitekit-plugin .googlesitekit-twg-color-radio__options .googlesitekit-image-radio>label{margin-right:0}.googlesitekit-plugin .googlesitekit-twg-post-type-select__options{align-items:center;display:flex;flex-wrap:wrap;grid-gap:10px;gap:10px}.googlesitekit-plugin .googlesitekit-twg-position-radio .mdc-radio{margin-left:-10px}.googlesitekit-plugin .googlesitekit-twg-position-radio__option{margin-bottom:14px}.googlesitekit-plugin .googlesitekit-twg-position-radio__option:last-child{margin-bottom:0}.googlesitekit-plugin .googlesitekit-twg-position-radio__option>.mdc-form-field label{font-weight:500}.googlesitekit-plugin .googlesitekit-twg-position-radio__option p{color:#5f6561;font-size:.75rem;margin:-10px 0 0 34px}.googlesitekit-plugin .googlesitekit-twg-supporter-wall>p{max-width:34.25rem}.googlesitekit-plugin .googlesitekit-twg-supporter-wall .googlesitekit-twg-supporter-wall__headline{color:#5f6561;font-size:12px;font-weight:400;line-height:1.33;margin:0}.googlesitekit-plugin .googlesitekit-twg-supporter-wall .googlesitekit-twg-supporter-wall__value{color:#131418;font-size:14px;margin:5px 0 0}.googlesitekit-plugin .googlesitekit-twg-supporter-wall .googlesitekit-twg-supporter-wall__link{display:block;margin-top:30px}.googlesitekit-plugin .googlesitekit-setup-module--thank-with-google .googlesitekit-setup-module__logo{margin-right:4px}.googlesitekit-plugin .googlesitekit-setup-module--thank-with-google .googlesitekit-setup-module__title{flex-basis:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module--thank-with-google .googlesitekit-setup-module__title{flex-basis:auto}}.googlesitekit-plugin .googlesitekit-setup-module--thank-with-google .googlesitekit-setup__icon{margin-top:20px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module--thank-with-google .googlesitekit-setup__icon{margin-top:0}}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-setup-module--thank-with-google .googlesitekit-setup-module__badges{order:2}}.googlesitekit-plugin .googlesitekit-ga4-reminder-banner .googlesitekit-publisher-win__desc{align-items:center;display:inline-flex}.googlesitekit-plugin .googlesitekit-ga4-reminder-banner .googlesitekit-publisher-win__desc .googlesitekit-ga4-reminder-banner__description-icon{margin-right:10px;vertical-align:middle}.googlesitekit-plugin .googlesitekit-ga4-reminder-banner .googlesitekit-publisher-win__desc .googlesitekit-ga4-reminder-banner__description-icon--info path{fill:#3c7251}.googlesitekit-plugin .googlesitekit-ga4-reminder-banner .googlesitekit-publisher-win__desc .googlesitekit-ga4-reminder-banner__description-icon--error path{fill:#ac4220}.googlesitekit-plugin .googlesitekit-ga4-reminder-banner .googlesitekit-publisher-win__icon{min-height:22px}.googlesitekit-plugin .googlesitekit-ga4-reminder-banner .googlesitekit-publisher-win__secondary-pane ul{list-style-image:url("data:image/svg+xml,%3Csvg width='10' height='9' viewBox='0 0 10 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 4.5L4 7.5L9 1.5' stroke='%233c7251' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A")}.googlesitekit-plugin .googlesitekit-ga4-reminder-banner .googlesitekit-publisher-win__secondary-pane ul li{margin-left:16px;padding-left:16px}.googlesitekit-plugin .googlesitekit-ga4-setup-banner .googlesitekit-publisher-win__title{font-size:20px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-ga4-setup-banner .googlesitekit-publisher-win__title{max-width:66.67%}}.googlesitekit-plugin .googlesitekit-ga4-setup-banner .googlesitekit-publisher-win__footer p,.googlesitekit-plugin .googlesitekit-ga4-setup-banner .googlesitekit-publisher-win__footer ul{color:#757575}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-ga4-setup-banner .googlesitekit-publisher-win__footer p,.googlesitekit-plugin .googlesitekit-ga4-setup-banner .googlesitekit-publisher-win__footer ul{max-width:66.67%}}.googlesitekit-plugin .googlesitekit-ga4-setup-banner .googlesitekit-ga4-setup-banner__field-group{align-items:center;grid-column-gap:30px;column-gap:30px;display:flex;flex-wrap:wrap;margin:25px 0 10px;grid-row-gap:24px;row-gap:24px}.googlesitekit-plugin .googlesitekit-ga4-setup-banner__footer-text-list{list-style-type:none;margin:0}.googlesitekit-plugin .googlesitekit-ga4-setup-banner__footer-text-list li{font-size:14px;letter-spacing:.25px;line-height:1.5;margin:.5em 0}.googlesitekit-plugin .googlesitekit-ga4-setup-banner__footer-text-list li:first-child{margin-top:1em}.googlesitekit-portal-survey{bottom:24px;position:fixed;right:24px;z-index:99999}@media(max-width: 449px){.googlesitekit-portal-survey{bottom:0;right:0}}@media(min-width: 1280px){.googlesitekit-portal-survey{bottom:34px;right:34px}}.googlesitekit-plugin .googlesitekit-survey__header-logo{margin:0 16px 0 0;width:24px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__header-logo{margin-right:24px}}.googlesitekit-plugin .googlesitekit-survey__header-logo svg{display:block}.googlesitekit-plugin .googlesitekit-survey__header-close{position:absolute;right:-12px;top:-12px}.googlesitekit-plugin .googlesitekit-survey__header-close svg{fill:#5f6561}.googlesitekit-plugin .googlesitekit-survey__header{align-items:center;display:flex;flex-wrap:nowrap;padding:16px 16px 8px;position:relative}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__header{padding:24px 24px 8px}}.googlesitekit-plugin .googlesitekit-survey__header .mdc-button:not(:disabled){background-color:transparent;border-radius:50%;box-shadow:none;height:40px;min-width:40px;padding:0;transition:background .2s ease-in-out;width:40px}.googlesitekit-plugin .googlesitekit-survey__header .mdc-button:not(:disabled):hover,.googlesitekit-plugin .googlesitekit-survey__header .mdc-button:not(:disabled):focus{background-color:#ebeef0}.googlesitekit-plugin .googlesitekit-survey__header h3{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:500;letter-spacing:.5px;line-height:1.5;margin:0}.googlesitekit-plugin .googlesitekit-survey__header-details{flex:1 0;padding:0 32px 0 0;position:relative}.googlesitekit-plugin .googlesitekit-survey{background-color:#fff;border-radius:8px;box-shadow:rgba(0,0,0,.14) 0 16px 24px 2px,rgba(0,0,0,.12) 0 6px 30px 5px,rgba(0,0,0,.2) 0 8px 10px -5px;max-width:400px}@media(max-width: 449px){.googlesitekit-plugin .googlesitekit-survey{max-width:none}}.googlesitekit-plugin .googlesitekit-survey__body{padding:0 0 16px;position:relative}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__body{padding-bottom:24px}}.googlesitekit-plugin .googlesitekit-survey__choices{display:flex;flex-wrap:nowrap;justify-content:space-between;margin-top:8px}.googlesitekit-plugin .googlesitekit-survey__choices>div{min-width:50px;overflow:visible}.googlesitekit-plugin .googlesitekit-survey__footer{padding:0 16px 16px;position:relative;text-align:right}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__footer{padding:0 24px 24px}}.googlesitekit-plugin .googlesitekit-survey__footer p{border-top:1px solid #ebeef0;color:#5f6561;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;letter-spacing:.2px;margin:12px 0 0;padding-top:12px;text-align:left}.googlesitekit-plugin .googlesitekit-survey__footer .googlesitekit-survey__terms{margin:0;padding-top:12px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__footer .googlesitekit-survey__terms{margin:0 0 -12px}}.googlesitekit-plugin .googlesitekit-survey__footer .googlesitekit-survey__terms .googlesitekit-cta-link--external{background:none;padding-right:0}.googlesitekit-plugin .googlesitekit-survey__footer .mdc-button{letter-spacing:.25px}.googlesitekit-plugin .googlesitekit-survey__choice p{color:#5f6561;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:6px 0 0}.googlesitekit-plugin .googlesitekit-survey__choice:first-child{margin-left:8px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__choice:first-child{margin-left:15px}}.googlesitekit-plugin .googlesitekit-survey__choice:first-child p{transform:translateX(9px)}.googlesitekit-plugin .googlesitekit-survey__choice:last-child{margin-right:7px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__choice:last-child{margin-right:17px}}.googlesitekit-plugin .googlesitekit-survey__choice:last-child p{transform:translateX(-9px)}.googlesitekit-plugin .googlesitekit-survey__choice:not(:first-child):not(:last-child) p{display:none}.googlesitekit-plugin .googlesitekit-survey__choice .mdc-button:not(:disabled){background-color:transparent;border-radius:50%;box-shadow:none;color:#5f6561;height:50px;min-width:50px;padding:0;transition:background .2s ease-in-out;width:50px}.googlesitekit-plugin .googlesitekit-survey__choice .mdc-button:not(:disabled):hover,.googlesitekit-plugin .googlesitekit-survey__choice .mdc-button:not(:disabled):focus{background-color:#ebeef0}.googlesitekit-plugin .googlesitekit-survey__multi-select .googlesitekit-survey__body{padding:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__multi-select .googlesitekit-survey__body{padding:16px 24px}}.googlesitekit-plugin .googlesitekit-survey__multi-select .googlesitekit-survey__multi-select__choice{align-items:center;display:flex;flex-wrap:wrap}.googlesitekit-plugin .googlesitekit-survey__multi-select .googlesitekit-survey__multi-select__choice .mdc-text-field{flex-grow:1;height:35px;margin-left:10px;width:auto}.googlesitekit-plugin .googlesitekit-survey__multi-select .googlesitekit-survey__multi-select__choice .mdc-text-field .mdc-text-field__input{background:transparent;font-size:12px;letter-spacing:.2px}.googlesitekit-plugin .googlesitekit-survey__multi-select .googlesitekit-survey__multi-select__choice--disabled{opacity:.25}.googlesitekit-plugin .googlesitekit-survey__multi-select .googlesitekit-survey__multi-select__choice--disabled :hover{cursor:default}.googlesitekit-plugin .googlesitekit-survey__completion .googlesitekit-survey__body{color:#5f6561;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;letter-spacing:.2px;line-height:1.33;padding:0 16px 16px 56px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-survey__completion .googlesitekit-survey__body{padding-left:70px;padding-right:24px}}.googlesitekit-survey__open-text .mdc-text-field{margin-bottom:16px}.googlesitekit-survey__open-text .mdc-text-field-helper-line{padding-left:0}.googlesitekit-survey__open-text .googlesitekit-survey__body{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:16px}@media(min-width: 960px){.googlesitekit-survey__open-text .googlesitekit-survey__body{padding:24px}}.googlesitekit-single-select .googlesitekit-survey__body{padding:16px}@media(min-width: 960px){.googlesitekit-single-select .googlesitekit-survey__body{padding:16px 24px}}.googlesitekit-single-select .googlesitekit-single-select__choice{align-items:center;display:flex;flex-wrap:wrap}.googlesitekit-single-select .mdc-text-field{flex-grow:1;height:35px;margin-left:10px;width:auto}.googlesitekit-single-select .mdc-text-field .mdc-text-field__input{background:transparent;font-size:12px;letter-spacing:.2px}.googlesitekit-widget-area--composite .googlesitekit-widget-area-widgets{background:#fff}@media(min-width: 961px){.googlesitekit-widget-area-header{margin-bottom:24px;margin-bottom:24px;margin-bottom:var(--mdc-layout-grid-margin-desktop, 24px)}}@media(min-width: 601px)and (max-width: 960px){.googlesitekit-widget-area-header{margin-bottom:16px;margin-bottom:16px;margin-bottom:var(--mdc-layout-grid-margin-tablet, 16px)}}@media(max-width: 600px){.googlesitekit-widget-area-header{margin-bottom:16px;margin-bottom:16px;margin-bottom:var(--mdc-layout-grid-margin-phone, 16px)}}.googlesitekit-widget-area-header .googlesitekit-widget-area-header__title{color:#161b18;font-weight:500;margin:0 0 .125rem}.googlesitekit-widget-area-header .googlesitekit-widget-area-header__subtitle{color:#161b18;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;letter-spacing:.25px;line-height:1.43;margin:0}.googlesitekit-widget-context{padding-bottom:10px;padding-top:10px}@media(min-width: 600px){.googlesitekit-widget-context{padding-left:10px;padding-right:10px}}.googlesitekit-widget-context--last{min-height:80vh}.googlesitekit-plugin .googlesitekit-widget{background:#fff;border-radius:16px;display:flex;flex-direction:column;height:100%;padding:0}.googlesitekit-plugin .googlesitekit-widget__body{flex:1}.googlesitekit-plugin .googlesitekit-widget__header{border-bottom:1px solid #ebeef0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-widget__header{display:flex;justify-content:space-between}}.googlesitekit-plugin .googlesitekit-widget__header-title{font-size:16px;line-height:1.25;margin:0}.googlesitekit-plugin .googlesitekit-widget__footer{border-top:1px solid #ebeef0}@media(min-width: 961px){.googlesitekit-plugin .googlesitekit-widget__header,.googlesitekit-plugin .googlesitekit-widget__body,.googlesitekit-plugin .googlesitekit-widget__footer{padding:24px;padding:24px;padding:var(--mdc-layout-grid-margin-desktop, 24px)}}@media(min-width: 601px)and (max-width: 960px){.googlesitekit-plugin .googlesitekit-widget__header,.googlesitekit-plugin .googlesitekit-widget__body,.googlesitekit-plugin .googlesitekit-widget__footer{padding:16px;padding:16px;padding:var(--mdc-layout-grid-margin-tablet, 16px)}}@media(max-width: 600px){.googlesitekit-plugin .googlesitekit-widget__header,.googlesitekit-plugin .googlesitekit-widget__body,.googlesitekit-plugin .googlesitekit-widget__footer{padding:16px;padding:16px;padding:var(--mdc-layout-grid-margin-phone, 16px)}}.googlesitekit-plugin .googlesitekit-widget--hidden-footer .googlesitekit-widget__footer{visibility:hidden}.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget{background:transparent;box-shadow:none}.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__header,.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__body,.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__footer{padding-left:0;padding-right:0}.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__header:first-child,.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__body:first-child,.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__footer:first-child{padding-top:0}.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__header:last-child,.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__body:last-child,.googlesitekit-widget-area--composite .googlesitekit-plugin .googlesitekit-widget__footer:last-child{padding-bottom:0}.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--no-padding .googlesitekit-widget__body{padding:0}.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--footer-v2 .googlesitekit-widget__footer{border-top:0;display:flex;justify-content:flex-end}.googlesitekit-plugin .googlesitekit-widget .googlesitekit-widget__header--cta{margin:16px 0 0}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-widget .googlesitekit-widget__header--cta{margin:0}}.googlesitekit-plugin .googlesitekit-widget .googlesitekit-widget__header--cta .googlesitekit-cta-link{font-size:16px;font-weight:400;letter-spacing:.5px}.googlesitekit-plugin .googlesitekit-adsense-performance-overview{display:flex;flex-wrap:wrap;justify-content:space-evenly;padding:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-adsense-performance-overview{padding:24px}}.googlesitekit-plugin .googlesitekit-adsense-performance-overview .googlesitekit-data-block--button{min-width:25%;padding-left:20px;padding-right:20px}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totalcount .googlesitekit-data-block__title{text-transform:capitalize}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totalcount svg{vertical-align:bottom}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totalcount .googlesitekit-cta-link{font-size:16px;letter-spacing:.5px}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab__text-label,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab__text-label{color:#5f6561}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab-scroller__scroll-content,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab-scroller__scroll-content{justify-content:center}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab-indicator__content--underline,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab-indicator__content--underline{border-radius:4px 4px 0 0;height:4px}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab__text-label,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab__text-label{letter-spacing:normal;opacity:1;text-transform:none}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab{height:40px;margin:0 10px;padding:0 20px}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab.mdc-tab--active .mdc-tab__text-label,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab.mdc-tab--active .mdc-tab__text-label{color:#3c7251}@media(min-width: 600px)and (max-width: 1280px){.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab{margin:0;padding:0 10px}}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab[disabled],.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab[disabled]{cursor:default}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab[disabled] .mdc-tab__ripple,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab[disabled] .mdc-tab__ripple{display:none}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab[disabled] .mdc-tab__text-label,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab[disabled] .mdc-tab__text-label{color:#999f9b;opacity:.6}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .mdc-tab--active[disabled] .mdc-tab-indicator__content--underline,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .mdc-tab--active[disabled] .mdc-tab-indicator__content--underline{background-color:#999f9b;opacity:.6}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .googlesitekit-widget__footer,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .googlesitekit-widget__footer{padding-top:0}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .googlesitekit-data-block__title,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .googlesitekit-data-block__title{font-size:14px;letter-spacing:.25px;line-height:1.43}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .googlesitekit-data-block__datapoint,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .googlesitekit-data-block__datapoint{font-size:58px;line-height:1.1}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .googlesitekit-data-block__arrow,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .googlesitekit-data-block__arrow{vertical-align:top}.googlesitekit-plugin .googlesitekit-widget__analytics--all-traffic .googlesitekit-data-block__suffix,.googlesitekit-plugin .googlesitekit-widget.googlesitekit-widget--legacy-all-traffic-widget .googlesitekit-data-block__suffix{font-weight:400}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__user-count-chart{position:relative;top:16px}}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__user-count-chart{top:0}}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions{min-height:450px;padding-top:30px;position:relative}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions .googlesitekit-preview-block.googlesitekit-widget--analyticsAllTraffic__dimensions--not-loading{display:none}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions .googlesitekit-preview-block.googlesitekit-widget--analyticsAllTraffic__dimensions--loading{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%)}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions .googlesitekit-widget--analyticsAllTraffic__dimensions-container{position:relative}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totalcount--loading{margin:0 0 10px}@media(min-width: 1280px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totalcount--loading{min-height:106px}}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart{height:100%;position:relative;width:100%}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart .googlesitekit-chart-loading{padding-bottom:32px;padding-top:32px}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__empty-dimensions-chart{padding:16px;text-align:center}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__empty-dimensions-chart{padding:24px}}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__empty-dimensions-chart .mdc-layout-grid__inner{align-items:center;min-height:120px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__empty-dimensions-chart .mdc-layout-grid__inner{min-height:270px}}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__empty-dimensions-chart svg{max-width:140px}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__empty-dimensions-chart h4{color:#5f6561;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;letter-spacing:.5px;line-height:1.5;margin:0}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__empty-dimensions-chart p{color:#5f6561;font-size:12px;letter-spacing:.2px;line-height:1.33;margin:4px 0 0}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__selectable .googlesitekit-chart__inner>div>div>div>svg>g>path,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__selectable .googlesitekit-chart__inner>div>div>div>svg>g>g{cursor:pointer}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__slice-selected .googlesitekit-chart--PieChart div.google-visualization-tooltip{pointer-events:auto;z-index:8}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart-title{color:#5f6561;font-size:12px;font-weight:500;left:50%;letter-spacing:.2px;max-width:80px;position:absolute;text-align:center;text-transform:capitalize;top:50%;transform:translate(-50%, -50%)}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart-title span{display:block;font-weight:400}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dimensions-chart-gathering-data{color:#cbd0d3;font-size:20px;left:50%;line-height:1.2;max-width:80px;position:absolute;text-align:center;top:50%;transform:translate(-50%, -50%)}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__tabs--small{text-align:center}@media(min-width: 600px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__tabs--small{display:none}}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__tabs--loading{display:flex;flex-direction:row;justify-content:center}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__tabs--loading .googlesitekit-preview-block{margin:0 10px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totals{margin-bottom:-24px}}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totals .googlesitekit-cta--error{height:auto;margin-top:16px}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__totals .googlesitekit-cta--error{margin-top:24px}}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__chart{min-height:368px;position:relative}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend{margin-top:-6px;text-align:center}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-slice{align-items:center;border-radius:4px;color:#333935;display:inline-flex;font-size:12px;font-weight:400;letter-spacing:.2px;margin:0 4px 0 0;padding:7px 4px;position:relative;text-transform:capitalize}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-slice:hover{text-decoration:none}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-slice:focus{outline:none}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__label{display:flex;flex-direction:column}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__label::after{content:attr(data-label);display:inline-flex;font-weight:500;height:0;visibility:hidden}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__dot{border-radius:50%;display:inline-block;height:12px;margin:0 4px 0 0;width:12px}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__underlay{display:block;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease-in-out;width:100%;z-index:1}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-active{font-weight:500}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-active .googlesitekit-widget--analyticsAllTraffic__underlay,.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-slice:hover .googlesitekit-widget--analyticsAllTraffic__underlay{opacity:.16}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-others{cursor:text}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend-others:hover .googlesitekit-widget--analyticsAllTraffic__underlay{opacity:0}.googlesitekit-plugin .googlesitekit-widget--analyticsAllTraffic__legend--single .googlesitekit-widget--analyticsAllTraffic__legend-slice:not(:first-child){display:none}.googlesitekit-plugin .googlesitekit-widget--adBlockerWarning{background-color:transparent;box-shadow:none}.googlesitekit-plugin .googlesitekit-align-self-center{align-self:center}.googlesitekit-plugin .googlesitekit-border-radius-round{border-radius:50%}@media(min-width: 600px)and (max-width: 783px){.googlesitekit-plugin .googlesitekit-border-radius-round--tablet{border-radius:50%}}@media(max-width: 599px){.googlesitekit-plugin .googlesitekit-border-radius-round--phone{border-radius:50%}}.googlesitekit-plugin .googlesitekit-display-block{display:block}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-desktop-display-none{display:none}}@media(max-width: 960px){.googlesitekit-plugin .googlesitekit-non-desktop-display-none{display:none}}.googlesitekit-plugin .googlesitekit-font-weight-bold{font-weight:700 !important}.googlesitekit-plugin .googlesitekit-margin-top-0{margin-top:0 !important}.googlesitekit-plugin .googlesitekit-margin-bottom-0{margin-bottom:0 !important}.googlesitekit-plugin .googlesitekit-margin-left-1rem{margin-left:1rem}.googlesitekit-plugin .googlesitekit-margin-left-auto{margin-left:auto}.googlesitekit-plugin .googlesitekit-margin-right-0{margin-right:0}.googlesitekit-plugin .googlesitekit-overflow-auto{overflow:auto}.googlesitekit-plugin .googlesitekit-overflow-wrap-break-word{word-wrap:break-word}.googlesitekit-plugin .googlesitekit-padding-bottom-0{padding-bottom:0}.googlesitekit-plugin .googlesitekit-text-align-center{text-align:center}.googlesitekit-plugin .googlesitekit-width-auto{width:auto} diff --git a/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-adminbar-css-c818e88b67a50dcb8813.min.css b/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-adminbar-css-c818e88b67a50dcb8813.min.css new file mode 100644 index 000000000..b45642586 --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-adminbar-css-c818e88b67a50dcb8813.min.css @@ -0,0 +1 @@ +:root{--reach-combobox: 1}.googlesitekit-plugin{color:#131418;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.43}.googlesitekit-plugin *,.googlesitekit-plugin *::before,.googlesitekit-plugin *::after{box-sizing:border-box}.googlesitekit-plugin svg{color:inherit}.googlesitekit-plugin svg:not(:root){overflow:hidden}.googlesitekit-plugin h1,.googlesitekit-plugin h2,.googlesitekit-plugin h3,.googlesitekit-plugin h4,.googlesitekit-plugin h5,.googlesitekit-plugin h6{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.16}.googlesitekit-plugin h1,.googlesitekit-plugin .googlesitekit-heading-1{font-size:32px;font-weight:400;line-height:1.25}.googlesitekit-plugin h2,.googlesitekit-plugin .googlesitekit-heading-2{font-size:28px;font-weight:400;line-height:1.28}.googlesitekit-plugin h3,.googlesitekit-plugin .googlesitekit-heading-3{font-size:24px;font-weight:400;line-height:1.33}.googlesitekit-plugin h4,.googlesitekit-plugin .googlesitekit-heading-4{font-size:20px;font-weight:700;line-height:1.2}.googlesitekit-plugin .googlesitekit-subheading-1{font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14}.googlesitekit-plugin .googlesitekit-subheading-2{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33}.googlesitekit-plugin .googlesitekit-nodata{display:none}.googlesitekit-plugin legend,.googlesitekit-plugin p:not([class*=mdc-]){font-size:14px;letter-spacing:.25px}.googlesitekit-plugin a{color:#108080;text-decoration:none}.googlesitekit-plugin a:hover{text-decoration:underline}.googlesitekit-plugin a:focus{box-shadow:none;outline:1px dotted #000;outline-offset:3px}.googlesitekit-plugin button{background:none;border:none;border-radius:100px;color:#108080;text-decoration:none}.googlesitekit-plugin button:hover{text-decoration:underline}.googlesitekit-plugin button:focus{outline:1px dotted #000;outline-offset:6px}.googlesitekit-plugin legend{line-height:1.5;margin:1em 0}.googlesitekit-plugin .screen-reader-only{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}@media(max-width: 599px){.googlesitekit-plugin .hidden-on-mobile{display:none}}.googlesitekit-hidden{display:none !important}.mdc-button,#wpadminbar .googlesitekit-adminbar .mdc-button{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:2.25rem;font-weight:500;letter-spacing:.0892857143em;text-decoration:none;text-transform:uppercase;padding:0 8px 0 8px;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;height:36px;border:none;outline:none;line-height:inherit;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;overflow:hidden;vertical-align:middle;border-radius:4px}.mdc-button::-moz-focus-inner,#wpadminbar .googlesitekit-adminbar .mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active,#wpadminbar .googlesitekit-adminbar .mdc-button:active{outline:none}.mdc-button:hover,#wpadminbar .googlesitekit-adminbar .mdc-button:hover{cursor:pointer}.mdc-button:disabled,#wpadminbar .googlesitekit-adminbar .mdc-button:disabled{background-color:transparent;color:rgba(0,0,0,.37);cursor:default;pointer-events:none}.mdc-button.mdc-button--dense,#wpadminbar .googlesitekit-adminbar .mdc-button--dense.mdc-button{border-radius:4px}.mdc-button:not(:disabled),#wpadminbar .googlesitekit-adminbar .mdc-button:not(:disabled){background-color:transparent}.mdc-button .mdc-button__icon,#wpadminbar .googlesitekit-adminbar .mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;width:18px;height:18px;font-size:18px;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,[dir=rtl] #wpadminbar .googlesitekit-adminbar .mdc-button .mdc-button__icon,#wpadminbar .googlesitekit-adminbar [dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl],#wpadminbar .googlesitekit-adminbar .mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button:not(:disabled),#wpadminbar .googlesitekit-adminbar .mdc-button:not(:disabled){color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--raised .mdc-button__icon,#wpadminbar .googlesitekit-adminbar .mdc-button--raised .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon,.mdc-button--outlined .mdc-button__icon{margin-left:-4px;margin-right:8px}[dir=rtl] .mdc-button--raised .mdc-button__icon,[dir=rtl] #wpadminbar .googlesitekit-adminbar .mdc-button--raised .mdc-button__icon,#wpadminbar .googlesitekit-adminbar [dir=rtl] .mdc-button--raised .mdc-button__icon,.mdc-button--raised .mdc-button__icon[dir=rtl],#wpadminbar .googlesitekit-adminbar .mdc-button--raised .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__icon,.mdc-button--outlined .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mdc-button--raised .mdc-button__label+.mdc-button__icon,#wpadminbar .googlesitekit-adminbar .mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mdc-button--raised .mdc-button__label+.mdc-button__icon,[dir=rtl] #wpadminbar .googlesitekit-adminbar .mdc-button--raised .mdc-button__label+.mdc-button__icon,#wpadminbar .googlesitekit-adminbar [dir=rtl] .mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--raised .mdc-button__label+.mdc-button__icon[dir=rtl],#wpadminbar .googlesitekit-adminbar .mdc-button--raised .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mdc-button--raised,#wpadminbar .googlesitekit-adminbar .mdc-button--raised,.mdc-button--unelevated{padding:0 16px 0 16px}.mdc-button--raised:disabled,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:disabled,.mdc-button--unelevated:disabled{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.37)}.mdc-button--raised:not(:disabled),#wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-button--raised:not(:disabled),#wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-button--raised:not(:disabled),#wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){color:#fff;color:#fff;color:var(--mdc-theme-on-primary, #fff)}.mdc-button--raised,#wpadminbar .googlesitekit-adminbar .mdc-button--raised{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2),0px 2px 2px 0px rgba(0, 0, 0, 0.14),0px 1px 5px 0px rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--raised:hover,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:hover,.mdc-button--raised:focus,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:focus{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0,0,0,.12)}.mdc-button--raised:active,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:active{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0,0,0,.12)}.mdc-button--raised:disabled,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:disabled{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2),0px 0px 0px 0px rgba(0, 0, 0, 0.14),0px 0px 0px 0px rgba(0,0,0,.12)}.mdc-button--outlined{border-style:solid;padding:0 15px 0 15px;border-width:1px}.mdc-button--outlined:disabled{border-color:rgba(0,0,0,.37)}.mdc-button--outlined:not(:disabled){border-color:#3c7251;border-color:#3c7251;border-color:var(--mdc-theme-primary, #3c7251)}.mdc-button--dense{height:32px;font-size:.8125rem}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:0;opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:0;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface--test-edge-var-bug{--mdc-ripple-surface-test-edge-var: 1px solid #000;visibility:hidden}.mdc-ripple-surface--test-edge-var-bug::before{border:var(--mdc-ripple-surface-test-edge-var)}.mdc-button,#wpadminbar .googlesitekit-adminbar .mdc-button{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-button::before,#wpadminbar .googlesitekit-adminbar .mdc-button::before,.mdc-button::after,#wpadminbar .googlesitekit-adminbar .mdc-button::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-button::before,#wpadminbar .googlesitekit-adminbar .mdc-button::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-button.mdc-ripple-upgraded::before,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded.mdc-button::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button.mdc-ripple-upgraded::after,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded.mdc-button::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-button.mdc-ripple-upgraded--unbounded::after,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded--unbounded.mdc-button::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-button.mdc-ripple-upgraded--foreground-activation::after,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded--foreground-activation.mdc-button::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-button.mdc-ripple-upgraded--foreground-deactivation::after,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded--foreground-deactivation.mdc-button::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button::before,#wpadminbar .googlesitekit-adminbar .mdc-button::before,.mdc-button::after,#wpadminbar .googlesitekit-adminbar .mdc-button::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-button.mdc-ripple-upgraded::after,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded.mdc-button::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-button::before,#wpadminbar .googlesitekit-adminbar .mdc-button::before,.mdc-button::after,#wpadminbar .googlesitekit-adminbar .mdc-button::after{background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-button::before,#wpadminbar .googlesitekit-adminbar .mdc-button::before,.mdc-button::after,#wpadminbar .googlesitekit-adminbar .mdc-button::after{background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-button:hover::before,#wpadminbar .googlesitekit-adminbar .mdc-button:hover::before{opacity:.04}.mdc-button:not(.mdc-ripple-upgraded):focus::before,#wpadminbar .googlesitekit-adminbar .mdc-button:not(.mdc-ripple-upgraded):focus::before,.mdc-button.mdc-ripple-upgraded--background-focused::before,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded--background-focused.mdc-button::before{transition-duration:75ms;opacity:.12}.mdc-button:not(.mdc-ripple-upgraded)::after,#wpadminbar .googlesitekit-adminbar .mdc-button:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-button:not(.mdc-ripple-upgraded):active::after,#wpadminbar .googlesitekit-adminbar .mdc-button:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-button.mdc-ripple-upgraded,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded.mdc-button{--mdc-ripple-fg-opacity: 0.12}.mdc-button--raised::before,#wpadminbar .googlesitekit-adminbar .mdc-button--raised::before,.mdc-button--raised::after,#wpadminbar .googlesitekit-adminbar .mdc-button--raised::after,.mdc-button--unelevated::before,.mdc-button--unelevated::after{background-color:#fff}@supports not (-ms-ime-align: auto){.mdc-button--raised::before,#wpadminbar .googlesitekit-adminbar .mdc-button--raised::before,.mdc-button--raised::after,#wpadminbar .googlesitekit-adminbar .mdc-button--raised::after,.mdc-button--unelevated::before,.mdc-button--unelevated::after{background-color:#fff;background-color:var(--mdc-theme-on-primary, #fff)}}.mdc-button--raised:hover::before,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:hover::before,.mdc-button--unelevated:hover::before{opacity:.08}.mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,.mdc-button--raised.mdc-ripple-upgraded--background-focused::before,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded--background-focused.mdc-button--raised::before,.mdc-button--unelevated:not(.mdc-ripple-upgraded):focus::before,.mdc-button--unelevated.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.mdc-button--raised:not(.mdc-ripple-upgraded)::after,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(.mdc-ripple-upgraded)::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-button--raised:not(.mdc-ripple-upgraded):active::after,#wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(.mdc-ripple-upgraded):active::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.mdc-button--raised.mdc-ripple-upgraded,#wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded.mdc-button--raised,.mdc-button--unelevated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}:root{--mdc-layout-grid-margin-desktop: 24px;--mdc-layout-grid-gutter-desktop: 24px;--mdc-layout-grid-column-width-desktop: 72px;--mdc-layout-grid-margin-tablet: 16px;--mdc-layout-grid-gutter-tablet: 16px;--mdc-layout-grid-column-width-tablet: 72px;--mdc-layout-grid-margin-phone: 16px;--mdc-layout-grid-gutter-phone: 16px;--mdc-layout-grid-column-width-phone: 72px}@media(min-width: 961px){.mdc-layout-grid,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid{box-sizing:border-box;margin:0 auto;padding:24px;padding:24px;padding:var(--mdc-layout-grid-margin-desktop, 24px)}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid{box-sizing:border-box;margin:0 auto;padding:16px;padding:16px;padding:var(--mdc-layout-grid-margin-tablet, 16px)}}@media(max-width: 600px){.mdc-layout-grid,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid{box-sizing:border-box;margin:0 auto;padding:16px;padding:16px;padding:var(--mdc-layout-grid-margin-phone, 16px)}}@media(min-width: 961px){.mdc-layout-grid__inner,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__inner,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__inner{display:flex;flex-flow:row wrap;align-items:stretch;margin:-12px;margin:calc(24px / 2 * -1);margin:calc(var(--mdc-layout-grid-gutter-desktop, 24px) / 2 * -1)}@supports(display: grid){.mdc-layout-grid__inner,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__inner,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__inner{display:grid;margin:0;grid-gap:24px;grid-gap:24px;grid-gap:var(--mdc-layout-grid-gutter-desktop, 24px);grid-template-columns:repeat(12, minmax(0, 1fr))}}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid__inner,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__inner,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__inner{display:flex;flex-flow:row wrap;align-items:stretch;margin:-8px;margin:calc(16px / 2 * -1);margin:calc(var(--mdc-layout-grid-gutter-tablet, 16px) / 2 * -1)}@supports(display: grid){.mdc-layout-grid__inner,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__inner,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__inner{display:grid;margin:0;grid-gap:16px;grid-gap:16px;grid-gap:var(--mdc-layout-grid-gutter-tablet, 16px);grid-template-columns:repeat(8, minmax(0, 1fr))}}}@media(max-width: 600px){.mdc-layout-grid__inner,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__inner,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__inner{display:flex;flex-flow:row wrap;align-items:stretch;margin:-8px;margin:calc(16px / 2 * -1);margin:calc(var(--mdc-layout-grid-gutter-phone, 16px) / 2 * -1)}@supports(display: grid){.mdc-layout-grid__inner,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__inner,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__inner{display:grid;margin:0;grid-gap:16px;grid-gap:16px;grid-gap:var(--mdc-layout-grid-gutter-phone, 16px);grid-template-columns:repeat(4, minmax(0, 1fr))}}}@media(min-width: 961px){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px));box-sizing:border-box;margin:12px;margin:calc(24px / 2);margin:calc(var(--mdc-layout-grid-gutter-desktop, 24px) / 2)}@supports(display: grid){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{width:auto;grid-column-end:span 4}}@supports(display: grid){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{margin:0}}.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-desktop{width:calc(8.3333333333% - 24px);width:calc(8.3333333333% - 24px);width:calc(8.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-desktop{width:auto;grid-column-end:span 1}}.mdc-layout-grid__cell--span-2,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-desktop{width:calc(16.6666666667% - 24px);width:calc(16.6666666667% - 24px);width:calc(16.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-2,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-desktop{width:auto;grid-column-end:span 2}}.mdc-layout-grid__cell--span-3,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-desktop,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3-desktop{width:calc(25% - 24px);width:calc(25% - 24px);width:calc(25% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-3,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-desktop,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3-desktop{width:auto;grid-column-end:span 3}}.mdc-layout-grid__cell--span-4,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-desktop{width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - 24px);width:calc(33.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-4,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-desktop{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-desktop{width:calc(41.6666666667% - 24px);width:calc(41.6666666667% - 24px);width:calc(41.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-desktop{width:auto;grid-column-end:span 5}}.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-desktop,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-6-desktop{width:calc(50% - 24px);width:calc(50% - 24px);width:calc(50% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-desktop,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-6-desktop{width:auto;grid-column-end:span 6}}.mdc-layout-grid__cell--span-7,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-desktop,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7-desktop{width:calc(58.3333333333% - 24px);width:calc(58.3333333333% - 24px);width:calc(58.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-7,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-desktop,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7-desktop{width:auto;grid-column-end:span 7}}.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-desktop{width:calc(66.6666666667% - 24px);width:calc(66.6666666667% - 24px);width:calc(66.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-desktop{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-desktop{width:calc(75% - 24px);width:calc(75% - 24px);width:calc(75% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-desktop{width:auto;grid-column-end:span 9}}.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-desktop{width:calc(83.3333333333% - 24px);width:calc(83.3333333333% - 24px);width:calc(83.3333333333% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-desktop{width:auto;grid-column-end:span 10}}.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-desktop{width:calc(91.6666666667% - 24px);width:calc(91.6666666667% - 24px);width:calc(91.6666666667% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-desktop{width:auto;grid-column-end:span 11}}.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-desktop{width:calc(100% - 24px);width:calc(100% - 24px);width:calc(100% - var(--mdc-layout-grid-gutter-desktop, 24px))}@supports(display: grid){.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-desktop{width:auto;grid-column-end:span 12}}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{width:calc(50% - 16px);width:calc(50% - 16px);width:calc(50% - var(--mdc-layout-grid-gutter-tablet, 16px));box-sizing:border-box;margin:8px;margin:calc(16px / 2);margin:calc(var(--mdc-layout-grid-gutter-tablet, 16px) / 2)}@supports(display: grid){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{width:auto;grid-column-end:span 4}}@supports(display: grid){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{margin:0}}.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-tablet{width:calc(12.5% - 16px);width:calc(12.5% - 16px);width:calc(12.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-tablet{width:auto;grid-column-end:span 1}}.mdc-layout-grid__cell--span-2,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-tablet,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2-tablet{width:calc(25% - 16px);width:calc(25% - 16px);width:calc(25% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-2,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-tablet,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2-tablet{width:auto;grid-column-end:span 2}}.mdc-layout-grid__cell--span-3,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-tablet{width:calc(37.5% - 16px);width:calc(37.5% - 16px);width:calc(37.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-3,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-tablet{width:auto;grid-column-end:span 3}}.mdc-layout-grid__cell--span-4,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-tablet,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4-tablet{width:calc(50% - 16px);width:calc(50% - 16px);width:calc(50% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-4,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-tablet,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4-tablet{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-tablet{width:calc(62.5% - 16px);width:calc(62.5% - 16px);width:calc(62.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-tablet{width:auto;grid-column-end:span 5}}.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-tablet{width:calc(75% - 16px);width:calc(75% - 16px);width:calc(75% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-tablet{width:auto;grid-column-end:span 6}}.mdc-layout-grid__cell--span-7,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-tablet{width:calc(87.5% - 16px);width:calc(87.5% - 16px);width:calc(87.5% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-7,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-tablet{width:auto;grid-column-end:span 7}}.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-tablet,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-8-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-tablet,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-8-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-tablet{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-tablet{width:auto;grid-column-end:span 8}}.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-tablet,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-tablet, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-tablet,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell{width:auto;grid-column-end:span 8}}}@media(max-width: 600px){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px));box-sizing:border-box;margin:8px;margin:calc(16px / 2);margin:calc(var(--mdc-layout-grid-gutter-phone, 16px) / 2)}@supports(display: grid){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{width:auto;grid-column-end:span 4}}@supports(display: grid){.mdc-layout-grid__cell,#wpadminbar.nojs .googlesitekit-noscript .mdc-layout-grid__cell,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell{margin:0}}.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-phone{width:calc(25% - 16px);width:calc(25% - 16px);width:calc(25% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-1,.mdc-layout-grid__cell--span-1-phone{width:auto;grid-column-end:span 1}}.mdc-layout-grid__cell--span-2,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-phone{width:calc(50% - 16px);width:calc(50% - 16px);width:calc(50% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-2,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-2,.mdc-layout-grid__cell--span-2-phone{width:auto;grid-column-end:span 2}}.mdc-layout-grid__cell--span-3,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-phone{width:calc(75% - 16px);width:calc(75% - 16px);width:calc(75% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-3,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-3,.mdc-layout-grid__cell--span-3-phone{width:auto;grid-column-end:span 3}}.mdc-layout-grid__cell--span-4,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-4,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-4,.mdc-layout-grid__cell--span-4-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-5,.mdc-layout-grid__cell--span-5-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-6,.mdc-layout-grid__cell--span-6-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-7,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-7,#wpadminbar .googlesitekit-adminbar .mdc-layout-grid__cell--span-7,.mdc-layout-grid__cell--span-7-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-8,.mdc-layout-grid__cell--span-8-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-9,.mdc-layout-grid__cell--span-9-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-10,.mdc-layout-grid__cell--span-10-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-11,.mdc-layout-grid__cell--span-11-phone{width:auto;grid-column-end:span 4}}.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-phone{width:calc(100% - 16px);width:calc(100% - 16px);width:calc(100% - var(--mdc-layout-grid-gutter-phone, 16px))}@supports(display: grid){.mdc-layout-grid__cell--span-12,.mdc-layout-grid__cell--span-12-phone{width:auto;grid-column-end:span 4}}}.mdc-layout-grid__cell--order-1{order:1}.mdc-layout-grid__cell--order-2{order:2}.mdc-layout-grid__cell--order-3{order:3}.mdc-layout-grid__cell--order-4{order:4}.mdc-layout-grid__cell--order-5{order:5}.mdc-layout-grid__cell--order-6{order:6}.mdc-layout-grid__cell--order-7{order:7}.mdc-layout-grid__cell--order-8{order:8}.mdc-layout-grid__cell--order-9{order:9}.mdc-layout-grid__cell--order-10{order:10}.mdc-layout-grid__cell--order-11{order:11}.mdc-layout-grid__cell--order-12{order:12}.mdc-layout-grid__cell--align-top{align-self:flex-start}@supports(display: grid){.mdc-layout-grid__cell--align-top{align-self:start}}.mdc-layout-grid__cell--align-middle{align-self:center}.mdc-layout-grid__cell--align-bottom{align-self:flex-end}@supports(display: grid){.mdc-layout-grid__cell--align-bottom{align-self:end}}@media(min-width: 961px){.mdc-layout-grid--fixed-column-width{width:1176px;width:calc( 72px * 12 + 24px * 11 + 24px * 2 );width:calc( var(--mdc-layout-grid-column-width-desktop, 72px) * 12 + var(--mdc-layout-grid-gutter-desktop, 24px) * 11 + var(--mdc-layout-grid-margin-desktop, 24px) * 2 )}}@media(min-width: 601px)and (max-width: 960px){.mdc-layout-grid--fixed-column-width{width:720px;width:calc( 72px * 8 + 16px * 7 + 16px * 2 );width:calc( var(--mdc-layout-grid-column-width-tablet, 72px) * 8 + var(--mdc-layout-grid-gutter-tablet, 16px) * 7 + var(--mdc-layout-grid-margin-tablet, 16px) * 2 )}}@media(max-width: 600px){.mdc-layout-grid--fixed-column-width{width:368px;width:calc( 72px * 4 + 16px * 3 + 16px * 2 );width:calc( var(--mdc-layout-grid-column-width-phone, 72px) * 4 + var(--mdc-layout-grid-gutter-phone, 16px) * 3 + var(--mdc-layout-grid-margin-phone, 16px) * 2 )}}.mdc-layout-grid--align-left{margin-right:auto;margin-left:0}.mdc-layout-grid--align-right{margin-right:0;margin-left:auto}@keyframes primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes buffering{to{transform:translateX(-10px)}}@keyframes primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes buffering-reverse{to{transform:translateX(10px)}}.mdc-linear-progress,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress{position:relative;width:100%;height:4px;transform:translateZ(0);transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);overflow:hidden}.mdc-linear-progress__bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__bar{position:absolute;width:100%;height:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;height:100%;animation:none}.mdc-linear-progress__buffering-dots,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__buffering-dots{position:absolute;width:100%;height:100%;animation:buffering 250ms infinite linear;background-repeat:repeat-x;background-size:10px 4px}.mdc-linear-progress__buffer,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__buffer{position:absolute;width:100%;height:100%;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__secondary-bar{visibility:hidden}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,.mdc-linear-progress--indeterminate #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar,.mdc-linear-progress--indeterminate #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__primary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%;animation:primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner,.mdc-linear-progress--indeterminate #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar,.mdc-linear-progress--indeterminate #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__secondary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;animation:secondary-indeterminate-translate 2s infinite linear;visibility:visible}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner,.mdc-linear-progress--indeterminate #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:secondary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--reversed .mdc-linear-progress__bar,.mdc-linear-progress--reversed #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--reversed .mdc-linear-progress__bar,.mdc-linear-progress--reversed .mdc-linear-progress__buffer,.mdc-linear-progress--reversed #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__buffer,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--reversed .mdc-linear-progress__buffer{right:0;transform-origin:center right}.mdc-linear-progress--reversed .mdc-linear-progress__primary-bar,.mdc-linear-progress--reversed #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__primary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--reversed .mdc-linear-progress__primary-bar{animation-name:primary-indeterminate-translate-reverse}.mdc-linear-progress--reversed .mdc-linear-progress__secondary-bar,.mdc-linear-progress--reversed #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__secondary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--reversed .mdc-linear-progress__secondary-bar{animation-name:secondary-indeterminate-translate-reverse}.mdc-linear-progress--reversed .mdc-linear-progress__buffering-dots,.mdc-linear-progress--reversed #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__buffering-dots,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--reversed .mdc-linear-progress__buffering-dots{animation:buffering-reverse 250ms infinite linear}.mdc-linear-progress--closed{opacity:0}.mdc-linear-progress__bar-inner,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__bar-inner{background-color:#3c7251;background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}.mdc-linear-progress__buffering-dots,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__buffering-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='%23e6e6e6'/%3E%3C/svg%3E")}.mdc-linear-progress__buffer,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress__buffer{background-color:#e6e6e6}.mdc-linear-progress--indeterminate.mdc-linear-progress--reversed .mdc-linear-progress__primary-bar,.mdc-linear-progress--indeterminate.mdc-linear-progress--reversed #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__primary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--indeterminate.mdc-linear-progress--reversed .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress--indeterminate.mdc-linear-progress--reversed .mdc-linear-progress__secondary-bar,.mdc-linear-progress--indeterminate.mdc-linear-progress--reversed #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__secondary-bar,#wpadminbar .googlesitekit-adminbar .mdc-linear-progress--indeterminate.mdc-linear-progress--reversed .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.googlesitekit-plugin .mdc-button,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button{box-shadow:none;text-transform:none}.googlesitekit-plugin .mdc-button:not(:disabled),.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button:not(:disabled),#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button:not(:disabled){color:#3c7251}@media(max-width: 960px){.googlesitekit-plugin .mdc-button,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button{min-width:auto}}.googlesitekit-plugin .mdc-button--raised,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised{border-radius:100px;box-shadow:none;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;height:auto;letter-spacing:normal;min-height:40px;padding-bottom:8px;padding-top:8px;text-align:center}.googlesitekit-plugin .mdc-button--raised:not(:disabled),.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(:disabled),#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:not(:disabled){background-color:#3c7251}.googlesitekit-plugin .mdc-button--raised:not(:disabled),.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(:disabled),#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised::before,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin .mdc-button--raised::after,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised::after,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised::before,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin .mdc-button--raised::after,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised::after,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--raised:hover::before,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:hover::before,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--raised.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded--background-focused.mdc-button--raised::before,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-ripple-upgraded--background-focused.mdc-button--raised::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(.mdc-ripple-upgraded)::after,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:not(.mdc-ripple-upgraded):active::after,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--raised.mdc-ripple-upgraded,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-ripple-upgraded.mdc-button--raised,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-ripple-upgraded.mdc-button--raised{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button--raised.mdc-button--dense,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--dense.mdc-button--raised,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--dense.mdc-button--raised{border-radius:100px}.googlesitekit-plugin .mdc-button--raised:hover,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:hover,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:hover{text-decoration:none}.googlesitekit-plugin .mdc-button--raised:focus,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button--raised:focus,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button--raised:focus{outline:none}.googlesitekit-plugin .mdc-button--danger:not(:disabled){background-color:#ac4220}.googlesitekit-plugin .mdc-button--danger:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--danger::before,.googlesitekit-plugin .mdc-button--danger::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--danger::before,.googlesitekit-plugin .mdc-button--danger::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--danger:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--danger.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--danger.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button--dropdown{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20viewBox%3D%220%200%2012%208%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.6.6L12%202%206%208%200%202%201.4.6%206%205.2z%22%20fill%3D%22%23757575%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:calc(100% - 8px) center;background-repeat:no-repeat;background-size:9px 6px;letter-spacing:normal;padding-right:12px;text-transform:none}.googlesitekit-plugin .mdc-button--dropdown:not(:disabled){color:#131418}@media(min-width: 600px){.googlesitekit-plugin .mdc-button--dropdown{padding-right:25px}}.googlesitekit-plugin .mdc-button--dropdown:hover,.googlesitekit-plugin .mdc-button--dropdown:active,.googlesitekit-plugin .mdc-button--dropdown:focus{text-decoration:none}.googlesitekit-plugin .mdc-button--dropdown:hover:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:active:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:focus:not(:disabled){background-color:#ebeef0}.googlesitekit-plugin .mdc-button--dropdown:hover:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:active:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:focus:not(:disabled){color:rgba(0,0,0,.87);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87))}.googlesitekit-plugin .mdc-button--dropdown:hover::before,.googlesitekit-plugin .mdc-button--dropdown:hover::after,.googlesitekit-plugin .mdc-button--dropdown:active::before,.googlesitekit-plugin .mdc-button--dropdown:active::after,.googlesitekit-plugin .mdc-button--dropdown:focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus::after{background-color:rgba(0,0,0,.87)}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--dropdown:hover::before,.googlesitekit-plugin .mdc-button--dropdown:hover::after,.googlesitekit-plugin .mdc-button--dropdown:active::before,.googlesitekit-plugin .mdc-button--dropdown:active::after,.googlesitekit-plugin .mdc-button--dropdown:focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus::after{background-color:rgba(0, 0, 0, 0.87);background-color:var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87))}}.googlesitekit-plugin .mdc-button--dropdown:hover:hover::before,.googlesitekit-plugin .mdc-button--dropdown:active:hover::before,.googlesitekit-plugin .mdc-button--dropdown:focus:hover::before{opacity:.04}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:hover.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:active.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-button--dropdown:hover.mdc-ripple-upgraded,.googlesitekit-plugin .mdc-button--dropdown:active.mdc-ripple-upgraded,.googlesitekit-plugin .mdc-button--dropdown:focus.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}@media(max-width: 599px){.googlesitekit-plugin .mdc-button--dropdown{background-image:none}}@media(max-width: 599px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}}@media(min-width: 600px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(min-width: 960px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:300px}}@media(min-width: 1280px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:450px}}.googlesitekit-plugin .mdc-button--inverse:not(:disabled){background-color:#161b18}.googlesitekit-plugin .mdc-button--inverse:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--inverse::before,.googlesitekit-plugin .mdc-button--inverse::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--inverse::before,.googlesitekit-plugin .mdc-button--inverse::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--inverse:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--inverse.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--inverse.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button .mdc-button__icon--image,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button .mdc-button__icon--image,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button .mdc-button__icon--image{border-radius:50%;display:block;height:18px;width:18px}.googlesitekit-plugin .mdc-button .mdc-button__trailing-icon,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-button .mdc-button__trailing-icon,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-button .mdc-button__trailing-icon{margin-left:8px}.googlesitekit-plugin .mdc-linear-progress,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-linear-progress,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-linear-progress{margin:32px 0}.googlesitekit-plugin .mdc-linear-progress .mdc-linear-progress__bar-inner,.googlesitekit-plugin .mdc-linear-progress #wpadminbar .googlesitekit-adminbar .mdc-linear-progress__bar-inner,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-linear-progress .mdc-linear-progress__bar-inner,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-linear-progress .mdc-linear-progress__bar-inner{background-color:#3c7251}@media(min-width: 960px){.googlesitekit-plugin .mdc-linear-progress,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .mdc-linear-progress,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .mdc-linear-progress{margin:48px 0}}.googlesitekit-plugin .mdc-linear-progress--small{max-width:150px}.googlesitekit-plugin .mdc-linear-progress--compress{margin:0}#wpadminbar .googlesitekit-adminbar *{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:normal}#wpadminbar .googlesitekit-adminbar .mdc-linear-progress{margin:32px 0}#wpadminbar .googlesitekit-adminbar .mdc-linear-progress .mdc-linear-progress__bar-inner{background-color:#446199}@media(min-width: 960px){#wpadminbar .googlesitekit-adminbar .mdc-linear-progress{margin:48px 0}}#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link{height:auto}#wpadminbar .googlesitekit-adminbar .googlesitekit-cta{box-sizing:border-box}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-cta-link{background-color:transparent;font-size:16px;letter-spacing:.5px}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta strong{font-weight:600}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .mdc-button__label{font-weight:400;letter-spacing:1.25px}#wpadminbar.nojs .googlesitekit-noscript{border-left:4px solid #fece72;display:none;left:0;position:absolute;top:32px;width:100%}#wpadminbar.nojs .googlesitekit-wp-adminbar:hover .googlesitekit-noscript{display:block}#wpadminbar .googlesitekit-plugin.ab-sub-wrapper{left:0;width:100%}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar{background:#fff;color:#000;left:0;padding:0;position:absolute;right:0;top:46px;z-index:9999}@media(min-width: 783px){#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar{top:32px}}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar.--has-error{display:none}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__subtitle{color:#5f6561;font-size:16px;letter-spacing:.5px}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__title{color:#333935;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:20px;font-weight:500;margin:5px 0 0}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__title .googlesitekit-adminbar__title--date-range{color:#5f6561;font-size:14px;letter-spacing:.25px}#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__link{display:none}#wpadminbar:not(.mobile) .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__link{display:inline-block}#wpadminbar:not(.mobile) .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__link--mobile{display:none}@media(min-width: 960px){#wpadminbar.mobile .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__link{display:inline-block}}#wpadminbar.mobile .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__link--mobile{display:inline-block;padding-left:16px;position:relative;top:-16px}@media(min-width: 960px){#wpadminbar.mobile .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-adminbar__link--mobile{display:none}}#wpadminbar.mobile .googlesitekit-plugin .googlesitekit-adminbar .mdc-layout-grid{pointer-events:none}@media(min-width: 960px){#wpadminbar.mobile .googlesitekit-plugin .googlesitekit-adminbar .mdc-layout-grid{pointer-events:auto}}#wpadminbar .googlesitekit-wp-adminbar{display:block;position:static}#wpadminbar .googlesitekit-wp-adminbar .ab-item{display:block;float:left;height:46px;position:static;width:52px}@media(min-width: 783px){#wpadminbar .googlesitekit-wp-adminbar .ab-item{height:auto;width:auto}}#wpadminbar .googlesitekit-wp-adminbar .googlesitekit-wp-adminbar__icon{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2243%22%20height%3D%2244%22%20viewBox%3D%220%200%2043%2044%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cpath%20d%3D%22M42.5%2018H22v8.5h11.8C32.7%2031.9%2028.1%2035%2022%2035c-7.2%200-13-5.8-13-13S14.8%209%2022%209c3.1%200%205.9%201.1%208.1%202.9l6.4-6.4C32.6%202.1%2027.6%200%2022%200%209.8%200%200%209.8%200%2022s9.8%2022%2022%2022c11%200%2021-8%2021-22%200-1.3-.2-2.7-.5-4z%22%20id%3D%22a%22%2F%3E%3C%2Fdefs%3E%3Cuse%20fill%3D%22%23FFF%22%20xlink%3Ahref%3D%22%23a%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-size:contain;display:block;height:26px;margin:10px auto;opacity:.6;padding:0;position:relative;width:26px}@media(min-width: 783px){#wpadminbar .googlesitekit-wp-adminbar .googlesitekit-wp-adminbar__icon{float:left;height:15px;margin:8px 8px 5px 0;width:15px}}#wpadminbar .googlesitekit-wp-adminbar .googlesitekit-wp-adminbar__label{display:none}@media(min-width: 783px){#wpadminbar .googlesitekit-wp-adminbar .googlesitekit-wp-adminbar__label{display:inline}}#wpadminbar .ab-top-menu>.googlesitekit-wp-adminbar.hover>.ab-item,#wpadminbar:not(.mobile) .quicklinks .ab-top-menu>.googlesitekit-wp-adminbar:hover>.ab-item,#wpadminbar:not(.mobile) .quicklinks .ab-top-menu>.googlesitekit-wp-adminbar>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>.googlesitekit-wp-adminbar>.ab-item:focus{background-color:#fff;color:#131418;position:relative;z-index:10000}#wpadminbar .googlesitekit-wp-adminbar.hover .googlesitekit-wp-adminbar__icon,#wpadminbar:not(.mobile) .googlesitekit-wp-adminbar:hover .googlesitekit-wp-adminbar__icon,#wpadminbar:not(.mobile) .googlesitekit-wp-adminbar .ab-item:focus .googlesitekit-wp-adminbar__icon{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDMiIGhlaWdodD0iNDQiIHZpZXdCb3g9IjAgMCA0MyA0NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggZD0iTTQyLjUgMThIMjJ2OC41aDExLjhDMzIuNyAzMS45IDI4LjEgMzUgMjIgMzVjLTcuMiAwLTEzLTUuOC0xMy0xM1MxNC44IDkgMjIgOWMzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzMi42IDIuMSAyNy42IDAgMjIgMCA5LjggMCAwIDkuOCAwIDIyczkuOCAyMiAyMiAyMmMxMSAwIDIxLTggMjEtMjIgMC0xLjMtLjItMi43LS41LTR6IiBpZD0iYSIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjxwYXRoIGZpbGw9IiNGQkJDMDUiIG1hc2s9InVybCgjYikiIGQ9Ik0tMiAzNVY5bDE3IDEzeiIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIG1hc2s9InVybCgjYikiIGQ9Ik0tMiAzNWwzMC0yMyA3LjkgMUw0Ni0ydjQ4SC0yeiIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIG1hc2s9InVybCgjYikiIGQ9Ik00NiA0NkwxNSAyMmwtNC0zTDQ2IDl6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgbWFzaz0idXJsKCNiKSIgZD0iTS0yIDlsMTcgMTMgNy02LjFMNDYgMTJWLTJILTJ6Ii8+PC9nPjwvc3ZnPg==");opacity:1}.googlesitekit-plugin .googlesitekit-analytics-cta,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta{--cta-analytics-gap: 16px;--cta-analytics-gap-narrow: calc(var(--cta-analytics-gap) / 2);background-color:#ebeef0;display:flex;flex-direction:column;grid-gap:var(--cta-analytics-gap);gap:var(--cta-analytics-gap);padding:var(--cta-analytics-gap)}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta{--cta-analytics-gap: 24px;flex-direction:row-reverse}}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta--description,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta--description{color:#161b18;font-size:14px;letter-spacing:.25px;margin:0}.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .mdc-button,.googlesitekit-plugin .googlesitekit-analytics-cta #wpadminbar .googlesitekit-adminbar .mdc-button,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{margin-top:var(--cta-analytics-gap-narrow);width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .mdc-button,.googlesitekit-plugin .googlesitekit-analytics-cta #wpadminbar .googlesitekit-adminbar .mdc-button,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{width:auto}}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .mdc-button,.googlesitekit-plugin .googlesitekit-analytics-cta #wpadminbar .googlesitekit-adminbar .mdc-button,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{margin-top:var(--cta-analytics-gap)}}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-cta--activate-analytics,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-cta--activate-analytics,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs{display:flex;grid-gap:var(--cta-analytics-gap);gap:var(--cta-analytics-gap)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph{background-color:#fff;border-radius:4px;display:flex;flex:1;flex-direction:column;padding:var(--cta-analytics-gap-narrow)}#dashboard-widgets .googlesitekit-plugin .googlesitekit-analytics-cta h3.googlesitekit-analytics-cta__preview-graph--title,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--title,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--title{color:#333935;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;letter-spacing:.2px;margin:0 0 auto;padding-bottom:var(--cta-analytics-gap-narrow)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--icons,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--icons{align-items:center;color:#cbd0d3;display:flex;grid-gap:4px;gap:4px;padding-top:var(--cta-analytics-gap-narrow)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--up-arrow,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--up-arrow{height:12px}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--bar,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--bar{background-color:#cbd0d3;border-radius:5px;height:8px;width:24px}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__details,#wpadminbar .googlesitekit-plugin .googlesitekit-adminbar .googlesitekit-analytics-cta .googlesitekit-analytics-cta__details{flex:1}}.googlesitekit-plugin .googlesitekit-change-arrow{--color-up: #4d760b;--color-down: #ac4220}.googlesitekit-plugin .googlesitekit-change-arrow--inverted-color{--color-up: #ac4220;--color-down: #4d760b}.googlesitekit-plugin .googlesitekit-change-arrow--up{color:var(--color-up)}.googlesitekit-plugin .googlesitekit-change-arrow--down{color:var(--color-up);transform:rotate(180deg)}.googlesitekit-plugin .googlesitekit-change-arrow--down path{fill:var(--color-down)}.googlesitekit-plugin .googlesitekit-cta,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta{background-color:#ebeef0;border-radius:16px;font-size:14px;height:100%;letter-spacing:.25px;line-height:1.43;padding:16px;width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-cta,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta{padding:24px}}.googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta--error,.googlesitekit-wp-dashboard .googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta--error,#wpadminbar .googlesitekit-adminbar .googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta--error{background-color:#fff}.googlesitekit-adminbar-modules .googlesitekit-plugin .googlesitekit-cta,.googlesitekit-adminbar-modules .googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta,#wpadminbar .googlesitekit-adminbar .googlesitekit-adminbar-modules .googlesitekit-plugin .googlesitekit-cta{padding:16px}.googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta,.googlesitekit-wp-dashboard .googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta,#wpadminbar .googlesitekit-adminbar .googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta{background-color:#ebeef0;box-sizing:border-box;height:auto;margin-top:12px;padding:12px}.googlesitekit-wp-dashboard .googlesitekit-wp-dashboard-stats__cta .googlesitekit-plugin .googlesitekit-cta,.googlesitekit-wp-dashboard .googlesitekit-wp-dashboard-stats__cta .googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta,#wpadminbar .googlesitekit-adminbar .googlesitekit-wp-dashboard .googlesitekit-wp-dashboard-stats__cta .googlesitekit-plugin .googlesitekit-cta{margin-top:0}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__title,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta .googlesitekit-cta__title,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__title,.googlesitekit-plugin .googlesitekit-cta #wpadminbar .googlesitekit-adminbar .googlesitekit-cta__title{color:#131418;font-size:14px;font-weight:500;margin:0 0 5px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-adminbar-modules .googlesitekit-cta__title,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta .googlesitekit-adminbar-modules .googlesitekit-cta__title,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta .googlesitekit-adminbar-modules .googlesitekit-cta__title,.googlesitekit-plugin .googlesitekit-cta .googlesitekit-adminbar-modules #wpadminbar .googlesitekit-adminbar .googlesitekit-cta__title{font-weight:700;letter-spacing:.5px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta .googlesitekit-cta__description,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description,.googlesitekit-plugin .googlesitekit-cta #wpadminbar .googlesitekit-adminbar .googlesitekit-cta__description{color:#131418;margin:0 0 20px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description p:first-child,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta .googlesitekit-cta__description p:first-child,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description p:first-child,.googlesitekit-plugin .googlesitekit-cta #wpadminbar .googlesitekit-adminbar .googlesitekit-cta__description p:first-child{margin-top:0}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta--error.googlesitekit-cta,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta--error.googlesitekit-cta{background-color:#ffc2ae}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error a,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta--error.googlesitekit-cta a,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta--error.googlesitekit-cta a,.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta__title,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta--error.googlesitekit-cta .googlesitekit-cta__title,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta--error.googlesitekit-cta .googlesitekit-cta__title,.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error #wpadminbar .googlesitekit-adminbar .googlesitekit-cta__title{color:#7a1e00}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta__description,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta--error.googlesitekit-cta .googlesitekit-cta__description,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta--error.googlesitekit-cta .googlesitekit-cta__description,.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error #wpadminbar .googlesitekit-adminbar .googlesitekit-cta__description{color:#7a1e00;word-break:break-word}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .mdc-button:not(:disabled),.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta--error.googlesitekit-cta .mdc-button:not(:disabled),#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta--error.googlesitekit-cta .mdc-button:not(:disabled),.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error #wpadminbar .googlesitekit-adminbar .mdc-button:not(:disabled){background-color:#ac4220;color:#fff}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta-link--external,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta--error.googlesitekit-cta .googlesitekit-cta-link--external,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta--error.googlesitekit-cta .googlesitekit-cta-link--external{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M11%2011H2V2h3V0H2a2%202%200%200%200-2%202v9a2%202%200%200%200%202%202h9c1.1%200%202-.9%202-2V8h-2v3z%22%20fill%3D%22%237a1e00%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20fill%3D%22%237a1e00%22%20d%3D%22M7%200h6v2H7zM11%202h2v4h-2z%22%2F%3E%3Cpath%20d%3D%22M11%202L5%208%22%20stroke%3D%22%237a1e00%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22square%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-plugin .googlesitekit-cta *:last-child,.googlesitekit-plugin #wpadminbar .googlesitekit-adminbar .googlesitekit-cta *:last-child,#wpadminbar .googlesitekit-adminbar .googlesitekit-plugin .googlesitekit-cta *:last-child{margin-bottom:0}.googlesitekit-cta-link,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link{color:#108080;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;text-align:left;text-decoration:none}.googlesitekit-cta-link:hover,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link:hover{color:#108080;text-decoration:underline}.googlesitekit-cta-link.googlesitekit-cta-link--caps,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--caps.googlesitekit-cta-link{text-transform:uppercase}.googlesitekit-cta-link.googlesitekit-cta-link--danger,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--danger.googlesitekit-cta-link{color:#ac4220}.googlesitekit-cta-link.googlesitekit-cta-link--small,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--small.googlesitekit-cta-link{font-size:12px;letter-spacing:.2px}.googlesitekit-cta-link.googlesitekit-cta-link--arrow,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--arrow.googlesitekit-cta-link,.googlesitekit-cta-link.googlesitekit-cta-link--external,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--external.googlesitekit-cta-link{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M11%2011H2V2h3V0H2a2%202%200%200%200-2%202v9a2%202%200%200%200%202%202h9c1.1%200%202-.9%202-2V8h-2v3z%22%20fill%3D%22%23108080%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20fill%3D%22%23108080%22%20d%3D%22M7%200h6v2H7zM11%202h2v4h-2z%22%2F%3E%3Cpath%20d%3D%22M11%202L5%208%22%20stroke%3D%22%23108080%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22square%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:calc(100% - 1px) center;background-repeat:no-repeat;background-size:13px 13px;padding-right:20px}.googlesitekit-cta-link.googlesitekit-cta-link--arrow,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--arrow.googlesitekit-cta-link{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23108080%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--arrow.googlesitekit-cta-link--inverse,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--arrow.googlesitekit-cta-link--inverse.googlesitekit-cta-link{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23FFF%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23108080%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--arrow.googlesitekit-cta-link--disabled,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--arrow.googlesitekit-cta-link--disabled.googlesitekit-cta-link{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23bbb%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--inverse,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--inverse.googlesitekit-cta-link{color:#fff}.googlesitekit-cta-link.googlesitekit-cta-link--inverse:hover,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--inverse.googlesitekit-cta-link:hover{color:#fff}.googlesitekit-cta-link.googlesitekit-cta-link--back::before,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--back.googlesitekit-cta-link::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%228%22%20height%3D%227%22%20viewBox%3D%220%200%208%207%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.722%203.96H1.573l2.25%202.25a.464.464%200%200%201-.325.79.459.459%200%200%201-.325-.135L.135%203.827a.459.459%200%200%201%200-.65L3.168.135a.46.46%200%201%201%20.65.65L1.573%203.039h5.15c.253%200%20.46.207.46.46a.462.462%200%200%201-.46.462z%22%20fill%3D%22%23108080%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:center center;background-repeat:no-repeat;background-size:9px 9px;content:"";display:inline-block;height:9px;margin-right:5px;width:9px}.googlesitekit-cta-link.googlesitekit-cta-link--disabled,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--disabled.googlesitekit-cta-link{color:#b8bdb9;cursor:default}.googlesitekit-cta-link.googlesitekit-cta-link--danger:hover,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--danger.googlesitekit-cta-link:hover{color:#ac4220}.googlesitekit-cta-link.googlesitekit-cta-link--disabled:hover,#wpadminbar .googlesitekit-adminbar .googlesitekit-cta-link--disabled.googlesitekit-cta-link:hover{color:#b8bdb9;text-decoration:none}button.googlesitekit-cta-link,#wpadminbar .googlesitekit-adminbar button.googlesitekit-cta-link{color:#3c7251}button.googlesitekit-cta-link:hover,#wpadminbar .googlesitekit-adminbar button.googlesitekit-cta-link:hover{color:#2e5f41}button.googlesitekit-cta-link.googlesitekit-cta-link--arrow,#wpadminbar .googlesitekit-adminbar button.googlesitekit-cta-link--arrow.googlesitekit-cta-link{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%233c7251%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-data-block,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block{--color-up: #4d760b;--color-down: #ac4220;position:relative;text-align:left}.post-php .googlesitekit-data-block,.post-php #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block,#wpadminbar .googlesitekit-adminbar .post-php .googlesitekit-data-block{min-width:150px}.googlesitekit-wp-dashboard .googlesitekit-data-block,.googlesitekit-wp-dashboard #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block,#wpadminbar .googlesitekit-adminbar .googlesitekit-wp-dashboard .googlesitekit-data-block{padding-top:12px}.googlesitekit-data-block--button{cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:flex-end;padding-bottom:16px;padding-top:20px;text-align:center;transition:background-color .2s ease-in-out}@media(min-width: 960px){.googlesitekit-data-block--button{padding-bottom:24px;padding-top:28px}}.googlesitekit-data-block--button::before{content:"";height:4px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.googlesitekit-data-block--selected::before{opacity:1}.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(99,128,184,.1)}.googlesitekit-data-block--button-1.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-1.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-1::before{background-color:#6380b8}.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(190,212,255,.1)}.googlesitekit-data-block--button-2.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-2.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-2::before{background-color:#bed4ff}.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(92,146,113,.1)}.googlesitekit-data-block--button-3.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-3.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-3::before{background-color:#5c9271}.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(110,72,171,.1)}.googlesitekit-data-block--button-4.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-4.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-4::before{background-color:#6e48ab}.googlesitekit-data-block .googlesitekit-data-block__title,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__title,.googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__title{color:#5f6561;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14;margin:0 0 12px}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__title,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__title{font-size:16px;font-weight:700;letter-spacing:.5px;margin-bottom:5px}#dashboard-widgets .googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__title{font-size:12px;letter-spacing:.2px}.googlesitekit-data-block .googlesitekit-data-block__datapoint,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__datapoint,.googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__datapoint{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:46px;font-weight:500;line-height:1.13;margin:0}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__datapoint,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__datapoint{display:inline-block;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:38px;line-height:1.15;margin-right:5px}.googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__datapoint,.googlesitekit-wp-dashboard #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__datapoint,#wpadminbar .googlesitekit-adminbar .googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__datapoint,.googlesitekit-wp-dashboard .googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__datapoint{font-size:32px}.googlesitekit-data-block .googlesitekit-data-block__change,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__change,.googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__change{color:#5f6561;font-size:12px;letter-spacing:.2px;line-height:1;margin-top:16px;text-transform:none}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__change,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__change{display:inline-block;font-size:16px;letter-spacing:.5px;margin-top:0}.googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__change,.googlesitekit-wp-dashboard #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__change,#wpadminbar .googlesitekit-adminbar .googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__change,.googlesitekit-wp-dashboard .googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__change{margin-top:10px}.googlesitekit-data-block .googlesitekit-data-block__change--no-change,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__change--no-change{visibility:hidden}.googlesitekit-data-block .googlesitekit-data-block__sparkline,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__sparkline,.googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__sparkline{margin-top:8px;max-width:150px}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__sparkline,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__sparkline{display:none}.googlesitekit-data-block--button .googlesitekit-data-block__sparkline,.googlesitekit-data-block--button #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__sparkline,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block--button .googlesitekit-data-block__sparkline{margin:8px auto 0 auto}.googlesitekit-data-block .googlesitekit-data-block__arrow,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__arrow,.googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__arrow{display:inline-block;line-height:1;margin-right:2px;vertical-align:baseline}.googlesitekit-data-block .googlesitekit-data-block__arrow--reverse,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__arrow--reverse{transform:rotate(180deg)}#wpadminbar .googlesitekit-data-block .googlesitekit-data-block__arrow .svg{height:9px;width:9px}.googlesitekit-data-block .googlesitekit-data-block__suffix,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix{margin-left:4px}.googlesitekit-data-block .googlesitekit-data-block__value,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__value,.googlesitekit-data-block #wpadminbar .googlesitekit-adminbar .googlesitekit-data-block__value,.googlesitekit-data-block .googlesitekit-data-block__suffix,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix{color:#5f6561;display:inline-block;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33;text-transform:none}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__value,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__value,.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix{font-size:16px;font-weight:400;letter-spacing:.5px}.googlesitekit-data-block .googlesitekit-data-block__value--up,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__value--up,.googlesitekit-data-block .googlesitekit-data-block__suffix--up,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix--up{color:var(--color-up)}.googlesitekit-data-block .googlesitekit-data-block__value--down,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__value--down,.googlesitekit-data-block .googlesitekit-data-block__suffix--down,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix--down{color:var(--color-down)}.googlesitekit-data-block .googlesitekit-data-block__source,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__source{font-size:12px;letter-spacing:.2px;margin-top:8px}@media(min-width: 960px){.googlesitekit-data-block .googlesitekit-data-block__source,#wpadminbar .googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__source{margin-top:12px}}.googlesitekit-plugin .googlesitekit-data-block__loading{align-items:center;display:flex;flex-direction:row}.googlesitekit-plugin .googlesitekit-data-block--is-gathering-data{cursor:auto}.googlesitekit-plugin .googlesitekit-gathering-data-notice{text-transform:lowercase}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small span{font-size:12px;letter-spacing:.2px;line-height:1.33;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-default{position:relative;text-align:inherit}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-default span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-overlay{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-overlay span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay span{font-size:20px;line-height:1.2;max-width:80px;padding:0;text-align:center}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-large span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}#wpadminbar .googlesitekit-plugin .googlesitekit-gathering-data-notice span{color:#999f9b;font-size:12px;letter-spacing:.2px;line-height:1.33;text-transform:lowercase}.googlesitekit-preview-block{display:flex;flex-direction:column}.googlesitekit-preview-block--padding{padding:16px}.googlesitekit-preview-block--padding+.googlesitekit-preview-block--padding{padding-top:0}@media(min-width: 960px){.googlesitekit-preview-block--padding{padding:24px}}.googlesitekit-preview-block__wrapper{animation:googlesitekit-pulse 1s infinite ease-in-out;animation-direction:alternate;flex:1 1 auto}@media(prefers-reduced-motion: reduce){.googlesitekit-preview-block__wrapper{animation:none;background-image:linear-gradient(150deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.15))}}.googlesitekit-preview-block__wrapper--circle{border-radius:50%}@keyframes googlesitekit-pulse{0%{background-color:#ebeef0}100%{background-color:#cbd0d3}}.googlesitekit-noscript{background-color:#fff;margin:5px 20px 5px 0}@media(min-width: 600px){.googlesitekit-noscript{padding-left:10px;padding-right:10px}}.googlesitekit-noscript__title{margin:0}.no-js:not([amp-version]) [id^=js-googlesitekit-]{display:none}.googlesitekit-plugin .googlesitekit-font-weight-bold{font-weight:700 !important} diff --git a/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-wp-dashboard-css-832e935928ddcc45c765.min.css b/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-wp-dashboard-css-832e935928ddcc45c765.min.css new file mode 100644 index 000000000..4a5ac2757 --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/css/googlesitekit-wp-dashboard-css-832e935928ddcc45c765.min.css @@ -0,0 +1 @@ +.mdc-button{font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:2.25rem;font-weight:500;letter-spacing:.0892857143em;text-decoration:none;text-transform:uppercase;padding:0 8px 0 8px;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;height:36px;border:none;outline:none;line-height:inherit;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;overflow:hidden;vertical-align:middle;border-radius:4px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{background-color:transparent;color:rgba(0,0,0,.37);cursor:default;pointer-events:none}.mdc-button.mdc-button--dense{border-radius:4px}.mdc-button:not(:disabled){background-color:transparent}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;width:18px;height:18px;font-size:18px;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button:not(:disabled){color:#3c7251;color:#3c7251;color:var(--mdc-theme-primary, #3c7251)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--raised .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon,.mdc-button--outlined .mdc-button__icon{margin-left:-4px;margin-right:8px}[dir=rtl] .mdc-button--raised .mdc-button__icon,.mdc-button--raised .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__icon,.mdc-button--outlined .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--raised .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mdc-button--raised,.mdc-button--unelevated{padding:0 16px 0 16px}.mdc-button--raised:disabled,.mdc-button--unelevated:disabled{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.37)}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){color:#fff;color:#fff;color:var(--mdc-theme-on-primary, #fff)}.mdc-button--raised{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2),0px 2px 2px 0px rgba(0, 0, 0, 0.14),0px 1px 5px 0px rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--raised:hover,.mdc-button--raised:focus{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0,0,0,.12)}.mdc-button--raised:active{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0,0,0,.12)}.mdc-button--raised:disabled{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2),0px 0px 0px 0px rgba(0, 0, 0, 0.14),0px 0px 0px 0px rgba(0,0,0,.12)}.mdc-button--outlined{border-style:solid;padding:0 15px 0 15px;border-width:1px}.mdc-button--outlined:disabled{border-color:rgba(0,0,0,.37)}.mdc-button--outlined:not(:disabled){border-color:#3c7251;border-color:#3c7251;border-color:var(--mdc-theme-primary, #3c7251)}.mdc-button--dense{height:32px;font-size:.8125rem}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:0;opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:0;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface--test-edge-var-bug{--mdc-ripple-surface-test-edge-var: 1px solid #000;visibility:hidden}.mdc-ripple-surface--test-edge-var-bug::before{border:var(--mdc-ripple-surface-test-edge-var)}.mdc-button{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-button::before,.mdc-button::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-button::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-button.mdc-ripple-upgraded::before{transform:scale(1);transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-button.mdc-ripple-upgraded--unbounded::after{top:0;top:var(--mdc-ripple-top, 0);left:0;left:var(--mdc-ripple-left, 0)}.mdc-button.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-button.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(0) scale(1);transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button::before,.mdc-button::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-button.mdc-ripple-upgraded::after{width:100%;width:var(--mdc-ripple-fg-size, 100%);height:100%;height:var(--mdc-ripple-fg-size, 100%)}.mdc-button::before,.mdc-button::after{background-color:#3c7251}@supports not (-ms-ime-align: auto){.mdc-button::before,.mdc-button::after{background-color:#3c7251;background-color:var(--mdc-theme-primary, #3c7251)}}.mdc-button:hover::before{opacity:.04}.mdc-button:not(.mdc-ripple-upgraded):focus::before,.mdc-button.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.mdc-button:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-button:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.mdc-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-button--raised::before,.mdc-button--raised::after,.mdc-button--unelevated::before,.mdc-button--unelevated::after{background-color:#fff}@supports not (-ms-ime-align: auto){.mdc-button--raised::before,.mdc-button--raised::after,.mdc-button--unelevated::before,.mdc-button--unelevated::after{background-color:#fff;background-color:var(--mdc-theme-on-primary, #fff)}}.mdc-button--raised:hover::before,.mdc-button--unelevated:hover::before{opacity:.08}.mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,.mdc-button--raised.mdc-ripple-upgraded--background-focused::before,.mdc-button--unelevated:not(.mdc-ripple-upgraded):focus::before,.mdc-button--unelevated.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.mdc-button--raised:not(.mdc-ripple-upgraded)::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-button--raised:not(.mdc-ripple-upgraded):active::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.mdc-button--raised.mdc-ripple-upgraded,.mdc-button--unelevated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button{box-shadow:none;text-transform:none}.googlesitekit-plugin .mdc-button:not(:disabled){color:#3c7251}@media(max-width: 960px){.googlesitekit-plugin .mdc-button{min-width:auto}}.googlesitekit-plugin .mdc-button--raised{border-radius:100px;box-shadow:none;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;height:auto;letter-spacing:normal;min-height:40px;padding-bottom:8px;padding-top:8px;text-align:center}.googlesitekit-plugin .mdc-button--raised:not(:disabled){background-color:#3c7251}.googlesitekit-plugin .mdc-button--raised:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin .mdc-button--raised::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--raised::before,.googlesitekit-plugin .mdc-button--raised::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--raised:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--raised.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--raised:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--raised.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button--raised.mdc-button--dense{border-radius:100px}.googlesitekit-plugin .mdc-button--raised:hover{text-decoration:none}.googlesitekit-plugin .mdc-button--raised:focus{outline:none}.googlesitekit-plugin .mdc-button--danger:not(:disabled){background-color:#ac4220}.googlesitekit-plugin .mdc-button--danger:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--danger::before,.googlesitekit-plugin .mdc-button--danger::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--danger::before,.googlesitekit-plugin .mdc-button--danger::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--danger:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--danger.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--danger:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--danger.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button--dropdown{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20viewBox%3D%220%200%2012%208%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.6.6L12%202%206%208%200%202%201.4.6%206%205.2z%22%20fill%3D%22%23757575%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:calc(100% - 8px) center;background-repeat:no-repeat;background-size:9px 6px;letter-spacing:normal;padding-right:12px;text-transform:none}.googlesitekit-plugin .mdc-button--dropdown:not(:disabled){color:#131418}@media(min-width: 600px){.googlesitekit-plugin .mdc-button--dropdown{padding-right:25px}}.googlesitekit-plugin .mdc-button--dropdown:hover,.googlesitekit-plugin .mdc-button--dropdown:active,.googlesitekit-plugin .mdc-button--dropdown:focus{text-decoration:none}.googlesitekit-plugin .mdc-button--dropdown:hover:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:active:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:focus:not(:disabled){background-color:#ebeef0}.googlesitekit-plugin .mdc-button--dropdown:hover:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:active:not(:disabled),.googlesitekit-plugin .mdc-button--dropdown:focus:not(:disabled){color:rgba(0,0,0,.87);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87))}.googlesitekit-plugin .mdc-button--dropdown:hover::before,.googlesitekit-plugin .mdc-button--dropdown:hover::after,.googlesitekit-plugin .mdc-button--dropdown:active::before,.googlesitekit-plugin .mdc-button--dropdown:active::after,.googlesitekit-plugin .mdc-button--dropdown:focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus::after{background-color:rgba(0,0,0,.87)}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--dropdown:hover::before,.googlesitekit-plugin .mdc-button--dropdown:hover::after,.googlesitekit-plugin .mdc-button--dropdown:active::before,.googlesitekit-plugin .mdc-button--dropdown:active::after,.googlesitekit-plugin .mdc-button--dropdown:focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus::after{background-color:rgba(0, 0, 0, 0.87);background-color:var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87))}}.googlesitekit-plugin .mdc-button--dropdown:hover:hover::before,.googlesitekit-plugin .mdc-button--dropdown:active:hover::before,.googlesitekit-plugin .mdc-button--dropdown:focus:hover::before{opacity:.04}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:hover.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:active.mdc-ripple-upgraded--background-focused::before,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--dropdown:focus.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded)::after,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--dropdown:hover:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin .mdc-button--dropdown:active:not(.mdc-ripple-upgraded):active::after,.googlesitekit-plugin .mdc-button--dropdown:focus:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12}.googlesitekit-plugin .mdc-button--dropdown:hover.mdc-ripple-upgraded,.googlesitekit-plugin .mdc-button--dropdown:active.mdc-ripple-upgraded,.googlesitekit-plugin .mdc-button--dropdown:focus.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}@media(max-width: 599px){.googlesitekit-plugin .mdc-button--dropdown{background-image:none}}@media(max-width: 599px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}}@media(min-width: 600px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(min-width: 960px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:300px}}@media(min-width: 1280px){.googlesitekit-plugin .mdc-button--dropdown .mdc-button__label{max-width:450px}}.googlesitekit-plugin .mdc-button--inverse:not(:disabled){background-color:#161b18}.googlesitekit-plugin .mdc-button--inverse:not(:disabled){color:#fff;color:white;color:var(--mdc-theme-text-primary-on-dark, white)}.googlesitekit-plugin .mdc-button--inverse::before,.googlesitekit-plugin .mdc-button--inverse::after{background-color:#fff}@supports not (-ms-ime-align: auto){.googlesitekit-plugin .mdc-button--inverse::before,.googlesitekit-plugin .mdc-button--inverse::after{background-color:white;background-color:var(--mdc-theme-text-primary-on-dark, white)}}.googlesitekit-plugin .mdc-button--inverse:hover::before{opacity:.08}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded):focus::before,.googlesitekit-plugin .mdc-button--inverse.mdc-ripple-upgraded--background-focused::before{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.googlesitekit-plugin .mdc-button--inverse:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24}.googlesitekit-plugin .mdc-button--inverse.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.googlesitekit-plugin .mdc-button .mdc-button__icon--image{border-radius:50%;display:block;height:18px;width:18px}.googlesitekit-plugin .mdc-button .mdc-button__trailing-icon{margin-left:8px}.googlesitekit-plugin .googlesitekit-analytics-cta{--cta-analytics-gap: 16px;--cta-analytics-gap-narrow: calc(var(--cta-analytics-gap) / 2);background-color:#ebeef0;display:flex;flex-direction:column;grid-gap:var(--cta-analytics-gap);gap:var(--cta-analytics-gap);padding:var(--cta-analytics-gap)}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta{--cta-analytics-gap: 24px;flex-direction:row-reverse}}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta--description{color:#161b18;font-size:14px;letter-spacing:.25px;margin:0}.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{margin-top:var(--cta-analytics-gap-narrow);width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{width:auto}}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta .mdc-button{margin-top:var(--cta-analytics-gap)}}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-cta--activate-analytics,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs{display:flex;grid-gap:var(--cta-analytics-gap);gap:var(--cta-analytics-gap)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph{background-color:#fff;border-radius:4px;display:flex;flex:1;flex-direction:column;padding:var(--cta-analytics-gap-narrow)}#dashboard-widgets .googlesitekit-plugin .googlesitekit-analytics-cta h3.googlesitekit-analytics-cta__preview-graph--title,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--title{color:#333935;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;letter-spacing:.2px;margin:0 0 auto;padding-bottom:var(--cta-analytics-gap-narrow)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--icons{align-items:center;color:#cbd0d3;display:flex;grid-gap:4px;gap:4px;padding-top:var(--cta-analytics-gap-narrow)}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--up-arrow{height:12px}.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graph--bar{background-color:#cbd0d3;border-radius:5px;height:8px;width:24px}@media(min-width: 1440px){.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__preview-graphs,.googlesitekit-plugin .googlesitekit-analytics-cta .googlesitekit-analytics-cta__details{flex:1}}.googlesitekit-plugin .googlesitekit-change-arrow{--color-up: #4d760b;--color-down: #ac4220}.googlesitekit-plugin .googlesitekit-change-arrow--inverted-color{--color-up: #ac4220;--color-down: #4d760b}.googlesitekit-plugin .googlesitekit-change-arrow--up{color:var(--color-up)}.googlesitekit-plugin .googlesitekit-change-arrow--down{color:var(--color-up);transform:rotate(180deg)}.googlesitekit-plugin .googlesitekit-change-arrow--down path{fill:var(--color-down)}.googlesitekit-plugin .googlesitekit-cta{background-color:#ebeef0;border-radius:16px;font-size:14px;height:100%;letter-spacing:.25px;line-height:1.43;padding:16px;width:100%}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-cta{padding:24px}}.googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta--error{background-color:#fff}.googlesitekit-adminbar-modules .googlesitekit-plugin .googlesitekit-cta{padding:16px}.googlesitekit-wp-dashboard .googlesitekit-plugin .googlesitekit-cta{background-color:#ebeef0;box-sizing:border-box;height:auto;margin-top:12px;padding:12px}.googlesitekit-wp-dashboard .googlesitekit-wp-dashboard-stats__cta .googlesitekit-plugin .googlesitekit-cta{margin-top:0}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__title{color:#131418;font-size:14px;font-weight:500;margin:0 0 5px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-adminbar-modules .googlesitekit-cta__title{font-weight:700;letter-spacing:.5px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description{color:#131418;margin:0 0 20px}.googlesitekit-plugin .googlesitekit-cta .googlesitekit-cta__description p:first-child{margin-top:0}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error{background-color:#ffc2ae}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error a,.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta__title{color:#7a1e00}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta__description{color:#7a1e00;word-break:break-word}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .mdc-button:not(:disabled){background-color:#ac4220;color:#fff}.googlesitekit-plugin .googlesitekit-cta.googlesitekit-cta--error .googlesitekit-cta-link--external{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M11%2011H2V2h3V0H2a2%202%200%200%200-2%202v9a2%202%200%200%200%202%202h9c1.1%200%202-.9%202-2V8h-2v3z%22%20fill%3D%22%237a1e00%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20fill%3D%22%237a1e00%22%20d%3D%22M7%200h6v2H7zM11%202h2v4h-2z%22%2F%3E%3Cpath%20d%3D%22M11%202L5%208%22%20stroke%3D%22%237a1e00%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22square%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-plugin .googlesitekit-cta *:last-child{margin-bottom:0}.googlesitekit-cta-link{color:#108080;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;text-align:left;text-decoration:none}.googlesitekit-cta-link:hover{color:#108080;text-decoration:underline}.googlesitekit-cta-link.googlesitekit-cta-link--caps{text-transform:uppercase}.googlesitekit-cta-link.googlesitekit-cta-link--danger{color:#ac4220}.googlesitekit-cta-link.googlesitekit-cta-link--small{font-size:12px;letter-spacing:.2px}.googlesitekit-cta-link.googlesitekit-cta-link--arrow,.googlesitekit-cta-link.googlesitekit-cta-link--external{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M11%2011H2V2h3V0H2a2%202%200%200%200-2%202v9a2%202%200%200%200%202%202h9c1.1%200%202-.9%202-2V8h-2v3z%22%20fill%3D%22%23108080%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20fill%3D%22%23108080%22%20d%3D%22M7%200h6v2H7zM11%202h2v4h-2z%22%2F%3E%3Cpath%20d%3D%22M11%202L5%208%22%20stroke%3D%22%23108080%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22square%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:calc(100% - 1px) center;background-repeat:no-repeat;background-size:13px 13px;padding-right:20px}.googlesitekit-cta-link.googlesitekit-cta-link--arrow{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23108080%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--arrow.googlesitekit-cta-link--inverse{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23FFF%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23108080%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--arrow.googlesitekit-cta-link--disabled{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23bbb%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-cta-link.googlesitekit-cta-link--inverse{color:#fff}.googlesitekit-cta-link.googlesitekit-cta-link--inverse:hover{color:#fff}.googlesitekit-cta-link.googlesitekit-cta-link--back::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%228%22%20height%3D%227%22%20viewBox%3D%220%200%208%207%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.722%203.96H1.573l2.25%202.25a.464.464%200%200%201-.325.79.459.459%200%200%201-.325-.135L.135%203.827a.459.459%200%200%201%200-.65L3.168.135a.46.46%200%201%201%20.65.65L1.573%203.039h5.15c.253%200%20.46.207.46.46a.462.462%200%200%201-.46.462z%22%20fill%3D%22%23108080%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E");background-position:center center;background-repeat:no-repeat;background-size:9px 9px;content:"";display:inline-block;height:9px;margin-right:5px;width:9px}.googlesitekit-cta-link.googlesitekit-cta-link--disabled{color:#b8bdb9;cursor:default}.googlesitekit-cta-link.googlesitekit-cta-link--danger:hover{color:#ac4220}.googlesitekit-cta-link.googlesitekit-cta-link--disabled:hover{color:#b8bdb9;text-decoration:none}button.googlesitekit-cta-link{color:#3c7251}button.googlesitekit-cta-link:hover{color:#2e5f41}button.googlesitekit-cta-link.googlesitekit-cta-link--arrow{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%233c7251%22%20cx%3D%226.5%22%20cy%3D%226.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M3.461%206.96h5.15L6.36%209.21a.464.464%200%200%200%20.325.79.459.459%200%200%200%20.325-.135l3.037-3.038a.459.459%200%200%200%200-.65L7.015%203.135a.46.46%200%200%200-.65.65L8.61%206.039H3.461a.462.462%200%200%200-.461.46c0%20.254.207.462.461.462z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.googlesitekit-data-block{--color-up: #4d760b;--color-down: #ac4220;position:relative;text-align:left}.post-php .googlesitekit-data-block{min-width:150px}.googlesitekit-wp-dashboard .googlesitekit-data-block{padding-top:12px}.googlesitekit-data-block--button{cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:flex-end;padding-bottom:16px;padding-top:20px;text-align:center;transition:background-color .2s ease-in-out}@media(min-width: 960px){.googlesitekit-data-block--button{padding-bottom:24px;padding-top:28px}}.googlesitekit-data-block--button::before{content:"";height:4px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.googlesitekit-data-block--selected::before{opacity:1}.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-1:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(99,128,184,.1)}.googlesitekit-data-block--button-1.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-1.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-1::before{background-color:#6380b8}.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-2:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(190,212,255,.1)}.googlesitekit-data-block--button-2.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-2.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-2::before{background-color:#bed4ff}.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-3:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(92,146,113,.1)}.googlesitekit-data-block--button-3.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-3.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-3::before{background-color:#5c9271}.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):hover,.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):focus,.googlesitekit-data-block--button-4:not(.googlesitekit-data-block--is-gathering-data):active{background-color:rgba(110,72,171,.1)}.googlesitekit-data-block--button-4.googlesitekit-data-block--is-gathering-data::before{background-color:#999f9b}.googlesitekit-data-block--button-4.googlesitekit-data-block--is-gathering-data.googlesitekit-data-block--selected::before{opacity:.6}.googlesitekit-data-block--button-4::before{background-color:#6e48ab}.googlesitekit-data-block .googlesitekit-data-block__title{color:#5f6561;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.14;margin:0 0 12px}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__title{font-size:16px;font-weight:700;letter-spacing:.5px;margin-bottom:5px}#dashboard-widgets .googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__title{font-size:12px;letter-spacing:.2px}.googlesitekit-data-block .googlesitekit-data-block__datapoint{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:46px;font-weight:500;line-height:1.13;margin:0}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__datapoint{display:inline-block;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:38px;line-height:1.15;margin-right:5px}.googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__datapoint{font-size:32px}.googlesitekit-data-block .googlesitekit-data-block__change{color:#5f6561;font-size:12px;letter-spacing:.2px;line-height:1;margin-top:16px;text-transform:none}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__change{display:inline-block;font-size:16px;letter-spacing:.5px;margin-top:0}.googlesitekit-wp-dashboard .googlesitekit-data-block .googlesitekit-data-block__change{margin-top:10px}.googlesitekit-data-block .googlesitekit-data-block__change--no-change{visibility:hidden}.googlesitekit-data-block .googlesitekit-data-block__sparkline{margin-top:8px;max-width:150px}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__sparkline{display:none}.googlesitekit-data-block--button .googlesitekit-data-block__sparkline{margin:8px auto 0 auto}.googlesitekit-data-block .googlesitekit-data-block__arrow{display:inline-block;line-height:1;margin-right:2px;vertical-align:baseline}.googlesitekit-data-block .googlesitekit-data-block__arrow--reverse{transform:rotate(180deg)}#wpadminbar .googlesitekit-data-block .googlesitekit-data-block__arrow .svg{height:9px;width:9px}.googlesitekit-data-block .googlesitekit-data-block__suffix{margin-left:4px}.googlesitekit-data-block .googlesitekit-data-block__value,.googlesitekit-data-block .googlesitekit-data-block__suffix{color:#5f6561;display:inline-block;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1.33;text-transform:none}.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__value,.googlesitekit-adminbar .googlesitekit-data-block .googlesitekit-data-block__suffix{font-size:16px;font-weight:400;letter-spacing:.5px}.googlesitekit-data-block .googlesitekit-data-block__value--up,.googlesitekit-data-block .googlesitekit-data-block__suffix--up{color:var(--color-up)}.googlesitekit-data-block .googlesitekit-data-block__value--down,.googlesitekit-data-block .googlesitekit-data-block__suffix--down{color:var(--color-down)}.googlesitekit-data-block .googlesitekit-data-block__source{font-size:12px;letter-spacing:.2px;margin-top:8px}@media(min-width: 960px){.googlesitekit-data-block .googlesitekit-data-block__source{margin-top:12px}}.googlesitekit-plugin .googlesitekit-data-block__loading{align-items:center;display:flex;flex-direction:row}.googlesitekit-plugin .googlesitekit-data-block--is-gathering-data{cursor:auto}.googlesitekit-error-text{color:#ac4220;font-weight:500}.googlesitekit-error-retry-text{color:#ac4220;margin-left:1rem}.googlesitekit-error-cta-wrapper{align-items:center;display:flex;grid-gap:1rem;gap:1rem}.googlesitekit-plugin .googlesitekit-gathering-data-notice{text-transform:lowercase}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small span{font-size:12px;letter-spacing:.2px;line-height:1.33;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-default{position:relative;text-align:inherit}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-default span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-overlay{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-overlay span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-small-overlay span{font-size:20px;line-height:1.2;max-width:80px;padding:0;text-align:center}.googlesitekit-plugin .googlesitekit-gathering-data-notice.googlesitekit-gathering-data-notice--has-style-large span{color:#5f6561;display:block;font-size:28px;line-height:1.28;padding:0}#wpadminbar .googlesitekit-plugin .googlesitekit-gathering-data-notice span{color:#999f9b;font-size:12px;letter-spacing:.2px;line-height:1.33;text-transform:lowercase}.googlesitekit-logo{color:#5f6561;line-height:0}.googlesitekit-logo .googlesitekit-logo__logo-g,.googlesitekit-logo .googlesitekit-svg-logo-g{height:24px;vertical-align:middle;width:23px}@media(min-width: 600px){.googlesitekit-logo .googlesitekit-logo__logo-g,.googlesitekit-logo .googlesitekit-svg-logo-g{height:34px;width:32px}}.googlesitekit-logo .googlesitekit-logo__logo-sitekit,.googlesitekit-logo .googlesitekit-svg-logo-sitekit{fill:currentColor;height:16px;margin-left:8px;vertical-align:middle;width:61px}@media(min-width: 600px){.googlesitekit-logo .googlesitekit-logo__logo-sitekit,.googlesitekit-logo .googlesitekit-svg-logo-sitekit{height:26px;margin-left:16px;width:99px}}.googlesitekit-logo--mini .googlesitekit-logo__logo-g,.googlesitekit-logo--mini .googlesitekit-svg-logo-g{height:19px;width:19px}.googlesitekit-logo--mini .googlesitekit-logo__logo-sitekit,.googlesitekit-logo--mini .googlesitekit-svg-logo-sitekit{height:17px;margin-left:4px;width:78px}.googlesitekit-preview-block{display:flex;flex-direction:column}.googlesitekit-preview-block--padding{padding:16px}.googlesitekit-preview-block--padding+.googlesitekit-preview-block--padding{padding-top:0}@media(min-width: 960px){.googlesitekit-preview-block--padding{padding:24px}}.googlesitekit-preview-block__wrapper{animation:googlesitekit-pulse 1s infinite ease-in-out;animation-direction:alternate;flex:1 1 auto}@media(prefers-reduced-motion: reduce){.googlesitekit-preview-block__wrapper{animation:none;background-image:linear-gradient(150deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.15))}}.googlesitekit-preview-block__wrapper--circle{border-radius:50%}@keyframes googlesitekit-pulse{0%{background-color:#ebeef0}100%{background-color:#cbd0d3}}.googlesitekit-preview-table{width:100%}.googlesitekit-preview-table--padding{padding:16px}.googlesitekit-preview-table--padding+.googlesitekit-preview-table--padding{padding-top:0}@media(min-width: 960px){.googlesitekit-preview-table--padding{padding:24px}}.googlesitekit-preview-table .googlesitekit-preview-table__row{margin:0 0 9px}.googlesitekit-preview-table .googlesitekit-preview-table__row:last-child{margin-bottom:0}.googlesitekit-source-link{color:#5f6561;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:1}.googlesitekit-table{counter-reset:table;font-size:14px;letter-spacing:.25px;padding:16px;position:relative}@media(min-width: 960px){.googlesitekit-table{padding:24px}}.googlesitekit-alltraffic-widget .googlesitekit-table,.googlesitekit-wp-dashboard .googlesitekit-table{padding:0}.googlesitekit-table .googlesitekit-table__wrapper{border-collapse:collapse;table-layout:fixed;width:100%}@media(max-width: 599px){.googlesitekit-table .googlesitekit-table__wrapper.googlesitekit-table__wrapper--mobile-2-col .googlesitekit-table__head-item--primary{width:75%}}.googlesitekit-table .googlesitekit-table__head-row{border-bottom:1px solid #ebeef0}.googlesitekit-table .googlesitekit-table__head-item{color:#131418;font-family:"Google Sans Display","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:700;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;line-height:1.25;outline:0;padding:0 4px 8px 4px;position:relative;text-align:right;text-decoration:none;white-space:normal}@media(min-width: 600px){.googlesitekit-table .googlesitekit-table__head-item{padding:0 8px 8px 8px}}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__head-item{padding:0 12px 12px 12px}}.googlesitekit-table .googlesitekit-table__head-item:first-child{padding-left:0;text-align:left}.googlesitekit-table .googlesitekit-table__head-item:last-child{padding-right:0}.googlesitekit-table .googlesitekit-table__head-item--primary{width:50%}.googlesitekit-widget--with-header .googlesitekit-table .googlesitekit-table__head-item{font-size:14px;line-height:1.14}.googlesitekit-table-overflow .googlesitekit-table .googlesitekit-table__head-item:last-child{padding-right:0}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__head-item[data-tooltip]::before{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;content:attr(data-tooltip);display:none;font-size:12px;letter-spacing:.2px;max-width:250px;opacity:0;padding:calc(16px / 2) 24px;pointer-events:none;position:absolute;right:0;text-align:center;top:100%;transition:opacity .2s ease-in-out,visibility .2s ease-in-out;visibility:hidden}}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__head-item:first-child[data-tooltip]::before{left:0}}.googlesitekit-table .googlesitekit-table__wrapper--2-col .googlesitekit-table__head-item--primary{width:75%}.googlesitekit-table .googlesitekit-table__body{color:#131418;font-weight:400}.googlesitekit-table .googlesitekit-table__body-row{border-bottom:1px solid #ebeef0}.googlesitekit-table .googlesitekit-table__body-row--no-data td{white-space:normal}.googlesitekit-table .googlesitekit-table__body-item{padding:8px 4px;text-align:right}@media(min-width: 600px){.googlesitekit-table .googlesitekit-table__body-item{padding:8px}}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__body-item{padding:12px}}.googlesitekit-table .googlesitekit-table__body-item:first-child{padding-left:0;text-align:left}.googlesitekit-table .googlesitekit-table__body-item:last-child{padding-right:0}.googlesitekit-table .googlesitekit-table__body-item .googlesitekit-mini-chart{display:none}@media(min-width: 600px){.googlesitekit-table .googlesitekit-table__body-item .googlesitekit-mini-chart{display:block}}.googlesitekit-table-overflow .googlesitekit-table .googlesitekit-table__body-item:last-child{padding-right:0}.googlesitekit-table--with-list .googlesitekit-table__body-row{transition:background-color .2s ease-in-out}.googlesitekit-table--with-list .googlesitekit-table__body-row:last-child{border-bottom:0}.googlesitekit-table--with-list .googlesitekit-table__body-row:hover{background-color:rgba(51,57,53,.05)}.googlesitekit-table--with-list .googlesitekit-table__body-row--no-data:hover{background-color:transparent}.googlesitekit-table--with-list .googlesitekit-table__body-item:first-child .googlesitekit-table__body-item-content{margin-left:24px;position:relative}.googlesitekit-table--with-list .googlesitekit-table__body-item:first-child .googlesitekit-table__body-item-content::before{content:counter(table) ".";counter-increment:table;left:-24px;position:absolute}@media(max-width: 600px){.googlesitekit-table .googlesitekit-table__body-item-content .googlesitekit-cta-link{display:block;overflow:hidden;text-overflow:ellipsis}}.googlesitekit-wp-dashboard .googlesitekit-table .googlesitekit-table__body-item-link{background-image:none}.googlesitekit-table .googlesitekit-table__body-item-url{background-image:none;display:block;font-size:12px;letter-spacing:.2px;word-break:break-word}.googlesitekit-table .googlesitekit-table__body-item-chart-wrap{align-items:center;display:flex;justify-content:flex-end}.googlesitekit-table .googlesitekit-table__source{margin-top:16px}@media(min-width: 960px){.googlesitekit-table .googlesitekit-table__source{margin-top:24px}}.googlesitekit-table--gathering-data{padding-bottom:0}.googlesitekit-table-overflow{position:relative}@media(max-width: 600px){.googlesitekit-table-overflow::after{background:linear-gradient(to right, rgba(255, 255, 255, 0) 0%, white 85%, white 100%);bottom:0;content:"";display:block;pointer-events:none;position:absolute;right:0;top:0;transition:all .2s ease-in-out;width:0}}@media(max-width: 600px){.googlesitekit-table-overflow--gradient::after{width:15%}}.googlesitekit-table-overflow .googlesitekit-table-overflow__container{overflow-x:auto;white-space:nowrap}@media(min-width: 600px){.googlesitekit-table-overflow .googlesitekit-table-overflow__container{overflow-x:visible;white-space:normal}}#google_dashboard_widget .googlesitekit-search-console-widget{padding-top:12px}#google_dashboard_widget .googlesitekit-search-console-widget .googlesitekit-table__body-row:hover{background:transparent}#google_dashboard_widget .googlesitekit-search-console-widget .googlesitekit-cta-link{text-decoration:none}#google_dashboard_widget h2.hndle{line-height:1}#google_dashboard_widget .googlesitekit-wp-dashboard .googlesitekit-wp-dashboard__cta{border-bottom:1px solid #ebeef0;margin:0 -12px;padding:0 12px 12px}#google_dashboard_widget .googlesitekit-data-block .googlesitekit-data-block__datapoint,#google_dashboard_widget .googlesitekit-data-block .googlesitekit-data-block__title,#google_dashboard_widget .googlesitekit-table .googlesitekit-table__head-item{font-family:inherit}#google_dashboard_widget .googlesitekit-table .googlesitekit-table__head-item{font-size:inherit}#google_dashboard_widget .googlesitekit-wp-dashboard-stats{box-sizing:border-box;display:flex;flex-wrap:wrap;justify-content:space-between}#google_dashboard_widget .googlesitekit-wp-dashboard-stats *{box-sizing:border-box}#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__data-table{align-self:stretch;width:48%}@media(min-width: 600px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__data-table{width:auto}}@media(min-width: 800px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__data-table{width:48%}}@media(min-width: 1300px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__data-table{width:auto}}#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__cta{padding-top:12px;width:100%}@media(min-width: 600px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__cta{width:50%}}@media(min-width: 800px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__cta{width:100%}}@media(min-width: 1300px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__cta{width:50%}}@media(min-width: 600px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats--fourup>.googlesitekit-wp-dashboard-stats__data-table{width:auto}}@media(min-width: 800px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats--fourup>.googlesitekit-wp-dashboard-stats__data-table{width:48%}}@media(min-width: 1300px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats--fourup>.googlesitekit-wp-dashboard-stats__data-table{width:auto}}@media(min-width: 1500px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats--fourup>.googlesitekit-wp-dashboard-stats__data-table{width:48%}}@media(min-width: 2200px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats--fourup>.googlesitekit-wp-dashboard-stats__data-table{width:auto}}#google_dashboard_widget .googlesitekit-wp-dashboard-stats--twoup>.googlesitekit-wp-dashboard-stats__data-table{width:48%}#google_dashboard_widget .googlesitekit-wp-dashboard-stats--twoup>.googlesitekit-wp-dashboard-stats__cta{width:100%}#google_dashboard_widget .googlesitekit-wp-dashboard-stats--twoup>.googlesitekit-wp-dashboard-stats__cta .mdc-button{text-decoration:none}@media(min-width: 1440px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats--twoup>.googlesitekit-wp-dashboard-stats__cta .googlesitekit-analytics-cta{--cta-analytics-gap: 16px;flex-direction:column}}@media(min-width: 600px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__cta+.googlesitekit-wp-dashboard-stats__cta{margin-left:1px;margin-right:-1px}}@media(min-width: 1300px){#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-wp-dashboard-stats__cta+.googlesitekit-wp-dashboard-stats__cta{margin-left:1px;margin-right:-1px}}#google_dashboard_widget .googlesitekit-wp-dashboard-stats .googlesitekit-cta+.googlesitekit-wp-dashboard-stats__cta{width:100%}#google_dashboard_widget .googlesitekit-wp-dashboard-stats>.googlesitekit-data-block--is-gathering-data{margin-bottom:16px}.googlesitekit-plugin .googlesitekit-display-block{display:block}@media(min-width: 960px){.googlesitekit-plugin .googlesitekit-desktop-display-none{display:none}}@media(max-width: 960px){.googlesitekit-plugin .googlesitekit-non-desktop-display-none{display:none}}.googlesitekit-plugin .googlesitekit-overflow-wrap-break-word{word-wrap:break-word}.googlesitekit-plugin .googlesitekit-idea-hub__wpdashboard--notice{background-color:#f0f6fc;border-left:4px solid #72aee6;display:flex;font-size:12px;justify-content:space-between;letter-spacing:.2px;line-height:1.33;margin:0 -12px;padding:14px;width:calc(100% + 14px + 14px)}.googlesitekit-plugin .googlesitekit-idea-hub__wpdashboard--header{align-items:center;display:flex;margin-right:14px;white-space:nowrap}.googlesitekit-plugin .googlesitekit-idea-hub__wpdashboard--copy{color:#043959;margin-right:14px}.googlesitekit-plugin .googlesitekit-idea-hub__wpdashboard--link{align-items:center;display:flex;margin-left:auto;white-space:nowrap} diff --git a/wp-content/plugins/google-site-kit/dist/assets/js/33-91e4cd835b2da520b8c7.js b/wp-content/plugins/google-site-kit/dist/assets/js/33-91e4cd835b2da520b8c7.js new file mode 100644 index 000000000..dccb5046a --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/js/33-91e4cd835b2da520b8c7.js @@ -0,0 +1 @@ +(window.__googlesitekit_webpackJsonp=window.__googlesitekit_webpackJsonp||[]).push([[33],{1138:function(e,t,l){"use strict";l.r(t);var r=l(2);function c(){return(c=Object.assign||function(e){for(var t=1;t0}});else{var t=function(t){for(var e=window.document,n=r(e);n;)n=r(e=n.ownerDocument);return e}(),e=[],n=null,o=null;IntersectionObserver.prototype.THROTTLE_TIMEOUT=100,IntersectionObserver.prototype.POLL_INTERVAL=null,IntersectionObserver.prototype.USE_MUTATION_OBSERVER=!0,IntersectionObserver._setupCrossOriginUpdater=function(){return n||(n=function(t,n){o=t&&n?u(t,n):{top:0,bottom:0,left:0,right:0,width:0,height:0},e.forEach((function(t){t._checkForIntersections()}))}),n},IntersectionObserver._resetCrossOriginUpdater=function(){n=null,o=null},IntersectionObserver.prototype.observe=function(t){if(!this._observationTargets.some((function(e){return e.element==t}))){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(t.ownerDocument),this._checkForIntersections()}},IntersectionObserver.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter((function(e){return e.element!=t})),this._unmonitorIntersections(t.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},IntersectionObserver.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},IntersectionObserver.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},IntersectionObserver.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter((function(t,e,n){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==n[e-1]}))},IntersectionObserver.prototype._parseRootMargin=function(t){var e=(t||"0px").split(/\s+/).map((function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}}));return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},IntersectionObserver.prototype._monitorIntersections=function(e){var n=e.defaultView;if(n&&-1==this._monitoringDocuments.indexOf(e)){var o=this._checkForIntersections,h=null,c=null;this.POLL_INTERVAL?h=n.setInterval(o,this.POLL_INTERVAL):(i(n,"resize",o,!0),i(e,"scroll",o,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in n&&(c=new n.MutationObserver(o)).observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),this._monitoringDocuments.push(e),this._monitoringUnsubscribes.push((function(){var t=e.defaultView;t&&(h&&t.clearInterval(h),s(t,"resize",o,!0)),s(e,"scroll",o,!0),c&&c.disconnect()}));var u=this.root&&(this.root.ownerDocument||this.root)||t;if(e!=u){var a=r(e);a&&this._monitorIntersections(a.ownerDocument)}}},IntersectionObserver.prototype._unmonitorIntersections=function(e){var n=this._monitoringDocuments.indexOf(e);if(-1!=n){var o=this.root&&(this.root.ownerDocument||this.root)||t;if(!this._observationTargets.some((function(t){var n=t.element.ownerDocument;if(n==e)return!0;for(;n&&n!=o;){var i=r(n);if((n=i&&i.ownerDocument)==e)return!0}return!1}))){var i=this._monitoringUnsubscribes[n];if(this._monitoringDocuments.splice(n,1),this._monitoringUnsubscribes.splice(n,1),i(),e!=o){var s=r(e);s&&this._unmonitorIntersections(s.ownerDocument)}}}},IntersectionObserver.prototype._unmonitorAllIntersections=function(){var t=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var e=0;e=0&&v>=0&&{top:a,bottom:f,left:p,right:d,width:g,height:v}||null),!b)break;m=m&&l(m)}return b}},IntersectionObserver.prototype._getRootRect=function(){var e;if(this.root&&!f(this.root))e=h(this.root);else{var n=f(this.root)?this.root:t,o=n.documentElement,r=n.body;e={top:0,left:0,right:o.clientWidth||r.clientWidth,width:o.clientWidth||r.clientWidth,bottom:o.clientHeight||r.clientHeight,height:o.clientHeight||r.clientHeight}}return this._expandRectByRootMargin(e)},IntersectionObserver.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map((function(e,n){return"px"==e.unit?e.value:e.value*(n%2?t.width:t.height)/100})),n={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return n.width=n.right-n.left,n.height=n.bottom-n.top,n},IntersectionObserver.prototype._hasCrossedThreshold=function(t,e){var n=t&&t.isIntersecting?t.intersectionRatio||0:-1,o=e.isIntersecting?e.intersectionRatio||0:-1;if(n!==o)for(var r=0;r=0&&t.item(n)!==this;);return n>-1};return!!n&&n.call(e,t)}n.r(t);var o=window._googlesitekitAnalyticsTrackingData||[];Array.isArray(o)&&function(e,t){var n=[];e.forEach((function(e){var o=function(n){("DOMContentLoaded"===e.on||r(n.target,e.selector)||r(n.target,e.selector.concat(" *")))&&t(e.action,e.metadata)};document.addEventListener(e.on,o,!0),n.push([e.on,o,!0])}))}(o,(function(e,t){window.gtag("event",e,t||void 0)}))}}); \ No newline at end of file diff --git a/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-activation-928104701ab1efd3fdff.js b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-activation-928104701ab1efd3fdff.js new file mode 100644 index 000000000..590273478 --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-activation-928104701ab1efd3fdff.js @@ -0,0 +1,22 @@ +(window.__googlesitekit_webpackJsonp=window.__googlesitekit_webpackJsonp||[]).push([[2],{1:function(e,t){e.exports=googlesitekit.i18n},10:function(e,t,n){"use strict";var r=n(90),a=n.n(r);n.d(t,"r",(function(){return a.a})),n.d(t,"g",(function(){return r.HelperText})),n.d(t,"h",(function(){return r.Input}));var i=n(171);n.d(t,"m",(function(){return i.a}));var o=n(217);n.d(t,"j",(function(){return o.a}));var c=n(218);n.d(t,"l",(function(){return c.a}));var l=n(112),s=n.n(l);n.d(t,"q",(function(){return s.a})),n.d(t,"o",(function(){return l.Option}));var u=n(219);n.d(t,"n",(function(){return u.a}));var d=n(216);n.d(t,"i",(function(){return d.a}));var f=n(215);n.d(t,"k",(function(){return f.a}));var g=n(91),p=n.n(g);n.d(t,"c",(function(){return p.a})),n.d(t,"d",(function(){return g.DialogContent})),n.d(t,"e",(function(){return g.DialogFooter}));var m=n(214);n.d(t,"b",(function(){return m.a}));var v=n(98);n.d(t,"a",(function(){return v.a})),n.d(t,"f",(function(){return v.b})),n.d(t,"p",(function(){return v.c}))},101:function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"c",(function(){return h})),n.d(t,"b",(function(){return y}));var r=n(21),a=n.n(r),i=n(6),o=n.n(i),c=n(5),l=n.n(c),s=n(7),u=n.n(s),d=n(4),f=n.n(d),g=n(46),p=n(8),m=f.a.createRegistryControl,v=function(e){var t;u()(e,"storeName is required to create a snapshot store.");var n={},r={deleteSnapshot:l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"DELETE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)})),restoreSnapshot:l.a.mark((function e(){var t,n,r,a,i,o,c=arguments;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=c.length>0&&void 0!==c[0]?c[0]:{},n=t.clearAfterRestore,r=void 0===n||n,e.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=e.sent,i=a.cacheHit,o=a.value,!i){e.next=13;break}return e.next=10,{payload:{snapshot:o},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!r){e.next=13;break}return e.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}}),e)})),createSnapshot:l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))},i=(t={},o()(t,"DELETE_SNAPSHOT",(function(){return Object(g.a)("datastore::cache::".concat(e))})),o()(t,"CREATE_SNAPSHOT",m((function(t){return function(){return Object(g.d)("datastore::cache::".concat(e),t.stores[e].store.getState())}}))),o()(t,"RESTORE_SNAPSHOT",(function(){return Object(g.b)("datastore::cache::".concat(e),p.b)})),t);return{initialState:n,actions:r,controls:i,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0,r=t.type,i=t.payload;switch(r){case"SET_STATE_FROM_SNAPSHOT":var o=i.snapshot,c=(o.error,a()(o,["error"]));return c;default:return e}}}},b=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Object.values(e.stores).filter((function(e){return Object.keys(e.getActions()).includes("restoreSnapshot")}))},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Promise.all(b(e).map((function(e){return e.getActions().createSnapshot()})))},y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Promise.all(b(e).map((function(e){return e.getActions().restoreSnapshot()})))}},102:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=200},105:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(11),o=n.n(i),c=n(72),l=n(1),s=n(20),u=n(56);function SourceLink(t){var n=t.name,r=t.href,a=t.className,i=t.external;return Object(u.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",a)},Object(c.a)(Object(l.sprintf)( +/* translators: %s: source link */ +Object(l.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(s.a,{key:"link",href:r,external:i})}))}SourceLink.propTypes={name:a.a.string,href:a.a.string,className:a.a.string,external:a.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},106:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=S&&S>0),o()(n,"mdc-layout-grid__cell--span-".concat(_,"-desktop"),12>=_&&_>0),o()(n,"mdc-layout-grid__cell--start-".concat(E,"-desktop"),12>=E&&E>0),o()(n,"mdc-layout-grid__cell--order-".concat(w,"-desktop"),12>=w&&w>0),o()(n,"mdc-layout-grid__cell--span-".concat(y,"-tablet"),8>=y&&y>0),o()(n,"mdc-layout-grid__cell--start-".concat(O,"-tablet"),8>=O&&O>0),o()(n,"mdc-layout-grid__cell--order-".concat(k,"-tablet"),8>=k&&k>0),o()(n,"mdc-layout-grid__cell--span-".concat(v,"-phone"),4>=v&&v>0),o()(n,"mdc-layout-grid__cell--start-".concat(b,"-phone"),4>=b&&b>0),o()(n,"mdc-layout-grid__cell--order-".concat(h,"-phone"),4>=h&&h>0),n))}),j)}Cell.propTypes={smSize:u.a.number,smStart:u.a.number,smOrder:u.a.number,mdSize:u.a.number,mdStart:u.a.number,mdOrder:u.a.number,lgSize:u.a.number,lgStart:u.a.number,lgOrder:u.a.number,size:u.a.number,alignTop:u.a.bool,alignMiddle:u.a.bool,alignBottom:u.a.bool,alignRight:u.a.bool,alignLeft:u.a.bool,smAlignRight:u.a.bool,mdAlignRight:u.a.bool,lgAlignRight:u.a.bool,className:u.a.string,children:u.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),l=n.n(c),s=n(11),u=n.n(s),d=n(2),f=Object(d.forwardRef)((function(t,n){var r=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",a()({ref:n,className:u()("mdc-layout-grid__inner",r)},c),i)}));f.displayName="Row",f.propTypes={className:l.a.string,children:l.a.node},f.defaultProps={className:""},t.a=f}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),l=n.n(c),s=n(11),u=n.n(s),d=n(2),f=Object(d.forwardRef)((function(t,n){var r=t.alignLeft,i=t.fill,c=t.className,l=t.children,s=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",a()({className:u()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":r,"mdc-layout-grid--collapsed":s,"mdc-layout-grid--fill":i})},d,{ref:n}),l)}));f.displayName="Grid",f.propTypes={alignLeft:l.a.bool,fill:l.a.bool,className:l.a.string,collapsed:l.a.bool,children:l.a.node},f.defaultProps={className:""},t.a=f}).call(this,n(3))},1111:function(e,t,n){"use strict";n.r(t),function(e){var t=n(212),r=n(122),a=n(851),i=n(23),o=n(172);Object(t.a)((function(){var t=document.getElementById("js-googlesitekit-activation");t&&(Object(r.render)(e.createElement(o.a,{viewContext:i.f},e.createElement(a.a,null)),t),t.classList.remove("googlesitekit-activation--loading"))}))}.call(this,n(3))},113:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(96),l=n.n(c),s=n(75),u=n.n(s),d=n(76),f=n.n(d),g=n(48),p=n.n(g),m=n(0),v=n.n(m),b=n(11),h=n.n(b),y=n(2),O=n(1),k=n(62),_=n(105),E=n(65),w=n(8);function S(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=p()(e);if(t){var a=p()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return f()(this,n)}}var j=function(t){u()(DataBlock,t);var n=S(DataBlock);function DataBlock(e){var t;return a()(this,DataBlock),(t=n.call(this,e)).handleClick=t.handleClick.bind(l()(t)),t.handleKeyPress=t.handleKeyPress.bind(l()(t)),t}return o()(DataBlock,[{key:"handleClick",value:function(){var e=this.props,t=e.stat;(0,e.handleStatSelection)(t)}},{key:"handleKeyPress",value:function(e){e.preventDefault();var t=this.props,n=t.stat,r=t.handleStatSelection;"Enter"!==e.key&&" "!==e.key||r(n)}},{key:"render",value:function(){var t=this.props,n=t.className,r=t.title,a=t.datapoint,i=t.datapointUnit,o=t.change,c=t.changeDataUnit,l=t.context,s=t.period,u=t.selected,d=t.handleStatSelection,f=t.source,g=t.sparkline,p=t.invertChangeColor,m=t.gatheringData,v=t.gatheringDataNoticeStyle,b="button"===l?"button":"",S=g;S&&p&&(S=Object(y.cloneElement)(g,{invertChangeColor:p}));var j=o;c&&(j="%"===c?Object(w.u)(o,{style:"percent",signDisplay:"never",maximumFractionDigits:1}):Object(w.u)(o,c)),s&&(j=Object(O.sprintf)(s,j));var N=void 0===a?a:Object(w.u)(a,i||void 0);return e.createElement("div",{className:h()("googlesitekit-data-block",n,"googlesitekit-data-block--".concat(l),{"googlesitekit-data-block--selected":u,"googlesitekit-data-block--is-gathering-data":m}),tabIndex:"button"!==l||m?"-1":"0",role:d&&b,onClick:m?void 0:d&&this.handleClick,onKeyPress:m?void 0:d&&this.handleKeyPress,"aria-disabled":m||void 0,"aria-label":d&&r,"aria-pressed":d&&u},e.createElement("div",{className:"googlesitekit-data-block__title-datapoint-wrapper"},e.createElement("h3",{className:" googlesitekit-subheading-1 googlesitekit-data-block__title "},r),!m&&e.createElement("div",{className:"googlesitekit-data-block__datapoint"},N)),!m&&e.createElement(y.Fragment,null,S&&e.createElement("div",{className:"googlesitekit-data-block__sparkline"},S),e.createElement("div",{className:"googlesitekit-data-block__change-source-wrapper"},e.createElement("div",{className:h()("googlesitekit-data-block__change",{"googlesitekit-data-block__change--no-change":!o})},e.createElement(y.Fragment,null,!!o&&e.createElement("span",{className:"googlesitekit-data-block__arrow"},e.createElement(k.a,{direction:01?Object(f.a)(u):[],b=function(e){return l()("googlesitekit-tooltip-indicator",{active:e===c})};return e.createElement("div",a()({className:l()("googlesitekit-tour-tooltip",p.className)},m),e.createElement(o.a,{className:"googlesitekit-tooltip-card"},e.createElement("div",{className:"googlesitekit-tooltip-body"},e.createElement("h2",{className:"googlesitekit-tooltip-title"},p.title),e.createElement("div",{className:"googlesitekit-tooltip-content"},p.content)),e.createElement(i.CardActions,{className:"googlesitekit-tooltip-actions"},e.createElement("ul",{className:"googlesitekit-tooltip-indicators"},v.map((function(t){return e.createElement("li",{key:"indicator-".concat(t),className:b(t)})}))),e.createElement("div",{className:"googlesitekit-tooltip-buttons"},0!==c&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},n),n.title),p.cta,s.title&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},s),s.title))),e.createElement(d.Button,a()({className:"googlesitekit-tooltip-close",text:!0,icon:e.createElement(g.a,{width:"14",height:"14"})},r))))}TourTooltip.propTypes={backProps:u.a.object.isRequired,closeProps:u.a.object.isRequired,index:u.a.number.isRequired,isLastStep:u.a.bool.isRequired,primaryProps:u.a.object.isRequired,size:u.a.number.isRequired,step:u.a.shape({content:u.a.node,title:u.a.node.isRequired,cta:u.a.oneOfType([u.a.element,u.a.bool]),className:u.a.string}).isRequired,tooltipProps:u.a.object.isRequired}}).call(this,n(3))},138:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r,a=S(n);try{for(a.s();!(r=a.n()).done;){var i=r.value,o=Q[i.question_ordinal],c=i.answer_ordinal||[];if(o&&!c.includes(o))return $++,!1}}catch(e){a.e(e)}finally{a.f()}}return t===$})),J=Object(g.useCallback)((function(e){I||(z(!0),W("question_answered",{question_ordinal:null==X?void 0:X.question_ordinal,answer:e}),setTimeout((function(){G(V,{answers:[].concat(o()(H),[{question_ordinal:null==X?void 0:X.question_ordinal,answer:e}])}),z(!1)}),300))}),[H,X,V,W,G,I]);(null==q?void 0:q.length)&&$>q.length&&((K=(M||[]).find((function(e){var t,n=S(e.trigger_condition||[]);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.answer_ordinal.includes(Q[r.question_ordinal]))return K=e,!0}}catch(e){n.e(e)}finally{n.f()}return!1})))||(K=M[0]));var Y=Object(g.useCallback)((function(){var e;W("follow_up_link_clicked",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}),W("survey_closed"),G(V,{hideSurvey:!0})}),[V,W,G,K]),Z=Object(g.useCallback)((function(){W("survey_closed"),D(!1)}),[W]),ee=Object(g.useCallback)((function(){G(V,{hideSurvey:!0})}),[V,G]);if(Object(g.useEffect)((function(){var e;K&&!m&&(v(!0),W("completion_shown",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}))}),[m,W,K]),Object(d.a)((function(){D(!0)})),U||!q||!M||void 0===F)return null;if(K)return e.createElement(f.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},e.createElement(y.a,{dismissSurvey:Z,ctaOnClick:Y,ctaText:K.follow_up_text,ctaURL:K.follow_up_url,title:K.completion_title},K.completion_text)));if(!P.includes(null==X?void 0:X.question_type))return null;var te={key:X.question_text,answerQuestion:J,dismissSurvey:Z,question:X.question_text,submitButtonText:(null==q?void 0:q.length)===$?Object(p.__)("Submit","google-site-kit"):Object(p.__)("Next","google-site-kit")};return e.createElement(f.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},"multi_select"===X.question_type&&e.createElement(_.a,a()({},te,{choices:X.question.answer_choice,minChoices:X.question.min_choices,maxChoices:X.question.max_choices})),"open_text"===X.question_type&&e.createElement(k.a,a()({},te,{subtitle:X.question.subtitle,placeholder:X.question.placeholder})),"rating"===X.question_type&&e.createElement(O.a,a()({},te,{choices:X.question.answer_choice})),"single_select"===X.question_type&&e.createElement(E.a,a()({},te,{choices:X.question.answer_choice})),!1===F&&1===(null==X?void 0:X.question_ordinal)&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(w.a,null))))}}).call(this,n(3))},181:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(13),o=n(64),c=function SurveyCompletion(t){var n=t.title,r=t.children,a=t.ctaText,c=t.ctaURL,l=t.ctaOnClick,s=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__completion"},e.createElement(o.a,{title:n,dismissSurvey:s}),e.createElement("div",{className:"googlesitekit-survey__body"},r),c&&a&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(i.Button,{href:c,onClick:l,target:"_blank"},a)))};c.propTypes={title:a.a.string.isRequired,children:a.a.node,ctaText:a.a.string,ctaURL:a.a.string,ctaOnClick:a.a.func,dismissSurvey:a.a.func.isRequired},c.defaultProps={title:"",children:null,ctaText:"",ctaURL:"",ctaOnClick:null},t.a=c}).call(this,n(3))},182:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(64),o=n(183),c=function SurveyQuestionRating(t){var n=t.question,r=t.choices,a=t.answerQuestion,c=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__question-rating"},e.createElement(i.a,{title:n,dismissSurvey:c}),e.createElement("div",{className:"googlesitekit-survey__body"},e.createElement("div",{className:"googlesitekit-survey__choices"},r.map((function(t,n){return e.createElement(o.a,{key:n,choice:t,answerQuestion:a})})))))};c.propTypes={question:a.a.string.isRequired,choices:a.a.arrayOf(a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string})).isRequired,answerQuestion:a.a.func.isRequired,dismissSurvey:a.a.func.isRequired},t.a=c}).call(this,n(3))},183:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(13),c=n(184),l=n(185),s=n(186),u=n(187),d=n(188),f={1:c.a,2:l.a,3:s.a,4:u.a,5:d.a},g=function SurveyQuestionRatingChoice(t){var n=t.choice,r=t.answerQuestion,a=Object(i.useCallback)((function(){"function"==typeof r&&r({answer:{answer_ordinal:n.answer_ordinal}})}),[r,n]),c=f[n.answer_ordinal];return c?e.createElement("div",{className:"googlesitekit-survey__choice"},e.createElement(o.Button,{icon:e.createElement(c,{width:30,height:30}),"aria-label":n.text,onClick:a}),e.createElement("p",null,n.text)):null};g.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string}).isRequired},t.a=g}).call(this,n(3))},184:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0,P=Object.values(x).filter((function(e){return e.selected})).length,R=d&&P===d,D=C||P1&&e.createElement(h.g,{persistent:!0},Object(m.sprintf)( +/* translators: %s: the number of answers. */ +Object(m.__)("Choose at least %s answers","google-site-kit"),u)),e.createElement(v.Button,{onClick:function(){var e=Object.values(x).filter((function(e){return e.selected})).map((function(e){var t=e.answer_ordinal,n=e.answer_text;return n?{answer_ordinal:t,answer_text:n}:{answer_ordinal:t}}));i({answer:e})},disabled:D},k)))};E.propTypes={question:u.a.string.isRequired,choices:u.a.arrayOf(u.a.shape({answer_ordinal:u.a.oneOfType([u.a.string,u.a.number]),text:u.a.string,write_in:u.a.bool})).isRequired,answerQuestion:u.a.func.isRequired,dismissSurvey:u.a.func.isRequired,minChoices:u.a.number,maxChoices:u.a.number,submitButtonText:u.a.string.isRequired},t.a=E}).call(this,n(3))},191:function(e,t,n){"use strict";(function(e){var r=n(6),a=n.n(r),i=n(14),o=n.n(i),c=n(0),l=n.n(c),s=n(2),u=n(13),d=n(64),f=n(192);function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t0,E=""===m||_&&""===y;return e.createElement("div",{className:"googlesitekit-single-select"},e.createElement(d.a,{title:n,dismissSurvey:i}),e.createElement("div",{className:"googlesitekit-survey__body"},k.map((function(t,n){return e.createElement(f.a,{key:n,value:m,setValue:v,writeIn:y,setWriteIn:O,choice:t})}))),e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(u.Button,{onClick:function(){var e=_?{answer_text:y}:{};a({answer:p({answer_ordinal:Number(m)},e)})},disabled:E},c)))};m.propTypes={question:l.a.string.isRequired,choices:l.a.arrayOf(l.a.shape({answer_ordinal:l.a.oneOfType([l.a.string,l.a.number]),text:l.a.string,write_in:l.a.bool})).isRequired,answerQuestion:l.a.func.isRequired,dismissSurvey:l.a.func.isRequired},t.a=m}).call(this,n(3))},192:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(1),c=n(13),l=n(10),s=n(60),u=n(102),d=function SurveyQuestionSingleSelectChoice(t){var n=t.value,r=t.setValue,a=t.writeIn,d=t.setWriteIn,f=t.choice,g=f.answer_ordinal,p=f.text,m=f.write_in,v=n===g,b="googlesitekit-survey__multi-select-".concat(g,"-").concat(p);return e.createElement("div",{className:"googlesitekit-single-select__choice"},e.createElement(c.Radio,{id:p.replace(/ /g,"-"),value:g,checked:v,name:p,onClick:function(){return r(g)}},p),m&&e.createElement(i.Fragment,null,e.createElement(s.a,null,e.createElement("label",{htmlFor:b},Object(o.sprintf)( +/* translators: %s: Option name */ +Object(o.__)("Text input for option %s","google-site-kit"),p))),e.createElement(l.r,null,e.createElement(l.h,{id:b,onChange:function(e){return d(e.target.value.slice(0,u.a))},value:a,disabled:!v}))))};d.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string,write_in:a.a.bool}),value:a.a.string.isRequired,setValue:a.a.func.isRequired,writeIn:a.a.string.isRequired,setWriteIn:a.a.func.isRequired},t.a=d}).call(this,n(3))},193:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SurveyTerms}));var r=n(1),a=n(72),i=n(4),o=n.n(i),c=n(15),l=n(20),s=o.a.useSelect;function SurveyTerms(){var t=s((function(e){return e(c.c).getGooglePrivacyPolicyURL()})),n=s((function(e){return e(c.c).getGoogleTermsURL()}));return e.createElement("p",{className:"googlesitekit-survey__terms"},Object(a.a)(Object(r.__)("By continuing, you agree to allow Google to use your answers and account info to improve services, per our Privacy & Terms.","google-site-kit"),{privacy:e.createElement(l.a,{href:t,external:!0}),terms:e.createElement(l.a,{href:n,external:!0})}))}}).call(this,n(3))},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(23),a=function(e){return r.e.includes(e)}},20:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),l=n.n(c),s=n(11),u=n.n(s),d=n(120),f=n(1),g=n(2),p=Object(g.forwardRef)((function(t,n){var r,i=t["aria-label"],c=t.arrow,l=t.back,s=t.caps,g=t.children,p=t.className,m=t.danger,v=t.disabled,b=t.external,h=t.hideExternalIndicator,y=t.href,O=t.inverse,k=t.onClick,_=t.small,E=t.to,w=o()(t,["aria-label","arrow","back","caps","children","className","danger","disabled","external","hideExternalIndicator","href","inverse","onClick","small","to"]),S=y||E||!k?E?"ROUTER_LINK":b?"EXTERNAL_LINK":"LINK":v?"BUTTON_DISABLED":"BUTTON",j="BUTTON"===S||"BUTTON_DISABLED"===S?"button":"ROUTER_LINK"===S?d.b:"a",N=("EXTERNAL_LINK"===S&&(r=Object(f._x)("(opens in a new tab)","screen reader text","google-site-kit")),"BUTTON_DISABLED"===S&&(r=Object(f._x)("(disabled)","screen reader text","google-site-kit")),r?i?"".concat(i," ").concat(r):"string"==typeof g?"".concat(g," ").concat(r):void 0:i);return e.createElement(j,a()({"aria-label":N,className:u()("googlesitekit-cta-link",p,{"googlesitekit-cta-link--arrow":c,"googlesitekit-cta-link--external":b&&!h,"googlesitekit-cta-link--inverse":O,"googlesitekit-cta-link--back":l,"googlesitekit-cta-link--small":_,"googlesitekit-cta-link--caps":s,"googlesitekit-cta-link--danger":m,"googlesitekit-cta-link--disabled":v}),disabled:v,href:"LINK"!==S&&"EXTERNAL_LINK"!==S||v?void 0:y,onClick:k,rel:"EXTERNAL_LINK"===S?"noopener noreferrer":void 0,ref:n,target:"EXTERNAL_LINK"===S?"_blank":void 0,to:E},w),g)}));p.propTypes={arrow:l.a.bool,back:l.a.bool,caps:l.a.bool,children:l.a.node,className:l.a.string,danger:l.a.bool,disabled:l.a.bool,external:l.a.bool,hideExternalIndicator:l.a.bool,href:l.a.string,inverse:l.a.bool,onClick:l.a.func,small:l.a.bool,to:l.a.string},p.defaultProps={arrow:!1,back:!1,caps:!1,className:"",danger:!1,disabled:!1,external:!1,hideExternalIndicator:!1,href:"",inverse:!1,small:!1},t.a=p}).call(this,n(3))},23:function(e,t,n){"use strict";n.d(t,"j",(function(){return r})),n.d(t,"h",(function(){return a})),n.d(t,"k",(function(){return i})),n.d(t,"i",(function(){return o})),n.d(t,"m",(function(){return c})),n.d(t,"p",(function(){return l})),n.d(t,"f",(function(){return s})),n.d(t,"o",(function(){return u})),n.d(t,"g",(function(){return d})),n.d(t,"n",(function(){return f})),n.d(t,"q",(function(){return g})),n.d(t,"l",(function(){return p})),n.d(t,"d",(function(){return m})),n.d(t,"a",(function(){return v})),n.d(t,"c",(function(){return b})),n.d(t,"b",(function(){return h})),n.d(t,"e",(function(){return y}));var r="mainDashboard",a="entityDashboard",i="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",l="userInput",s="activation",u="splash",d="adminBar",f="settings",g="wpDashboard",p="moduleSetup",m="traffic",v="content",b="speed",h="monetization",y=[r,a,i,o,l,u,f,p]},247:function(e,t,n){"use strict";(function(e){var r=n(1),a=n(106),i=n(248),o=n(60);t.a=function Logo(){return e.createElement("div",{className:"googlesitekit-logo","aria-hidden":"true"},e.createElement(a.a,{className:"googlesitekit-logo__logo-g",height:"34",width:"32"}),e.createElement(i.a,{className:"googlesitekit-logo__logo-sitekit",height:"26",width:"99"}),e.createElement(o.a,null,Object(r.__)("Site Kit by Google Logo","google-site-kit")))}}).call(this,n(3))},248:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:i;return t instanceof Set&&t.has(e)}}).call(this,n(22))},43:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(37),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var n=e.split("-");return 3===n.length&&Object(r.a)(new Date(e))}},46:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return b})),n.d(t,"d",(function(){return h})),n.d(t,"a",(function(){return y})),n.d(t,"c",(function(){return O}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=(n(24),n(8));function l(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==v[2]?v[2]:{},o=i.ttl,l=void 0===o?c.b:o,s=i.timestamp,u=void 0===s?Math.round(Date.now()/1e3):s,f=i.isError,g=void 0!==f&&f,t.next=3,m();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(d).concat(n),JSON.stringify({timestamp:u,ttl:l,value:r,isError:g})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(e,n){return t.apply(this,arguments)}}(),y=function(){var t=o()(a.a.mark((function t(n){var r;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m();case 2:if(!(r=t.sent)){t.next=13;break}return t.prev=4,r.removeItem("".concat(d).concat(n)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(e){return t.apply(this,arguments)}}(),O=function(){var t=o()(a.a.mark((function t(){var n,r,i,o;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m();case 2:if(!(n=t.sent)){t.next=14;break}for(t.prev=4,r=[],i=0;i1280?a:e>960?i:e>600?o:c}},51:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"c",(function(){return c})),n.d(t,"e",(function(){return l}));var r=n(100);function a(e){try{return new URL(e).pathname}catch(e){}return null}function i(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function o(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function l(e,t){if(!Object(r.a)(e))return e;if(e.length<=t)return e;var n=new URL(e),a=e.replace(n.origin,"");if(a.length=600;function $e(){return($e=d()(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),t.preventDefault(),!le){e.next=5;break}return e.next=5,le(t);case 5:Xe();case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Xe(){Le(!0),setTimeout(d()(s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,He();case 2:Ke()&&Me(!0),t=new Event("notificationDismissed"),document.dispatchEvent(t);case 5:case"end":return e.stop()}}),e)}))),350)}Object(k.a)(d()(s.a.mark((function e(){var t,n;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!($>0)){e.next=3;break}return e.next=3,tt();case 3:if(!Y){e.next=9;break}return e.next=6,Object(B.b)(Ue);case 6:t=e.sent,n=t.cacheHit,Me(n);case 9:if(!de){e.next=12;break}return e.next=12,He();case 12:case"end":return e.stop()}}),e)}))));var Je=G((function(e){return e(H.a).isNavigatingTo(v||"")})),Ye=W(H.a).navigateTo;function Ze(){return(Ze=d()(s.a.mark((function e(t){var n,r,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),n=!0,!ce){e.next=13;break}return Ve(!0),e.next=6,ce(t);case 6:if(e.t0=e.sent,e.t0){e.next=9;break}e.t0={};case 9:r=e.t0,a=r.dismissOnCTAClick,n=void 0===a||a,Ke()&&Ve(!1);case 13:Y&&n&&Xe(),Object(w.a)(v)&&"_blank"!==h&&!t.defaultPrevented&&(t.preventDefault(),Ye(v));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var et=Object(E.useCallback)((function(t){Object(P.c)(a)&&(t.preventDefault(),e.history.replaceState({},"",a),e.scrollTo({top:Object(C.a)(a,We),behavior:"smooth"}))}),[a,We]);function tt(){return nt.apply(this,arguments)}function nt(){return(nt=d()(s.a.mark((function e(){var t,n,r;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(B.b)(Ue);case 2:if(t=e.sent,!(n=t.value)){e.next=10;break}if((r=Object(U.a)(n)).setSeconds(r.getSeconds()+parseInt($,10)),!(r1&&void 0!==arguments[1]?arguments[1]:{};return{__html:i.a.sanitize(e,t)}};function c(e){var t,n="object"===a()(e)?e.toString():e;return null==n||null===(t=n.replace)||void 0===t?void 0:t.call(n,/\/+$/,"")}},64:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(1),o=n(170),c=n(358),l=n(13),s=n(106),u=function SurveyHeader(t){var n=t.title,r=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__header"},e.createElement("div",{className:"googlesitekit-survey__header-logo"},e.createElement(s.a,{width:24,height:24})),e.createElement("div",{className:"googlesitekit-survey__header-details"},e.createElement("h3",null,n),e.createElement(l.Button,{"aria-label":Object(i.__)("Dismiss","google-site-kit"),icon:e.createElement(o.a,{icon:c.a,size:40}),onClick:r,className:"googlesitekit-survey__header-close"})))};u.propTypes={title:a.a.string.isRequired,dismissSurvey:a.a.func.isRequired},t.a=u}).call(this,n(3))},65:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),a=n.n(r),i=n(0),o=n.n(i),c=n(11),l=n.n(c),s=n(1),u={DEFAULT:"default",OVERLAY:"overlay",SMALL:"small",SMALL_OVERLAY:"small-overlay",LARGE:"large"};function GatheringDataNotice(t){var n=t.style;return e.createElement("div",{className:l()("googlesitekit-gathering-data-notice",a()({},"googlesitekit-gathering-data-notice--has-style-".concat(n),!!n))},e.createElement("span",null,Object(s.__)("Gathering data…","google-site-kit")))}GatheringDataNotice.propTypes={style:o.a.oneOf(Object.values(u))},t.b=GatheringDataNotice}).call(this,n(3))},68:function(e,t,n){"use strict";n.d(t,"d",(function(){return r.e})),n.d(t,"c",(function(){return r.d})),n.d(t,"b",(function(){return r.b})),n.d(t,"a",(function(){return r.a})),n.d(t,"e",(function(){return r.f})),n.d(t,"g",(function(){return c})),n.d(t,"h",(function(){return s})),n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return d.a})),n.d(t,"f",(function(){return g})),n.d(t,"k",(function(){return l.a}));var r=n(36),a=n(7),i=n.n(a),o=n(37),c=function(e){i()(Object(o.a)(e),r.c);var t="".concat(e.getMonth()+1),n="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,n.length<2?"0".concat(n):n].join("-")},l=n(38),s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=Object(l.a)(e);return n.setDate(n.getDate()-t),c(n)},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},d=n(43);var f=n(1);function g(){var e=function(e){return Object(f.sprintf)( +/* translators: %s: number of days */ +Object(f._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},70:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(2),a=Object(r.createContext)(""),i=(a.Consumer,a.Provider);t.b=a},73:function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return k})),n.d(t,"d",(function(){return E})),n.d(t,"b",(function(){return w})),n.d(t,"a",(function(){return S}));var r=n(14),a=n.n(r),i=n(30),o=n.n(i),c=n(6),l=n.n(c),s=n(21),u=n.n(s),d=n(26),f=n(71),g=n.n(f),p=n(1);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function v(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=h(e,t),r=n.formatUnit,a=n.formatDecimal;try{return r()}catch(e){return a()}},h=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var n=Math.floor(e/60/60),r=Math.floor(e/60%60),a=Math.floor(e%60);return{hours:n,minutes:r,seconds:a,formatUnit:function(){var i=t.unitDisplay,o=v(v({unitDisplay:void 0===i?"short":i},u()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?E(a,v(v({},o),{},{unit:"second"})):Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?E(a,v(v({},o),{},{unit:"second"})):"",r?E(r,v(v({},o),{},{unit:"minute"})):"",n?E(n,v(v({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(p.__)("%ds","google-site-kit"),a);if(0===e)return t;var i=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(p.__)("%dm","google-site-kit"),r),o=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(p.__)("%dh","google-site-kit"),n);return Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",r?i:"",n?o:"").trim()}}},y=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},O=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in millions. +Object(p.__)("%sM","google-site-kit"),E(y(e),e%10==0?{}:t)):1e4<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),E(y(e))):1e3<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),E(y(e),e%10==0?{}:t)):E(e,{signDisplay:"never",maximumFractionDigits:1})},k=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(d.isFinite)(e)?e:Number(e),Object(d.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var n={};if("%"===t)n={style:"percent",maximumFractionDigits:2};else{if("s"===t)return b(e,{unitDisplay:"narrow"});t&&"string"==typeof t?n={style:"currency",currency:t}:Object(d.isPlainObject)(t)&&(n=v({},t))}var r=n,a=r.style,i=void 0===a?"metric":a;return"metric"===i?O(e):"duration"===i?b(e,t):E(e,n)},_=g()(console.warn),E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,i=u()(t,["locale"]);try{return new Intl.NumberFormat(r,i).format(e)}catch(t){_("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(r),", ").concat(JSON.stringify(i)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},l=["signDisplay","compactDisplay"],s={},d=0,f=Object.entries(i);d1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,a=t.style,i=void 0===a?"long":a,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var l=new Intl.ListFormat(r,{style:i,type:c});return l.format(e)} +/* translators: used between list items, there is a space after the comma. */var s=Object(p.__)(", ","google-site-kit");return e.join(s)},S=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,n=Object(d.get)(t,["_googlesitekitLegacyData","locale"]);if(n){var r=n.match(/^(\w{2})?(_)?(\w{2})/);if(r&&r[0])return r[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,n(22))},78:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var r=n(124),a=n.n(r)()(e)}).call(this,n(22))},8:function(e,t,n){"use strict";n.d(t,"z",(function(){return c.b})),n.d(t,"w",(function(){return l.a})),n.d(t,"A",(function(){return l.b})),n.d(t,"y",(function(){return g})),n.d(t,"f",(function(){return p.a})),n.d(t,"m",(function(){return p.b})),n.d(t,"u",(function(){return m.c})),n.d(t,"v",(function(){return m.d})),n.d(t,"r",(function(){return m.b})),n.d(t,"l",(function(){return m.a})),n.d(t,"s",(function(){return y})),n.d(t,"g",(function(){return O})),n.d(t,"b",(function(){return k.b})),n.d(t,"a",(function(){return k.a})),n.d(t,"c",(function(){return k.e})),n.d(t,"i",(function(){return k.f})),n.d(t,"x",(function(){return k.k})),n.d(t,"j",(function(){return _.b})),n.d(t,"q",(function(){return _.c})),n.d(t,"e",(function(){return _.a})),n.d(t,"o",(function(){return E.b})),n.d(t,"k",(function(){return E.a})),n.d(t,"t",(function(){return E.d})),n.d(t,"p",(function(){return w})),n.d(t,"n",(function(){return S})),n.d(t,"d",(function(){return j})),n.d(t,"B",(function(){return N})),n.d(t,"h",(function(){return x}));var r=n(123),a=n.n(r),i=n(118),o=n.n(i),c=n(32),l=n(63),s=n(30),u=n.n(s),d=n(81),f=n.n(d),g=function(e){return f()(JSON.stringify(function e(t){var n={};return Object.keys(t).sort().forEach((function(r){var a=t[r];a&&"object"===u()(a)&&!Array.isArray(a)&&(a=e(a)),n[r]=a})),n}(e)))};var p=n(83),m=(n(84),n(73));function v(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function b(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function h(e){return e.replace(/\n/gi,"
")}function y(e){for(var t=e,n=0,r=[v,b,h];n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){l=!0,i=e},f:function(){try{c||null==n.return||n.return()}finally{if(l)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:location,n=new URL(t.href);if(e)return n.searchParams&&n.searchParams.get?n.searchParams.get(e):l(e);var r,o={},c=i(n.searchParams.entries());try{for(c.s();!(r=c.n()).done;){var s=a()(r.value,2),u=s[0],d=s[1];o[u]=d}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,n(22))},84:function(e,t,n){"use strict";(function(e){n(44),n(45)}).call(this,n(22))},85:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"a",(function(){return c}));var r=n(169),a=n(62),i=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=n.invertColor,o=void 0!==i&&i;return Object(r.a)(e.createElement(a.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,n,r,a,i,o,c,l,s,u,d,f,g,p,m;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(r=n.rows)||void 0===r?void 0:r.length)||(null==e||null===(a=e[0])||void 0===a||null===(i=a.data)||void 0===i||null===(o=i.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(l=c.metrics)||void 0===l||null===(s=l[0])||void 0===s||null===(u=s.values)||void 0===u?void 0:u[0])===(null==e||null===(d=e[0])||void 0===d||null===(f=d.data)||void 0===f||null===(g=f.totals)||void 0===g||null===(p=g[0])||void 0===p||null===(m=p.values)||void 0===m?void 0:m[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,n(3))},851:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ActivationApp}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=n(14),l=n.n(c),s=n(2),u=n(1),d=n(4),f=n.n(d),g=n(13),p=n(247),m=n(10),v=n(8),b=n(15),h=n(12),y=n(40),O=n(19),k=f.a.useSelect,_=f.a.useDispatch;function ActivationApp(){var t=_(y.a).navigateTo,n=Object(O.a)(),r=k((function(e){return e(b.c).getAdminURL("googlesitekit-dashboard")})),i=k((function(e){return e(b.c).getAdminURL("googlesitekit-splash")})),c=k((function(e){return e(h.a).hasCapability(h.i)})),d=Object(s.useState)(!1),f=l()(d,2),E=f[0],w=f[1],S=c?r:i,j=c?Object(u.__)("Go to Dashboard","google-site-kit"):Object(u.__)("Start setup","google-site-kit");Object(s.useEffect)((function(){!E&&S&&(Object(v.z)(n,"view_notification"),w(!0))}),[n,S,E]);var N=Object(s.useCallback)(function(){var e=o()(a.a.mark((function e(r){var i;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r.preventDefault(),i=c?"dashboard":"splash",e.next=4,Object(v.z)(n,"confirm_notification",i);case 4:t(S);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[S,c,t,n]);return S?e.createElement(m.f,null,e.createElement(m.p,null,e.createElement(m.a,{size:12},e.createElement(p.a,null),e.createElement("h3",{className:"googlesitekit-heading-3 googlesitekit-activation__title"},Object(u.__)("Congratulations, the Site Kit plugin is now activated.","google-site-kit")),e.createElement(g.Button,{id:"start-setup-link",className:"googlesitekit-start-setup",onClick:N},j)))):null}}).call(this,n(3))},86:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),a=n.n(r),i=n(87),o=n(88);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,a=l(l({},s),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(a,n);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(o.a)(a,n,c,r)}}}).call(this,n(22))},87:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var r=n(52),a=n(31);function i(t,n){var i,o=Object(r.a)(n);return function(){var n=e.document;if(void 0===i&&(i=!!n.querySelector("script[".concat(a.b,"]"))),!i){var r=n.createElement("script");r.setAttribute(a.b,""),r.async=!0,r.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),n.head.appendChild(r),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,n(22))},88:function(e,t,n){"use strict";n.d(t,"a",(function(){return g}));var r=n(5),a=n.n(r),i=n(6),o=n.n(i),c=n(16),l=n.n(c),s=n(52),u=n(42);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t0&&void 0!==c[0]?c[0]:{},n=t.clearAfterRestore,r=void 0===n||n,e.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=e.sent,i=a.cacheHit,o=a.value,!i){e.next=13;break}return e.next=10,{payload:{snapshot:o},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!r){e.next=13;break}return e.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}}),e)})),createSnapshot:s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))},i=(t={},o()(t,"DELETE_SNAPSHOT",(function(){return Object(g.a)("datastore::cache::".concat(e))})),o()(t,"CREATE_SNAPSHOT",m((function(t){return function(){return Object(g.d)("datastore::cache::".concat(e),t.stores[e].store.getState())}}))),o()(t,"RESTORE_SNAPSHOT",(function(){return Object(g.b)("datastore::cache::".concat(e),p.b)})),t);return{initialState:n,actions:r,controls:i,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0,r=t.type,i=t.payload;switch(r){case"SET_STATE_FROM_SNAPSHOT":var o=i.snapshot,c=(o.error,a()(o,["error"]));return c;default:return e}}}},b=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Object.values(e.stores).filter((function(e){return Object.keys(e.getActions()).includes("restoreSnapshot")}))},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Promise.all(b(e).map((function(e){return e.getActions().createSnapshot()})))},y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Promise.all(b(e).map((function(e){return e.getActions().restoreSnapshot()})))}},102:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=200},105:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(11),o=n.n(i),c=n(72),s=n(1),l=n(20),u=n(56);function SourceLink(t){var n=t.name,r=t.href,a=t.className,i=t.external;return Object(u.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",a)},Object(c.a)(Object(s.sprintf)( +/* translators: %s: source link */ +Object(s.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(l.a,{key:"link",href:r,external:i})}))}SourceLink.propTypes={name:a.a.string,href:a.a.string,className:a.a.string,external:a.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},106:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=j&&j>0),o()(n,"mdc-layout-grid__cell--span-".concat(k,"-desktop"),12>=k&&k>0),o()(n,"mdc-layout-grid__cell--start-".concat(_,"-desktop"),12>=_&&_>0),o()(n,"mdc-layout-grid__cell--order-".concat(w,"-desktop"),12>=w&&w>0),o()(n,"mdc-layout-grid__cell--span-".concat(y,"-tablet"),8>=y&&y>0),o()(n,"mdc-layout-grid__cell--start-".concat(O,"-tablet"),8>=O&&O>0),o()(n,"mdc-layout-grid__cell--order-".concat(E,"-tablet"),8>=E&&E>0),o()(n,"mdc-layout-grid__cell--span-".concat(v,"-phone"),4>=v&&v>0),o()(n,"mdc-layout-grid__cell--start-".concat(b,"-phone"),4>=b&&b>0),o()(n,"mdc-layout-grid__cell--order-".concat(h,"-phone"),4>=h&&h>0),n))}),S)}Cell.propTypes={smSize:u.a.number,smStart:u.a.number,smOrder:u.a.number,mdSize:u.a.number,mdStart:u.a.number,mdOrder:u.a.number,lgSize:u.a.number,lgStart:u.a.number,lgOrder:u.a.number,size:u.a.number,alignTop:u.a.bool,alignMiddle:u.a.bool,alignBottom:u.a.bool,alignRight:u.a.bool,alignLeft:u.a.bool,smAlignRight:u.a.bool,mdAlignRight:u.a.bool,lgAlignRight:u.a.bool,className:u.a.string,children:u.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),f=Object(d.forwardRef)((function(t,n){var r=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",a()({ref:n,className:u()("mdc-layout-grid__inner",r)},c),i)}));f.displayName="Row",f.propTypes={className:s.a.string,children:s.a.node},f.defaultProps={className:""},t.a=f}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),f=Object(d.forwardRef)((function(t,n){var r=t.alignLeft,i=t.fill,c=t.className,s=t.children,l=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",a()({className:u()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":r,"mdc-layout-grid--collapsed":l,"mdc-layout-grid--fill":i})},d,{ref:n}),s)}));f.displayName="Grid",f.propTypes={alignLeft:s.a.bool,fill:s.a.bool,className:s.a.string,collapsed:s.a.bool,children:s.a.node},f.defaultProps={className:""},t.a=f}).call(this,n(3))},1112:function(e,t,n){"use strict";n.r(t),function(e){var t=n(852),r=n.n(t),a=n(212),i=n(122),o=n(8),c=n(172),s=n(853),l=n(23),u=r()((function(){var t=document.getElementById("js-googlesitekit-adminbar-modules");t&&(Object(i.render)(e.createElement(c.a,{viewContext:l.g},e.createElement(s.a,null)),t),Object(o.z)(l.g,"view_urlsummary"))}));Object(a.a)((function(){var e=document.getElementById("wp-admin-bar-google-site-kit");e&&(e.addEventListener("mouseover",u,{once:!0}),e.addEventListener("focusin",u,{once:!0}))}))}.call(this,n(3))},113:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(96),s=n.n(c),l=n(75),u=n.n(l),d=n(76),f=n.n(d),g=n(48),p=n.n(g),m=n(0),v=n.n(m),b=n(11),h=n.n(b),y=n(2),O=n(1),E=n(62),k=n(105),_=n(65),w=n(8);function j(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=p()(e);if(t){var a=p()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return f()(this,n)}}var S=function(t){u()(DataBlock,t);var n=j(DataBlock);function DataBlock(e){var t;return a()(this,DataBlock),(t=n.call(this,e)).handleClick=t.handleClick.bind(s()(t)),t.handleKeyPress=t.handleKeyPress.bind(s()(t)),t}return o()(DataBlock,[{key:"handleClick",value:function(){var e=this.props,t=e.stat;(0,e.handleStatSelection)(t)}},{key:"handleKeyPress",value:function(e){e.preventDefault();var t=this.props,n=t.stat,r=t.handleStatSelection;"Enter"!==e.key&&" "!==e.key||r(n)}},{key:"render",value:function(){var t=this.props,n=t.className,r=t.title,a=t.datapoint,i=t.datapointUnit,o=t.change,c=t.changeDataUnit,s=t.context,l=t.period,u=t.selected,d=t.handleStatSelection,f=t.source,g=t.sparkline,p=t.invertChangeColor,m=t.gatheringData,v=t.gatheringDataNoticeStyle,b="button"===s?"button":"",j=g;j&&p&&(j=Object(y.cloneElement)(g,{invertChangeColor:p}));var S=o;c&&(S="%"===c?Object(w.u)(o,{style:"percent",signDisplay:"never",maximumFractionDigits:1}):Object(w.u)(o,c)),l&&(S=Object(O.sprintf)(l,S));var N=void 0===a?a:Object(w.u)(a,i||void 0);return e.createElement("div",{className:h()("googlesitekit-data-block",n,"googlesitekit-data-block--".concat(s),{"googlesitekit-data-block--selected":u,"googlesitekit-data-block--is-gathering-data":m}),tabIndex:"button"!==s||m?"-1":"0",role:d&&b,onClick:m?void 0:d&&this.handleClick,onKeyPress:m?void 0:d&&this.handleKeyPress,"aria-disabled":m||void 0,"aria-label":d&&r,"aria-pressed":d&&u},e.createElement("div",{className:"googlesitekit-data-block__title-datapoint-wrapper"},e.createElement("h3",{className:" googlesitekit-subheading-1 googlesitekit-data-block__title "},r),!m&&e.createElement("div",{className:"googlesitekit-data-block__datapoint"},N)),!m&&e.createElement(y.Fragment,null,j&&e.createElement("div",{className:"googlesitekit-data-block__sparkline"},j),e.createElement("div",{className:"googlesitekit-data-block__change-source-wrapper"},e.createElement("div",{className:h()("googlesitekit-data-block__change",{"googlesitekit-data-block__change--no-change":!o})},e.createElement(y.Fragment,null,!!o&&e.createElement("span",{className:"googlesitekit-data-block__arrow"},e.createElement(E.a,{direction:01?Object(f.a)(u):[],b=function(e){return s()("googlesitekit-tooltip-indicator",{active:e===c})};return e.createElement("div",a()({className:s()("googlesitekit-tour-tooltip",p.className)},m),e.createElement(o.a,{className:"googlesitekit-tooltip-card"},e.createElement("div",{className:"googlesitekit-tooltip-body"},e.createElement("h2",{className:"googlesitekit-tooltip-title"},p.title),e.createElement("div",{className:"googlesitekit-tooltip-content"},p.content)),e.createElement(i.CardActions,{className:"googlesitekit-tooltip-actions"},e.createElement("ul",{className:"googlesitekit-tooltip-indicators"},v.map((function(t){return e.createElement("li",{key:"indicator-".concat(t),className:b(t)})}))),e.createElement("div",{className:"googlesitekit-tooltip-buttons"},0!==c&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},n),n.title),p.cta,l.title&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},l),l.title))),e.createElement(d.Button,a()({className:"googlesitekit-tooltip-close",text:!0,icon:e.createElement(g.a,{width:"14",height:"14"})},r))))}TourTooltip.propTypes={backProps:u.a.object.isRequired,closeProps:u.a.object.isRequired,index:u.a.number.isRequired,isLastStep:u.a.bool.isRequired,primaryProps:u.a.object.isRequired,size:u.a.number.isRequired,step:u.a.shape({content:u.a.node,title:u.a.node.isRequired,cta:u.a.oneOfType([u.a.element,u.a.bool]),className:u.a.string}).isRequired,tooltipProps:u.a.object.isRequired}}).call(this,n(3))},138:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t||{},a=n.slug,i=void 0===a?"":a,o=n.name,c=void 0===o?"":o,s=n.owner,l=void 0===s?{}:s;if(!i||!c)return e;var u="",d="";return"analytics"===i?e.match(/account/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics account, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/property/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/view/i)&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics view, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")):"search-console"===i&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Search Console property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")),u||(u=Object(r.sprintf)( +/* translators: %s: module name */ +Object(r.__)("Your Google account does not have sufficient permissions to access %s data, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"),c)),l&&l.login&&(d=Object(r.sprintf)( +/* translators: %s: owner name */ +Object(r.__)('This service was originally connected by the administrator "%s" — you can contact them for more information.',"google-site-kit"),l.login)),d||(d=Object(r.__)("This service was originally connected by an administrator — you can contact them for more information.","google-site-kit")),"".concat(u," ").concat(d)}},145:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(7),a=n.n(r),i=function(e,t){var n=t.dateRangeLength;a()(Array.isArray(e),"report must be an array to partition."),a()(Number.isInteger(n)&&n>0,"dateRangeLength must be a positive integer.");var r=-1*n;return{currentRange:e.slice(r),compareRange:e.slice(2*r,r)}}},146:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return RecoverableModules}));var r=n(0),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function RecoverableModules(t){var n=t.moduleSlugs,r=u((function(e){var t=e(s.a).getModules();if(void 0!==t)return n.map((function(e){return t[e].name}))}));if(void 0===r)return null;var a=1===r.length?Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s data was previously shared by an admin who no longer has access. Please contact another admin to restore it.","google-site-kit"),r[0]):Object(i.sprintf)( +/* translators: %s: List of module names */ +Object(i.__)("The data for the following modules was previously shared by an admin who no longer has access: %s. Please contact another admin to restore it.","google-site-kit"),r.join(Object(i._x)(", ","Recoverable modules","google-site-kit")));return e.createElement(l.a,{title:Object(i.__)("Data Unavailable","google-site-kit"),description:a})}RecoverableModules.propTypes={moduleSlugs:a.a.arrayOf(a.a.string).isRequired}}).call(this,n(3))},147:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return FeatureTours}));var r=n(97),a=n(4),i=n.n(a),o=n(12),c=n(19),s=n(127),l=i.a.useSelect,u=i.a.useDispatch;function FeatureTours(){var t=Object(c.a)(),n=u(o.a).triggerTourForView;Object(r.a)((function(){n(t)}));var a=l((function(e){return e(o.a).getCurrentTour()}));return a?e.createElement(s.a,{tourID:a.slug,steps:a.steps,gaEventCategory:a.gaEventCategory,callback:a.callback}):null}}).call(this,n(3))},148:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ModuleIcon}));var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(4),u=n.n(l),d=n(17),f=u.a.useSelect;function ModuleIcon(t){var n=t.slug,r=t.size,i=o()(t,["slug","size"]),c=f((function(e){return e(d.a).getModuleIcon(n)}));return c?e.createElement(c,a()({width:r,height:r},i)):null}ModuleIcon.propTypes={slug:s.a.string.isRequired,size:s.a.number},ModuleIcon.defaultProps={size:33}}).call(this,n(3))},149:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(2),a=n(4),i=n.n(a),o=n(50),c=i.a.useDispatch;function s(e,t,n){var a=c(o.a),i=a.setWidgetState,s=a.unsetWidgetState;Object(r.useEffect)((function(){return i(e,t,n),function(){s(e,t,n)}}),[e,t,n,i,s])}},15:function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return i}));var r="core/site",a="primary",i="secondary"},151:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportZero}));var r=n(0),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function ReportZero(t){var n=t.moduleSlug,r=u((function(e){return e(s.a).getModule(n)}));return e.createElement(l.a,{title:Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s Gathering Data","google-site-kit"),null==r?void 0:r.name),description:Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s data is not yet available, please check back later","google-site-kit"),null==r?void 0:r.name)})}ReportZero.propTypes={moduleSlug:a.a.string.isRequired}}).call(this,n(3))},153:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e){return new Array(null!=e?e:0).fill().map((function(e,t){return t}))}},154:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r,a=j(n);try{for(a.s();!(r=a.n()).done;){var i=r.value,o=Q[i.question_ordinal],c=i.answer_ordinal||[];if(o&&!c.includes(o))return $++,!1}}catch(e){a.e(e)}finally{a.f()}}return t===$})),Y=Object(g.useCallback)((function(e){M||(z(!0),G("question_answered",{question_ordinal:null==X?void 0:X.question_ordinal,answer:e}),setTimeout((function(){V(F,{answers:[].concat(o()(H),[{question_ordinal:null==X?void 0:X.question_ordinal,answer:e}])}),z(!1)}),300))}),[H,X,F,G,V,M]);(null==q?void 0:q.length)&&$>q.length&&((K=(I||[]).find((function(e){var t,n=j(e.trigger_condition||[]);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.answer_ordinal.includes(Q[r.question_ordinal]))return K=e,!0}}catch(e){n.e(e)}finally{n.f()}return!1})))||(K=I[0]));var Z=Object(g.useCallback)((function(){var e;G("follow_up_link_clicked",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}),G("survey_closed"),V(F,{hideSurvey:!0})}),[F,G,V,K]),J=Object(g.useCallback)((function(){G("survey_closed"),C(!1)}),[G]),ee=Object(g.useCallback)((function(){V(F,{hideSurvey:!0})}),[F,V]);if(Object(g.useEffect)((function(){var e;K&&!m&&(v(!0),G("completion_shown",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}))}),[m,G,K]),Object(d.a)((function(){C(!0)})),W||!q||!I||void 0===U)return null;if(K)return e.createElement(f.a,{direction:"up",in:T,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},e.createElement(y.a,{dismissSurvey:J,ctaOnClick:Z,ctaText:K.follow_up_text,ctaURL:K.follow_up_url,title:K.completion_title},K.completion_text)));if(!P.includes(null==X?void 0:X.question_type))return null;var te={key:X.question_text,answerQuestion:Y,dismissSurvey:J,question:X.question_text,submitButtonText:(null==q?void 0:q.length)===$?Object(p.__)("Submit","google-site-kit"):Object(p.__)("Next","google-site-kit")};return e.createElement(f.a,{direction:"up",in:T,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},"multi_select"===X.question_type&&e.createElement(k.a,a()({},te,{choices:X.question.answer_choice,minChoices:X.question.min_choices,maxChoices:X.question.max_choices})),"open_text"===X.question_type&&e.createElement(E.a,a()({},te,{subtitle:X.question.subtitle,placeholder:X.question.placeholder})),"rating"===X.question_type&&e.createElement(O.a,a()({},te,{choices:X.question.answer_choice})),"single_select"===X.question_type&&e.createElement(_.a,a()({},te,{choices:X.question.answer_choice})),!1===U&&1===(null==X?void 0:X.question_ordinal)&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(w.a,null))))}}).call(this,n(3))},181:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(13),o=n(64),c=function SurveyCompletion(t){var n=t.title,r=t.children,a=t.ctaText,c=t.ctaURL,s=t.ctaOnClick,l=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__completion"},e.createElement(o.a,{title:n,dismissSurvey:l}),e.createElement("div",{className:"googlesitekit-survey__body"},r),c&&a&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(i.Button,{href:c,onClick:s,target:"_blank"},a)))};c.propTypes={title:a.a.string.isRequired,children:a.a.node,ctaText:a.a.string,ctaURL:a.a.string,ctaOnClick:a.a.func,dismissSurvey:a.a.func.isRequired},c.defaultProps={title:"",children:null,ctaText:"",ctaURL:"",ctaOnClick:null},t.a=c}).call(this,n(3))},182:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(64),o=n(183),c=function SurveyQuestionRating(t){var n=t.question,r=t.choices,a=t.answerQuestion,c=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__question-rating"},e.createElement(i.a,{title:n,dismissSurvey:c}),e.createElement("div",{className:"googlesitekit-survey__body"},e.createElement("div",{className:"googlesitekit-survey__choices"},r.map((function(t,n){return e.createElement(o.a,{key:n,choice:t,answerQuestion:a})})))))};c.propTypes={question:a.a.string.isRequired,choices:a.a.arrayOf(a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string})).isRequired,answerQuestion:a.a.func.isRequired,dismissSurvey:a.a.func.isRequired},t.a=c}).call(this,n(3))},183:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(13),c=n(184),s=n(185),l=n(186),u=n(187),d=n(188),f={1:c.a,2:s.a,3:l.a,4:u.a,5:d.a},g=function SurveyQuestionRatingChoice(t){var n=t.choice,r=t.answerQuestion,a=Object(i.useCallback)((function(){"function"==typeof r&&r({answer:{answer_ordinal:n.answer_ordinal}})}),[r,n]),c=f[n.answer_ordinal];return c?e.createElement("div",{className:"googlesitekit-survey__choice"},e.createElement(o.Button,{icon:e.createElement(c,{width:30,height:30}),"aria-label":n.text,onClick:a}),e.createElement("p",null,n.text)):null};g.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string}).isRequired},t.a=g}).call(this,n(3))},184:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0,P=Object.values(R).filter((function(e){return e.selected})).length,T=d&&P===d,C=x||P1&&e.createElement(h.g,{persistent:!0},Object(m.sprintf)( +/* translators: %s: the number of answers. */ +Object(m.__)("Choose at least %s answers","google-site-kit"),u)),e.createElement(v.Button,{onClick:function(){var e=Object.values(R).filter((function(e){return e.selected})).map((function(e){var t=e.answer_ordinal,n=e.answer_text;return n?{answer_ordinal:t,answer_text:n}:{answer_ordinal:t}}));i({answer:e})},disabled:C},E)))};_.propTypes={question:u.a.string.isRequired,choices:u.a.arrayOf(u.a.shape({answer_ordinal:u.a.oneOfType([u.a.string,u.a.number]),text:u.a.string,write_in:u.a.bool})).isRequired,answerQuestion:u.a.func.isRequired,dismissSurvey:u.a.func.isRequired,minChoices:u.a.number,maxChoices:u.a.number,submitButtonText:u.a.string.isRequired},t.a=_}).call(this,n(3))},191:function(e,t,n){"use strict";(function(e){var r=n(6),a=n.n(r),i=n(14),o=n.n(i),c=n(0),s=n.n(c),l=n(2),u=n(13),d=n(64),f=n(192);function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t0,_=""===m||k&&""===y;return e.createElement("div",{className:"googlesitekit-single-select"},e.createElement(d.a,{title:n,dismissSurvey:i}),e.createElement("div",{className:"googlesitekit-survey__body"},E.map((function(t,n){return e.createElement(f.a,{key:n,value:m,setValue:v,writeIn:y,setWriteIn:O,choice:t})}))),e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(u.Button,{onClick:function(){var e=k?{answer_text:y}:{};a({answer:p({answer_ordinal:Number(m)},e)})},disabled:_},c)))};m.propTypes={question:s.a.string.isRequired,choices:s.a.arrayOf(s.a.shape({answer_ordinal:s.a.oneOfType([s.a.string,s.a.number]),text:s.a.string,write_in:s.a.bool})).isRequired,answerQuestion:s.a.func.isRequired,dismissSurvey:s.a.func.isRequired},t.a=m}).call(this,n(3))},192:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(1),c=n(13),s=n(10),l=n(60),u=n(102),d=function SurveyQuestionSingleSelectChoice(t){var n=t.value,r=t.setValue,a=t.writeIn,d=t.setWriteIn,f=t.choice,g=f.answer_ordinal,p=f.text,m=f.write_in,v=n===g,b="googlesitekit-survey__multi-select-".concat(g,"-").concat(p);return e.createElement("div",{className:"googlesitekit-single-select__choice"},e.createElement(c.Radio,{id:p.replace(/ /g,"-"),value:g,checked:v,name:p,onClick:function(){return r(g)}},p),m&&e.createElement(i.Fragment,null,e.createElement(l.a,null,e.createElement("label",{htmlFor:b},Object(o.sprintf)( +/* translators: %s: Option name */ +Object(o.__)("Text input for option %s","google-site-kit"),p))),e.createElement(s.r,null,e.createElement(s.h,{id:b,onChange:function(e){return d(e.target.value.slice(0,u.a))},value:a,disabled:!v}))))};d.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string,write_in:a.a.bool}),value:a.a.string.isRequired,setValue:a.a.func.isRequired,writeIn:a.a.string.isRequired,setWriteIn:a.a.func.isRequired},t.a=d}).call(this,n(3))},193:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SurveyTerms}));var r=n(1),a=n(72),i=n(4),o=n.n(i),c=n(15),s=n(20),l=o.a.useSelect;function SurveyTerms(){var t=l((function(e){return e(c.c).getGooglePrivacyPolicyURL()})),n=l((function(e){return e(c.c).getGoogleTermsURL()}));return e.createElement("p",{className:"googlesitekit-survey__terms"},Object(a.a)(Object(r.__)("By continuing, you agree to allow Google to use your answers and account info to improve services, per our Privacy & Terms.","google-site-kit"),{privacy:e.createElement(s.a,{href:t,external:!0}),terms:e.createElement(s.a,{href:n,external:!0})}))}}).call(this,n(3))},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(23),a=function(e){return r.e.includes(e)}},20:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(120),f=n(1),g=n(2),p=Object(g.forwardRef)((function(t,n){var r,i=t["aria-label"],c=t.arrow,s=t.back,l=t.caps,g=t.children,p=t.className,m=t.danger,v=t.disabled,b=t.external,h=t.hideExternalIndicator,y=t.href,O=t.inverse,E=t.onClick,k=t.small,_=t.to,w=o()(t,["aria-label","arrow","back","caps","children","className","danger","disabled","external","hideExternalIndicator","href","inverse","onClick","small","to"]),j=y||_||!E?_?"ROUTER_LINK":b?"EXTERNAL_LINK":"LINK":v?"BUTTON_DISABLED":"BUTTON",S="BUTTON"===j||"BUTTON_DISABLED"===j?"button":"ROUTER_LINK"===j?d.b:"a",N=("EXTERNAL_LINK"===j&&(r=Object(f._x)("(opens in a new tab)","screen reader text","google-site-kit")),"BUTTON_DISABLED"===j&&(r=Object(f._x)("(disabled)","screen reader text","google-site-kit")),r?i?"".concat(i," ").concat(r):"string"==typeof g?"".concat(g," ").concat(r):void 0:i);return e.createElement(S,a()({"aria-label":N,className:u()("googlesitekit-cta-link",p,{"googlesitekit-cta-link--arrow":c,"googlesitekit-cta-link--external":b&&!h,"googlesitekit-cta-link--inverse":O,"googlesitekit-cta-link--back":s,"googlesitekit-cta-link--small":k,"googlesitekit-cta-link--caps":l,"googlesitekit-cta-link--danger":m,"googlesitekit-cta-link--disabled":v}),disabled:v,href:"LINK"!==j&&"EXTERNAL_LINK"!==j||v?void 0:y,onClick:E,rel:"EXTERNAL_LINK"===j?"noopener noreferrer":void 0,ref:n,target:"EXTERNAL_LINK"===j?"_blank":void 0,to:_},w),g)}));p.propTypes={arrow:s.a.bool,back:s.a.bool,caps:s.a.bool,children:s.a.node,className:s.a.string,danger:s.a.bool,disabled:s.a.bool,external:s.a.bool,hideExternalIndicator:s.a.bool,href:s.a.string,inverse:s.a.bool,onClick:s.a.func,small:s.a.bool,to:s.a.string},p.defaultProps={arrow:!1,back:!1,caps:!1,className:"",danger:!1,disabled:!1,external:!1,hideExternalIndicator:!1,href:"",inverse:!1,small:!1},t.a=p}).call(this,n(3))},202:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportError}));var r=n(6),a=n.n(r),i=n(0),o=n.n(i),c=n(313),s=n.n(c),l=n(2),u=n(1),d=n(4),f=n.n(d),g=n(13),p=n(17),m=n(58),v=n(144),b=n(78),h=n(82),y=n(119),O=n(20),E=n(15);function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _(e){for(var t=1;t1&&(n=Object(u.sprintf)( +/* translators: %s: module name */ +Object(u.__)("Data errors in %s","google-site-kit"),null==i?void 0:i.name)):n=Object(u.sprintf)( +/* translators: %s: module name */ +Object(u.__)("Data error in %s","google-site-kit"),null==i?void 0:i.name);var P=e.createElement(l.Fragment,null,D.map((function(t){var n,r=null==a||null===(n=a.data)||void 0===n?void 0:n.reconnectURL;return r?e.createElement(h.a,{key:t.message,message:t.message,reconnectURL:r}):e.createElement("p",{key:t.message},b.a.sanitize(t.message,{ALLOWED_TAGS:[]}))}))),T=Object(l.useCallback)((function(){f.forEach((function(e){var t=e.selectorData;N(t.storeName).invalidateResolution(t.name,t.args)}))}),[N,f]),C=c&&x;return e.createElement(y.a,{title:n,description:P,error:!0},e.createElement("div",{className:"googlesitekit-error-cta-wrapper"},C&&e.createElement(g.Button,{href:c,target:"_blank"},Object(u.__)("Request access","google-site-kit")),k?e.createElement(l.Fragment,null,e.createElement(g.Button,{onClick:T},Object(u.__)("Retry","google-site-kit")),e.createElement("span",{className:"googlesitekit-error-retry-text"},Object(u.__)("Retry didn’t work?","google-site-kit")," "),e.createElement(O.a,{href:S,external:!0},Object(u.__)("Get help","google-site-kit"))):e.createElement(O.a,{href:S,external:!0},Object(u.__)("Get help","google-site-kit"))))}ReportError.propTypes={moduleSlug:o.a.string.isRequired,error:o.a.oneOfType([o.a.arrayOf(o.a.object),o.a.object]).isRequired}}).call(this,n(3))},206:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return p}));var r=n(18),a=n.n(r),i=n(71),o=n.n(i),c=n(220),s=n(267),l=n(268),u=n(269),d=n(221),f=o()((function(e){return{Widget:g(e)(c.a),WidgetRecoverableModules:g(e)(d.a),WidgetReportZero:g(e)(s.a),WidgetReportError:g(e)(l.a),WidgetNull:g(e)(u.a)}}));function g(t){return function(n){var r=function WithWidgetSlug(r){return e.createElement(n,a()({},r,{widgetSlug:t}))};return r.displayName="WithWidgetSlug",(n.displayName||n.name)&&(r.displayName+="(".concat(n.displayName||n.name,")")),r}}var p=function(t){var n=f(t);return function(t){var r=function DecoratedComponent(r){return e.createElement(t,a()({},r,n))};return r.displayName="WithWidgetComponentProps",(t.displayName||t.name)&&(r.displayName+="(".concat(t.displayName||t.name,")")),r}}}).call(this,n(3))},220:function(e,t,n){"use strict";(function(e){var r=n(11),a=n.n(r),i=n(0),o=n.n(i),c=function Widget(t){var n=t.children,r=t.className,i=t.widgetSlug,o=t.noPadding,c=t.Header,s=t.Footer;return e.createElement("div",{className:a()("googlesitekit-widget","googlesitekit-widget--".concat(i),{"googlesitekit-widget--no-padding":o},{"googlesitekit-widget--with-header":c},r)},c&&e.createElement("div",{className:"googlesitekit-widget__header"},e.createElement(c,null)),e.createElement("div",{className:"googlesitekit-widget__body"},n),s&&e.createElement("div",{className:"googlesitekit-widget__footer"},e.createElement(s,null)))};c.defaultProps={children:void 0,noPadding:!1},c.propTypes={children:o.a.node,widgetSlug:o.a.string.isRequired,noPadding:o.a.bool,Header:o.a.elementType,Footer:o.a.elementType},t.a=c}).call(this,n(3))},221:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WidgetRecoverableModules}));var r=n(6),a=n.n(r),i=n(18),o=n.n(i),c=n(24),s=n.n(c),l=n(21),u=n.n(l),d=n(0),f=n.n(d),g=n(2),p=n(149),m=n(146);function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function WidgetRecoverableModules(t){var n=t.widgetSlug,r=t.moduleSlugs,a=u()(t,["widgetSlug","moduleSlugs"]),i=Object(g.useMemo)((function(){return{moduleSlug:s()(r).sort().join(","),moduleSlugs:r}}),[r]);return Object(p.a)(n,m.a,i),e.createElement(m.a,o()({moduleSlugs:r},a))}WidgetRecoverableModules.propTypes=function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:i;return t instanceof Set&&t.has(e)}}).call(this,n(22))},43:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(37),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var n=e.split("-");return 3===n.length&&Object(r.a)(new Date(e))}},458:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==v[2]?v[2]:{},o=i.ttl,s=void 0===o?c.b:o,l=i.timestamp,u=void 0===l?Math.round(Date.now()/1e3):l,f=i.isError,g=void 0!==f&&f,t.next=3,m();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(d).concat(n),JSON.stringify({timestamp:u,ttl:s,value:r,isError:g})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(e,n){return t.apply(this,arguments)}}(),y=function(){var t=o()(a.a.mark((function t(n){var r;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m();case 2:if(!(r=t.sent)){t.next=13;break}return t.prev=4,r.removeItem("".concat(d).concat(n)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(e){return t.apply(this,arguments)}}(),O=function(){var t=o()(a.a.mark((function t(){var n,r,i,o;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m();case 2:if(!(n=t.sent)){t.next=14;break}for(t.prev=4,r=[],i=0;i1280?a:e>960?i:e>600?o:c}},50:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return i}));var r={BOXES:"boxes",COMPOSITE:"composite"},a={QUARTER:"quarter",HALF:"half",FULL:"full"},i="core/widgets"},51:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"c",(function(){return c})),n.d(t,"e",(function(){return s}));var r=n(100);function a(e){try{return new URL(e).pathname}catch(e){}return null}function i(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function o(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function s(e,t){if(!Object(r.a)(e))return e;if(e.length<=t)return e;var n=new URL(e),a=e.replace(n.origin,"");if(a.length=600;function $e(){return($e=d()(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),t.preventDefault(),!se){e.next=5;break}return e.next=5,se(t);case 5:Xe();case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Xe(){Le(!0),setTimeout(d()(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,He();case 2:Ke()&&Ie(!0),t=new Event("notificationDismissed"),document.dispatchEvent(t);case 5:case"end":return e.stop()}}),e)}))),350)}Object(E.a)(d()(l.a.mark((function e(){var t,n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!($>0)){e.next=3;break}return e.next=3,tt();case 3:if(!Z){e.next=9;break}return e.next=6,Object(B.b)(We);case 6:t=e.sent,n=t.cacheHit,Ie(n);case 9:if(!de){e.next=12;break}return e.next=12,He();case 12:case"end":return e.stop()}}),e)}))));var Ye=V((function(e){return e(H.a).isNavigatingTo(v||"")})),Ze=G(H.a).navigateTo;function Je(){return(Je=d()(l.a.mark((function e(t){var n,r,a;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),n=!0,!ce){e.next=13;break}return Fe(!0),e.next=6,ce(t);case 6:if(e.t0=e.sent,e.t0){e.next=9;break}e.t0={};case 9:r=e.t0,a=r.dismissOnCTAClick,n=void 0===a||a,Ke()&&Fe(!1);case 13:Z&&n&&Xe(),Object(w.a)(v)&&"_blank"!==h&&!t.defaultPrevented&&(t.preventDefault(),Ze(v));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var et=Object(_.useCallback)((function(t){Object(P.c)(a)&&(t.preventDefault(),e.history.replaceState({},"",a),e.scrollTo({top:Object(x.a)(a,Ge),behavior:"smooth"}))}),[a,Ge]);function tt(){return nt.apply(this,arguments)}function nt(){return(nt=d()(l.a.mark((function e(){var t,n,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(B.b)(We);case 2:if(t=e.sent,!(n=t.value)){e.next=10;break}if((r=Object(W.a)(n)).setSeconds(r.getSeconds()+parseInt($,10)),!(r1&&void 0!==arguments[1]?arguments[1]:{};return{__html:i.a.sanitize(e,t)}};function c(e){var t,n="object"===a()(e)?e.toString():e;return null==n||null===(t=n.replace)||void 0===t?void 0:t.call(n,/\/+$/,"")}},64:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(1),o=n(170),c=n(358),s=n(13),l=n(106),u=function SurveyHeader(t){var n=t.title,r=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__header"},e.createElement("div",{className:"googlesitekit-survey__header-logo"},e.createElement(l.a,{width:24,height:24})),e.createElement("div",{className:"googlesitekit-survey__header-details"},e.createElement("h3",null,n),e.createElement(s.Button,{"aria-label":Object(i.__)("Dismiss","google-site-kit"),icon:e.createElement(o.a,{icon:c.a,size:40}),onClick:r,className:"googlesitekit-survey__header-close"})))};u.propTypes={title:a.a.string.isRequired,dismissSurvey:a.a.func.isRequired},t.a=u}).call(this,n(3))},65:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),a=n.n(r),i=n(0),o=n.n(i),c=n(11),s=n.n(c),l=n(1),u={DEFAULT:"default",OVERLAY:"overlay",SMALL:"small",SMALL_OVERLAY:"small-overlay",LARGE:"large"};function GatheringDataNotice(t){var n=t.style;return e.createElement("div",{className:s()("googlesitekit-gathering-data-notice",a()({},"googlesitekit-gathering-data-notice--has-style-".concat(n),!!n))},e.createElement("span",null,Object(l.__)("Gathering data…","google-site-kit")))}GatheringDataNotice.propTypes={style:o.a.oneOf(Object.values(u))},t.b=GatheringDataNotice}).call(this,n(3))},67:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return a}));var r="modules/search-console",a=1},68:function(e,t,n){"use strict";n.d(t,"d",(function(){return r.e})),n.d(t,"c",(function(){return r.d})),n.d(t,"b",(function(){return r.b})),n.d(t,"a",(function(){return r.a})),n.d(t,"e",(function(){return r.f})),n.d(t,"g",(function(){return c})),n.d(t,"h",(function(){return l})),n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return d.a})),n.d(t,"f",(function(){return g})),n.d(t,"k",(function(){return s.a}));var r=n(36),a=n(7),i=n.n(a),o=n(37),c=function(e){i()(Object(o.a)(e),r.c);var t="".concat(e.getMonth()+1),n="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,n.length<2?"0".concat(n):n].join("-")},s=n(38),l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=Object(s.a)(e);return n.setDate(n.getDate()-t),c(n)},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},d=n(43);var f=n(1);function g(){var e=function(e){return Object(f.sprintf)( +/* translators: %s: number of days */ +Object(f._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},70:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(2),a=Object(r.createContext)(""),i=(a.Consumer,a.Provider);t.b=a},73:function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return E})),n.d(t,"d",(function(){return _})),n.d(t,"b",(function(){return w})),n.d(t,"a",(function(){return j}));var r=n(14),a=n.n(r),i=n(30),o=n.n(i),c=n(6),s=n.n(c),l=n(21),u=n.n(l),d=n(26),f=n(71),g=n.n(f),p=n(1);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function v(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=h(e,t),r=n.formatUnit,a=n.formatDecimal;try{return r()}catch(e){return a()}},h=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var n=Math.floor(e/60/60),r=Math.floor(e/60%60),a=Math.floor(e%60);return{hours:n,minutes:r,seconds:a,formatUnit:function(){var i=t.unitDisplay,o=v(v({unitDisplay:void 0===i?"short":i},u()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?_(a,v(v({},o),{},{unit:"second"})):Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?_(a,v(v({},o),{},{unit:"second"})):"",r?_(r,v(v({},o),{},{unit:"minute"})):"",n?_(n,v(v({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(p.__)("%ds","google-site-kit"),a);if(0===e)return t;var i=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(p.__)("%dm","google-site-kit"),r),o=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(p.__)("%dh","google-site-kit"),n);return Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",r?i:"",n?o:"").trim()}}},y=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},O=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in millions. +Object(p.__)("%sM","google-site-kit"),_(y(e),e%10==0?{}:t)):1e4<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),_(y(e))):1e3<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),_(y(e),e%10==0?{}:t)):_(e,{signDisplay:"never",maximumFractionDigits:1})},E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(d.isFinite)(e)?e:Number(e),Object(d.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var n={};if("%"===t)n={style:"percent",maximumFractionDigits:2};else{if("s"===t)return b(e,{unitDisplay:"narrow"});t&&"string"==typeof t?n={style:"currency",currency:t}:Object(d.isPlainObject)(t)&&(n=v({},t))}var r=n,a=r.style,i=void 0===a?"metric":a;return"metric"===i?O(e):"duration"===i?b(e,t):_(e,n)},k=g()(console.warn),_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?j():n,i=u()(t,["locale"]);try{return new Intl.NumberFormat(r,i).format(e)}catch(t){k("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(r),", ").concat(JSON.stringify(i)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},s=["signDisplay","compactDisplay"],l={},d=0,f=Object.entries(i);d1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?j():n,a=t.style,i=void 0===a?"long":a,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var s=new Intl.ListFormat(r,{style:i,type:c});return s.format(e)} +/* translators: used between list items, there is a space after the comma. */var l=Object(p.__)(", ","google-site-kit");return e.join(l)},j=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,n=Object(d.get)(t,["_googlesitekitLegacyData","locale"]);if(n){var r=n.match(/^(\w{2})?(_)?(\w{2})/);if(r&&r[0])return r[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,n(22))},78:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var r=n(124),a=n.n(r)()(e)}).call(this,n(22))},8:function(e,t,n){"use strict";n.d(t,"z",(function(){return c.b})),n.d(t,"w",(function(){return s.a})),n.d(t,"A",(function(){return s.b})),n.d(t,"y",(function(){return g})),n.d(t,"f",(function(){return p.a})),n.d(t,"m",(function(){return p.b})),n.d(t,"u",(function(){return m.c})),n.d(t,"v",(function(){return m.d})),n.d(t,"r",(function(){return m.b})),n.d(t,"l",(function(){return m.a})),n.d(t,"s",(function(){return y})),n.d(t,"g",(function(){return O})),n.d(t,"b",(function(){return E.b})),n.d(t,"a",(function(){return E.a})),n.d(t,"c",(function(){return E.e})),n.d(t,"i",(function(){return E.f})),n.d(t,"x",(function(){return E.k})),n.d(t,"j",(function(){return k.b})),n.d(t,"q",(function(){return k.c})),n.d(t,"e",(function(){return k.a})),n.d(t,"o",(function(){return _.b})),n.d(t,"k",(function(){return _.a})),n.d(t,"t",(function(){return _.d})),n.d(t,"p",(function(){return w})),n.d(t,"n",(function(){return j})),n.d(t,"d",(function(){return S})),n.d(t,"B",(function(){return N})),n.d(t,"h",(function(){return R}));var r=n(123),a=n.n(r),i=n(118),o=n.n(i),c=n(32),s=n(63),l=n(30),u=n.n(l),d=n(81),f=n.n(d),g=function(e){return f()(JSON.stringify(function e(t){var n={};return Object.keys(t).sort().forEach((function(r){var a=t[r];a&&"object"===u()(a)&&!Array.isArray(a)&&(a=e(a)),n[r]=a})),n}(e)))};var p=n(83),m=(n(84),n(73));function v(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function b(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function h(e){return e.replace(/\n/gi,"
")}function y(e){for(var t=e,n=0,r=[v,b,h];nredo the plugin setup.',"google-site-kit"),r));return e.createElement("div",{className:"googlesitekit-error-text"},e.createElement("p",{dangerouslySetInnerHTML:Object(c.w)(a,{ALLOWED_TAGS:["a"],ALLOWED_ATTR:["href"]})}))}ErrorText.propTypes={message:a.a.string.isRequired,reconnectURL:a.a.string},ErrorText.defaultProps={reconnectURL:""},t.a=ErrorText}).call(this,n(3))},83:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return l}));var r=n(14),a=n.n(r);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){s=!0,i=e},f:function(){try{c||null==n.return||n.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:location,n=new URL(t.href);if(e)return n.searchParams&&n.searchParams.get?n.searchParams.get(e):s(e);var r,o={},c=i(n.searchParams.entries());try{for(c.s();!(r=c.n()).done;){var l=a()(r.value,2),u=l[0],d=l[1];o[u]=d}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,n(22))},84:function(e,t,n){"use strict";(function(e){n(44),n(45)}).call(this,n(22))},85:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"a",(function(){return c}));var r=n(169),a=n(62),i=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=n.invertColor,o=void 0!==i&&i;return Object(r.a)(e.createElement(a.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,n,r,a,i,o,c,s,l,u,d,f,g,p,m;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(r=n.rows)||void 0===r?void 0:r.length)||(null==e||null===(a=e[0])||void 0===a||null===(i=a.data)||void 0===i||null===(o=i.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.metrics)||void 0===s||null===(l=s[0])||void 0===l||null===(u=l.values)||void 0===u?void 0:u[0])===(null==e||null===(d=e[0])||void 0===d||null===(f=d.data)||void 0===f||null===(g=f.totals)||void 0===g||null===(p=g[0])||void 0===p||null===(m=p.values)||void 0===m?void 0:m[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,n(3))},853:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdminBarApp}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=n(2),s=n(1),l=n(4),u=n.n(l),d=n(20),f=n(10),g=n(15),p=n(12),m=n(8),v=n(854),b=n(19),h=u.a.useSelect;function AdminBarApp(){var t=Object(b.a)(),n=h((function(e){return e(g.c).getCurrentEntityURL()})),r=h((function(e){return e(g.c).getCurrentEntityTitle()})),i=h((function(e){return e(g.c).getAdminURL("googlesitekit-dashboard",{permaLink:n})})),l=h((function(e){return e(p.a).getDateRangeNumberOfDays()})),u=Object(c.useCallback)(o()(a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(m.z)(t,"open_urldetails");case 2:document.location.assign(i);case 3:case"end":return e.stop()}}),e)}))),[i,t]);return i&&n?e.createElement(c.Fragment,null,e.createElement(f.f,null,e.createElement(f.p,null,e.createElement(f.a,{alignMiddle:!0,size:3},e.createElement("div",{className:"googlesitekit-adminbar__subtitle"},Object(s.__)("Stats for","google-site-kit")),e.createElement("div",{className:"googlesitekit-adminbar__title"},r?Object(m.h)(r):n,e.createElement("p",{className:"googlesitekit-adminbar__title--date-range"},Object(s.sprintf)( +/* translators: %s: number of days */ +Object(s._n)("over the last %s day","over the last %s days",l,"google-site-kit"),l)))),e.createElement(f.a,{alignMiddle:!0,mdSize:8,lgSize:7},e.createElement(v.a,null)),e.createElement(f.a,{alignMiddle:!0,size:2},e.createElement(d.a,{className:"googlesitekit-adminbar__link",href:"#",onClick:u},Object(s.__)("More details","google-site-kit"))))),e.createElement(d.a,{className:"googlesitekit-adminbar__link googlesitekit-adminbar__link--mobile",href:"#",onClick:u},Object(s.__)("More details","google-site-kit"))):null}}).call(this,n(3))},854:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdminBarWidgets}));var r=n(2),a=n(4),i=n.n(a),o=n(855),c=n(856),s=n(857),l=n(858),u=n(859),d=n(17),f=n(10),g=n(206),p=i.a.useSelect,m=Object(g.b)("adminBarImpressions")(o.a),v=Object(g.b)("adminBarClicks")(c.a),b=Object(g.b)("adminBarUniqueVisitors")(s.a),h=Object(g.b)("adminBarSessions")(l.a);function AdminBarWidgets(){var t=p((function(e){return e(d.a).isModuleAvailable("analytics")})),n=p((function(e){return e(d.a).isModuleConnected("analytics")})),a=p((function(e){return e(d.a).isModuleActive("analytics")}));return e.createElement(r.Fragment,null,e.createElement(f.p,null,e.createElement(f.a,{lgSize:3,mdSize:2},e.createElement(m,null)),e.createElement(f.a,{lgSize:3,mdSize:2},e.createElement(v,null)),n&&a&&e.createElement(r.Fragment,null,e.createElement(f.a,{lgSize:3,mdSize:2},e.createElement(b,null)),e.createElement(f.a,{lgSize:3,mdSize:2},e.createElement(h,null))),t&&(!n||!a)&&e.createElement(f.a,{lgSize:6,mdSize:4},e.createElement(u.a,null))))}}).call(this,n(3))},855:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(113),l=n(99),u=n(65),d=n(12),f=n(15),g=n(67),p=n(8),m=n(304),v=n(145),b=c.a.useSelect;t.a=function AdminBarImpressions(t){var n=t.WidgetReportError,r=b((function(e){return e(g.b).isGatheringData()})),o=b((function(e){return e(f.c).getCurrentEntityURL()})),c=b((function(e){return e(d.a).getDateRangeDates({compare:!0,offsetDays:g.a})})),h=c.compareStartDate,y=c.endDate,O=b((function(e){return e(d.a).getDateRangeNumberOfDays()})),E={startDate:h,endDate:y,dimensions:"date",url:o},k=b((function(e){return e(g.b).getReport(E)})),_=b((function(e){return e(g.b).hasFinishedResolution("getReport",[E])})),w=b((function(e){return e(g.b).getErrorForSelector("getReport",[E])}));if(!_||void 0===r)return e.createElement(l.a,{width:"auto",height:"59px"});if(w)return e.createElement(n,{moduleSlug:"search-console",error:w});var j=Object(v.a)(k,{dateRangeLength:O}),S=j.compareRange,N=j.currentRange,R=Object(m.a)(N,"impressions"),D=Object(m.a)(S,"impressions"),x=Object(p.d)(D,R),P={gatheringData:r,gatheringDataNoticeStyle:u.a.SMALL};return e.createElement(s.a,a()({className:"overview-total-impressions",title:Object(i.__)("Total Impressions","google-site-kit"),datapoint:R,change:x,changeDataUnit:"%"},P))}}).call(this,n(3))},856:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(12),l=n(15),u=n(67),d=n(8),f=n(99),g=n(113),p=n(65),m=n(304),v=n(145),b=c.a.useSelect;t.a=function AdminBarClicks(t){var n=t.WidgetReportError,r=b((function(e){return e(u.b).isGatheringData()})),o=b((function(e){return e(l.c).getCurrentEntityURL()})),c=b((function(e){return e(s.a).getDateRangeDates({compare:!0,offsetDays:u.a})})),h=c.compareStartDate,y=c.endDate,O=b((function(e){return e(s.a).getDateRangeNumberOfDays()})),E={startDate:h,endDate:y,dimensions:"date",url:o},k=b((function(e){return e(u.b).getReport(E)})),_=b((function(e){return e(u.b).hasFinishedResolution("getReport",[E])})),w=b((function(e){return e(u.b).getErrorForSelector("getReport",[E])}));if(!_||void 0===r)return e.createElement(f.a,{width:"auto",height:"59px"});if(w)return e.createElement(n,{moduleSlug:"search-console",error:w});var j=Object(v.a)(k,{dateRangeLength:O}),S=j.compareRange,N=j.currentRange,R=Object(m.a)(N,"clicks"),D=Object(m.a)(S,"clicks"),x=Object(d.d)(D,R),P={gatheringData:r,gatheringDataNoticeStyle:p.a.SMALL};return e.createElement(g.a,a()({className:"overview-total-clicks",title:Object(i.__)("Total Clicks","google-site-kit"),datapoint:R,change:x,changeDataUnit:"%"},P))}}).call(this,n(3))},857:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(6),o=n.n(i),c=n(1),s=n(113),l=n(4),u=n.n(l),d=n(99),f=n(65),g=n(12),p=n(15),m=n(9),v=n(8);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,a=s(s({},l),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(a,n);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(o.a)(a,n,c,r)}}}).call(this,n(22))},87:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var r=n(52),a=n(31);function i(t,n){var i,o=Object(r.a)(n);return function(){var n=e.document;if(void 0===i&&(i=!!n.querySelector("script[".concat(a.b,"]"))),!i){var r=n.createElement("script");r.setAttribute(a.b,""),r.async=!0,r.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),n.head.appendChild(r),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,n(22))},88:function(e,t,n){"use strict";n.d(t,"a",(function(){return g}));var r=n(5),a=n.n(r),i=n(6),o=n.n(i),c=n(16),s=n.n(c),l=n(52),u=n(42);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:a;return n instanceof Set&&n.has(t)}}).call(this,e(22))},43:function(t,n,e){"use strict";e.d(n,"a",(function(){return i}));var r=e(37),i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n="string"==typeof t;if(!n)return!1;var e=t.split("-");return 3===e.length&&Object(r.a)(new Date(t))}},46:function(t,n,e){"use strict";(function(t){e.d(n,"b",(function(){return h})),e.d(n,"d",(function(){return m})),e.d(n,"a",(function(){return y})),e.d(n,"c",(function(){return w}));var r=e(5),i=e.n(r),a=e(16),o=e.n(a),u=(e(24),e(8));function c(t,n){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=function(t,n){if(!t)return;if("string"==typeof t)return s(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return s(t,n)}(t))||n&&t&&"number"==typeof t.length){e&&(t=e);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return o=t.done,t},e:function(t){u=!0,a=t},f:function(){try{o||null==e.return||e.return()}finally{if(u)throw a}}}}function s(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e2&&void 0!==b[2]?b[2]:{},o=a.ttl,c=void 0===o?u.b:o,s=a.timestamp,l=void 0===s?Math.round(Date.now()/1e3):s,d=a.isError,v=void 0!==d&&d,n.next=3,p();case 3:if(!(g=n.sent)){n.next=14;break}return n.prev=5,g.setItem("".concat(f).concat(e),JSON.stringify({timestamp:l,ttl:c,value:r,isError:v})),n.abrupt("return",!0);case 10:return n.prev=10,n.t0=n.catch(5),t.console.warn("Encountered an unexpected storage error:",n.t0),n.abrupt("return",!1);case 14:return n.abrupt("return",!1);case 15:case"end":return n.stop()}}),n,null,[[5,10]])})));return function(t,e){return n.apply(this,arguments)}}(),y=function(){var n=o()(i.a.mark((function n(e){var r;return i.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,p();case 2:if(!(r=n.sent)){n.next=13;break}return n.prev=4,r.removeItem("".concat(f).concat(e)),n.abrupt("return",!0);case 9:return n.prev=9,n.t0=n.catch(4),t.console.warn("Encountered an unexpected storage error:",n.t0),n.abrupt("return",!1);case 13:return n.abrupt("return",!1);case 14:case"end":return n.stop()}}),n,null,[[4,9]])})));return function(t){return n.apply(this,arguments)}}(),w=function(){var n=o()(i.a.mark((function n(){var e,r,a,o;return i.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,p();case 2:if(!(e=n.sent)){n.next=14;break}for(n.prev=4,r=[],a=0;a1&&void 0!==arguments[1]?arguments[1]:{};return{__html:a.a.sanitize(t,n)}};function u(t){var n,e="object"===i()(t)?t.toString():t;return null==e||null===(n=e.replace)||void 0===n?void 0:n.call(e,/\/+$/,"")}},638:function(t,n,e){"use strict";(function(t){var r=e(5),i=e.n(r),a=e(16),o=e.n(a),u=e(7),c=e.n(u),s=e(243),l=e(250),f=e(46),d=e(8),v=e(58),g=e(755),p=e(12),b=!0,h=function(t,n,e){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=[t,n,e].filter((function(t){return!!t&&t.length}));return 3===i.length&&r&&r.constructor===Object&&Object.keys(r).length&&i.push(Object(d.y)(r)),i.join("::")},m=function(n){var e,r,i,a=null===(e=t.googlesitekit)||void 0===e||null===(r=e.data)||void 0===r||null===(i=r.dispatch)||void 0===i?void 0:i.call(r,p.a);a&&(Object(v.e)(n)?a.setPermissionScopeError(n):Object(v.b)(n)&&a.setAuthError(n))},y=function(){var n=o()(i.a.mark((function n(e,r,a){var o,u,v,p,b,y,w,j,k,_,x,S,D,E,P,N,I,L=arguments;return i.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(o=L.length>3&&void 0!==L[3]?L[3]:{},u=o.bodyParams,v=o.cacheTTL,p=void 0===v?d.b:v,b=o.method,y=void 0===b?"GET":b,w=o.queryParams,j=o.useCache,k=void 0===j?void 0:j,_=o.signal,c()(e,"`type` argument for requests is required."),c()(r,"`identifier` argument for requests is required."),c()(a,"`datapoint` argument for requests is required."),x="GET"===y&&(void 0!==k?k:O()),S=h(e,r,a,w),!x){n.next=18;break}return n.next=9,Object(f.b)(S);case 9:if(D=n.sent,E=D.cacheHit,P=D.value,!D.isError){n.next=16;break}throw m(P),P;case 16:if(!E){n.next=18;break}return n.abrupt("return",P);case 18:return n.prev=18,n.next=21,Object(s.default)({data:u,method:y,signal:_,path:Object(l.a)("/google-site-kit/v1/".concat(e,"/").concat(r,"/data/").concat(a),w)});case 21:if(N=n.sent,!x){n.next=25;break}return n.next=25,Object(f.d)(S,N,{ttl:p});case 25:return n.abrupt("return",N);case 28:if(n.prev=28,n.t0=n.catch(18),!(null==_?void 0:_.aborted)){n.next=32;break}throw n.t0;case 32:if(!(null===n.t0||void 0===n.t0||null===(I=n.t0.data)||void 0===I?void 0:I.cacheTTL)){n.next=35;break}return n.next=35,Object(f.d)(S,n.t0,{ttl:n.t0.data.cacheTTL,isError:!0});case 35:throw Object(g.a)({method:y,datapoint:a,type:e,identifier:r,error:n.t0}),m(n.t0),t.console.error("Google Site Kit API Error","method:".concat(y),"datapoint:".concat(a),"type:".concat(e),"identifier:".concat(r),'error:"'.concat(n.t0.message,'"')),n.t0;case 39:case"end":return n.stop()}}),n,null,[[18,28]])})));return function(t,e,r){return n.apply(this,arguments)}}(),w=function(){var t=o()(i.a.mark((function t(n,e,r,a){var o,u,c,s,l,f,d,v=arguments;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=v.length>4&&void 0!==v[4]?v[4]:{},u=o.method,c=void 0===u?"POST":u,s=o.queryParams,l=void 0===s?{}:s,f=o.signal,t.next=3,y(n,e,r,{bodyParams:{data:a},method:c,queryParams:l,useCache:!1,signal:f});case 3:return d=t.sent,t.next=6,j(n,e,r);case 6:return t.abrupt("return",d);case 7:case"end":return t.stop()}}),t)})));return function(n,e,r,i){return t.apply(this,arguments)}}(),O=function(){return b},j=function(){var t=o()(i.a.mark((function t(n,e,r){var a;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=h(n,e,r),t.next=3,Object(f.c)();case 3:t.sent.forEach((function(t){0===t.indexOf(a)&&Object(f.a)(t)}));case 5:case"end":return t.stop()}}),t)})));return function(n,e,r){return t.apply(this,arguments)}}(),k={invalidateCache:j,get:function(t,n,e,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=i.cacheTTL,o=void 0===a?d.b:a,u=i.useCache,c=void 0===u?void 0:u,s=i.signal;return y(t,n,e,{cacheTTL:o,queryParams:r,useCache:c,signal:s})},set:w,setUsingCache:function(t){return b=!!t},usingCache:O};n.a=k}).call(this,e(22))},68:function(t,n,e){"use strict";e.d(n,"d",(function(){return r.e})),e.d(n,"c",(function(){return r.d})),e.d(n,"b",(function(){return r.b})),e.d(n,"a",(function(){return r.a})),e.d(n,"e",(function(){return r.f})),e.d(n,"g",(function(){return u})),e.d(n,"h",(function(){return s})),e.d(n,"i",(function(){return l})),e.d(n,"j",(function(){return f.a})),e.d(n,"f",(function(){return v})),e.d(n,"k",(function(){return c.a}));var r=e(36),i=e(7),a=e.n(i),o=e(37),u=function(t){a()(Object(o.a)(t),r.c);var n="".concat(t.getMonth()+1),e="".concat(t.getDate());return[t.getFullYear(),n.length<2?"0".concat(n):n,e.length<2?"0".concat(e):e].join("-")},c=e(38),s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,e=Object(c.a)(t);return e.setDate(e.getDate()-n),u(e)},l=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=t.split("-");return 3===n.length&&"last"===n[0]&&!Number.isNaN(n[1])&&!Number.isNaN(parseFloat(n[1]))&&"days"===n[2]},f=e(43);var d=e(1);function v(){var t=function(t){return Object(d.sprintf)( +/* translators: %s: number of days */ +Object(d._n)("Last %s day","Last %s days",t,"google-site-kit"),t)};return{"last-7-days":{slug:"last-7-days",label:t(7),days:7},"last-14-days":{slug:"last-14-days",label:t(14),days:14},"last-28-days":{slug:"last-28-days",label:t(28),days:28},"last-90-days":{slug:"last-90-days",label:t(90),days:90}}}},73:function(t,n,e){"use strict";(function(t){e.d(n,"c",(function(){return O})),e.d(n,"d",(function(){return k})),e.d(n,"b",(function(){return _})),e.d(n,"a",(function(){return x}));var r=e(14),i=e.n(r),a=e(30),o=e.n(a),u=e(6),c=e.n(u),s=e(21),l=e.n(s),f=e(26),d=e(71),v=e.n(d),g=e(1);function p(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function b(t){for(var n=1;n1&&void 0!==arguments[1]?arguments[1]:{},e=m(t,n),r=e.formatUnit,i=e.formatDecimal;try{return r()}catch(t){return i()}},m=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=parseInt(t,10),Number.isNaN(t)&&(t=0);var e=Math.floor(t/60/60),r=Math.floor(t/60%60),i=Math.floor(t%60);return{hours:e,minutes:r,seconds:i,formatUnit:function(){var a=n.unitDisplay,o=b(b({unitDisplay:void 0===a?"short":a},l()(n,["unitDisplay"])),{},{style:"unit"});return 0===t?k(i,b(b({},o),{},{unit:"second"})):Object(g.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(g._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?k(i,b(b({},o),{},{unit:"second"})):"",r?k(r,b(b({},o),{},{unit:"minute"})):"",e?k(e,b(b({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var n=Object(g.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(g.__)("%ds","google-site-kit"),i);if(0===t)return n;var a=Object(g.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(g.__)("%dm","google-site-kit"),r),o=Object(g.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(g.__)("%dh","google-site-kit"),e);return Object(g.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(g._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?n:"",r?a:"",e?o:"").trim()}}},y=function(t){return 1e6<=t?Math.round(t/1e5)/10:1e4<=t?Math.round(t/1e3):1e3<=t?Math.round(t/100)/10:t},w=function(t){var n={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=t?Object(g.sprintf)(// translators: %s: an abbreviated number in millions. +Object(g.__)("%sM","google-site-kit"),k(y(t),t%10==0?{}:n)):1e4<=t?Object(g.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(g.__)("%sK","google-site-kit"),k(y(t))):1e3<=t?Object(g.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(g.__)("%sK","google-site-kit"),k(y(t),t%10==0?{}:n)):k(t,{signDisplay:"never",maximumFractionDigits:1})},O=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=Object(f.isFinite)(t)?t:Number(t),Object(f.isFinite)(t)||(console.warn("Invalid number",t,o()(t)),t=0);var e={};if("%"===n)e={style:"percent",maximumFractionDigits:2};else{if("s"===n)return h(t,{unitDisplay:"narrow"});n&&"string"==typeof n?e={style:"currency",currency:n}:Object(f.isPlainObject)(n)&&(e=b({},n))}var r=e,i=r.style,a=void 0===i?"metric":i;return"metric"===a?w(t):"duration"===a?h(t,n):k(t,e)},j=v()(console.warn),k=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=n.locale,r=void 0===e?x():e,a=l()(n,["locale"]);try{return new Intl.NumberFormat(r,a).format(t)}catch(n){j("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(r),", ").concat(JSON.stringify(a)," ).format( ").concat(o()(t)," )"),n.message)}for(var u={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},c=["signDisplay","compactDisplay"],s={},f=0,d=Object.entries(a);f1&&void 0!==arguments[1]?arguments[1]:{},e=n.locale,r=void 0===e?x():e,i=n.style,a=void 0===i?"long":i,o=n.type,u=void 0===o?"conjunction":o;if(Intl.ListFormat){var c=new Intl.ListFormat(r,{style:a,type:u});return c.format(t)} +/* translators: used between list items, there is a space after the comma. */var s=Object(g.__)(", ","google-site-kit");return t.join(s)},x=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t,e=Object(f.get)(n,["_googlesitekitLegacyData","locale"]);if(e){var r=e.match(/^(\w{2})?(_)?(\w{2})/);if(r&&r[0])return r[0].replace(/_/g,"-")}return n.navigator.language}}).call(this,e(22))},755:function(t,n,e){"use strict";e.d(n,"a",(function(){return s}));var r=e(5),i=e.n(r),a=e(16),o=e.n(a),u=e(8),c=["fetch_error"];function s(t){return l.apply(this,arguments)}function l(){return(l=o()(i.a.mark((function t(n){var e,r,a,o,s,l,f,d;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=n.method,o=n.type,s=n.identifier,l=n.datapoint,(f=n.error)&&!c.includes(null==f?void 0:f.code)){t.next=3;break}return t.abrupt("return");case 3:return d="code: ".concat(f.code),(null===(e=f.data)||void 0===e?void 0:e.reason)&&(d+=", reason: ".concat(f.data.reason)),t.next=7,Object(u.z)("api_error","".concat(a,":").concat(o,"/").concat(s,"/data/").concat(l),"".concat(f.message," (").concat(d,")"),(null===(r=f.data)||void 0===r?void 0:r.status)||f.code);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}},78:function(t,n,e){"use strict";(function(t){e.d(n,"a",(function(){return i}));var r=e(124),i=e.n(r)()(t)}).call(this,e(22))},8:function(t,n,e){"use strict";e.d(n,"z",(function(){return u.b})),e.d(n,"w",(function(){return c.a})),e.d(n,"A",(function(){return c.b})),e.d(n,"y",(function(){return v})),e.d(n,"f",(function(){return g.a})),e.d(n,"m",(function(){return g.b})),e.d(n,"u",(function(){return p.c})),e.d(n,"v",(function(){return p.d})),e.d(n,"r",(function(){return p.b})),e.d(n,"l",(function(){return p.a})),e.d(n,"s",(function(){return y})),e.d(n,"g",(function(){return w})),e.d(n,"b",(function(){return O.b})),e.d(n,"a",(function(){return O.a})),e.d(n,"c",(function(){return O.e})),e.d(n,"i",(function(){return O.f})),e.d(n,"x",(function(){return O.k})),e.d(n,"j",(function(){return j.b})),e.d(n,"q",(function(){return j.c})),e.d(n,"e",(function(){return j.a})),e.d(n,"o",(function(){return k.b})),e.d(n,"k",(function(){return k.a})),e.d(n,"t",(function(){return k.d})),e.d(n,"p",(function(){return _})),e.d(n,"n",(function(){return x})),e.d(n,"d",(function(){return S})),e.d(n,"B",(function(){return D})),e.d(n,"h",(function(){return E}));var r=e(123),i=e.n(r),a=e(118),o=e.n(a),u=e(32),c=e(63),s=e(30),l=e.n(s),f=e(81),d=e.n(f),v=function(t){return d()(JSON.stringify(function t(n){var e={};return Object.keys(n).sort().forEach((function(r){var i=n[r];i&&"object"===l()(i)&&!Array.isArray(i)&&(i=t(i)),e[r]=i})),e}(t)))};var g=e(83),p=(e(84),e(73));function b(t){return t.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function h(t){return"

".concat(t.replace(/\n{2,}/g,"

"),"

")}function m(t){return t.replace(/\n/gi,"
")}function y(t){for(var n=t,e=0,r=[b,h,m];e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return u=t.done,t},e:function(t){c=!0,a=t},f:function(){try{u||null==e.return||e.return()}finally{if(c)throw a}}}}function o(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e1&&void 0!==arguments[1]?arguments[1]:location,e=new URL(n.href);if(t)return e.searchParams&&e.searchParams.get?e.searchParams.get(t):c(t);var r,o={},u=a(e.searchParams.entries());try{for(u.s();!(r=u.n()).done;){var s=i()(r.value,2),l=s[0],f=s[1];o[l]=f}}catch(t){u.e(t)}finally{u.f()}return o}}).call(this,e(22))},84:function(t,n,e){"use strict";(function(t){e(44),e(45)}).call(this,e(22))},85:function(t,n,e){"use strict";(function(t){e.d(n,"b",(function(){return a})),e.d(n,"c",(function(){return o})),e.d(n,"a",(function(){return u}));var r=e(169),i=e(62),a=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(n)))return"";var a=e.invertColor,o=void 0!==a&&a;return Object(r.a)(t.createElement(i.a,{direction:n>0?"up":"down",invertColor:o}))},o=function(t){var n,e,r,i,a,o,u,c,s,l,f,d,v,g,p;if(void 0!==t)return 1===(null==t||null===(n=t[0])||void 0===n||null===(e=n.data)||void 0===e||null===(r=e.rows)||void 0===r?void 0:r.length)||(null==t||null===(i=t[0])||void 0===i||null===(a=i.data)||void 0===a||null===(o=a.rows)||void 0===o||null===(u=o[0])||void 0===u||null===(c=u.metrics)||void 0===c||null===(s=c[0])||void 0===s||null===(l=s.values)||void 0===l?void 0:l[0])===(null==t||null===(f=t[0])||void 0===f||null===(d=f.data)||void 0===d||null===(v=d.totals)||void 0===v||null===(g=v[0])||void 0===g||null===(p=g.values)||void 0===p?void 0:p[0])},u=function(t,n){return t>0&&n>0?t/n-1:t>0?1:n>0?-1:0}}).call(this,e(3))},86:function(t,n,e){"use strict";(function(t){e.d(n,"a",(function(){return l}));var r=e(6),i=e.n(r),a=e(87),o=e(88);function u(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function c(t){for(var n=1;n1&&void 0!==arguments[1]?arguments[1]:t,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,i=c(c({},s),n);i.referenceSiteURL&&(i.referenceSiteURL=i.referenceSiteURL.toString().replace(/\/+$/,""));var u=Object(a.a)(i,e);return{enableTracking:function(){i.trackingEnabled=!0},disableTracking:function(){i.trackingEnabled=!1},initializeSnippet:u,isTrackingEnabled:function(){return!!i.trackingEnabled},trackEvent:Object(o.a)(i,e,u,r)}}}).call(this,e(22))},87:function(t,n,e){"use strict";(function(t){e.d(n,"a",(function(){return a}));var r=e(52),i=e(31);function a(n,e){var a,o=Object(r.a)(e);return function(){var e=t.document;if(void 0===a&&(a=!!e.querySelector("script[".concat(i.b,"]"))),!a){var r=e.createElement("script");r.setAttribute(i.b,""),r.async=!0,r.src="https://www.googletagmanager.com/gtag/js?id=".concat(n.trackingID,"&l=").concat(i.a),e.head.appendChild(r),o("js",new Date),o("config",n.trackingID,{send_page_view:n.isSiteKitScreen}),a=!0}}}}).call(this,e(22))},88:function(t,n,e){"use strict";e.d(n,"a",(function(){return v}));var r=e(5),i=e.n(r),a=e(6),o=e.n(a),u=e(16),c=e.n(u),s=e(52),l=e(42);function f(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function d(t){for(var n=1;n=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return c=t.done,t},e:function(t){u=!0,a=t},f:function(){try{c||null==e.return||e.return()}finally{if(u)throw a}}}}function i(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e1&&void 0!==arguments[1]?arguments[1]:location,e=new URL(r.href);if(t)return e.searchParams&&e.searchParams.get?e.searchParams.get(t):u(t);var n,i={},c=a(e.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var l=o()(n.value,2),s=l[0],f=l[1];i[s]=f}}catch(t){c.e(t)}finally{c.f()}return i}}).call(this,e(22))}},[[1120,1,0]]]); \ No newline at end of file diff --git a/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-components-gm2-ab3df926960d2b494fba.js b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-components-gm2-ab3df926960d2b494fba.js new file mode 100644 index 000000000..5b3fabe0d --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-components-gm2-ab3df926960d2b494fba.js @@ -0,0 +1,3 @@ +(window.__googlesitekit_webpackJsonp=window.__googlesitekit_webpackJsonp||[]).push([[6],{1:function(e,a){e.exports=googlesitekit.i18n},10:function(e,a,t){"use strict";var n=t(90),i=t.n(n);t.d(a,"r",(function(){return i.a})),t.d(a,"g",(function(){return n.HelperText})),t.d(a,"h",(function(){return n.Input}));var l=t(171);t.d(a,"m",(function(){return l.a}));var r=t(217);t.d(a,"j",(function(){return r.a}));var c=t(218);t.d(a,"l",(function(){return c.a}));var o=t(112),s=t.n(o);t.d(a,"q",(function(){return s.a})),t.d(a,"o",(function(){return o.Option}));var d=t(219);t.d(a,"n",(function(){return d.a}));var u=t(216);t.d(a,"i",(function(){return u.a}));var m=t(215);t.d(a,"k",(function(){return m.a}));var g=t(91),b=t.n(g);t.d(a,"c",(function(){return b.a})),t.d(a,"d",(function(){return g.DialogContent})),t.d(a,"e",(function(){return g.DialogFooter}));var f=t(214);t.d(a,"b",(function(){return f.a}));var p=t(98);t.d(a,"a",(function(){return p.a})),t.d(a,"f",(function(){return p.b})),t.d(a,"p",(function(){return p.c}))},107:function(e,a,t){"use strict";(function(e){t.d(a,"a",(function(){return Cell}));var n=t(18),i=t.n(n),l=t(6),r=t.n(l),c=t(21),o=t.n(c),s=t(0),d=t.n(s),u=t(11),m=t.n(u);function Cell(a){var t,n=a.className,l=a.alignTop,c=a.alignMiddle,s=a.alignBottom,d=a.alignRight,u=a.alignLeft,g=a.smAlignRight,b=a.mdAlignRight,f=a.lgAlignRight,p=a.smSize,h=a.smStart,v=a.smOrder,_=a.mdSize,k=a.mdStart,N=a.mdOrder,y=a.lgSize,E=a.lgStart,O=a.lgOrder,C=a.size,w=a.children,x=o()(a,["className","alignTop","alignMiddle","alignBottom","alignRight","alignLeft","smAlignRight","mdAlignRight","lgAlignRight","smSize","smStart","smOrder","mdSize","mdStart","mdOrder","lgSize","lgStart","lgOrder","size","children"]);return e.createElement("div",i()({},x,{className:m()(n,"mdc-layout-grid__cell",(t={"mdc-layout-grid__cell--align-top":l,"mdc-layout-grid__cell--align-middle":c,"mdc-layout-grid__cell--align-bottom":s,"mdc-layout-grid__cell--align-right":d,"mdc-layout-grid__cell--align-left":u,"mdc-layout-grid__cell--align-right-phone":g,"mdc-layout-grid__cell--align-right-tablet":b,"mdc-layout-grid__cell--align-right-desktop":f},r()(t,"mdc-layout-grid__cell--span-".concat(C),12>=C&&C>0),r()(t,"mdc-layout-grid__cell--span-".concat(y,"-desktop"),12>=y&&y>0),r()(t,"mdc-layout-grid__cell--start-".concat(E,"-desktop"),12>=E&&E>0),r()(t,"mdc-layout-grid__cell--order-".concat(O,"-desktop"),12>=O&&O>0),r()(t,"mdc-layout-grid__cell--span-".concat(_,"-tablet"),8>=_&&_>0),r()(t,"mdc-layout-grid__cell--start-".concat(k,"-tablet"),8>=k&&k>0),r()(t,"mdc-layout-grid__cell--order-".concat(N,"-tablet"),8>=N&&N>0),r()(t,"mdc-layout-grid__cell--span-".concat(p,"-phone"),4>=p&&p>0),r()(t,"mdc-layout-grid__cell--start-".concat(h,"-phone"),4>=h&&h>0),r()(t,"mdc-layout-grid__cell--order-".concat(v,"-phone"),4>=v&&v>0),t))}),w)}Cell.propTypes={smSize:d.a.number,smStart:d.a.number,smOrder:d.a.number,mdSize:d.a.number,mdStart:d.a.number,mdOrder:d.a.number,lgSize:d.a.number,lgStart:d.a.number,lgOrder:d.a.number,size:d.a.number,alignTop:d.a.bool,alignMiddle:d.a.bool,alignBottom:d.a.bool,alignRight:d.a.bool,alignLeft:d.a.bool,smAlignRight:d.a.bool,mdAlignRight:d.a.bool,lgAlignRight:d.a.bool,className:d.a.string,children:d.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,t(3))},108:function(e,a,t){"use strict";(function(e){var n=t(18),i=t.n(n),l=t(21),r=t.n(l),c=t(0),o=t.n(c),s=t(11),d=t.n(s),u=t(2),m=Object(u.forwardRef)((function(a,t){var n=a.className,l=a.children,c=r()(a,["className","children"]);return e.createElement("div",i()({ref:t,className:d()("mdc-layout-grid__inner",n)},c),l)}));m.displayName="Row",m.propTypes={className:o.a.string,children:o.a.node},m.defaultProps={className:""},a.a=m}).call(this,t(3))},109:function(e,a,t){"use strict";(function(e){var n=t(18),i=t.n(n),l=t(21),r=t.n(l),c=t(0),o=t.n(c),s=t(11),d=t.n(s),u=t(2),m=Object(u.forwardRef)((function(a,t){var n=a.alignLeft,l=a.fill,c=a.className,o=a.children,s=a.collapsed,u=r()(a,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",i()({className:d()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":n,"mdc-layout-grid--collapsed":s,"mdc-layout-grid--fill":l})},u,{ref:t}),o)}));m.displayName="Grid",m.propTypes={alignLeft:o.a.bool,fill:o.a.bool,className:o.a.string,collapsed:o.a.bool,children:o.a.node},m.defaultProps={className:""},a.a=m}).call(this,t(3))},1108:function(e,a,t){"use strict";t.r(a),function(e){t.d(a,"Button",(function(){return i})),t.d(a,"Checkbox",(function(){return l})),t.d(a,"Chip",(function(){return r})),t.d(a,"Dialog",(function(){return c})),t.d(a,"Menu",(function(){return o})),t.d(a,"ProgressBar",(function(){return s})),t.d(a,"Radio",(function(){return d})),t.d(a,"Switch",(function(){return u})),t.d(a,"Tooltip",(function(){return m}));var n=t(335);void 0===e.googlesitekit&&(e.googlesitekit={}),e.googlesitekit.components=n.a;var i=n.a.Button,l=n.a.Checkbox,r=n.a.Chip,c=n.a.Dialog,o=n.a.Menu,s=n.a.ProgressBar,d=n.a.Radio,u=n.a.Switch,m=n.a.Tooltip}.call(this,t(22))},132:function(e,a,t){"use strict";(function(e){var n=t(6),i=t.n(n),l=t(0),r=t.n(l);function c(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var a=1;aNote: %s","google-site-kit"),_),{strong:e.createElement("strong",null)})),e.createElement("footer",{className:"mdc-dialog__actions"},e.createElement(g.a,{onClick:c,danger:k,disabled:y},v||Object(m.__)("Disconnect","google-site-kit")),e.createElement(p.a,{isSaving:y}),e.createElement(b.a,{className:"googlesitekit-margin-left-auto mdc-dialog__cancel-button",onClick:n,disabled:y},Object(m.__)("Cancel","google-site-kit"))))))))};h.displayName="Dialog",h.propTypes={dialogActive:i.a.bool,handleDialog:i.a.func,handleConfirm:i.a.func.isRequired,title:i.a.string,description:i.a.string,confirmButton:i.a.string,danger:i.a.bool},h.defaultProps={dialogActive:!1,handleDialog:null,title:null,description:null,confirmButton:null,danger:!1},a.a=h}).call(this,t(3))},847:function(e,a,t){"use strict";(function(e){var n=t(14),i=t.n(n),l=t(11),r=t.n(l),c=t(0),o=t.n(c),s=t(431),d=t(2),u=t(10),m=Object(d.forwardRef)((function(a,t){var n=a.children,l=a.className,c=a.menuOpen,o=a.menuItems,m=a.onSelected,g=a.nonInteractive,b=a.id,f=Object(d.useState)(null),p=i()(f,2),h=p[0],v=p[1],_=Object(d.useRef)(null),k=Object(s.a)(t,_),N=Object(d.useCallback)((function(e){var a=e.detail.index;m(a,e)}),[m]);return Object(d.useEffect)((function(){if(null==_?void 0:_.current){var e=new u.k(_.current);return e.listen("MDCMenu:selected",N),e.quickOpen=!0,v(e),function(){e.unlisten("MDCMenu:selected",N),e.destroy()}}}),[_,N,g]),Object(d.useEffect)((function(){h&&(h.open=c,h.setDefaultFocusState(1))}),[h,c]),e.createElement("div",{className:r()("mdc-menu","mdc-menu-surface",l),ref:k},e.createElement("ul",{"aria-hidden":!c,"aria-orientation":"vertical",className:r()("mdc-list",{"mdc-list--non-interactive":g}),id:b,role:"menu",tabIndex:"-1"},!n&&o.map((function(a,t){return e.createElement("li",{key:t,className:"mdc-list-item",role:"menuitem"},e.createElement("span",{className:"mdc-list-item__text"},a))})),n))}));m.displayName="Menu",m.propTypes={className:o.a.string,children:o.a.node,menuOpen:o.a.bool.isRequired,menuItems:o.a.array,id:o.a.string.isRequired,onSelected:o.a.func,nonInteractive:o.a.bool},m.defaultProps={onSelected:function(){},nonInteractive:!1},a.a=m}).call(this,t(3))},848:function(e,a,t){"use strict";(function(e){t.d(a,"a",(function(){return ProgressBar}));var n=t(0),i=t.n(n),l=t(11),r=t.n(l);function ProgressBar(a){var t=a.className,n=a.small,i=a.compress,l=a.indeterminate,c=a.height,o=a.progress,s=void 0!==c?Math.round(c/2):void 0,d=o?"scaleX(".concat(o,")"):void 0;return e.createElement("div",{role:"progressbar",style:{marginTop:s,marginBottom:s},className:r()("mdc-linear-progress",t,{"mdc-linear-progress--indeterminate":l,"mdc-linear-progress--small":n,"mdc-linear-progress--compress":i})},e.createElement("div",{className:"mdc-linear-progress__buffering-dots"}),e.createElement("div",{className:"mdc-linear-progress__buffer"}),e.createElement("div",{className:"mdc-linear-progress__bar mdc-linear-progress__primary-bar",style:{transform:d}},e.createElement("span",{className:"mdc-linear-progress__bar-inner"})),e.createElement("div",{className:"mdc-linear-progress__bar mdc-linear-progress__secondary-bar"},e.createElement("span",{className:"mdc-linear-progress__bar-inner"})))}ProgressBar.propTypes={className:i.a.string,small:i.a.bool,compress:i.a.bool,indeterminate:i.a.bool,progress:i.a.number,height:i.a.number},ProgressBar.defaultProps={className:"",small:!1,compress:!1,indeterminate:!0,progress:0}}).call(this,t(3))},849:function(e,a,t){"use strict";(function(e){t.d(a,"a",(function(){return Radio}));var n=t(0),i=t.n(n),l=t(11),r=t.n(l),c=t(2),o=t(10);function Radio(a){var t=a.id,n=a.name,i=a.value,l=a.checked,s=void 0!==l&&l,d=a.disabled,u=void 0!==d&&d,m=a.children,g=a.tabIndex,b=a.onKeyDown,f=void 0===b?null:b,p=a.onClick,h=void 0===p?null:p,v=a.onChange,_=void 0===v?null:v,k=Object(c.useCallback)((function(e){if(null!==e){var a=new o.j(e),t=e.querySelector(".mdc-radio");t&&(a.input=new o.l(t))}}),[]);return e.createElement("div",{className:"mdc-form-field",ref:k},e.createElement("div",{className:r()("mdc-radio",{"mdc-radio--disabled":u})},e.createElement("input",{className:"mdc-radio__native-control",onClick:h,onKeyDown:f,type:"radio",id:t,name:n,value:i,checked:s,disabled:u,tabIndex:g,onChange:_,readOnly:!0}),e.createElement("div",{className:"mdc-radio__background"},e.createElement("div",{className:"mdc-radio__outer-circle"}),e.createElement("div",{className:"mdc-radio__inner-circle"}))),e.createElement("label",{htmlFor:t},m))}Radio.propTypes={onClick:i.a.func,onKeyDown:i.a.func,onChange:i.a.func,id:i.a.string.isRequired,name:i.a.string.isRequired,value:i.a.string.isRequired,checked:i.a.bool,disabled:i.a.bool,children:i.a.string.isRequired,tabIndex:i.a.oneOfType([i.a.number,i.a.string])}}).call(this,t(3))},850:function(e,a,t){"use strict";(function(e){var n=t(0),i=t.n(n),l=t(11),r=t.n(l),c=t(203),o=t(2),s=t(74),d=t(10),u=function Switch(a){var t=a.onClick,n=a.label,i=a.checked,l=a.disabled,u=a.hideLabel,m=Object(c.a)(Switch),g=Object(o.useCallback)((function(e){null!==e&&d.n.attachTo(e)}),[]),b=Object(o.useCallback)((function(e){"function"==typeof t&&s.b===e.keyCode&&t(e)}),[t]),f="googlesitekit-switch-".concat(m);return e.createElement(o.Fragment,null,e.createElement("div",{"aria-checked":i?"true":"false",className:r()("mdc-switch",{"mdc-switch--checked":i,"mdc-switch--disabled":l}),onClick:t,onKeyDown:b,role:"switch",ref:g,tabIndex:0},e.createElement("div",{className:"mdc-switch__track"}," "),e.createElement("div",{className:"mdc-switch__thumb-underlay"},e.createElement("div",{className:"mdc-switch__thumb"},e.createElement("input",{type:"checkbox",id:f,className:"mdc-switch__native-control",role:"switch",checked:i,disabled:l,readOnly:!0})))),e.createElement("label",{className:r()({"screen-reader-only":u}),htmlFor:f},n))};u.propTypes={id:i.a.string,onClick:i.a.func,label:i.a.node.isRequired,checked:i.a.bool,disabled:i.a.bool,hideLabel:i.a.bool},u.defaultProps={checked:!1,disabled:!1,hideLabel:!0},a.a=u}).call(this,t(3))},98:function(e,a,t){"use strict";var n=t(107);t.d(a,"a",(function(){return n.a}));var i=t(108);t.d(a,"c",(function(){return i.a}));var l=t(109);t.d(a,"b",(function(){return l.a}))}},[[1108,1,0]]]); \ No newline at end of file diff --git a/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-components-gm3-96c09bc4fc8583c632af.js b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-components-gm3-96c09bc4fc8583c632af.js new file mode 100644 index 000000000..5547f9c82 --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-components-gm3-96c09bc4fc8583c632af.js @@ -0,0 +1 @@ +(window.__googlesitekit_webpackJsonp=window.__googlesitekit_webpackJsonp||[]).push([[7],{1110:function(n,t,o){"use strict";o.r(t),function(n){o.d(t,"Button",(function(){return i})),o.d(t,"Checkbox",(function(){return r})),o.d(t,"Chip",(function(){return e})),o.d(t,"Dialog",(function(){return c})),o.d(t,"Menu",(function(){return l})),o.d(t,"ProgressBar",(function(){return a})),o.d(t,"Radio",(function(){return s})),o.d(t,"Switch",(function(){return f})),o.d(t,"Tooltip",(function(){return g}));var u=o(337);void 0===n.googlesitekit&&(n.googlesitekit={}),n.googlesitekit.components=u.a;var i=u.a.Button,r=u.a.Checkbox,e=u.a.Chip,c=u.a.Dialog,l=u.a.Menu,a=u.a.ProgressBar,s=u.a.Radio,f=u.a.Switch,g=u.a.Tooltip}.call(this,o(22))},337:function(n,t,o){"use strict";var u={Button:function Button(){return null},Checkbox:function Checkbox(){return null},Chip:function Chip(){return null},Dialog:function Dialog(){return null},Menu:function Menu(){return null},ProgressBar:function ProgressBar(){return null},Radio:function Radio(){return null},Switch:function Switch(){return null},Tooltip:function Tooltip(){return null}};t.a=u}},[[1110,1,0]]]); \ No newline at end of file diff --git a/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-data-07c00a76bf006711abf5.js b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-data-07c00a76bf006711abf5.js new file mode 100644 index 000000000..70c869bc6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-data-07c00a76bf006711abf5.js @@ -0,0 +1 @@ +(window.__googlesitekit_webpackJsonp=window.__googlesitekit_webpackJsonp||[]).push([[8],{140:function(t,n,e){"use strict";var r=e(2),o=Object(r.createContext)(!1);n.a=o},33:function(t,n,e){"use strict";e.d(n,"b",(function(){return r})),e.d(n,"a",(function(){return o}));var r="core/ui",o="activeContextID"},402:function(t,n,e){"use strict";e.d(n,"a",(function(){return o}));var r=e(426);function o(t){return Object(r.a)(t)}},639:function(t,n,e){"use strict";(function(t){var r,o=e(66),c=e(928),i=e(69),u=e(402),a=Object(o.c)({},null===(r=t.wp)||void 0===r?void 0:r.data);a.combineStores=i.a,a.commonActions=i.b,a.commonControls=i.c,a.commonStore=i.d,a.createReducer=u.a,a.useInViewSelect=c.a,a.createRegistryControl=o.d,a.createRegistrySelector=o.e,a.useSelect=o.h,a.useDispatch=o.f,a.useRegistry=o.g,a.withSelect=o.j,a.withDispatch=o.i,a.RegistryProvider=o.a,n.a=a}).call(this,e(22))},69:function(t,n,e){"use strict";e.d(n,"a",(function(){return P})),e.d(n,"b",(function(){return T})),e.d(n,"c",(function(){return _})),e.d(n,"d",(function(){return D})),e.d(n,"e",(function(){return E})),e.d(n,"g",(function(){return G})),e.d(n,"f",(function(){return x}));var r,o=e(5),c=e.n(o),i=e(24),u=e.n(i),a=e(6),f=e.n(a),s=e(7),l=e.n(s),p=e(201),d=e.n(p),v=e(71),y=e.n(v),g=e(66);function b(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function h(t){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o.reduce((function(t,e){return e(t,n)}),t)}},S=O,k=O,R=O,A=function(t){return t},P=function(){for(var t=arguments.length,n=new Array(t),e=0;e=1?e[o]+1:1,e[o]>1&&n.push(o)}return n},D={actions:T,controls:_,reducer:A},E=function(t){return function(n){return I(t(n))}},I=y()((function(t){return d()(t,(function(t,n){return function(){var e=t.apply(void 0,arguments);return l()(void 0!==e,"".concat(n,"(...) is not resolved")),e}}))}));function G(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=n.negate,r=void 0!==e&&e,o=Object(g.e)((function(n){return function(e){var o=!r,c=!!r;try{for(var i=arguments.length,u=new Array(i>1?i-1:0),a=1;a1?r-1:0),c=1;c0&&void 0!==arguments[0]?arguments[0]:{},n=t.sticky,e=void 0!==n&&n,r=Object(i.useContext)(s.a),o=Object(i.useState)(!1),u=a()(o,2),p=u[0],d=u[1],v=Object(c.h)((function(t){return t(l.b).getInViewResetHook()}));return Object(i.useEffect)((function(){r.value&&!p&&d(!0)}),[p,r,d]),Object(f.a)((function(){d(!1)}),[v]),!(!e||!p)||!!r.value},d=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],e=p({sticky:!0}),r=Object(i.useRef)(),u=Object(i.useCallback)(t,[].concat(o()(n),[t])),a=Object(c.h)(e?u:function(){});return e&&(r.current=a),r.current}},965:function(t,n,e){"use strict";e.r(n),function(t){var r=e(639);void 0===t.googlesitekit&&(t.googlesitekit={}),t.googlesitekit.data=r.a,n.default=r.a}.call(this,e(22))}},[[965,1,0]]]); \ No newline at end of file diff --git a/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-datastore-forms-e7ade08a4368d1e7d694.js b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-datastore-forms-e7ade08a4368d1e7d694.js new file mode 100644 index 000000000..e2eb8e79e --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-datastore-forms-e7ade08a4368d1e7d694.js @@ -0,0 +1,14 @@ +(window.__googlesitekit_webpackJsonp=window.__googlesitekit_webpackJsonp||[]).push([[9],{1:function(r,t){r.exports=googlesitekit.i18n},101:function(r,t,e){"use strict";e.d(t,"a",(function(){return b})),e.d(t,"c",(function(){return y})),e.d(t,"b",(function(){return m}));var n=e(21),a=e.n(n),o=e(6),i=e.n(o),c=e(5),u=e.n(c),s=e(7),f=e.n(s),l=e(4),d=e.n(l),v=e(46),p=e(8),g=d.a.createRegistryControl,b=function(r){var t;f()(r,"storeName is required to create a snapshot store.");var e={},n={deleteSnapshot:u.a.mark((function r(){var t;return u.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,{payload:{},type:"DELETE_SNAPSHOT"};case 2:return t=r.sent,r.abrupt("return",t);case 4:case"end":return r.stop()}}),r)})),restoreSnapshot:u.a.mark((function r(){var t,e,n,a,o,i,c=arguments;return u.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return t=c.length>0&&void 0!==c[0]?c[0]:{},e=t.clearAfterRestore,n=void 0===e||e,r.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=r.sent,o=a.cacheHit,i=a.value,!o){r.next=13;break}return r.next=10,{payload:{snapshot:i},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!n){r.next=13;break}return r.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return r.abrupt("return",o);case 14:case"end":return r.stop()}}),r)})),createSnapshot:u.a.mark((function r(){var t;return u.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=r.sent,r.abrupt("return",t);case 4:case"end":return r.stop()}}),r)}))},o=(t={},i()(t,"DELETE_SNAPSHOT",(function(){return Object(v.a)("datastore::cache::".concat(r))})),i()(t,"CREATE_SNAPSHOT",g((function(t){return function(){return Object(v.d)("datastore::cache::".concat(r),t.stores[r].store.getState())}}))),i()(t,"RESTORE_SNAPSHOT",(function(){return Object(v.b)("datastore::cache::".concat(r),p.b)})),t);return{initialState:e,actions:n,controls:o,reducer:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,t=arguments.length>1?arguments[1]:void 0,n=t.type,o=t.payload;switch(n){case"SET_STATE_FROM_SNAPSHOT":var i=o.snapshot,c=(i.error,a()(i,["error"]));return c;default:return r}}}},h=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Object.values(r.stores).filter((function(r){return Object.keys(r.getActions()).includes("restoreSnapshot")}))},y=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Promise.all(h(r).map((function(r){return r.getActions().createSnapshot()})))},m=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Promise.all(h(r).map((function(r){return r.getActions().restoreSnapshot()})))}},1132:function(r,t,e){"use strict";e.r(t);var n=e(4),a=e.n(n),o=e(53),i=e(101),c=e(6),u=e.n(c),s=e(7),f=e.n(s),l=e(57),d=e.n(l);function v(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function p(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:o;return t instanceof Set&&t.has(r)}}).call(this,e(22))},43:function(r,t,e){"use strict";e.d(t,"a",(function(){return a}));var n=e(37),a=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof r;if(!t)return!1;var e=r.split("-");return 3===e.length&&Object(n.a)(new Date(r))}},46:function(r,t,e){"use strict";(function(r){e.d(t,"b",(function(){return h})),e.d(t,"d",(function(){return y})),e.d(t,"a",(function(){return m})),e.d(t,"c",(function(){return O}));var n=e(5),a=e.n(n),o=e(16),i=e.n(o),c=(e(24),e(8));function u(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!e){if(Array.isArray(r)||(e=function(r,t){if(!r)return;if("string"==typeof r)return s(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);"Object"===e&&r.constructor&&(e=r.constructor.name);if("Map"===e||"Set"===e)return Array.from(r);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return s(r,t)}(r))||t&&r&&"number"==typeof r.length){e&&(r=e);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return i=r.done,r},e:function(r){c=!0,o=r},f:function(){try{i||null==e.return||e.return()}finally{if(c)throw o}}}}function s(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e2&&void 0!==b[2]?b[2]:{},i=o.ttl,u=void 0===i?c.b:i,s=o.timestamp,f=void 0===s?Math.round(Date.now()/1e3):s,d=o.isError,v=void 0!==d&&d,t.next=3,g();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(l).concat(e),JSON.stringify({timestamp:f,ttl:u,value:n,isError:v})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),r.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(r,e){return t.apply(this,arguments)}}(),m=function(){var t=i()(a.a.mark((function t(e){var n;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,g();case 2:if(!(n=t.sent)){t.next=13;break}return t.prev=4,n.removeItem("".concat(l).concat(e)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),r.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(r){return t.apply(this,arguments)}}(),O=function(){var t=i()(a.a.mark((function t(){var e,n,o,i;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,g();case 2:if(!(e=t.sent)){t.next=14;break}for(t.prev=4,n=[],o=0;o2&&void 0!==arguments[2]?arguments[2]:{},n=e.clearMatchingLegacyError,a=void 0!==n&&n;return r&&s()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:r,args:t,clearMatchingLegacyError:a}}},clearErrors:function(r){return{type:"CLEAR_ERRORS",payload:{baseName:r}}}};function h(r){s()(r,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var e={getErrorForSelector:function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var o=e.getError(t,n,a);if(o)return p(p({},o),{},{selectorData:{storeName:r,name:n,args:a}})},getErrorForAction:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(t,"actionName is required."),e.getError(r,t,n)},getError:function(r,t,e){var n=r.error,a=r.errors;return t||e?(s()(t,"baseName is required."),a[g(t,e)]):n},getErrors:function(r){var t=new Set(Object.values(r.errors));return void 0!==r.error&&t.add(r.error),Array.from(t)},getMetaDataForError:function(r,t){var e=Object.keys(r.errors).find((function(e){return r.errors[e]===t}));return e?{baseName:e.substring(0,e.indexOf("::")),args:r.errorArgs[e]}:null},getSelectorDataForError:Object(c.e)((function(t){return function(e,n){var a=t(r).getMetaDataForError(n);if(a){var o=a.baseName,i=a.args;if(!!t(r)[o])return{storeName:r,name:o,args:i}}return null}})),hasErrors:function(r){return e.getErrors(r).length>0}};return{initialState:t,actions:b,controls:{},reducer:function(r,t){var e=t.type,n=t.payload;switch(e){case"RECEIVE_ERROR":var o=n.baseName,i=n.args,c=n.error;if(o){var u=g(o,i);return p(p({},r),{},{errors:p(p({},r.errors||{}),{},a()({},u,c)),errorArgs:p(p({},r.errorArgs||{}),{},a()({},u,i))})}return p(p({},r),{},{error:c});case"CLEAR_ERROR":var s=n.baseName,f=n.args,l=p({},r);if(s){var d=g(s,f);l.errors=p({},r.errors||{}),l.errorArgs=p({},r.errorArgs||{}),n.clearMatchingLegacyError&&l.error===l.errors[d]&&delete l.error,delete l.errors[d],delete l.errorArgs[d]}else l.error=void 0;return l;case"CLEAR_ERRORS":var v=n.baseName,b=p({},r);if(v)for(var h in b.errors=p({},r.errors||{}),b.errorArgs=p({},r.errorArgs||{}),b.errors)(h===v||h.startsWith("".concat(v,"::")))&&(delete b.errors[h],delete b.errorArgs[h]);else b.errors={},b.errorArgs={},b.error=void 0;return b;default:return r}},resolvers:{},selectors:e}}},62:function(r,t,e){"use strict";(function(r){var n=e(0),a=e.n(n),o=e(11),i=e.n(o);function ChangeArrow(t){var e=t.direction,n=t.invertColor,a=t.width,o=t.height;return r.createElement("svg",{className:i()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(e),{"googlesitekit-change-arrow--inverted-color":n}),width:a,height:o,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:a.a.string,invertColor:a.a.bool,width:a.a.number,height:a.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,e(3))},63:function(r,t,e){"use strict";e.d(t,"a",(function(){return i})),e.d(t,"b",(function(){return c}));var n=e(30),a=e.n(n),o=e(78),i=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:o.a.sanitize(r,t)}};function c(r){var t,e="object"===a()(r)?r.toString():r;return null==e||null===(t=e.replace)||void 0===t?void 0:t.call(e,/\/+$/,"")}},68:function(r,t,e){"use strict";e.d(t,"d",(function(){return n.e})),e.d(t,"c",(function(){return n.d})),e.d(t,"b",(function(){return n.b})),e.d(t,"a",(function(){return n.a})),e.d(t,"e",(function(){return n.f})),e.d(t,"g",(function(){return c})),e.d(t,"h",(function(){return s})),e.d(t,"i",(function(){return f})),e.d(t,"j",(function(){return l.a})),e.d(t,"f",(function(){return v})),e.d(t,"k",(function(){return u.a}));var n=e(36),a=e(7),o=e.n(a),i=e(37),c=function(r){o()(Object(i.a)(r),n.c);var t="".concat(r.getMonth()+1),e="".concat(r.getDate());return[r.getFullYear(),t.length<2?"0".concat(t):t,e.length<2?"0".concat(e):e].join("-")},u=e(38),s=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,e=Object(u.a)(r);return e.setDate(e.getDate()-t),c(e)},f=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=r.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},l=e(43);var d=e(1);function v(){var r=function(r){return Object(d.sprintf)( +/* translators: %s: number of days */ +Object(d._n)("Last %s day","Last %s days",r,"google-site-kit"),r)};return{"last-7-days":{slug:"last-7-days",label:r(7),days:7},"last-14-days":{slug:"last-14-days",label:r(14),days:14},"last-28-days":{slug:"last-28-days",label:r(28),days:28},"last-90-days":{slug:"last-90-days",label:r(90),days:90}}}},73:function(r,t,e){"use strict";(function(r){e.d(t,"c",(function(){return w})),e.d(t,"d",(function(){return S})),e.d(t,"b",(function(){return E})),e.d(t,"a",(function(){return k}));var n=e(14),a=e.n(n),o=e(30),i=e.n(o),c=e(6),u=e.n(c),s=e(21),f=e.n(s),l=e(26),d=e(71),v=e.n(d),p=e(1);function g(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function b(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},e=y(r,t),n=e.formatUnit,a=e.formatDecimal;try{return n()}catch(r){return a()}},y=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r=parseInt(r,10),Number.isNaN(r)&&(r=0);var e=Math.floor(r/60/60),n=Math.floor(r/60%60),a=Math.floor(r%60);return{hours:e,minutes:n,seconds:a,formatUnit:function(){var o=t.unitDisplay,i=b(b({unitDisplay:void 0===o?"short":o},f()(t,["unitDisplay"])),{},{style:"unit"});return 0===r?S(a,b(b({},i),{},{unit:"second"})):Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?S(a,b(b({},i),{},{unit:"second"})):"",n?S(n,b(b({},i),{},{unit:"minute"})):"",e?S(e,b(b({},i),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(p.__)("%ds","google-site-kit"),a);if(0===r)return t;var o=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(p.__)("%dm","google-site-kit"),n),i=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(p.__)("%dh","google-site-kit"),e);return Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",n?o:"",e?i:"").trim()}}},m=function(r){return 1e6<=r?Math.round(r/1e5)/10:1e4<=r?Math.round(r/1e3):1e3<=r?Math.round(r/100)/10:r},O=function(r){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in millions. +Object(p.__)("%sM","google-site-kit"),S(m(r),r%10==0?{}:t)):1e4<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),S(m(r))):1e3<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),S(m(r),r%10==0?{}:t)):S(r,{signDisplay:"never",maximumFractionDigits:1})},w=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r=Object(l.isFinite)(r)?r:Number(r),Object(l.isFinite)(r)||(console.warn("Invalid number",r,i()(r)),r=0);var e={};if("%"===t)e={style:"percent",maximumFractionDigits:2};else{if("s"===t)return h(r,{unitDisplay:"narrow"});t&&"string"==typeof t?e={style:"currency",currency:t}:Object(l.isPlainObject)(t)&&(e=b({},t))}var n=e,a=n.style,o=void 0===a?"metric":a;return"metric"===o?O(r):"duration"===o?h(r,t):S(r,e)},j=v()(console.warn),S=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.locale,n=void 0===e?k():e,o=f()(t,["locale"]);try{return new Intl.NumberFormat(n,o).format(r)}catch(t){j("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(o)," ).format( ").concat(i()(r)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},u=["signDisplay","compactDisplay"],s={},l=0,d=Object.entries(o);l1&&void 0!==arguments[1]?arguments[1]:{},e=t.locale,n=void 0===e?k():e,a=t.style,o=void 0===a?"long":a,i=t.type,c=void 0===i?"conjunction":i;if(Intl.ListFormat){var u=new Intl.ListFormat(n,{style:o,type:c});return u.format(r)} +/* translators: used between list items, there is a space after the comma. */var s=Object(p.__)(", ","google-site-kit");return r.join(s)},k=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,e=Object(l.get)(t,["_googlesitekitLegacyData","locale"]);if(e){var n=e.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,e(22))},78:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return a}));var n=e(124),a=e.n(n)()(r)}).call(this,e(22))},8:function(r,t,e){"use strict";e.d(t,"z",(function(){return c.b})),e.d(t,"w",(function(){return u.a})),e.d(t,"A",(function(){return u.b})),e.d(t,"y",(function(){return v})),e.d(t,"f",(function(){return p.a})),e.d(t,"m",(function(){return p.b})),e.d(t,"u",(function(){return g.c})),e.d(t,"v",(function(){return g.d})),e.d(t,"r",(function(){return g.b})),e.d(t,"l",(function(){return g.a})),e.d(t,"s",(function(){return m})),e.d(t,"g",(function(){return O})),e.d(t,"b",(function(){return w.b})),e.d(t,"a",(function(){return w.a})),e.d(t,"c",(function(){return w.e})),e.d(t,"i",(function(){return w.f})),e.d(t,"x",(function(){return w.k})),e.d(t,"j",(function(){return j.b})),e.d(t,"q",(function(){return j.c})),e.d(t,"e",(function(){return j.a})),e.d(t,"o",(function(){return S.b})),e.d(t,"k",(function(){return S.a})),e.d(t,"t",(function(){return S.d})),e.d(t,"p",(function(){return E})),e.d(t,"n",(function(){return k})),e.d(t,"d",(function(){return _})),e.d(t,"B",(function(){return D})),e.d(t,"h",(function(){return A}));var n=e(123),a=e.n(n),o=e(118),i=e.n(o),c=e(32),u=e(63),s=e(30),f=e.n(s),l=e(81),d=e.n(l),v=function(r){return d()(JSON.stringify(function r(t){var e={};return Object.keys(t).sort().forEach((function(n){var a=t[n];a&&"object"===f()(a)&&!Array.isArray(a)&&(a=r(a)),e[n]=a})),e}(r)))};var p=e(83),g=(e(84),e(73));function b(r){return r.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function h(r){return"

".concat(r.replace(/\n{2,}/g,"

"),"

")}function y(r){return r.replace(/\n/gi,"
")}function m(r){for(var t=r,e=0,n=[b,h,y];e=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,u=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return c=r.done,r},e:function(r){u=!0,o=r},f:function(){try{c||null==e.return||e.return()}finally{if(u)throw o}}}}function i(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e1&&void 0!==arguments[1]?arguments[1]:location,e=new URL(t.href);if(r)return e.searchParams&&e.searchParams.get?e.searchParams.get(r):u(r);var n,i={},c=o(e.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var s=a()(n.value,2),f=s[0],l=s[1];i[f]=l}}catch(r){c.e(r)}finally{c.f()}return i}}).call(this,e(22))},84:function(r,t,e){"use strict";(function(r){e(44),e(45)}).call(this,e(22))},85:function(r,t,e){"use strict";(function(r){e.d(t,"b",(function(){return o})),e.d(t,"c",(function(){return i})),e.d(t,"a",(function(){return c}));var n=e(169),a=e(62),o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var o=e.invertColor,i=void 0!==o&&o;return Object(n.a)(r.createElement(a.a,{direction:t>0?"up":"down",invertColor:i}))},i=function(r){var t,e,n,a,o,i,c,u,s,f,l,d,v,p,g;if(void 0!==r)return 1===(null==r||null===(t=r[0])||void 0===t||null===(e=t.data)||void 0===e||null===(n=e.rows)||void 0===n?void 0:n.length)||(null==r||null===(a=r[0])||void 0===a||null===(o=a.data)||void 0===o||null===(i=o.rows)||void 0===i||null===(c=i[0])||void 0===c||null===(u=c.metrics)||void 0===u||null===(s=u[0])||void 0===s||null===(f=s.values)||void 0===f?void 0:f[0])===(null==r||null===(l=r[0])||void 0===l||null===(d=l.data)||void 0===d||null===(v=d.totals)||void 0===v||null===(p=v[0])||void 0===p||null===(g=p.values)||void 0===g?void 0:g[0])},c=function(r,t){return r>0&&t>0?r/t-1:r>0?1:t>0?-1:0}}).call(this,e(3))},86:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return f}));var n=e(6),a=e.n(n),o=e(87),i=e(88);function c(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function u(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r,a=u(u({},s),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(o.a)(a,e);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(i.a)(a,e,c,n)}}}).call(this,e(22))},87:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return o}));var n=e(52),a=e(31);function o(t,e){var o,i=Object(n.a)(e);return function(){var e=r.document;if(void 0===o&&(o=!!e.querySelector("script[".concat(a.b,"]"))),!o){var n=e.createElement("script");n.setAttribute(a.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),e.head.appendChild(n),i("js",new Date),i("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),o=!0}}}}).call(this,e(22))},88:function(r,t,e){"use strict";e.d(t,"a",(function(){return v}));var n=e(5),a=e.n(n),o=e(6),i=e.n(o),c=e(16),u=e.n(c),s=e(52),f=e(42);function l(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function d(r){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o.reduce((function(t,r){return r(t,n)}),t)}},m=w,S=w,A=w,P=function(t){return t},_=function(){for(var t=arguments.length,n=new Array(t),r=0;r=1?r[o]+1:1,r[o]>1&&n.push(o)}return n},I={actions:E,controls:k,reducer:P},D=function(t){return function(n){return N(t(n))}},N=d()((function(t){return v()(t,(function(t,n){return function(){var r=t.apply(void 0,arguments);return l()(void 0!==r,"".concat(n,"(...) is not resolved")),r}}))}));function R(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.negate,e=void 0!==r&&r,o=Object(y.e)((function(n){return function(r){var o=!e,c=!!e;try{for(var i=arguments.length,a=new Array(i>1?i-1:0),u=1;u1?e-1:0),c=1;c0&&void 0!==arguments[0]?arguments[0]:{},t=e.url;E()(Object(M.a)(t),"a valid url is required to fetch HTML.")},controlCallback:(V=T()(a.a.mark((function e(t){var r,n,o,i,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.url,n={credentials:"omit"},o={tagverify:1,timestamp:Date.now()},e.next=5,fetch(Object(F.a)(r,o),n);case 5:return i=e.sent,e.prev=6,e.next=9,i.text();case 9:if(""!==(c=e.sent)&&void 0!==c){e.next=12;break}return e.abrupt("return",null);case 12:return e.abrupt("return",c);case 15:return e.prev=15,e.t0=e.catch(6),e.abrupt("return",null);case 18:case"end":return e.stop()}}),e,null,[[6,15]])}))),function(e){return V.apply(this,arguments)}),reducerCallback:function(e,t,r){var n=r.url;return G(G({},e),{},{htmlForURL:G(G({},e.htmlForURL),{},u()({},n,t))})}}),z={resetHTMLForURL:a.a.mark((function e(t){var r,n;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.a.commonActions.getRegistry();case 2:return r=e.sent,n=r.dispatch,e.next=6,{payload:{url:t},type:"RESET_HTML_FOR_URL"};case 6:return e.abrupt("return",n(l.c).invalidateResolutionForStoreSelector("getHTMLForURL"));case 7:case"end":return e.stop()}}),e)})),checkForSetupTag:a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CHECK_FOR_SETUP_TAG"};case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})),waitForHTMLForURL:a.a.mark((function e(t){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{url:t},type:"WAIT_FOR_HTML_FOR_URL"};case 2:case"end":return e.stop()}}),e)}))},$=(A={},u()(A,"WAIT_FOR_HTML_FOR_URL",K((function(e){return function(t){var r=t.payload.url;return e.__experimentalResolveSelect(l.c).getHTMLForURL(r)}}))),u()(A,"CHECK_FOR_SETUP_TAG",K((function(e){return T()(a.a.mark((function t(){var r,n,o,i,c,u,s,p;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=!1,t.prev=1,t.next=4,f.a.set("core","site","setup-tag");case 4:return c=t.sent,o=c.token,t.next=8,e.select(l.c).getHomeURL();case 8:return u=t.sent,t.next=11,e.dispatch(l.c).fetchGetHTMLForURL(u);case 11:s=t.sent,n=s.response,r=s.error,t.next=19;break;case 16:t.prev=16,t.t0=t.catch(1),r="check_fetch_failed";case 19:return r||(p=Object(q.a)(n,[/0&&void 0!==arguments[0]?arguments[0]:{},t=e.notificationID,r=e.notificationState;E()([xe,_e].includes(r),"notificationState must be accepted or dismissed."),E()(Ne(t),"a valid notification ID is required to mark a notification.")}}),Ie={acceptNotification:Object(De.f)((function(e){E()(Ne(e),"a valid notification ID is required to accept a notification.")}),a.a.mark((function e(t){var r,n,o;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Ce.actions.fetchMarkNotification({notificationID:t,notificationState:xe});case 2:if(r=e.sent,n=r.response,!(o=r.error)){e.next=8;break}return e.next=8,Ae.a.receiveError(o,"acceptNotification",[t]);case 8:return e.abrupt("return",{response:n,error:o});case 9:case"end":return e.stop()}}),e)}))),dismissNotification:Object(De.f)((function(e){E()(Ne(e),"a valid notification ID is required to dismiss a notification.")}),a.a.mark((function e(t){var r,n,o;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Ce.actions.fetchMarkNotification({notificationID:t,notificationState:_e});case 2:if(r=e.sent,n=r.response,!(o=r.error)){e.next=8;break}return e.next=8,Ae.a.receiveError(o,"dismissNotification",[t]);case 8:return e.abrupt("return",{response:n,error:o});case 9:case"end":return e.stop()}}),e)})))},Te=o.a.combineStores(Object(Ue.a)("core","site","notifications",{storeName:l.c}),Ce,{actions:Ie}),Me=r(1160);function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function qe(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{},c=i.client,s=void 0===c||c,l=i.server,g=void 0===l||l,b=i.storeName,y=void 0===b?void 0:b;u()(t,"type is required."),u()(r,"identifier is required."),u()(n,"datapoint is required.");var m=y||"".concat(t,"/").concat(r),O={serverNotifications:g?void 0:{},clientNotifications:s?void 0:{}},h=Object(d.a)({baseName:"getNotifications",controlCallback:function(){return f.a.get(t,r,n)},reducerCallback:function(e,t){return v(v({},e),{},{serverNotifications:t.reduce((function(e,t){return v(v({},e),{},a()({},t.id,t))}),{})})}}),j={addNotification:function(e){return u()(e,"notification is required."),{payload:{notification:e},type:"ADD_NOTIFICATION"}},removeNotification:function(e){return u()(e,"id is required."),{payload:{id:e},type:"REMOVE_NOTIFICATION"}}},w={},R=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:O,r=arguments.length>1?arguments[1]:void 0,n=r.type,o=r.payload;switch(n){case"ADD_NOTIFICATION":var i=o.notification;return v(v({},t),{},{clientNotifications:v(v({},t.clientNotifications||{}),{},a()({},i.id,i))});case"REMOVE_NOTIFICATION":var c=o.id;if(void 0===t.clientNotifications||void 0===t.clientNotifications[c])return void 0!==t.serverNotifications&&void 0!==t.serverNotifications[c]&&e.console.warn('Cannot remove server-side notification with ID "'.concat(c,'"; this may be changed in a future release.')),t;var u=v({},t.clientNotifications);return delete u[c],v(v({},t),{},{clientNotifications:u});default:return t}},S={getNotifications:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.actions.fetchGetNotifications();case 2:case"end":return e.stop()}}),e)}))};g||delete S.getNotifications;var E={getNotifications:function(e){var t=e.serverNotifications,r=e.clientNotifications;return void 0===t&&void 0===r?t:Object.values(v(v({},t||{}),r||{}))}},P=p.a.combineStores(h,{initialState:O,actions:j,controls:w,reducer:R,resolvers:S,selectors:E});return v(v({},P),{},{STORE_NAME:m})}}).call(this,r(22))},38:function(e,t,r){"use strict";r.d(t,"a",(function(){return s}));var n=r(14),o=r.n(n),i=r(7),a=r.n(i),c=r(36),u=r(43),s=function(e){a()(Object(u.a)(e),c.e);var t=e.split("-"),r=o()(t,3),n=r[0],i=r[1],s=r[2];return new Date(n,i-1,s)}},4:function(e,t){e.exports=googlesitekit.data},41:function(e,t,r){"use strict";r.d(t,"a",(function(){return j}));var n=r(5),o=r.n(n),i=r(6),a=r.n(i),c=r(7),u=r.n(c),s=r(57),f=r.n(s),l=r(53),p=r(80),d=r(8);function g(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t1?r-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:i;return t instanceof Set&&t.has(e)}}).call(this,r(22))},43:function(e,t,r){"use strict";r.d(t,"a",(function(){return o}));var n=r(37),o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var r=e.split("-");return 3===r.length&&Object(n.a)(new Date(e))}},51:function(e,t,r){"use strict";r.d(t,"b",(function(){return o})),r.d(t,"a",(function(){return i})),r.d(t,"d",(function(){return a})),r.d(t,"c",(function(){return c})),r.d(t,"e",(function(){return u}));var n=r(100);function o(e){try{return new URL(e).pathname}catch(e){}return null}function i(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function a(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function u(e,t){if(!Object(n.a)(e))return e;if(e.length<=t)return e;var r=new URL(e),o=e.replace(r.origin,"");if(o.length2&&void 0!==arguments[2]?arguments[2]:{},n=r.clearMatchingLegacyError,o=void 0!==n&&n;return e&&s()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:e,args:t,clearMatchingLegacyError:o}}},clearErrors:function(e){return{type:"CLEAR_ERRORS",payload:{baseName:e}}}};function y(e){s()(e,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var r={getErrorForSelector:function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var i=r.getError(t,n,o);if(i)return g(g({},i),{},{selectorData:{storeName:e,name:n,args:o}})},getErrorForAction:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(t,"actionName is required."),r.getError(e,t,n)},getError:function(e,t,r){var n=e.error,o=e.errors;return t||r?(s()(t,"baseName is required."),o[v(t,r)]):n},getErrors:function(e){var t=new Set(Object.values(e.errors));return void 0!==e.error&&t.add(e.error),Array.from(t)},getMetaDataForError:function(e,t){var r=Object.keys(e.errors).find((function(r){return e.errors[r]===t}));return r?{baseName:r.substring(0,r.indexOf("::")),args:e.errorArgs[r]}:null},getSelectorDataForError:Object(c.e)((function(t){return function(r,n){var o=t(e).getMetaDataForError(n);if(o){var i=o.baseName,a=o.args;if(!!t(e)[i])return{storeName:e,name:i,args:a}}return null}})),hasErrors:function(e){return r.getErrors(e).length>0}};return{initialState:t,actions:b,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"RECEIVE_ERROR":var i=n.baseName,a=n.args,c=n.error;if(i){var u=v(i,a);return g(g({},e),{},{errors:g(g({},e.errors||{}),{},o()({},u,c)),errorArgs:g(g({},e.errorArgs||{}),{},o()({},u,a))})}return g(g({},e),{},{error:c});case"CLEAR_ERROR":var s=n.baseName,f=n.args,l=g({},e);if(s){var p=v(s,f);l.errors=g({},e.errors||{}),l.errorArgs=g({},e.errorArgs||{}),n.clearMatchingLegacyError&&l.error===l.errors[p]&&delete l.error,delete l.errors[p],delete l.errorArgs[p]}else l.error=void 0;return l;case"CLEAR_ERRORS":var d=n.baseName,b=g({},e);if(d)for(var y in b.errors=g({},e.errors||{}),b.errorArgs=g({},e.errorArgs||{}),b.errors)(y===d||y.startsWith("".concat(d,"::")))&&(delete b.errors[y],delete b.errorArgs[y]);else b.errors={},b.errorArgs={},b.error=void 0;return b;default:return e}},resolvers:{},selectors:r}}},62:function(e,t,r){"use strict";(function(e){var n=r(0),o=r.n(n),i=r(11),a=r.n(i);function ChangeArrow(t){var r=t.direction,n=t.invertColor,o=t.width,i=t.height;return e.createElement("svg",{className:a()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(r),{"googlesitekit-change-arrow--inverted-color":n}),width:o,height:i,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:o.a.string,invertColor:o.a.bool,width:o.a.number,height:o.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,r(3))},63:function(e,t,r){"use strict";r.d(t,"a",(function(){return a})),r.d(t,"b",(function(){return c}));var n=r(30),o=r.n(n),i=r(78),a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:i.a.sanitize(e,t)}};function c(e){var t,r="object"===o()(e)?e.toString():e;return null==r||null===(t=r.replace)||void 0===t?void 0:t.call(r,/\/+$/,"")}},68:function(e,t,r){"use strict";r.d(t,"d",(function(){return n.e})),r.d(t,"c",(function(){return n.d})),r.d(t,"b",(function(){return n.b})),r.d(t,"a",(function(){return n.a})),r.d(t,"e",(function(){return n.f})),r.d(t,"g",(function(){return c})),r.d(t,"h",(function(){return s})),r.d(t,"i",(function(){return f})),r.d(t,"j",(function(){return l.a})),r.d(t,"f",(function(){return d})),r.d(t,"k",(function(){return u.a}));var n=r(36),o=r(7),i=r.n(o),a=r(37),c=function(e){i()(Object(a.a)(e),n.c);var t="".concat(e.getMonth()+1),r="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,r.length<2?"0".concat(r):r].join("-")},u=r(38),s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=Object(u.a)(e);return r.setDate(r.getDate()-t),c(r)},f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},l=r(43);var p=r(1);function d(){var e=function(e){return Object(p.sprintf)( +/* translators: %s: number of days */ +Object(p._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},69:function(e,t,r){"use strict";r.d(t,"a",(function(){return L})),r.d(t,"b",(function(){return k})),r.d(t,"c",(function(){return U})),r.d(t,"d",(function(){return A})),r.d(t,"e",(function(){return x})),r.d(t,"g",(function(){return N})),r.d(t,"f",(function(){return C}));var n,o=r(5),i=r.n(o),a=r(24),c=r.n(a),u=r(6),s=r.n(u),f=r(7),l=r.n(f),p=r(201),d=r.n(p),g=r(71),v=r.n(g),b=r(66);function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o.reduce((function(e,r){return r(e,t)}),e)}},R=O,S=O,E=O,P=function(e){return e},L=function(){for(var e=arguments.length,t=new Array(e),r=0;r=1?r[o]+1:1,r[o]>1&&t.push(o)}return t},A={actions:k,controls:U,reducer:P},x=function(e){return function(t){return _(e(t))}},_=v()((function(e){return d()(e,(function(e,t){return function(){var r=e.apply(void 0,arguments);return l()(void 0!==r,"".concat(t,"(...) is not resolved")),r}}))}));function N(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.negate,n=void 0!==r&&r,o=Object(b.e)((function(t){return function(r){var o=!n,i=!!n;try{for(var a=arguments.length,c=new Array(a>1?a-1:0),u=1;u1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},r=m(e,t),n=r.formatUnit,o=r.formatDecimal;try{return n()}catch(e){return o()}},m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var r=Math.floor(e/60/60),n=Math.floor(e/60%60),o=Math.floor(e%60);return{hours:r,minutes:n,seconds:o,formatUnit:function(){var i=t.unitDisplay,a=b(b({unitDisplay:void 0===i?"short":i},f()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?R(o,b(b({},a),{},{unit:"second"})):Object(g.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(g._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),o?R(o,b(b({},a),{},{unit:"second"})):"",n?R(n,b(b({},a),{},{unit:"minute"})):"",r?R(r,b(b({},a),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(g.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(g.__)("%ds","google-site-kit"),o);if(0===e)return t;var i=Object(g.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(g.__)("%dm","google-site-kit"),n),a=Object(g.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(g.__)("%dh","google-site-kit"),r);return Object(g.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(g._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),o?t:"",n?i:"",r?a:"").trim()}}},O=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},h=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(g.sprintf)(// translators: %s: an abbreviated number in millions. +Object(g.__)("%sM","google-site-kit"),R(O(e),e%10==0?{}:t)):1e4<=e?Object(g.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(g.__)("%sK","google-site-kit"),R(O(e))):1e3<=e?Object(g.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(g.__)("%sK","google-site-kit"),R(O(e),e%10==0?{}:t)):R(e,{signDisplay:"never",maximumFractionDigits:1})},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(l.isFinite)(e)?e:Number(e),Object(l.isFinite)(e)||(console.warn("Invalid number",e,a()(e)),e=0);var r={};if("%"===t)r={style:"percent",maximumFractionDigits:2};else{if("s"===t)return y(e,{unitDisplay:"narrow"});t&&"string"==typeof t?r={style:"currency",currency:t}:Object(l.isPlainObject)(t)&&(r=b({},t))}var n=r,o=n.style,i=void 0===o?"metric":o;return"metric"===i?h(e):"duration"===i?y(e,t):R(e,r)},w=d()(console.warn),R=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?E():r,i=f()(t,["locale"]);try{return new Intl.NumberFormat(n,i).format(e)}catch(t){w("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(i)," ).format( ").concat(a()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},u=["signDisplay","compactDisplay"],s={},l=0,p=Object.entries(i);l1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?E():r,o=t.style,i=void 0===o?"long":o,a=t.type,c=void 0===a?"conjunction":a;if(Intl.ListFormat){var u=new Intl.ListFormat(n,{style:i,type:c});return u.format(e)} +/* translators: used between list items, there is a space after the comma. */var s=Object(g.__)(", ","google-site-kit");return e.join(s)},E=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,r=Object(l.get)(t,["_googlesitekitLegacyData","locale"]);if(r){var n=r.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,r(22))},759:function(e,t,r){"use strict";(function(e){var n=r(14),o=r.n(n),i=r(21),a=r.n(i),c=r(5),u=r.n(c),s=r(6),f=r.n(s),l=r(7),p=r.n(l),d=r(760),g=r.n(d),v=r(250),b=r(409),y=r(4),m=r.n(y),O=r(15),h=r(8);function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{},o=e(O.c).getSiteInfo()||{},i=o.adminURL;if(void 0===i||void 0===r)return i;var c="/"===i[i.length-1]?i:"".concat(i,"/"),u=r,s="admin.php";if(-1!==r.indexOf(".php?")){var f=r.split("?");if(!(u=g.a.parse(f.pop()).page))return i;s=f.shift()}n.page;var l=a()(n,["page"]);return Object(v.a)("".concat(c).concat(s),w({page:u},l))}})),getAMPMode:S("ampMode"),getCurrentEntityID:S("currentEntityID"),getCurrentEntityTitle:S("currentEntityTitle"),getCurrentEntityType:S("currentEntityType"),getCurrentEntityURL:S("currentEntityURL"),getHomeURL:S("homeURL"),getReferenceSiteURL:S("referenceSiteURL"),getProxySetupURL:S("proxySetupURL"),getProxyPermissionsURL:S("proxyPermissionsURL"),getCurrentReferenceURL:R((function(e){return function(){var t=e(O.c).getCurrentEntityURL();return null!==t?t:e(O.c).getReferenceSiteURL()}})),isAMP:R((function(e){return function(){var t=e(O.c).getAMPMode();if(void 0!==t)return!!t}})),isPrimaryAMP:R((function(e){return function(){var t=e(O.c).getAMPMode();if(void 0!==t)return t===O.a}})),isSecondaryAMP:R((function(e){return function(){var t=e(O.c).getAMPMode();if(void 0!==t)return t===O.b}})),getTimezone:S("timezone"),isUsingProxy:S("usingProxy"),getSiteName:S("siteName"),getSetupErrorCode:S("setupErrorCode"),getSetupErrorMessage:S("setupErrorMessage"),getSetupErrorRedoURL:S("setupErrorRedoURL"),getProxySupportLinkURL:S("proxySupportLinkURL"),getWidgetsAdminURL:S("widgetsAdminURL"),getPostTypes:S("postTypes"),getPermaLinkParam:function(t){if(t.permaLink)return t.permaLink;var r=Object(b.a)(e.location.href,"permaLink");return r||!1},isWebStoriesActive:S("webStoriesActive"),isSiteURLMatch:R((function(e){return function(t,r){var n=e(O.c).getReferenceSiteURL();return Object(h.t)(n)===Object(h.t)(r)}})),getSiteURLPermutations:R((function(e){return function(){var t=e(O.c).getReferenceSiteURL(),r=[],n=new URL(t);return n.hostname=n.hostname.replace(/^www\./i,""),n.protocol="http",r.push(Object(h.A)(n)),n.protocol="https",r.push(Object(h.A)(n)),n.hostname="www."+n.hostname,r.push(Object(h.A)(n)),n.protocol="http",r.push(Object(h.A)(n)),r}})),getWPVersion:S("wpVersion"),getUpdateCoreURL:S("updateCoreURL"),hasMinimumWordPressVersion:R((function(e){return function(t,r){p()(r,"minimumWPVersion is required.");var n=e(O.c).getWPVersion()||{},i=n.major,a=n.minor;if(void 0!==i&&void 0!==a){var c=r.split(".").map((function(e){return parseInt(e,10)})),u=o()(c,2),s=u[0],f=u[1];return s$1')}function y(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function m(e){return e.replace(/\n/gi,"
")}function O(e){for(var t=e,r=0,n=[b,y,m];r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){u=!0,i=e},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:location,r=new URL(t.href);if(e)return r.searchParams&&r.searchParams.get?r.searchParams.get(e):u(e);var n,a={},c=i(r.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var s=o()(n.value,2),f=s[0],l=s[1];a[f]=l}}catch(e){c.e(e)}finally{c.f()}return a}}).call(this,r(22))},84:function(e,t,r){"use strict";(function(e){r(44),r(45)}).call(this,r(22))},85:function(e,t,r){"use strict";(function(e){r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return a})),r.d(t,"a",(function(){return c}));var n=r(169),o=r(62),i=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=r.invertColor,a=void 0!==i&&i;return Object(n.a)(e.createElement(o.a,{direction:t>0?"up":"down",invertColor:a}))},a=function(e){var t,r,n,o,i,a,c,u,s,f,l,p,d,g,v;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(r=t.data)||void 0===r||null===(n=r.rows)||void 0===n?void 0:n.length)||(null==e||null===(o=e[0])||void 0===o||null===(i=o.data)||void 0===i||null===(a=i.rows)||void 0===a||null===(c=a[0])||void 0===c||null===(u=c.metrics)||void 0===u||null===(s=u[0])||void 0===s||null===(f=s.values)||void 0===f?void 0:f[0])===(null==e||null===(l=e[0])||void 0===l||null===(p=l.data)||void 0===p||null===(d=p.totals)||void 0===d||null===(g=d[0])||void 0===g||null===(v=g.values)||void 0===v?void 0:v[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,r(3))},86:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return f}));var n=r(6),o=r.n(n),i=r(87),a=r(88);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,o=u(u({},s),t);o.referenceSiteURL&&(o.referenceSiteURL=o.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(o,r);return{enableTracking:function(){o.trackingEnabled=!0},disableTracking:function(){o.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!o.trackingEnabled},trackEvent:Object(a.a)(o,r,c,n)}}}).call(this,r(22))},87:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return i}));var n=r(52),o=r(31);function i(t,r){var i,a=Object(n.a)(r);return function(){var r=e.document;if(void 0===i&&(i=!!r.querySelector("script[".concat(o.b,"]"))),!i){var n=r.createElement("script");n.setAttribute(o.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(o.a),r.head.appendChild(n),a("js",new Date),a("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,r(22))},88:function(e,t,r){"use strict";r.d(t,"a",(function(){return d}));var n=r(5),o=r.n(n),i=r(6),a=r.n(i),c=r(16),u=r.n(c),s=r(52),f=r(42);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t0&&void 0!==u[0]?u[0]:{},e=t.clearAfterRestore,n=void 0===e||e,r.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=r.sent,o=a.cacheHit,i=a.value,!o){r.next=13;break}return r.next=10,{payload:{snapshot:i},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!n){r.next=13;break}return r.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return r.abrupt("return",o);case 14:case"end":return r.stop()}}),r)})),createSnapshot:c.a.mark((function r(){var t;return c.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=r.sent,r.abrupt("return",t);case 4:case"end":return r.stop()}}),r)}))},o=(t={},i()(t,"DELETE_SNAPSHOT",(function(){return Object(v.a)("datastore::cache::".concat(r))})),i()(t,"CREATE_SNAPSHOT",g((function(t){return function(){return Object(v.d)("datastore::cache::".concat(r),t.stores[r].store.getState())}}))),i()(t,"RESTORE_SNAPSHOT",(function(){return Object(v.b)("datastore::cache::".concat(r),p.b)})),t);return{initialState:e,actions:n,controls:o,reducer:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,t=arguments.length>1?arguments[1]:void 0,n=t.type,o=t.payload;switch(n){case"SET_STATE_FROM_SNAPSHOT":var i=o.snapshot,u=(i.error,a()(i,["error"]));return u;default:return r}}}},h=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Object.values(r.stores).filter((function(r){return Object.keys(r.getActions()).includes("restoreSnapshot")}))},y=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Promise.all(h(r).map((function(r){return r.getActions().createSnapshot()})))},m=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Promise.all(h(r).map((function(r){return r.getActions().restoreSnapshot()})))}},1133:function(r,t,e){"use strict";e.r(t);var n=e(4),a=e.n(n),o=e(53),i=e(101),u=e(6),c=e.n(u),s=e(5),l=e.n(s),f=e(7),d=e.n(f),v=e(57),p=e.n(v),g=e(33);function b(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function h(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:o;return t instanceof Set&&t.has(r)}}).call(this,e(22))},43:function(r,t,e){"use strict";e.d(t,"a",(function(){return a}));var n=e(37),a=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof r;if(!t)return!1;var e=r.split("-");return 3===e.length&&Object(n.a)(new Date(r))}},46:function(r,t,e){"use strict";(function(r){e.d(t,"b",(function(){return h})),e.d(t,"d",(function(){return y})),e.d(t,"a",(function(){return m})),e.d(t,"c",(function(){return O}));var n=e(5),a=e.n(n),o=e(16),i=e.n(o),u=(e(24),e(8));function c(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!e){if(Array.isArray(r)||(e=function(r,t){if(!r)return;if("string"==typeof r)return s(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);"Object"===e&&r.constructor&&(e=r.constructor.name);if("Map"===e||"Set"===e)return Array.from(r);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return s(r,t)}(r))||t&&r&&"number"==typeof r.length){e&&(r=e);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,u=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return i=r.done,r},e:function(r){u=!0,o=r},f:function(){try{i||null==e.return||e.return()}finally{if(u)throw o}}}}function s(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e2&&void 0!==b[2]?b[2]:{},i=o.ttl,c=void 0===i?u.b:i,s=o.timestamp,l=void 0===s?Math.round(Date.now()/1e3):s,d=o.isError,v=void 0!==d&&d,t.next=3,g();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(f).concat(e),JSON.stringify({timestamp:l,ttl:c,value:n,isError:v})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),r.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(r,e){return t.apply(this,arguments)}}(),m=function(){var t=i()(a.a.mark((function t(e){var n;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,g();case 2:if(!(n=t.sent)){t.next=13;break}return t.prev=4,n.removeItem("".concat(f).concat(e)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),r.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(r){return t.apply(this,arguments)}}(),O=function(){var t=i()(a.a.mark((function t(){var e,n,o,i;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,g();case 2:if(!(e=t.sent)){t.next=14;break}for(t.prev=4,n=[],o=0;o2&&void 0!==arguments[2]?arguments[2]:{},n=e.clearMatchingLegacyError,a=void 0!==n&&n;return r&&s()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:r,args:t,clearMatchingLegacyError:a}}},clearErrors:function(r){return{type:"CLEAR_ERRORS",payload:{baseName:r}}}};function h(r){s()(r,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var e={getErrorForSelector:function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var o=e.getError(t,n,a);if(o)return p(p({},o),{},{selectorData:{storeName:r,name:n,args:a}})},getErrorForAction:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(t,"actionName is required."),e.getError(r,t,n)},getError:function(r,t,e){var n=r.error,a=r.errors;return t||e?(s()(t,"baseName is required."),a[g(t,e)]):n},getErrors:function(r){var t=new Set(Object.values(r.errors));return void 0!==r.error&&t.add(r.error),Array.from(t)},getMetaDataForError:function(r,t){var e=Object.keys(r.errors).find((function(e){return r.errors[e]===t}));return e?{baseName:e.substring(0,e.indexOf("::")),args:r.errorArgs[e]}:null},getSelectorDataForError:Object(u.e)((function(t){return function(e,n){var a=t(r).getMetaDataForError(n);if(a){var o=a.baseName,i=a.args;if(!!t(r)[o])return{storeName:r,name:o,args:i}}return null}})),hasErrors:function(r){return e.getErrors(r).length>0}};return{initialState:t,actions:b,controls:{},reducer:function(r,t){var e=t.type,n=t.payload;switch(e){case"RECEIVE_ERROR":var o=n.baseName,i=n.args,u=n.error;if(o){var c=g(o,i);return p(p({},r),{},{errors:p(p({},r.errors||{}),{},a()({},c,u)),errorArgs:p(p({},r.errorArgs||{}),{},a()({},c,i))})}return p(p({},r),{},{error:u});case"CLEAR_ERROR":var s=n.baseName,l=n.args,f=p({},r);if(s){var d=g(s,l);f.errors=p({},r.errors||{}),f.errorArgs=p({},r.errorArgs||{}),n.clearMatchingLegacyError&&f.error===f.errors[d]&&delete f.error,delete f.errors[d],delete f.errorArgs[d]}else f.error=void 0;return f;case"CLEAR_ERRORS":var v=n.baseName,b=p({},r);if(v)for(var h in b.errors=p({},r.errors||{}),b.errorArgs=p({},r.errorArgs||{}),b.errors)(h===v||h.startsWith("".concat(v,"::")))&&(delete b.errors[h],delete b.errorArgs[h]);else b.errors={},b.errorArgs={},b.error=void 0;return b;default:return r}},resolvers:{},selectors:e}}},62:function(r,t,e){"use strict";(function(r){var n=e(0),a=e.n(n),o=e(11),i=e.n(o);function ChangeArrow(t){var e=t.direction,n=t.invertColor,a=t.width,o=t.height;return r.createElement("svg",{className:i()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(e),{"googlesitekit-change-arrow--inverted-color":n}),width:a,height:o,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:a.a.string,invertColor:a.a.bool,width:a.a.number,height:a.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,e(3))},63:function(r,t,e){"use strict";e.d(t,"a",(function(){return i})),e.d(t,"b",(function(){return u}));var n=e(30),a=e.n(n),o=e(78),i=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:o.a.sanitize(r,t)}};function u(r){var t,e="object"===a()(r)?r.toString():r;return null==e||null===(t=e.replace)||void 0===t?void 0:t.call(e,/\/+$/,"")}},68:function(r,t,e){"use strict";e.d(t,"d",(function(){return n.e})),e.d(t,"c",(function(){return n.d})),e.d(t,"b",(function(){return n.b})),e.d(t,"a",(function(){return n.a})),e.d(t,"e",(function(){return n.f})),e.d(t,"g",(function(){return u})),e.d(t,"h",(function(){return s})),e.d(t,"i",(function(){return l})),e.d(t,"j",(function(){return f.a})),e.d(t,"f",(function(){return v})),e.d(t,"k",(function(){return c.a}));var n=e(36),a=e(7),o=e.n(a),i=e(37),u=function(r){o()(Object(i.a)(r),n.c);var t="".concat(r.getMonth()+1),e="".concat(r.getDate());return[r.getFullYear(),t.length<2?"0".concat(t):t,e.length<2?"0".concat(e):e].join("-")},c=e(38),s=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,e=Object(c.a)(r);return e.setDate(e.getDate()-t),u(e)},l=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=r.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},f=e(43);var d=e(1);function v(){var r=function(r){return Object(d.sprintf)( +/* translators: %s: number of days */ +Object(d._n)("Last %s day","Last %s days",r,"google-site-kit"),r)};return{"last-7-days":{slug:"last-7-days",label:r(7),days:7},"last-14-days":{slug:"last-14-days",label:r(14),days:14},"last-28-days":{slug:"last-28-days",label:r(28),days:28},"last-90-days":{slug:"last-90-days",label:r(90),days:90}}}},73:function(r,t,e){"use strict";(function(r){e.d(t,"c",(function(){return w})),e.d(t,"d",(function(){return S})),e.d(t,"b",(function(){return E})),e.d(t,"a",(function(){return k}));var n=e(14),a=e.n(n),o=e(30),i=e.n(o),u=e(6),c=e.n(u),s=e(21),l=e.n(s),f=e(26),d=e(71),v=e.n(d),p=e(1);function g(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function b(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},e=y(r,t),n=e.formatUnit,a=e.formatDecimal;try{return n()}catch(r){return a()}},y=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r=parseInt(r,10),Number.isNaN(r)&&(r=0);var e=Math.floor(r/60/60),n=Math.floor(r/60%60),a=Math.floor(r%60);return{hours:e,minutes:n,seconds:a,formatUnit:function(){var o=t.unitDisplay,i=b(b({unitDisplay:void 0===o?"short":o},l()(t,["unitDisplay"])),{},{style:"unit"});return 0===r?S(a,b(b({},i),{},{unit:"second"})):Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?S(a,b(b({},i),{},{unit:"second"})):"",n?S(n,b(b({},i),{},{unit:"minute"})):"",e?S(e,b(b({},i),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(p.__)("%ds","google-site-kit"),a);if(0===r)return t;var o=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(p.__)("%dm","google-site-kit"),n),i=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(p.__)("%dh","google-site-kit"),e);return Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",n?o:"",e?i:"").trim()}}},m=function(r){return 1e6<=r?Math.round(r/1e5)/10:1e4<=r?Math.round(r/1e3):1e3<=r?Math.round(r/100)/10:r},O=function(r){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in millions. +Object(p.__)("%sM","google-site-kit"),S(m(r),r%10==0?{}:t)):1e4<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),S(m(r))):1e3<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),S(m(r),r%10==0?{}:t)):S(r,{signDisplay:"never",maximumFractionDigits:1})},w=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r=Object(f.isFinite)(r)?r:Number(r),Object(f.isFinite)(r)||(console.warn("Invalid number",r,i()(r)),r=0);var e={};if("%"===t)e={style:"percent",maximumFractionDigits:2};else{if("s"===t)return h(r,{unitDisplay:"narrow"});t&&"string"==typeof t?e={style:"currency",currency:t}:Object(f.isPlainObject)(t)&&(e=b({},t))}var n=e,a=n.style,o=void 0===a?"metric":a;return"metric"===o?O(r):"duration"===o?h(r,t):S(r,e)},j=v()(console.warn),S=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.locale,n=void 0===e?k():e,o=l()(t,["locale"]);try{return new Intl.NumberFormat(n,o).format(r)}catch(t){j("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(o)," ).format( ").concat(i()(r)," )"),t.message)}for(var u={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},c=["signDisplay","compactDisplay"],s={},f=0,d=Object.entries(o);f1&&void 0!==arguments[1]?arguments[1]:{},e=t.locale,n=void 0===e?k():e,a=t.style,o=void 0===a?"long":a,i=t.type,u=void 0===i?"conjunction":i;if(Intl.ListFormat){var c=new Intl.ListFormat(n,{style:o,type:u});return c.format(r)} +/* translators: used between list items, there is a space after the comma. */var s=Object(p.__)(", ","google-site-kit");return r.join(s)},k=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,e=Object(f.get)(t,["_googlesitekitLegacyData","locale"]);if(e){var n=e.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,e(22))},78:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return a}));var n=e(124),a=e.n(n)()(r)}).call(this,e(22))},8:function(r,t,e){"use strict";e.d(t,"z",(function(){return u.b})),e.d(t,"w",(function(){return c.a})),e.d(t,"A",(function(){return c.b})),e.d(t,"y",(function(){return v})),e.d(t,"f",(function(){return p.a})),e.d(t,"m",(function(){return p.b})),e.d(t,"u",(function(){return g.c})),e.d(t,"v",(function(){return g.d})),e.d(t,"r",(function(){return g.b})),e.d(t,"l",(function(){return g.a})),e.d(t,"s",(function(){return m})),e.d(t,"g",(function(){return O})),e.d(t,"b",(function(){return w.b})),e.d(t,"a",(function(){return w.a})),e.d(t,"c",(function(){return w.e})),e.d(t,"i",(function(){return w.f})),e.d(t,"x",(function(){return w.k})),e.d(t,"j",(function(){return j.b})),e.d(t,"q",(function(){return j.c})),e.d(t,"e",(function(){return j.a})),e.d(t,"o",(function(){return S.b})),e.d(t,"k",(function(){return S.a})),e.d(t,"t",(function(){return S.d})),e.d(t,"p",(function(){return E})),e.d(t,"n",(function(){return k})),e.d(t,"d",(function(){return _})),e.d(t,"B",(function(){return A})),e.d(t,"h",(function(){return D}));var n=e(123),a=e.n(n),o=e(118),i=e.n(o),u=e(32),c=e(63),s=e(30),l=e.n(s),f=e(81),d=e.n(f),v=function(r){return d()(JSON.stringify(function r(t){var e={};return Object.keys(t).sort().forEach((function(n){var a=t[n];a&&"object"===l()(a)&&!Array.isArray(a)&&(a=r(a)),e[n]=a})),e}(r)))};var p=e(83),g=(e(84),e(73));function b(r){return r.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function h(r){return"

".concat(r.replace(/\n{2,}/g,"

"),"

")}function y(r){return r.replace(/\n/gi,"
")}function m(r){for(var t=r,e=0,n=[b,h,y];e=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,c=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return u=r.done,r},e:function(r){c=!0,o=r},f:function(){try{u||null==e.return||e.return()}finally{if(c)throw o}}}}function i(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e1&&void 0!==arguments[1]?arguments[1]:location,e=new URL(t.href);if(r)return e.searchParams&&e.searchParams.get?e.searchParams.get(r):c(r);var n,i={},u=o(e.searchParams.entries());try{for(u.s();!(n=u.n()).done;){var s=a()(n.value,2),l=s[0],f=s[1];i[l]=f}}catch(r){u.e(r)}finally{u.f()}return i}}).call(this,e(22))},84:function(r,t,e){"use strict";(function(r){e(44),e(45)}).call(this,e(22))},85:function(r,t,e){"use strict";(function(r){e.d(t,"b",(function(){return o})),e.d(t,"c",(function(){return i})),e.d(t,"a",(function(){return u}));var n=e(169),a=e(62),o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var o=e.invertColor,i=void 0!==o&&o;return Object(n.a)(r.createElement(a.a,{direction:t>0?"up":"down",invertColor:i}))},i=function(r){var t,e,n,a,o,i,u,c,s,l,f,d,v,p,g;if(void 0!==r)return 1===(null==r||null===(t=r[0])||void 0===t||null===(e=t.data)||void 0===e||null===(n=e.rows)||void 0===n?void 0:n.length)||(null==r||null===(a=r[0])||void 0===a||null===(o=a.data)||void 0===o||null===(i=o.rows)||void 0===i||null===(u=i[0])||void 0===u||null===(c=u.metrics)||void 0===c||null===(s=c[0])||void 0===s||null===(l=s.values)||void 0===l?void 0:l[0])===(null==r||null===(f=r[0])||void 0===f||null===(d=f.data)||void 0===d||null===(v=d.totals)||void 0===v||null===(p=v[0])||void 0===p||null===(g=p.values)||void 0===g?void 0:g[0])},u=function(r,t){return r>0&&t>0?r/t-1:r>0?1:t>0?-1:0}}).call(this,e(3))},86:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return l}));var n=e(6),a=e.n(n),o=e(87),i=e(88);function u(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function c(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r,a=c(c({},s),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var u=Object(o.a)(a,e);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:u,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(i.a)(a,e,u,n)}}}).call(this,e(22))},87:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return o}));var n=e(52),a=e(31);function o(t,e){var o,i=Object(n.a)(e);return function(){var e=r.document;if(void 0===o&&(o=!!e.querySelector("script[".concat(a.b,"]"))),!o){var n=e.createElement("script");n.setAttribute(a.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),e.head.appendChild(n),i("js",new Date),i("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),o=!0}}}}).call(this,e(22))},88:function(r,t,e){"use strict";e.d(t,"a",(function(){return v}));var n=e(5),a=e.n(n),o=e(6),i=e.n(o),u=e(16),c=e.n(u),s=e(52),l=e(42);function f(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function d(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=t.compare,n=void 0!==r&&r,i=t.offsetDays,a=void 0===i?0:i,o=t.referenceDate,c=void 0===o?e.referenceDate:o,u=R.getDateRange(e),s=Object(I.h)(c,a),l=u.match("-(.*)-"),f=Number(l?l[1]:28),d=Object(I.h)(s,f-1),g={startDate:d,endDate:s};if(n){var p=Object(I.h)(d,1),v=Object(I.h)(p,f-1);g.compareStartDate=v,g.compareEndDate=p}return g},getDateRangeNumberOfDays:function(e){var t=R.getDateRange(e).match(/-(\d+)-/);return parseInt(t?t[1]:28,10)},getReferenceDate:function(e){return e.referenceDate}},A={initialState:x,actions:{setDateRange:function(e){return k()(e,"Date range slug is required."),k()(Object(I.i)(e),I.c),{type:"SET_DATE_RANGE",payload:{slug:e}}},setReferenceDate:function(e){return k()(e,"Date string is required."),k()(Object(I.j)(e),I.d),{type:"SET_REFERENCE_DATE",payload:{dateString:e}}}},controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"SET_DATE_RANGE":return D(D({},e),{},{dateRange:n.slug});case"SET_REFERENCE_DATE":return D(D({},e),{},{referenceDate:n.dateString});default:return e}},resolvers:{},selectors:R};function C(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function P(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:0;return{slug:e,expiresInSeconds:t}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.slug,r=e.expiresInSeconds;k()(t,"slug is required."),k()(Number.isInteger(r),"expiresInSeconds must be an integer.")}}),X={dismissedItems:void 0},ee={dismissItem:Object(G.f)((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.expiresInSeconds,n=void 0===r?0:r;k()(e,"A tour slug is required to dismiss a tour."),k()(Number.isInteger(n),"expiresInSeconds must be an integer.")}),c.a.mark((function e(t){var r,n,i,a=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.length>1&&void 0!==a[1]?a[1]:{},n=r.expiresInSeconds,i=void 0===n?0:n,e.next=4,Z.actions.fetchDismissItem(t,i);case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)})))},te={getDismissedItems:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,$();case 2:if(t=e.sent,r=t.select,void 0!==r(d.a).getDismissedItems()){e.next=8;break}return e.next=8,Q.actions.fetchGetDismissedItems();case 8:case"end":return e.stop()}}),e)}))},re={getDismissedItems:function(e){return e.dismissedItems},isItemDismissed:K((function(e){return function(t,r){var n;return null===(n=e(d.a).getDismissedItems())||void 0===n?void 0:n.includes(r)}})),isDismissingItem:K((function(e){return function(t,r){return e(d.a).isFetchingDismissItem(r)}}))},ne=i.a.combineStores({initialState:X,actions:ee,resolvers:te,selectors:re},Z,Q),ie={actions:ne.actions,controls:ne.controls,initialState:ne.initialState,reducer:ne.reducer,resolvers:ne.resolvers,selectors:ne.selectors},ae=r(16),oe=r.n(ae),ce=r(761),ue=r.n(ce),se=r(57),le=r.n(se),fe=r(1),de=r(23),ge={slug:"helpVisibility",contexts:[de.j,de.k,de.h,de.i],version:"1.29.0",gaEventCategory:function(e){return"".concat(e,"_headerbar_helpmenu")},steps:[{target:".googlesitekit-help-menu",title:Object(fe.__)("Need help?","google-site-kit"),content:Object(fe.__)("Access the Site Kit docs or ask a question in our support forum from here.","google-site-kit"),placement:"bottom-start"}]},pe=r(762),ve=r(17),be=r(39),me={slug:"ideaHubPostsTable",contexts:[de.m],version:"1.43.0",gaEventCategory:be.n,checkRequirements:(J=oe()(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(document.querySelector(".googlesitekit-idea-hub__post")){e.next=2;break}return e.abrupt("return",!1);case 2:return e.abrupt("return",t.__experimentalResolveSelect(ve.a).isModuleConnected("idea-hub"));case 3:case"end":return e.stop()}}),e)}))),function(e){return J.apply(this,arguments)}),steps:[{target:".googlesitekit-idea-hub__post",title:Object(fe.__)("Get started writing about your saved ideas","google-site-kit"),content:Object(fe.__)("Drafts you created from Idea Hub within Site Kit appear here for easy access.","google-site-kit")}]},ye=r(766),he=r(24),Oe=r.n(he),Se=r(25),_e=r(42),Ee=r(350),we=r(33),je=r(111),ke={slug:"dashboardSharing",contexts:[de.j],version:"1.85.0",gaEventCategory:function(e){return"".concat(e,"_dashboard-sharing")},steps:[{target:".googlesitekit-sharing-settings__button",title:Object(fe.__)("New! Dashboard sharing","google-site-kit"),content:Object(fe.__)("Share a view-only version of your dashboard with other WordPress roles","google-site-kit"),placement:"bottom-start"}].concat(Oe()(Ee.a.steps)),checkRequirements:function(){return Object(_e.b)("dashboardSharing")},callback:function(e,t){var r=t.select,n=t.dispatch,i=e.action,a=e.index,o=e.size,c=e.type,u=r(we.b).getValue(je.d);Se.a.NEXT===i&&0===a&&n(we.b).setValue(je.d,!0),(Se.a.STOP===i||0===a&&u)&&n(we.b).setValue(je.d,!1),a+1!==o||Se.b.TOOLTIP!==c||W||(W=!0,n(d.a).dismissTour(Ee.a.slug))}},Ie=r(9),Te=[{slug:"allTrafficWidget",contexts:[de.j,de.k],version:"1.25.0",gaEventCategory:function(e){return"".concat(e,"_all-traffic-widget")},checkRequirements:function(){var e=oe()(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.__experimentalResolveSelect(ve.a).isModuleConnected("analytics");case 2:if(e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return e.next=7,new Promise((function(e){setTimeout((function r(){t.select(we.b).getValue(Ie.q)?e():setTimeout(r,250)}),250)}));case 7:return e.abrupt("return",!0);case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),steps:[{target:".googlesitekit-widget--analyticsAllTraffic__totals",title:Object(fe.__)("It’s now easier to see your site’s traffic at a glance","google-site-kit"),content:Object(fe.__)("Check the trend graph to see how your traffic changed over time","google-site-kit"),placement:"top"},{target:".googlesitekit-widget--analyticsAllTraffic__dimensions",title:Object(fe.__)("See where your visitors come from","google-site-kit"),content:Object(fe.__)("Click on the chart slices to see how each segment has changed over time","google-site-kit"),placement:"top"},{target:".googlesitekit-header__date-range-selector-menu",title:Object(fe.__)("Check how your traffic changed since you last looked","google-site-kit"),content:Object(fe.__)("Select a time frame to see the comparison with the previous time period","google-site-kit")}]},ge,pe.a,me,ye.a,ke],De=r(46);function xe(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return Re(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Re(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw a}}}}function Re(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.slug;k()(t,"slug is required.")}}),qe={lastDismissedAt:void 0,dismissedTourSlugs:void 0,tours:Te,currentTour:null},Me={dismissTour:Object(G.f)((function(e){k()(e,"A tour slug is required to dismiss a tour.")}),c.a.mark((function e(t){var r,n,i;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:if(r=e.sent,!(n=r.select)(d.a).isFetchingDismissTour(t)){e.next=7;break}return i=n(d.a).getDismissedFeatureTourSlugs(),e.abrupt("return",{response:i,error:void 0});case 7:return e.next=9,{type:"DISMISS_TOUR",payload:{slug:t}};case 9:return e.next=11,$e.setLastDismissedAt(Date.now());case 11:return e.next=13,Fe.actions.fetchDismissTour(t);case 13:return e.abrupt("return",e.sent);case 14:case"end":return e.stop()}}),e)}))),receiveCurrentTour:function(e){return k()(le()(e),"tour must be a plain object."),{payload:{tour:e},type:"RECEIVE_CURRENT_TOUR"}},receiveFeatureToursForView:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.viewContext;return k()(Array.isArray(e),"viewTours must be an array."),k()(r,"viewContext is required."),{payload:{viewTours:e,viewContext:r},type:"RECEIVE_READY_TOURS"}},receiveAllFeatureTours:function(e){return k()(Array.isArray(e),"tours must be an array."),{payload:{tours:e},type:"RECEIVE_TOURS"}},receiveLastDismissedAt:function(e){return k()(void 0!==e,"A timestamp is required."),{type:"RECEIVE_LAST_DISMISSED_AT",payload:{timestamp:e}}},setLastDismissedAt:Object(G.f)((function(e){k()(e,"A timestamp is required.")}),c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{type:"CACHE_LAST_DISMISSED_AT",payload:{timestamp:t}};case 2:return e.next=4,{type:"RECEIVE_LAST_DISMISSED_AT",payload:{timestamp:t}};case 4:case"end":return e.stop()}}),e)}))),triggerTour:c.a.mark((function e(t){var r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:if(r=e.sent,(0,r.select)(d.a).getCurrentTour()){e.next=7;break}return e.next=7,Me.receiveCurrentTour(t);case 7:case"end":return e.stop()}}),e)})),triggerOnDemandTour:c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{tour:t},type:"CHECK_ON_DEMAND_TOUR_REQUIREMENTS"};case 2:if(!e.sent){e.next=6;break}return e.next=6,Me.triggerTour(t);case 6:case"end":return e.stop()}}),e)})),triggerTourForView:c.a.mark((function e(t){var r,n,a,o,u,s,l;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:return r=e.sent,n=r.select,a=r.__experimentalResolveSelect,e.next=7,i.a.commonActions.await(a(d.a).getLastDismissedAt());case 7:if(!n(d.a).areFeatureToursOnCooldown()){e.next=9;break}return e.abrupt("return",{});case 9:o=n(d.a).getAllFeatureTours(),u=xe(o),e.prev=11,u.s();case 13:if((s=u.n()).done){e.next=24;break}return l=s.value,e.next=17,{payload:{tour:l,viewContext:t},type:"CHECK_TOUR_REQUIREMENTS"};case 17:if(!e.sent){e.next=22;break}return e.next=21,Me.triggerTour(l);case 21:return e.abrupt("return",e.sent);case 22:e.next=13;break;case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(11),u.e(e.t0);case 29:return e.prev=29,u.f(),e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[11,26,29,32]])}))},Ge=(z={},s()(z,"CHECK_TOUR_REQUIREMENTS",Ue((function(e){return function(){var t=oe()(c.a.mark((function t(r){var n,i,a,o;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.payload,i=n.tour,a=n.viewContext,i.contexts.includes(a)){t.next=4;break}return t.abrupt("return",!1);case 4:if(o=e.select(d.a).getInitialSiteKitVersion()){t.next=9;break}return t.abrupt("return",!1);case 9:if(!ue.a.compare(o,i.version,">=")){t.next=11;break}return t.abrupt("return",!1);case 11:return t.next=13,e.__experimentalResolveSelect(d.a).getDismissedFeatureTourSlugs();case 13:if(!e.select(d.a).isTourDismissed(i.slug)){t.next=15;break}return t.abrupt("return",!1);case 15:if(!i.checkRequirements){t.next=19;break}return t.next=18,i.checkRequirements(e);case 18:return t.abrupt("return",!!t.sent);case 19:return t.abrupt("return",!0);case 20:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()}))),s()(z,"CHECK_ON_DEMAND_TOUR_REQUIREMENTS",Ue((function(e){return function(){var t=oe()(c.a.mark((function t(r){var n,i;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=r.payload,i=n.tour,t.next=4,e.__experimentalResolveSelect(d.a).getDismissedFeatureTourSlugs();case 4:if(!e.select(d.a).isTourDismissed(i.slug)){t.next=6;break}return t.abrupt("return",!1);case 6:if(!i.checkRequirements){t.next=10;break}return t.next=9,i.checkRequirements(e);case 9:return t.abrupt("return",!!t.sent);case 10:return t.abrupt("return",!0);case 11:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()}))),s()(z,"CACHE_LAST_DISMISSED_AT",(Pe=oe()(c.a.mark((function e(t){var r,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.payload,n=r.timestamp,e.next=4,Object(De.d)("feature_tour_last_dismissed_at",n,{ttl:7200});case 4:case"end":return e.stop()}}),e)}))),function(e){return Pe.apply(this,arguments)})),z),He={getDismissedFeatureTourSlugs:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:if(t=e.sent,r=t.select,void 0!==r(d.a).getDismissedFeatureTourSlugs()){e.next=8;break}return e.next=8,Ve.actions.fetchGetDismissedTours();case 8:case"end":return e.stop()}}),e)})),getLastDismissedAt:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.await(Object(De.b)("feature_tour_last_dismissed_at"));case 2:return t=e.sent,r=t.value,e.next=6,$e.receiveLastDismissedAt(r||null);case 6:case"end":return e.stop()}}),e)}))},Be={getCurrentTour:function(e){return e.currentTour},getDismissedFeatureTourSlugs:function(e){return e.dismissedTourSlugs},getAllFeatureTours:function(e){return e.tours},isTourDismissed:Ne((function(e){return function(t,r){var n=e(d.a).getDismissedFeatureTourSlugs();if(void 0!==n)return n.includes(r)}})),getLastDismissedAt:function(e){return e.lastDismissedAt},areFeatureToursOnCooldown:Ne((function(e){return function(){var t=e(d.a).getLastDismissedAt();if(void 0!==t){if(null===t)return!1;var r=t+72e5;return Date.now()0&&void 0!==arguments[0]?arguments[0]:{},t=e.triggerID;k()("string"==typeof t&&t.length,"triggerID is required and must be a string")}}),ot=Object(g.a)({baseName:"sendSurveyEvent",controlCallback:function(e){var t=e.event,r=e.session;return f.a.set("core","user","survey-event",{event:t,session:r})},argsToParams:function(e,t){return{event:e,session:t}}}),ct=Object(g.a)({baseName:"getSurveyTimeouts",controlCallback:function(){return f.a.get("core","user","survey-timeouts",{},{useCache:!1})},reducerCallback:function(e,t){return nt(nt({},e),{},{surveyTimeouts:Array.isArray(t)?t:[]})}}),ut=Object(g.a)({baseName:"setSurveyTimeout",controlCallback:function(e){var t=e.slug,r=e.timeout;return f.a.set("core","user","survey-timeout",{slug:t,timeout:r})},reducerCallback:function(e,t){return nt(nt({},e),{},{surveyTimeouts:Array.isArray(t)?t:[]})},argsToParams:function(e,t){return{slug:e,timeout:t}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.slug,r=e.timeout;k()(t,"slug is required."),k()(Number.isInteger(r),"timeout must be an integer.")}}),st={currentSurvey:null,currentSurveySession:null,surveyTimeouts:void 0},lt={setSurveyTimeout:Object(G.f)((function(e,t){k()("string"==typeof e&&e.length,"triggerID is required and must be a string"),k()("number"==typeof t,"timeout must be a number")}),c.a.mark((function e(t,r){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ut.actions.fetchSetSurveyTimeout(t,r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),triggerSurvey:Object(G.f)((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.ttl,n=void 0===r?0:r;k()("string"==typeof e&&e.length,"triggerID is required and must be a string"),k()(le()(t),"options must be an object"),k()("number"==typeof n,"options.ttl must be a number")}),c.a.mark((function e(t){var r,n,a,o,u,s,l,f,g,p,v,b,m=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=m.length>1&&void 0!==m[1]?m[1]:{},n=r.ttl,a=void 0===n?0:n,e.next=4,i.a.commonActions.getRegistry();case 4:if(o=e.sent,u=o.select,s=o.dispatch,l=o.__experimentalResolveSelect,!u(d.a).getCurrentSurvey()){e.next=10;break}return e.abrupt("return",{});case 10:return e.next=12,i.a.commonActions.await(l(d.a).getAuthentication());case 12:if(u(d.a).isAuthenticated()){e.next=14;break}return e.abrupt("return",{});case 14:return e.next=16,i.a.commonActions.await(l(d.a).getSurveyTimeouts());case 16:if(f=u(d.a).isSurveyTimedOut(t),g=u(d.a).isTimingOutSurvey(t,a),f||g){e.next=31;break}return e.next=21,at.actions.fetchTriggerSurvey(t);case 21:if(p=e.sent,v=p.response,!(b=p.error)){e.next=26;break}return e.abrupt("return",{response:v,error:b});case 26:if(!(a>0)){e.next=31;break}return e.next=29,new Promise((function(e){setTimeout(e,3e4)}));case 29:return e.next=31,s(d.a).setSurveyTimeout(t,a);case 31:return e.abrupt("return",{response:{},error:!1});case 32:case"end":return e.stop()}}),e)}))),sendSurveyEvent:Object(G.f)((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};k()("string"==typeof e&&e.length,"eventID is required and must be a string"),k()(le()(t),"eventData must be an object")}),c.a.mark((function e(t){var r,n,a,o,u,l,f,g,p=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>1&&void 0!==p[1]?p[1]:{},n=s()({},t,r),e.next=4,i.a.commonActions.getRegistry();case 4:if(a=e.sent,o=a.select,!(u=o(d.a).getCurrentSurveySession())){e.next=14;break}return e.next=10,ot.actions.fetchSendSurveyEvent(n,u);case 10:return l=e.sent,f=l.response,g=l.error,e.abrupt("return",{response:f,error:g});case 14:case"end":return e.stop()}}),e)})))},ft={getSurveyTimeouts:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.getRegistry();case 2:if(t=e.sent,r=t.select,void 0!==r(d.a).getSurveyTimeouts()){e.next=8;break}return e.next=8,ct.actions.fetchGetSurveyTimeouts();case 8:case"end":return e.stop()}}),e)}))},dt={getCurrentSurvey:function(e){return e.currentSurvey},getCurrentSurveySession:function(e){return e.currentSurveySession},getCurrentSurveyCompletions:it((function(e){return function(){var t=e(d.a).getCurrentSurvey();return(null==t?void 0:t.completion)||null}})),getCurrentSurveyQuestions:it((function(e){return function(){var t=e(d.a).getCurrentSurvey();return(null==t?void 0:t.question)||null}})),getSurveyTimeouts:function(e){return e.surveyTimeouts},isSurveyTimedOut:it((function(e){return function(t,r){var n=e(d.a).getSurveyTimeouts();return void 0===n?void 0:n.includes(r)}})),isTimingOutSurvey:it((function(e){return function(t,r,n){return e(d.a).isFetchingSetSurveyTimeout(r,n)}}))},gt=i.a.combineStores(at,ot,ct,ut,{initialState:st,actions:lt,resolvers:ft,selectors:dt}),pt=(gt.initialState,gt.actions,gt.resolvers,gt.selectors,gt);function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function bt(e){for(var t=1;t0},a=t.select(d.a).getUserInputSettings(),o=Object.keys(a).reduce((function(e,t){var i;return xt(xt({},e),{},s()({},t,((null===(i=a[t])||void 0===i?void 0:i.values)||[]).map(r).filter(n)))}),{}),e.next=11,{type:"SET_USER_INPUT_SETTINGS_SAVING_FLAG",payload:{isSaving:!0}};case 11:return e.next=13,Vt.actions.fetchSaveUserInputSettings(o);case 13:if(u=e.sent,l=u.response,!(f=u.error)){e.next=19;break}return e.next=19,Pt(f,"saveUserInputSettings",[]);case 19:return e.next=21,{type:"DELETE_CACHED_USER_INPUT_SETTINGS",payload:{}};case 21:return e.next=23,{type:"SET_USER_INPUT_SETTINGS_SAVING_FLAG",payload:{isSaving:!1}};case 23:return e.abrupt("return",{response:l,error:f});case 24:case"end":return e.stop()}}),e)}))},Mt=(mt={},s()(mt,"DELETE_CACHED_USER_INPUT_SETTINGS",(function(){return Object(De.a)("userInputSettings")})),s()(mt,"GET_CACHED_USER_INPUT_SETTINGS",(function(){return Object(De.b)("userInputSettings")})),s()(mt,"SET_CACHED_USER_INPUT_SETTING",At((function(e){return function(t){var r=t.payload,n=r.settingID,i=r.values,a=e.select(d.a).getUserInputSettings()||{};return a[n]={values:i},Object(De.d)("userInputSettings",a)}}))),mt),Gt={getUserInputSettings:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Rt.getRegistry();case 2:if(t=e.sent,(r=t.select)(d.a).getUserInputSettings()){e.next=7;break}return e.next=7,Lt.actions.fetchGetUserInputSettings();case 7:if("completed"===r(d.a).getUserInputState()){e.next=10;break}return e.next=10,qt.setUserInputSettingsFromCache();case 10:case"end":return e.stop()}}),e)}))},Ht={isSavingUserInputSettings:function(e){return!!(null==e?void 0:e.isSavingInputSettings)},getUserInputSettings:function(e){return e.inputSettings},getUserInputSetting:Ct((function(e){return function(t,r){var n,i=null===(n=(e(d.a).getUserInputSettings()||{})[r])||void 0===n?void 0:n.values;return Array.isArray(i)?i:[]}})),getUserInputSettingScope:Ct((function(e){return function(t,r){var n;return null===(n=(e(d.a).getUserInputSettings()||{})[r])||void 0===n?void 0:n.scope}})),getUserInputSettingAuthor:Ct((function(e){return function(t,r){var n;return null===(n=(e(d.a).getUserInputSettings()||{})[r])||void 0===n?void 0:n.author}}))},Bt=i.a.combineStores(Lt,Vt,{initialState:Ft,actions:qt,controls:Mt,reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"SET_USER_INPUT_SETTING":return xt(xt({},e),{},{inputSettings:xt(xt({},e.inputSettings),{},s()({},n.settingID,xt(xt({},(e.inputSettings||{})[n.settingID]||{}),{},{values:n.values})))});case"SET_USER_INPUT_SETTINGS_SAVING_FLAG":return xt(xt({},e),{},{isSavingInputSettings:n.isSaving});default:return e}},resolvers:Gt,selectors:Ht}),Kt=(Bt.initialState,Bt.actions,Bt.controls,Bt.reducer,Bt.resolvers,Bt.selectors,Bt),$t=i.a.combineStores(i.a.commonStore,Object(a.b)(d.a),w,A,M,ie,Ze,et,tt.a,pt,It,Tt.a,Kt);$t.initialState,$t.actions,$t.controls,$t.reducer,$t.resolvers,$t.selectors;i.a.registerStore(d.a,$t)},12:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return a})),r.d(t,"h",(function(){return o})),r.d(t,"i",(function(){return c})),r.d(t,"f",(function(){return u})),r.d(t,"g",(function(){return s})),r.d(t,"e",(function(){return l})),r.d(t,"d",(function(){return f}));var n="core/user",i="connected_url_mismatch",a="googlesitekit_authenticate",o="googlesitekit_setup",c="googlesitekit_view_dashboard",u="googlesitekit_manage_options",s="googlesitekit_read_shared_module_data",l="googlesitekit_manage_module_sharing_options",f="googlesitekit_delegate_module_sharing_management"},17:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return i}));var n="core/modules",i="insufficient_module_dependencies"},23:function(e,t,r){"use strict";r.d(t,"j",(function(){return n})),r.d(t,"h",(function(){return i})),r.d(t,"k",(function(){return a})),r.d(t,"i",(function(){return o})),r.d(t,"m",(function(){return c})),r.d(t,"p",(function(){return u})),r.d(t,"f",(function(){return s})),r.d(t,"o",(function(){return l})),r.d(t,"g",(function(){return f})),r.d(t,"n",(function(){return d})),r.d(t,"q",(function(){return g})),r.d(t,"l",(function(){return p})),r.d(t,"d",(function(){return v})),r.d(t,"a",(function(){return b})),r.d(t,"c",(function(){return m})),r.d(t,"b",(function(){return y})),r.d(t,"e",(function(){return h}));var n="mainDashboard",i="entityDashboard",a="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",u="userInput",s="activation",l="splash",f="adminBar",d="settings",g="wpDashboard",p="moduleSetup",v="traffic",b="content",m="speed",y="monetization",h=[n,i,a,o,u,l,d,p]},31:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return i}));var n="_googlesitekitDataLayer",i="data-googlesitekit-gtag"},312:function(e,t,r){"use strict";function n(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n3&&void 0!==arguments[3]?arguments[3]:{},c=a.client,s=void 0===c||c,f=a.server,p=void 0===f||f,b=a.storeName,m=void 0===b?void 0:b;u()(t,"type is required."),u()(r,"identifier is required."),u()(n,"datapoint is required.");var y=m||"".concat(t,"/").concat(r),h={serverNotifications:p?void 0:{},clientNotifications:s?void 0:{}},O=Object(g.a)({baseName:"getNotifications",controlCallback:function(){return l.a.get(t,r,n)},reducerCallback:function(e,t){return v(v({},e),{},{serverNotifications:t.reduce((function(e,t){return v(v({},e),{},o()({},t.id,t))}),{})})}}),S={addNotification:function(e){return u()(e,"notification is required."),{payload:{notification:e},type:"ADD_NOTIFICATION"}},removeNotification:function(e){return u()(e,"id is required."),{payload:{id:e},type:"REMOVE_NOTIFICATION"}}},_={},E=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h,r=arguments.length>1?arguments[1]:void 0,n=r.type,i=r.payload;switch(n){case"ADD_NOTIFICATION":var a=i.notification;return v(v({},t),{},{clientNotifications:v(v({},t.clientNotifications||{}),{},o()({},a.id,a))});case"REMOVE_NOTIFICATION":var c=i.id;if(void 0===t.clientNotifications||void 0===t.clientNotifications[c])return void 0!==t.serverNotifications&&void 0!==t.serverNotifications[c]&&e.console.warn('Cannot remove server-side notification with ID "'.concat(c,'"; this may be changed in a future release.')),t;var u=v({},t.clientNotifications);return delete u[c],v(v({},t),{},{clientNotifications:u});default:return t}},w={getNotifications:i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,O.actions.fetchGetNotifications();case 2:case"end":return e.stop()}}),e)}))};p||delete w.getNotifications;var j={getNotifications:function(e){var t=e.serverNotifications,r=e.clientNotifications;return void 0===t&&void 0===r?t:Object.values(v(v({},t||{}),r||{}))}},k=d.a.combineStores(O,{initialState:h,actions:S,controls:_,reducer:E,resolvers:w,selectors:j});return v(v({},k),{},{STORE_NAME:y})}}).call(this,r(22))},38:function(e,t,r){"use strict";r.d(t,"a",(function(){return s}));var n=r(14),i=r.n(n),a=r(7),o=r.n(a),c=r(36),u=r(43),s=function(e){o()(Object(u.a)(e),c.e);var t=e.split("-"),r=i()(t,3),n=r[0],a=r[1],s=r[2];return new Date(n,a-1,s)}},39:function(e,t,r){"use strict";r.d(t,"t",(function(){return i})),r.d(t,"i",(function(){return a})),r.d(t,"m",(function(){return o})),r.d(t,"k",(function(){return c})),r.d(t,"l",(function(){return u})),r.d(t,"j",(function(){return s})),r.d(t,"p",(function(){return l})),r.d(t,"a",(function(){return f})),r.d(t,"c",(function(){return d})),r.d(t,"d",(function(){return g})),r.d(t,"b",(function(){return p})),r.d(t,"e",(function(){return v})),r.d(t,"g",(function(){return b})),r.d(t,"f",(function(){return m})),r.d(t,"h",(function(){return y})),r.d(t,"o",(function(){return h})),r.d(t,"n",(function(){return O})),r.d(t,"r",(function(){return S})),r.d(t,"s",(function(){return _})),r.d(t,"q",(function(){return E}));var n=r(23),i="modules/idea-hub",a="IDEA_HUB_BUTTON_CREATE",o="IDEA_HUB_BUTTON_VIEW",c="IDEA_HUB_BUTTON_PIN",u="IDEA_HUB_BUTTON_UNPIN",s="IDEA_HUB_BUTTON_DELETE",l=5,f="IDEA_HUB_ACTIVITY_CREATING_DRAFT",d="IDEA_HUB_ACTIVITY_DRAFT_CREATED",g="IDEA_HUB_ACTIVITY_IS_DELETING",p="IDEA_HUB_ACTIVITY_DELETED",v="IDEA_HUB_ACTIVITY_IS_PINNING",b="IDEA_HUB_ACTIVITY_PINNED",m="IDEA_HUB_ACTIVITY_IS_UNPINNING",y="IDEA_HUB_ACTIVITY_UNPINNED",h="".concat(n.q,"_idea-hub-saved-ideas-notification"),O="".concat(n.m,"_idea-hub"),S="new-ideas",_="saved-ideas",E="draft-ideas"},4:function(e,t){e.exports=googlesitekit.data},41:function(e,t,r){"use strict";r.d(t,"a",(function(){return S}));var n=r(5),i=r.n(n),a=r(6),o=r.n(a),c=r(7),u=r.n(c),s=r(57),l=r.n(s),f=r(53),d=r(80),g=r(8);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t1?r-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:a;return t instanceof Set&&t.has(e)}}).call(this,r(22))},43:function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(37),i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var r=e.split("-");return 3===r.length&&Object(n.a)(new Date(e))}},46:function(e,t,r){"use strict";(function(e){r.d(t,"b",(function(){return m})),r.d(t,"d",(function(){return y})),r.d(t,"a",(function(){return h})),r.d(t,"c",(function(){return O}));var n=r(5),i=r.n(n),a=r(16),o=r.n(a),c=(r(24),r(8));function u(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw a}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==b[2]?b[2]:{},o=a.ttl,u=void 0===o?c.b:o,s=a.timestamp,l=void 0===s?Math.round(Date.now()/1e3):s,d=a.isError,g=void 0!==d&&d,t.next=3,v();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(f).concat(r),JSON.stringify({timestamp:l,ttl:u,value:n,isError:g})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(e,r){return t.apply(this,arguments)}}(),h=function(){var t=o()(i.a.mark((function t(r){var n;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:if(!(n=t.sent)){t.next=13;break}return t.prev=4,n.removeItem("".concat(f).concat(r)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(e){return t.apply(this,arguments)}}(),O=function(){var t=o()(i.a.mark((function t(){var r,n,a,o;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:if(!(r=t.sent)){t.next=14;break}for(t.prev=4,n=[],a=0;a2&&void 0!==arguments[2]?arguments[2]:{},n=r.clearMatchingLegacyError,i=void 0!==n&&n;return e&&s()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:e,args:t,clearMatchingLegacyError:i}}},clearErrors:function(e){return{type:"CLEAR_ERRORS",payload:{baseName:e}}}};function m(e){s()(e,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var r={getErrorForSelector:function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var a=r.getError(t,n,i);if(a)return p(p({},a),{},{selectorData:{storeName:e,name:n,args:i}})},getErrorForAction:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(t,"actionName is required."),r.getError(e,t,n)},getError:function(e,t,r){var n=e.error,i=e.errors;return t||r?(s()(t,"baseName is required."),i[v(t,r)]):n},getErrors:function(e){var t=new Set(Object.values(e.errors));return void 0!==e.error&&t.add(e.error),Array.from(t)},getMetaDataForError:function(e,t){var r=Object.keys(e.errors).find((function(r){return e.errors[r]===t}));return r?{baseName:r.substring(0,r.indexOf("::")),args:e.errorArgs[r]}:null},getSelectorDataForError:Object(c.e)((function(t){return function(r,n){var i=t(e).getMetaDataForError(n);if(i){var a=i.baseName,o=i.args;if(!!t(e)[a])return{storeName:e,name:a,args:o}}return null}})),hasErrors:function(e){return r.getErrors(e).length>0}};return{initialState:t,actions:b,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"RECEIVE_ERROR":var a=n.baseName,o=n.args,c=n.error;if(a){var u=v(a,o);return p(p({},e),{},{errors:p(p({},e.errors||{}),{},i()({},u,c)),errorArgs:p(p({},e.errorArgs||{}),{},i()({},u,o))})}return p(p({},e),{},{error:c});case"CLEAR_ERROR":var s=n.baseName,l=n.args,f=p({},e);if(s){var d=v(s,l);f.errors=p({},e.errors||{}),f.errorArgs=p({},e.errorArgs||{}),n.clearMatchingLegacyError&&f.error===f.errors[d]&&delete f.error,delete f.errors[d],delete f.errorArgs[d]}else f.error=void 0;return f;case"CLEAR_ERRORS":var g=n.baseName,b=p({},e);if(g)for(var m in b.errors=p({},e.errors||{}),b.errorArgs=p({},e.errorArgs||{}),b.errors)(m===g||m.startsWith("".concat(g,"::")))&&(delete b.errors[m],delete b.errorArgs[m]);else b.errors={},b.errorArgs={},b.error=void 0;return b;default:return e}},resolvers:{},selectors:r}}},62:function(e,t,r){"use strict";(function(e){var n=r(0),i=r.n(n),a=r(11),o=r.n(a);function ChangeArrow(t){var r=t.direction,n=t.invertColor,i=t.width,a=t.height;return e.createElement("svg",{className:o()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(r),{"googlesitekit-change-arrow--inverted-color":n}),width:i,height:a,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:i.a.string,invertColor:i.a.bool,width:i.a.number,height:i.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,r(3))},63:function(e,t,r){"use strict";r.d(t,"a",(function(){return o})),r.d(t,"b",(function(){return c}));var n=r(30),i=r.n(n),a=r(78),o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:a.a.sanitize(e,t)}};function c(e){var t,r="object"===i()(e)?e.toString():e;return null==r||null===(t=r.replace)||void 0===t?void 0:t.call(r,/\/+$/,"")}},68:function(e,t,r){"use strict";r.d(t,"d",(function(){return n.e})),r.d(t,"c",(function(){return n.d})),r.d(t,"b",(function(){return n.b})),r.d(t,"a",(function(){return n.a})),r.d(t,"e",(function(){return n.f})),r.d(t,"g",(function(){return c})),r.d(t,"h",(function(){return s})),r.d(t,"i",(function(){return l})),r.d(t,"j",(function(){return f.a})),r.d(t,"f",(function(){return g})),r.d(t,"k",(function(){return u.a}));var n=r(36),i=r(7),a=r.n(i),o=r(37),c=function(e){a()(Object(o.a)(e),n.c);var t="".concat(e.getMonth()+1),r="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,r.length<2?"0".concat(r):r].join("-")},u=r(38),s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=Object(u.a)(e);return r.setDate(r.getDate()-t),c(r)},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},f=r(43);var d=r(1);function g(){var e=function(e){return Object(d.sprintf)( +/* translators: %s: number of days */ +Object(d._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},69:function(e,t,r){"use strict";r.d(t,"a",(function(){return I})),r.d(t,"b",(function(){return T})),r.d(t,"c",(function(){return D})),r.d(t,"d",(function(){return R})),r.d(t,"e",(function(){return A})),r.d(t,"g",(function(){return P})),r.d(t,"f",(function(){return N}));var n,i=r(5),a=r.n(i),o=r(24),c=r.n(o),u=r(6),s=r.n(u),l=r(7),f=r.n(l),d=r(201),g=r.n(d),p=r(71),v=r.n(p),b=r(66);function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i.reduce((function(e,r){return r(e,t)}),e)}},E=h,w=h,j=h,k=function(e){return e},I=function(){for(var e=arguments.length,t=new Array(e),r=0;r=1?r[i]+1:1,r[i]>1&&t.push(i)}return t},R={actions:T,controls:D,reducer:k},A=function(e){return function(t){return C(e(t))}},C=v()((function(e){return g()(e,(function(e,t){return function(){var r=e.apply(void 0,arguments);return f()(void 0!==r,"".concat(t,"(...) is not resolved")),r}}))}));function P(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.negate,n=void 0!==r&&r,i=Object(b.e)((function(t){return function(r){var i=!n,a=!!n;try{for(var o=arguments.length,c=new Array(o>1?o-1:0),u=1;u1?n-1:0),a=1;a1&&void 0!==arguments[1]?arguments[1]:{},r=y(e,t),n=r.formatUnit,i=r.formatDecimal;try{return n()}catch(e){return i()}},y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var r=Math.floor(e/60/60),n=Math.floor(e/60%60),i=Math.floor(e%60);return{hours:r,minutes:n,seconds:i,formatUnit:function(){var a=t.unitDisplay,o=b(b({unitDisplay:void 0===a?"short":a},l()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?E(i,b(b({},o),{},{unit:"second"})):Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?E(i,b(b({},o),{},{unit:"second"})):"",n?E(n,b(b({},o),{},{unit:"minute"})):"",r?E(r,b(b({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(p.__)("%ds","google-site-kit"),i);if(0===e)return t;var a=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(p.__)("%dm","google-site-kit"),n),o=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(p.__)("%dh","google-site-kit"),r);return Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?t:"",n?a:"",r?o:"").trim()}}},h=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},O=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in millions. +Object(p.__)("%sM","google-site-kit"),E(h(e),e%10==0?{}:t)):1e4<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),E(h(e))):1e3<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),E(h(e),e%10==0?{}:t)):E(e,{signDisplay:"never",maximumFractionDigits:1})},S=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(f.isFinite)(e)?e:Number(e),Object(f.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var r={};if("%"===t)r={style:"percent",maximumFractionDigits:2};else{if("s"===t)return m(e,{unitDisplay:"narrow"});t&&"string"==typeof t?r={style:"currency",currency:t}:Object(f.isPlainObject)(t)&&(r=b({},t))}var n=r,i=n.style,a=void 0===i?"metric":i;return"metric"===a?O(e):"duration"===a?m(e,t):E(e,r)},_=g()(console.warn),E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?j():r,a=l()(t,["locale"]);try{return new Intl.NumberFormat(n,a).format(e)}catch(t){_("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(a)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},u=["signDisplay","compactDisplay"],s={},f=0,d=Object.entries(a);f1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?j():r,i=t.style,a=void 0===i?"long":i,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var u=new Intl.ListFormat(n,{style:a,type:c});return u.format(e)} +/* translators: used between list items, there is a space after the comma. */var s=Object(p.__)(", ","google-site-kit");return e.join(s)},j=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,r=Object(f.get)(t,["_googlesitekitLegacyData","locale"]);if(r){var n=r.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,r(22))},762:function(e,t,r){"use strict";(function(e){var n,i=r(5),a=r.n(i),o=r(16),c=r.n(o),u=r(25),s=r(1),l=r(23),f=r(17),d=r(39),g={slug:"ideaHubModule",contexts:[l.j,l.k],version:"1.43.0",checkRequirements:(n=c()(a.a.mark((function e(t){var r,n;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.__experimentalResolveSelect,e.next=3,r(f.a).isModuleConnected("idea-hub");case 3:if(e.sent){e.next=6;break}return e.abrupt("return",!1);case 6:return e.next=8,r(d.t).getNewIdeas();case 8:return n=e.sent,e.abrupt("return",!!n.length);case 10:case"end":return e.stop()}}),e)}))),function(e){return n.apply(this,arguments)}),steps:[{target:".googlesitekit-widget--ideaHubIdeas",title:Object(s.__)("Get inspiration for new topics to write about!","google-site-kit"),content:Object(s.__)("These ideas are based on unanswered searches related to the content of your site. They are organized by topics and will refresh every 2-3 days.","google-site-kit")},{target:".googlesitekit-idea-hub__actions--create",title:Object(s.__)("Start a draft","google-site-kit"),content:Object(s.__)("Found an interesting idea you want to write about? Create a draft! You can always get back to it later on the Posts page.","google-site-kit")},{target:".googlesitekit-idea-hub__idea--single",title:Object(s.__)("Save for later or dismiss","google-site-kit"),content:Object(s.__)('If you’re not ready to create a draft about an idea just yet, add it to your "Saved" list and revisit later. If you don’t like an idea, you can dismiss it from your list.',"google-site-kit"),placement:"top"}],gaEventCategory:function(e){return"".concat(e,"_idea-hub-widget")},callback:function(t){var r=t.type,n=t.index;if([u.b.STEP_BEFORE,u.b.STEP_AFTER].includes(r)&&2===n){var i="googlesitekit-idea-hub__actions--unhide",a=e.document.querySelector(".googlesitekit-idea-hub__actions--pin"),o=e.document.querySelector(".googlesitekit-idea-hub__actions--delete");a&&o&&(r===u.b.STEP_BEFORE&&(a.classList.add(i),o.classList.add(i)),r===u.b.STEP_AFTER&&(a.classList.remove(i),o.classList.remove(i)))}}};t.a=g}).call(this,r(22))},766:function(e,t,r){"use strict";(function(e){var n=r(25),i=r(1),a=r(23),o={slug:"unifiedDashboard",contexts:[a.j,a.k],version:"1.68.0",gaEventCategory:function(e){return"".concat(e,"_unified-dashboard")},steps:[{target:".googlesitekit-navigation",title:Object(i.__)("New! Navigate your dashboard easily","google-site-kit"),content:Object(i.__)("Jump straight to the relevant section in your dashboard with just one click - no more scrolling.","google-site-kit"),placement:"bottom"},{target:".googlesitekit-entity-search",title:Object(i.__)("Check stats for a specific post","google-site-kit"),content:Object(i.__)("Search by URL or by post title and your dashboard will be filtered to show stats just for that URL.","google-site-kit"),placement:"bottom"},{target:".googlesitekit-widget--searchFunnel",title:Object(i.__)("See trends over time for your site’s Search metrics","google-site-kit"),content:Object(i.__)("The updated Search Funnel shows you a more comprehensive view of how traffic from Search is changing.","google-site-kit"),placement:"top-end"}],callback:function(t){var r=t.type,i=t.index;n.b.TOOLTIP===r&&2===i&&setTimeout((function(){var t=e.document.querySelector(".googlesitekit-tour-tooltip"),r=e.document.querySelector("#wpadminbar");t&&r&&e.scrollTo({top:e.scrollY+t.getBoundingClientRect().top-r.offsetHeight,behavior:"smooth"})}),50)}};t.a=o}).call(this,r(22))},767:function(e,t,r){"use strict";(function(e){var n=r(24),i=r.n(n),a=r(5),o=r.n(a),c=r(6),u=r.n(c),s=r(7),l=r.n(s),f=r(34),d=r.n(f),g=r(4),p=r.n(g),v=r(12),b=r(17),m=r(768),y=r(41);function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function O(e){for(var t=1;t2?i-2:0),o=2;o0&&(r=m.a.apply(void 0,[r].concat(a))),n)return!!n[r]}})),canViewSharedModule:S((function(e){return function(t,r){var n=e(b.a).getModule(r);if(void 0!==n)return!(null===n||!n.shareable)&&e(v.a).hasCapability(v.g,n.slug)}}))},I=p.a.combineStores(_,{initialState:E,actions:w,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"CLEAR_PERMISSION_SCOPE_ERROR":return O(O({},e),{},{permissionError:null});case"SET_PERMISSION_SCOPE_ERROR":var i=n.permissionError;return O(O({},e),{},{permissionError:i});case"RECEIVE_CAPABILITIES":var a=n.capabilities;return O(O({},e),{},{capabilities:a});default:return e}},resolvers:j,selectors:k});I.initialState,I.actions,I.controls,I.reducer,I.resolvers,I.selectors;t.a=I}).call(this,r(22))},768:function(e,t,r){"use strict";function n(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1&&void 0!==arguments[1]?arguments[1]:{},r=t.additionalScopes,n=void 0===r?[]:r,i=t.redirectURL,a=void 0===i?void 0:i,o=e.connectURL,c={redirect:a};if(void 0!==o){if(null==n?void 0:n.length){var u=n.map((function(e){return e.replace(/^http(s)?:/,"gttp$1:")}));return Object(f.a)(o,y(y({},c),{},{additional_scopes:u}))}return Object(f.a)(o,c)}},getID:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.id:t}})),getName:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.name:t}})),getEmail:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.email:t}})),getPicture:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.picture:t}})),getFullName:h((function(e){return function(){var t=e(p.a).getUser();if(void 0!==t)return t.full_name}})),getAccountChooserURL:h((function(e){return function(t,r){l()(r,"destinationURL is required");var n=e(p.a).getEmail();if(void 0!==n)return Object(v.a)(b(),r,n)}})),getInitialSiteKitVersion:function(e){return e.initialVersion},isVerified:function(e){return e.verified},getUserInputState:function(e){return e.userInputState}};t.a={initialState:O,actions:S,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"RECEIVE_CONNECT_URL":var i=n.connectURL;return y(y({},e),{},{connectURL:i});case"RECEIVE_USER_INFO":var a=n.user;return y(y({},e),{},{user:a});case"RECEIVE_USER_INITIAL_SITE_KIT_VERSION":var o=n.initialVersion;return y(y({},e),{},{initialVersion:o});case"RECEIVE_USER_IS_VERIFIED":var c=n.verified;return y(y({},e),{},{verified:c});case"RECEIVE_USER_INPUT_STATE":var u=n.userInputState;return y(y({},e),{},{userInputState:u});default:return e}},resolvers:_,selectors:E}}).call(this,r(22))},78:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return i}));var n=r(124),i=r.n(n)()(e)}).call(this,r(22))},8:function(e,t,r){"use strict";r.d(t,"z",(function(){return c.b})),r.d(t,"w",(function(){return u.a})),r.d(t,"A",(function(){return u.b})),r.d(t,"y",(function(){return g})),r.d(t,"f",(function(){return p.a})),r.d(t,"m",(function(){return p.b})),r.d(t,"u",(function(){return v.c})),r.d(t,"v",(function(){return v.d})),r.d(t,"r",(function(){return v.b})),r.d(t,"l",(function(){return v.a})),r.d(t,"s",(function(){return h})),r.d(t,"g",(function(){return O})),r.d(t,"b",(function(){return S.b})),r.d(t,"a",(function(){return S.a})),r.d(t,"c",(function(){return S.e})),r.d(t,"i",(function(){return S.f})),r.d(t,"x",(function(){return S.k})),r.d(t,"j",(function(){return _.b})),r.d(t,"q",(function(){return _.c})),r.d(t,"e",(function(){return _.a})),r.d(t,"o",(function(){return E.b})),r.d(t,"k",(function(){return E.a})),r.d(t,"t",(function(){return E.d})),r.d(t,"p",(function(){return w})),r.d(t,"n",(function(){return j})),r.d(t,"d",(function(){return k})),r.d(t,"B",(function(){return I})),r.d(t,"h",(function(){return T}));var n=r(123),i=r.n(n),a=r(118),o=r.n(a),c=r(32),u=r(63),s=r(30),l=r.n(s),f=r(81),d=r.n(f),g=function(e){return d()(JSON.stringify(function e(t){var r={};return Object.keys(t).sort().forEach((function(n){var i=t[n];i&&"object"===l()(i)&&!Array.isArray(i)&&(i=e(i)),r[n]=i})),r}(e)))};var p=r(83),v=(r(84),r(73));function b(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function m(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function y(e){return e.replace(/\n/gi,"
")}function h(e){for(var t=e,r=0,n=[b,m,y];r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){u=!0,a=e},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:location,r=new URL(t.href);if(e)return r.searchParams&&r.searchParams.get?r.searchParams.get(e):u(e);var n,o={},c=a(r.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var s=i()(n.value,2),l=s[0],f=s[1];o[l]=f}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,r(22))},84:function(e,t,r){"use strict";(function(e){r(44),r(45)}).call(this,r(22))},85:function(e,t,r){"use strict";(function(e){r.d(t,"b",(function(){return a})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return c}));var n=r(169),i=r(62),a=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var a=r.invertColor,o=void 0!==a&&a;return Object(n.a)(e.createElement(i.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,r,n,i,a,o,c,u,s,l,f,d,g,p,v;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(r=t.data)||void 0===r||null===(n=r.rows)||void 0===n?void 0:n.length)||(null==e||null===(i=e[0])||void 0===i||null===(a=i.data)||void 0===a||null===(o=a.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(u=c.metrics)||void 0===u||null===(s=u[0])||void 0===s||null===(l=s.values)||void 0===l?void 0:l[0])===(null==e||null===(f=e[0])||void 0===f||null===(d=f.data)||void 0===d||null===(g=d.totals)||void 0===g||null===(p=g[0])||void 0===p||null===(v=p.values)||void 0===v?void 0:v[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,r(3))},86:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return l}));var n=r(6),i=r.n(n),a=r(87),o=r(88);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,i=u(u({},s),t);i.referenceSiteURL&&(i.referenceSiteURL=i.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(a.a)(i,r);return{enableTracking:function(){i.trackingEnabled=!0},disableTracking:function(){i.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!i.trackingEnabled},trackEvent:Object(o.a)(i,r,c,n)}}}).call(this,r(22))},87:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return a}));var n=r(52),i=r(31);function a(t,r){var a,o=Object(n.a)(r);return function(){var r=e.document;if(void 0===a&&(a=!!r.querySelector("script[".concat(i.b,"]"))),!a){var n=r.createElement("script");n.setAttribute(i.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(i.a),r.head.appendChild(n),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),a=!0}}}}).call(this,r(22))},88:function(e,t,r){"use strict";r.d(t,"a",(function(){return g}));var n=r(5),i=r.n(n),a=r(6),o=r.n(a),c=r(16),u=r.n(c),s=r(52),l=r(42);function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function d(e){for(var t=1;t0&&void 0!==c[0]?c[0]:{},n=t.clearAfterRestore,r=void 0===n||n,e.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=e.sent,i=a.cacheHit,o=a.value,!i){e.next=13;break}return e.next=10,{payload:{snapshot:o},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!r){e.next=13;break}return e.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}}),e)})),createSnapshot:s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))},i=(t={},o()(t,"DELETE_SNAPSHOT",(function(){return Object(f.a)("datastore::cache::".concat(e))})),o()(t,"CREATE_SNAPSHOT",p((function(t){return function(){return Object(f.d)("datastore::cache::".concat(e),t.stores[e].store.getState())}}))),o()(t,"RESTORE_SNAPSHOT",(function(){return Object(f.b)("datastore::cache::".concat(e),m.b)})),t);return{initialState:n,actions:r,controls:i,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0,r=t.type,i=t.payload;switch(r){case"SET_STATE_FROM_SNAPSHOT":var o=i.snapshot,c=(o.error,a()(o,["error"]));return c;default:return e}}}},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Object.values(e.stores).filter((function(e){return Object.keys(e.getActions()).includes("restoreSnapshot")}))},v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Promise.all(h(e).map((function(e){return e.getActions().createSnapshot()})))},y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Promise.all(h(e).map((function(e){return e.getActions().restoreSnapshot()})))}},102:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=200},105:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(11),o=n.n(i),c=n(72),s=n(1),l=n(20),u=n(56);function SourceLink(t){var n=t.name,r=t.href,a=t.className,i=t.external;return Object(u.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",a)},Object(c.a)(Object(s.sprintf)( +/* translators: %s: source link */ +Object(s.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(l.a,{key:"link",href:r,external:i})}))}SourceLink.propTypes={name:a.a.string,href:a.a.string,className:a.a.string,external:a.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},106:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=S&&S>0),o()(n,"mdc-layout-grid__cell--span-".concat(k,"-desktop"),12>=k&&k>0),o()(n,"mdc-layout-grid__cell--start-".concat(E,"-desktop"),12>=E&&E>0),o()(n,"mdc-layout-grid__cell--order-".concat(j,"-desktop"),12>=j&&j>0),o()(n,"mdc-layout-grid__cell--span-".concat(y,"-tablet"),8>=y&&y>0),o()(n,"mdc-layout-grid__cell--start-".concat(O,"-tablet"),8>=O&&O>0),o()(n,"mdc-layout-grid__cell--order-".concat(_,"-tablet"),8>=_&&_>0),o()(n,"mdc-layout-grid__cell--span-".concat(b,"-phone"),4>=b&&b>0),o()(n,"mdc-layout-grid__cell--start-".concat(h,"-phone"),4>=h&&h>0),o()(n,"mdc-layout-grid__cell--order-".concat(v,"-phone"),4>=v&&v>0),n))}),w)}Cell.propTypes={smSize:u.a.number,smStart:u.a.number,smOrder:u.a.number,mdSize:u.a.number,mdStart:u.a.number,mdOrder:u.a.number,lgSize:u.a.number,lgStart:u.a.number,lgOrder:u.a.number,size:u.a.number,alignTop:u.a.bool,alignMiddle:u.a.bool,alignBottom:u.a.bool,alignRight:u.a.bool,alignLeft:u.a.bool,smAlignRight:u.a.bool,mdAlignRight:u.a.bool,lgAlignRight:u.a.bool,className:u.a.string,children:u.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=Object(d.forwardRef)((function(t,n){var r=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",a()({ref:n,className:u()("mdc-layout-grid__inner",r)},c),i)}));g.displayName="Row",g.propTypes={className:s.a.string,children:s.a.node},g.defaultProps={className:""},t.a=g}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=Object(d.forwardRef)((function(t,n){var r=t.alignLeft,i=t.fill,c=t.className,s=t.children,l=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",a()({className:u()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":r,"mdc-layout-grid--collapsed":l,"mdc-layout-grid--fill":i})},d,{ref:n}),s)}));g.displayName="Grid",g.propTypes={alignLeft:s.a.bool,fill:s.a.bool,className:s.a.string,collapsed:s.a.bool,children:s.a.node},g.defaultProps={className:""},t.a=g}).call(this,n(3))},111:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return a})),n.d(t,"d",(function(){return i})),n.d(t,"c",(function(){return o}));var r="editing-user-role-select-slug-key",a=["idea-hub","thank-with-google"],i="dashboardSharingDialogOpen",o="resetSharingDialogOpen"},1117:function(e,t,n){"use strict";n.r(t),function(e){var t=n(212),r=n(122),a=n(895),i=n(172),o=n(23);Object(t.a)((function(){var t=document.getElementById("js-googlesitekit-entity-dashboard");if(t){var n=t.dataset.viewOnly;Object(r.render)(e.createElement(i.a,{viewContext:n?o.i:o.h},e.createElement(a.a,null)),t)}}))}.call(this,n(3))},113:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(96),s=n.n(c),l=n(75),u=n.n(l),d=n(76),g=n.n(d),f=n(48),m=n.n(f),p=n(0),b=n.n(p),h=n(11),v=n.n(h),y=n(2),O=n(1),_=n(62),k=n(105),E=n(65),j=n(8);function S(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=m()(e);if(t){var a=m()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return g()(this,n)}}var w=function(t){u()(DataBlock,t);var n=S(DataBlock);function DataBlock(e){var t;return a()(this,DataBlock),(t=n.call(this,e)).handleClick=t.handleClick.bind(s()(t)),t.handleKeyPress=t.handleKeyPress.bind(s()(t)),t}return o()(DataBlock,[{key:"handleClick",value:function(){var e=this.props,t=e.stat;(0,e.handleStatSelection)(t)}},{key:"handleKeyPress",value:function(e){e.preventDefault();var t=this.props,n=t.stat,r=t.handleStatSelection;"Enter"!==e.key&&" "!==e.key||r(n)}},{key:"render",value:function(){var t=this.props,n=t.className,r=t.title,a=t.datapoint,i=t.datapointUnit,o=t.change,c=t.changeDataUnit,s=t.context,l=t.period,u=t.selected,d=t.handleStatSelection,g=t.source,f=t.sparkline,m=t.invertChangeColor,p=t.gatheringData,b=t.gatheringDataNoticeStyle,h="button"===s?"button":"",S=f;S&&m&&(S=Object(y.cloneElement)(f,{invertChangeColor:m}));var w=o;c&&(w="%"===c?Object(j.u)(o,{style:"percent",signDisplay:"never",maximumFractionDigits:1}):Object(j.u)(o,c)),l&&(w=Object(O.sprintf)(l,w));var N=void 0===a?a:Object(j.u)(a,i||void 0);return e.createElement("div",{className:v()("googlesitekit-data-block",n,"googlesitekit-data-block--".concat(s),{"googlesitekit-data-block--selected":u,"googlesitekit-data-block--is-gathering-data":p}),tabIndex:"button"!==s||p?"-1":"0",role:d&&h,onClick:p?void 0:d&&this.handleClick,onKeyPress:p?void 0:d&&this.handleKeyPress,"aria-disabled":p||void 0,"aria-label":d&&r,"aria-pressed":d&&u},e.createElement("div",{className:"googlesitekit-data-block__title-datapoint-wrapper"},e.createElement("h3",{className:" googlesitekit-subheading-1 googlesitekit-data-block__title "},r),!p&&e.createElement("div",{className:"googlesitekit-data-block__datapoint"},N)),!p&&e.createElement(y.Fragment,null,S&&e.createElement("div",{className:"googlesitekit-data-block__sparkline"},S),e.createElement("div",{className:"googlesitekit-data-block__change-source-wrapper"},e.createElement("div",{className:v()("googlesitekit-data-block__change",{"googlesitekit-data-block__change--no-change":!o})},e.createElement(y.Fragment,null,!!o&&e.createElement("span",{className:"googlesitekit-data-block__arrow"},e.createElement(_.a,{direction:01?Object(g.a)(u):[],h=function(e){return s()("googlesitekit-tooltip-indicator",{active:e===c})};return e.createElement("div",a()({className:s()("googlesitekit-tour-tooltip",m.className)},p),e.createElement(o.a,{className:"googlesitekit-tooltip-card"},e.createElement("div",{className:"googlesitekit-tooltip-body"},e.createElement("h2",{className:"googlesitekit-tooltip-title"},m.title),e.createElement("div",{className:"googlesitekit-tooltip-content"},m.content)),e.createElement(i.CardActions,{className:"googlesitekit-tooltip-actions"},e.createElement("ul",{className:"googlesitekit-tooltip-indicators"},b.map((function(t){return e.createElement("li",{key:"indicator-".concat(t),className:h(t)})}))),e.createElement("div",{className:"googlesitekit-tooltip-buttons"},0!==c&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},n),n.title),m.cta,l.title&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},l),l.title))),e.createElement(d.Button,a()({className:"googlesitekit-tooltip-close",text:!0,icon:e.createElement(f.a,{width:"14",height:"14"})},r))))}TourTooltip.propTypes={backProps:u.a.object.isRequired,closeProps:u.a.object.isRequired,index:u.a.number.isRequired,isLastStep:u.a.bool.isRequired,primaryProps:u.a.object.isRequired,size:u.a.number.isRequired,step:u.a.shape({content:u.a.node,title:u.a.node.isRequired,cta:u.a.oneOfType([u.a.element,u.a.bool]),className:u.a.string}).isRequired,tooltipProps:u.a.object.isRequired}}).call(this,n(3))},138:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t||{},a=n.slug,i=void 0===a?"":a,o=n.name,c=void 0===o?"":o,s=n.owner,l=void 0===s?{}:s;if(!i||!c)return e;var u="",d="";return"analytics"===i?e.match(/account/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics account, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/property/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/view/i)&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics view, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")):"search-console"===i&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Search Console property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")),u||(u=Object(r.sprintf)( +/* translators: %s: module name */ +Object(r.__)("Your Google account does not have sufficient permissions to access %s data, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"),c)),l&&l.login&&(d=Object(r.sprintf)( +/* translators: %s: owner name */ +Object(r.__)('This service was originally connected by the administrator "%s" — you can contact them for more information.',"google-site-kit"),l.login)),d||(d=Object(r.__)("This service was originally connected by an administrator — you can contact them for more information.","google-site-kit")),"".concat(u," ").concat(d)}},145:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(7),a=n.n(r),i=function(e,t){var n=t.dateRangeLength;a()(Array.isArray(e),"report must be an array to partition."),a()(Number.isInteger(n)&&n>0,"dateRangeLength must be a positive integer.");var r=-1*n;return{currentRange:e.slice(r),compareRange:e.slice(2*r,r)}}},146:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return RecoverableModules}));var r=n(0),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function RecoverableModules(t){var n=t.moduleSlugs,r=u((function(e){var t=e(s.a).getModules();if(void 0!==t)return n.map((function(e){return t[e].name}))}));if(void 0===r)return null;var a=1===r.length?Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s data was previously shared by an admin who no longer has access. Please contact another admin to restore it.","google-site-kit"),r[0]):Object(i.sprintf)( +/* translators: %s: List of module names */ +Object(i.__)("The data for the following modules was previously shared by an admin who no longer has access: %s. Please contact another admin to restore it.","google-site-kit"),r.join(Object(i._x)(", ","Recoverable modules","google-site-kit")));return e.createElement(l.a,{title:Object(i.__)("Data Unavailable","google-site-kit"),description:a})}RecoverableModules.propTypes={moduleSlugs:a.a.arrayOf(a.a.string).isRequired}}).call(this,n(3))},147:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return FeatureTours}));var r=n(97),a=n(4),i=n.n(a),o=n(12),c=n(19),s=n(127),l=i.a.useSelect,u=i.a.useDispatch;function FeatureTours(){var t=Object(c.a)(),n=u(o.a).triggerTourForView;Object(r.a)((function(){n(t)}));var a=l((function(e){return e(o.a).getCurrentTour()}));return a?e.createElement(s.a,{tourID:a.slug,steps:a.steps,gaEventCategory:a.gaEventCategory,callback:a.callback}):null}}).call(this,n(3))},148:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ModuleIcon}));var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(4),u=n.n(l),d=n(17),g=u.a.useSelect;function ModuleIcon(t){var n=t.slug,r=t.size,i=o()(t,["slug","size"]),c=g((function(e){return e(d.a).getModuleIcon(n)}));return c?e.createElement(c,a()({width:r,height:r},i)):null}ModuleIcon.propTypes={slug:s.a.string.isRequired,size:s.a.number},ModuleIcon.defaultProps={size:33}}).call(this,n(3))},149:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(2),a=n(4),i=n.n(a),o=n(50),c=i.a.useDispatch;function s(e,t,n){var a=c(o.a),i=a.setWidgetState,s=a.unsetWidgetState;Object(r.useEffect)((function(){return i(e,t,n),function(){s(e,t,n)}}),[e,t,n,i,s])}},15:function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return i}));var r="core/site",a="primary",i="secondary"},151:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportZero}));var r=n(0),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function ReportZero(t){var n=t.moduleSlug,r=u((function(e){return e(s.a).getModule(n)}));return e.createElement(l.a,{title:Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s Gathering Data","google-site-kit"),null==r?void 0:r.name),description:Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s data is not yet available, please check back later","google-site-kit"),null==r?void 0:r.name)})}ReportZero.propTypes={moduleSlug:a.a.string.isRequired}}).call(this,n(3))},153:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e){return new Array(null!=e?e:0).fill().map((function(e,t){return t}))}},154:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r,a=S(n);try{for(a.s();!(r=a.n()).done;){var i=r.value,o=Y[i.question_ordinal],c=i.answer_ordinal||[];if(o&&!c.includes(o))return X++,!1}}catch(e){a.e(e)}finally{a.f()}}return t===X})),Q=Object(f.useCallback)((function(e){M||(I(!0),G("question_answered",{question_ordinal:null==$?void 0:$.question_ordinal,answer:e}),setTimeout((function(){V(H,{answers:[].concat(o()(U),[{question_ordinal:null==$?void 0:$.question_ordinal,answer:e}])}),I(!1)}),300))}),[U,$,H,G,V,M]);(null==B?void 0:B.length)&&X>B.length&&((K=(z||[]).find((function(e){var t,n=S(e.trigger_condition||[]);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.answer_ordinal.includes(Y[r.question_ordinal]))return K=e,!0}}catch(e){n.e(e)}finally{n.f()}return!1})))||(K=z[0]));var Z=Object(f.useCallback)((function(){var e;G("follow_up_link_clicked",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}),G("survey_closed"),V(H,{hideSurvey:!0})}),[H,G,V,K]),J=Object(f.useCallback)((function(){G("survey_closed"),x(!1)}),[G]),ee=Object(f.useCallback)((function(){V(H,{hideSurvey:!0})}),[H,V]);if(Object(f.useEffect)((function(){var e;K&&!p&&(b(!0),G("completion_shown",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}))}),[p,G,K]),Object(d.a)((function(){x(!0)})),W||!B||!z||void 0===q)return null;if(K)return e.createElement(g.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},e.createElement(y.a,{dismissSurvey:J,ctaOnClick:Z,ctaText:K.follow_up_text,ctaURL:K.follow_up_url,title:K.completion_title},K.completion_text)));if(!A.includes(null==$?void 0:$.question_type))return null;var te={key:$.question_text,answerQuestion:Q,dismissSurvey:J,question:$.question_text,submitButtonText:(null==B?void 0:B.length)===X?Object(m.__)("Submit","google-site-kit"):Object(m.__)("Next","google-site-kit")};return e.createElement(g.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},"multi_select"===$.question_type&&e.createElement(k.a,a()({},te,{choices:$.question.answer_choice,minChoices:$.question.min_choices,maxChoices:$.question.max_choices})),"open_text"===$.question_type&&e.createElement(_.a,a()({},te,{subtitle:$.question.subtitle,placeholder:$.question.placeholder})),"rating"===$.question_type&&e.createElement(O.a,a()({},te,{choices:$.question.answer_choice})),"single_select"===$.question_type&&e.createElement(E.a,a()({},te,{choices:$.question.answer_choice})),!1===q&&1===(null==$?void 0:$.question_ordinal)&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(j.a,null))))}}).call(this,n(3))},181:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(13),o=n(64),c=function SurveyCompletion(t){var n=t.title,r=t.children,a=t.ctaText,c=t.ctaURL,s=t.ctaOnClick,l=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__completion"},e.createElement(o.a,{title:n,dismissSurvey:l}),e.createElement("div",{className:"googlesitekit-survey__body"},r),c&&a&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(i.Button,{href:c,onClick:s,target:"_blank"},a)))};c.propTypes={title:a.a.string.isRequired,children:a.a.node,ctaText:a.a.string,ctaURL:a.a.string,ctaOnClick:a.a.func,dismissSurvey:a.a.func.isRequired},c.defaultProps={title:"",children:null,ctaText:"",ctaURL:"",ctaOnClick:null},t.a=c}).call(this,n(3))},182:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(64),o=n(183),c=function SurveyQuestionRating(t){var n=t.question,r=t.choices,a=t.answerQuestion,c=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__question-rating"},e.createElement(i.a,{title:n,dismissSurvey:c}),e.createElement("div",{className:"googlesitekit-survey__body"},e.createElement("div",{className:"googlesitekit-survey__choices"},r.map((function(t,n){return e.createElement(o.a,{key:n,choice:t,answerQuestion:a})})))))};c.propTypes={question:a.a.string.isRequired,choices:a.a.arrayOf(a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string})).isRequired,answerQuestion:a.a.func.isRequired,dismissSurvey:a.a.func.isRequired},t.a=c}).call(this,n(3))},183:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(13),c=n(184),s=n(185),l=n(186),u=n(187),d=n(188),g={1:c.a,2:s.a,3:l.a,4:u.a,5:d.a},f=function SurveyQuestionRatingChoice(t){var n=t.choice,r=t.answerQuestion,a=Object(i.useCallback)((function(){"function"==typeof r&&r({answer:{answer_ordinal:n.answer_ordinal}})}),[r,n]),c=g[n.answer_ordinal];return c?e.createElement("div",{className:"googlesitekit-survey__choice"},e.createElement(o.Button,{icon:e.createElement(c,{width:30,height:30}),"aria-label":n.text,onClick:a}),e.createElement("p",null,n.text)):null};f.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string}).isRequired},t.a=f}).call(this,n(3))},184:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0,A=Object.values(C).filter((function(e){return e.selected})).length,R=d&&A===d,x=D||A1&&e.createElement(v.g,{persistent:!0},Object(p.sprintf)( +/* translators: %s: the number of answers. */ +Object(p.__)("Choose at least %s answers","google-site-kit"),u)),e.createElement(b.Button,{onClick:function(){var e=Object.values(C).filter((function(e){return e.selected})).map((function(e){var t=e.answer_ordinal,n=e.answer_text;return n?{answer_ordinal:t,answer_text:n}:{answer_ordinal:t}}));i({answer:e})},disabled:x},_)))};E.propTypes={question:u.a.string.isRequired,choices:u.a.arrayOf(u.a.shape({answer_ordinal:u.a.oneOfType([u.a.string,u.a.number]),text:u.a.string,write_in:u.a.bool})).isRequired,answerQuestion:u.a.func.isRequired,dismissSurvey:u.a.func.isRequired,minChoices:u.a.number,maxChoices:u.a.number,submitButtonText:u.a.string.isRequired},t.a=E}).call(this,n(3))},191:function(e,t,n){"use strict";(function(e){var r=n(6),a=n.n(r),i=n(14),o=n.n(i),c=n(0),s=n.n(c),l=n(2),u=n(13),d=n(64),g=n(192);function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t0,E=""===p||k&&""===y;return e.createElement("div",{className:"googlesitekit-single-select"},e.createElement(d.a,{title:n,dismissSurvey:i}),e.createElement("div",{className:"googlesitekit-survey__body"},_.map((function(t,n){return e.createElement(g.a,{key:n,value:p,setValue:b,writeIn:y,setWriteIn:O,choice:t})}))),e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(u.Button,{onClick:function(){var e=k?{answer_text:y}:{};a({answer:m({answer_ordinal:Number(p)},e)})},disabled:E},c)))};p.propTypes={question:s.a.string.isRequired,choices:s.a.arrayOf(s.a.shape({answer_ordinal:s.a.oneOfType([s.a.string,s.a.number]),text:s.a.string,write_in:s.a.bool})).isRequired,answerQuestion:s.a.func.isRequired,dismissSurvey:s.a.func.isRequired},t.a=p}).call(this,n(3))},192:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(1),c=n(13),s=n(10),l=n(60),u=n(102),d=function SurveyQuestionSingleSelectChoice(t){var n=t.value,r=t.setValue,a=t.writeIn,d=t.setWriteIn,g=t.choice,f=g.answer_ordinal,m=g.text,p=g.write_in,b=n===f,h="googlesitekit-survey__multi-select-".concat(f,"-").concat(m);return e.createElement("div",{className:"googlesitekit-single-select__choice"},e.createElement(c.Radio,{id:m.replace(/ /g,"-"),value:f,checked:b,name:m,onClick:function(){return r(f)}},m),p&&e.createElement(i.Fragment,null,e.createElement(l.a,null,e.createElement("label",{htmlFor:h},Object(o.sprintf)( +/* translators: %s: Option name */ +Object(o.__)("Text input for option %s","google-site-kit"),m))),e.createElement(s.r,null,e.createElement(s.h,{id:h,onChange:function(e){return d(e.target.value.slice(0,u.a))},value:a,disabled:!b}))))};d.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string,write_in:a.a.bool}),value:a.a.string.isRequired,setValue:a.a.func.isRequired,writeIn:a.a.string.isRequired,setWriteIn:a.a.func.isRequired},t.a=d}).call(this,n(3))},193:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SurveyTerms}));var r=n(1),a=n(72),i=n(4),o=n.n(i),c=n(15),s=n(20),l=o.a.useSelect;function SurveyTerms(){var t=l((function(e){return e(c.c).getGooglePrivacyPolicyURL()})),n=l((function(e){return e(c.c).getGoogleTermsURL()}));return e.createElement("p",{className:"googlesitekit-survey__terms"},Object(a.a)(Object(r.__)("By continuing, you agree to allow Google to use your answers and account info to improve services, per our Privacy & Terms.","google-site-kit"),{privacy:e.createElement(s.a,{href:t,external:!0}),terms:e.createElement(s.a,{href:n,external:!0})}))}}).call(this,n(3))},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(23),a=function(e){return r.e.includes(e)}},199:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(75),s=n.n(c),l=n(76),u=n.n(l),d=n(48),g=n.n(d),f=n(0),m=n.n(f),p=n(11),b=n.n(p),h=n(2),v=n(322),y=n(323);function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g()(e);if(t){var a=g()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return u()(this,n)}}var _=function(t){s()(Layout,t);var n=O(Layout);function Layout(){return a()(this,Layout),n.apply(this,arguments)}return o()(Layout,[{key:"render",value:function(){var t=this.props,n=t.header,r=t.footer,a=t.children,i=t.title,o=t.headerCTALabel,c=t.headerCTALink,s=t.footerCTALabel,l=t.footerCTALink,u=t.footerContent,d=t.className,g=t.fill,f=t.relative,m=t.rounded,p=void 0!==m&&m,h=t.transparent,O=void 0!==h&&h;return e.createElement("div",{className:b()("googlesitekit-layout",d,{"googlesitekit-layout--fill":g,"googlesitekit-layout--relative":f,"googlesitekit-layout--rounded":p,"googlesitekit-layout--transparent":O})},n&&e.createElement(v.a,{title:i,ctaLabel:o,ctaLink:c}),a,r&&e.createElement(y.a,{ctaLabel:s,ctaLink:l,footerContent:u}))}}]),Layout}(h.Component);_.propTypes={header:m.a.bool,footer:m.a.bool,children:m.a.node.isRequired,title:m.a.string,headerCTALabel:m.a.string,headerCTALink:m.a.string,footerCTALabel:m.a.string,footerCTALink:m.a.string,footerContent:m.a.node,className:m.a.string,fill:m.a.bool,relative:m.a.bool,rounded:m.a.bool,transparent:m.a.bool},_.defaultProps={header:!1,footer:!1,title:"",headerCTALabel:"",headerCTALink:"",footerCTALabel:"",footerCTALink:"",footerContent:null,className:"",fill:!1,relative:!1},t.a=_}).call(this,n(3))},20:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(120),g=n(1),f=n(2),m=Object(f.forwardRef)((function(t,n){var r,i=t["aria-label"],c=t.arrow,s=t.back,l=t.caps,f=t.children,m=t.className,p=t.danger,b=t.disabled,h=t.external,v=t.hideExternalIndicator,y=t.href,O=t.inverse,_=t.onClick,k=t.small,E=t.to,j=o()(t,["aria-label","arrow","back","caps","children","className","danger","disabled","external","hideExternalIndicator","href","inverse","onClick","small","to"]),S=y||E||!_?E?"ROUTER_LINK":h?"EXTERNAL_LINK":"LINK":b?"BUTTON_DISABLED":"BUTTON",w="BUTTON"===S||"BUTTON_DISABLED"===S?"button":"ROUTER_LINK"===S?d.b:"a",N=("EXTERNAL_LINK"===S&&(r=Object(g._x)("(opens in a new tab)","screen reader text","google-site-kit")),"BUTTON_DISABLED"===S&&(r=Object(g._x)("(disabled)","screen reader text","google-site-kit")),r?i?"".concat(i," ").concat(r):"string"==typeof f?"".concat(f," ").concat(r):void 0:i);return e.createElement(w,a()({"aria-label":N,className:u()("googlesitekit-cta-link",m,{"googlesitekit-cta-link--arrow":c,"googlesitekit-cta-link--external":h&&!v,"googlesitekit-cta-link--inverse":O,"googlesitekit-cta-link--back":s,"googlesitekit-cta-link--small":k,"googlesitekit-cta-link--caps":l,"googlesitekit-cta-link--danger":p,"googlesitekit-cta-link--disabled":b}),disabled:b,href:"LINK"!==S&&"EXTERNAL_LINK"!==S||b?void 0:y,onClick:_,rel:"EXTERNAL_LINK"===S?"noopener noreferrer":void 0,ref:n,target:"EXTERNAL_LINK"===S?"_blank":void 0,to:E},j),f)}));m.propTypes={arrow:s.a.bool,back:s.a.bool,caps:s.a.bool,children:s.a.node,className:s.a.string,danger:s.a.bool,disabled:s.a.bool,external:s.a.bool,hideExternalIndicator:s.a.bool,href:s.a.string,inverse:s.a.bool,onClick:s.a.func,small:s.a.bool,to:s.a.string},m.defaultProps={arrow:!1,back:!1,caps:!1,className:"",danger:!1,disabled:!1,external:!1,hideExternalIndicator:!1,href:"",inverse:!1,small:!1},t.a=m}).call(this,n(3))},202:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportError}));var r=n(6),a=n.n(r),i=n(0),o=n.n(i),c=n(313),s=n.n(c),l=n(2),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(17),p=n(58),b=n(144),h=n(78),v=n(82),y=n(119),O=n(20),_=n(15);function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;t1&&(n=Object(u.sprintf)( +/* translators: %s: module name */ +Object(u.__)("Data errors in %s","google-site-kit"),null==i?void 0:i.name)):n=Object(u.sprintf)( +/* translators: %s: module name */ +Object(u.__)("Data error in %s","google-site-kit"),null==i?void 0:i.name);var A=e.createElement(l.Fragment,null,T.map((function(t){var n,r=null==a||null===(n=a.data)||void 0===n?void 0:n.reconnectURL;return r?e.createElement(v.a,{key:t.message,message:t.message,reconnectURL:r}):e.createElement("p",{key:t.message},h.a.sanitize(t.message,{ALLOWED_TAGS:[]}))}))),R=Object(l.useCallback)((function(){g.forEach((function(e){var t=e.selectorData;N(t.storeName).invalidateResolution(t.name,t.args)}))}),[N,g]),x=c&&D;return e.createElement(y.a,{title:n,description:A,error:!0},e.createElement("div",{className:"googlesitekit-error-cta-wrapper"},x&&e.createElement(f.Button,{href:c,target:"_blank"},Object(u.__)("Request access","google-site-kit")),k?e.createElement(l.Fragment,null,e.createElement(f.Button,{onClick:R},Object(u.__)("Retry","google-site-kit")),e.createElement("span",{className:"googlesitekit-error-retry-text"},Object(u.__)("Retry didn’t work?","google-site-kit")," "),e.createElement(O.a,{href:w,external:!0},Object(u.__)("Get help","google-site-kit"))):e.createElement(O.a,{href:w,external:!0},Object(u.__)("Get help","google-site-kit"))))}ReportError.propTypes={moduleSlug:o.a.string.isRequired,error:o.a.oneOfType([o.a.arrayOf(o.a.object),o.a.object]).isRequired}}).call(this,n(3))},205:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return OptIn}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=n(72),f=n(1),m=n(4),p=n.n(m),b=n(13),h=n(12),v=n(32),y=n(20),O=n(19),_=p.a.useSelect,k=p.a.useDispatch;function OptIn(t){var n=t.id,r=void 0===n?"googlesitekit-opt-in":n,i=t.name,c=void 0===i?"optIn":i,s=t.className,l=t.trackEventCategory,m=_((function(e){return e(h.a).isTrackingEnabled()})),p=_((function(e){return e(h.a).isSavingTrackingEnabled()})),E=_((function(e){return e(h.a).getErrorForAction("setTrackingEnabled",[!m])})),j=k(h.a).setTrackingEnabled,S=Object(O.a)(),w=Object(d.useCallback)(function(){var e=o()(a.a.mark((function e(t){var n,r;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,j(!!t.target.checked);case 2:n=e.sent,r=n.response,n.error||(Object(v.a)(r.enabled),r.enabled&&Object(v.b)(l||S,"tracking_optin"));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[j,l,S]);return e.createElement("div",{className:u()("googlesitekit-opt-in",s)},e.createElement(b.Checkbox,{id:r,name:c,value:"1",checked:m,disabled:p,onChange:w,loading:void 0===m},e.createElement("span",null,Object(f.__)("Help us improve Site Kit by sharing anonymous usage data.","google-site-kit")," "),e.createElement("span",null,Object(g.a)(Object(f.__)("All collected data is treated in accordance with the Google Privacy Policy.","google-site-kit"),{a:e.createElement(y.a,{key:"link",href:"https://policies.google.com/privacy",external:!0})}))),(null==E?void 0:E.message)&&e.createElement("div",{className:"googlesitekit-error-text"},null==E?void 0:E.message))}OptIn.propTypes={id:s.a.string,name:s.a.string,className:s.a.string,trackEventCategory:s.a.string}}).call(this,n(3))},206:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return g})),n.d(t,"b",(function(){return m}));var r=n(18),a=n.n(r),i=n(71),o=n.n(i),c=n(220),s=n(267),l=n(268),u=n(269),d=n(221),g=o()((function(e){return{Widget:f(e)(c.a),WidgetRecoverableModules:f(e)(d.a),WidgetReportZero:f(e)(s.a),WidgetReportError:f(e)(l.a),WidgetNull:f(e)(u.a)}}));function f(t){return function(n){var r=function WithWidgetSlug(r){return e.createElement(n,a()({},r,{widgetSlug:t}))};return r.displayName="WithWidgetSlug",(n.displayName||n.name)&&(r.displayName+="(".concat(n.displayName||n.name,")")),r}}var m=function(t){var n=g(t);return function(t){var r=function DecoratedComponent(r){return e.createElement(t,a()({},r,n))};return r.displayName="WithWidgetComponentProps",(t.displayName||t.name)&&(r.displayName+="(".concat(t.displayName||t.name,")")),r}}}).call(this,n(3))},207:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"e",(function(){return c})),n.d(t,"a",(function(){return s}));var r=n(27);function a(e){return"string"==typeof e&&/^\w+$/.test(e)}function i(e){return e===r.c||a(e)}function o(e){return"string"==typeof e&&/^\d+$/.test(e)}function c(e){return e===r.d||o(e)}function s(e){return"string"==typeof e&&/^G-[a-zA-Z0-9]+$/.test(e)}},208:function(e,t,n){"use strict";(function(e){var r=n(14),a=n.n(r),i=n(0),o=n.n(i),c=n(11),s=n.n(c),l=n(496),u=n(1),d=n(2),g=n(4),f=n.n(g),m=n(247),p=n(271),b=n(272),h=n(12),v=n(10),y=n(276),O=n(282),_=n(284),k=n(117),E=n(56),j=n(93),S=n(20),w=n(15),N=f.a.useSelect,C=function Header(t){var n,r=t.children,i=t.subHeader,o=t.showNavigation,c=Object(k.a)("dashboardSharing"),g=!!Object(j.c)(),f=Object(E.a)(),C=N((function(e){return e(w.c).getAdminURL("googlesitekit-dashboard")})),T=N((function(e){return e(h.a).isAuthenticated()})),D=Object(l.a)({childList:!0}),A=a()(D,2),R=A[0],x=!!(null===(n=A[1].target)||void 0===n?void 0:n.childElementCount);return e.createElement(d.Fragment,null,e.createElement("header",{className:s()("googlesitekit-header",{"googlesitekit-header--has-subheader":x,"googlesitekit-header--has-navigation":o})},e.createElement(v.f,null,e.createElement(v.p,null,e.createElement(v.a,{smSize:1,mdSize:2,lgSize:4,className:"googlesitekit-header__logo",alignMiddle:!0},e.createElement(S.a,{"aria-label":Object(u.__)("Go to dashboard","google-site-kit"),className:"googlesitekit-header__logo-link",href:C},e.createElement(m.a,null))),e.createElement(v.a,{smSize:3,mdSize:6,lgSize:8,className:"googlesitekit-header__children",alignMiddle:!0},r,!T&&c&&g&&f&&e.createElement(_.a,null),T&&(!c||!f)&&e.createElement(p.a,null))))),e.createElement("div",{className:"googlesitekit-subheader",ref:R},i),o&&e.createElement(y.a,null),e.createElement(O.a,null),e.createElement(b.a,null))};C.displayName="Header",C.propTypes={children:o.a.node,subHeader:o.a.element,showNavigation:o.a.bool},C.defaultProps={children:null,subHeader:null},t.a=C}).call(this,n(3))},209:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return HelpMenu}));var r=n(14),a=n.n(r),i=n(0),o=n.n(i),c=n(251),s=n(2),l=n(74),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(290),p=n(130),b=n(8),h=n(162),v=n(17),y=n(19),O=n(15),_=g.a.useSelect;function HelpMenu(t){var n=t.children,r=Object(s.useState)(!1),i=a()(r,2),o=i[0],d=i[1],g=Object(s.useRef)(),k=Object(y.a)();Object(c.a)(g,(function(){return d(!1)})),Object(p.a)([l.c,l.e],g,(function(){return d(!1)}));var E=_((function(e){return e(v.a).isModuleActive("adsense")})),j=Object(s.useCallback)((function(){o||Object(b.z)("".concat(k,"_headerbar"),"open_helpmenu"),d(!o)}),[o,k]),S=Object(s.useCallback)((function(){d(!1)}),[]),w=_((function(e){return e(O.c).getDocumentationLinkURL("fix-common-issues")}));return e.createElement("div",{ref:g,className:"googlesitekit-dropdown-menu googlesitekit-dropdown-menu__icon-menu mdc-menu-surface--anchor"},e.createElement(f.Button,{"aria-controls":"googlesitekit-help-menu","aria-expanded":o,"aria-label":Object(u.__)("Help","google-site-kit"),"aria-haspopup":"menu",className:"googlesitekit-header__dropdown googlesitekit-border-radius-round googlesitekit-button-icon googlesitekit-help-menu__button mdc-button--dropdown",icon:e.createElement(m.a,{width:"20",height:"20"}),onClick:j,text:!0}),e.createElement(f.Menu,{className:"googlesitekit-width-auto",menuOpen:o,id:"googlesitekit-help-menu",onSelected:S},n,e.createElement(h.a,{gaEventLabel:"fix_common_issues",href:w},Object(u.__)("Fix common issues","google-site-kit")),e.createElement(h.a,{gaEventLabel:"documentation",href:"https://sitekit.withgoogle.com/documentation/"},Object(u.__)("Read help docs","google-site-kit")),e.createElement(h.a,{gaEventLabel:"support_forum",href:"https://wordpress.org/support/plugin/google-site-kit/"},Object(u.__)("Get support","google-site-kit")),E&&e.createElement(h.a,{gaEventLabel:"adsense_help",href:"https://support.google.com/adsense/"},Object(u.__)("Get help with AdSense","google-site-kit"))))}HelpMenu.propTypes={children:o.a.node}}).call(this,n(3))},220:function(e,t,n){"use strict";(function(e){var r=n(11),a=n.n(r),i=n(0),o=n.n(i),c=function Widget(t){var n=t.children,r=t.className,i=t.widgetSlug,o=t.noPadding,c=t.Header,s=t.Footer;return e.createElement("div",{className:a()("googlesitekit-widget","googlesitekit-widget--".concat(i),{"googlesitekit-widget--no-padding":o},{"googlesitekit-widget--with-header":c},r)},c&&e.createElement("div",{className:"googlesitekit-widget__header"},e.createElement(c,null)),e.createElement("div",{className:"googlesitekit-widget__body"},n),s&&e.createElement("div",{className:"googlesitekit-widget__footer"},e.createElement(s,null)))};c.defaultProps={children:void 0,noPadding:!1},c.propTypes={children:o.a.node,widgetSlug:o.a.string.isRequired,noPadding:o.a.bool,Header:o.a.elementType,Footer:o.a.elementType},t.a=c}).call(this,n(3))},221:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WidgetRecoverableModules}));var r=n(6),a=n.n(r),i=n(18),o=n.n(i),c=n(24),s=n.n(c),l=n(21),u=n.n(l),d=n(0),g=n.n(d),f=n(2),m=n(149),p=n(146);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function WidgetRecoverableModules(t){var n=t.widgetSlug,r=t.moduleSlugs,a=u()(t,["widgetSlug","moduleSlugs"]),i=Object(f.useMemo)((function(){return{moduleSlug:s()(r).sort().join(","),moduleSlugs:r}}),[r]);return Object(m.a)(n,p.a,i),e.createElement(p.a,o()({moduleSlugs:r},a))}WidgetRecoverableModules.propTypes=function(e){for(var t=1;t=0;)3===e[n]?(t-=3,e[n]=4):6===e[n]&&(t-=6,e[n]=8),n--;return[e,t]}function d(e,t){return(Array.isArray(t.width)?t.width:[t.width]).map((function(t){return{counter:e+c.c[t],width:t}}))}function g(e,t){var n=[],r=[];if(!(null==e?void 0:e.length))return{columnWidths:n,rowIndexes:r};var i=0,o=0,s=function(e,t){return e.counter-t.counter},g=function(e,t){var n=e.counter;return t.counter-n},f=function(e){return e.counter<=12};if(e.forEach((function(m,p){if(l(t[m.slug]))return n.push(0),void r.push(o);var b=d(i,m),h=function(e,t,n){for(;++e12){if(i-=c.c[v],r[p]++,9===i){var y=u(n,i),O=a()(y,2);n=O[0],i=O[1]}i=c.c[v],o++}else 12===i&&(i=0,o++);n.push(c.c[v])})),9===i){var m=u(n,i),p=a()(m,2);n=p[0],i=p[1]}return{columnWidths:n,rowIndexes:r}}var f=n(134),m=n.n(f);function p(e,t,n){var r=n.columnWidths,a=n.rowIndexes,i=[],s=o()(r);if(!(null==e?void 0:e.length))return{gridColumnWidths:s,overrideComponents:i};var l=null,u=-1,d=[];if(function(e,t){for(var n={},r=0;r1)}(e,t)){var g=Array.from({length:e.length-1}).fill(0);return{overrideComponents:[t[e[0].slug]],gridColumnWidths:[12].concat(o()(g))}}return e.forEach((function(n,o){var c,g,f,p,b;if(i.push(null),l=t[n.slug],u=a[o],l)if(g=l,f=t[null===(c=e[o+1])||void 0===c?void 0:c.slug],p=u,b=a[o+1],p===b&&m()(g,f))d.push(r[o]),s[o]=0;else if(d.length>0){d.push(r[o]);var h=d.reduce((function(e,t){return e+t}),0);i[o]=l,s[o]=h,d=[]}})),{gridColumnWidths:s,overrideComponents:i}}var b=n(206);function h(e){return(Array.isArray(e)?e:[e]).filter((function(e){return"string"==typeof e&&e.length>0}))}},23:function(e,t,n){"use strict";n.d(t,"j",(function(){return r})),n.d(t,"h",(function(){return a})),n.d(t,"k",(function(){return i})),n.d(t,"i",(function(){return o})),n.d(t,"m",(function(){return c})),n.d(t,"p",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"o",(function(){return u})),n.d(t,"g",(function(){return d})),n.d(t,"n",(function(){return g})),n.d(t,"q",(function(){return f})),n.d(t,"l",(function(){return m})),n.d(t,"d",(function(){return p})),n.d(t,"a",(function(){return b})),n.d(t,"c",(function(){return h})),n.d(t,"b",(function(){return v})),n.d(t,"e",(function(){return y}));var r="mainDashboard",a="entityDashboard",i="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",s="userInput",l="activation",u="splash",d="adminBar",g="settings",f="wpDashboard",m="moduleSetup",p="traffic",b="content",h="speed",v="monetization",y=[r,a,i,o,s,u,g,m]},247:function(e,t,n){"use strict";(function(e){var r=n(1),a=n(106),i=n(248),o=n(60);t.a=function Logo(){return e.createElement("div",{className:"googlesitekit-logo","aria-hidden":"true"},e.createElement(a.a,{className:"googlesitekit-logo__logo-g",height:"34",width:"32"}),e.createElement(i.a,{className:"googlesitekit-logo__logo-sitekit",height:"26",width:"99"}),e.createElement(o.a,null,Object(r.__)("Site Kit by Google Logo","google-site-kit")))}}).call(this,n(3))},248:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nSign in to connect more services and control sharing access.","google-site-kit"),{strong:e.createElement("strong",null)}):Object(s.a)(Object(l.__)("You can see stats from all shared Google services, but you can't make any changes. Learn more","google-site-kit"),{a:e.createElement(h.a,{href:i,external:!0,onClick:_,"aria-label":Object(l.__)("Learn more about dashboard sharing","google-site-kit")})});return e.createElement("li",{className:"googlesitekit-view-only-menu__list-item googlesitekit-view-only-menu__description"},e.createElement("p",null,k),n&&e.createElement(g.Button,{onClick:d},Object(l.__)("Sign in with Google","google-site-kit")))}}).call(this,n(3))},287:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SharedServices}));var r=n(1),a=n(4),i=n.n(a),o=n(12),c=n(288),s=i.a.useSelect;function SharedServices(){var t=s((function(e){return e(o.a).getViewableModules()}));return void 0===t?null:e.createElement("li",{className:"googlesitekit-view-only-menu__list-item"},e.createElement("h4",null,Object(r.__)("Shared services","google-site-kit")),e.createElement("ul",null,t.map((function(t){return e.createElement(c.a,{key:t,module:t})}))))}}).call(this,n(3))},288:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Service}));var r=n(0),a=n.n(r),i=n(72),o=n(1),c=n(4),s=n.n(c),l=n(17),u=n(12),d=s.a.useSelect;function Service(t){var n=t.module,r=d((function(e){return e(u.a).hasCapability(u.c)})),a=d((function(e){return e(l.a).getModule(n)})),c=a.name,s=a.owner,g=d((function(e){return e(l.a).getModuleIcon(n)}));return e.createElement("li",{className:"googlesitekit-view-only-menu__service"},e.createElement("span",{className:"googlesitekit-view-only-menu__service--icon"},e.createElement(g,{height:26})),e.createElement("span",{className:"googlesitekit-view-only-menu__service--name"},c),r&&(null==s?void 0:s.login)&&e.createElement("span",{className:"googlesitekit-view-only-menu__service--owner"},Object(i.a)(Object(o.sprintf)( +/* translators: %s: module owner Google Account email address */ +Object(o.__)("Shared by %s","google-site-kit"),s.login),{strong:e.createElement("strong",{title:s.login})})))}Service.propTypes={module:a.a.string.isRequired}}).call(this,n(3))},289:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Tracking}));var r=n(72),a=n(1),i=n(205),o=n(19);function Tracking(){var t=Object(o.a)();return e.createElement("li",{className:"googlesitekit-view-only-menu__list-item"},e.createElement("p",null,Object(r.a)(Object(a.__)("Thanks for using Site Kit!
Help us make it even better.","google-site-kit"),{br:e.createElement("br",null)})),e.createElement(i.a,{trackEventCategory:"".concat(t,"_headerbar_viewonly")}))}}).call(this,n(3))},290:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0){n.next=7;break}if(!(i=document.getElementById("wp-admin-bar-menu-toggle"))){n.next=7;break}return i.click(),n.next=7,new Promise((function(e){setTimeout(e,0)}));case 7:"#adminmenu [href*='page=googlesitekit-dashboard']",(o=!!document.querySelector("".concat("#adminmenu [href*='page=googlesitekit-dashboard']","[aria-haspopup=true]")))&&document.querySelector("#adminmenu [href*='page=googlesitekit-dashboard']").click(),t(e,{isTooltipVisible:!0,rehideAdminMenu:!r,rehideAdminSubMenu:o});case 11:case"end":return n.stop()}}),n)}))),[t,e])}},311:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdminMenuTooltip}));var r=n(6),a=n.n(r),i=n(18),o=n.n(i),c=n(5),s=n.n(c),l=n(16),u=n.n(l),d=n(21),g=n.n(d),f=n(2),m=n(0),p=n.n(m),b=n(4),h=n.n(b),v=n(292),y=n(33),O=n(223);function _(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function k(e){for(var t=1;t0&&(null===(t=document.getElementById("wp-admin-bar-menu-toggle"))||void 0===t||t.click()),d&&document.querySelector("body").click(),e.next=4,null==n?void 0:n();case 4:i(r,void 0);case 5:case"end":return e.stop()}}),e)}))),[n,l,d,i,r]);return e.createElement(v.a,o()({slug:"ga4-activation-banner-admin-menu-tooltip",onDismiss:m},a))}AdminMenuTooltip.propTypes=k(k({},v.a.propTypes),{},{target:p.a.string,tooltipStateKey:p.a.string.isRequired}),AdminMenuTooltip.defaultProps={target:'#adminmenu [href*="page=googlesitekit-settings"]'}}).call(this,n(3))},32:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return y})),n.d(t,"b",(function(){return v}));var r=n(86),a=e._googlesitekitTrackingData||{},i=a.activeModules,o=void 0===i?[]:i,c=a.isSiteKitScreen,s=a.trackingEnabled,l=a.trackingID,u=a.referenceSiteURL,d=a.userIDHash,g=a.isAuthenticated,f={activeModules:o,trackingEnabled:s,trackingID:l,referenceSiteURL:u,userIDHash:d,isSiteKitScreen:c,userRoles:a.userRoles,isAuthenticated:g,pluginVersion:"1.89.0"},m=Object(r.a)(f),p=m.enableTracking,b=m.disableTracking,h=(m.isTrackingEnabled,m.initializeSnippet),v=m.trackEvent;function y(e){e?p():b()}c&&s&&h()}).call(this,n(22))},322:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(75),s=n.n(c),l=n(76),u=n.n(l),d=n(48),g=n.n(d),f=n(0),m=n.n(f),p=n(2),b=n(10),h=n(20);function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g()(e);if(t){var a=g()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return u()(this,n)}}var y=function(t){s()(LayoutHeader,t);var n=v(LayoutHeader);function LayoutHeader(){return a()(this,LayoutHeader),n.apply(this,arguments)}return o()(LayoutHeader,[{key:"render",value:function(){var t=this.props,n=t.title,r=t.ctaLabel,a=t.ctaLink,i=a?{alignMiddle:!0,smSize:4,lgSize:6}:{alignMiddle:!0,smSize:4,mdSize:8,lgSize:12};return e.createElement("header",{className:"googlesitekit-layout__header"},e.createElement(b.f,null,e.createElement(b.p,null,n&&e.createElement(b.a,i,e.createElement("h3",{className:"googlesitekit-subheading-1 googlesitekit-layout__header-title"},n)),a&&e.createElement(b.a,{alignMiddle:!0,mdAlignRight:!0,smSize:4,lgSize:6},e.createElement(h.a,{href:a,external:!0},r)))))}}]),LayoutHeader}(p.Component);y.propTypes={title:m.a.string,ctaLabel:m.a.string,ctaLink:m.a.string},y.defaultProps={title:"",ctaLabel:"",ctaLink:""},t.a=y}).call(this,n(3))},323:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(75),s=n.n(c),l=n(76),u=n.n(l),d=n(48),g=n.n(d),f=n(0),m=n.n(f),p=n(2),b=n(10),h=n(105);function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g()(e);if(t){var a=g()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return u()(this,n)}}var y=function(t){s()(LayoutFooter,t);var n=v(LayoutFooter);function LayoutFooter(){return a()(this,LayoutFooter),n.apply(this,arguments)}return o()(LayoutFooter,[{key:"render",value:function(){var t=this.props,n=t.ctaLabel,r=t.ctaLink,a=t.footerContent;return e.createElement("footer",{className:"googlesitekit-layout__footer"},e.createElement(b.f,null,e.createElement(b.p,null,e.createElement(b.a,{size:12},r&&n&&e.createElement(h.a,{className:"googlesitekit-data-block__source",name:n,href:r,external:!0}),a))))}}]),LayoutFooter}(p.Component);y.propTypes={ctaLabel:m.a.string,ctaLink:m.a.string},t.a=y}).call(this,n(3))},326:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(8),a=n(38);function i(e){var t=Object(a.a)(e);return t1&&void 0!==arguments[1]?arguments[1]:i;return t instanceof Set&&t.has(e)}}).call(this,n(22))},43:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(37),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var n=e.split("-");return 3===n.length&&Object(r.a)(new Date(e))}},434:function(e,t,n){"use strict";n.d(t,"a",(function(){return ScrollEffect}));var r=n(491);function ScrollEffect(){return Object(r.a)(),null}},450:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ActivationBanner}));var r=n(24),a=n.n(r),i=n(5),o=n.n(i),c=n(16),s=n.n(c),l=n(14),u=n.n(l),d=n(933),g=n(2),f=n(4),m=n.n(f),p=n(482),b=n(485),h=n(487),v=n(139),y=n(131),O=n(17),_=n(12),k=n(9),E=n(27),j=n(35),S=n(46),w=m.a.useSelect,N=m.a.useDispatch,C=m.a.useRegistry;function ActivationBanner(){var t=Object(g.useState)(null),n=u()(t,2),r=n[0],i=n[1],c=Object(g.useState)(),l=u()(c,2),f=l[0],m=l[1],T=Object(d.a)(),D=C(),A=w((function(e){return e(O.a).isModuleConnected("analytics")})),R=w((function(e){return e(O.a).isModuleConnected("analytics-4")})),x=w((function(e){return e(_.a).hasScope(k.c)})),L=w((function(e){return e(j.a).getValue(y.e,"returnToSetupStep")})),P=w((function(e){return e(k.f).getAccountID()})),M=w((function(e){return[e(E.b).getErrorForSelector("getProperties",[P]),e(k.f).getErrorForSelector("getAccounts"),e(E.b).getErrorForSelector("getSettings")].filter((function(e){return void 0!==e}))})),I=N(),z=I(j.a).setValues;Object(g.useEffect)((function(){x&&L&&(i(y.c),z(y.e,{returnToSetupStep:!1}))}),[x,D,L,z]),Object(g.useEffect)((function(){M.length>0&&i(y.b)}),[M.length]);var B=Object(g.useCallback)(s()(o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r!==y.b){e.next=5;break}if(!(M.length>0)){e.next=4;break}return e.next=4,Promise.all([I(E.b).clearError("getProperties",[P]),I(E.b).invalidateResolution("getProperties",[P]),I(k.f).clearError("getAccounts",[]),I(k.f).invalidateResolution("getAccounts",[]),I(E.b).clearError("getSettings",[]),I(E.b).invalidateResolution("getSettings",[])]);case 4:i(y.c);case 5:return L||r!==y.c||i(y.d),e.abrupt("return",{dismissOnCTAClick:!1});case 7:case"end":return e.stop()}}),e)}))),[r,L,M.length,I,P]);Object(g.useEffect)((function(){s()(o.a.mark((function e(){var t,n;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T(Object(S.b)("notification::dismissed::ga4-activation-banner"));case 2:t=e.sent,n=t.cacheHit,m(n);case 5:case"end":return e.stop()}}),e)})))()})),Object(g.useEffect)((function(){void 0!==f&&null===r&&A&&!R&&i(y.b)}),[R,r,A,f]);var F=M.length>0&&M.reduce((function(e,t){return e.some((function(e){return e.code===t.code&&e.message===t.message}))?e:[].concat(a()(e),[t])}),[]).map((function(t){return e.createElement(v.a,{key:t.code,error:t})}));switch(r){case y.b:return e.createElement(p.a,{isDismissed:f,onSubmitSuccess:B},F);case y.c:return e.createElement(b.a,{onSubmitSuccess:B});case y.d:return e.createElement(h.a,null);default:return null}}}).call(this,n(3))},46:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return h})),n.d(t,"d",(function(){return v})),n.d(t,"a",(function(){return y})),n.d(t,"c",(function(){return O}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=(n(24),n(8));function s(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==b[2]?b[2]:{},o=i.ttl,s=void 0===o?c.b:o,l=i.timestamp,u=void 0===l?Math.round(Date.now()/1e3):l,g=i.isError,f=void 0!==g&&g,t.next=3,p();case 3:if(!(m=t.sent)){t.next=14;break}return t.prev=5,m.setItem("".concat(d).concat(n),JSON.stringify({timestamp:u,ttl:s,value:r,isError:f})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(e,n){return t.apply(this,arguments)}}(),y=function(){var t=o()(a.a.mark((function t(n){var r;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p();case 2:if(!(r=t.sent)){t.next=13;break}return t.prev=4,r.removeItem("".concat(d).concat(n)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(e){return t.apply(this,arguments)}}(),O=function(){var t=o()(a.a.mark((function t(){var n,r,i,o;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p();case 2:if(!(n=t.sent)){t.next=14;break}for(t.prev=4,r=[],i=0;iLearn more","google-site-kit"),{a:e.createElement(j.a,{"aria-label":Object(o.__)("Learn more about dashboard sharing","google-site-kit"),href:x,external:!0})}),D&&Object(o.__)("Warning: Resetting these permissions will remove view-only access for all users. Are you sure you want to reset all Dashboard Sharing permissions?","google-site-kit")))),T&&e.createElement("div",{className:"googlesitekit-dialog__main"},e.createElement(S.a,null))),e.createElement(k.e,{className:"googlesitekit-dialog__footer"},e.createElement(w.a,{closeDialog:q,openResetDialog:B}))))}}).call(this,n(3))},467:function(e,t,n){"use strict";(function(e,r){n.d(t,"a",(function(){return DashboardSharingSettings}));var a=n(11),i=n.n(a),o=n(1),c=n(4),s=n.n(c),l=n(468),u=n(17),d=n(15),g=n(12);function f(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nManaged by %s","google-site-kit"),i),{span:e.createElement("span",null),strong:e.createElement("strong",null)}),e.createElement(b.Tooltip,{title:P?Object(l.sprintf)( +/* translators: %s: name of the user who manages the module. */ +Object(l.__)("%s has connected this and given managing permissions to all admins. You can change who can view this on the dashboard.","google-site-kit"),i):Object(l.sprintf)( +/* translators: %s: name of the user who manages the module. */ +Object(l.__)("Contact %s to change who can manage view access for this module.","google-site-kit"),i)},e.createElement("span",{className:"googlesitekit-dashboard-sharing-settings__tooltip-icon"},e.createElement(u.a,{icon:d.a,size:18}))))))}Module.propTypes={moduleSlug:o.a.string.isRequired,moduleName:o.a.string.isRequired,ownerUsername:o.a.string}}).call(this,n(3))},469:function(e,t,n){"use strict";(function(e){var r=n(24),a=n.n(r),i=n(0),o=n.n(i),c=n(11),s=n.n(c),l=n(1),u=n(74),d=n(2),g=n(4),f=n.n(g),m=n(13),p=n(20),b=n(298),h=n(388),v=n(19),y=n(130),O=n(8),_=n(17),k=n(33),E=n(111),j=f.a.useSelect,S=f.a.useDispatch,w=Object(l.__)("All","google-site-kit"),N=Object(d.forwardRef)((function(t,n){var r=t.moduleSlug,i=t.isLocked,o=void 0!==i&&i,c=Object(v.a)(),g=Object(d.useRef)(),f=S(_.a).setSharedRoles,N=S(k.b).setValue,C=j((function(e){return e(_.a).getShareableRoles()})),T=j((function(e){return e(_.a).getSharedRoles(r)})),D=j((function(e){return e(k.b).getValue(E.a)}))===r;Object(y.a)([u.c],n,(function(){D&&N(E.a,void 0)}));var A=j((function(e){return e(_.a).haveModuleSharingSettingsChanged(r,"sharedRoles")})),R=Object(d.useCallback)((function(){D?(N(E.a,void 0),A&&Object(O.z)("".concat(c,"_sharing"),"change_shared_roles",r)):N(E.a,r)}),[D,A,r,N,c]);Object(d.useEffect)((function(){g.current&&(D?g.current.firstChild.focus():g.current.focus())}),[D]);var x=Object(d.useCallback)((function(e){var t,n=e.type,i=e.target,o=e.keyCode;if("keydown"!==n||o===u.b){var c,s=i.closest(".mdc-chip"),l=null==s||null===(t=s.dataset)||void 0===t?void 0:t.chipId;if(l)c="all"===l?(null==T?void 0:T.length)===(null==C?void 0:C.length)?[]:C.map((function(e){return e.id})):null===T?[l]:T.includes(l)?T.filter((function(e){return e!==l})):[].concat(a()(T),[l]),f(r,c)}}),[r,f,T,C]);return C?e.createElement("div",{className:s()("googlesitekit-user-role-select",{"googlesitekit-user-role-select--open":D})},!D&&e.createElement(m.Button,{"aria-label":Object(l.__)("Edit roles","google-site-kit"),className:"googlesitekit-user-role-select__button",onClick:R,icon:e.createElement(b.a,{width:23,height:23}),tabIndex:o?-1:void 0,ref:g}),!D&&(null==T?void 0:T.length)>0&&e.createElement("span",{className:"googlesitekit-user-role-select__current-roles"},(null==C?void 0:C.reduce((function(e,t){return T.includes(t.id)&&e.push(t.displayName),e}),[])).join(", ")),!D&&(!T||0===(null==T?void 0:T.length))&&e.createElement("span",{className:"googlesitekit-user-role-select__add-roles"},e.createElement(p.a,{onClick:R,tabIndex:o?-1:void 0},Object(l.__)("Add roles","google-site-kit"))),D&&e.createElement(d.Fragment,null,e.createElement("div",{className:"googlesitekit-user-role-select__chipset",ref:g},e.createElement(m.Chip,{id:"all",label:w,onClick:x,onKeyDown:x,selected:(null==T?void 0:T.length)===(null==C?void 0:C.length),className:"googlesitekit-user-role-select__chip--all"}),C.map((function(t,n){var r=t.id,a=t.displayName;return e.createElement(m.Chip,{key:n,id:r,label:a,onClick:x,onKeyDown:x,selected:null==T?void 0:T.includes(r)})}))),e.createElement(m.Button,{"aria-label":Object(l.__)("Done editing roles","google-site-kit"),title:Object(l.__)("Done","google-site-kit"),className:"googlesitekit-user-role-select__button",onClick:R,icon:e.createElement(h.a,{width:18,height:18}),tabIndex:o?-1:void 0}))):null}));N.propTypes={moduleSlug:o.a.string.isRequired,isLocked:o.a.bool},t.a=N}).call(this,n(3))},470:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Footer}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=n(14),s=n.n(c),l=n(0),u=n.n(l),d=n(1),g=n(2),f=n(4),m=n.n(f),p=n(13),b=n(17),h=n(33),v=n(111),y=n(19),O=n(8),_=n(20),k=n(471),E=n(132),j=n(82),S=m.a.useSelect,w=m.a.useDispatch;function Footer(t){var n=t.closeDialog,r=t.openResetDialog,i=Object(y.a)(),c=Object(g.useState)(null),l=s()(c,2),u=l[0],f=l[1],m=Object(g.useState)(!1),N=s()(m,2),C=N[0],T=N[1],D=S((function(e){return e(b.a).canSubmitSharingChanges()})),A=S((function(e){return e(b.a).isDoingSubmitSharingChanges()})),R=S((function(e){return e(b.a).haveSharingSettingsExpanded("management")})),x=S((function(e){return e(b.a).haveSharingSettingsExpanded("sharedRoles")})),L=S((function(e){return e(b.a).haveSharingSettingsUpdated()})),P=S((function(e){return!!e(h.b).getValue(v.d)})),M=S((function(e){return!!e(h.b).getValue(v.c)})),I=w(b.a),z=I.resetSharingSettings,B=I.saveSharingSettings,F=w(h.b).setValue,q=Object(g.useCallback)(o()(a.a.mark((function e(){var t,r;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(null),e.next=3,B();case 3:if(t=e.sent,!(r=t.error)){e.next=8;break}return f(r.message),e.abrupt("return");case 8:Object(O.z)("".concat(i,"_sharing"),"settings_confirm"),F(v.a,void 0),n();case 11:case"end":return e.stop()}}),e)}))),[i,B,F,n]),H=Object(g.useCallback)(o()(a.a.mark((function e(){var t,r;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(null),T(!0),e.next=4,z();case 4:if(t=e.sent,!(r=t.error)){e.next=9;break}return f(r.message),e.abrupt("return");case 9:T(!1),n();case 11:case"end":return e.stop()}}),e)}))),[n,z]),W=Object(g.useCallback)((function(){Object(O.z)("".concat(i,"_sharing"),"settings_cancel"),n()}),[n,i]),U=u||R||x;return e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer"},U&&e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-notice"},u&&e.createElement(j.a,{message:u}),!u&&e.createElement(k.a,null)),e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-actions"},L&&P&&!U&&e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-actions-left"},e.createElement(_.a,{onClick:r,danger:!0},Object(d.__)("Reset sharing permissions","google-site-kit"))),e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-actions-right"},e.createElement(_.a,{onClick:W},Object(d.__)("Cancel","google-site-kit")),P&&e.createElement(p.Button,{onClick:q,disabled:A||!D},Object(d.__)("Apply","google-site-kit"),A&&e.createElement(E.a,{isSaving:A})),M&&e.createElement(p.Button,{onClick:H,disabled:C,danger:!0},Object(d.__)("Reset","google-site-kit"),C&&e.createElement(E.a,{isSaving:C})))))}Footer.propTypes={closeDialog:u.a.func.isRequired}}).call(this,n(3))},471:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Notice}));var r=n(1),a=n(72),i=n(4),o=n.n(i),c=n(17),s=o.a.useSelect;function Notice(){var t=s((function(e){return e(c.a).canSubmitSharingChanges()})),n=s((function(e){return e(c.a).haveSharingSettingsExpanded("management")})),i=s((function(e){return e(c.a).haveSharingSettingsExpanded("sharedRoles")}));return e.createElement("p",{className:"googlesitekit-dashboard-sharing-settings__notice"},n&&t&&Object(a.a)(Object(r.__)("By clicking Apply, you will give other authenticated admins of your site permission to manage view-only access to Site Kit Dashboard data from the chosen Google service.","google-site-kit"),{span:e.createElement("span",null),strong:e.createElement("strong",null)}),!n&&t&&i&&Object(a.a)(Object(r.__)("By clicking Apply, you’re granting the selected roles view-only access to data from the Google services you’ve connected via your account.","google-site-kit"),{span:e.createElement("span",null),strong:e.createElement("strong",null)}))}}).call(this,n(3))},472:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WidgetAreaRenderer}));var r=n(14),a=n.n(r),i=n(6),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(398),g=n(2),f=n(4),m=n.n(f),p=n(229),b=n(129),h=n(50),v=n(33),y=n(10),O=n(49),_=n(155),k=n(473),E=n(474),j=n(56),S=n(12),w=m.a.useSelect;function N(e){var t,n=(t={},o()(t,O.d,48),o()(t,O.a,48),o()(t,O.c,32),o()(t,O.b,32),t)[e],r=Math.abs(Object(b.b)(e)+n);return"-".concat(r,"px -").concat(n,"px -").concat(n,"px -").concat(n,"px")}function WidgetAreaRenderer(t){var n=t.slug,r=t.contextID,i=Object(j.a)(),c=w((function(e){return i?e(S.a).getViewableModules():null})),s=Object(O.e)(),l=Object(g.useRef)(),f=Object(d.a)(l,{rootMargin:N(s),threshold:0}),m=w((function(e){return e(h.a).getWidgetArea(n)})),b=w((function(e){return e(h.a).getWidgets(n,{modules:c||void 0})})),C=w((function(e){return e(h.a).getWidgetStates()})),T=w((function(e){return e(h.a).isWidgetAreaActive(n,{modules:c||void 0})})),D=w((function(e){return e(v.b).getValue(v.a)})),A=Object(g.useState)({key:"WidgetAreaRenderer-".concat(n),value:D?D===r:!!(null==f?void 0:f.intersectionRatio)}),R=a()(A,2),x=R[0],L=R[1];if(Object(g.useEffect)((function(){L({key:"WidgetAreaRenderer-".concat(n),value:D?D===r:!!(null==f?void 0:f.intersectionRatio)})}),[f,n,D,r]),void 0===c)return null;var P,M=Object(p.d)(b,C),I=M.columnWidths,z=M.rowIndexes,B=Object(p.b)(b,C,{columnWidths:I,rowIndexes:z}),F=B.gridColumnWidths,q=B.overrideComponents,H=b.map((function(t,n){return e.createElement(E.a,{key:"".concat(t.slug,"-wrapper"),gridColumnWidth:F[n]},e.createElement(k.a,{OverrideComponent:q[n]?function(){var t=q[n],r=t.Component,a=t.metadata;return e.createElement(r,a)}:void 0,slug:t.slug}))})),W=m.Icon,U=m.title,V=m.style,G=m.subtitle;return T?e.createElement(_.a,{value:x},e.createElement(y.f,{className:u()("googlesitekit-widget-area","googlesitekit-widget-area--".concat(n),"googlesitekit-widget-area--".concat(V)),ref:l},e.createElement(y.p,null,e.createElement(y.a,{className:"googlesitekit-widget-area-header",size:12},W&&e.createElement(W,{width:33,height:33}),U&&e.createElement("h3",{className:"googlesitekit-widget-area-header__title googlesitekit-heading-3"},U),G&&e.createElement("h4",{className:"googlesitekit-widget-area-header__subtitle"},G))),e.createElement("div",{className:"googlesitekit-widget-area-widgets"},e.createElement(y.p,null,V===h.b.BOXES&&H,V===h.b.COMPOSITE&&e.createElement(y.a,{size:12},e.createElement(y.f,null,e.createElement(y.p,null,H))))))):e.createElement(y.f,{className:u()(p.a,"googlesitekit-widget-area",(P={},o()(P,"googlesitekit-widget-area--".concat(n),!!n),o()(P,"googlesitekit-widget-area--".concat(V),!!V),P)),ref:l},H)}WidgetAreaRenderer.propTypes={slug:s.a.string.isRequired,contextID:s.a.string}}).call(this,n(3))},473:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(427),o=n.n(i),c=n(2),s=n(4),l=n.n(s),u=n(50),d=n(17),g=n(220),f=n(221),m=n(229),p=n(133),b=n(56),h=n(117),v=l.a.useSelect,y=function WidgetRenderer(t){var n=t.slug,r=t.OverrideComponent,a=Object(h.a)("dashboardSharing"),i=v((function(e){return e(u.a).getWidget(n)})),s=Object(m.c)(n),l=s.Widget,y=s.WidgetNull,O=v((function(e){return a&&e(d.a).getRecoverableModules()})),_=Object(b.a)(),k=Object(c.useMemo)((function(){return i&&O&&o()(i.modules,Object.keys(O))}),[O,i]);if(!i)return e.createElement(y,null);var E=i.Component,j=i.wrapWidget,S=e.createElement(E,s);return _&&(null==k?void 0:k.length)&&(S=e.createElement(f.a,{widgetSlug:n,moduleSlugs:k})),r?S=e.createElement(c.Fragment,null,e.createElement(g.a,{widgetSlug:"overridden"},e.createElement(r,null)),e.createElement("div",{className:p.a},S)):j&&(S=e.createElement(l,null,S)),S};y.propTypes={slug:a.a.string.isRequired,OverrideComponent:a.a.elementType},t.a=y}).call(this,n(3))},474:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(133),o=n(10),c=function WidgetCellWrapper(t){var n=t.gridColumnWidth,r=t.children;return 0===n?e.createElement("div",{className:i.a},r):n<6?e.createElement(o.a,{lgSize:n,mdSize:4,smSize:2},r):n<8?e.createElement(o.a,{lgSize:n,mdSize:8},r):e.createElement(o.a,{size:n},r)};c.propTypes={gridColumnWidth:a.a.number.isRequired,children:a.a.element.isRequired},t.a=c}).call(this,n(3))},475:function(e,t,n){"use strict";(function(e){var r=n(14),a=n.n(r),i=n(97),o=n(410),c=n(203),s=n(2),l=n(1),u=n(4),d=n.n(u),g=n(13),f=n(60),m=n(476),p=n(477),b=n(478),h=n(15),v=n(40),y=n(8),O=n(93),_=n(19),k=d.a.useSelect,E=d.a.useDispatch;t.a=function EntitySearchInput(){var t=Object(c.a)(EntitySearchInput,"EntitySearchInput"),n=Object(s.useState)(!1),r=a()(n,2),u=r[0],d=r[1],j=Object(s.useState)(!1),S=a()(j,2),w=S[0],N=S[1],C=Object(s.useState)(!1),T=a()(C,2),D=T[0],A=T[1],R=Object(_.a)(),x=Object(O.c)(),L=Object(s.useRef)(),P=Object(s.useCallback)((function(){Object(y.z)("".concat(R,"_headerbar"),"open_urlsearch"),d(!0)}),[R]),M=Object(s.useCallback)((function(){Object(y.z)("".concat(R,"_headerbar"),"close_urlsearch"),d(!1)}),[R]),I=Object(s.useState)({}),z=a()(I,2),B=z[0],F=z[1],q=k((function(e){return(null==B?void 0:B.url)?e(h.c).getAdminURL("googlesitekit-dashboard",{permaLink:B.url}):null})),H=E(v.a).navigateTo;return Object(s.useEffect)((function(){q&&Object(y.z)("".concat(R,"_headerbar_urlsearch"),"open_urldetails").finally((function(){H(q)}))}),[q,H,R]),Object(i.a)((function(){x===O.a&&d(!0)})),Object(o.a)((function(){var e;u||(null==L||null===(e=L.current)||void 0===e||e.focus())}),[u]),u?e.createElement("div",{className:"googlesitekit-entity-search googlesitekit-entity-search--is-open"},e.createElement(f.a,null,e.createElement("label",{htmlFor:t},Object(l.__)("Page/URL Search","google-site-kit"))),e.createElement(b.a,{id:t,match:B,setIsActive:A,setMatch:F,placeholder:Object(l.__)("Enter title or URL…","google-site-kit"),isLoading:w,setIsLoading:N,showDropdown:D,onClose:M,autoFocus:!0}),w&&D&&e.createElement(g.ProgressBar,{className:"googlesitekit-entity-search__loading",compress:!0}),e.createElement("div",{className:"googlesitekit-entity-search__actions"},e.createElement(g.Button,{onClick:M,trailingIcon:e.createElement(p.a,{width:"30",height:"20"}),className:"googlesitekit-entity-search__close",title:Object(l.__)("Close","google-site-kit"),text:!0,tooltip:!0}))):e.createElement("div",{className:"googlesitekit-entity-search"},e.createElement(g.Button,{className:"googlesitekit-border-radius-round--phone googlesitekit-button-icon--phone",onClick:P,text:!0,ref:L,title:Object(l.__)("Search","google-site-kit"),trailingIcon:e.createElement(m.a,{width:"20",height:"20"}),tooltip:!0},Object(l.__)("URL Search","google-site-kit")))}}).call(this,n(3))},476:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0&&e.createElement(d.e,{portal:!1},e.createElement(d.c,{className:"autocomplete__menu autocomplete__menu--inline"},F.map((function(t){var n=t.id,r=t.title;return e.createElement(d.d,{key:n,value:r,className:"autocomplete__option autocomplete__option--result"})})))))}PostSearcherAutoSuggest.propTypes={id:u.a.string,match:u.a.object,setCanSubmit:u.a.func,setMatch:u.a.func,isLoading:u.a.bool,setIsLoading:u.a.func,onKeyDown:u.a.func,autoFocus:u.a.bool,placeholder:u.a.string}}).call(this,n(3))},479:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(14),a=n.n(r),i=n(2);function o(e,t){var n=Object(i.useState)(e),r=a()(n,2),o=r[0],c=r[1];return Object(i.useEffect)((function(){var n=setTimeout((function(){c(e)}),t);return function(){clearTimeout(n)}}),[e,t]),o}},480:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return DateRangeSelector}));var r=n(14),a=n.n(r),i=n(251),o=n(11),c=n.n(o),s=n(2),l=n(74),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(481),p=n(12),b=n(130),h=n(68),v=n(8),y=n(33),O=n(19),_=g.a.useSelect,k=g.a.useDispatch;function DateRangeSelector(){var t,n=Object(h.f)(),r=_((function(e){return e(p.a).getDateRange()})),o=k(p.a).setDateRange,d=k(y.b).resetInViewHook,g=Object(s.useState)(!1),E=a()(g,2),j=E[0],S=E[1],w=Object(s.useRef)(),N=Object(O.a)();Object(i.a)(w,(function(){return S(!1)})),Object(b.a)([l.c,l.e],w,(function(){return S(!1)}));var C=Object(s.useCallback)((function(){S(!j)}),[j]),T=Object(s.useCallback)((function(e){var t=Object.values(n)[e].slug;r!==t&&Object(v.z)("".concat(N,"_headerbar"),"change_daterange",t),d(),o(t),S(!1)}),[n,r,d,o,N]),D=null===(t=n[r])||void 0===t?void 0:t.label,A=Object.values(n).map((function(e){return e.label}));return e.createElement("div",{ref:w,className:"googlesitekit-date-range-selector googlesitekit-dropdown-menu mdc-menu-surface--anchor"},e.createElement(f.Button,{className:c()("mdc-button--dropdown","googlesitekit-header__dropdown","googlesitekit-header__date-range-selector-menu","googlesitekit-border-radius-round--phone","googlesitekit-button-icon--phone"),text:!0,onClick:C,icon:e.createElement(m.a,{width:"20",height:"20"}),"aria-haspopup":"menu","aria-expanded":j,"aria-controls":"date-range-selector-menu",title:Object(u.__)("Date range","google-site-kit"),tooltip:!0},D),e.createElement(f.Menu,{menuOpen:j,menuItems:A,onSelected:T,id:"date-range-selector-menu",className:"googlesitekit-width-auto"}))}}).call(this,n(3))},481:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t".concat(f.owner.login,""):Object(i.__)("Another admin","google-site-kit");return a=e.createElement("p",null,Object(o.a)(Object(i.sprintf)( +/* translators: 1. Original reminder description text, 2: module owner's name */ +Object(i.__)("%1$s.
%2$s configured Analytics and you don’t have access to its configured property. Contact them to share access or set up Google Analytics 4.","google-site-kit"),a,m),{strong:e.createElement("strong",null),br:e.createElement("br",null)})),e.createElement(l.b,{id:"ga4-activation-banner",className:"googlesitekit-ga4-reminder-banner",title:r,description:a,descriptionIcon:c,dismiss:Object(i.__)("Remind me later","google-site-kit"),dismissExpires:s,onDismiss:g})}ReminderBannerNoAccess.propTypes={title:a.a.string.isRequired,description:a.a.node,descriptionIcon:a.a.node,dismissExpires:a.a.number,onDismiss:a.a.func}}).call(this,n(3))},485:function(e,t,n){"use strict";(function(e,r){n.d(t,"a",(function(){return SetupBanner}));var a=n(5),i=n.n(a),o=n(16),c=n.n(o),s=n(14),l=n.n(s),u=n(2),d=n(250),g=n(1),f=n(4),m=n.n(f),p=n(13),b=n(55),h=n(341),v=n(139),y=n(486),O=n(27),_=n(339),k=n(9),E=n(12),j=n(131),S=n(223),w=n(310),N=n(311),C=n(326),T=n(10),D=n(35),A=n(58),R=n(19),x=n(8),L=m.a.useDispatch,P=m.a.useSelect,M="EXISTING_PROPERTY",I="NO_EXISTING_PROPERTY";function SetupBanner(t){var n=t.onSubmitSuccess,a=Object(u.useState)(null),o=l()(a,2),s=o[0],f=o[1],m=Object(u.useState)(null),z=l()(m,2),B=z[0],F=z[1],q=Object(u.useState)(!1),H=l()(q,2),W=H[0],U=H[1],V=Object(u.useState)(!1),G=l()(V,2),K=G[0],Y=G[1],X=Object(R.a)(),$="".concat(X,"_ga4-setup-notification"),Q=L(O.b),Z=Q.submitChanges,J=Q.selectProperty,ee=Q.matchAndSelectProperty,te=P((function(e){return e(k.f).getAccountID()})),ne=P((function(e){return e(O.b).getProperties(te)})),re=P((function(e){return e(k.f).getAccounts()})),ae=P((function(e){return e(O.b).getPropertyID})),ie=P((function(e){return e(O.b).getPropertyID()})),oe=P((function(e){return e(O.b).getMeasurementID})),ce=P((function(e){return e(O.b).getMeasurementID()})),se=Object(u.useCallback)(c()(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===B){e.next=2;break}return e.abrupt("return");case 2:if(void 0!==ne){e.next=4;break}return e.abrupt("return");case 4:if(0!==ne.length){e.next=8;break}return F(I),J(O.c),e.abrupt("return");case 8:if(void 0!==re){e.next=10;break}return e.abrupt("return");case 10:if(ae()){e.next=13;break}return e.next=13,ee(te,O.c);case 13:F(M);case 14:case"end":return e.stop()}}),e)}))),[te,re,ae,ee,ne,J,B]);Object(u.useEffect)((function(){se()}),[se]);var le=P((function(e){return e(E.a).hasScope(k.c)})),ue=P((function(e){return e(O.b).getExistingTag()})),de=P((function(e){return e(D.a).getValue(k.e,"autoSubmit")}));Object(_.a)();var ge=P((function(e){return e(E.a).getReferenceDate()})),fe=L(E.a).setPermissionScopeError,me=L(D.a).setValues,pe=Object(u.useCallback)(c()(i.a.mark((function t(){var r,a,o,c;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=[],!1!==le||ae()!==O.c&&oe()||r.push(k.c),!(r.length>0)){t.next=8;break}return me(k.e,{autoSubmit:!0}),me(j.e,{returnToSetupStep:!0}),a=Object(d.a)(e.location.href,{notification:"ga4_setup"}),fe({code:A.a,message:Object(g.__)("Additional permissions are required to create a new GA4 property.","google-site-kit"),data:{status:403,scopes:r,skipModal:!0,redirectURL:a}}),t.abrupt("return");case 8:return U(!0),de||(B===I||ae()===O.c?Object(x.z)($,"create_property"):Object(x.z)($,"connect_property")),t.next=12,Z();case 12:o=t.sent,c=o.error,U(!1),c?f(c):(me(k.e,{autoSubmit:!1}),n());case 16:case"end":return t.stop()}}),t)}))),[de,$,B,le,n,fe,me,Z,ae,oe]);Object(u.useEffect)((function(){de&&le&&pe()}),[de,pe,le]),Object(u.useEffect)((function(){K||de||!B||(Object(x.z)($,"view_notification"),Y(!0))}),[$,de,B,K]);var be,he,ve,ye=Object(S.a)(j.a).isTooltipVisible,Oe=Object(w.a)(j.a);if(null===B)return r.createElement("div",{className:"googlesitekit-publisher-win"},r.createElement(T.f,null,r.createElement(T.p,null,r.createElement(T.a,{size:12},r.createElement(p.ProgressBar,null)))));if(ye)return r.createElement(u.Fragment,null,r.createElement(N.a,{title:Object(g.__)("You can connect Google Analytics 4 later here","google-site-kit"),content:Object(g.__)("You can configure the Google Analytics 4 property inside the Site Kit Settings later.","google-site-kit"),dismissLabel:Object(g.__)("Remind me later","google-site-kit"),tooltipStateKey:j.a}));var _e=[];return B===M?(be=Object(g.__)("Connect the Google Analytics 4 property that’s associated with your existing Universal Analytics property","google-site-kit"),he=Object(g.__)("Connect","google-site-kit"),ve=r.createElement("div",{className:"googlesitekit-ga4-setup-banner__field-group"},r.createElement(h.a,{label:Object(g.__)("Google Analytics 4 Property","google-site-kit")}),ue&&r.createElement(h.b,{description:r.createElement(u.Fragment,null,r.createElement("p",null,Object(g.sprintf)( +/* translators: %s: existing tag ID */ +Object(g.__)("A tag %s for the selected property already exists on the site.","google-site-kit"),ue)),r.createElement("p",null,Object(g.__)("Make sure you remove it if you decide to place the same GA4 tag via Site Kit, otherwise they will be duplicated.","google-site-kit")))})),!1!==le||ie!==O.c&&ce||_e.push(Object(g.__)("You will need to give Site Kit permission to create an Analytics property on your behalf","google-site-kit")),_e.push(Object(g.__)("You can always add/edit this in the Site Kit Settings","google-site-kit"))):(be=Object(g.__)("No existing Google Analytics 4 property found, Site Kit will help you create a new one and insert it on your site","google-site-kit"),he=Object(g.__)("Create property","google-site-kit"),ue&&_e.push(Object(g.sprintf)( +/* translators: %s: The existing tag ID. */ +Object(g.__)("A GA4 tag %s is found on this site but this property is not associated with your Google Analytics account","google-site-kit"),ue)),!1===le&&_e.push(Object(g.__)("You will need to give Site Kit permission to create an Analytics property on your behalf","google-site-kit")),_e.push(Object(g.__)("You can always add/edit this in the Site Kit Settings","google-site-kit"))),r.createElement(b.b,{id:"ga4-activation-banner",className:"googlesitekit-ga4-setup-banner",title:be,ctaComponent:r.createElement(y.a,{onClick:pe,isSaving:W},he),footer:!!_e.length&&r.createElement("ul",{className:"googlesitekit-ga4-setup-banner__footer-text-list"},_e.map((function(e){return r.createElement("li",{key:e},e)}))),dismiss:Object(g.__)("Cancel","google-site-kit"),dismissExpires:Object(C.a)(ge),onDismiss:Oe},s&&r.createElement(v.a,{error:s}),ve)}}).call(this,n(22),n(3))},486:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SpinnerButton}));var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(13),g=n(10);function SpinnerButton(t){var n=t.className,r=t.onClick,i=void 0===r?function(){}:r,c=t.isSaving,s=void 0!==c&&c,l=o()(t,["className","onClick","isSaving"]);return e.createElement(d.Button,a()({className:u()(n,"googlesitekit-button-icon--spinner",{"googlesitekit-button-icon--spinner__running":s}),trailingIcon:s?e.createElement(g.b,{size:14}):void 0,onClick:i},l))}SpinnerButton.propTypes={className:s.a.string,onClick:s.a.func,isSaving:s.a.bool}}).call(this,n(3))},487:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SuccessBanner}));var r=n(97),a=n(1),i=n(4),o=n.n(i),c=n(15),s=n(55),l=n(403),u=n(19),d=n(32),g=o.a.useSelect;function SuccessBanner(){var t=g((function(e){return e(c.c).getDocumentationLinkURL("ga4")})),n=Object(u.a)(),i="".concat(n,"_ga4-success-notification");return Object(r.a)((function(){Object(d.b)(i,"view_notification")})),e.createElement(s.b,{id:"ga4-activation-banner",title:Object(a.__)("You successfully set up your Google Analytics 4 property","google-site-kit"),description:Object(a.__)("GA4 is collecting data for your site. You’ll only see Universal Analytics data on your dashboard for now.","google-site-kit"),dismiss:Object(a.__)("OK, Got it!","google-site-kit"),WinImageSVG:l.a,format:"smaller",type:"win-success",learnMoreLabel:Object(a.__)("Learn more about GA4","google-site-kit"),learnMoreURL:t})}}).call(this,n(3))},488:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ZeroDataStateNotifications}));var r=n(1),a=n(4),i=n.n(a),o=n(12),c=n(17),s=n(56),l=n(9),u=n(67),d=n(489),g=n(490),f=i.a.useSelect,m=i.a.useInViewSelect;function ZeroDataStateNotifications(){var t,n=Object(s.a)(),a=f((function(e){return e(c.a).isModuleConnected("analytics")})),i=f((function(e){return!n||e(o.a).canViewSharedModule("analytics")})),p=f((function(e){return!n||e(o.a).canViewSharedModule("search-console")})),b=f((function(e){if(!n)return!1;var t=e(c.a).getRecoverableModules();return void 0!==t?Object.keys(t).includes("analytics"):void 0})),h=f((function(e){if(!n)return!1;var t=e(c.a).getRecoverableModules();return void 0!==t?Object.keys(t).includes("search-console"):void 0})),v=m((function(e){return!(!a||!i||!1!==b)&&e(l.f).isGatheringData()})),y=m((function(e){return p&&!1===h&&e(u.b).isGatheringData()})),O=m((function(e){return!(!a||!i||!1!==b)&&e(l.f).hasZeroData()})),_=m((function(e){return p&&!1===h&&e(u.b).hasZeroData()}));return void 0===v||void 0===y||void 0===O||void 0===_?null:v||y||O||_?(v&&y?t=Object(r.__)("Search Console and Analytics are gathering data","google-site-kit"):v?t=Object(r.__)("Analytics is gathering data","google-site-kit"):y&&(t=Object(r.__)("Search Console is gathering data","google-site-kit")),v||y?e.createElement(d.a,{title:t}):e.createElement(g.a,null)):null}}).call(this,n(3))},489:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return GatheringDataNotification}));var r=n(0),a=n.n(r),i=n(97),o=n(1),c=n(2),s=n(55),l=n(382),u=n(8),d=n(19);function GatheringDataNotification(t){var n=t.title,r=Object(d.a)(),a="".concat(r,"_gathering-data-notification"),g=Object(c.useCallback)((function(){Object(u.z)(a,"dismiss_notification")}),[a]);return Object(i.a)((function(){Object(u.z)(a,"view_notification")})),e.createElement(s.b,{id:"gathering-data-notification",title:n,description:Object(o.__)("It can take up to 48 hours before stats show up for your site. While you’re waiting, connect more services to get more stats.","google-site-kit"),format:"small",dismiss:Object(o.__)("OK, Got it!","google-site-kit"),dismissExpires:Object(u.n)("day"),SmallImageSVG:l.a,onDismiss:g,isDismissible:!0})}GatheringDataNotification.propTypes={title:a.a.string}}).call(this,n(3))},49:function(e,t,n){"use strict";n.d(t,"d",(function(){return a})),n.d(t,"a",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"b",(function(){return c})),n.d(t,"e",(function(){return s}));var r=n(103),a="xlarge",i="desktop",o="tablet",c="small";function s(){var e=Object(r.a)();return e>1280?a:e>960?i:e>600?o:c}},490:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ZeroDataNotification}));var r=n(97),a=n(66),i=n(2),o=n(1),c=n(15),s=n(55),l=n(381),u=n(8),d=n(19);function ZeroDataNotification(){var t=Object(d.a)(),n="".concat(t,"_zero-data-notification"),g=Object(i.useCallback)((function(){Object(u.z)(n,"dismiss_notification")}),[n]),f=Object(i.useCallback)((function(){Object(u.z)(n,"click_learn_more_link")}),[n]);Object(r.a)((function(){Object(u.z)(n,"view_notification")}));var m=Object(a.h)((function(e){return e(c.c).getDocumentationLinkURL("not-enough-traffic")}));return e.createElement(s.b,{id:"zero-data-notification",title:Object(o.__)("Not enough traffic yet to display stats","google-site-kit"),description:Object(o.__)("Site Kit will start showing stats on the dashboard as soon as enough people have visited your site. Keep working on your site to attract more visitors.","google-site-kit"),format:"small",learnMoreLabel:Object(o.__)("Learn more","google-site-kit"),learnMoreURL:m,dismiss:Object(o.__)("Remind me later","google-site-kit"),dismissExpires:Object(u.n)("day"),SmallImageSVG:l.a,onDismiss:g,onLearnMoreClick:f,isDismissible:!0})}}).call(this,n(3))},491:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c}));var r=n(14),a=n.n(r),i=n(614),o=n(2),c=function(){var t=Object(i.a)().y,n=Object(o.useState)(!1),r=a()(n,2),c=r[0],s=r[1],l="googlesitekit-plugin--has-scrolled";return Object(o.useEffect)((function(){c?e.document.body.classList.add(l):e.document.body.classList.remove(l)}),[c]),t>0&&!c?s(!0):0===t&&c&&s(!1),c}}).call(this,n(22))},50:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return i}));var r={BOXES:"boxes",COMPOSITE:"composite"},a={QUARTER:"quarter",HALF:"half",FULL:"full"},i="core/widgets"},51:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"c",(function(){return c})),n.d(t,"e",(function(){return s}));var r=n(100);function a(e){try{return new URL(e).pathname}catch(e){}return null}function i(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function o(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function s(e,t){if(!Object(r.a)(e))return e;if(e.length<=t)return e;var n=new URL(e),a=e.replace(n.origin,"");if(a.length=600;function Xe(){return(Xe=d()(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),t.preventDefault(),!se){e.next=5;break}return e.next=5,se(t);case 5:$e();case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function $e(){Le(!0),setTimeout(d()(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Ue();case 2:Ke()&&ze(!0),t=new Event("notificationDismissed"),document.dispatchEvent(t);case 5:case"end":return e.stop()}}),e)}))),350)}Object(_.a)(d()(l.a.mark((function e(){var t,n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(X>0)){e.next=3;break}return e.next=3,tt();case 3:if(!Z){e.next=9;break}return e.next=6,Object(F.b)(We);case 6:t=e.sent,n=t.cacheHit,ze(n);case 9:if(!de){e.next=12;break}return e.next=12,Ue();case 12:case"end":return e.stop()}}),e)}))));var Qe=V((function(e){return e(U.a).isNavigatingTo(b||"")})),Ze=G(U.a).navigateTo;function Je(){return(Je=d()(l.a.mark((function e(t){var n,r,a;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),n=!0,!ce){e.next=13;break}return He(!0),e.next=6,ce(t);case 6:if(e.t0=e.sent,e.t0){e.next=9;break}e.t0={};case 9:r=e.t0,a=r.dismissOnCTAClick,n=void 0===a||a,Ke()&&He(!1);case 13:Z&&n&&$e(),Object(j.a)(b)&&"_blank"!==v&&!t.defaultPrevented&&(t.preventDefault(),Ze(b));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var et=Object(E.useCallback)((function(t){Object(A.c)(a)&&(t.preventDefault(),e.history.replaceState({},"",a),e.scrollTo({top:Object(D.a)(a,Ge),behavior:"smooth"}))}),[a,Ge]);function tt(){return nt.apply(this,arguments)}function nt(){return(nt=d()(l.a.mark((function e(){var t,n,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(F.b)(We);case 2:if(t=e.sent,!(n=t.value)){e.next=10;break}if((r=Object(W.a)(n)).setSeconds(r.getSeconds()+parseInt(X,10)),!(r1&&void 0!==arguments[1]?arguments[1]:{};return{__html:i.a.sanitize(e,t)}};function c(e){var t,n="object"===a()(e)?e.toString():e;return null==n||null===(t=n.replace)||void 0===t?void 0:t.call(n,/\/+$/,"")}},64:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(1),o=n(170),c=n(358),s=n(13),l=n(106),u=function SurveyHeader(t){var n=t.title,r=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__header"},e.createElement("div",{className:"googlesitekit-survey__header-logo"},e.createElement(l.a,{width:24,height:24})),e.createElement("div",{className:"googlesitekit-survey__header-details"},e.createElement("h3",null,n),e.createElement(s.Button,{"aria-label":Object(i.__)("Dismiss","google-site-kit"),icon:e.createElement(o.a,{icon:c.a,size:40}),onClick:r,className:"googlesitekit-survey__header-close"})))};u.propTypes={title:a.a.string.isRequired,dismissSurvey:a.a.func.isRequired},t.a=u}).call(this,n(3))},65:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),a=n.n(r),i=n(0),o=n.n(i),c=n(11),s=n.n(c),l=n(1),u={DEFAULT:"default",OVERLAY:"overlay",SMALL:"small",SMALL_OVERLAY:"small-overlay",LARGE:"large"};function GatheringDataNotice(t){var n=t.style;return e.createElement("div",{className:s()("googlesitekit-gathering-data-notice",a()({},"googlesitekit-gathering-data-notice--has-style-".concat(n),!!n))},e.createElement("span",null,Object(l.__)("Gathering data…","google-site-kit")))}GatheringDataNotice.propTypes={style:o.a.oneOf(Object.values(u))},t.b=GatheringDataNotice}).call(this,n(3))},67:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return a}));var r="modules/search-console",a=1},68:function(e,t,n){"use strict";n.d(t,"d",(function(){return r.e})),n.d(t,"c",(function(){return r.d})),n.d(t,"b",(function(){return r.b})),n.d(t,"a",(function(){return r.a})),n.d(t,"e",(function(){return r.f})),n.d(t,"g",(function(){return c})),n.d(t,"h",(function(){return l})),n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return d.a})),n.d(t,"f",(function(){return f})),n.d(t,"k",(function(){return s.a}));var r=n(36),a=n(7),i=n.n(a),o=n(37),c=function(e){i()(Object(o.a)(e),r.c);var t="".concat(e.getMonth()+1),n="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,n.length<2?"0".concat(n):n].join("-")},s=n(38),l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=Object(s.a)(e);return n.setDate(n.getDate()-t),c(n)},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},d=n(43);var g=n(1);function f(){var e=function(e){return Object(g.sprintf)( +/* translators: %s: number of days */ +Object(g._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},70:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(2),a=Object(r.createContext)(""),i=(a.Consumer,a.Provider);t.b=a},73:function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return _})),n.d(t,"d",(function(){return E})),n.d(t,"b",(function(){return j})),n.d(t,"a",(function(){return S}));var r=n(14),a=n.n(r),i=n(30),o=n.n(i),c=n(6),s=n.n(c),l=n(21),u=n.n(l),d=n(26),g=n(71),f=n.n(g),m=n(1);function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=v(e,t),r=n.formatUnit,a=n.formatDecimal;try{return r()}catch(e){return a()}},v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var n=Math.floor(e/60/60),r=Math.floor(e/60%60),a=Math.floor(e%60);return{hours:n,minutes:r,seconds:a,formatUnit:function(){var i=t.unitDisplay,o=b(b({unitDisplay:void 0===i?"short":i},u()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?E(a,b(b({},o),{},{unit:"second"})):Object(m.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(m._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?E(a,b(b({},o),{},{unit:"second"})):"",r?E(r,b(b({},o),{},{unit:"minute"})):"",n?E(n,b(b({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(m.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(m.__)("%ds","google-site-kit"),a);if(0===e)return t;var i=Object(m.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(m.__)("%dm","google-site-kit"),r),o=Object(m.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(m.__)("%dh","google-site-kit"),n);return Object(m.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(m._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",r?i:"",n?o:"").trim()}}},y=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},O=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(m.sprintf)(// translators: %s: an abbreviated number in millions. +Object(m.__)("%sM","google-site-kit"),E(y(e),e%10==0?{}:t)):1e4<=e?Object(m.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(m.__)("%sK","google-site-kit"),E(y(e))):1e3<=e?Object(m.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(m.__)("%sK","google-site-kit"),E(y(e),e%10==0?{}:t)):E(e,{signDisplay:"never",maximumFractionDigits:1})},_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(d.isFinite)(e)?e:Number(e),Object(d.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var n={};if("%"===t)n={style:"percent",maximumFractionDigits:2};else{if("s"===t)return h(e,{unitDisplay:"narrow"});t&&"string"==typeof t?n={style:"currency",currency:t}:Object(d.isPlainObject)(t)&&(n=b({},t))}var r=n,a=r.style,i=void 0===a?"metric":a;return"metric"===i?O(e):"duration"===i?h(e,t):E(e,n)},k=f()(console.warn),E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,i=u()(t,["locale"]);try{return new Intl.NumberFormat(r,i).format(e)}catch(t){k("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(r),", ").concat(JSON.stringify(i)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},s=["signDisplay","compactDisplay"],l={},d=0,g=Object.entries(i);d1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,a=t.style,i=void 0===a?"long":a,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var s=new Intl.ListFormat(r,{style:i,type:c});return s.format(e)} +/* translators: used between list items, there is a space after the comma. */var l=Object(m.__)(", ","google-site-kit");return e.join(l)},S=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,n=Object(d.get)(t,["_googlesitekitLegacyData","locale"]);if(n){var r=n.match(/^(\w{2})?(_)?(\w{2})/);if(r&&r[0])return r[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,n(22))},77:function(e,t,n){"use strict";n.d(t,"m",(function(){return E})),n.d(t,"k",(function(){return j})),n.d(t,"c",(function(){return b})),n.d(t,"d",(function(){return h})),n.d(t,"i",(function(){return v})),n.d(t,"j",(function(){return y})),n.d(t,"h",(function(){return O})),n.d(t,"g",(function(){return _})),n.d(t,"f",(function(){return b})),n.d(t,"e",(function(){return k})),n.d(t,"l",(function(){return C})),n.d(t,"b",(function(){return T})),n.d(t,"a",(function(){return A}));var r=n(24),a=n.n(r),i=n(26),o=n(11),c=n.n(o),s=n(1),l=n(73),u=n(165),d=n(8),g=n(145),f=n(14),m=n.n(f),p=n(9),b=function(e){return(parseInt(e,10)||0)>0};function h(e){return e===p.a||b(e)}function v(e){return"string"==typeof e&&/^UA-\d+-\d+$/.test(e)}function y(e){return e===p.h||v(e)}function O(e){return e===p.g||b(e)}function _(e){return"string"==typeof e&&e.trim().length>0}function k(e){return"string"==typeof e&&/^AW-[0-9]+$/.test(e)}function E(e){if(!v(e))return!1;var t=e.match(/^UA-(\d+)-(\d+)/),n=m()(t,3);return{accountID:n[1],propertyID:e,number:n[2]}}function j(e){var t,n,r,a,i,o,c,s;if(void 0!==e)return!(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(r=n.rows)||void 0===r?void 0:r.length)||!(null==e||null===(a=e[0])||void 0===a||null===(i=a.data)||void 0===i||null===(o=i.totals)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.values)||void 0===s?void 0:s.length)||!e[0].data.totals.some((function(e){return e.values.some((function(e){return e>0}))}))}var S=n(51);function w(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return N(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:{},a=r.keyColumnIndex,i=void 0===a?0:a,o=r.maxSlices,c=r.withOthers,l=void 0!==c&&c,u=r.tooltipCallback,d=(null==e?void 0:e[0])||{},g=d.data,f=void 0===g?{}:g,m=f.rows,p=void 0===m?[]:m,b=f.totals,h=void 0===b?[]:b,v="function"==typeof u,y=["Source","Percent"];v&&y.push({type:"string",role:"tooltip",p:{html:!0}});var O=(null==h||null===(t=h[0])||void 0===t||null===(n=t.values)||void 0===n?void 0:n[i])||0,_=[y],k=l,E=p.length,j=1;o>0?(k=l&&p.length>o,E=Math.min(p.length,k?o-1:o)):(k=!1,E=p.length);for(var S=0;S0?N/O:0;j-=C;var T=[w.dimensions[0],C];v&&T.push(u(w,T)),_.push(T)}if(k&&j>0){var D=[Object(s.__)("Others","google-site-kit"),j];v&&D.push(u(null,D)),_.push(D)}return _}function D(e,t,n){var r=[];return Object(i.each)(e,(function(e){if(e.metrics){var a=e.metrics[t].values,i=e.dimensions[0],o=Object(u.a)(i);r.push([o,a[n]])}})),r}function A(e,t,n){var r,o,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,m=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[Object(s.__)("Users","google-site-kit"),Object(s.__)("Sessions","google-site-kit"),Object(s.__)("Bounce Rate %","google-site-kit"),Object(s.__)("Session Duration","google-site-kit")],p=arguments.length>6&&void 0!==arguments[6]?arguments[6]:[function(e){return parseFloat(e).toLocaleString()},function(e){return parseFloat(e).toLocaleString()},function(e){return Object(d.u)(e/100,{style:"percent",signDisplay:"never",maximumFractionDigits:2})},function(e){return Object(d.u)(e,"s")}];if(!Array.isArray(null===(r=e[0])||void 0===r||null===(o=r.data)||void 0===o?void 0:o.rows))return!1;var b=a()(e[0].data.rows),h=b.length;if(2*n>h){for(var v=new Date,y=0;n>y;y++){var O=(v.getMonth()+1).toString(),_=v.getDate().toString(),k=v.getFullYear().toString()+(2>O.length?"0":"")+O+(2>_.length?"0":"")+_;if(y>h){var E={dimensions:[k],metrics:[{values:[0,0,0,0,0]}]};b.unshift(E)}v.setDate(v.getDate()-1)}b.push([0,0])}var j=m[t]===Object(s.__)("Session Duration","google-site-kit"),S=j?"timeofday":"number",w=[[{type:"date",label:Object(s.__)("Day","google-site-kit")},{type:"string",role:"tooltip",p:{html:!0}},{type:S,label:m[t]},{type:S,label:Object(s.__)("Previous period","google-site-kit")}]],N=Object(g.a)(b,{dateRangeLength:n}),C=N.compareRange,T=N.currentRange,A=D(T,u,t),R=D(C,f,t),x=Object(l.a)(),L={weekday:"short",month:"short",day:"numeric"};return Object(i.each)(A,(function(e,n){if(e[0]&&e[1]&&R[n]){var r=parseFloat(R[n][1]),a=Object(d.e)(e[1],r),i=Object(d.j)(a),o=Object(s.sprintf)( +/* translators: 1: date for user stats, 2: previous date for user stats comparison */ +Object(s._x)("%1$s vs %2$s","Date range for chart tooltip","google-site-kit"),e[0].toLocaleDateString(x,L),R[n][0].toLocaleDateString(x,L)),l=Object(s.sprintf)( +/* translators: 1: selected stat label, 2: numeric value of selected stat, 3: up or down arrow , 4: different change in percentage */ +Object(s._x)("%1$s: %2$s %3$s %4$s","Stat information for chart tooltip","google-site-kit"),m[t],p[t](e[1]),i,Object(d.u)(Math.abs(a),"%"));w.push([e[0],'
0,"googlesitekit-visualization-tooltip--down":a<0}),'">\n\t\t\t\t

').concat(o,"

\n\t\t\t\t

").concat(l,"

\n\t\t\t
"),j?Object(d.g)(e[1]):e[1],j?Object(d.g)(R[n][1]):R[n][1]])}})),w}},78:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var r=n(124),a=n.n(r)()(e)}).call(this,n(22))},8:function(e,t,n){"use strict";n.d(t,"z",(function(){return c.b})),n.d(t,"w",(function(){return s.a})),n.d(t,"A",(function(){return s.b})),n.d(t,"y",(function(){return f})),n.d(t,"f",(function(){return m.a})),n.d(t,"m",(function(){return m.b})),n.d(t,"u",(function(){return p.c})),n.d(t,"v",(function(){return p.d})),n.d(t,"r",(function(){return p.b})),n.d(t,"l",(function(){return p.a})),n.d(t,"s",(function(){return y})),n.d(t,"g",(function(){return O})),n.d(t,"b",(function(){return _.b})),n.d(t,"a",(function(){return _.a})),n.d(t,"c",(function(){return _.e})),n.d(t,"i",(function(){return _.f})),n.d(t,"x",(function(){return _.k})),n.d(t,"j",(function(){return k.b})),n.d(t,"q",(function(){return k.c})),n.d(t,"e",(function(){return k.a})),n.d(t,"o",(function(){return E.b})),n.d(t,"k",(function(){return E.a})),n.d(t,"t",(function(){return E.d})),n.d(t,"p",(function(){return j})),n.d(t,"n",(function(){return S})),n.d(t,"d",(function(){return w})),n.d(t,"B",(function(){return N})),n.d(t,"h",(function(){return C}));var r=n(123),a=n.n(r),i=n(118),o=n.n(i),c=n(32),s=n(63),l=n(30),u=n.n(l),d=n(81),g=n.n(d),f=function(e){return g()(JSON.stringify(function e(t){var n={};return Object.keys(t).sort().forEach((function(r){var a=t[r];a&&"object"===u()(a)&&!Array.isArray(a)&&(a=e(a)),n[r]=a})),n}(e)))};var m=n(83),p=(n(84),n(73));function b(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function h(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function v(e){return e.replace(/\n/gi,"
")}function y(e){for(var t=e,n=0,r=[b,h,v];nredo the plugin setup.',"google-site-kit"),r));return e.createElement("div",{className:"googlesitekit-error-text"},e.createElement("p",{dangerouslySetInnerHTML:Object(c.w)(a,{ALLOWED_TAGS:["a"],ALLOWED_ATTR:["href"]})}))}ErrorText.propTypes={message:a.a.string.isRequired,reconnectURL:a.a.string},ErrorText.defaultProps={reconnectURL:""},t.a=ErrorText}).call(this,n(3))},83:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return l}));var r=n(14),a=n.n(r);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){s=!0,i=e},f:function(){try{c||null==n.return||n.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:location,n=new URL(t.href);if(e)return n.searchParams&&n.searchParams.get?n.searchParams.get(e):s(e);var r,o={},c=i(n.searchParams.entries());try{for(c.s();!(r=c.n()).done;){var l=a()(r.value,2),u=l[0],d=l[1];o[u]=d}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,n(22))},84:function(e,t,n){"use strict";(function(e){n(44),n(45)}).call(this,n(22))},85:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"a",(function(){return c}));var r=n(169),a=n(62),i=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=n.invertColor,o=void 0!==i&&i;return Object(r.a)(e.createElement(a.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,n,r,a,i,o,c,s,l,u,d,g,f,m,p;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(r=n.rows)||void 0===r?void 0:r.length)||(null==e||null===(a=e[0])||void 0===a||null===(i=a.data)||void 0===i||null===(o=i.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.metrics)||void 0===s||null===(l=s[0])||void 0===l||null===(u=l.values)||void 0===u?void 0:u[0])===(null==e||null===(d=e[0])||void 0===d||null===(g=d.data)||void 0===g||null===(f=g.totals)||void 0===f||null===(m=f[0])||void 0===m||null===(p=m.values)||void 0===p?void 0:p[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,n(3))},86:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),a=n.n(r),i=n(87),o=n(88);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,a=s(s({},l),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(a,n);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(o.a)(a,n,c,r)}}}).call(this,n(22))},87:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var r=n(52),a=n(31);function i(t,n){var i,o=Object(r.a)(n);return function(){var n=e.document;if(void 0===i&&(i=!!n.querySelector("script[".concat(a.b,"]"))),!i){var r=n.createElement("script");r.setAttribute(a.b,""),r.async=!0,r.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),n.head.appendChild(r),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,n(22))},88:function(e,t,n){"use strict";n.d(t,"a",(function(){return f}));var r=n(5),a=n.n(r),i=n(6),o=n.n(i),c=n(16),s=n.n(c),l=n(52),u=n(42);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;tsupport forums or Site Kit website for support or further information.","google-site-kit"),"".concat(l,"")),{strong:e.createElement("strong",null),link1:e.createElement(y.a,{href:"https://wordpress.org/support/plugin/google-site-kit/",external:!0}),link2:e.createElement(y.a,{href:I,external:!0}),VisuallyHidden:e.createElement(O.a,null)}))))))))))):e.createElement(i.Fragment,null,e.createElement(S.a,null),e.createElement(u.a,{subHeader:e.createElement(w.a,null),showNavigation:!0},e.createElement(f.a,null),e.createElement(m.a,null),n&&!t&&e.createElement(N.a,null),e.createElement(p.a,null)),e.createElement(g.a,{id:b.d,slug:d.CONTEXT_ENTITY_DASHBOARD_TRAFFIC,className:a()({"googlesitekit-widget-context--last":z===b.d})}),e.createElement(g.a,{id:b.a,slug:d.CONTEXT_ENTITY_DASHBOARD_CONTENT,className:a()({"googlesitekit-widget-context--last":z===b.a})}),e.createElement(g.a,{id:b.c,slug:d.CONTEXT_ENTITY_DASHBOARD_SPEED,className:a()({"googlesitekit-widget-context--last":z===b.c})}),e.createElement(g.a,{id:b.b,slug:d.CONTEXT_ENTITY_DASHBOARD_MONETIZATION,className:a()({"googlesitekit-widget-context--last":z===b.b})}))}}).call(this,n(3))},896:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return EntityBannerNotifications}));var r=n(2),a=n(117),i=n(897),o=n(488),c=n(56);function EntityBannerNotifications(){var t=Object(c.a)(),n=Object(a.a)("ga4ActivationBanner");return e.createElement(r.Fragment,null,!t&&n&&e.createElement(i.a,null),e.createElement(o.a,null))}}).call(this,n(3))},897:function(e,t,n){"use strict";var r=n(450);n.d(t,"a",(function(){return r.a}))},9:function(e,t,n){"use strict";n.d(t,"f",(function(){return r})),n.d(t,"a",(function(){return a})),n.d(t,"h",(function(){return i})),n.d(t,"g",(function(){return o})),n.d(t,"d",(function(){return c})),n.d(t,"e",(function(){return s})),n.d(t,"k",(function(){return l})),n.d(t,"c",(function(){return u})),n.d(t,"b",(function(){return d})),n.d(t,"s",(function(){return g})),n.d(t,"r",(function(){return f})),n.d(t,"t",(function(){return m})),n.d(t,"p",(function(){return p})),n.d(t,"q",(function(){return b})),n.d(t,"n",(function(){return h})),n.d(t,"o",(function(){return v})),n.d(t,"l",(function(){return y})),n.d(t,"m",(function(){return O})),n.d(t,"j",(function(){return _})),n.d(t,"i",(function(){return k}));var r="modules/analytics",a="account_create",i="property_create",o="profile_create",c="analyticsAccountCreate",s="analyticsSetup",l="https://www.googleapis.com/auth/analytics.provision",u="https://www.googleapis.com/auth/analytics.edit",d=1,g="dashboardAllTrafficWidgetDimensionName",f="dashboardAllTrafficWidgetDimensionColor",m="dashboardAllTrafficWidgetDimensionValue",p="dashboardAllTrafficWidgetActiveRowIndex",b="dashboardAllTrafficWidgetLoaded",h="legacy",v="ua",y="ga4",O="ga4-transitional",_="ua",k="ga4"},92:function(e,t,n){"use strict";var r=n(14),a=n.n(r),i=n(263),o=n(0),c=n.n(o),s=n(2),l=n(122);function Portal(e){var t=e.children,n=e.slug,r=Object(s.useState)(document.createElement("div")),o=a()(r,1)[0];return Object(i.a)((function(){n&&o.classList.add("googlesitekit-portal-".concat(n));var e=document.querySelector(".googlesitekit-plugin")||document.body;return e.appendChild(o),function(){return e.removeChild(o)}})),Object(l.createPortal)(t,o)}Portal.propTypes={slug:c.a.string,children:c.a.node},Portal.defaultProps={slug:"",children:null},t.a=Portal},93:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"c",(function(){return c}));var r=n(23),a=n(19),i=r.j,o=r.h;function c(){var e=Object(a.a)();return e===r.j||e===r.k?i:e===r.h||e===r.i?o:null}},94:function(e,t,n){"use strict";n.r(t),n.d(t,"CONTEXT_MAIN_DASHBOARD_TRAFFIC",(function(){return r})),n.d(t,"CONTEXT_MAIN_DASHBOARD_CONTENT",(function(){return a})),n.d(t,"CONTEXT_MAIN_DASHBOARD_SPEED",(function(){return i})),n.d(t,"CONTEXT_MAIN_DASHBOARD_MONETIZATION",(function(){return o})),n.d(t,"CONTEXT_ENTITY_DASHBOARD_TRAFFIC",(function(){return c})),n.d(t,"CONTEXT_ENTITY_DASHBOARD_CONTENT",(function(){return s})),n.d(t,"CONTEXT_ENTITY_DASHBOARD_SPEED",(function(){return l})),n.d(t,"CONTEXT_ENTITY_DASHBOARD_MONETIZATION",(function(){return u}));var r="mainDashboardTraffic",a="mainDashboardContent",i="mainDashboardSpeed",o="mainDashboardMonetization",c="entityDashboardTraffic",s="entityDashboardContent",l="entityDashboardSpeed",u="entityDashboardMonetization";t.default={CONTEXT_MAIN_DASHBOARD_TRAFFIC:r,CONTEXT_MAIN_DASHBOARD_CONTENT:a,CONTEXT_MAIN_DASHBOARD_SPEED:i,CONTEXT_MAIN_DASHBOARD_MONETIZATION:o,CONTEXT_ENTITY_DASHBOARD_TRAFFIC:c,CONTEXT_ENTITY_DASHBOARD_CONTENT:s,CONTEXT_ENTITY_DASHBOARD_SPEED:l,CONTEXT_ENTITY_DASHBOARD_MONETIZATION:u}},98:function(e,t,n){"use strict";var r=n(107);n.d(t,"a",(function(){return r.a}));var a=n(108);n.d(t,"c",(function(){return a.a}));var i=n(109);n.d(t,"b",(function(){return i.a}))}},[[1117,1,0]]]); \ No newline at end of file diff --git a/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-i18n-e29c32171c9d96a19747.js b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-i18n-e29c32171c9d96a19747.js new file mode 100644 index 000000000..79dc3eda6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-i18n-e29c32171c9d96a19747.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.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 i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));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=3)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={sprintf:!0,setLocaleData:!0,__:!0,_x:!0,_n:!0,_nx:!0,isRTL:!0};Object.defineProperty(t,"sprintf",{enumerable:!0,get:function(){return i.sprintf}}),Object.defineProperty(t,"setLocaleData",{enumerable:!0,get:function(){return a.setLocaleData}}),Object.defineProperty(t,"__",{enumerable:!0,get:function(){return a.__}}),Object.defineProperty(t,"_x",{enumerable:!0,get:function(){return a._x}}),Object.defineProperty(t,"_n",{enumerable:!0,get:function(){return a._n}}),Object.defineProperty(t,"_nx",{enumerable:!0,get:function(){return a._nx}}),Object.defineProperty(t,"isRTL",{enumerable:!0,get:function(){return a.isRTL}});var i=n(5),o=n(2);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return o[e]}}))}));var a=n(9)},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";var r=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.createI18n=void 0;var i=r(n(8)),o=r(n(10));function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"default";n.data[t]=u({},s,{},n.data[t],{},e),n.data[t][""]=u({},s[""],{},n.data[t][""])},i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default",t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;return n.data[e]||r(void 0,e),n.dcnpgettext(e,t,i,o,a)},a=function(e,t,n){return i(n,t,e)};return e&&r(e,t),{setLocaleData:r,__:function(e,t){return i(t,void 0,e)},_x:a,_n:function(e,t,n,r){return i(r,void 0,e,t,n)},_nx:function(e,t,n,r,o){return i(o,r,e,t,n)},isRTL:function(){return"rtl"===a("ltr","text direction")}}}},function(e,t,n){"use strict";n.r(t),function(e){var t=n(0);e.googlesitekit=e.googlesitekit||{},e.googlesitekit.i18n=e.googlesitekit.i18n||{sprintf:t.sprintf,setLocaleData:t.setLocaleData,__:t.__,_x:t._x,_n:t._n,_nx:t._nx,isRTL:t.isRTL}}.call(this,n(4))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.sprintf=function(e){try{for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0),u.type){case"b":i=parseInt(i,10).toString(2);break;case"c":i=String.fromCharCode(parseInt(i,10));break;case"d":case"i":i=parseInt(i,10);break;case"j":i=JSON.stringify(i,null,u.width?parseInt(u.width):0);break;case"e":i=u.precision?parseFloat(i).toExponential(u.precision):parseFloat(i).toExponential();break;case"f":i=u.precision?parseFloat(i).toFixed(u.precision):parseFloat(i);break;case"g":i=u.precision?String(Number(i.toPrecision(u.precision))):parseFloat(i);break;case"o":i=(parseInt(i,10)>>>0).toString(8);break;case"s":i=String(i),i=u.precision?i.substring(0,u.precision):i;break;case"t":i=String(!!i),i=u.precision?i.substring(0,u.precision):i;break;case"T":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=u.precision?i.substring(0,u.precision):i;break;case"u":i=parseInt(i,10)>>>0;break;case"v":i=i.valueOf(),i=u.precision?i.substring(0,u.precision):i;break;case"x":i=(parseInt(i,10)>>>0).toString(16);break;case"X":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(u.type)?g+=i:(!e.number.test(u.type)||l&&!u.sign?p="":(p=l?"+":"-",i=i.toString().replace(e.sign,"")),c=u.pad_char?"0"===u.pad_char?"0":u.pad_char.charAt(1):" ",f=u.width-(p+i).length,s=u.width&&f>0?c.repeat(f):"",g+=u.align?p+i+s:"0"===c?p+s+i:s+p+i)}return g}var o=Object.create(null);function a(t){if(o[t])return o[t];for(var n,r=t,i=[],a=0;r;){if(null!==(n=e.text.exec(r)))i.push(n[0]);else if(null!==(n=e.modulo.exec(r)))i.push("%");else{if(null===(n=e.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(n[2]){a|=1;var u=[],s=n[2],c=[];if(null===(c=e.key.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(u.push(c[1]);""!==(s=s.substring(c[0].length));)if(null!==(c=e.key_access.exec(s)))u.push(c[1]);else{if(null===(c=e.index_access.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");u.push(c[1])}n[2]=u}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");i.push({placeholder:n[0],param_no:n[1],keys:n[2],sign:n[3],pad_char:n[4],align:n[5],width:n[6],precision:n[7],type:n[8]})}r=r.substring(n[0].length)}return o[t]=i}t.sprintf=n,t.vsprintf=r,"undefined"!=typeof window&&(window.sprintf=n,window.vsprintf=r,"function"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isRTL=t._nx=t._n=t._x=t.__=t.setLocaleData=void 0;var r=(0,n(2).createI18n)(),i=r.setLocaleData.bind(r);t.setLocaleData=i;var o=r.__.bind(r);t.__=o;var a=r._x.bind(r);t._x=a;var u=r._n.bind(r);t._n=u;var s=r._nx.bind(r);t._nx=s;var c=r.isRTL.bind(r);t.isRTL=c},function(e,t,n){"use strict";var r,i,o,a;n.r(t),n.d(t,"default",(function(){return f})),r={"(":9,"!":8,"*":7,"/":7,"%":7,"+":6,"-":6,"<":5,"<=":5,">":5,">=":5,"==":4,"!=":4,"&&":3,"||":2,"?":1,"?:":1},i=["(","?"],o={")":["("],":":["?","?:"]},a=/<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;var u={"!":function(e){return!e},"*":function(e,t){return e*t},"/":function(e,t){return e/t},"%":function(e,t){return e%t},"+":function(e,t){return e+t},"-":function(e,t){return e-t},"<":function(e,t){return e":function(e,t){return e>t},">=":function(e,t){return e>=t},"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},"&&":function(e,t){return e&&t},"||":function(e,t){return e||t},"?:":function(e,t,n){if(e)throw t;return n}};function s(e){var t=function(e){for(var t,n,u,s,c=[],f=[];t=e.match(a);){for(n=t[0],(u=e.substr(0,t.index).trim())&&c.push(u);s=f.pop();){if(o[n]){if(o[n][0]===s){n=o[n][1]||n;break}}else if(i.indexOf(s)>=0||r[s]"']/g,P=RegExp(z.source),W=RegExp(D.source),M=/<%-([\s\S]+?)%>/g,N=/<%([\s\S]+?)%>/g,U=/<%=([\s\S]+?)%>/g,F=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,B=/^\w*$/,q=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,H=/[\\^$.*+?()[\]{}|]/g,$=RegExp(H.source),G=/^\s+/,V=/\s/,K=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Z=/\{\n\/\* \[wrapped with (.+)\] \*/,Y=/,? & /,J=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Q=/[()=,{}\[\]\/\s]/,X=/\\(\\)?/g,tt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,et=/^[-+]0x[0-9a-f]+$/i,rt=/^0b[01]+$/i,ot=/^\[object .+?Constructor\]$/,it=/^0o[0-7]+$/i,ut=/^(?:0|[1-9]\d*)$/,at=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ct=/($^)/,ft=/['\n\r\u2028\u2029\\]/g,lt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",st="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pt="[\\ud800-\\udfff]",vt="["+st+"]",ht="["+lt+"]",dt="\\d+",yt="[\\u2700-\\u27bf]",gt="[a-z\\xdf-\\xf6\\xf8-\\xff]",_t="[^\\ud800-\\udfff"+st+dt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",mt="\\ud83c[\\udffb-\\udfff]",bt="[^\\ud800-\\udfff]",wt="(?:\\ud83c[\\udde6-\\uddff]){2}",xt="[\\ud800-\\udbff][\\udc00-\\udfff]",St="[A-Z\\xc0-\\xd6\\xd8-\\xde]",kt="(?:"+gt+"|"+_t+")",Ot="(?:"+St+"|"+_t+")",jt="(?:"+ht+"|"+mt+")"+"?",At="[\\ufe0e\\ufe0f]?"+jt+("(?:\\u200d(?:"+[bt,wt,xt].join("|")+")[\\ufe0e\\ufe0f]?"+jt+")*"),Et="(?:"+[yt,wt,xt].join("|")+")"+At,Lt="(?:"+[bt+ht+"?",ht,wt,xt,pt].join("|")+")",Tt=RegExp("['’]","g"),Rt=RegExp(ht,"g"),Ct=RegExp(mt+"(?="+mt+")|"+Lt+At,"g"),It=RegExp([St+"?"+gt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[vt,St,"$"].join("|")+")",Ot+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[vt,St+kt,"$"].join("|")+")",St+"?"+kt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",St+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",dt,Et].join("|"),"g"),zt=RegExp("[\\u200d\\ud800-\\udfff"+lt+"\\ufe0e\\ufe0f]"),Dt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Wt=-1,Mt={};Mt[S]=Mt[k]=Mt[O]=Mt[j]=Mt[A]=Mt[E]=Mt["[object Uint8ClampedArray]"]=Mt[L]=Mt[T]=!0,Mt[u]=Mt[a]=Mt[w]=Mt[c]=Mt[x]=Mt[f]=Mt[l]=Mt[s]=Mt[v]=Mt[h]=Mt[d]=Mt[y]=Mt[g]=Mt[_]=Mt[b]=!1;var Nt={};Nt[u]=Nt[a]=Nt[w]=Nt[x]=Nt[c]=Nt[f]=Nt[S]=Nt[k]=Nt[O]=Nt[j]=Nt[A]=Nt[v]=Nt[h]=Nt[d]=Nt[y]=Nt[g]=Nt[_]=Nt[m]=Nt[E]=Nt["[object Uint8ClampedArray]"]=Nt[L]=Nt[T]=!0,Nt[l]=Nt[s]=Nt[b]=!1;var Ut={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ft=parseFloat,Bt=parseInt,qt="object"==typeof t&&t&&t.Object===Object&&t,Ht="object"==typeof self&&self&&self.Object===Object&&self,$t=qt||Ht||Function("return this")(),Gt=n&&!n.nodeType&&n,Vt=Gt&&"object"==typeof e&&e&&!e.nodeType&&e,Kt=Vt&&Vt.exports===Gt,Zt=Kt&&qt.process,Yt=function(){try{var t=Vt&&Vt.require&&Vt.require("util").types;return t||Zt&&Zt.binding&&Zt.binding("util")}catch(t){}}(),Jt=Yt&&Yt.isArrayBuffer,Qt=Yt&&Yt.isDate,Xt=Yt&&Yt.isMap,tn=Yt&&Yt.isRegExp,nn=Yt&&Yt.isSet,en=Yt&&Yt.isTypedArray;function rn(t,n,e){switch(e.length){case 0:return t.call(n);case 1:return t.call(n,e[0]);case 2:return t.call(n,e[0],e[1]);case 3:return t.call(n,e[0],e[1],e[2])}return t.apply(n,e)}function on(t,n,e,r){for(var o=-1,i=null==t?0:t.length;++o-1}function sn(t,n,e){for(var r=-1,o=null==t?0:t.length;++r-1;);return e}function zn(t,n){for(var e=t.length;e--&&bn(n,t[e],0)>-1;);return e}function Dn(t,n){for(var e=t.length,r=0;e--;)t[e]===n&&++r;return r}var Pn=On({"À":"A","Ã":"A","Â":"A","Ã":"A","Ä":"A","Ã…":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","Ã¥":"a","Ç":"C","ç":"c","Ã":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","ÃŒ":"I","Ã":"I","ÃŽ":"I","Ã":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ã’":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ã":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ä€":"A","Ä‚":"A","Ä„":"A","Ä":"a","ă":"a","Ä…":"a","Ć":"C","Ĉ":"C","ÄŠ":"C","ÄŒ":"C","ć":"c","ĉ":"c","Ä‹":"c","Ä":"c","ÄŽ":"D","Ä":"D","Ä":"d","Ä‘":"d","Ä’":"E","Ä”":"E","Ä–":"E","Ę":"E","Äš":"E","Ä“":"e","Ä•":"e","Ä—":"e","Ä™":"e","Ä›":"e","Äœ":"G","Äž":"G","Ä ":"G","Ä¢":"G","Ä":"g","ÄŸ":"g","Ä¡":"g","Ä£":"g","Ĥ":"H","Ħ":"H","Ä¥":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Ä®":"I","İ":"I","Ä©":"i","Ä«":"i","Ä­":"i","į":"i","ı":"i","Ä´":"J","ĵ":"j","Ķ":"K","Ä·":"k","ĸ":"k","Ĺ":"L","Ä»":"L","Ľ":"L","Ä¿":"L","Å":"L","ĺ":"l","ļ":"l","ľ":"l","Å€":"l","Å‚":"l","Ń":"N","Å…":"N","Ň":"N","ÅŠ":"N","Å„":"n","ņ":"n","ň":"n","Å‹":"n","ÅŒ":"O","ÅŽ":"O","Å":"O","Å":"o","Å":"o","Å‘":"o","Å”":"R","Å–":"R","Ř":"R","Å•":"r","Å—":"r","Å™":"r","Åš":"S","Åœ":"S","Åž":"S","Å ":"S","Å›":"s","Å":"s","ÅŸ":"s","Å¡":"s","Å¢":"T","Ť":"T","Ŧ":"T","Å£":"t","Å¥":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Å®":"U","Ű":"U","Ų":"U","Å©":"u","Å«":"u","Å­":"u","ů":"u","ű":"u","ų":"u","Å´":"W","ŵ":"w","Ŷ":"Y","Å·":"y","Ÿ":"Y","Ź":"Z","Å»":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Å’":"Oe","Å“":"oe","ʼn":"'n","Å¿":"s"}),Wn=On({"&":"&","<":"<",">":">",'"':""","'":"'"});function Mn(t){return"\\"+Ut[t]}function Nn(t){return zt.test(t)}function Un(t){var n=-1,e=Array(t.size);return t.forEach((function(t,r){e[++n]=[r,t]})),e}function Fn(t,n){return function(e){return t(n(e))}}function Bn(t,n){for(var e=-1,r=t.length,i=0,u=[];++e",""":'"',"'":"'"});var Zn=function t(n){var e,V=(n=null==n?$t:Zn.defaults($t.Object(),n,Zn.pick($t,Pt))).Array,lt=n.Date,st=n.Error,pt=n.Function,vt=n.Math,ht=n.Object,dt=n.RegExp,yt=n.String,gt=n.TypeError,_t=V.prototype,mt=pt.prototype,bt=ht.prototype,wt=n["__core-js_shared__"],xt=mt.toString,St=bt.hasOwnProperty,kt=0,Ot=(e=/[^.]+$/.exec(wt&&wt.keys&&wt.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"",jt=bt.toString,At=xt.call(ht),Et=$t._,Lt=dt("^"+xt.call(St).replace(H,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ct=Kt?n.Buffer:void 0,zt=n.Symbol,Ut=n.Uint8Array,qt=Ct?Ct.allocUnsafe:void 0,Ht=Fn(ht.getPrototypeOf,ht),Gt=ht.create,Vt=bt.propertyIsEnumerable,Zt=_t.splice,Yt=zt?zt.isConcatSpreadable:void 0,gn=zt?zt.iterator:void 0,On=zt?zt.toStringTag:void 0,Yn=function(){try{var t=Ko(ht,"defineProperty");return t({},"",{}),t}catch(t){}}(),Jn=n.clearTimeout!==$t.clearTimeout&&n.clearTimeout,Qn=lt&<.now!==$t.Date.now&<.now,Xn=n.setTimeout!==$t.setTimeout&&n.setTimeout,te=vt.ceil,ne=vt.floor,ee=ht.getOwnPropertySymbols,re=Ct?Ct.isBuffer:void 0,oe=n.isFinite,ie=_t.join,ue=Fn(ht.keys,ht),ae=vt.max,ce=vt.min,fe=lt.now,le=n.parseInt,se=vt.random,pe=_t.reverse,ve=Ko(n,"DataView"),he=Ko(n,"Map"),de=Ko(n,"Promise"),ye=Ko(n,"Set"),ge=Ko(n,"WeakMap"),_e=Ko(ht,"create"),me=ge&&new ge,be={},we=wi(ve),xe=wi(he),Se=wi(de),ke=wi(ye),Oe=wi(ge),je=zt?zt.prototype:void 0,Ae=je?je.valueOf:void 0,Ee=je?je.toString:void 0;function Le(t){if(Mu(t)&&!Au(t)&&!(t instanceof LazyWrapper)){if(t instanceof LodashWrapper)return t;if(St.call(t,"__wrapped__"))return xi(t)}return new LodashWrapper(t)}var Te=function(){function t(){}return function(n){if(!Wu(n))return{};if(Gt)return Gt(n);t.prototype=n;var e=new t;return t.prototype=void 0,e}}();function Re(){}function LodashWrapper(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=void 0}function LazyWrapper(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Hash(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n=n?t:n)),t}function He(t,n,e,r,o,i){var a,l=1&n,b=2&n,R=4&n;if(e&&(a=o?e(t,r,o,i):e(t)),void 0!==a)return a;if(!Wu(t))return t;var C=Au(t);if(C){if(a=function(t){var n=t.length,e=new t.constructor(n);n&&"string"==typeof t[0]&&St.call(t,"index")&&(e.index=t.index,e.input=t.input);return e}(t),!l)return so(t,a)}else{var I=Jo(t),z=I==s||I==p;if(Ru(t))return io(t,l);if(I==d||I==u||z&&!o){if(a=b||z?{}:Xo(t),!l)return b?function(t,n){return po(t,Yo(t),n)}(t,function(t,n){return t&&po(n,da(n),t)}(a,t)):function(t,n){return po(t,Zo(t),n)}(t,Ue(a,t))}else{if(!Nt[I])return o?t:{};a=function(t,n,e){var r=t.constructor;switch(n){case w:return uo(t);case c:case f:return new r(+t);case x:return function(t,n){var e=n?uo(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}(t,e);case S:case k:case O:case j:case A:case E:case"[object Uint8ClampedArray]":case L:case T:return ao(t,e);case v:return new r;case h:case _:return new r(t);case y:return function(t){var n=new t.constructor(t.source,nt.exec(t));return n.lastIndex=t.lastIndex,n}(t);case g:return new r;case m:return o=t,Ae?ht(Ae.call(o)):{}}var o}(t,I,l)}}i||(i=new Stack);var D=i.get(t);if(D)return D;i.set(t,a),qu(t)?t.forEach((function(r){a.add(He(r,n,e,r,t,i))})):Nu(t)&&t.forEach((function(r,o){a.set(o,He(r,n,e,o,t,i))}));var P=C?void 0:(R?b?Fo:Uo:b?da:ha)(t);return un(P||t,(function(r,o){P&&(r=t[o=r]),We(a,o,He(r,n,e,o,t,i))})),a}function $e(t,n,e){var r=e.length;if(null==t)return!r;for(t=ht(t);r--;){var o=e[r],i=n[o],u=t[o];if(void 0===u&&!(o in t)||!i(u))return!1}return!0}function Ge(t,n,e){if("function"!=typeof t)throw new gt(r);return hi((function(){t.apply(void 0,e)}),n)}function Ve(t,n,e,r){var o=-1,i=ln,u=!0,a=t.length,c=[],f=n.length;if(!a)return c;e&&(n=pn(n,Tn(e))),r?(i=sn,u=!1):n.length>=200&&(i=Cn,u=!1,n=new SetCache(n));t:for(;++o-1},ListCache.prototype.set=function(t,n){var e=this.__data__,r=Me(e,t);return r<0?(++this.size,e.push([t,n])):e[r][1]=n,this},MapCache.prototype.clear=function(){this.size=0,this.__data__={hash:new Hash,map:new(he||ListCache),string:new Hash}},MapCache.prototype.delete=function(t){var n=Go(this,t).delete(t);return this.size-=n?1:0,n},MapCache.prototype.get=function(t){return Go(this,t).get(t)},MapCache.prototype.has=function(t){return Go(this,t).has(t)},MapCache.prototype.set=function(t,n){var e=Go(this,t),r=e.size;return e.set(t,n),this.size+=e.size==r?0:1,this},SetCache.prototype.add=SetCache.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},SetCache.prototype.has=function(t){return this.__data__.has(t)},Stack.prototype.clear=function(){this.__data__=new ListCache,this.size=0},Stack.prototype.delete=function(t){var n=this.__data__,e=n.delete(t);return this.size=n.size,e},Stack.prototype.get=function(t){return this.__data__.get(t)},Stack.prototype.has=function(t){return this.__data__.has(t)},Stack.prototype.set=function(t,n){var e=this.__data__;if(e instanceof ListCache){var r=e.__data__;if(!he||r.length<199)return r.push([t,n]),this.size=++e.size,this;e=this.__data__=new MapCache(r)}return e.set(t,n),this.size=e.size,this};var Ke=yo(er),Ze=yo(rr,!0);function Ye(t,n){var e=!0;return Ke(t,(function(t,r,o){return e=!!n(t,r,o)})),e}function Je(t,n,e){for(var r=-1,o=t.length;++r0&&e(a)?n>1?Xe(a,n-1,e,r,o):vn(o,a):r||(o[o.length]=a)}return o}var tr=go(),nr=go(!0);function er(t,n){return t&&tr(t,n,ha)}function rr(t,n){return t&&nr(t,n,ha)}function or(t,n){return fn(n,(function(n){return zu(t[n])}))}function ir(t,n){for(var e=0,r=(n=no(n,t)).length;null!=t&&en}function fr(t,n){return null!=t&&St.call(t,n)}function lr(t,n){return null!=t&&n in ht(t)}function sr(t,n,e){for(var r=e?sn:ln,o=t[0].length,i=t.length,u=i,a=V(i),c=1/0,f=[];u--;){var l=t[u];u&&n&&(l=pn(l,Tn(n))),c=ce(l.length,c),a[u]=!e&&(n||o>=120&&l.length>=120)?new SetCache(u&&l):void 0}l=t[0];var s=-1,p=a[0];t:for(;++s=a)return c;var f=e[r];return c*("desc"==f?-1:1)}}return t.index-n.index}(t,n,e)}))}function Ar(t,n,e){for(var r=-1,o=n.length,i={};++r-1;)a!==t&&Zt.call(a,c,1),Zt.call(t,c,1);return t}function Lr(t,n){for(var e=t?n.length:0,r=e-1;e--;){var o=n[e];if(e==r||o!==i){var i=o;ni(o)?Zt.call(t,o,1):Vr(t,o)}}return t}function Tr(t,n){return t+ne(se()*(n-t+1))}function Rr(t,n){var e="";if(!t||n<1||n>9007199254740991)return e;do{n%2&&(e+=t),(n=ne(n/2))&&(t+=t)}while(n);return e}function Cr(t,n){return di(fi(t,n,Ua),t+"")}function Ir(t){return Ie(Sa(t))}function zr(t,n){var e=Sa(t);return _i(e,qe(n,0,e.length))}function Dr(t,n,e,r){if(!Wu(t))return t;for(var o=-1,i=(n=no(n,t)).length,u=i-1,a=t;null!=a&&++oo?0:o+n),(e=e>o?o:e)<0&&(e+=o),o=n>e?0:e-n>>>0,n>>>=0;for(var i=V(o);++r>>1,u=t[i];null!==u&&!$u(u)&&(e?u<=n:u=200){var f=n?null:Co(t);if(f)return qn(f);u=!1,o=Cn,c=new SetCache}else c=n?[]:a;t:for(;++r=r?t:Nr(t,n,e)}var oo=Jn||function(t){return $t.clearTimeout(t)};function io(t,n){if(n)return t.slice();var e=t.length,r=qt?qt(e):new t.constructor(e);return t.copy(r),r}function uo(t){var n=new t.constructor(t.byteLength);return new Ut(n).set(new Ut(t)),n}function ao(t,n){var e=n?uo(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}function co(t,n){if(t!==n){var e=void 0!==t,r=null===t,o=t==t,i=$u(t),u=void 0!==n,a=null===n,c=n==n,f=$u(n);if(!a&&!f&&!i&&t>n||i&&u&&c&&!a&&!f||r&&u&&c||!e&&c||!o)return 1;if(!r&&!i&&!f&&t1?e[o-1]:void 0,u=o>2?e[2]:void 0;for(i=t.length>3&&"function"==typeof i?(o--,i):void 0,u&&ei(e[0],e[1],u)&&(i=o<3?void 0:i,o=1),n=ht(n);++r-1?o[i?n[u]:u]:void 0}}function xo(t){return No((function(n){var e=n.length,o=e,i=LodashWrapper.prototype.thru;for(t&&n.reverse();o--;){var u=n[o];if("function"!=typeof u)throw new gt(r);if(i&&!a&&"wrapper"==qo(u))var a=new LodashWrapper([],!0)}for(o=a?o:e;++o1&&_.reverse(),l&&ca))return!1;var f=i.get(t),l=i.get(n);if(f&&l)return f==n&&l==t;var s=-1,p=!0,v=2&e?new SetCache:void 0;for(i.set(t,n),i.set(n,t);++s-1&&t%1==0&&t1?"& ":"")+n[r],n=n.join(e>2?", ":" "),t.replace(K,"{\n/* [wrapped with "+n+"] */\n")}(r,function(t,n){return un(i,(function(e){var r="_."+e[0];n&e[1]&&!ln(t,r)&&t.push(r)})),t.sort()}(function(t){var n=t.match(Z);return n?n[1].split(Y):[]}(r),e)))}function gi(t){var n=0,e=0;return function(){var r=fe(),o=16-(r-e);if(e=r,o>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(void 0,arguments)}}function _i(t,n){var e=-1,r=t.length,o=r-1;for(n=void 0===n?r:n;++e1?t[n-1]:void 0;return e="function"==typeof e?(t.pop(),e):void 0,Bi(t,e)}));function Zi(t){var n=Le(t);return n.__chain__=!0,n}function Yi(t,n){return n(t)}var Ji=No((function(t){var n=t.length,e=n?t[0]:0,r=this.__wrapped__,o=function(n){return Be(n,t)};return!(n>1||this.__actions__.length)&&r instanceof LazyWrapper&&ni(e)?((r=r.slice(e,+e+(n?1:0))).__actions__.push({func:Yi,args:[o],thisArg:void 0}),new LodashWrapper(r,this.__chain__).thru((function(t){return n&&!t.length&&t.push(void 0),t}))):this.thru(o)}));var Qi=vo((function(t,n,e){St.call(t,e)?++t[e]:Fe(t,e,1)}));var Xi=wo(ji),tu=wo(Ai);function nu(t,n){return(Au(t)?un:Ke)(t,$o(n,3))}function eu(t,n){return(Au(t)?an:Ze)(t,$o(n,3))}var ru=vo((function(t,n,e){St.call(t,e)?t[e].push(n):Fe(t,e,[n])}));var ou=Cr((function(t,n,e){var r=-1,o="function"==typeof n,i=Lu(t)?V(t.length):[];return Ke(t,(function(t){i[++r]=o?rn(n,t,e):pr(t,n,e)})),i})),iu=vo((function(t,n,e){Fe(t,e,n)}));function uu(t,n){return(Au(t)?pn:wr)(t,$o(n,3))}var au=vo((function(t,n,e){t[e?0:1].push(n)}),(function(){return[[],[]]}));var cu=Cr((function(t,n){if(null==t)return[];var e=n.length;return e>1&&ei(t,n[0],n[1])?n=[]:e>2&&ei(n[0],n[1],n[2])&&(n=[n[0]]),jr(t,Xe(n,1),[])})),fu=Qn||function(){return $t.Date.now()};function lu(t,n,e){return n=e?void 0:n,zo(t,128,void 0,void 0,void 0,void 0,n=t&&null==n?t.length:n)}function su(t,n){var e;if("function"!=typeof n)throw new gt(r);return t=Ju(t),function(){return--t>0&&(e=n.apply(this,arguments)),t<=1&&(n=void 0),e}}var pu=Cr((function(t,n,e){var r=1;if(e.length){var o=Bn(e,Ho(pu));r|=32}return zo(t,r,n,e,o)})),vu=Cr((function(t,n,e){var r=3;if(e.length){var o=Bn(e,Ho(vu));r|=32}return zo(n,r,t,e,o)}));function hu(t,n,e){var o,i,u,a,c,f,l=0,s=!1,p=!1,v=!0;if("function"!=typeof t)throw new gt(r);function h(n){var e=o,r=i;return o=i=void 0,l=n,a=t.apply(r,e)}function d(t){return l=t,c=hi(g,n),s?h(t):a}function y(t){var e=t-f;return void 0===f||e>=n||e<0||p&&t-l>=u}function g(){var t=fu();if(y(t))return _(t);c=hi(g,function(t){var e=n-(t-f);return p?ce(e,u-(t-l)):e}(t))}function _(t){return c=void 0,v&&o?h(t):(o=i=void 0,a)}function m(){var t=fu(),e=y(t);if(o=arguments,i=this,f=t,e){if(void 0===c)return d(f);if(p)return oo(c),c=hi(g,n),h(f)}return void 0===c&&(c=hi(g,n)),a}return n=Xu(n)||0,Wu(e)&&(s=!!e.leading,u=(p="maxWait"in e)?ae(Xu(e.maxWait)||0,n):u,v="trailing"in e?!!e.trailing:v),m.cancel=function(){void 0!==c&&oo(c),l=0,o=f=i=c=void 0},m.flush=function(){return void 0===c?a:_(fu())},m}var du=Cr((function(t,n){return Ge(t,1,n)})),yu=Cr((function(t,n,e){return Ge(t,Xu(n)||0,e)}));function gu(t,n){if("function"!=typeof t||null!=n&&"function"!=typeof n)throw new gt(r);var e=function(){var r=arguments,o=n?n.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var u=t.apply(this,r);return e.cache=i.set(o,u)||i,u};return e.cache=new(gu.Cache||MapCache),e}function _u(t){if("function"!=typeof t)throw new gt(r);return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}gu.Cache=MapCache;var mu=eo((function(t,n){var e=(n=1==n.length&&Au(n[0])?pn(n[0],Tn($o())):pn(Xe(n,1),Tn($o()))).length;return Cr((function(r){for(var o=-1,i=ce(r.length,e);++o=n})),ju=vr(function(){return arguments}())?vr:function(t){return Mu(t)&&St.call(t,"callee")&&!Vt.call(t,"callee")},Au=V.isArray,Eu=Jt?Tn(Jt):function(t){return Mu(t)&&ar(t)==w};function Lu(t){return null!=t&&Pu(t.length)&&!zu(t)}function Tu(t){return Mu(t)&&Lu(t)}var Ru=re||Xa,Cu=Qt?Tn(Qt):function(t){return Mu(t)&&ar(t)==f};function Iu(t){if(!Mu(t))return!1;var n=ar(t);return n==l||"[object DOMException]"==n||"string"==typeof t.message&&"string"==typeof t.name&&!Fu(t)}function zu(t){if(!Wu(t))return!1;var n=ar(t);return n==s||n==p||"[object AsyncFunction]"==n||"[object Proxy]"==n}function Du(t){return"number"==typeof t&&t==Ju(t)}function Pu(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Wu(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function Mu(t){return null!=t&&"object"==typeof t}var Nu=Xt?Tn(Xt):function(t){return Mu(t)&&Jo(t)==v};function Uu(t){return"number"==typeof t||Mu(t)&&ar(t)==h}function Fu(t){if(!Mu(t)||ar(t)!=d)return!1;var n=Ht(t);if(null===n)return!0;var e=St.call(n,"constructor")&&n.constructor;return"function"==typeof e&&e instanceof e&&xt.call(e)==At}var Bu=tn?Tn(tn):function(t){return Mu(t)&&ar(t)==y};var qu=nn?Tn(nn):function(t){return Mu(t)&&Jo(t)==g};function Hu(t){return"string"==typeof t||!Au(t)&&Mu(t)&&ar(t)==_}function $u(t){return"symbol"==typeof t||Mu(t)&&ar(t)==m}var Gu=en?Tn(en):function(t){return Mu(t)&&Pu(t.length)&&!!Mt[ar(t)]};var Vu=Lo(br),Ku=Lo((function(t,n){return t<=n}));function Zu(t){if(!t)return[];if(Lu(t))return Hu(t)?Gn(t):so(t);if(gn&&t[gn])return function(t){for(var n,e=[];!(n=t.next()).done;)e.push(n.value);return e}(t[gn]());var n=Jo(t);return(n==v?Un:n==g?qn:Sa)(t)}function Yu(t){return t?(t=Xu(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function Ju(t){var n=Yu(t),e=n%1;return n==n?e?n-e:n:0}function Qu(t){return t?qe(Ju(t),0,4294967295):0}function Xu(t){if("number"==typeof t)return t;if($u(t))return NaN;if(Wu(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=Wu(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=Ln(t);var e=rt.test(t);return e||it.test(t)?Bt(t.slice(2),e?2:8):et.test(t)?NaN:+t}function ta(t){return po(t,da(t))}function na(t){return null==t?"":$r(t)}var ea=ho((function(t,n){if(ui(n)||Lu(n))po(n,ha(n),t);else for(var e in n)St.call(n,e)&&We(t,e,n[e])})),ra=ho((function(t,n){po(n,da(n),t)})),oa=ho((function(t,n,e,r){po(n,da(n),t,r)})),ia=ho((function(t,n,e,r){po(n,ha(n),t,r)})),ua=No(Be);var aa=Cr((function(t,n){t=ht(t);var e=-1,r=n.length,o=r>2?n[2]:void 0;for(o&&ei(n[0],n[1],o)&&(r=1);++e1),n})),po(t,Fo(t),e),r&&(e=He(e,7,Wo));for(var o=n.length;o--;)Vr(e,n[o]);return e}));var ma=No((function(t,n){return null==t?{}:function(t,n){return Ar(t,n,(function(n,e){return la(t,e)}))}(t,n)}));function ba(t,n){if(null==t)return{};var e=pn(Fo(t),(function(t){return[t]}));return n=$o(n),Ar(t,e,(function(t,e){return n(t,e[0])}))}var wa=Io(ha),xa=Io(da);function Sa(t){return null==t?[]:Rn(t,ha(t))}var ka=mo((function(t,n,e){return n=n.toLowerCase(),t+(e?Oa(n):n)}));function Oa(t){return Ia(na(t).toLowerCase())}function ja(t){return(t=na(t))&&t.replace(at,Pn).replace(Rt,"")}var Aa=mo((function(t,n,e){return t+(e?"-":"")+n.toLowerCase()})),Ea=mo((function(t,n,e){return t+(e?" ":"")+n.toLowerCase()})),La=_o("toLowerCase");var Ta=mo((function(t,n,e){return t+(e?"_":"")+n.toLowerCase()}));var Ra=mo((function(t,n,e){return t+(e?" ":"")+Ia(n)}));var Ca=mo((function(t,n,e){return t+(e?" ":"")+n.toUpperCase()})),Ia=_o("toUpperCase");function za(t,n,e){return t=na(t),void 0===(n=e?void 0:n)?function(t){return Dt.test(t)}(t)?function(t){return t.match(It)||[]}(t):function(t){return t.match(J)||[]}(t):t.match(n)||[]}var Da=Cr((function(t,n){try{return rn(t,void 0,n)}catch(t){return Iu(t)?t:new st(t)}})),Pa=No((function(t,n){return un(n,(function(n){n=bi(n),Fe(t,n,pu(t[n],t))})),t}));function Wa(t){return function(){return t}}var Ma=xo(),Na=xo(!0);function Ua(t){return t}function Fa(t){return gr("function"==typeof t?t:He(t,1))}var Ba=Cr((function(t,n){return function(e){return pr(e,t,n)}})),qa=Cr((function(t,n){return function(e){return pr(t,e,n)}}));function Ha(t,n,e){var r=ha(n),o=or(n,r);null!=e||Wu(n)&&(o.length||!r.length)||(e=n,n=t,t=this,o=or(n,ha(n)));var i=!(Wu(e)&&"chain"in e&&!e.chain),u=zu(t);return un(o,(function(e){var r=n[e];t[e]=r,u&&(t.prototype[e]=function(){var n=this.__chain__;if(i||n){var e=t(this.__wrapped__),o=e.__actions__=so(this.__actions__);return o.push({func:r,args:arguments,thisArg:t}),e.__chain__=n,e}return r.apply(t,vn([this.value()],arguments))})})),t}function $a(){}var Ga=jo(pn),Va=jo(cn),Ka=jo(yn);function Za(t){return ri(t)?kn(bi(t)):function(t){return function(n){return ir(n,t)}}(t)}var Ya=Eo(),Ja=Eo(!0);function Qa(){return[]}function Xa(){return!1}var tc=Oo((function(t,n){return t+n}),0),nc=Ro("ceil"),ec=Oo((function(t,n){return t/n}),1),rc=Ro("floor");var oc,ic=Oo((function(t,n){return t*n}),1),uc=Ro("round"),ac=Oo((function(t,n){return t-n}),0);return Le.after=function(t,n){if("function"!=typeof n)throw new gt(r);return t=Ju(t),function(){if(--t<1)return n.apply(this,arguments)}},Le.ary=lu,Le.assign=ea,Le.assignIn=ra,Le.assignInWith=oa,Le.assignWith=ia,Le.at=ua,Le.before=su,Le.bind=pu,Le.bindAll=Pa,Le.bindKey=vu,Le.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Au(t)?t:[t]},Le.chain=Zi,Le.chunk=function(t,n,e){n=(e?ei(t,n,e):void 0===n)?1:ae(Ju(n),0);var r=null==t?0:t.length;if(!r||n<1)return[];for(var o=0,i=0,u=V(te(r/n));oo?0:o+e),(r=void 0===r||r>o?o:Ju(r))<0&&(r+=o),r=e>r?0:Qu(r);e>>0)?(t=na(t))&&("string"==typeof n||null!=n&&!Bu(n))&&!(n=$r(n))&&Nn(t)?ro(Gn(t),0,e):t.split(n,e):[]},Le.spread=function(t,n){if("function"!=typeof t)throw new gt(r);return n=null==n?0:ae(Ju(n),0),Cr((function(e){var r=e[n],o=ro(e,0,n);return r&&vn(o,r),rn(t,this,o)}))},Le.tail=function(t){var n=null==t?0:t.length;return n?Nr(t,1,n):[]},Le.take=function(t,n,e){return t&&t.length?Nr(t,0,(n=e||void 0===n?1:Ju(n))<0?0:n):[]},Le.takeRight=function(t,n,e){var r=null==t?0:t.length;return r?Nr(t,(n=r-(n=e||void 0===n?1:Ju(n)))<0?0:n,r):[]},Le.takeRightWhile=function(t,n){return t&&t.length?Zr(t,$o(n,3),!1,!0):[]},Le.takeWhile=function(t,n){return t&&t.length?Zr(t,$o(n,3)):[]},Le.tap=function(t,n){return n(t),t},Le.throttle=function(t,n,e){var o=!0,i=!0;if("function"!=typeof t)throw new gt(r);return Wu(e)&&(o="leading"in e?!!e.leading:o,i="trailing"in e?!!e.trailing:i),hu(t,n,{leading:o,maxWait:n,trailing:i})},Le.thru=Yi,Le.toArray=Zu,Le.toPairs=wa,Le.toPairsIn=xa,Le.toPath=function(t){return Au(t)?pn(t,bi):$u(t)?[t]:so(mi(na(t)))},Le.toPlainObject=ta,Le.transform=function(t,n,e){var r=Au(t),o=r||Ru(t)||Gu(t);if(n=$o(n,4),null==e){var i=t&&t.constructor;e=o?r?new i:[]:Wu(t)&&zu(i)?Te(Ht(t)):{}}return(o?un:er)(t,(function(t,r,o){return n(e,t,r,o)})),e},Le.unary=function(t){return lu(t,1)},Le.union=Mi,Le.unionBy=Ni,Le.unionWith=Ui,Le.uniq=function(t){return t&&t.length?Gr(t):[]},Le.uniqBy=function(t,n){return t&&t.length?Gr(t,$o(n,2)):[]},Le.uniqWith=function(t,n){return n="function"==typeof n?n:void 0,t&&t.length?Gr(t,void 0,n):[]},Le.unset=function(t,n){return null==t||Vr(t,n)},Le.unzip=Fi,Le.unzipWith=Bi,Le.update=function(t,n,e){return null==t?t:Kr(t,n,to(e))},Le.updateWith=function(t,n,e,r){return r="function"==typeof r?r:void 0,null==t?t:Kr(t,n,to(e),r)},Le.values=Sa,Le.valuesIn=function(t){return null==t?[]:Rn(t,da(t))},Le.without=qi,Le.words=za,Le.wrap=function(t,n){return bu(to(n),t)},Le.xor=Hi,Le.xorBy=$i,Le.xorWith=Gi,Le.zip=Vi,Le.zipObject=function(t,n){return Qr(t||[],n||[],We)},Le.zipObjectDeep=function(t,n){return Qr(t||[],n||[],Dr)},Le.zipWith=Ki,Le.entries=wa,Le.entriesIn=xa,Le.extend=ra,Le.extendWith=oa,Ha(Le,Le),Le.add=tc,Le.attempt=Da,Le.camelCase=ka,Le.capitalize=Oa,Le.ceil=nc,Le.clamp=function(t,n,e){return void 0===e&&(e=n,n=void 0),void 0!==e&&(e=(e=Xu(e))==e?e:0),void 0!==n&&(n=(n=Xu(n))==n?n:0),qe(Xu(t),n,e)},Le.clone=function(t){return He(t,4)},Le.cloneDeep=function(t){return He(t,5)},Le.cloneDeepWith=function(t,n){return He(t,5,n="function"==typeof n?n:void 0)},Le.cloneWith=function(t,n){return He(t,4,n="function"==typeof n?n:void 0)},Le.conformsTo=function(t,n){return null==n||$e(t,n,ha(n))},Le.deburr=ja,Le.defaultTo=function(t,n){return null==t||t!=t?n:t},Le.divide=ec,Le.endsWith=function(t,n,e){t=na(t),n=$r(n);var r=t.length,o=e=void 0===e?r:qe(Ju(e),0,r);return(e-=n.length)>=0&&t.slice(e,o)==n},Le.eq=Su,Le.escape=function(t){return(t=na(t))&&W.test(t)?t.replace(D,Wn):t},Le.escapeRegExp=function(t){return(t=na(t))&&$.test(t)?t.replace(H,"\\$&"):t},Le.every=function(t,n,e){var r=Au(t)?cn:Ye;return e&&ei(t,n,e)&&(n=void 0),r(t,$o(n,3))},Le.find=Xi,Le.findIndex=ji,Le.findKey=function(t,n){return _n(t,$o(n,3),er)},Le.findLast=tu,Le.findLastIndex=Ai,Le.findLastKey=function(t,n){return _n(t,$o(n,3),rr)},Le.floor=rc,Le.forEach=nu,Le.forEachRight=eu,Le.forIn=function(t,n){return null==t?t:tr(t,$o(n,3),da)},Le.forInRight=function(t,n){return null==t?t:nr(t,$o(n,3),da)},Le.forOwn=function(t,n){return t&&er(t,$o(n,3))},Le.forOwnRight=function(t,n){return t&&rr(t,$o(n,3))},Le.get=fa,Le.gt=ku,Le.gte=Ou,Le.has=function(t,n){return null!=t&&Qo(t,n,fr)},Le.hasIn=la,Le.head=Li,Le.identity=Ua,Le.includes=function(t,n,e,r){t=Lu(t)?t:Sa(t),e=e&&!r?Ju(e):0;var o=t.length;return e<0&&(e=ae(o+e,0)),Hu(t)?e<=o&&t.indexOf(n,e)>-1:!!o&&bn(t,n,e)>-1},Le.indexOf=function(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var o=null==e?0:Ju(e);return o<0&&(o=ae(r+o,0)),bn(t,n,o)},Le.inRange=function(t,n,e){return n=Yu(n),void 0===e?(e=n,n=0):e=Yu(e),function(t,n,e){return t>=ce(n,e)&&t=-9007199254740991&&t<=9007199254740991},Le.isSet=qu,Le.isString=Hu,Le.isSymbol=$u,Le.isTypedArray=Gu,Le.isUndefined=function(t){return void 0===t},Le.isWeakMap=function(t){return Mu(t)&&Jo(t)==b},Le.isWeakSet=function(t){return Mu(t)&&"[object WeakSet]"==ar(t)},Le.join=function(t,n){return null==t?"":ie.call(t,n)},Le.kebabCase=Aa,Le.last=Ii,Le.lastIndexOf=function(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var o=r;return void 0!==e&&(o=(o=Ju(e))<0?ae(r+o,0):ce(o,r-1)),n==n?function(t,n,e){for(var r=e+1;r--;)if(t[r]===n)return r;return r}(t,n,o):mn(t,xn,o,!0)},Le.lowerCase=Ea,Le.lowerFirst=La,Le.lt=Vu,Le.lte=Ku,Le.max=function(t){return t&&t.length?Je(t,Ua,cr):void 0},Le.maxBy=function(t,n){return t&&t.length?Je(t,$o(n,2),cr):void 0},Le.mean=function(t){return Sn(t,Ua)},Le.meanBy=function(t,n){return Sn(t,$o(n,2))},Le.min=function(t){return t&&t.length?Je(t,Ua,br):void 0},Le.minBy=function(t,n){return t&&t.length?Je(t,$o(n,2),br):void 0},Le.stubArray=Qa,Le.stubFalse=Xa,Le.stubObject=function(){return{}},Le.stubString=function(){return""},Le.stubTrue=function(){return!0},Le.multiply=ic,Le.nth=function(t,n){return t&&t.length?Or(t,Ju(n)):void 0},Le.noConflict=function(){return $t._===this&&($t._=Et),this},Le.noop=$a,Le.now=fu,Le.pad=function(t,n,e){t=na(t);var r=(n=Ju(n))?$n(t):0;if(!n||r>=n)return t;var o=(n-r)/2;return Ao(ne(o),e)+t+Ao(te(o),e)},Le.padEnd=function(t,n,e){t=na(t);var r=(n=Ju(n))?$n(t):0;return n&&rn){var r=t;t=n,n=r}if(e||t%1||n%1){var o=se();return ce(t+o*(n-t+Ft("1e-"+((o+"").length-1))),n)}return Tr(t,n)},Le.reduce=function(t,n,e){var r=Au(t)?hn:jn,o=arguments.length<3;return r(t,$o(n,4),e,o,Ke)},Le.reduceRight=function(t,n,e){var r=Au(t)?dn:jn,o=arguments.length<3;return r(t,$o(n,4),e,o,Ze)},Le.repeat=function(t,n,e){return n=(e?ei(t,n,e):void 0===n)?1:Ju(n),Rr(na(t),n)},Le.replace=function(){var t=arguments,n=na(t[0]);return t.length<3?n:n.replace(t[1],t[2])},Le.result=function(t,n,e){var r=-1,o=(n=no(n,t)).length;for(o||(o=1,t=void 0);++r9007199254740991)return[];var e=4294967295,r=ce(t,4294967295);t-=4294967295;for(var o=En(r,n=$o(n));++e=i)return t;var a=e-$n(r);if(a<1)return r;var c=u?ro(u,0,a).join(""):t.slice(0,a);if(void 0===o)return c+r;if(u&&(a+=c.length-a),Bu(o)){if(t.slice(a).search(o)){var f,l=c;for(o.global||(o=dt(o.source,na(nt.exec(o))+"g")),o.lastIndex=0;f=o.exec(l);)var s=f.index;c=c.slice(0,void 0===s?a:s)}}else if(t.indexOf($r(o),a)!=a){var p=c.lastIndexOf(o);p>-1&&(c=c.slice(0,p))}return c+r},Le.unescape=function(t){return(t=na(t))&&P.test(t)?t.replace(z,Kn):t},Le.uniqueId=function(t){var n=++kt;return na(t)+n},Le.upperCase=Ca,Le.upperFirst=Ia,Le.each=nu,Le.eachRight=eu,Le.first=Li,Ha(Le,(oc={},er(Le,(function(t,n){St.call(Le.prototype,n)||(oc[n]=t)})),oc),{chain:!1}),Le.VERSION="4.17.21",un(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Le[t].placeholder=Le})),un(["drop","take"],(function(t,n){LazyWrapper.prototype[t]=function(e){e=void 0===e?1:ae(Ju(e),0);var r=this.__filtered__&&!n?new LazyWrapper(this):this.clone();return r.__filtered__?r.__takeCount__=ce(e,r.__takeCount__):r.__views__.push({size:ce(e,4294967295),type:t+(r.__dir__<0?"Right":"")}),r},LazyWrapper.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}})),un(["filter","map","takeWhile"],(function(t,n){var e=n+1,r=1==e||3==e;LazyWrapper.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:$o(t,3),type:e}),n.__filtered__=n.__filtered__||r,n}})),un(["head","last"],(function(t,n){var e="take"+(n?"Right":"");LazyWrapper.prototype[t]=function(){return this[e](1).value()[0]}})),un(["initial","tail"],(function(t,n){var e="drop"+(n?"":"Right");LazyWrapper.prototype[t]=function(){return this.__filtered__?new LazyWrapper(this):this[e](1)}})),LazyWrapper.prototype.compact=function(){return this.filter(Ua)},LazyWrapper.prototype.find=function(t){return this.filter(t).head()},LazyWrapper.prototype.findLast=function(t){return this.reverse().find(t)},LazyWrapper.prototype.invokeMap=Cr((function(t,n){return"function"==typeof t?new LazyWrapper(this):this.map((function(e){return pr(e,t,n)}))})),LazyWrapper.prototype.reject=function(t){return this.filter(_u($o(t)))},LazyWrapper.prototype.slice=function(t,n){t=Ju(t);var e=this;return e.__filtered__&&(t>0||n<0)?new LazyWrapper(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),void 0!==n&&(e=(n=Ju(n))<0?e.dropRight(-n):e.take(n-t)),e)},LazyWrapper.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},LazyWrapper.prototype.toArray=function(){return this.take(4294967295)},er(LazyWrapper.prototype,(function(t,n){var e=/^(?:filter|find|map|reject)|While$/.test(n),r=/^(?:head|last)$/.test(n),o=Le[r?"take"+("last"==n?"Right":""):n],i=r||/^find/.test(n);o&&(Le.prototype[n]=function(){var n=this.__wrapped__,u=r?[1]:arguments,a=n instanceof LazyWrapper,c=u[0],f=a||Au(n),l=function(t){var n=o.apply(Le,vn([t],u));return r&&s?n[0]:n};f&&e&&"function"==typeof c&&1!=c.length&&(a=f=!1);var s=this.__chain__,p=!!this.__actions__.length,v=i&&!s,h=a&&!p;if(!i&&f){n=h?n:new LazyWrapper(this);var d=t.apply(n,u);return d.__actions__.push({func:Yi,args:[l],thisArg:void 0}),new LodashWrapper(d,s)}return v&&h?t.apply(this,u):(d=this.thru(l),v?r?d.value()[0]:d.value():d)})})),un(["pop","push","shift","sort","splice","unshift"],(function(t){var n=_t[t],e=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);Le.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var o=this.value();return n.apply(Au(o)?o:[],t)}return this[e]((function(e){return n.apply(Au(e)?e:[],t)}))}})),er(LazyWrapper.prototype,(function(t,n){var e=Le[n];if(e){var r=e.name+"";St.call(be,r)||(be[r]=[]),be[r].push({name:n,func:e})}})),be[So(void 0,2).name]=[{name:"wrapper",func:void 0}],LazyWrapper.prototype.clone=function(){var t=new LazyWrapper(this.__wrapped__);return t.__actions__=so(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=so(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=so(this.__views__),t},LazyWrapper.prototype.reverse=function(){if(this.__filtered__){var t=new LazyWrapper(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},LazyWrapper.prototype.value=function(){var t=this.__wrapped__.value(),n=this.__dir__,e=Au(t),r=n<0,o=e?t.length:0,i=function(t,n,e){var r=-1,o=e.length;for(;++r=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},Le.prototype.plant=function(t){for(var n,e=this;e instanceof Re;){var r=xi(e);r.__index__=0,r.__values__=void 0,n?o.__wrapped__=r:n=r;var o=r;e=e.__wrapped__}return o.__wrapped__=t,n},Le.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof LazyWrapper){var n=t;return this.__actions__.length&&(n=new LazyWrapper(this)),(n=n.reverse()).__actions__.push({func:Yi,args:[Wi],thisArg:void 0}),new LodashWrapper(n,this.__chain__)}return this.thru(Wi)},Le.prototype.toJSON=Le.prototype.valueOf=Le.prototype.value=function(){return Yr(this.__wrapped__,this.__actions__)},Le.prototype.first=Le.prototype.head,gn&&(Le.prototype[gn]=function(){return this}),Le}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?($t._=Zn,define((function(){return Zn}))):Vt?((Vt.exports=Zn)._=Zn,Gt._=Zn):$t._=Zn}).call(this)}).call(this,e(4),e(64)(t))},function(t,n){function e(t,n,e,r,o,i,u){try{var a=t[i](u),c=a.value}catch(t){return void e(t)}a.done?n(c):Promise.resolve(c).then(r,o)}t.exports=function(t){return function(){var n=this,r=arguments;return new Promise((function(o,i){var u=t.apply(n,r);function _next(t){e(u,o,i,_next,a,"next",t)}function a(t){e(u,o,i,_next,a,"throw",t)}_next(void 0)}))}}},function(t,n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},function(t,n,e){"use strict";e.d(n,"a",(function(){return r})),e.d(n,"b",(function(){return o}));var r="_googlesitekitDataLayer",o="data-googlesitekit-gtag"},function(t,n){function e(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=e=function(t){return typeof t}:t.exports=e=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(n)}t.exports=e},function(t,n){t.exports=function(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}},function(t,n,e){var r=e(60),o=e(61),i=e(18),u=e(62);t.exports=function(t,n){return r(t)||o(t,n)||i(t,n)||u()}},function(t,n){t.exports=wp.data},function(t,n,e){t.exports=e(65)()},function(t,n,e){"use strict";e.d(n,"a",(function(){return o}));var r=e(5);function o(t){return function(){t[r.a]=t[r.a]||[],t[r.a].push(arguments)}}},function(t,n,e){"use strict";t.exports=function(t,n,e,r,o,i,u,a){if(!t){var c;if(void 0===n)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var f=[e,r,o,i,u,a],l=0;(c=new Error(n.replace(/%s/g,(function(){return f[l++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},function(t,n,e){var r=e(19).Symbol;t.exports=r},function(t,n,e){"use strict";(function(t){e.d(n,"a",(function(){return g})),e.d(n,"b",(function(){return _}));var r=e(1),o=e.n(r),i=e(3),u=e.n(i),a=(e(25),e(39));function c(t,n){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=function(t,n){if(!t)return;if("string"==typeof t)return f(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return f(t,n)}(t))||n&&t&&"number"==typeof t.length){e&&(t=e);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return u=t.done,t},e:function(t){a=!0,i=t},f:function(){try{u||null==e.return||e.return()}finally{if(a)throw i}}}}function f(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e2&&void 0!==y[2]?y[2]:{},u=i.ttl,c=void 0===u?a.a:u,f=i.timestamp,l=void 0===f?Math.round(Date.now()/1e3):f,p=i.isError,v=void 0!==p&&p,n.next=3,d();case 3:if(!(h=n.sent)){n.next=14;break}return n.prev=5,h.setItem("".concat(s).concat(e),JSON.stringify({timestamp:l,ttl:c,value:r,isError:v})),n.abrupt("return",!0);case 10:return n.prev=10,n.t0=n.catch(5),t.console.warn("Encountered an unexpected storage error:",n.t0),n.abrupt("return",!1);case 14:return n.abrupt("return",!1);case 15:case"end":return n.stop()}}),n,null,[[5,10]])})));return function(t,e){return n.apply(this,arguments)}}()}).call(this,e(4))},function(t,n,e){var r=e(63);t.exports=function(t,n){if(null==t)return{};var e,o,i=r(t,n);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(i[e]=t[e])}return i}},,function(t,n){t.exports=function(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e1&&void 0!==arguments[1]?arguments[1]:t,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,o=c(c({},f),n);o.referenceSiteURL&&(o.referenceSiteURL=o.referenceSiteURL.toString().replace(/\/+$/,""));var a=Object(i.a)(o,e);return{enableTracking:function(){o.trackingEnabled=!0},disableTracking:function(){o.trackingEnabled=!1},initializeSnippet:a,isTrackingEnabled:function(){return!!o.trackingEnabled},trackEvent:Object(u.a)(o,e,a,r)}}}).call(this,e(4))},function(t,n,e){"use strict";(function(t){e.d(n,"a",(function(){return i}));var r=e(11),o=e(5);function i(n,e){var i,u=Object(r.a)(e);return function(){var e=t.document;if(void 0===i&&(i=!!e.querySelector("script[".concat(o.b,"]"))),!i){var r=e.createElement("script");r.setAttribute(o.b,""),r.async=!0,r.src="https://www.googletagmanager.com/gtag/js?id=".concat(n.trackingID,"&l=").concat(o.a),e.head.appendChild(r),u("js",new Date),u("config",n.trackingID,{send_page_view:n.isSiteKitScreen}),i=!0}}}}).call(this,e(4))},function(t,n,e){"use strict";e.d(n,"a",(function(){return v}));var r=e(1),o=e.n(r),i=e(7),u=e.n(i),a=e(3),c=e.n(a),f=e(11),l=e(31);function s(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function p(t){for(var n=1;n1?e-1:0),o=1;o/gm),N=u(/^data-[\-\w.\u00B7-\uFFFF]/),U=u(/^aria-[\-\w]+$/),F=u(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),B=u(/^(?:\w+script|data):/i),q=u(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function $(t){if(Array.isArray(t)){for(var n=0,e=Array(t.length);n0&&void 0!==arguments[0]?arguments[0]:G(),e=function DOMPurify(n){return t(n)};if(e.version="2.2.8",e.removed=[],!n||!n.document||9!==n.document.nodeType)return e.isSupported=!1,e;var r=n.document,o=n.document,u=n.DocumentFragment,a=n.HTMLTemplateElement,c=n.Node,f=n.Element,l=n.NodeFilter,s=n.NamedNodeMap,x=void 0===s?n.NamedNodeMap||n.MozNamedAttrMap:s,K=n.Text,Z=n.Comment,Y=n.DOMParser,J=n.trustedTypes,Q=f.prototype,X=O(Q,"cloneNode"),tt=O(Q,"nextSibling"),nt=O(Q,"childNodes"),et=O(Q,"parentNode");if("function"==typeof a){var rt=o.createElement("template");rt.content&&rt.content.ownerDocument&&(o=rt.content.ownerDocument)}var ot=V(J,r),it=ot&&Pt?ot.createHTML(""):"",ut=o,at=ut.implementation,ct=ut.createNodeIterator,ft=ut.createDocumentFragment,lt=r.importNode,st={};try{st=k(o).documentMode?o.documentMode:{}}catch(t){}var pt={};e.isSupported="function"==typeof et&&at&&void 0!==at.createHTMLDocument&&9!==st;var vt=W,ht=M,dt=N,yt=U,gt=B,_t=q,mt=F,bt=null,wt=S({},[].concat($(j),$(A),$(E),$(T),$(C))),xt=null,St=S({},[].concat($(I),$(z),$(D),$(P))),kt=null,Ot=null,jt=!0,At=!0,Et=!1,Lt=!1,Tt=!1,Rt=!1,Ct=!1,It=!1,zt=!1,Dt=!0,Pt=!1,Wt=!0,Mt=!0,Nt=!1,Ut={},Ft=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Bt=null,qt=S({},["audio","video","img","source","image","track"]),Ht=null,$t=S({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Gt="http://www.w3.org/1998/Math/MathML",Vt="http://www.w3.org/2000/svg",Kt="http://www.w3.org/1999/xhtml",Zt=Kt,Yt=null,Jt=o.createElement("form"),Qt=function(t){Yt&&Yt===t||(t&&"object"===(void 0===t?"undefined":H(t))||(t={}),t=k(t),bt="ALLOWED_TAGS"in t?S({},t.ALLOWED_TAGS):wt,xt="ALLOWED_ATTR"in t?S({},t.ALLOWED_ATTR):St,Ht="ADD_URI_SAFE_ATTR"in t?S(k($t),t.ADD_URI_SAFE_ATTR):$t,Bt="ADD_DATA_URI_TAGS"in t?S(k(qt),t.ADD_DATA_URI_TAGS):qt,kt="FORBID_TAGS"in t?S({},t.FORBID_TAGS):{},Ot="FORBID_ATTR"in t?S({},t.FORBID_ATTR):{},Ut="USE_PROFILES"in t&&t.USE_PROFILES,jt=!1!==t.ALLOW_ARIA_ATTR,At=!1!==t.ALLOW_DATA_ATTR,Et=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Lt=t.SAFE_FOR_TEMPLATES||!1,Tt=t.WHOLE_DOCUMENT||!1,It=t.RETURN_DOM||!1,zt=t.RETURN_DOM_FRAGMENT||!1,Dt=!1!==t.RETURN_DOM_IMPORT,Pt=t.RETURN_TRUSTED_TYPE||!1,Ct=t.FORCE_BODY||!1,Wt=!1!==t.SANITIZE_DOM,Mt=!1!==t.KEEP_CONTENT,Nt=t.IN_PLACE||!1,mt=t.ALLOWED_URI_REGEXP||mt,Zt=t.NAMESPACE||Zt,Lt&&(At=!1),zt&&(It=!0),Ut&&(bt=S({},[].concat($(C))),xt=[],!0===Ut.html&&(S(bt,j),S(xt,I)),!0===Ut.svg&&(S(bt,A),S(xt,z),S(xt,P)),!0===Ut.svgFilters&&(S(bt,E),S(xt,z),S(xt,P)),!0===Ut.mathMl&&(S(bt,T),S(xt,D),S(xt,P))),t.ADD_TAGS&&(bt===wt&&(bt=k(bt)),S(bt,t.ADD_TAGS)),t.ADD_ATTR&&(xt===St&&(xt=k(xt)),S(xt,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&S(Ht,t.ADD_URI_SAFE_ATTR),Mt&&(bt["#text"]=!0),Tt&&S(bt,["html","head","body"]),bt.table&&(S(bt,["tbody"]),delete kt.tbody),i&&i(t),Yt=t)},Xt=S({},["mi","mo","mn","ms","mtext"]),tn=S({},["foreignobject","desc","title","annotation-xml"]),nn=S({},A);S(nn,E),S(nn,L);var en=S({},T);S(en,R);var rn=function(t){var n=et(t);n&&n.tagName||(n={namespaceURI:Kt,tagName:"template"});var e=d(t.tagName),r=d(n.tagName);if(t.namespaceURI===Vt)return n.namespaceURI===Kt?"svg"===e:n.namespaceURI===Gt?"svg"===e&&("annotation-xml"===r||Xt[r]):Boolean(nn[e]);if(t.namespaceURI===Gt)return n.namespaceURI===Kt?"math"===e:n.namespaceURI===Vt?"math"===e&&tn[r]:Boolean(en[e]);if(t.namespaceURI===Kt){if(n.namespaceURI===Vt&&!tn[r])return!1;if(n.namespaceURI===Gt&&!Xt[r])return!1;var o=S({},["title","style","font","a","script"]);return!en[e]&&(o[e]||!nn[e])}return!1},on=function(t){h(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(n){try{t.outerHTML=it}catch(n){t.remove()}}},un=function(t,n){try{h(e.removed,{attribute:n.getAttributeNode(t),from:n})}catch(t){h(e.removed,{attribute:null,from:n})}if(n.removeAttribute(t),"is"===t&&!xt[t])if(It||zt)try{on(n)}catch(t){}else try{n.setAttribute(t,"")}catch(t){}},an=function(t){var n=void 0,e=void 0;if(Ct)t=""+t;else{var r=y(t,/^[\r\n\t ]+/);e=r&&r[0]}var i=ot?ot.createHTML(t):t;if(Zt===Kt)try{n=(new Y).parseFromString(i,"text/html")}catch(t){}n&&n.documentElement||((n=at.createDocument(Zt,"template",null)).documentElement.innerHTML=i);var u=n.body||n.documentElement;return t&&e&&u.insertBefore(o.createTextNode(e),u.childNodes[0]||null),Tt?n.documentElement:u},cn=function(t){return ct.call(t.ownerDocument||t,t,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,(function(){return l.FILTER_ACCEPT}),!1)},fn=function(t){return!(t instanceof K||t instanceof Z||"string"==typeof t.nodeName&&"string"==typeof t.textContent&&"function"==typeof t.removeChild&&t.attributes instanceof x&&"function"==typeof t.removeAttribute&&"function"==typeof t.setAttribute&&"string"==typeof t.namespaceURI&&"function"==typeof t.insertBefore)},ln=function(t){return"object"===(void 0===c?"undefined":H(c))?t instanceof c:t&&"object"===(void 0===t?"undefined":H(t))&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},sn=function(t,n,r){pt[t]&&p(pt[t],(function(t){t.call(e,n,r,Yt)}))},pn=function(t){var n=void 0;if(sn("beforeSanitizeElements",t,null),fn(t))return on(t),!0;if(y(t.nodeName,/[\u0080-\uFFFF]/))return on(t),!0;var r=d(t.nodeName);if(sn("uponSanitizeElement",t,{tagName:r,allowedTags:bt}),!ln(t.firstElementChild)&&(!ln(t.content)||!ln(t.content.firstElementChild))&&b(/<[/\w]/g,t.innerHTML)&&b(/<[/\w]/g,t.textContent))return on(t),!0;if(!bt[r]||kt[r]){if(Mt&&!Ft[r]){var o=et(t)||t.parentNode,i=nt(t)||t.childNodes;if(i&&o)for(var u=i.length-1;u>=0;--u)o.insertBefore(X(i[u],!0),tt(t))}return on(t),!0}return t instanceof f&&!rn(t)?(on(t),!0):"noscript"!==r&&"noembed"!==r||!b(/<\/no(script|embed)/i,t.innerHTML)?(Lt&&3===t.nodeType&&(n=t.textContent,n=g(n,vt," "),n=g(n,ht," "),t.textContent!==n&&(h(e.removed,{element:t.cloneNode()}),t.textContent=n)),sn("afterSanitizeElements",t,null),!1):(on(t),!0)},vn=function(t,n,e){if(Wt&&("id"===n||"name"===n)&&(e in o||e in Jt))return!1;if(At&&b(dt,n));else if(jt&&b(yt,n));else{if(!xt[n]||Ot[n])return!1;if(Ht[n]);else if(b(mt,g(e,_t,"")));else if("src"!==n&&"xlink:href"!==n&&"href"!==n||"script"===t||0!==_(e,"data:")||!Bt[t])if(Et&&!b(gt,g(e,_t,"")));else if(e)return!1}return!0},hn=function(t){var n=void 0,r=void 0,o=void 0,i=void 0;sn("beforeSanitizeAttributes",t,null);var u=t.attributes;if(u){var a={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:xt};for(i=u.length;i--;){var c=n=u[i],f=c.name,l=c.namespaceURI;if(r=m(n.value),o=d(f),a.attrName=o,a.attrValue=r,a.keepAttr=!0,a.forceKeepAttr=void 0,sn("uponSanitizeAttribute",t,a),r=a.attrValue,!a.forceKeepAttr&&(un(f,t),a.keepAttr))if(b(/\/>/i,r))un(f,t);else{Lt&&(r=g(r,vt," "),r=g(r,ht," "));var s=t.nodeName.toLowerCase();if(vn(s,o,r))try{l?t.setAttributeNS(l,f,r):t.setAttribute(f,r),v(e.removed)}catch(t){}}}sn("afterSanitizeAttributes",t,null)}},dn=function t(n){var e=void 0,r=cn(n);for(sn("beforeSanitizeShadowDOM",n,null);e=r.nextNode();)sn("uponSanitizeShadowNode",e,null),pn(e)||(e.content instanceof u&&t(e.content),hn(e));sn("afterSanitizeShadowDOM",n,null)};return e.sanitize=function(t,o){var i=void 0,a=void 0,f=void 0,l=void 0,s=void 0;if(t||(t="\x3c!--\x3e"),"string"!=typeof t&&!ln(t)){if("function"!=typeof t.toString)throw w("toString is not a function");if("string"!=typeof(t=t.toString()))throw w("dirty is not a string, aborting")}if(!e.isSupported){if("object"===H(n.toStaticHTML)||"function"==typeof n.toStaticHTML){if("string"==typeof t)return n.toStaticHTML(t);if(ln(t))return n.toStaticHTML(t.outerHTML)}return t}if(Rt||Qt(o),e.removed=[],"string"==typeof t&&(Nt=!1),Nt);else if(t instanceof c)1===(a=(i=an("\x3c!----\x3e")).ownerDocument.importNode(t,!0)).nodeType&&"BODY"===a.nodeName||"HTML"===a.nodeName?i=a:i.appendChild(a);else{if(!It&&!Lt&&!Tt&&-1===t.indexOf("<"))return ot&&Pt?ot.createHTML(t):t;if(!(i=an(t)))return It?null:it}i&&Ct&&on(i.firstChild);for(var p=cn(Nt?t:i);f=p.nextNode();)3===f.nodeType&&f===l||pn(f)||(f.content instanceof u&&dn(f.content),hn(f),l=f);if(l=null,Nt)return t;if(It){if(zt)for(s=ft.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return Dt&&(s=lt.call(r,s,!0)),s}var v=Tt?i.outerHTML:i.innerHTML;return Lt&&(v=g(v,vt," "),v=g(v,ht," ")),ot&&Pt?ot.createHTML(v):v},e.setConfig=function(t){Qt(t),Rt=!0},e.clearConfig=function(){Yt=null,Rt=!1},e.isValidAttribute=function(t,n,e){Yt||Qt({});var r=d(t),o=d(n);return vn(r,o,e)},e.addHook=function(t,n){"function"==typeof n&&(pt[t]=pt[t]||[],h(pt[t],n))},e.removeHook=function(t){pt[t]&&v(pt[t])},e.removeHooks=function(t){pt[t]&&(pt[t]=[])},e.removeAllHooks=function(){pt={}},e}()}()},function(t,n,e){var r,o,i,u,a;r=e(58),o=e(21).utf8,i=e(59),u=e(21).bin,(a=function(t,n){t.constructor==String?t=n&&"binary"===n.encoding?u.stringToBytes(t):o.stringToBytes(t):i(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||(t=t.toString());for(var e=r.bytesToWords(t),c=8*t.length,f=1732584193,l=-271733879,s=-1732584194,p=271733878,v=0;v>>24)|4278255360&(e[v]<<24|e[v]>>>8);e[c>>>5]|=128<>>9<<4)]=c;var h=a._ff,d=a._gg,y=a._hh,g=a._ii;for(v=0;v>>0,l=l+m>>>0,s=s+b>>>0,p=p+w>>>0}return r.endian([f,l,s,p])})._ff=function(t,n,e,r,o,i,u){var a=t+(n&e|~n&r)+(o>>>0)+u;return(a<>>32-i)+n},a._gg=function(t,n,e,r,o,i,u){var a=t+(n&r|e&~r)+(o>>>0)+u;return(a<>>32-i)+n},a._hh=function(t,n,e,r,o,i,u){var a=t+(n^e^r)+(o>>>0)+u;return(a<>>32-i)+n},a._ii=function(t,n,e,r,o,i,u){var a=t+(e^(n|~r))+(o>>>0)+u;return(a<>>32-i)+n},a._blocksize=16,a._digestsize=16,t.exports=function(t,n){if(null==t)throw new Error("Illegal argument "+t);var e=r.wordsToBytes(a(t,n));return n&&n.asBytes?e:n&&n.asString?u.bytesToString(e):r.bytesToHex(e)}},function(t,n){t.exports=function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}},function(t,n){function e(t,n){for(var e=0;e=0;--o){var i=this.tryEntries[o],u=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var a=e.call(i,"catchLoc"),c=e.call(i,"finallyLoc");if(a&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&e.call(o,"finallyLoc")&&this.prev=0;--n){var e=this.tryEntries[n];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),g(e),f}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e.tryLoc===t){var r=e.completion;if("throw"===r.type){var o=r.arg;g(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,e){return this.delegate={iterator:_(t),resultName:n,nextLoc:e},"next"===this.method&&(this.arg=void 0),f}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,n,e){var r=e(17);t.exports=function(t){if(Array.isArray(t))return r(t)}},function(t,n){t.exports=function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}},function(t,n){t.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(t,n,e){(function(n){var e="object"==typeof n&&n&&n.Object===Object&&n;t.exports=e}).call(this,e(4))},function(t,n,e){var r=e(48);t.exports=function(t){return null==t?"":r(t)}},function(t,n,e){var r=e(13),o=e(49),i=e(50),u=e(51),a=r?r.prototype:void 0,c=a?a.toString:void 0;t.exports=function t(n){if("string"==typeof n)return n;if(i(n))return o(n,t)+"";if(u(n))return c?c.call(n):"";var e=n+"";return"0"==e&&1/n==-1/0?"-0":e}},function(t,n){t.exports=function(t,n){for(var e=-1,r=null==t?0:t.length,o=Array(r);++e",""":'"',"'":"'"});t.exports=r},function(t,n){t.exports=function(t){return function(n){return null==t?void 0:t[n]}}},function(t,n){var e,r;e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r={rotl:function(t,n){return t<>>32-n},rotr:function(t,n){return t<<32-n|t>>>n},endian:function(t){if(t.constructor==Number)return 16711935&r.rotl(t,8)|4278255360&r.rotl(t,24);for(var n=0;n0;t--)n.push(Math.floor(256*Math.random()));return n},bytesToWords:function(t){for(var n=[],e=0,r=0;e>>5]|=t[e]<<24-r%32;return n},wordsToBytes:function(t){for(var n=[],e=0;e<32*t.length;e+=8)n.push(t[e>>>5]>>>24-e%32&255);return n},bytesToHex:function(t){for(var n=[],e=0;e>>4).toString(16)),n.push((15&t[e]).toString(16));return n.join("")},hexToBytes:function(t){for(var n=[],e=0;e>>6*(3-i)&63)):n.push("=");return n.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var n=[],r=0,o=0;r>>6-2*o);return n}},t.exports=r},function(t,n){function e(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}t.exports=function(t){return null!=t&&(e(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&e(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,n){t.exports=function(t){if(Array.isArray(t))return t}},function(t,n){t.exports=function(t,n){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var e=[],r=!0,o=!1,i=void 0;try{for(var u,a=t[Symbol.iterator]();!(r=(u=a.next()).done)&&(e.push(u.value),!n||e.length!==n);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return e}}},function(t,n){t.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(t,n){t.exports=function(t,n){if(null==t)return{};var e,r,o={},i=Object.keys(t);for(r=0;r=0||(o[e]=t[e]);return o}},function(t,n){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,n,e){"use strict";var r=e(66);function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function t(t,n,e,o,i,u){if(u!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function n(){return t}t.isRequired=t;var e={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:n,element:t,elementType:t,instanceOf:n,node:t,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:i,resetWarningCache:o};return e.PropTypes=e,e}},function(t,n,e){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,n,e){"use strict";var r=e(68),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,u=o?Symbol.for("react.portal"):60106,a=o?Symbol.for("react.fragment"):60107,c=o?Symbol.for("react.strict_mode"):60108,f=o?Symbol.for("react.profiler"):60114,l=o?Symbol.for("react.provider"):60109,s=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.forward_ref"):60112,v=o?Symbol.for("react.suspense"):60113;o&&Symbol.for("react.suspense_list");var h=o?Symbol.for("react.memo"):60115,d=o?Symbol.for("react.lazy"):60116;o&&Symbol.for("react.fundamental"),o&&Symbol.for("react.responder"),o&&Symbol.for("react.scope");var y="function"==typeof Symbol&&Symbol.iterator;function g(t){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+t,e=1;eR.length&&R.push(t)}function z(t,n,e){return null==t?0:function t(n,e,r,o){var a=typeof n;"undefined"!==a&&"boolean"!==a||(n=null);var c=!1;if(null===n)c=!0;else switch(a){case"string":case"number":c=!0;break;case"object":switch(n.$$typeof){case i:case u:c=!0}}if(c)return r(o,n,""===e?"."+D(n,0):e),1;if(c=0,e=""===e?".":e+":",Array.isArray(n))for(var f=0;f0&&void 0!==c[0]?c[0]:{},n=t.clearAfterRestore,r=void 0===n||n,e.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=e.sent,i=a.cacheHit,o=a.value,!i){e.next=13;break}return e.next=10,{payload:{snapshot:o},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!r){e.next=13;break}return e.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}}),e)})),createSnapshot:s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))},i=(t={},o()(t,"DELETE_SNAPSHOT",(function(){return Object(g.a)("datastore::cache::".concat(e))})),o()(t,"CREATE_SNAPSHOT",m((function(t){return function(){return Object(g.d)("datastore::cache::".concat(e),t.stores[e].store.getState())}}))),o()(t,"RESTORE_SNAPSHOT",(function(){return Object(g.b)("datastore::cache::".concat(e),p.b)})),t);return{initialState:n,actions:r,controls:i,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0,r=t.type,i=t.payload;switch(r){case"SET_STATE_FROM_SNAPSHOT":var o=i.snapshot,c=(o.error,a()(o,["error"]));return c;default:return e}}}},b=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Object.values(e.stores).filter((function(e){return Object.keys(e.getActions()).includes("restoreSnapshot")}))},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Promise.all(b(e).map((function(e){return e.getActions().createSnapshot()})))},y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.a;return Promise.all(b(e).map((function(e){return e.getActions().restoreSnapshot()})))}},102:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=200},105:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(11),o=n.n(i),c=n(72),s=n(1),l=n(20),u=n(56);function SourceLink(t){var n=t.name,r=t.href,a=t.className,i=t.external;return Object(u.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",a)},Object(c.a)(Object(s.sprintf)( +/* translators: %s: source link */ +Object(s.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(l.a,{key:"link",href:r,external:i})}))}SourceLink.propTypes={name:a.a.string,href:a.a.string,className:a.a.string,external:a.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},106:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=S&&S>0),o()(n,"mdc-layout-grid__cell--span-".concat(k,"-desktop"),12>=k&&k>0),o()(n,"mdc-layout-grid__cell--start-".concat(E,"-desktop"),12>=E&&E>0),o()(n,"mdc-layout-grid__cell--order-".concat(w,"-desktop"),12>=w&&w>0),o()(n,"mdc-layout-grid__cell--span-".concat(y,"-tablet"),8>=y&&y>0),o()(n,"mdc-layout-grid__cell--start-".concat(O,"-tablet"),8>=O&&O>0),o()(n,"mdc-layout-grid__cell--order-".concat(_,"-tablet"),8>=_&&_>0),o()(n,"mdc-layout-grid__cell--span-".concat(v,"-phone"),4>=v&&v>0),o()(n,"mdc-layout-grid__cell--start-".concat(b,"-phone"),4>=b&&b>0),o()(n,"mdc-layout-grid__cell--order-".concat(h,"-phone"),4>=h&&h>0),n))}),j)}Cell.propTypes={smSize:u.a.number,smStart:u.a.number,smOrder:u.a.number,mdSize:u.a.number,mdStart:u.a.number,mdOrder:u.a.number,lgSize:u.a.number,lgStart:u.a.number,lgOrder:u.a.number,size:u.a.number,alignTop:u.a.bool,alignMiddle:u.a.bool,alignBottom:u.a.bool,alignRight:u.a.bool,alignLeft:u.a.bool,smAlignRight:u.a.bool,mdAlignRight:u.a.bool,lgAlignRight:u.a.bool,className:u.a.string,children:u.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),f=Object(d.forwardRef)((function(t,n){var r=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",a()({ref:n,className:u()("mdc-layout-grid__inner",r)},c),i)}));f.displayName="Row",f.propTypes={className:s.a.string,children:s.a.node},f.defaultProps={className:""},t.a=f}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),f=Object(d.forwardRef)((function(t,n){var r=t.alignLeft,i=t.fill,c=t.className,s=t.children,l=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",a()({className:u()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":r,"mdc-layout-grid--collapsed":l,"mdc-layout-grid--fill":i})},d,{ref:n}),s)}));f.displayName="Grid",f.propTypes={alignLeft:s.a.bool,fill:s.a.bool,className:s.a.string,collapsed:s.a.bool,children:s.a.node},f.defaultProps={className:""},t.a=f}).call(this,n(3))},1106:function(e,t,n){"use strict";n.r(t),function(e){var t=n(212),r=n(122),a=n(4),i=n.n(a),o=n(12),c=n(23),s=n(8),l=n(172),u=i.a.dispatch;Object(t.a)((function(){var e=document.querySelector('[id="googlesitekit-notice-idea-hub_new-ideas"],[id="googlesitekit-notice-idea-hub_saved-ideas"]');if(e){var t=e.id.replace("googlesitekit-notice-",""),n="".concat(c.m,"idea-hub_saved-ideas"===t?"_idea-hub-saved-ideas-notification":"_idea-hub-new-ideas-notification");Object(s.z)(n,"view_notification"),e.addEventListener("click",(function(e){e.target.classList.contains("notice-dismiss")&&(u(o.a).dismissItem(t,{expiresInSeconds:"idea-hub_new-ideas"===t?s.c:0}),Object(s.z)(n,"dismiss_notification"))}));var r=e.querySelector("a");r&&r.addEventListener("click",(function(){Object(s.z)(n,"confirm_notification")}))}})),Object(t.a)((function(){var t=document.getElementById("js-googlesitekit-post-list");t&&Object(r.render)(e.createElement(l.a,{viewContext:c.m}),t)}))}.call(this,n(3))},113:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(96),s=n.n(c),l=n(75),u=n.n(l),d=n(76),f=n.n(d),g=n(48),p=n.n(g),m=n(0),v=n.n(m),b=n(11),h=n.n(b),y=n(2),O=n(1),_=n(62),k=n(105),E=n(65),w=n(8);function S(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=p()(e);if(t){var a=p()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return f()(this,n)}}var j=function(t){u()(DataBlock,t);var n=S(DataBlock);function DataBlock(e){var t;return a()(this,DataBlock),(t=n.call(this,e)).handleClick=t.handleClick.bind(s()(t)),t.handleKeyPress=t.handleKeyPress.bind(s()(t)),t}return o()(DataBlock,[{key:"handleClick",value:function(){var e=this.props,t=e.stat;(0,e.handleStatSelection)(t)}},{key:"handleKeyPress",value:function(e){e.preventDefault();var t=this.props,n=t.stat,r=t.handleStatSelection;"Enter"!==e.key&&" "!==e.key||r(n)}},{key:"render",value:function(){var t=this.props,n=t.className,r=t.title,a=t.datapoint,i=t.datapointUnit,o=t.change,c=t.changeDataUnit,s=t.context,l=t.period,u=t.selected,d=t.handleStatSelection,f=t.source,g=t.sparkline,p=t.invertChangeColor,m=t.gatheringData,v=t.gatheringDataNoticeStyle,b="button"===s?"button":"",S=g;S&&p&&(S=Object(y.cloneElement)(g,{invertChangeColor:p}));var j=o;c&&(j="%"===c?Object(w.u)(o,{style:"percent",signDisplay:"never",maximumFractionDigits:1}):Object(w.u)(o,c)),l&&(j=Object(O.sprintf)(l,j));var x=void 0===a?a:Object(w.u)(a,i||void 0);return e.createElement("div",{className:h()("googlesitekit-data-block",n,"googlesitekit-data-block--".concat(s),{"googlesitekit-data-block--selected":u,"googlesitekit-data-block--is-gathering-data":m}),tabIndex:"button"!==s||m?"-1":"0",role:d&&b,onClick:m?void 0:d&&this.handleClick,onKeyPress:m?void 0:d&&this.handleKeyPress,"aria-disabled":m||void 0,"aria-label":d&&r,"aria-pressed":d&&u},e.createElement("div",{className:"googlesitekit-data-block__title-datapoint-wrapper"},e.createElement("h3",{className:" googlesitekit-subheading-1 googlesitekit-data-block__title "},r),!m&&e.createElement("div",{className:"googlesitekit-data-block__datapoint"},x)),!m&&e.createElement(y.Fragment,null,S&&e.createElement("div",{className:"googlesitekit-data-block__sparkline"},S),e.createElement("div",{className:"googlesitekit-data-block__change-source-wrapper"},e.createElement("div",{className:h()("googlesitekit-data-block__change",{"googlesitekit-data-block__change--no-change":!o})},e.createElement(y.Fragment,null,!!o&&e.createElement("span",{className:"googlesitekit-data-block__arrow"},e.createElement(_.a,{direction:01?Object(f.a)(u):[],b=function(e){return s()("googlesitekit-tooltip-indicator",{active:e===c})};return e.createElement("div",a()({className:s()("googlesitekit-tour-tooltip",p.className)},m),e.createElement(o.a,{className:"googlesitekit-tooltip-card"},e.createElement("div",{className:"googlesitekit-tooltip-body"},e.createElement("h2",{className:"googlesitekit-tooltip-title"},p.title),e.createElement("div",{className:"googlesitekit-tooltip-content"},p.content)),e.createElement(i.CardActions,{className:"googlesitekit-tooltip-actions"},e.createElement("ul",{className:"googlesitekit-tooltip-indicators"},v.map((function(t){return e.createElement("li",{key:"indicator-".concat(t),className:b(t)})}))),e.createElement("div",{className:"googlesitekit-tooltip-buttons"},0!==c&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},n),n.title),p.cta,l.title&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},l),l.title))),e.createElement(d.Button,a()({className:"googlesitekit-tooltip-close",text:!0,icon:e.createElement(g.a,{width:"14",height:"14"})},r))))}TourTooltip.propTypes={backProps:u.a.object.isRequired,closeProps:u.a.object.isRequired,index:u.a.number.isRequired,isLastStep:u.a.bool.isRequired,primaryProps:u.a.object.isRequired,size:u.a.number.isRequired,step:u.a.shape({content:u.a.node,title:u.a.node.isRequired,cta:u.a.oneOfType([u.a.element,u.a.bool]),className:u.a.string}).isRequired,tooltipProps:u.a.object.isRequired}}).call(this,n(3))},138:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r,a=S(n);try{for(a.s();!(r=a.n()).done;){var i=r.value,o=K[i.question_ordinal],c=i.answer_ordinal||[];if(o&&!c.includes(o))return $++,!1}}catch(e){a.e(e)}finally{a.f()}}return t===$})),J=Object(g.useCallback)((function(e){I||(z(!0),W("question_answered",{question_ordinal:null==X?void 0:X.question_ordinal,answer:e}),setTimeout((function(){G(U,{answers:[].concat(o()(V),[{question_ordinal:null==X?void 0:X.question_ordinal,answer:e}])}),z(!1)}),300))}),[V,X,U,W,G,I]);(null==M?void 0:M.length)&&$>M.length&&((Q=(q||[]).find((function(e){var t,n=S(e.trigger_condition||[]);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.answer_ordinal.includes(K[r.question_ordinal]))return Q=e,!0}}catch(e){n.e(e)}finally{n.f()}return!1})))||(Q=q[0]));var Y=Object(g.useCallback)((function(){var e;W("follow_up_link_clicked",{completion_ordinal:null===(e=Q)||void 0===e?void 0:e.completion_ordinal}),W("survey_closed"),G(U,{hideSurvey:!0})}),[U,W,G,Q]),Z=Object(g.useCallback)((function(){W("survey_closed"),D(!1)}),[W]),ee=Object(g.useCallback)((function(){G(U,{hideSurvey:!0})}),[U,G]);if(Object(g.useEffect)((function(){var e;Q&&!m&&(v(!0),W("completion_shown",{completion_ordinal:null===(e=Q)||void 0===e?void 0:e.completion_ordinal}))}),[m,W,Q]),Object(d.a)((function(){D(!0)})),H||!M||!q||void 0===F)return null;if(Q)return e.createElement(f.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},e.createElement(y.a,{dismissSurvey:Z,ctaOnClick:Y,ctaText:Q.follow_up_text,ctaURL:Q.follow_up_url,title:Q.completion_title},Q.completion_text)));if(!P.includes(null==X?void 0:X.question_type))return null;var te={key:X.question_text,answerQuestion:J,dismissSurvey:Z,question:X.question_text,submitButtonText:(null==M?void 0:M.length)===$?Object(p.__)("Submit","google-site-kit"):Object(p.__)("Next","google-site-kit")};return e.createElement(f.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},"multi_select"===X.question_type&&e.createElement(k.a,a()({},te,{choices:X.question.answer_choice,minChoices:X.question.min_choices,maxChoices:X.question.max_choices})),"open_text"===X.question_type&&e.createElement(_.a,a()({},te,{subtitle:X.question.subtitle,placeholder:X.question.placeholder})),"rating"===X.question_type&&e.createElement(O.a,a()({},te,{choices:X.question.answer_choice})),"single_select"===X.question_type&&e.createElement(E.a,a()({},te,{choices:X.question.answer_choice})),!1===F&&1===(null==X?void 0:X.question_ordinal)&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(w.a,null))))}}).call(this,n(3))},181:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(13),o=n(64),c=function SurveyCompletion(t){var n=t.title,r=t.children,a=t.ctaText,c=t.ctaURL,s=t.ctaOnClick,l=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__completion"},e.createElement(o.a,{title:n,dismissSurvey:l}),e.createElement("div",{className:"googlesitekit-survey__body"},r),c&&a&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(i.Button,{href:c,onClick:s,target:"_blank"},a)))};c.propTypes={title:a.a.string.isRequired,children:a.a.node,ctaText:a.a.string,ctaURL:a.a.string,ctaOnClick:a.a.func,dismissSurvey:a.a.func.isRequired},c.defaultProps={title:"",children:null,ctaText:"",ctaURL:"",ctaOnClick:null},t.a=c}).call(this,n(3))},182:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(64),o=n(183),c=function SurveyQuestionRating(t){var n=t.question,r=t.choices,a=t.answerQuestion,c=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__question-rating"},e.createElement(i.a,{title:n,dismissSurvey:c}),e.createElement("div",{className:"googlesitekit-survey__body"},e.createElement("div",{className:"googlesitekit-survey__choices"},r.map((function(t,n){return e.createElement(o.a,{key:n,choice:t,answerQuestion:a})})))))};c.propTypes={question:a.a.string.isRequired,choices:a.a.arrayOf(a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string})).isRequired,answerQuestion:a.a.func.isRequired,dismissSurvey:a.a.func.isRequired},t.a=c}).call(this,n(3))},183:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(13),c=n(184),s=n(185),l=n(186),u=n(187),d=n(188),f={1:c.a,2:s.a,3:l.a,4:u.a,5:d.a},g=function SurveyQuestionRatingChoice(t){var n=t.choice,r=t.answerQuestion,a=Object(i.useCallback)((function(){"function"==typeof r&&r({answer:{answer_ordinal:n.answer_ordinal}})}),[r,n]),c=f[n.answer_ordinal];return c?e.createElement("div",{className:"googlesitekit-survey__choice"},e.createElement(o.Button,{icon:e.createElement(c,{width:30,height:30}),"aria-label":n.text,onClick:a}),e.createElement("p",null,n.text)):null};g.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string}).isRequired},t.a=g}).call(this,n(3))},184:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0,P=Object.values(N).filter((function(e){return e.selected})).length,R=d&&P===d,D=C||P1&&e.createElement(h.g,{persistent:!0},Object(m.sprintf)( +/* translators: %s: the number of answers. */ +Object(m.__)("Choose at least %s answers","google-site-kit"),u)),e.createElement(v.Button,{onClick:function(){var e=Object.values(N).filter((function(e){return e.selected})).map((function(e){var t=e.answer_ordinal,n=e.answer_text;return n?{answer_ordinal:t,answer_text:n}:{answer_ordinal:t}}));i({answer:e})},disabled:D},_)))};E.propTypes={question:u.a.string.isRequired,choices:u.a.arrayOf(u.a.shape({answer_ordinal:u.a.oneOfType([u.a.string,u.a.number]),text:u.a.string,write_in:u.a.bool})).isRequired,answerQuestion:u.a.func.isRequired,dismissSurvey:u.a.func.isRequired,minChoices:u.a.number,maxChoices:u.a.number,submitButtonText:u.a.string.isRequired},t.a=E}).call(this,n(3))},191:function(e,t,n){"use strict";(function(e){var r=n(6),a=n.n(r),i=n(14),o=n.n(i),c=n(0),s=n.n(c),l=n(2),u=n(13),d=n(64),f=n(192);function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t0,E=""===m||k&&""===y;return e.createElement("div",{className:"googlesitekit-single-select"},e.createElement(d.a,{title:n,dismissSurvey:i}),e.createElement("div",{className:"googlesitekit-survey__body"},_.map((function(t,n){return e.createElement(f.a,{key:n,value:m,setValue:v,writeIn:y,setWriteIn:O,choice:t})}))),e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(u.Button,{onClick:function(){var e=k?{answer_text:y}:{};a({answer:p({answer_ordinal:Number(m)},e)})},disabled:E},c)))};m.propTypes={question:s.a.string.isRequired,choices:s.a.arrayOf(s.a.shape({answer_ordinal:s.a.oneOfType([s.a.string,s.a.number]),text:s.a.string,write_in:s.a.bool})).isRequired,answerQuestion:s.a.func.isRequired,dismissSurvey:s.a.func.isRequired},t.a=m}).call(this,n(3))},192:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(1),c=n(13),s=n(10),l=n(60),u=n(102),d=function SurveyQuestionSingleSelectChoice(t){var n=t.value,r=t.setValue,a=t.writeIn,d=t.setWriteIn,f=t.choice,g=f.answer_ordinal,p=f.text,m=f.write_in,v=n===g,b="googlesitekit-survey__multi-select-".concat(g,"-").concat(p);return e.createElement("div",{className:"googlesitekit-single-select__choice"},e.createElement(c.Radio,{id:p.replace(/ /g,"-"),value:g,checked:v,name:p,onClick:function(){return r(g)}},p),m&&e.createElement(i.Fragment,null,e.createElement(l.a,null,e.createElement("label",{htmlFor:b},Object(o.sprintf)( +/* translators: %s: Option name */ +Object(o.__)("Text input for option %s","google-site-kit"),p))),e.createElement(s.r,null,e.createElement(s.h,{id:b,onChange:function(e){return d(e.target.value.slice(0,u.a))},value:a,disabled:!v}))))};d.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string,write_in:a.a.bool}),value:a.a.string.isRequired,setValue:a.a.func.isRequired,writeIn:a.a.string.isRequired,setWriteIn:a.a.func.isRequired},t.a=d}).call(this,n(3))},193:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SurveyTerms}));var r=n(1),a=n(72),i=n(4),o=n.n(i),c=n(15),s=n(20),l=o.a.useSelect;function SurveyTerms(){var t=l((function(e){return e(c.c).getGooglePrivacyPolicyURL()})),n=l((function(e){return e(c.c).getGoogleTermsURL()}));return e.createElement("p",{className:"googlesitekit-survey__terms"},Object(a.a)(Object(r.__)("By continuing, you agree to allow Google to use your answers and account info to improve services, per our Privacy & Terms.","google-site-kit"),{privacy:e.createElement(s.a,{href:t,external:!0}),terms:e.createElement(s.a,{href:n,external:!0})}))}}).call(this,n(3))},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(23),a=function(e){return r.e.includes(e)}},20:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(120),f=n(1),g=n(2),p=Object(g.forwardRef)((function(t,n){var r,i=t["aria-label"],c=t.arrow,s=t.back,l=t.caps,g=t.children,p=t.className,m=t.danger,v=t.disabled,b=t.external,h=t.hideExternalIndicator,y=t.href,O=t.inverse,_=t.onClick,k=t.small,E=t.to,w=o()(t,["aria-label","arrow","back","caps","children","className","danger","disabled","external","hideExternalIndicator","href","inverse","onClick","small","to"]),S=y||E||!_?E?"ROUTER_LINK":b?"EXTERNAL_LINK":"LINK":v?"BUTTON_DISABLED":"BUTTON",j="BUTTON"===S||"BUTTON_DISABLED"===S?"button":"ROUTER_LINK"===S?d.b:"a",x=("EXTERNAL_LINK"===S&&(r=Object(f._x)("(opens in a new tab)","screen reader text","google-site-kit")),"BUTTON_DISABLED"===S&&(r=Object(f._x)("(disabled)","screen reader text","google-site-kit")),r?i?"".concat(i," ").concat(r):"string"==typeof g?"".concat(g," ").concat(r):void 0:i);return e.createElement(j,a()({"aria-label":x,className:u()("googlesitekit-cta-link",p,{"googlesitekit-cta-link--arrow":c,"googlesitekit-cta-link--external":b&&!h,"googlesitekit-cta-link--inverse":O,"googlesitekit-cta-link--back":s,"googlesitekit-cta-link--small":k,"googlesitekit-cta-link--caps":l,"googlesitekit-cta-link--danger":m,"googlesitekit-cta-link--disabled":v}),disabled:v,href:"LINK"!==S&&"EXTERNAL_LINK"!==S||v?void 0:y,onClick:_,rel:"EXTERNAL_LINK"===S?"noopener noreferrer":void 0,ref:n,target:"EXTERNAL_LINK"===S?"_blank":void 0,to:E},w),g)}));p.propTypes={arrow:s.a.bool,back:s.a.bool,caps:s.a.bool,children:s.a.node,className:s.a.string,danger:s.a.bool,disabled:s.a.bool,external:s.a.bool,hideExternalIndicator:s.a.bool,href:s.a.string,inverse:s.a.bool,onClick:s.a.func,small:s.a.bool,to:s.a.string},p.defaultProps={arrow:!1,back:!1,caps:!1,className:"",danger:!1,disabled:!1,external:!1,hideExternalIndicator:!1,href:"",inverse:!1,small:!1},t.a=p}).call(this,n(3))},23:function(e,t,n){"use strict";n.d(t,"j",(function(){return r})),n.d(t,"h",(function(){return a})),n.d(t,"k",(function(){return i})),n.d(t,"i",(function(){return o})),n.d(t,"m",(function(){return c})),n.d(t,"p",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"o",(function(){return u})),n.d(t,"g",(function(){return d})),n.d(t,"n",(function(){return f})),n.d(t,"q",(function(){return g})),n.d(t,"l",(function(){return p})),n.d(t,"d",(function(){return m})),n.d(t,"a",(function(){return v})),n.d(t,"c",(function(){return b})),n.d(t,"b",(function(){return h})),n.d(t,"e",(function(){return y}));var r="mainDashboard",a="entityDashboard",i="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",s="userInput",l="activation",u="splash",d="adminBar",f="settings",g="wpDashboard",p="moduleSetup",m="traffic",v="content",b="speed",h="monetization",y=[r,a,i,o,s,u,f,p]},31:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return a}));var r="_googlesitekitDataLayer",a="data-googlesitekit-gtag"},32:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return y})),n.d(t,"b",(function(){return h}));var r=n(86),a=e._googlesitekitTrackingData||{},i=a.activeModules,o=void 0===i?[]:i,c=a.isSiteKitScreen,s=a.trackingEnabled,l=a.trackingID,u=a.referenceSiteURL,d=a.userIDHash,f=a.isAuthenticated,g={activeModules:o,trackingEnabled:s,trackingID:l,referenceSiteURL:u,userIDHash:d,isSiteKitScreen:c,userRoles:a.userRoles,isAuthenticated:f,pluginVersion:"1.89.0"},p=Object(r.a)(g),m=p.enableTracking,v=p.disableTracking,b=(p.isTrackingEnabled,p.initializeSnippet),h=p.trackEvent;function y(e){e?m():v()}c&&s&&b()}).call(this,n(22))},33:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return a}));var r="core/ui",a="activeContextID"},35:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r="core/forms"},36:function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"e",(function(){return a})),n.d(t,"d",(function(){return i})),n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return c})),n.d(t,"f",(function(){return s}));var r="Date param must construct to a valid date instance or be a valid date instance itself.",a="Invalid dateString parameter, it must be a string.",i='Invalid date range, it must be a string with the format "last-x-days".',o=3600,c=86400,s=604800},37:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e){return e instanceof Date&&!isNaN(e)}},38:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var r=n(14),a=n.n(r),i=n(7),o=n.n(i),c=n(36),s=n(43),l=function(e){o()(Object(s.a)(e),c.e);var t=e.split("-"),n=a()(t,3),r=n[0],i=n[1],l=n[2];return new Date(r,i-1,l)}},4:function(e,t){e.exports=googlesitekit.data},40:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r="core/location"},42:function(e,t,n){"use strict";(function(e){var r,a;n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var i=new Set((null===(r=e)||void 0===r||null===(a=r._googlesitekitBaseData)||void 0===a?void 0:a.enabledFeatures)||[]),o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;return t instanceof Set&&t.has(e)}}).call(this,n(22))},43:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(37),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var n=e.split("-");return 3===n.length&&Object(r.a)(new Date(e))}},46:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return b})),n.d(t,"d",(function(){return h})),n.d(t,"a",(function(){return y})),n.d(t,"c",(function(){return O}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=(n(24),n(8));function s(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==v[2]?v[2]:{},o=i.ttl,s=void 0===o?c.b:o,l=i.timestamp,u=void 0===l?Math.round(Date.now()/1e3):l,f=i.isError,g=void 0!==f&&f,t.next=3,m();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(d).concat(n),JSON.stringify({timestamp:u,ttl:s,value:r,isError:g})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(e,n){return t.apply(this,arguments)}}(),y=function(){var t=o()(a.a.mark((function t(n){var r;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m();case 2:if(!(r=t.sent)){t.next=13;break}return t.prev=4,r.removeItem("".concat(d).concat(n)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(e){return t.apply(this,arguments)}}(),O=function(){var t=o()(a.a.mark((function t(){var n,r,i,o;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m();case 2:if(!(n=t.sent)){t.next=14;break}for(t.prev=4,r=[],i=0;i1280?a:e>960?i:e>600?o:c}},51:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"c",(function(){return c})),n.d(t,"e",(function(){return s}));var r=n(100);function a(e){try{return new URL(e).pathname}catch(e){}return null}function i(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function o(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function s(e,t){if(!Object(r.a)(e))return e;if(e.length<=t)return e;var n=new URL(e),a=e.replace(n.origin,"");if(a.length=600;function $e(){return($e=d()(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),t.preventDefault(),!se){e.next=5;break}return e.next=5,se(t);case 5:Xe();case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Xe(){Le(!0),setTimeout(d()(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Ve();case 2:Qe()&&qe(!0),t=new Event("notificationDismissed"),document.dispatchEvent(t);case 5:case"end":return e.stop()}}),e)}))),350)}Object(_.a)(d()(l.a.mark((function e(){var t,n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!($>0)){e.next=3;break}return e.next=3,tt();case 3:if(!Y){e.next=9;break}return e.next=6,Object(B.b)(He);case 6:t=e.sent,n=t.cacheHit,qe(n);case 9:if(!de){e.next=12;break}return e.next=12,Ve();case 12:case"end":return e.stop()}}),e)}))));var Je=G((function(e){return e(V.a).isNavigatingTo(v||"")})),Ye=W(V.a).navigateTo;function Ze(){return(Ze=d()(l.a.mark((function e(t){var n,r,a;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),n=!0,!ce){e.next=13;break}return Ue(!0),e.next=6,ce(t);case 6:if(e.t0=e.sent,e.t0){e.next=9;break}e.t0={};case 9:r=e.t0,a=r.dismissOnCTAClick,n=void 0===a||a,Qe()&&Ue(!1);case 13:Y&&n&&Xe(),Object(w.a)(v)&&"_blank"!==h&&!t.defaultPrevented&&(t.preventDefault(),Ye(v));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var et=Object(E.useCallback)((function(t){Object(P.c)(a)&&(t.preventDefault(),e.history.replaceState({},"",a),e.scrollTo({top:Object(C.a)(a,We),behavior:"smooth"}))}),[a,We]);function tt(){return nt.apply(this,arguments)}function nt(){return(nt=d()(l.a.mark((function e(){var t,n,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(B.b)(He);case 2:if(t=e.sent,!(n=t.value)){e.next=10;break}if((r=Object(H.a)(n)).setSeconds(r.getSeconds()+parseInt($,10)),!(r1&&void 0!==arguments[1]?arguments[1]:{};return{__html:i.a.sanitize(e,t)}};function c(e){var t,n="object"===a()(e)?e.toString():e;return null==n||null===(t=n.replace)||void 0===t?void 0:t.call(n,/\/+$/,"")}},64:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(1),o=n(170),c=n(358),s=n(13),l=n(106),u=function SurveyHeader(t){var n=t.title,r=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__header"},e.createElement("div",{className:"googlesitekit-survey__header-logo"},e.createElement(l.a,{width:24,height:24})),e.createElement("div",{className:"googlesitekit-survey__header-details"},e.createElement("h3",null,n),e.createElement(s.Button,{"aria-label":Object(i.__)("Dismiss","google-site-kit"),icon:e.createElement(o.a,{icon:c.a,size:40}),onClick:r,className:"googlesitekit-survey__header-close"})))};u.propTypes={title:a.a.string.isRequired,dismissSurvey:a.a.func.isRequired},t.a=u}).call(this,n(3))},65:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),a=n.n(r),i=n(0),o=n.n(i),c=n(11),s=n.n(c),l=n(1),u={DEFAULT:"default",OVERLAY:"overlay",SMALL:"small",SMALL_OVERLAY:"small-overlay",LARGE:"large"};function GatheringDataNotice(t){var n=t.style;return e.createElement("div",{className:s()("googlesitekit-gathering-data-notice",a()({},"googlesitekit-gathering-data-notice--has-style-".concat(n),!!n))},e.createElement("span",null,Object(l.__)("Gathering data…","google-site-kit")))}GatheringDataNotice.propTypes={style:o.a.oneOf(Object.values(u))},t.b=GatheringDataNotice}).call(this,n(3))},68:function(e,t,n){"use strict";n.d(t,"d",(function(){return r.e})),n.d(t,"c",(function(){return r.d})),n.d(t,"b",(function(){return r.b})),n.d(t,"a",(function(){return r.a})),n.d(t,"e",(function(){return r.f})),n.d(t,"g",(function(){return c})),n.d(t,"h",(function(){return l})),n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return d.a})),n.d(t,"f",(function(){return g})),n.d(t,"k",(function(){return s.a}));var r=n(36),a=n(7),i=n.n(a),o=n(37),c=function(e){i()(Object(o.a)(e),r.c);var t="".concat(e.getMonth()+1),n="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,n.length<2?"0".concat(n):n].join("-")},s=n(38),l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=Object(s.a)(e);return n.setDate(n.getDate()-t),c(n)},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},d=n(43);var f=n(1);function g(){var e=function(e){return Object(f.sprintf)( +/* translators: %s: number of days */ +Object(f._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},70:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(2),a=Object(r.createContext)(""),i=(a.Consumer,a.Provider);t.b=a},73:function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return _})),n.d(t,"d",(function(){return E})),n.d(t,"b",(function(){return w})),n.d(t,"a",(function(){return S}));var r=n(14),a=n.n(r),i=n(30),o=n.n(i),c=n(6),s=n.n(c),l=n(21),u=n.n(l),d=n(26),f=n(71),g=n.n(f),p=n(1);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function v(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=h(e,t),r=n.formatUnit,a=n.formatDecimal;try{return r()}catch(e){return a()}},h=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var n=Math.floor(e/60/60),r=Math.floor(e/60%60),a=Math.floor(e%60);return{hours:n,minutes:r,seconds:a,formatUnit:function(){var i=t.unitDisplay,o=v(v({unitDisplay:void 0===i?"short":i},u()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?E(a,v(v({},o),{},{unit:"second"})):Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?E(a,v(v({},o),{},{unit:"second"})):"",r?E(r,v(v({},o),{},{unit:"minute"})):"",n?E(n,v(v({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(p.__)("%ds","google-site-kit"),a);if(0===e)return t;var i=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(p.__)("%dm","google-site-kit"),r),o=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(p.__)("%dh","google-site-kit"),n);return Object(p.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",r?i:"",n?o:"").trim()}}},y=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},O=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in millions. +Object(p.__)("%sM","google-site-kit"),E(y(e),e%10==0?{}:t)):1e4<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),E(y(e))):1e3<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(p.__)("%sK","google-site-kit"),E(y(e),e%10==0?{}:t)):E(e,{signDisplay:"never",maximumFractionDigits:1})},_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(d.isFinite)(e)?e:Number(e),Object(d.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var n={};if("%"===t)n={style:"percent",maximumFractionDigits:2};else{if("s"===t)return b(e,{unitDisplay:"narrow"});t&&"string"==typeof t?n={style:"currency",currency:t}:Object(d.isPlainObject)(t)&&(n=v({},t))}var r=n,a=r.style,i=void 0===a?"metric":a;return"metric"===i?O(e):"duration"===i?b(e,t):E(e,n)},k=g()(console.warn),E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,i=u()(t,["locale"]);try{return new Intl.NumberFormat(r,i).format(e)}catch(t){k("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(r),", ").concat(JSON.stringify(i)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},s=["signDisplay","compactDisplay"],l={},d=0,f=Object.entries(i);d1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,a=t.style,i=void 0===a?"long":a,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var s=new Intl.ListFormat(r,{style:i,type:c});return s.format(e)} +/* translators: used between list items, there is a space after the comma. */var l=Object(p.__)(", ","google-site-kit");return e.join(l)},S=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,n=Object(d.get)(t,["_googlesitekitLegacyData","locale"]);if(n){var r=n.match(/^(\w{2})?(_)?(\w{2})/);if(r&&r[0])return r[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,n(22))},78:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var r=n(124),a=n.n(r)()(e)}).call(this,n(22))},8:function(e,t,n){"use strict";n.d(t,"z",(function(){return c.b})),n.d(t,"w",(function(){return s.a})),n.d(t,"A",(function(){return s.b})),n.d(t,"y",(function(){return g})),n.d(t,"f",(function(){return p.a})),n.d(t,"m",(function(){return p.b})),n.d(t,"u",(function(){return m.c})),n.d(t,"v",(function(){return m.d})),n.d(t,"r",(function(){return m.b})),n.d(t,"l",(function(){return m.a})),n.d(t,"s",(function(){return y})),n.d(t,"g",(function(){return O})),n.d(t,"b",(function(){return _.b})),n.d(t,"a",(function(){return _.a})),n.d(t,"c",(function(){return _.e})),n.d(t,"i",(function(){return _.f})),n.d(t,"x",(function(){return _.k})),n.d(t,"j",(function(){return k.b})),n.d(t,"q",(function(){return k.c})),n.d(t,"e",(function(){return k.a})),n.d(t,"o",(function(){return E.b})),n.d(t,"k",(function(){return E.a})),n.d(t,"t",(function(){return E.d})),n.d(t,"p",(function(){return w})),n.d(t,"n",(function(){return S})),n.d(t,"d",(function(){return j})),n.d(t,"B",(function(){return x})),n.d(t,"h",(function(){return N}));var r=n(123),a=n.n(r),i=n(118),o=n.n(i),c=n(32),s=n(63),l=n(30),u=n.n(l),d=n(81),f=n.n(d),g=function(e){return f()(JSON.stringify(function e(t){var n={};return Object.keys(t).sort().forEach((function(r){var a=t[r];a&&"object"===u()(a)&&!Array.isArray(a)&&(a=e(a)),n[r]=a})),n}(e)))};var p=n(83),m=(n(84),n(73));function v(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function b(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function h(e){return e.replace(/\n/gi,"
")}function y(e){for(var t=e,n=0,r=[v,b,h];n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){s=!0,i=e},f:function(){try{c||null==n.return||n.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:location,n=new URL(t.href);if(e)return n.searchParams&&n.searchParams.get?n.searchParams.get(e):s(e);var r,o={},c=i(n.searchParams.entries());try{for(c.s();!(r=c.n()).done;){var l=a()(r.value,2),u=l[0],d=l[1];o[u]=d}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,n(22))},84:function(e,t,n){"use strict";(function(e){n(44),n(45)}).call(this,n(22))},85:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"a",(function(){return c}));var r=n(169),a=n(62),i=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=n.invertColor,o=void 0!==i&&i;return Object(r.a)(e.createElement(a.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,n,r,a,i,o,c,s,l,u,d,f,g,p,m;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(r=n.rows)||void 0===r?void 0:r.length)||(null==e||null===(a=e[0])||void 0===a||null===(i=a.data)||void 0===i||null===(o=i.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.metrics)||void 0===s||null===(l=s[0])||void 0===l||null===(u=l.values)||void 0===u?void 0:u[0])===(null==e||null===(d=e[0])||void 0===d||null===(f=d.data)||void 0===f||null===(g=f.totals)||void 0===g||null===(p=g[0])||void 0===p||null===(m=p.values)||void 0===m?void 0:m[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,n(3))},86:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),a=n.n(r),i=n(87),o=n(88);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,a=s(s({},l),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(a,n);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(o.a)(a,n,c,r)}}}).call(this,n(22))},87:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var r=n(52),a=n(31);function i(t,n){var i,o=Object(r.a)(n);return function(){var n=e.document;if(void 0===i&&(i=!!n.querySelector("script[".concat(a.b,"]"))),!i){var r=n.createElement("script");r.setAttribute(a.b,""),r.async=!0,r.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),n.head.appendChild(r),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,n(22))},88:function(e,t,n){"use strict";n.d(t,"a",(function(){return g}));var r=n(5),a=n.n(r),i=n(6),o=n.n(i),c=n(16),s=n.n(c),l=n(52),u=n(42);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t0&&void 0!==c[0]?c[0]:{},n=t.clearAfterRestore,r=void 0===n||n,e.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(i=e.sent,a=i.cacheHit,o=i.value,!a){e.next=13;break}return e.next=10,{payload:{snapshot:o},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!r){e.next=13;break}return e.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return e.abrupt("return",a);case 14:case"end":return e.stop()}}),e)})),createSnapshot:s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))},a=(t={},o()(t,"DELETE_SNAPSHOT",(function(){return Object(f.a)("datastore::cache::".concat(e))})),o()(t,"CREATE_SNAPSHOT",p((function(t){return function(){return Object(f.d)("datastore::cache::".concat(e),t.stores[e].store.getState())}}))),o()(t,"RESTORE_SNAPSHOT",(function(){return Object(f.b)("datastore::cache::".concat(e),m.b)})),t);return{initialState:n,actions:r,controls:a,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0,r=t.type,a=t.payload;switch(r){case"SET_STATE_FROM_SNAPSHOT":var o=a.snapshot,c=(o.error,i()(o,["error"]));return c;default:return e}}}},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Object.values(e.stores).filter((function(e){return Object.keys(e.getActions()).includes("restoreSnapshot")}))},v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Promise.all(h(e).map((function(e){return e.getActions().createSnapshot()})))},O=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Promise.all(h(e).map((function(e){return e.getActions().restoreSnapshot()})))}},102:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=200},105:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(11),o=n.n(a),c=n(72),s=n(1),l=n(20),u=n(56);function SourceLink(t){var n=t.name,r=t.href,i=t.className,a=t.external;return Object(u.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",i)},Object(c.a)(Object(s.sprintf)( +/* translators: %s: source link */ +Object(s.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(l.a,{key:"link",href:r,external:a})}))}SourceLink.propTypes={name:i.a.string,href:i.a.string,className:i.a.string,external:i.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},106:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t=S&&S>0),o()(n,"mdc-layout-grid__cell--span-".concat(k,"-desktop"),12>=k&&k>0),o()(n,"mdc-layout-grid__cell--start-".concat(E,"-desktop"),12>=E&&E>0),o()(n,"mdc-layout-grid__cell--order-".concat(j,"-desktop"),12>=j&&j>0),o()(n,"mdc-layout-grid__cell--span-".concat(O,"-tablet"),8>=O&&O>0),o()(n,"mdc-layout-grid__cell--start-".concat(_,"-tablet"),8>=_&&_>0),o()(n,"mdc-layout-grid__cell--order-".concat(y,"-tablet"),8>=y&&y>0),o()(n,"mdc-layout-grid__cell--span-".concat(b,"-phone"),4>=b&&b>0),o()(n,"mdc-layout-grid__cell--start-".concat(h,"-phone"),4>=h&&h>0),o()(n,"mdc-layout-grid__cell--order-".concat(v,"-phone"),4>=v&&v>0),n))}),w)}Cell.propTypes={smSize:u.a.number,smStart:u.a.number,smOrder:u.a.number,mdSize:u.a.number,mdStart:u.a.number,mdOrder:u.a.number,lgSize:u.a.number,lgStart:u.a.number,lgOrder:u.a.number,size:u.a.number,alignTop:u.a.bool,alignMiddle:u.a.bool,alignBottom:u.a.bool,alignRight:u.a.bool,alignLeft:u.a.bool,smAlignRight:u.a.bool,mdAlignRight:u.a.bool,lgAlignRight:u.a.bool,className:u.a.string,children:u.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var r=n(18),i=n.n(r),a=n(21),o=n.n(a),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=Object(d.forwardRef)((function(t,n){var r=t.className,a=t.children,c=o()(t,["className","children"]);return e.createElement("div",i()({ref:n,className:u()("mdc-layout-grid__inner",r)},c),a)}));g.displayName="Row",g.propTypes={className:s.a.string,children:s.a.node},g.defaultProps={className:""},t.a=g}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var r=n(18),i=n.n(r),a=n(21),o=n.n(a),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=Object(d.forwardRef)((function(t,n){var r=t.alignLeft,a=t.fill,c=t.className,s=t.children,l=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",i()({className:u()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":r,"mdc-layout-grid--collapsed":l,"mdc-layout-grid--fill":a})},d,{ref:n}),s)}));g.displayName="Grid",g.propTypes={alignLeft:s.a.bool,fill:s.a.bool,className:s.a.string,collapsed:s.a.bool,children:s.a.node},g.defaultProps={className:""},t.a=g}).call(this,n(3))},111:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"d",(function(){return a})),n.d(t,"c",(function(){return o}));var r="editing-user-role-select-slug-key",i=["idea-hub","thank-with-google"],a="dashboardSharingDialogOpen",o="resetSharingDialogOpen"},1116:function(e,t,n){"use strict";n.r(t),function(e,t){var r=n(212),i=n(122),a=n(8),o=n(172),c=n(23),s=n(876);Object(r.a)((function(){e._googlesitekitLegacyData.admin.resetSession&&Object(a.f)();var n=document.getElementById("js-googlesitekit-main-dashboard");if(n){var r=n.dataset,l=r.setupModuleSlug,u=r.viewOnly,d=c.l;l||(d=u?c.k:c.j),Object(i.render)(t.createElement(o.a,{viewContext:d},t.createElement(s.a,{setupModuleSlug:l})),n)}}))}.call(this,n(22),n(3))},113:function(e,t,n){"use strict";(function(e){var r=n(44),i=n.n(r),a=n(45),o=n.n(a),c=n(96),s=n.n(c),l=n(75),u=n.n(l),d=n(76),g=n.n(d),f=n(48),m=n.n(f),p=n(0),b=n.n(p),h=n(11),v=n.n(h),O=n(2),_=n(1),y=n(62),k=n(105),E=n(65),j=n(8);function S(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=m()(e);if(t){var i=m()(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return g()(this,n)}}var w=function(t){u()(DataBlock,t);var n=S(DataBlock);function DataBlock(e){var t;return i()(this,DataBlock),(t=n.call(this,e)).handleClick=t.handleClick.bind(s()(t)),t.handleKeyPress=t.handleKeyPress.bind(s()(t)),t}return o()(DataBlock,[{key:"handleClick",value:function(){var e=this.props,t=e.stat;(0,e.handleStatSelection)(t)}},{key:"handleKeyPress",value:function(e){e.preventDefault();var t=this.props,n=t.stat,r=t.handleStatSelection;"Enter"!==e.key&&" "!==e.key||r(n)}},{key:"render",value:function(){var t=this.props,n=t.className,r=t.title,i=t.datapoint,a=t.datapointUnit,o=t.change,c=t.changeDataUnit,s=t.context,l=t.period,u=t.selected,d=t.handleStatSelection,g=t.source,f=t.sparkline,m=t.invertChangeColor,p=t.gatheringData,b=t.gatheringDataNoticeStyle,h="button"===s?"button":"",S=f;S&&m&&(S=Object(O.cloneElement)(f,{invertChangeColor:m}));var w=o;c&&(w="%"===c?Object(j.u)(o,{style:"percent",signDisplay:"never",maximumFractionDigits:1}):Object(j.u)(o,c)),l&&(w=Object(_.sprintf)(l,w));var N=void 0===i?i:Object(j.u)(i,a||void 0);return e.createElement("div",{className:v()("googlesitekit-data-block",n,"googlesitekit-data-block--".concat(s),{"googlesitekit-data-block--selected":u,"googlesitekit-data-block--is-gathering-data":p}),tabIndex:"button"!==s||p?"-1":"0",role:d&&h,onClick:p?void 0:d&&this.handleClick,onKeyPress:p?void 0:d&&this.handleKeyPress,"aria-disabled":p||void 0,"aria-label":d&&r,"aria-pressed":d&&u},e.createElement("div",{className:"googlesitekit-data-block__title-datapoint-wrapper"},e.createElement("h3",{className:" googlesitekit-subheading-1 googlesitekit-data-block__title "},r),!p&&e.createElement("div",{className:"googlesitekit-data-block__datapoint"},N)),!p&&e.createElement(O.Fragment,null,S&&e.createElement("div",{className:"googlesitekit-data-block__sparkline"},S),e.createElement("div",{className:"googlesitekit-data-block__change-source-wrapper"},e.createElement("div",{className:v()("googlesitekit-data-block__change",{"googlesitekit-data-block__change--no-change":!o})},e.createElement(O.Fragment,null,!!o&&e.createElement("span",{className:"googlesitekit-data-block__arrow"},e.createElement(y.a,{direction:01?Object(g.a)(u):[],h=function(e){return s()("googlesitekit-tooltip-indicator",{active:e===c})};return e.createElement("div",i()({className:s()("googlesitekit-tour-tooltip",m.className)},p),e.createElement(o.a,{className:"googlesitekit-tooltip-card"},e.createElement("div",{className:"googlesitekit-tooltip-body"},e.createElement("h2",{className:"googlesitekit-tooltip-title"},m.title),e.createElement("div",{className:"googlesitekit-tooltip-content"},m.content)),e.createElement(a.CardActions,{className:"googlesitekit-tooltip-actions"},e.createElement("ul",{className:"googlesitekit-tooltip-indicators"},b.map((function(t){return e.createElement("li",{key:"indicator-".concat(t),className:h(t)})}))),e.createElement("div",{className:"googlesitekit-tooltip-buttons"},0!==c&&e.createElement(d.Button,i()({className:"googlesitekit-tooltip-button",text:!0},n),n.title),m.cta,l.title&&e.createElement(d.Button,i()({className:"googlesitekit-tooltip-button",text:!0},l),l.title))),e.createElement(d.Button,i()({className:"googlesitekit-tooltip-close",text:!0,icon:e.createElement(f.a,{width:"14",height:"14"})},r))))}TourTooltip.propTypes={backProps:u.a.object.isRequired,closeProps:u.a.object.isRequired,index:u.a.number.isRequired,isLastStep:u.a.bool.isRequired,primaryProps:u.a.object.isRequired,size:u.a.number.isRequired,step:u.a.shape({content:u.a.node,title:u.a.node.isRequired,cta:u.a.oneOfType([u.a.element,u.a.bool]),className:u.a.string}).isRequired,tooltipProps:u.a.object.isRequired}}).call(this,n(3))},138:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t||{},i=n.slug,a=void 0===i?"":i,o=n.name,c=void 0===o?"":o,s=n.owner,l=void 0===s?{}:s;if(!a||!c)return e;var u="",d="";return"analytics"===a?e.match(/account/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics account, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/property/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/view/i)&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics view, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")):"search-console"===a&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Search Console property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")),u||(u=Object(r.sprintf)( +/* translators: %s: module name */ +Object(r.__)("Your Google account does not have sufficient permissions to access %s data, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"),c)),l&&l.login&&(d=Object(r.sprintf)( +/* translators: %s: owner name */ +Object(r.__)('This service was originally connected by the administrator "%s" — you can contact them for more information.',"google-site-kit"),l.login)),d||(d=Object(r.__)("This service was originally connected by an administrator — you can contact them for more information.","google-site-kit")),"".concat(u," ").concat(d)}},145:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(7),i=n.n(r),a=function(e,t){var n=t.dateRangeLength;i()(Array.isArray(e),"report must be an array to partition."),i()(Number.isInteger(n)&&n>0,"dateRangeLength must be a positive integer.");var r=-1*n;return{currentRange:e.slice(r),compareRange:e.slice(2*r,r)}}},146:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return RecoverableModules}));var r=n(0),i=n.n(r),a=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function RecoverableModules(t){var n=t.moduleSlugs,r=u((function(e){var t=e(s.a).getModules();if(void 0!==t)return n.map((function(e){return t[e].name}))}));if(void 0===r)return null;var i=1===r.length?Object(a.sprintf)( +/* translators: %s: Module name */ +Object(a.__)("%s data was previously shared by an admin who no longer has access. Please contact another admin to restore it.","google-site-kit"),r[0]):Object(a.sprintf)( +/* translators: %s: List of module names */ +Object(a.__)("The data for the following modules was previously shared by an admin who no longer has access: %s. Please contact another admin to restore it.","google-site-kit"),r.join(Object(a._x)(", ","Recoverable modules","google-site-kit")));return e.createElement(l.a,{title:Object(a.__)("Data Unavailable","google-site-kit"),description:i})}RecoverableModules.propTypes={moduleSlugs:i.a.arrayOf(i.a.string).isRequired}}).call(this,n(3))},147:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return FeatureTours}));var r=n(97),i=n(4),a=n.n(i),o=n(12),c=n(19),s=n(127),l=a.a.useSelect,u=a.a.useDispatch;function FeatureTours(){var t=Object(c.a)(),n=u(o.a).triggerTourForView;Object(r.a)((function(){n(t)}));var i=l((function(e){return e(o.a).getCurrentTour()}));return i?e.createElement(s.a,{tourID:i.slug,steps:i.steps,gaEventCategory:i.gaEventCategory,callback:i.callback}):null}}).call(this,n(3))},148:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ModuleIcon}));var r=n(18),i=n.n(r),a=n(21),o=n.n(a),c=n(0),s=n.n(c),l=n(4),u=n.n(l),d=n(17),g=u.a.useSelect;function ModuleIcon(t){var n=t.slug,r=t.size,a=o()(t,["slug","size"]),c=g((function(e){return e(d.a).getModuleIcon(n)}));return c?e.createElement(c,i()({width:r,height:r},a)):null}ModuleIcon.propTypes={slug:s.a.string.isRequired,size:s.a.number},ModuleIcon.defaultProps={size:33}}).call(this,n(3))},149:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(2),i=n(4),a=n.n(i),o=n(50),c=a.a.useDispatch;function s(e,t,n){var i=c(o.a),a=i.setWidgetState,s=i.unsetWidgetState;Object(r.useEffect)((function(){return a(e,t,n),function(){s(e,t,n)}}),[e,t,n,a,s])}},15:function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return a}));var r="core/site",i="primary",a="secondary"},151:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportZero}));var r=n(0),i=n.n(r),a=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function ReportZero(t){var n=t.moduleSlug,r=u((function(e){return e(s.a).getModule(n)}));return e.createElement(l.a,{title:Object(a.sprintf)( +/* translators: %s: Module name */ +Object(a.__)("%s Gathering Data","google-site-kit"),null==r?void 0:r.name),description:Object(a.sprintf)( +/* translators: %s: Module name */ +Object(a.__)("%s data is not yet available, please check back later","google-site-kit"),null==r?void 0:r.name)})}ReportZero.propTypes={moduleSlug:i.a.string.isRequired}}).call(this,n(3))},153:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e){return new Array(null!=e?e:0).fill().map((function(e,t){return t}))}},154:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw a}}}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r,i=S(n);try{for(i.s();!(r=i.n()).done;){var a=r.value,o=Y[a.question_ordinal],c=a.answer_ordinal||[];if(o&&!c.includes(o))return X++,!1}}catch(e){i.e(e)}finally{i.f()}}return t===X})),Q=Object(f.useCallback)((function(e){P||(I(!0),G("question_answered",{question_ordinal:null==$?void 0:$.question_ordinal,answer:e}),setTimeout((function(){V(W,{answers:[].concat(o()(q),[{question_ordinal:null==$?void 0:$.question_ordinal,answer:e}])}),I(!1)}),300))}),[q,$,W,G,V,P]);(null==B?void 0:B.length)&&X>B.length&&((K=(z||[]).find((function(e){var t,n=S(e.trigger_condition||[]);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.answer_ordinal.includes(Y[r.question_ordinal]))return K=e,!0}}catch(e){n.e(e)}finally{n.f()}return!1})))||(K=z[0]));var Z=Object(f.useCallback)((function(){var e;G("follow_up_link_clicked",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}),G("survey_closed"),V(W,{hideSurvey:!0})}),[W,G,V,K]),J=Object(f.useCallback)((function(){G("survey_closed"),R(!1)}),[G]),ee=Object(f.useCallback)((function(){V(W,{hideSurvey:!0})}),[W,V]);if(Object(f.useEffect)((function(){var e;K&&!p&&(b(!0),G("completion_shown",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}))}),[p,G,K]),Object(d.a)((function(){R(!0)})),H||!B||!z||void 0===U)return null;if(K)return e.createElement(g.a,{direction:"up",in:M,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},e.createElement(O.a,{dismissSurvey:J,ctaOnClick:Z,ctaText:K.follow_up_text,ctaURL:K.follow_up_url,title:K.completion_title},K.completion_text)));if(!A.includes(null==$?void 0:$.question_type))return null;var te={key:$.question_text,answerQuestion:Q,dismissSurvey:J,question:$.question_text,submitButtonText:(null==B?void 0:B.length)===X?Object(m.__)("Submit","google-site-kit"):Object(m.__)("Next","google-site-kit")};return e.createElement(g.a,{direction:"up",in:M,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},"multi_select"===$.question_type&&e.createElement(k.a,i()({},te,{choices:$.question.answer_choice,minChoices:$.question.min_choices,maxChoices:$.question.max_choices})),"open_text"===$.question_type&&e.createElement(y.a,i()({},te,{subtitle:$.question.subtitle,placeholder:$.question.placeholder})),"rating"===$.question_type&&e.createElement(_.a,i()({},te,{choices:$.question.answer_choice})),"single_select"===$.question_type&&e.createElement(E.a,i()({},te,{choices:$.question.answer_choice})),!1===U&&1===(null==$?void 0:$.question_ordinal)&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(j.a,null))))}}).call(this,n(3))},181:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(13),o=n(64),c=function SurveyCompletion(t){var n=t.title,r=t.children,i=t.ctaText,c=t.ctaURL,s=t.ctaOnClick,l=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__completion"},e.createElement(o.a,{title:n,dismissSurvey:l}),e.createElement("div",{className:"googlesitekit-survey__body"},r),c&&i&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(a.Button,{href:c,onClick:s,target:"_blank"},i)))};c.propTypes={title:i.a.string.isRequired,children:i.a.node,ctaText:i.a.string,ctaURL:i.a.string,ctaOnClick:i.a.func,dismissSurvey:i.a.func.isRequired},c.defaultProps={title:"",children:null,ctaText:"",ctaURL:"",ctaOnClick:null},t.a=c}).call(this,n(3))},182:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(64),o=n(183),c=function SurveyQuestionRating(t){var n=t.question,r=t.choices,i=t.answerQuestion,c=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__question-rating"},e.createElement(a.a,{title:n,dismissSurvey:c}),e.createElement("div",{className:"googlesitekit-survey__body"},e.createElement("div",{className:"googlesitekit-survey__choices"},r.map((function(t,n){return e.createElement(o.a,{key:n,choice:t,answerQuestion:i})})))))};c.propTypes={question:i.a.string.isRequired,choices:i.a.arrayOf(i.a.shape({answer_ordinal:i.a.oneOfType([i.a.string,i.a.number]),text:i.a.string})).isRequired,answerQuestion:i.a.func.isRequired,dismissSurvey:i.a.func.isRequired},t.a=c}).call(this,n(3))},183:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(2),o=n(13),c=n(184),s=n(185),l=n(186),u=n(187),d=n(188),g={1:c.a,2:s.a,3:l.a,4:u.a,5:d.a},f=function SurveyQuestionRatingChoice(t){var n=t.choice,r=t.answerQuestion,i=Object(a.useCallback)((function(){"function"==typeof r&&r({answer:{answer_ordinal:n.answer_ordinal}})}),[r,n]),c=g[n.answer_ordinal];return c?e.createElement("div",{className:"googlesitekit-survey__choice"},e.createElement(o.Button,{icon:e.createElement(c,{width:30,height:30}),"aria-label":n.text,onClick:i}),e.createElement("p",null,n.text)):null};f.propTypes={choice:i.a.shape({answer_ordinal:i.a.oneOfType([i.a.string,i.a.number]),text:i.a.string}).isRequired},t.a=f}).call(this,n(3))},184:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t0,A=Object.values(C).filter((function(e){return e.selected})).length,M=d&&A===d,R=D||A1&&e.createElement(v.g,{persistent:!0},Object(p.sprintf)( +/* translators: %s: the number of answers. */ +Object(p.__)("Choose at least %s answers","google-site-kit"),u)),e.createElement(b.Button,{onClick:function(){var e=Object.values(C).filter((function(e){return e.selected})).map((function(e){var t=e.answer_ordinal,n=e.answer_text;return n?{answer_ordinal:t,answer_text:n}:{answer_ordinal:t}}));a({answer:e})},disabled:R},y)))};E.propTypes={question:u.a.string.isRequired,choices:u.a.arrayOf(u.a.shape({answer_ordinal:u.a.oneOfType([u.a.string,u.a.number]),text:u.a.string,write_in:u.a.bool})).isRequired,answerQuestion:u.a.func.isRequired,dismissSurvey:u.a.func.isRequired,minChoices:u.a.number,maxChoices:u.a.number,submitButtonText:u.a.string.isRequired},t.a=E}).call(this,n(3))},191:function(e,t,n){"use strict";(function(e){var r=n(6),i=n.n(r),a=n(14),o=n.n(a),c=n(0),s=n.n(c),l=n(2),u=n(13),d=n(64),g=n(192);function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t0,E=""===p||k&&""===O;return e.createElement("div",{className:"googlesitekit-single-select"},e.createElement(d.a,{title:n,dismissSurvey:a}),e.createElement("div",{className:"googlesitekit-survey__body"},y.map((function(t,n){return e.createElement(g.a,{key:n,value:p,setValue:b,writeIn:O,setWriteIn:_,choice:t})}))),e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(u.Button,{onClick:function(){var e=k?{answer_text:O}:{};i({answer:m({answer_ordinal:Number(p)},e)})},disabled:E},c)))};p.propTypes={question:s.a.string.isRequired,choices:s.a.arrayOf(s.a.shape({answer_ordinal:s.a.oneOfType([s.a.string,s.a.number]),text:s.a.string,write_in:s.a.bool})).isRequired,answerQuestion:s.a.func.isRequired,dismissSurvey:s.a.func.isRequired},t.a=p}).call(this,n(3))},192:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(2),o=n(1),c=n(13),s=n(10),l=n(60),u=n(102),d=function SurveyQuestionSingleSelectChoice(t){var n=t.value,r=t.setValue,i=t.writeIn,d=t.setWriteIn,g=t.choice,f=g.answer_ordinal,m=g.text,p=g.write_in,b=n===f,h="googlesitekit-survey__multi-select-".concat(f,"-").concat(m);return e.createElement("div",{className:"googlesitekit-single-select__choice"},e.createElement(c.Radio,{id:m.replace(/ /g,"-"),value:f,checked:b,name:m,onClick:function(){return r(f)}},m),p&&e.createElement(a.Fragment,null,e.createElement(l.a,null,e.createElement("label",{htmlFor:h},Object(o.sprintf)( +/* translators: %s: Option name */ +Object(o.__)("Text input for option %s","google-site-kit"),m))),e.createElement(s.r,null,e.createElement(s.h,{id:h,onChange:function(e){return d(e.target.value.slice(0,u.a))},value:i,disabled:!b}))))};d.propTypes={choice:i.a.shape({answer_ordinal:i.a.oneOfType([i.a.string,i.a.number]),text:i.a.string,write_in:i.a.bool}),value:i.a.string.isRequired,setValue:i.a.func.isRequired,writeIn:i.a.string.isRequired,setWriteIn:i.a.func.isRequired},t.a=d}).call(this,n(3))},193:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SurveyTerms}));var r=n(1),i=n(72),a=n(4),o=n.n(a),c=n(15),s=n(20),l=o.a.useSelect;function SurveyTerms(){var t=l((function(e){return e(c.c).getGooglePrivacyPolicyURL()})),n=l((function(e){return e(c.c).getGoogleTermsURL()}));return e.createElement("p",{className:"googlesitekit-survey__terms"},Object(i.a)(Object(r.__)("By continuing, you agree to allow Google to use your answers and account info to improve services, per our Privacy & Terms.","google-site-kit"),{privacy:e.createElement(s.a,{href:t,external:!0}),terms:e.createElement(s.a,{href:n,external:!0})}))}}).call(this,n(3))},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(23),i=function(e){return r.e.includes(e)}},20:function(e,t,n){"use strict";(function(e){var r=n(18),i=n.n(r),a=n(21),o=n.n(a),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(120),g=n(1),f=n(2),m=Object(f.forwardRef)((function(t,n){var r,a=t["aria-label"],c=t.arrow,s=t.back,l=t.caps,f=t.children,m=t.className,p=t.danger,b=t.disabled,h=t.external,v=t.hideExternalIndicator,O=t.href,_=t.inverse,y=t.onClick,k=t.small,E=t.to,j=o()(t,["aria-label","arrow","back","caps","children","className","danger","disabled","external","hideExternalIndicator","href","inverse","onClick","small","to"]),S=O||E||!y?E?"ROUTER_LINK":h?"EXTERNAL_LINK":"LINK":b?"BUTTON_DISABLED":"BUTTON",w="BUTTON"===S||"BUTTON_DISABLED"===S?"button":"ROUTER_LINK"===S?d.b:"a",N=("EXTERNAL_LINK"===S&&(r=Object(g._x)("(opens in a new tab)","screen reader text","google-site-kit")),"BUTTON_DISABLED"===S&&(r=Object(g._x)("(disabled)","screen reader text","google-site-kit")),r?a?"".concat(a," ").concat(r):"string"==typeof f?"".concat(f," ").concat(r):void 0:a);return e.createElement(w,i()({"aria-label":N,className:u()("googlesitekit-cta-link",m,{"googlesitekit-cta-link--arrow":c,"googlesitekit-cta-link--external":h&&!v,"googlesitekit-cta-link--inverse":_,"googlesitekit-cta-link--back":s,"googlesitekit-cta-link--small":k,"googlesitekit-cta-link--caps":l,"googlesitekit-cta-link--danger":p,"googlesitekit-cta-link--disabled":b}),disabled:b,href:"LINK"!==S&&"EXTERNAL_LINK"!==S||b?void 0:O,onClick:y,rel:"EXTERNAL_LINK"===S?"noopener noreferrer":void 0,ref:n,target:"EXTERNAL_LINK"===S?"_blank":void 0,to:E},j),f)}));m.propTypes={arrow:s.a.bool,back:s.a.bool,caps:s.a.bool,children:s.a.node,className:s.a.string,danger:s.a.bool,disabled:s.a.bool,external:s.a.bool,hideExternalIndicator:s.a.bool,href:s.a.string,inverse:s.a.bool,onClick:s.a.func,small:s.a.bool,to:s.a.string},m.defaultProps={arrow:!1,back:!1,caps:!1,className:"",danger:!1,disabled:!1,external:!1,hideExternalIndicator:!1,href:"",inverse:!1,small:!1},t.a=m}).call(this,n(3))},202:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportError}));var r=n(6),i=n.n(r),a=n(0),o=n.n(a),c=n(313),s=n.n(c),l=n(2),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(17),p=n(58),b=n(144),h=n(78),v=n(82),O=n(119),_=n(20),y=n(15);function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;t1&&(n=Object(u.sprintf)( +/* translators: %s: module name */ +Object(u.__)("Data errors in %s","google-site-kit"),null==a?void 0:a.name)):n=Object(u.sprintf)( +/* translators: %s: module name */ +Object(u.__)("Data error in %s","google-site-kit"),null==a?void 0:a.name);var A=e.createElement(l.Fragment,null,T.map((function(t){var n,r=null==i||null===(n=i.data)||void 0===n?void 0:n.reconnectURL;return r?e.createElement(v.a,{key:t.message,message:t.message,reconnectURL:r}):e.createElement("p",{key:t.message},h.a.sanitize(t.message,{ALLOWED_TAGS:[]}))}))),M=Object(l.useCallback)((function(){g.forEach((function(e){var t=e.selectorData;N(t.storeName).invalidateResolution(t.name,t.args)}))}),[N,g]),R=c&&D;return e.createElement(O.a,{title:n,description:A,error:!0},e.createElement("div",{className:"googlesitekit-error-cta-wrapper"},R&&e.createElement(f.Button,{href:c,target:"_blank"},Object(u.__)("Request access","google-site-kit")),k?e.createElement(l.Fragment,null,e.createElement(f.Button,{onClick:M},Object(u.__)("Retry","google-site-kit")),e.createElement("span",{className:"googlesitekit-error-retry-text"},Object(u.__)("Retry didn’t work?","google-site-kit")," "),e.createElement(_.a,{href:w,external:!0},Object(u.__)("Get help","google-site-kit"))):e.createElement(_.a,{href:w,external:!0},Object(u.__)("Get help","google-site-kit"))))}ReportError.propTypes={moduleSlug:o.a.string.isRequired,error:o.a.oneOfType([o.a.arrayOf(o.a.object),o.a.object]).isRequired}}).call(this,n(3))},205:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return OptIn}));var r=n(5),i=n.n(r),a=n(16),o=n.n(a),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=n(72),f=n(1),m=n(4),p=n.n(m),b=n(13),h=n(12),v=n(32),O=n(20),_=n(19),y=p.a.useSelect,k=p.a.useDispatch;function OptIn(t){var n=t.id,r=void 0===n?"googlesitekit-opt-in":n,a=t.name,c=void 0===a?"optIn":a,s=t.className,l=t.trackEventCategory,m=y((function(e){return e(h.a).isTrackingEnabled()})),p=y((function(e){return e(h.a).isSavingTrackingEnabled()})),E=y((function(e){return e(h.a).getErrorForAction("setTrackingEnabled",[!m])})),j=k(h.a).setTrackingEnabled,S=Object(_.a)(),w=Object(d.useCallback)(function(){var e=o()(i.a.mark((function e(t){var n,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,j(!!t.target.checked);case 2:n=e.sent,r=n.response,n.error||(Object(v.a)(r.enabled),r.enabled&&Object(v.b)(l||S,"tracking_optin"));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[j,l,S]);return e.createElement("div",{className:u()("googlesitekit-opt-in",s)},e.createElement(b.Checkbox,{id:r,name:c,value:"1",checked:m,disabled:p,onChange:w,loading:void 0===m},e.createElement("span",null,Object(f.__)("Help us improve Site Kit by sharing anonymous usage data.","google-site-kit")," "),e.createElement("span",null,Object(g.a)(Object(f.__)("All collected data is treated in accordance with the Google Privacy Policy.","google-site-kit"),{a:e.createElement(O.a,{key:"link",href:"https://policies.google.com/privacy",external:!0})}))),(null==E?void 0:E.message)&&e.createElement("div",{className:"googlesitekit-error-text"},null==E?void 0:E.message))}OptIn.propTypes={id:s.a.string,name:s.a.string,className:s.a.string,trackEventCategory:s.a.string}}).call(this,n(3))},206:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return g})),n.d(t,"b",(function(){return m}));var r=n(18),i=n.n(r),a=n(71),o=n.n(a),c=n(220),s=n(267),l=n(268),u=n(269),d=n(221),g=o()((function(e){return{Widget:f(e)(c.a),WidgetRecoverableModules:f(e)(d.a),WidgetReportZero:f(e)(s.a),WidgetReportError:f(e)(l.a),WidgetNull:f(e)(u.a)}}));function f(t){return function(n){var r=function WithWidgetSlug(r){return e.createElement(n,i()({},r,{widgetSlug:t}))};return r.displayName="WithWidgetSlug",(n.displayName||n.name)&&(r.displayName+="(".concat(n.displayName||n.name,")")),r}}var m=function(t){var n=g(t);return function(t){var r=function DecoratedComponent(r){return e.createElement(t,i()({},r,n))};return r.displayName="WithWidgetComponentProps",(t.displayName||t.name)&&(r.displayName+="(".concat(t.displayName||t.name,")")),r}}}).call(this,n(3))},207:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"d",(function(){return o})),n.d(t,"e",(function(){return c})),n.d(t,"a",(function(){return s}));var r=n(27);function i(e){return"string"==typeof e&&/^\w+$/.test(e)}function a(e){return e===r.c||i(e)}function o(e){return"string"==typeof e&&/^\d+$/.test(e)}function c(e){return e===r.d||o(e)}function s(e){return"string"==typeof e&&/^G-[a-zA-Z0-9]+$/.test(e)}},208:function(e,t,n){"use strict";(function(e){var r=n(14),i=n.n(r),a=n(0),o=n.n(a),c=n(11),s=n.n(c),l=n(496),u=n(1),d=n(2),g=n(4),f=n.n(g),m=n(247),p=n(271),b=n(272),h=n(12),v=n(10),O=n(276),_=n(282),y=n(284),k=n(117),E=n(56),j=n(93),S=n(20),w=n(15),N=f.a.useSelect,C=function Header(t){var n,r=t.children,a=t.subHeader,o=t.showNavigation,c=Object(k.a)("dashboardSharing"),g=!!Object(j.c)(),f=Object(E.a)(),C=N((function(e){return e(w.c).getAdminURL("googlesitekit-dashboard")})),T=N((function(e){return e(h.a).isAuthenticated()})),D=Object(l.a)({childList:!0}),A=i()(D,2),M=A[0],R=!!(null===(n=A[1].target)||void 0===n?void 0:n.childElementCount);return e.createElement(d.Fragment,null,e.createElement("header",{className:s()("googlesitekit-header",{"googlesitekit-header--has-subheader":R,"googlesitekit-header--has-navigation":o})},e.createElement(v.f,null,e.createElement(v.p,null,e.createElement(v.a,{smSize:1,mdSize:2,lgSize:4,className:"googlesitekit-header__logo",alignMiddle:!0},e.createElement(S.a,{"aria-label":Object(u.__)("Go to dashboard","google-site-kit"),className:"googlesitekit-header__logo-link",href:C},e.createElement(m.a,null))),e.createElement(v.a,{smSize:3,mdSize:6,lgSize:8,className:"googlesitekit-header__children",alignMiddle:!0},r,!T&&c&&g&&f&&e.createElement(y.a,null),T&&(!c||!f)&&e.createElement(p.a,null))))),e.createElement("div",{className:"googlesitekit-subheader",ref:M},a),o&&e.createElement(O.a,null),e.createElement(_.a,null),e.createElement(b.a,null))};C.displayName="Header",C.propTypes={children:o.a.node,subHeader:o.a.element,showNavigation:o.a.bool},C.defaultProps={children:null,subHeader:null},t.a=C}).call(this,n(3))},209:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return HelpMenu}));var r=n(14),i=n.n(r),a=n(0),o=n.n(a),c=n(251),s=n(2),l=n(74),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(290),p=n(130),b=n(8),h=n(162),v=n(17),O=n(19),_=n(15),y=g.a.useSelect;function HelpMenu(t){var n=t.children,r=Object(s.useState)(!1),a=i()(r,2),o=a[0],d=a[1],g=Object(s.useRef)(),k=Object(O.a)();Object(c.a)(g,(function(){return d(!1)})),Object(p.a)([l.c,l.e],g,(function(){return d(!1)}));var E=y((function(e){return e(v.a).isModuleActive("adsense")})),j=Object(s.useCallback)((function(){o||Object(b.z)("".concat(k,"_headerbar"),"open_helpmenu"),d(!o)}),[o,k]),S=Object(s.useCallback)((function(){d(!1)}),[]),w=y((function(e){return e(_.c).getDocumentationLinkURL("fix-common-issues")}));return e.createElement("div",{ref:g,className:"googlesitekit-dropdown-menu googlesitekit-dropdown-menu__icon-menu mdc-menu-surface--anchor"},e.createElement(f.Button,{"aria-controls":"googlesitekit-help-menu","aria-expanded":o,"aria-label":Object(u.__)("Help","google-site-kit"),"aria-haspopup":"menu",className:"googlesitekit-header__dropdown googlesitekit-border-radius-round googlesitekit-button-icon googlesitekit-help-menu__button mdc-button--dropdown",icon:e.createElement(m.a,{width:"20",height:"20"}),onClick:j,text:!0}),e.createElement(f.Menu,{className:"googlesitekit-width-auto",menuOpen:o,id:"googlesitekit-help-menu",onSelected:S},n,e.createElement(h.a,{gaEventLabel:"fix_common_issues",href:w},Object(u.__)("Fix common issues","google-site-kit")),e.createElement(h.a,{gaEventLabel:"documentation",href:"https://sitekit.withgoogle.com/documentation/"},Object(u.__)("Read help docs","google-site-kit")),e.createElement(h.a,{gaEventLabel:"support_forum",href:"https://wordpress.org/support/plugin/google-site-kit/"},Object(u.__)("Get support","google-site-kit")),E&&e.createElement(h.a,{gaEventLabel:"adsense_help",href:"https://support.google.com/adsense/"},Object(u.__)("Get help with AdSense","google-site-kit"))))}HelpMenu.propTypes={children:o.a.node}}).call(this,n(3))},220:function(e,t,n){"use strict";(function(e){var r=n(11),i=n.n(r),a=n(0),o=n.n(a),c=function Widget(t){var n=t.children,r=t.className,a=t.widgetSlug,o=t.noPadding,c=t.Header,s=t.Footer;return e.createElement("div",{className:i()("googlesitekit-widget","googlesitekit-widget--".concat(a),{"googlesitekit-widget--no-padding":o},{"googlesitekit-widget--with-header":c},r)},c&&e.createElement("div",{className:"googlesitekit-widget__header"},e.createElement(c,null)),e.createElement("div",{className:"googlesitekit-widget__body"},n),s&&e.createElement("div",{className:"googlesitekit-widget__footer"},e.createElement(s,null)))};c.defaultProps={children:void 0,noPadding:!1},c.propTypes={children:o.a.node,widgetSlug:o.a.string.isRequired,noPadding:o.a.bool,Header:o.a.elementType,Footer:o.a.elementType},t.a=c}).call(this,n(3))},221:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WidgetRecoverableModules}));var r=n(6),i=n.n(r),a=n(18),o=n.n(a),c=n(24),s=n.n(c),l=n(21),u=n.n(l),d=n(0),g=n.n(d),f=n(2),m=n(149),p=n(146);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function WidgetRecoverableModules(t){var n=t.widgetSlug,r=t.moduleSlugs,i=u()(t,["widgetSlug","moduleSlugs"]),a=Object(f.useMemo)((function(){return{moduleSlug:s()(r).sort().join(","),moduleSlugs:r}}),[r]);return Object(m.a)(n,p.a,a),e.createElement(p.a,o()({moduleSlugs:r},i))}WidgetRecoverableModules.propTypes=function(e){for(var t=1;t=0;)3===e[n]?(t-=3,e[n]=4):6===e[n]&&(t-=6,e[n]=8),n--;return[e,t]}function d(e,t){return(Array.isArray(t.width)?t.width:[t.width]).map((function(t){return{counter:e+c.c[t],width:t}}))}function g(e,t){var n=[],r=[];if(!(null==e?void 0:e.length))return{columnWidths:n,rowIndexes:r};var a=0,o=0,s=function(e,t){return e.counter-t.counter},g=function(e,t){var n=e.counter;return t.counter-n},f=function(e){return e.counter<=12};if(e.forEach((function(m,p){if(l(t[m.slug]))return n.push(0),void r.push(o);var b=d(a,m),h=function(e,t,n){for(;++e12){if(a-=c.c[v],r[p]++,9===a){var O=u(n,a),_=i()(O,2);n=_[0],a=_[1]}a=c.c[v],o++}else 12===a&&(a=0,o++);n.push(c.c[v])})),9===a){var m=u(n,a),p=i()(m,2);n=p[0],a=p[1]}return{columnWidths:n,rowIndexes:r}}var f=n(134),m=n.n(f);function p(e,t,n){var r=n.columnWidths,i=n.rowIndexes,a=[],s=o()(r);if(!(null==e?void 0:e.length))return{gridColumnWidths:s,overrideComponents:a};var l=null,u=-1,d=[];if(function(e,t){for(var n={},r=0;r1)}(e,t)){var g=Array.from({length:e.length-1}).fill(0);return{overrideComponents:[t[e[0].slug]],gridColumnWidths:[12].concat(o()(g))}}return e.forEach((function(n,o){var c,g,f,p,b;if(a.push(null),l=t[n.slug],u=i[o],l)if(g=l,f=t[null===(c=e[o+1])||void 0===c?void 0:c.slug],p=u,b=i[o+1],p===b&&m()(g,f))d.push(r[o]),s[o]=0;else if(d.length>0){d.push(r[o]);var h=d.reduce((function(e,t){return e+t}),0);a[o]=l,s[o]=h,d=[]}})),{gridColumnWidths:s,overrideComponents:a}}var b=n(206);function h(e){return(Array.isArray(e)?e:[e]).filter((function(e){return"string"==typeof e&&e.length>0}))}},23:function(e,t,n){"use strict";n.d(t,"j",(function(){return r})),n.d(t,"h",(function(){return i})),n.d(t,"k",(function(){return a})),n.d(t,"i",(function(){return o})),n.d(t,"m",(function(){return c})),n.d(t,"p",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"o",(function(){return u})),n.d(t,"g",(function(){return d})),n.d(t,"n",(function(){return g})),n.d(t,"q",(function(){return f})),n.d(t,"l",(function(){return m})),n.d(t,"d",(function(){return p})),n.d(t,"a",(function(){return b})),n.d(t,"c",(function(){return h})),n.d(t,"b",(function(){return v})),n.d(t,"e",(function(){return O}));var r="mainDashboard",i="entityDashboard",a="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",s="userInput",l="activation",u="splash",d="adminBar",g="settings",f="wpDashboard",m="moduleSetup",p="traffic",b="content",h="speed",v="monetization",O=[r,i,a,o,s,u,g,m]},247:function(e,t,n){"use strict";(function(e){var r=n(1),i=n(106),a=n(248),o=n(60);t.a=function Logo(){return e.createElement("div",{className:"googlesitekit-logo","aria-hidden":"true"},e.createElement(i.a,{className:"googlesitekit-logo__logo-g",height:"34",width:"32"}),e.createElement(a.a,{className:"googlesitekit-logo__logo-sitekit",height:"26",width:"99"}),e.createElement(o.a,null,Object(r.__)("Site Kit by Google Logo","google-site-kit")))}}).call(this,n(3))},248:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:e,a=Object(c.useState)(Object(s.a)(r.location.href,t)||n),u=o()(a,2),d=u[0],g=u[1],f=function(e){g(e);var n=Object(l.a)(r.location.href,i()({},t,e));r.history.replaceState(null,"",n)};return[d,f]}}).call(this,n(22))},267:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WidgetReportZero}));var r=n(6),i=n.n(r),a=n(18),o=n.n(a),c=n(21),s=n.n(c),l=n(0),u=n.n(l),d=n(2),g=n(149),f=n(151);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function WidgetReportZero(t){var n=t.widgetSlug,r=t.moduleSlug,i=s()(t,["widgetSlug","moduleSlug"]),a=Object(d.useMemo)((function(){return{moduleSlug:r}}),[r]);return Object(g.a)(n,f.a,a),e.createElement(f.a,o()({moduleSlug:r},i))}WidgetReportZero.propTypes=function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw a}}}}function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nSign in to connect more services and control sharing access.","google-site-kit"),{strong:e.createElement("strong",null)}):Object(s.a)(Object(l.__)("You can see stats from all shared Google services, but you can't make any changes. Learn more","google-site-kit"),{a:e.createElement(h.a,{href:a,external:!0,onClick:y,"aria-label":Object(l.__)("Learn more about dashboard sharing","google-site-kit")})});return e.createElement("li",{className:"googlesitekit-view-only-menu__list-item googlesitekit-view-only-menu__description"},e.createElement("p",null,k),n&&e.createElement(g.Button,{onClick:d},Object(l.__)("Sign in with Google","google-site-kit")))}}).call(this,n(3))},287:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SharedServices}));var r=n(1),i=n(4),a=n.n(i),o=n(12),c=n(288),s=a.a.useSelect;function SharedServices(){var t=s((function(e){return e(o.a).getViewableModules()}));return void 0===t?null:e.createElement("li",{className:"googlesitekit-view-only-menu__list-item"},e.createElement("h4",null,Object(r.__)("Shared services","google-site-kit")),e.createElement("ul",null,t.map((function(t){return e.createElement(c.a,{key:t,module:t})}))))}}).call(this,n(3))},288:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Service}));var r=n(0),i=n.n(r),a=n(72),o=n(1),c=n(4),s=n.n(c),l=n(17),u=n(12),d=s.a.useSelect;function Service(t){var n=t.module,r=d((function(e){return e(u.a).hasCapability(u.c)})),i=d((function(e){return e(l.a).getModule(n)})),c=i.name,s=i.owner,g=d((function(e){return e(l.a).getModuleIcon(n)}));return e.createElement("li",{className:"googlesitekit-view-only-menu__service"},e.createElement("span",{className:"googlesitekit-view-only-menu__service--icon"},e.createElement(g,{height:26})),e.createElement("span",{className:"googlesitekit-view-only-menu__service--name"},c),r&&(null==s?void 0:s.login)&&e.createElement("span",{className:"googlesitekit-view-only-menu__service--owner"},Object(a.a)(Object(o.sprintf)( +/* translators: %s: module owner Google Account email address */ +Object(o.__)("Shared by %s","google-site-kit"),s.login),{strong:e.createElement("strong",{title:s.login})})))}Service.propTypes={module:i.a.string.isRequired}}).call(this,n(3))},289:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Tracking}));var r=n(72),i=n(1),a=n(205),o=n(19);function Tracking(){var t=Object(o.a)();return e.createElement("li",{className:"googlesitekit-view-only-menu__list-item"},e.createElement("p",null,Object(r.a)(Object(i.__)("Thanks for using Site Kit!
Help us make it even better.","google-site-kit"),{br:e.createElement("br",null)})),e.createElement(a.a,{trackEventCategory:"".concat(t,"_headerbar_viewonly")}))}}).call(this,n(3))},29:function(e,t,n){"use strict";n.d(t,"f",(function(){return r})),n.d(t,"e",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return o})),n.d(t,"d",(function(){return c})),n.d(t,"a",(function(){return s}));var r="modules/adsense",i=1,a="READY",o="NEEDS_ATTENTION",c="REQUIRES_REVIEW",s="GETTING_READY"},290:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t0){n.next=7;break}if(!(a=document.getElementById("wp-admin-bar-menu-toggle"))){n.next=7;break}return a.click(),n.next=7,new Promise((function(e){setTimeout(e,0)}));case 7:"#adminmenu [href*='page=googlesitekit-dashboard']",(o=!!document.querySelector("".concat("#adminmenu [href*='page=googlesitekit-dashboard']","[aria-haspopup=true]")))&&document.querySelector("#adminmenu [href*='page=googlesitekit-dashboard']").click(),t(e,{isTooltipVisible:!0,rehideAdminMenu:!r,rehideAdminSubMenu:o});case 11:case"end":return n.stop()}}),n)}))),[t,e])}},311:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdminMenuTooltip}));var r=n(6),i=n.n(r),a=n(18),o=n.n(a),c=n(5),s=n.n(c),l=n(16),u=n.n(l),d=n(21),g=n.n(d),f=n(2),m=n(0),p=n.n(m),b=n(4),h=n.n(b),v=n(292),O=n(33),_=n(223);function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function k(e){for(var t=1;t0&&(null===(t=document.getElementById("wp-admin-bar-menu-toggle"))||void 0===t||t.click()),d&&document.querySelector("body").click(),e.next=4,null==n?void 0:n();case 4:a(r,void 0);case 5:case"end":return e.stop()}}),e)}))),[n,l,d,a,r]);return e.createElement(v.a,o()({slug:"ga4-activation-banner-admin-menu-tooltip",onDismiss:m},i))}AdminMenuTooltip.propTypes=k(k({},v.a.propTypes),{},{target:p.a.string,tooltipStateKey:p.a.string.isRequired}),AdminMenuTooltip.defaultProps={target:'#adminmenu [href*="page=googlesitekit-settings"]'}}).call(this,n(3))},32:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return v}));var r=n(86),i=e._googlesitekitTrackingData||{},a=i.activeModules,o=void 0===a?[]:a,c=i.isSiteKitScreen,s=i.trackingEnabled,l=i.trackingID,u=i.referenceSiteURL,d=i.userIDHash,g=i.isAuthenticated,f={activeModules:o,trackingEnabled:s,trackingID:l,referenceSiteURL:u,userIDHash:d,isSiteKitScreen:c,userRoles:i.userRoles,isAuthenticated:g,pluginVersion:"1.89.0"},m=Object(r.a)(f),p=m.enableTracking,b=m.disableTracking,h=(m.isTrackingEnabled,m.initializeSnippet),v=m.trackEvent;function O(e){e?p():b()}c&&s&&h()}).call(this,n(22))},326:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(8),i=n(38);function a(e){var t=Object(i.a)(e);return t1&&void 0!==arguments[1]?arguments[1]:a;return t instanceof Set&&t.has(e)}}).call(this,n(22))},43:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(37),i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var n=e.split("-");return 3===n.length&&Object(r.a)(new Date(e))}},434:function(e,t,n){"use strict";n.d(t,"a",(function(){return ScrollEffect}));var r=n(491);function ScrollEffect(){return Object(r.a)(),null}},450:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ActivationBanner}));var r=n(24),i=n.n(r),a=n(5),o=n.n(a),c=n(16),s=n.n(c),l=n(14),u=n.n(l),d=n(933),g=n(2),f=n(4),m=n.n(f),p=n(482),b=n(485),h=n(487),v=n(139),O=n(131),_=n(17),y=n(12),k=n(9),E=n(27),j=n(35),S=n(46),w=m.a.useSelect,N=m.a.useDispatch,C=m.a.useRegistry;function ActivationBanner(){var t=Object(g.useState)(null),n=u()(t,2),r=n[0],a=n[1],c=Object(g.useState)(),l=u()(c,2),f=l[0],m=l[1],T=Object(d.a)(),D=C(),A=w((function(e){return e(_.a).isModuleConnected("analytics")})),M=w((function(e){return e(_.a).isModuleConnected("analytics-4")})),R=w((function(e){return e(y.a).hasScope(k.c)})),x=w((function(e){return e(j.a).getValue(O.e,"returnToSetupStep")})),L=w((function(e){return e(k.f).getAccountID()})),P=w((function(e){return[e(E.b).getErrorForSelector("getProperties",[L]),e(k.f).getErrorForSelector("getAccounts"),e(E.b).getErrorForSelector("getSettings")].filter((function(e){return void 0!==e}))})),I=N(),z=I(j.a).setValues;Object(g.useEffect)((function(){R&&x&&(a(O.c),z(O.e,{returnToSetupStep:!1}))}),[R,D,x,z]),Object(g.useEffect)((function(){P.length>0&&a(O.b)}),[P.length]);var B=Object(g.useCallback)(s()(o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r!==O.b){e.next=5;break}if(!(P.length>0)){e.next=4;break}return e.next=4,Promise.all([I(E.b).clearError("getProperties",[L]),I(E.b).invalidateResolution("getProperties",[L]),I(k.f).clearError("getAccounts",[]),I(k.f).invalidateResolution("getAccounts",[]),I(E.b).clearError("getSettings",[]),I(E.b).invalidateResolution("getSettings",[])]);case 4:a(O.c);case 5:return x||r!==O.c||a(O.d),e.abrupt("return",{dismissOnCTAClick:!1});case 7:case"end":return e.stop()}}),e)}))),[r,x,P.length,I,L]);Object(g.useEffect)((function(){s()(o.a.mark((function e(){var t,n;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T(Object(S.b)("notification::dismissed::ga4-activation-banner"));case 2:t=e.sent,n=t.cacheHit,m(n);case 5:case"end":return e.stop()}}),e)})))()})),Object(g.useEffect)((function(){void 0!==f&&null===r&&A&&!M&&a(O.b)}),[M,r,A,f]);var F=P.length>0&&P.reduce((function(e,t){return e.some((function(e){return e.code===t.code&&e.message===t.message}))?e:[].concat(i()(e),[t])}),[]).map((function(t){return e.createElement(v.a,{key:t.code,error:t})}));switch(r){case O.b:return e.createElement(p.a,{isDismissed:f,onSubmitSuccess:B},F);case O.c:return e.createElement(b.a,{onSubmitSuccess:B});case O.d:return e.createElement(h.a,null);default:return null}}}).call(this,n(3))},456:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return IdeaHubPromptSVG}));var r=n(2),i=n(1),a=n(99),o=n(374),c=Object(r.lazy)((function(){return n.e(36).then(n.bind(null,934))}));function IdeaHubPromptSVG(t){return e.createElement(r.Suspense,{fallback:e.createElement(a.a,{width:"100%",height:"39.77%"})},e.createElement(o.a,{errorMessage:Object(i.__)("Failed to load graphic.","google-site-kit")},e.createElement(c,t)))}}).call(this,n(3))},46:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return h})),n.d(t,"d",(function(){return v})),n.d(t,"a",(function(){return O})),n.d(t,"c",(function(){return _}));var r=n(5),i=n.n(r),a=n(16),o=n.n(a),c=(n(24),n(8));function s(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw a}}}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==b[2]?b[2]:{},o=a.ttl,s=void 0===o?c.b:o,l=a.timestamp,u=void 0===l?Math.round(Date.now()/1e3):l,g=a.isError,f=void 0!==g&&g,t.next=3,p();case 3:if(!(m=t.sent)){t.next=14;break}return t.prev=5,m.setItem("".concat(d).concat(n),JSON.stringify({timestamp:u,ttl:s,value:r,isError:f})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(e,n){return t.apply(this,arguments)}}(),O=function(){var t=o()(i.a.mark((function t(n){var r;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p();case 2:if(!(r=t.sent)){t.next=13;break}return t.prev=4,r.removeItem("".concat(d).concat(n)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(e){return t.apply(this,arguments)}}(),_=function(){var t=o()(i.a.mark((function t(){var n,r,a,o;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p();case 2:if(!(n=t.sent)){t.next=14;break}for(t.prev=4,r=[],a=0;aLearn more","google-site-kit"),{a:e.createElement(j.a,{"aria-label":Object(o.__)("Learn more about dashboard sharing","google-site-kit"),href:R,external:!0})}),D&&Object(o.__)("Warning: Resetting these permissions will remove view-only access for all users. Are you sure you want to reset all Dashboard Sharing permissions?","google-site-kit")))),T&&e.createElement("div",{className:"googlesitekit-dialog__main"},e.createElement(S.a,null))),e.createElement(k.e,{className:"googlesitekit-dialog__footer"},e.createElement(w.a,{closeDialog:U,openResetDialog:B}))))}}).call(this,n(3))},467:function(e,t,n){"use strict";(function(e,r){n.d(t,"a",(function(){return DashboardSharingSettings}));var i=n(11),a=n.n(i),o=n(1),c=n(4),s=n.n(c),l=n(468),u=n(17),d=n(15),g=n(12);function f(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw a}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nManaged by %s","google-site-kit"),a),{span:e.createElement("span",null),strong:e.createElement("strong",null)}),e.createElement(b.Tooltip,{title:L?Object(l.sprintf)( +/* translators: %s: name of the user who manages the module. */ +Object(l.__)("%s has connected this and given managing permissions to all admins. You can change who can view this on the dashboard.","google-site-kit"),a):Object(l.sprintf)( +/* translators: %s: name of the user who manages the module. */ +Object(l.__)("Contact %s to change who can manage view access for this module.","google-site-kit"),a)},e.createElement("span",{className:"googlesitekit-dashboard-sharing-settings__tooltip-icon"},e.createElement(u.a,{icon:d.a,size:18}))))))}Module.propTypes={moduleSlug:o.a.string.isRequired,moduleName:o.a.string.isRequired,ownerUsername:o.a.string}}).call(this,n(3))},469:function(e,t,n){"use strict";(function(e){var r=n(24),i=n.n(r),a=n(0),o=n.n(a),c=n(11),s=n.n(c),l=n(1),u=n(74),d=n(2),g=n(4),f=n.n(g),m=n(13),p=n(20),b=n(298),h=n(388),v=n(19),O=n(130),_=n(8),y=n(17),k=n(33),E=n(111),j=f.a.useSelect,S=f.a.useDispatch,w=Object(l.__)("All","google-site-kit"),N=Object(d.forwardRef)((function(t,n){var r=t.moduleSlug,a=t.isLocked,o=void 0!==a&&a,c=Object(v.a)(),g=Object(d.useRef)(),f=S(y.a).setSharedRoles,N=S(k.b).setValue,C=j((function(e){return e(y.a).getShareableRoles()})),T=j((function(e){return e(y.a).getSharedRoles(r)})),D=j((function(e){return e(k.b).getValue(E.a)}))===r;Object(O.a)([u.c],n,(function(){D&&N(E.a,void 0)}));var A=j((function(e){return e(y.a).haveModuleSharingSettingsChanged(r,"sharedRoles")})),M=Object(d.useCallback)((function(){D?(N(E.a,void 0),A&&Object(_.z)("".concat(c,"_sharing"),"change_shared_roles",r)):N(E.a,r)}),[D,A,r,N,c]);Object(d.useEffect)((function(){g.current&&(D?g.current.firstChild.focus():g.current.focus())}),[D]);var R=Object(d.useCallback)((function(e){var t,n=e.type,a=e.target,o=e.keyCode;if("keydown"!==n||o===u.b){var c,s=a.closest(".mdc-chip"),l=null==s||null===(t=s.dataset)||void 0===t?void 0:t.chipId;if(l)c="all"===l?(null==T?void 0:T.length)===(null==C?void 0:C.length)?[]:C.map((function(e){return e.id})):null===T?[l]:T.includes(l)?T.filter((function(e){return e!==l})):[].concat(i()(T),[l]),f(r,c)}}),[r,f,T,C]);return C?e.createElement("div",{className:s()("googlesitekit-user-role-select",{"googlesitekit-user-role-select--open":D})},!D&&e.createElement(m.Button,{"aria-label":Object(l.__)("Edit roles","google-site-kit"),className:"googlesitekit-user-role-select__button",onClick:M,icon:e.createElement(b.a,{width:23,height:23}),tabIndex:o?-1:void 0,ref:g}),!D&&(null==T?void 0:T.length)>0&&e.createElement("span",{className:"googlesitekit-user-role-select__current-roles"},(null==C?void 0:C.reduce((function(e,t){return T.includes(t.id)&&e.push(t.displayName),e}),[])).join(", ")),!D&&(!T||0===(null==T?void 0:T.length))&&e.createElement("span",{className:"googlesitekit-user-role-select__add-roles"},e.createElement(p.a,{onClick:M,tabIndex:o?-1:void 0},Object(l.__)("Add roles","google-site-kit"))),D&&e.createElement(d.Fragment,null,e.createElement("div",{className:"googlesitekit-user-role-select__chipset",ref:g},e.createElement(m.Chip,{id:"all",label:w,onClick:R,onKeyDown:R,selected:(null==T?void 0:T.length)===(null==C?void 0:C.length),className:"googlesitekit-user-role-select__chip--all"}),C.map((function(t,n){var r=t.id,i=t.displayName;return e.createElement(m.Chip,{key:n,id:r,label:i,onClick:R,onKeyDown:R,selected:null==T?void 0:T.includes(r)})}))),e.createElement(m.Button,{"aria-label":Object(l.__)("Done editing roles","google-site-kit"),title:Object(l.__)("Done","google-site-kit"),className:"googlesitekit-user-role-select__button",onClick:M,icon:e.createElement(h.a,{width:18,height:18}),tabIndex:o?-1:void 0}))):null}));N.propTypes={moduleSlug:o.a.string.isRequired,isLocked:o.a.bool},t.a=N}).call(this,n(3))},47:function(e,t,n){"use strict";n.d(t,"h",(function(){return r})),n.d(t,"m",(function(){return i})),n.d(t,"k",(function(){return a})),n.d(t,"j",(function(){return o})),n.d(t,"i",(function(){return c})),n.d(t,"l",(function(){return s})),n.d(t,"c",(function(){return l})),n.d(t,"b",(function(){return u})),n.d(t,"e",(function(){return d})),n.d(t,"d",(function(){return g})),n.d(t,"g",(function(){return f})),n.d(t,"f",(function(){return m})),n.d(t,"o",(function(){return p})),n.d(t,"n",(function(){return b})),n.d(t,"a",(function(){return h}));var r="modules/thank-with-google",i="https://publishercenter.google.com/twg",a="NO_ACCOUNT",o="ONBOARDING_COMPLETE",c="ONBOARDING_ACTION_REQUIRED",s="PENDING_VERIFICATION",l="dynamic_low",u="dynamic_high",d="static_auto",g="static_above-content",f="static_below-content",m="static_below-first-paragraph",p="overlay",b="fixed",h="blue"},470:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Footer}));var r=n(5),i=n.n(r),a=n(16),o=n.n(a),c=n(14),s=n.n(c),l=n(0),u=n.n(l),d=n(1),g=n(2),f=n(4),m=n.n(f),p=n(13),b=n(17),h=n(33),v=n(111),O=n(19),_=n(8),y=n(20),k=n(471),E=n(132),j=n(82),S=m.a.useSelect,w=m.a.useDispatch;function Footer(t){var n=t.closeDialog,r=t.openResetDialog,a=Object(O.a)(),c=Object(g.useState)(null),l=s()(c,2),u=l[0],f=l[1],m=Object(g.useState)(!1),N=s()(m,2),C=N[0],T=N[1],D=S((function(e){return e(b.a).canSubmitSharingChanges()})),A=S((function(e){return e(b.a).isDoingSubmitSharingChanges()})),M=S((function(e){return e(b.a).haveSharingSettingsExpanded("management")})),R=S((function(e){return e(b.a).haveSharingSettingsExpanded("sharedRoles")})),x=S((function(e){return e(b.a).haveSharingSettingsUpdated()})),L=S((function(e){return!!e(h.b).getValue(v.d)})),P=S((function(e){return!!e(h.b).getValue(v.c)})),I=w(b.a),z=I.resetSharingSettings,B=I.saveSharingSettings,F=w(h.b).setValue,U=Object(g.useCallback)(o()(i.a.mark((function e(){var t,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(null),e.next=3,B();case 3:if(t=e.sent,!(r=t.error)){e.next=8;break}return f(r.message),e.abrupt("return");case 8:Object(_.z)("".concat(a,"_sharing"),"settings_confirm"),F(v.a,void 0),n();case 11:case"end":return e.stop()}}),e)}))),[a,B,F,n]),W=Object(g.useCallback)(o()(i.a.mark((function e(){var t,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(null),T(!0),e.next=4,z();case 4:if(t=e.sent,!(r=t.error)){e.next=9;break}return f(r.message),e.abrupt("return");case 9:T(!1),n();case 11:case"end":return e.stop()}}),e)}))),[n,z]),H=Object(g.useCallback)((function(){Object(_.z)("".concat(a,"_sharing"),"settings_cancel"),n()}),[n,a]),q=u||M||R;return e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer"},q&&e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-notice"},u&&e.createElement(j.a,{message:u}),!u&&e.createElement(k.a,null)),e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-actions"},x&&L&&!q&&e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-actions-left"},e.createElement(y.a,{onClick:r,danger:!0},Object(d.__)("Reset sharing permissions","google-site-kit"))),e.createElement("div",{className:"googlesitekit-dashboard-sharing-settings__footer-actions-right"},e.createElement(y.a,{onClick:H},Object(d.__)("Cancel","google-site-kit")),L&&e.createElement(p.Button,{onClick:U,disabled:A||!D},Object(d.__)("Apply","google-site-kit"),A&&e.createElement(E.a,{isSaving:A})),P&&e.createElement(p.Button,{onClick:W,disabled:C,danger:!0},Object(d.__)("Reset","google-site-kit"),C&&e.createElement(E.a,{isSaving:C})))))}Footer.propTypes={closeDialog:u.a.func.isRequired}}).call(this,n(3))},471:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Notice}));var r=n(1),i=n(72),a=n(4),o=n.n(a),c=n(17),s=o.a.useSelect;function Notice(){var t=s((function(e){return e(c.a).canSubmitSharingChanges()})),n=s((function(e){return e(c.a).haveSharingSettingsExpanded("management")})),a=s((function(e){return e(c.a).haveSharingSettingsExpanded("sharedRoles")}));return e.createElement("p",{className:"googlesitekit-dashboard-sharing-settings__notice"},n&&t&&Object(i.a)(Object(r.__)("By clicking Apply, you will give other authenticated admins of your site permission to manage view-only access to Site Kit Dashboard data from the chosen Google service.","google-site-kit"),{span:e.createElement("span",null),strong:e.createElement("strong",null)}),!n&&t&&a&&Object(i.a)(Object(r.__)("By clicking Apply, you’re granting the selected roles view-only access to data from the Google services you’ve connected via your account.","google-site-kit"),{span:e.createElement("span",null),strong:e.createElement("strong",null)}))}}).call(this,n(3))},472:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WidgetAreaRenderer}));var r=n(14),i=n.n(r),a=n(6),o=n.n(a),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(398),g=n(2),f=n(4),m=n.n(f),p=n(229),b=n(129),h=n(50),v=n(33),O=n(10),_=n(49),y=n(155),k=n(473),E=n(474),j=n(56),S=n(12),w=m.a.useSelect;function N(e){var t,n=(t={},o()(t,_.d,48),o()(t,_.a,48),o()(t,_.c,32),o()(t,_.b,32),t)[e],r=Math.abs(Object(b.b)(e)+n);return"-".concat(r,"px -").concat(n,"px -").concat(n,"px -").concat(n,"px")}function WidgetAreaRenderer(t){var n=t.slug,r=t.contextID,a=Object(j.a)(),c=w((function(e){return a?e(S.a).getViewableModules():null})),s=Object(_.e)(),l=Object(g.useRef)(),f=Object(d.a)(l,{rootMargin:N(s),threshold:0}),m=w((function(e){return e(h.a).getWidgetArea(n)})),b=w((function(e){return e(h.a).getWidgets(n,{modules:c||void 0})})),C=w((function(e){return e(h.a).getWidgetStates()})),T=w((function(e){return e(h.a).isWidgetAreaActive(n,{modules:c||void 0})})),D=w((function(e){return e(v.b).getValue(v.a)})),A=Object(g.useState)({key:"WidgetAreaRenderer-".concat(n),value:D?D===r:!!(null==f?void 0:f.intersectionRatio)}),M=i()(A,2),R=M[0],x=M[1];if(Object(g.useEffect)((function(){x({key:"WidgetAreaRenderer-".concat(n),value:D?D===r:!!(null==f?void 0:f.intersectionRatio)})}),[f,n,D,r]),void 0===c)return null;var L,P=Object(p.d)(b,C),I=P.columnWidths,z=P.rowIndexes,B=Object(p.b)(b,C,{columnWidths:I,rowIndexes:z}),F=B.gridColumnWidths,U=B.overrideComponents,W=b.map((function(t,n){return e.createElement(E.a,{key:"".concat(t.slug,"-wrapper"),gridColumnWidth:F[n]},e.createElement(k.a,{OverrideComponent:U[n]?function(){var t=U[n],r=t.Component,i=t.metadata;return e.createElement(r,i)}:void 0,slug:t.slug}))})),H=m.Icon,q=m.title,V=m.style,G=m.subtitle;return T?e.createElement(y.a,{value:R},e.createElement(O.f,{className:u()("googlesitekit-widget-area","googlesitekit-widget-area--".concat(n),"googlesitekit-widget-area--".concat(V)),ref:l},e.createElement(O.p,null,e.createElement(O.a,{className:"googlesitekit-widget-area-header",size:12},H&&e.createElement(H,{width:33,height:33}),q&&e.createElement("h3",{className:"googlesitekit-widget-area-header__title googlesitekit-heading-3"},q),G&&e.createElement("h4",{className:"googlesitekit-widget-area-header__subtitle"},G))),e.createElement("div",{className:"googlesitekit-widget-area-widgets"},e.createElement(O.p,null,V===h.b.BOXES&&W,V===h.b.COMPOSITE&&e.createElement(O.a,{size:12},e.createElement(O.f,null,e.createElement(O.p,null,W))))))):e.createElement(O.f,{className:u()(p.a,"googlesitekit-widget-area",(L={},o()(L,"googlesitekit-widget-area--".concat(n),!!n),o()(L,"googlesitekit-widget-area--".concat(V),!!V),L)),ref:l},W)}WidgetAreaRenderer.propTypes={slug:s.a.string.isRequired,contextID:s.a.string}}).call(this,n(3))},473:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(427),o=n.n(a),c=n(2),s=n(4),l=n.n(s),u=n(50),d=n(17),g=n(220),f=n(221),m=n(229),p=n(133),b=n(56),h=n(117),v=l.a.useSelect,O=function WidgetRenderer(t){var n=t.slug,r=t.OverrideComponent,i=Object(h.a)("dashboardSharing"),a=v((function(e){return e(u.a).getWidget(n)})),s=Object(m.c)(n),l=s.Widget,O=s.WidgetNull,_=v((function(e){return i&&e(d.a).getRecoverableModules()})),y=Object(b.a)(),k=Object(c.useMemo)((function(){return a&&_&&o()(a.modules,Object.keys(_))}),[_,a]);if(!a)return e.createElement(O,null);var E=a.Component,j=a.wrapWidget,S=e.createElement(E,s);return y&&(null==k?void 0:k.length)&&(S=e.createElement(f.a,{widgetSlug:n,moduleSlugs:k})),r?S=e.createElement(c.Fragment,null,e.createElement(g.a,{widgetSlug:"overridden"},e.createElement(r,null)),e.createElement("div",{className:p.a},S)):j&&(S=e.createElement(l,null,S)),S};O.propTypes={slug:i.a.string.isRequired,OverrideComponent:i.a.elementType},t.a=O}).call(this,n(3))},474:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(133),o=n(10),c=function WidgetCellWrapper(t){var n=t.gridColumnWidth,r=t.children;return 0===n?e.createElement("div",{className:a.a},r):n<6?e.createElement(o.a,{lgSize:n,mdSize:4,smSize:2},r):n<8?e.createElement(o.a,{lgSize:n,mdSize:8},r):e.createElement(o.a,{size:n},r)};c.propTypes={gridColumnWidth:i.a.number.isRequired,children:i.a.element.isRequired},t.a=c}).call(this,n(3))},475:function(e,t,n){"use strict";(function(e){var r=n(14),i=n.n(r),a=n(97),o=n(410),c=n(203),s=n(2),l=n(1),u=n(4),d=n.n(u),g=n(13),f=n(60),m=n(476),p=n(477),b=n(478),h=n(15),v=n(40),O=n(8),_=n(93),y=n(19),k=d.a.useSelect,E=d.a.useDispatch;t.a=function EntitySearchInput(){var t=Object(c.a)(EntitySearchInput,"EntitySearchInput"),n=Object(s.useState)(!1),r=i()(n,2),u=r[0],d=r[1],j=Object(s.useState)(!1),S=i()(j,2),w=S[0],N=S[1],C=Object(s.useState)(!1),T=i()(C,2),D=T[0],A=T[1],M=Object(y.a)(),R=Object(_.c)(),x=Object(s.useRef)(),L=Object(s.useCallback)((function(){Object(O.z)("".concat(M,"_headerbar"),"open_urlsearch"),d(!0)}),[M]),P=Object(s.useCallback)((function(){Object(O.z)("".concat(M,"_headerbar"),"close_urlsearch"),d(!1)}),[M]),I=Object(s.useState)({}),z=i()(I,2),B=z[0],F=z[1],U=k((function(e){return(null==B?void 0:B.url)?e(h.c).getAdminURL("googlesitekit-dashboard",{permaLink:B.url}):null})),W=E(v.a).navigateTo;return Object(s.useEffect)((function(){U&&Object(O.z)("".concat(M,"_headerbar_urlsearch"),"open_urldetails").finally((function(){W(U)}))}),[U,W,M]),Object(a.a)((function(){R===_.a&&d(!0)})),Object(o.a)((function(){var e;u||(null==x||null===(e=x.current)||void 0===e||e.focus())}),[u]),u?e.createElement("div",{className:"googlesitekit-entity-search googlesitekit-entity-search--is-open"},e.createElement(f.a,null,e.createElement("label",{htmlFor:t},Object(l.__)("Page/URL Search","google-site-kit"))),e.createElement(b.a,{id:t,match:B,setIsActive:A,setMatch:F,placeholder:Object(l.__)("Enter title or URL…","google-site-kit"),isLoading:w,setIsLoading:N,showDropdown:D,onClose:P,autoFocus:!0}),w&&D&&e.createElement(g.ProgressBar,{className:"googlesitekit-entity-search__loading",compress:!0}),e.createElement("div",{className:"googlesitekit-entity-search__actions"},e.createElement(g.Button,{onClick:P,trailingIcon:e.createElement(p.a,{width:"30",height:"20"}),className:"googlesitekit-entity-search__close",title:Object(l.__)("Close","google-site-kit"),text:!0,tooltip:!0}))):e.createElement("div",{className:"googlesitekit-entity-search"},e.createElement(g.Button,{className:"googlesitekit-border-radius-round--phone googlesitekit-button-icon--phone",onClick:L,text:!0,ref:x,title:Object(l.__)("Search","google-site-kit"),trailingIcon:e.createElement(m.a,{width:"20",height:"20"}),tooltip:!0},Object(l.__)("URL Search","google-site-kit")))}}).call(this,n(3))},476:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t0&&e.createElement(d.e,{portal:!1},e.createElement(d.c,{className:"autocomplete__menu autocomplete__menu--inline"},F.map((function(t){var n=t.id,r=t.title;return e.createElement(d.d,{key:n,value:r,className:"autocomplete__option autocomplete__option--result"})})))))}PostSearcherAutoSuggest.propTypes={id:u.a.string,match:u.a.object,setCanSubmit:u.a.func,setMatch:u.a.func,isLoading:u.a.bool,setIsLoading:u.a.func,onKeyDown:u.a.func,autoFocus:u.a.bool,placeholder:u.a.string}}).call(this,n(3))},479:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(14),i=n.n(r),a=n(2);function o(e,t){var n=Object(a.useState)(e),r=i()(n,2),o=r[0],c=r[1];return Object(a.useEffect)((function(){var n=setTimeout((function(){c(e)}),t);return function(){clearTimeout(n)}}),[e,t]),o}},480:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return DateRangeSelector}));var r=n(14),i=n.n(r),a=n(251),o=n(11),c=n.n(o),s=n(2),l=n(74),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(481),p=n(12),b=n(130),h=n(68),v=n(8),O=n(33),_=n(19),y=g.a.useSelect,k=g.a.useDispatch;function DateRangeSelector(){var t,n=Object(h.f)(),r=y((function(e){return e(p.a).getDateRange()})),o=k(p.a).setDateRange,d=k(O.b).resetInViewHook,g=Object(s.useState)(!1),E=i()(g,2),j=E[0],S=E[1],w=Object(s.useRef)(),N=Object(_.a)();Object(a.a)(w,(function(){return S(!1)})),Object(b.a)([l.c,l.e],w,(function(){return S(!1)}));var C=Object(s.useCallback)((function(){S(!j)}),[j]),T=Object(s.useCallback)((function(e){var t=Object.values(n)[e].slug;r!==t&&Object(v.z)("".concat(N,"_headerbar"),"change_daterange",t),d(),o(t),S(!1)}),[n,r,d,o,N]),D=null===(t=n[r])||void 0===t?void 0:t.label,A=Object.values(n).map((function(e){return e.label}));return e.createElement("div",{ref:w,className:"googlesitekit-date-range-selector googlesitekit-dropdown-menu mdc-menu-surface--anchor"},e.createElement(f.Button,{className:c()("mdc-button--dropdown","googlesitekit-header__dropdown","googlesitekit-header__date-range-selector-menu","googlesitekit-border-radius-round--phone","googlesitekit-button-icon--phone"),text:!0,onClick:C,icon:e.createElement(m.a,{width:"20",height:"20"}),"aria-haspopup":"menu","aria-expanded":j,"aria-controls":"date-range-selector-menu",title:Object(u.__)("Date range","google-site-kit"),tooltip:!0},D),e.createElement(f.Menu,{menuOpen:j,menuItems:A,onSelected:T,id:"date-range-selector-menu",className:"googlesitekit-width-auto"}))}}).call(this,n(3))},481:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t".concat(f.owner.login,""):Object(a.__)("Another admin","google-site-kit");return i=e.createElement("p",null,Object(o.a)(Object(a.sprintf)( +/* translators: 1. Original reminder description text, 2: module owner's name */ +Object(a.__)("%1$s.
%2$s configured Analytics and you don’t have access to its configured property. Contact them to share access or set up Google Analytics 4.","google-site-kit"),i,m),{strong:e.createElement("strong",null),br:e.createElement("br",null)})),e.createElement(l.b,{id:"ga4-activation-banner",className:"googlesitekit-ga4-reminder-banner",title:r,description:i,descriptionIcon:c,dismiss:Object(a.__)("Remind me later","google-site-kit"),dismissExpires:s,onDismiss:g})}ReminderBannerNoAccess.propTypes={title:i.a.string.isRequired,description:i.a.node,descriptionIcon:i.a.node,dismissExpires:i.a.number,onDismiss:i.a.func}}).call(this,n(3))},485:function(e,t,n){"use strict";(function(e,r){n.d(t,"a",(function(){return SetupBanner}));var i=n(5),a=n.n(i),o=n(16),c=n.n(o),s=n(14),l=n.n(s),u=n(2),d=n(250),g=n(1),f=n(4),m=n.n(f),p=n(13),b=n(55),h=n(341),v=n(139),O=n(486),_=n(27),y=n(339),k=n(9),E=n(12),j=n(131),S=n(223),w=n(310),N=n(311),C=n(326),T=n(10),D=n(35),A=n(58),M=n(19),R=n(8),x=m.a.useDispatch,L=m.a.useSelect,P="EXISTING_PROPERTY",I="NO_EXISTING_PROPERTY";function SetupBanner(t){var n=t.onSubmitSuccess,i=Object(u.useState)(null),o=l()(i,2),s=o[0],f=o[1],m=Object(u.useState)(null),z=l()(m,2),B=z[0],F=z[1],U=Object(u.useState)(!1),W=l()(U,2),H=W[0],q=W[1],V=Object(u.useState)(!1),G=l()(V,2),K=G[0],Y=G[1],X=Object(M.a)(),$="".concat(X,"_ga4-setup-notification"),Q=x(_.b),Z=Q.submitChanges,J=Q.selectProperty,ee=Q.matchAndSelectProperty,te=L((function(e){return e(k.f).getAccountID()})),ne=L((function(e){return e(_.b).getProperties(te)})),re=L((function(e){return e(k.f).getAccounts()})),ie=L((function(e){return e(_.b).getPropertyID})),ae=L((function(e){return e(_.b).getPropertyID()})),oe=L((function(e){return e(_.b).getMeasurementID})),ce=L((function(e){return e(_.b).getMeasurementID()})),se=Object(u.useCallback)(c()(a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===B){e.next=2;break}return e.abrupt("return");case 2:if(void 0!==ne){e.next=4;break}return e.abrupt("return");case 4:if(0!==ne.length){e.next=8;break}return F(I),J(_.c),e.abrupt("return");case 8:if(void 0!==re){e.next=10;break}return e.abrupt("return");case 10:if(ie()){e.next=13;break}return e.next=13,ee(te,_.c);case 13:F(P);case 14:case"end":return e.stop()}}),e)}))),[te,re,ie,ee,ne,J,B]);Object(u.useEffect)((function(){se()}),[se]);var le=L((function(e){return e(E.a).hasScope(k.c)})),ue=L((function(e){return e(_.b).getExistingTag()})),de=L((function(e){return e(D.a).getValue(k.e,"autoSubmit")}));Object(y.a)();var ge=L((function(e){return e(E.a).getReferenceDate()})),fe=x(E.a).setPermissionScopeError,me=x(D.a).setValues,pe=Object(u.useCallback)(c()(a.a.mark((function t(){var r,i,o,c;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=[],!1!==le||ie()!==_.c&&oe()||r.push(k.c),!(r.length>0)){t.next=8;break}return me(k.e,{autoSubmit:!0}),me(j.e,{returnToSetupStep:!0}),i=Object(d.a)(e.location.href,{notification:"ga4_setup"}),fe({code:A.a,message:Object(g.__)("Additional permissions are required to create a new GA4 property.","google-site-kit"),data:{status:403,scopes:r,skipModal:!0,redirectURL:i}}),t.abrupt("return");case 8:return q(!0),de||(B===I||ie()===_.c?Object(R.z)($,"create_property"):Object(R.z)($,"connect_property")),t.next=12,Z();case 12:o=t.sent,c=o.error,q(!1),c?f(c):(me(k.e,{autoSubmit:!1}),n());case 16:case"end":return t.stop()}}),t)}))),[de,$,B,le,n,fe,me,Z,ie,oe]);Object(u.useEffect)((function(){de&&le&&pe()}),[de,pe,le]),Object(u.useEffect)((function(){K||de||!B||(Object(R.z)($,"view_notification"),Y(!0))}),[$,de,B,K]);var be,he,ve,Oe=Object(S.a)(j.a).isTooltipVisible,_e=Object(w.a)(j.a);if(null===B)return r.createElement("div",{className:"googlesitekit-publisher-win"},r.createElement(T.f,null,r.createElement(T.p,null,r.createElement(T.a,{size:12},r.createElement(p.ProgressBar,null)))));if(Oe)return r.createElement(u.Fragment,null,r.createElement(N.a,{title:Object(g.__)("You can connect Google Analytics 4 later here","google-site-kit"),content:Object(g.__)("You can configure the Google Analytics 4 property inside the Site Kit Settings later.","google-site-kit"),dismissLabel:Object(g.__)("Remind me later","google-site-kit"),tooltipStateKey:j.a}));var ye=[];return B===P?(be=Object(g.__)("Connect the Google Analytics 4 property that’s associated with your existing Universal Analytics property","google-site-kit"),he=Object(g.__)("Connect","google-site-kit"),ve=r.createElement("div",{className:"googlesitekit-ga4-setup-banner__field-group"},r.createElement(h.a,{label:Object(g.__)("Google Analytics 4 Property","google-site-kit")}),ue&&r.createElement(h.b,{description:r.createElement(u.Fragment,null,r.createElement("p",null,Object(g.sprintf)( +/* translators: %s: existing tag ID */ +Object(g.__)("A tag %s for the selected property already exists on the site.","google-site-kit"),ue)),r.createElement("p",null,Object(g.__)("Make sure you remove it if you decide to place the same GA4 tag via Site Kit, otherwise they will be duplicated.","google-site-kit")))})),!1!==le||ae!==_.c&&ce||ye.push(Object(g.__)("You will need to give Site Kit permission to create an Analytics property on your behalf","google-site-kit")),ye.push(Object(g.__)("You can always add/edit this in the Site Kit Settings","google-site-kit"))):(be=Object(g.__)("No existing Google Analytics 4 property found, Site Kit will help you create a new one and insert it on your site","google-site-kit"),he=Object(g.__)("Create property","google-site-kit"),ue&&ye.push(Object(g.sprintf)( +/* translators: %s: The existing tag ID. */ +Object(g.__)("A GA4 tag %s is found on this site but this property is not associated with your Google Analytics account","google-site-kit"),ue)),!1===le&&ye.push(Object(g.__)("You will need to give Site Kit permission to create an Analytics property on your behalf","google-site-kit")),ye.push(Object(g.__)("You can always add/edit this in the Site Kit Settings","google-site-kit"))),r.createElement(b.b,{id:"ga4-activation-banner",className:"googlesitekit-ga4-setup-banner",title:be,ctaComponent:r.createElement(O.a,{onClick:pe,isSaving:H},he),footer:!!ye.length&&r.createElement("ul",{className:"googlesitekit-ga4-setup-banner__footer-text-list"},ye.map((function(e){return r.createElement("li",{key:e},e)}))),dismiss:Object(g.__)("Cancel","google-site-kit"),dismissExpires:Object(C.a)(ge),onDismiss:_e},s&&r.createElement(v.a,{error:s}),ve)}}).call(this,n(22),n(3))},486:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SpinnerButton}));var r=n(18),i=n.n(r),a=n(21),o=n.n(a),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(13),g=n(10);function SpinnerButton(t){var n=t.className,r=t.onClick,a=void 0===r?function(){}:r,c=t.isSaving,s=void 0!==c&&c,l=o()(t,["className","onClick","isSaving"]);return e.createElement(d.Button,i()({className:u()(n,"googlesitekit-button-icon--spinner",{"googlesitekit-button-icon--spinner__running":s}),trailingIcon:s?e.createElement(g.b,{size:14}):void 0,onClick:a},l))}SpinnerButton.propTypes={className:s.a.string,onClick:s.a.func,isSaving:s.a.bool}}).call(this,n(3))},487:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SuccessBanner}));var r=n(97),i=n(1),a=n(4),o=n.n(a),c=n(15),s=n(55),l=n(403),u=n(19),d=n(32),g=o.a.useSelect;function SuccessBanner(){var t=g((function(e){return e(c.c).getDocumentationLinkURL("ga4")})),n=Object(u.a)(),a="".concat(n,"_ga4-success-notification");return Object(r.a)((function(){Object(d.b)(a,"view_notification")})),e.createElement(s.b,{id:"ga4-activation-banner",title:Object(i.__)("You successfully set up your Google Analytics 4 property","google-site-kit"),description:Object(i.__)("GA4 is collecting data for your site. You’ll only see Universal Analytics data on your dashboard for now.","google-site-kit"),dismiss:Object(i.__)("OK, Got it!","google-site-kit"),WinImageSVG:l.a,format:"smaller",type:"win-success",learnMoreLabel:Object(i.__)("Learn more about GA4","google-site-kit"),learnMoreURL:t})}}).call(this,n(3))},488:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ZeroDataStateNotifications}));var r=n(1),i=n(4),a=n.n(i),o=n(12),c=n(17),s=n(56),l=n(9),u=n(67),d=n(489),g=n(490),f=a.a.useSelect,m=a.a.useInViewSelect;function ZeroDataStateNotifications(){var t,n=Object(s.a)(),i=f((function(e){return e(c.a).isModuleConnected("analytics")})),a=f((function(e){return!n||e(o.a).canViewSharedModule("analytics")})),p=f((function(e){return!n||e(o.a).canViewSharedModule("search-console")})),b=f((function(e){if(!n)return!1;var t=e(c.a).getRecoverableModules();return void 0!==t?Object.keys(t).includes("analytics"):void 0})),h=f((function(e){if(!n)return!1;var t=e(c.a).getRecoverableModules();return void 0!==t?Object.keys(t).includes("search-console"):void 0})),v=m((function(e){return!(!i||!a||!1!==b)&&e(l.f).isGatheringData()})),O=m((function(e){return p&&!1===h&&e(u.b).isGatheringData()})),_=m((function(e){return!(!i||!a||!1!==b)&&e(l.f).hasZeroData()})),y=m((function(e){return p&&!1===h&&e(u.b).hasZeroData()}));return void 0===v||void 0===O||void 0===_||void 0===y?null:v||O||_||y?(v&&O?t=Object(r.__)("Search Console and Analytics are gathering data","google-site-kit"):v?t=Object(r.__)("Analytics is gathering data","google-site-kit"):O&&(t=Object(r.__)("Search Console is gathering data","google-site-kit")),v||O?e.createElement(d.a,{title:t}):e.createElement(g.a,null)):null}}).call(this,n(3))},489:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return GatheringDataNotification}));var r=n(0),i=n.n(r),a=n(97),o=n(1),c=n(2),s=n(55),l=n(382),u=n(8),d=n(19);function GatheringDataNotification(t){var n=t.title,r=Object(d.a)(),i="".concat(r,"_gathering-data-notification"),g=Object(c.useCallback)((function(){Object(u.z)(i,"dismiss_notification")}),[i]);return Object(a.a)((function(){Object(u.z)(i,"view_notification")})),e.createElement(s.b,{id:"gathering-data-notification",title:n,description:Object(o.__)("It can take up to 48 hours before stats show up for your site. While you’re waiting, connect more services to get more stats.","google-site-kit"),format:"small",dismiss:Object(o.__)("OK, Got it!","google-site-kit"),dismissExpires:Object(u.n)("day"),SmallImageSVG:l.a,onDismiss:g,isDismissible:!0})}GatheringDataNotification.propTypes={title:i.a.string}}).call(this,n(3))},49:function(e,t,n){"use strict";n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return o})),n.d(t,"b",(function(){return c})),n.d(t,"e",(function(){return s}));var r=n(103),i="xlarge",a="desktop",o="tablet",c="small";function s(){var e=Object(r.a)();return e>1280?i:e>960?a:e>600?o:c}},490:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ZeroDataNotification}));var r=n(97),i=n(66),a=n(2),o=n(1),c=n(15),s=n(55),l=n(381),u=n(8),d=n(19);function ZeroDataNotification(){var t=Object(d.a)(),n="".concat(t,"_zero-data-notification"),g=Object(a.useCallback)((function(){Object(u.z)(n,"dismiss_notification")}),[n]),f=Object(a.useCallback)((function(){Object(u.z)(n,"click_learn_more_link")}),[n]);Object(r.a)((function(){Object(u.z)(n,"view_notification")}));var m=Object(i.h)((function(e){return e(c.c).getDocumentationLinkURL("not-enough-traffic")}));return e.createElement(s.b,{id:"zero-data-notification",title:Object(o.__)("Not enough traffic yet to display stats","google-site-kit"),description:Object(o.__)("Site Kit will start showing stats on the dashboard as soon as enough people have visited your site. Keep working on your site to attract more visitors.","google-site-kit"),format:"small",learnMoreLabel:Object(o.__)("Learn more","google-site-kit"),learnMoreURL:m,dismiss:Object(o.__)("Remind me later","google-site-kit"),dismissExpires:Object(u.n)("day"),SmallImageSVG:l.a,onDismiss:g,onLearnMoreClick:f,isDismissible:!0})}}).call(this,n(3))},491:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c}));var r=n(14),i=n.n(r),a=n(614),o=n(2),c=function(){var t=Object(a.a)().y,n=Object(o.useState)(!1),r=i()(n,2),c=r[0],s=r[1],l="googlesitekit-plugin--has-scrolled";return Object(o.useEffect)((function(){c?e.document.body.classList.add(l):e.document.body.classList.remove(l)}),[c]),t>0&&!c?s(!0):0===t&&c&&s(!1),c}}).call(this,n(22))},50:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return i})),n.d(t,"a",(function(){return a}));var r={BOXES:"boxes",COMPOSITE:"composite"},i={QUARTER:"quarter",HALF:"half",FULL:"full"},a="core/widgets"},51:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"d",(function(){return o})),n.d(t,"c",(function(){return c})),n.d(t,"e",(function(){return s}));var r=n(100);function i(e){try{return new URL(e).pathname}catch(e){}return null}function a(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function o(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function s(e,t){if(!Object(r.a)(e))return e;if(e.length<=t)return e;var n=new URL(e),i=e.replace(n.origin,"");if(i.length=600;function Xe(){return(Xe=d()(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),t.preventDefault(),!se){e.next=5;break}return e.next=5,se(t);case 5:$e();case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function $e(){xe(!0),setTimeout(d()(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,qe();case 2:Ke()&&ze(!0),t=new Event("notificationDismissed"),document.dispatchEvent(t);case 5:case"end":return e.stop()}}),e)}))),350)}Object(y.a)(d()(l.a.mark((function e(){var t,n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(X>0)){e.next=3;break}return e.next=3,tt();case 3:if(!Z){e.next=9;break}return e.next=6,Object(F.b)(He);case 6:t=e.sent,n=t.cacheHit,ze(n);case 9:if(!de){e.next=12;break}return e.next=12,qe();case 12:case"end":return e.stop()}}),e)}))));var Qe=V((function(e){return e(q.a).isNavigatingTo(b||"")})),Ze=G(q.a).navigateTo;function Je(){return(Je=d()(l.a.mark((function e(t){var n,r,i;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.persist(),n=!0,!ce){e.next=13;break}return We(!0),e.next=6,ce(t);case 6:if(e.t0=e.sent,e.t0){e.next=9;break}e.t0={};case 9:r=e.t0,i=r.dismissOnCTAClick,n=void 0===i||i,Ke()&&We(!1);case 13:Z&&n&&$e(),Object(j.a)(b)&&"_blank"!==v&&!t.defaultPrevented&&(t.preventDefault(),Ze(b));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var et=Object(E.useCallback)((function(t){Object(A.c)(i)&&(t.preventDefault(),e.history.replaceState({},"",i),e.scrollTo({top:Object(D.a)(i,Ge),behavior:"smooth"}))}),[i,Ge]);function tt(){return nt.apply(this,arguments)}function nt(){return(nt=d()(l.a.mark((function e(){var t,n,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(F.b)(He);case 2:if(t=e.sent,!(n=t.value)){e.next=10;break}if((r=Object(H.a)(n)).setSeconds(r.getSeconds()+parseInt(X,10)),!(r1&&void 0!==arguments[1]?arguments[1]:{};return{__html:a.a.sanitize(e,t)}};function c(e){var t,n="object"===i()(e)?e.toString():e;return null==n||null===(t=n.replace)||void 0===t?void 0:t.call(n,/\/+$/,"")}},64:function(e,t,n){"use strict";(function(e){var r=n(0),i=n.n(r),a=n(1),o=n(170),c=n(358),s=n(13),l=n(106),u=function SurveyHeader(t){var n=t.title,r=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__header"},e.createElement("div",{className:"googlesitekit-survey__header-logo"},e.createElement(l.a,{width:24,height:24})),e.createElement("div",{className:"googlesitekit-survey__header-details"},e.createElement("h3",null,n),e.createElement(s.Button,{"aria-label":Object(a.__)("Dismiss","google-site-kit"),icon:e.createElement(o.a,{icon:c.a,size:40}),onClick:r,className:"googlesitekit-survey__header-close"})))};u.propTypes={title:i.a.string.isRequired,dismissSurvey:i.a.func.isRequired},t.a=u}).call(this,n(3))},648:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Errors}));var r=n(0),i=n.n(r),a=n(2),o=n(1);function Errors(t){var n=t.recoveryErrors;return e.createElement("div",{className:"googlesitekit-module-recovery-errors"},1===Object.keys(n).length&&e.createElement("p",null,Object(o.sprintf)( +/* translators: %s: Error message */ +Object(o.__)("Error: %s","google-site-kit"),Object.values(n)[0].message)),Object.keys(n).length>1&&e.createElement(a.Fragment,null,e.createElement("p",null,Object(o.__)("The following modules failed to be recovered:","google-site-kit")),e.createElement("ul",null,Object.keys(n).map((function(t){return e.createElement("li",{key:t},Object(o.sprintf)( +/* translators: 1: Module name, 2: Error message */ +Object(o.__)("%1$s: %2$s","google-site-kit"),n[t].name,n[t].message))})))))}Errors.propTypes={recoveryErrors:i.a.object.isRequired}}).call(this,n(3))},65:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),i=n.n(r),a=n(0),o=n.n(a),c=n(11),s=n.n(c),l=n(1),u={DEFAULT:"default",OVERLAY:"overlay",SMALL:"small",SMALL_OVERLAY:"small-overlay",LARGE:"large"};function GatheringDataNotice(t){var n=t.style;return e.createElement("div",{className:s()("googlesitekit-gathering-data-notice",i()({},"googlesitekit-gathering-data-notice--has-style-".concat(n),!!n))},e.createElement("span",null,Object(l.__)("Gathering data…","google-site-kit")))}GatheringDataNotice.propTypes={style:o.a.oneOf(Object.values(u))},t.b=GatheringDataNotice}).call(this,n(3))},67:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));var r="modules/search-console",i=1},68:function(e,t,n){"use strict";n.d(t,"d",(function(){return r.e})),n.d(t,"c",(function(){return r.d})),n.d(t,"b",(function(){return r.b})),n.d(t,"a",(function(){return r.a})),n.d(t,"e",(function(){return r.f})),n.d(t,"g",(function(){return c})),n.d(t,"h",(function(){return l})),n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return d.a})),n.d(t,"f",(function(){return f})),n.d(t,"k",(function(){return s.a}));var r=n(36),i=n(7),a=n.n(i),o=n(37),c=function(e){a()(Object(o.a)(e),r.c);var t="".concat(e.getMonth()+1),n="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,n.length<2?"0".concat(n):n].join("-")},s=n(38),l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=Object(s.a)(e);return n.setDate(n.getDate()-t),c(n)},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},d=n(43);var g=n(1);function f(){var e=function(e){return Object(g.sprintf)( +/* translators: %s: number of days */ +Object(g._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},70:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(2),i=Object(r.createContext)(""),a=(i.Consumer,i.Provider);t.b=i},73:function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return y})),n.d(t,"d",(function(){return E})),n.d(t,"b",(function(){return j})),n.d(t,"a",(function(){return S}));var r=n(14),i=n.n(r),a=n(30),o=n.n(a),c=n(6),s=n.n(c),l=n(21),u=n.n(l),d=n(26),g=n(71),f=n.n(g),m=n(1);function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=v(e,t),r=n.formatUnit,i=n.formatDecimal;try{return r()}catch(e){return i()}},v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var n=Math.floor(e/60/60),r=Math.floor(e/60%60),i=Math.floor(e%60);return{hours:n,minutes:r,seconds:i,formatUnit:function(){var a=t.unitDisplay,o=b(b({unitDisplay:void 0===a?"short":a},u()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?E(i,b(b({},o),{},{unit:"second"})):Object(m.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(m._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?E(i,b(b({},o),{},{unit:"second"})):"",r?E(r,b(b({},o),{},{unit:"minute"})):"",n?E(n,b(b({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(m.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(m.__)("%ds","google-site-kit"),i);if(0===e)return t;var a=Object(m.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(m.__)("%dm","google-site-kit"),r),o=Object(m.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(m.__)("%dh","google-site-kit"),n);return Object(m.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(m._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?t:"",r?a:"",n?o:"").trim()}}},O=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},_=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(m.sprintf)(// translators: %s: an abbreviated number in millions. +Object(m.__)("%sM","google-site-kit"),E(O(e),e%10==0?{}:t)):1e4<=e?Object(m.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(m.__)("%sK","google-site-kit"),E(O(e))):1e3<=e?Object(m.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(m.__)("%sK","google-site-kit"),E(O(e),e%10==0?{}:t)):E(e,{signDisplay:"never",maximumFractionDigits:1})},y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(d.isFinite)(e)?e:Number(e),Object(d.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var n={};if("%"===t)n={style:"percent",maximumFractionDigits:2};else{if("s"===t)return h(e,{unitDisplay:"narrow"});t&&"string"==typeof t?n={style:"currency",currency:t}:Object(d.isPlainObject)(t)&&(n=b({},t))}var r=n,i=r.style,a=void 0===i?"metric":i;return"metric"===a?_(e):"duration"===a?h(e,t):E(e,n)},k=f()(console.warn),E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,a=u()(t,["locale"]);try{return new Intl.NumberFormat(r,a).format(e)}catch(t){k("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(r),", ").concat(JSON.stringify(a)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},s=["signDisplay","compactDisplay"],l={},d=0,g=Object.entries(a);d1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,r=void 0===n?S():n,i=t.style,a=void 0===i?"long":i,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var s=new Intl.ListFormat(r,{style:a,type:c});return s.format(e)} +/* translators: used between list items, there is a space after the comma. */var l=Object(m.__)(", ","google-site-kit");return e.join(l)},S=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,n=Object(d.get)(t,["_googlesitekitLegacyData","locale"]);if(n){var r=n.match(/^(\w{2})?(_)?(\w{2})/);if(r&&r[0])return r[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,n(22))},77:function(e,t,n){"use strict";n.d(t,"m",(function(){return E})),n.d(t,"k",(function(){return j})),n.d(t,"c",(function(){return b})),n.d(t,"d",(function(){return h})),n.d(t,"i",(function(){return v})),n.d(t,"j",(function(){return O})),n.d(t,"h",(function(){return _})),n.d(t,"g",(function(){return y})),n.d(t,"f",(function(){return b})),n.d(t,"e",(function(){return k})),n.d(t,"l",(function(){return C})),n.d(t,"b",(function(){return T})),n.d(t,"a",(function(){return A}));var r=n(24),i=n.n(r),a=n(26),o=n(11),c=n.n(o),s=n(1),l=n(73),u=n(165),d=n(8),g=n(145),f=n(14),m=n.n(f),p=n(9),b=function(e){return(parseInt(e,10)||0)>0};function h(e){return e===p.a||b(e)}function v(e){return"string"==typeof e&&/^UA-\d+-\d+$/.test(e)}function O(e){return e===p.h||v(e)}function _(e){return e===p.g||b(e)}function y(e){return"string"==typeof e&&e.trim().length>0}function k(e){return"string"==typeof e&&/^AW-[0-9]+$/.test(e)}function E(e){if(!v(e))return!1;var t=e.match(/^UA-(\d+)-(\d+)/),n=m()(t,3);return{accountID:n[1],propertyID:e,number:n[2]}}function j(e){var t,n,r,i,a,o,c,s;if(void 0!==e)return!(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(r=n.rows)||void 0===r?void 0:r.length)||!(null==e||null===(i=e[0])||void 0===i||null===(a=i.data)||void 0===a||null===(o=a.totals)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.values)||void 0===s?void 0:s.length)||!e[0].data.totals.some((function(e){return e.values.some((function(e){return e>0}))}))}var S=n(51);function w(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return N(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw a}}}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:{},i=r.keyColumnIndex,a=void 0===i?0:i,o=r.maxSlices,c=r.withOthers,l=void 0!==c&&c,u=r.tooltipCallback,d=(null==e?void 0:e[0])||{},g=d.data,f=void 0===g?{}:g,m=f.rows,p=void 0===m?[]:m,b=f.totals,h=void 0===b?[]:b,v="function"==typeof u,O=["Source","Percent"];v&&O.push({type:"string",role:"tooltip",p:{html:!0}});var _=(null==h||null===(t=h[0])||void 0===t||null===(n=t.values)||void 0===n?void 0:n[a])||0,y=[O],k=l,E=p.length,j=1;o>0?(k=l&&p.length>o,E=Math.min(p.length,k?o-1:o)):(k=!1,E=p.length);for(var S=0;S0?N/_:0;j-=C;var T=[w.dimensions[0],C];v&&T.push(u(w,T)),y.push(T)}if(k&&j>0){var D=[Object(s.__)("Others","google-site-kit"),j];v&&D.push(u(null,D)),y.push(D)}return y}function D(e,t,n){var r=[];return Object(a.each)(e,(function(e){if(e.metrics){var i=e.metrics[t].values,a=e.dimensions[0],o=Object(u.a)(a);r.push([o,i[n]])}})),r}function A(e,t,n){var r,o,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,m=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[Object(s.__)("Users","google-site-kit"),Object(s.__)("Sessions","google-site-kit"),Object(s.__)("Bounce Rate %","google-site-kit"),Object(s.__)("Session Duration","google-site-kit")],p=arguments.length>6&&void 0!==arguments[6]?arguments[6]:[function(e){return parseFloat(e).toLocaleString()},function(e){return parseFloat(e).toLocaleString()},function(e){return Object(d.u)(e/100,{style:"percent",signDisplay:"never",maximumFractionDigits:2})},function(e){return Object(d.u)(e,"s")}];if(!Array.isArray(null===(r=e[0])||void 0===r||null===(o=r.data)||void 0===o?void 0:o.rows))return!1;var b=i()(e[0].data.rows),h=b.length;if(2*n>h){for(var v=new Date,O=0;n>O;O++){var _=(v.getMonth()+1).toString(),y=v.getDate().toString(),k=v.getFullYear().toString()+(2>_.length?"0":"")+_+(2>y.length?"0":"")+y;if(O>h){var E={dimensions:[k],metrics:[{values:[0,0,0,0,0]}]};b.unshift(E)}v.setDate(v.getDate()-1)}b.push([0,0])}var j=m[t]===Object(s.__)("Session Duration","google-site-kit"),S=j?"timeofday":"number",w=[[{type:"date",label:Object(s.__)("Day","google-site-kit")},{type:"string",role:"tooltip",p:{html:!0}},{type:S,label:m[t]},{type:S,label:Object(s.__)("Previous period","google-site-kit")}]],N=Object(g.a)(b,{dateRangeLength:n}),C=N.compareRange,T=N.currentRange,A=D(T,u,t),M=D(C,f,t),R=Object(l.a)(),x={weekday:"short",month:"short",day:"numeric"};return Object(a.each)(A,(function(e,n){if(e[0]&&e[1]&&M[n]){var r=parseFloat(M[n][1]),i=Object(d.e)(e[1],r),a=Object(d.j)(i),o=Object(s.sprintf)( +/* translators: 1: date for user stats, 2: previous date for user stats comparison */ +Object(s._x)("%1$s vs %2$s","Date range for chart tooltip","google-site-kit"),e[0].toLocaleDateString(R,x),M[n][0].toLocaleDateString(R,x)),l=Object(s.sprintf)( +/* translators: 1: selected stat label, 2: numeric value of selected stat, 3: up or down arrow , 4: different change in percentage */ +Object(s._x)("%1$s: %2$s %3$s %4$s","Stat information for chart tooltip","google-site-kit"),m[t],p[t](e[1]),a,Object(d.u)(Math.abs(i),"%"));w.push([e[0],'
0,"googlesitekit-visualization-tooltip--down":i<0}),'">\n\t\t\t\t

').concat(o,"

\n\t\t\t\t

").concat(l,"

\n\t\t\t
"),j?Object(d.g)(e[1]):e[1],j?Object(d.g)(M[n][1]):M[n][1]])}})),w}},78:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var r=n(124),i=n.n(r)()(e)}).call(this,n(22))},8:function(e,t,n){"use strict";n.d(t,"z",(function(){return c.b})),n.d(t,"w",(function(){return s.a})),n.d(t,"A",(function(){return s.b})),n.d(t,"y",(function(){return f})),n.d(t,"f",(function(){return m.a})),n.d(t,"m",(function(){return m.b})),n.d(t,"u",(function(){return p.c})),n.d(t,"v",(function(){return p.d})),n.d(t,"r",(function(){return p.b})),n.d(t,"l",(function(){return p.a})),n.d(t,"s",(function(){return O})),n.d(t,"g",(function(){return _})),n.d(t,"b",(function(){return y.b})),n.d(t,"a",(function(){return y.a})),n.d(t,"c",(function(){return y.e})),n.d(t,"i",(function(){return y.f})),n.d(t,"x",(function(){return y.k})),n.d(t,"j",(function(){return k.b})),n.d(t,"q",(function(){return k.c})),n.d(t,"e",(function(){return k.a})),n.d(t,"o",(function(){return E.b})),n.d(t,"k",(function(){return E.a})),n.d(t,"t",(function(){return E.d})),n.d(t,"p",(function(){return j})),n.d(t,"n",(function(){return S})),n.d(t,"d",(function(){return w})),n.d(t,"B",(function(){return N})),n.d(t,"h",(function(){return C}));var r=n(123),i=n.n(r),a=n(118),o=n.n(a),c=n(32),s=n(63),l=n(30),u=n.n(l),d=n(81),g=n.n(d),f=function(e){return g()(JSON.stringify(function e(t){var n={};return Object.keys(t).sort().forEach((function(r){var i=t[r];i&&"object"===u()(i)&&!Array.isArray(i)&&(i=e(i)),n[r]=i})),n}(e)))};var m=n(83),p=(n(84),n(73));function b(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function h(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function v(e){return e.replace(/\n/gi,"
")}function O(e){for(var t=e,n=0,r=[b,h,v];nredo the plugin setup.',"google-site-kit"),r));return e.createElement("div",{className:"googlesitekit-error-text"},e.createElement("p",{dangerouslySetInnerHTML:Object(c.w)(i,{ALLOWED_TAGS:["a"],ALLOWED_ATTR:["href"]})}))}ErrorText.propTypes={message:i.a.string.isRequired,reconnectURL:i.a.string},ErrorText.defaultProps={reconnectURL:""},t.a=ErrorText}).call(this,n(3))},83:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return l}));var r=n(14),i=n.n(r);function a(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){s=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(s)throw a}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:location,n=new URL(t.href);if(e)return n.searchParams&&n.searchParams.get?n.searchParams.get(e):s(e);var r,o={},c=a(n.searchParams.entries());try{for(c.s();!(r=c.n()).done;){var l=i()(r.value,2),u=l[0],d=l[1];o[u]=d}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,n(22))},84:function(e,t,n){"use strict";(function(e){n(44),n(45)}).call(this,n(22))},85:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return o})),n.d(t,"a",(function(){return c}));var r=n(169),i=n(62),a=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var a=n.invertColor,o=void 0!==a&&a;return Object(r.a)(e.createElement(i.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,n,r,i,a,o,c,s,l,u,d,g,f,m,p;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(r=n.rows)||void 0===r?void 0:r.length)||(null==e||null===(i=e[0])||void 0===i||null===(a=i.data)||void 0===a||null===(o=a.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.metrics)||void 0===s||null===(l=s[0])||void 0===l||null===(u=l.values)||void 0===u?void 0:u[0])===(null==e||null===(d=e[0])||void 0===d||null===(g=d.data)||void 0===g||null===(f=g.totals)||void 0===f||null===(m=f[0])||void 0===m||null===(p=m.values)||void 0===p?void 0:p[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,n(3))},86:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u}));var r=n(6),i=n.n(r),a=n(87),o=n(88);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,i=s(s({},l),t);i.referenceSiteURL&&(i.referenceSiteURL=i.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(a.a)(i,n);return{enableTracking:function(){i.trackingEnabled=!0},disableTracking:function(){i.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!i.trackingEnabled},trackEvent:Object(o.a)(i,n,c,r)}}}).call(this,n(22))},87:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var r=n(52),i=n(31);function a(t,n){var a,o=Object(r.a)(n);return function(){var n=e.document;if(void 0===a&&(a=!!n.querySelector("script[".concat(i.b,"]"))),!a){var r=n.createElement("script");r.setAttribute(i.b,""),r.async=!0,r.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(i.a),n.head.appendChild(r),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),a=!0}}}}).call(this,n(22))},876:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return DashboardEntryPoint}));var r=n(0),i=n.n(r),a=n(877),o=n(879);function DashboardEntryPoint(t){var n=t.setupModuleSlug;return n?e.createElement(a.a,{moduleSlug:n}):e.createElement(o.a,null)}DashboardEntryPoint.propTypes={setupModuleSlug:i.a.string}}).call(this,n(3))},877:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ModuleSetup}));var r=n(5),i=n.n(r),a=n(16),o=n.n(a),c=n(0),s=n.n(c),l=n(97),u=n(2),d=n(1),g=n(4),f=n.n(g),m=n(15),p=n(17),b=n(40),h=n(8),v=n(209),O=n(10),_=n(208),y=n(878),k=f.a.useSelect,E=f.a.useDispatch;function ModuleSetup(t){var n=t.moduleSlug,r=E(b.a).navigateTo,a=k((function(e){return e(p.a).getModule(n)})),c={notification:"authentication_success"};n&&(c.slug=n);var s=k((function(e){return e(m.c).getAdminURL("googlesitekit-dashboard",c)})),g=Object(u.useCallback)(function(){var e=o()(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(h.z)("moduleSetup","complete_module_setup",n);case 2:r(t||s);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[s,r,n]),f=Object(u.useCallback)(o()(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(h.z)("moduleSetup","cancel_module_setup",n);case 2:case"end":return e.stop()}}),e)}))),[n]);if(Object(l.a)((function(){Object(h.z)("moduleSetup","view_module_setup",n)})),!(null==a?void 0:a.SetupComponent))return null;var j=a.SetupComponent;return e.createElement(u.Fragment,null,e.createElement(_.a,null,e.createElement(v.a,null)),e.createElement("div",{className:"googlesitekit-setup"},e.createElement(O.f,null,e.createElement(O.p,null,e.createElement(O.a,{size:12},e.createElement("section",{className:"googlesitekit-setup__wrapper"},e.createElement(O.f,null,e.createElement(O.p,null,e.createElement(O.a,{size:12},e.createElement("p",{className:"googlesitekit-setup__intro-title"},Object(d.__)("Connect Service","google-site-kit")),e.createElement(j,{module:a,finishSetup:g})))),e.createElement(y.a,{module:a,onCancel:f})))))))}ModuleSetup.propTypes={moduleSlug:s.a.string.isRequired}}).call(this,n(3))},878:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ModuleSetupFooter}));var r=n(0),i=n.n(r),a=n(1),o=n(4),c=n.n(o),s=n(15),l=n(10),u=n(20),d=c.a.useSelect;function ModuleSetupFooter(t){var n=t.module,r=t.onCancel,i=d((function(e){return e(s.c).getAdminURL("googlesitekit-settings")})),o=d((function(e){var t,r;return null===(t=e(null==n?void 0:n.storeName))||void 0===t||null===(r=t.isSetupBlocked)||void 0===r?void 0:r.call(t)}));return n?e.createElement("div",{className:"googlesitekit-setup__footer"},e.createElement(l.f,null,e.createElement(l.p,null,e.createElement(l.a,{smSize:2,mdSize:4,lgSize:6},e.createElement(u.a,{id:"setup-".concat(n.slug,"-cancel"),href:i,onClick:r},o?Object(a.__)("Back","google-site-kit"):Object(a.__)("Cancel","google-site-kit")))))):null}ModuleSetupFooter.propTypes={module:i.a.shape({slug:i.a.string.isRequired,storeName:i.a.string.isRequired}).isRequired,onCancel:i.a.func.isRequired}}).call(this,n(3))},879:function(e,t,n){"use strict";(function(e){var r=n(11),i=n.n(r),a=n(2),o=n(4),c=n.n(o),s=n(94),l=n(8),u=n(208),d=n(465),g=n(329),f=n(475),m=n(480),p=n(209),b=n(881),h=n(894),v=n(434),O=n(23),_=n(12),y=n(50),k=n(117),E=n(56),j=c.a.useSelect;t.a=function DashboardMainApp(){var t=Object(k.a)("dashboardSharing"),n=Object(E.a)(),r=j((function(e){return n?e(_.a).getViewableModules():null})),o={modules:r||void 0},c=j((function(e){return e(y.a).isWidgetContextActive(s.CONTEXT_MAIN_DASHBOARD_TRAFFIC,o)})),S=j((function(e){return e(y.a).isWidgetContextActive(s.CONTEXT_MAIN_DASHBOARD_CONTENT,o)})),w=j((function(e){return e(y.a).isWidgetContextActive(s.CONTEXT_MAIN_DASHBOARD_SPEED,o)})),N=null;return j((function(e){return e(y.a).isWidgetContextActive(s.CONTEXT_MAIN_DASHBOARD_MONETIZATION,o)}))?N=O.b:w?N=O.c:S?N=O.a:c&&(N=O.d),e.createElement(a.Fragment,null,e.createElement(v.a,null),e.createElement(u.a,{subHeader:e.createElement(b.a,null),showNavigation:!0},e.createElement(f.a,null),e.createElement(m.a,null),t&&!n&&e.createElement(d.a,null),e.createElement(p.a,null)),e.createElement(g.a,{id:O.d,slug:s.CONTEXT_MAIN_DASHBOARD_TRAFFIC,className:i()({"googlesitekit-widget-context--last":N===O.d})}),e.createElement(g.a,{id:O.a,slug:s.CONTEXT_MAIN_DASHBOARD_CONTENT,className:i()({"googlesitekit-widget-context--last":N===O.a})}),e.createElement(g.a,{id:O.c,slug:s.CONTEXT_MAIN_DASHBOARD_SPEED,className:i()({"googlesitekit-widget-context--last":N===O.c})}),e.createElement(g.a,{id:O.b,slug:s.CONTEXT_MAIN_DASHBOARD_MONETIZATION,className:i()({"googlesitekit-widget-context--last":N===O.b})}),e.createElement(h.a,{triggerID:"view_dashboard",ttl:l.a}))}}).call(this,n(3))},88:function(e,t,n){"use strict";n.d(t,"a",(function(){return f}));var r=n(5),i=n.n(r),a=n(6),o=n.n(a),c=n(16),s=n.n(c),l=n(52),u=n(42);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;topen the administrator panel.","google-site-kit"),{link:r.createElement(_.a,{href:x,external:!0})})),Y.learnMore.label=""),r.createElement(u.Fragment,null,r.createElement(h.b,{id:Y.id,title:Object(g.sprintf)( +/* translators: %s: the name of a module that setup was completed for */ +Object(g.__)("Congrats on completing the setup for %s!","google-site-kit"),Y.setupTitle),description:Y.description,handleDismiss:function(){},WinImageSVG:v.a,dismiss:Object(g.__)("OK, Got it!","google-site-kit"),onDismiss:K,format:"smaller",type:"win-success",learnMoreLabel:Y.learnMore.label,learnMoreDescription:Y.learnMore.description,learnMoreURL:Y.learnMore.url,learnMoreTarget:Y.learnMore.target,anchorLink:Q.link,anchorLinkLabel:Q.label}));case"user_input_success":return r.createElement(O.a,null)}}}).call(this,n(22),n(3))},883:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return UserInputSuccessBannerNotification}));var r=n(1),i=n(2),a=n(55),o=n(884),c=n(8),s=n(19);function UserInputSuccessBannerNotification(){var t=Object(s.a)(),n="".concat(t,"_user-input-success-notification");Object(i.useEffect)((function(){Object(c.z)(n,"view_notification")}),[n]);return e.createElement(a.b,{id:"user-input-success",title:Object(r.__)("Congrats! You set your site goals","google-site-kit"),description:Object(r.__)("Now Site Kit will begin suggesting metrics to add to your dashboard that are relevant specifically to you, based on the goals you shared","google-site-kit"),SmallImageSVG:o.a,dismiss:Object(r.__)("OK, Got it!","google-site-kit"),format:"small",onDismiss:function(){Object(c.z)(n,"confirm_notification")}})}}).call(this,n(3))},884:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t0&&e.createElement(_.a,{recoveryErrors:N})),I=R):(L=Object(g.__)("The data for the following modules was previously shared with other users on the site by another admin who no longer has access. To restore access, you may recover the module as the new owner.","google-site-kit"),P=e.createElement(d.Fragment,null,w.map((function(t){return e.createElement("div",{key:t},e.createElement(p.Checkbox,{checked:r[t],name:"module-recovery-alert-checkbox",id:"module-recovery-alert-checkbox-".concat(t),onChange:function(){return M(t)},value:t,disabled:f},y[t].name))})),e.createElement("p",{className:"googlesitekit-publisher-win__desc"},Object(g.__)("By recovering the selected modules, you will restore access for other users by sharing access via your Google account. This does not make any changes to external services and can be managed at any time via the dashboard sharing settings.","google-site-kit")),Object.keys(N).length>0&&e.createElement(_.a,{recoveryErrors:N})),I=R),e.createElement(O.b,{id:"module-recovery-alert",title:Object(g.__)("Dashboard data for some services has been interrupted","google-site-kit"),onCTAClick:I,ctaLabel:I?Object(g.__)("Recover","google-site-kit"):null,ctaLink:I?"#":null,description:L,learnMoreURL:S,learnMoreLabel:Object(g.__)("Learn more","google-site-kit"),isDismissible:z,dismiss:Object(g.__)("Remind me later","google-site-kit"),dismissExpires:Object(v.n)("day")},P)}}).call(this,n(3))},888:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return IdeaHubPromptBannerNotification}));var r=n(5),i=n.n(r),a=n(16),o=n.n(a),c=n(14),s=n.n(c),l=n(1),u=n(2),d=n(4),g=n.n(d),f=n(17),m=n(12),p=n(40),b=n(15),h=n(39),v=n(8),O=n(55),_=n(456),y=n(19),k=g.a.useSelect,E=g.a.useDispatch;function IdeaHubPromptBannerNotification(){var t=Object(u.useState)(!1),n=s()(t,2),r=n[0],a=n[1],c=E(m.a).dismissItem,d=E(f.a).activateModule,g=E(p.a).navigateTo,j=E(b.c).setInternalServerError,S=Object(y.a)(),w=k((function(e){return e(f.a).isModuleActive("idea-hub")})),N=k((function(e){return e(m.a).isItemDismissed("idea-hub-module-notification")})),C=k((function(e){var t;return null===(t=e(h.t))||void 0===t?void 0:t.getAdminReauthURL()})),T=k((function(e){return e(b.c).getDocumentationLinkURL("idea-hub")})),D=Object(u.useCallback)(o()(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c("idea-hub-module-notification");case 2:Object(v.z)("".concat(S,"_module-activation-notification"),"dismiss_notification","idea-hub");case 3:case"end":return e.stop()}}),e)}))),[c,S]),A=Object(u.useCallback)(function(){var e=o()(i.a.mark((function e(t){var n,r,a;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),e.next=3,d("idea-hub");case 3:if(n=e.sent,r=n.error,a=n.response,!r){e.next=8;break}return e.abrupt("return",j({id:"idea-hub-setup-error",description:r.message}));case 8:return e.next=10,Object(v.z)("".concat(S,"_module-activation-notification"),"confirm_notification","idea-hub");case 10:return e.next=12,Object(v.z)("".concat(S,"_module-activation-notification"),"activate_module","idea-hub");case 12:g(a.moduleReauthURL);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[d,g,j,S]),M=w||void 0===w||N||void 0===N;return Object(u.useEffect)((function(){M||!1!==r||(Object(v.z)("".concat(S,"_module-activation-notification"),"view_notification","idea-hub"),a(!0))}),[M,r,a,S]),M?null:e.createElement(O.b,{id:"idea-hub-module-notification",title:Object(l._x)("Idea Hub","Service name","google-site-kit"),description:Object(l.__)("Idea Hub suggests what you can write about next, from actual questions people asked on Google Search.","google-site-kit"),ctaLabel:Object(l.__)("Set up","google-site-kit"),ctaLink:C,format:"larger",dismiss:Object(l.__)("Dismiss","google-site-kit"),onDismiss:D,onCTAClick:A,badgeLabel:Object(l.__)("Experimental","google-site-kit"),learnMoreLabel:Object(l.__)("Learn more","google-site-kit"),learnMoreURL:T,WinImageSVG:_.a,showSmallWinImage:!1,mediumWinImageSVGWidth:765,mediumWinImageSVGHeight:304,noBottomPadding:!0})}}).call(this,n(3))},889:function(e,t,n){"use strict";(function(e){var r=n(14),i=n.n(r),a=n(2),o=n(4),c=n.n(o),s=n(8),l=n(463),u=n(12),d=n(19),g=c.a.useSelect;t.a=function UserInputPromptBannerNotification(){var t=Object(d.a)(),n=g((function(e){return e(u.a).getUserInputState()})),r="".concat(t,"_user-input-prompt-notification"),o=Object(a.useState)(!1),c=i()(o,2),f=c[0],m=c[1];Object(a.useEffect)((function(){f||void 0===n||"completed"===n||Object(s.z)(r,"view_notification").finally((function(){return m(!0)}))}),[r,n,f]);return e.createElement(l.a,{isDismissible:!0,onCTAClick:function(){Object(s.z)(r,"confirm_notification")},onDismiss:function(){Object(s.z)(r,"dismiss_notification")}})}}).call(this,n(3))},890:function(e,t,n){"use strict";(function(e){var r=n(2),i=n(1),a=n(4),o=n.n(a),c=n(17),s=n(29),l=n(891),u=n(55),d=o.a.useSelect;t.a=function AdSenseAlerts(){var t=d((function(e){return e(c.a).isModuleConnected("adsense")})),n=d((function(e){return e(s.f).getAccountID()})),a=d((function(e){return e(s.f).getNotifications()}));return t&&n&&void 0!==a?e.createElement(r.Fragment,null,a.map((function(t){return e.createElement(u.b,{key:t.id,id:t.id,title:t.title||"",description:t.description||"",blockData:t.blockData||[],WinImageSVG:function WinImageSVG(){return e.createElement(l.a,{height:"136"})},format:t.format||"small",learnMoreURL:t.learnMoreURL||"",learnMoreDescription:t.learnMoreDescription||"",learnMoreLabel:t.learnMoreLabel||"",ctaLink:t.ctaURL||"",ctaLabel:t.ctaLabel||"",ctaTarget:t.ctaTarget||"",type:t.severity||"",dismiss:t.dismiss||Object(i.__)("OK, Got it!","google-site-kit"),isDismissible:t.isDismissable||!0,logo:t.logo||!0,module:"adsense",moduleName:Object(i._x)("AdSense","Service name","google-site-kit"),pageIndex:t.pageIndex||"",dismissExpires:t.dismissExpires||0,showOnce:t.showOnce||!1})}))):null}}).call(this,n(3))},891:function(e,t,n){"use strict";var r=n(2);function i(){return(i=Object.assign||function(e){for(var t=1;t=j&&j>0),o()(r,"mdc-layout-grid__cell--span-".concat(E,"-desktop"),12>=E&&E>0),o()(r,"mdc-layout-grid__cell--start-".concat(w,"-desktop"),12>=w&&w>0),o()(r,"mdc-layout-grid__cell--order-".concat(_,"-desktop"),12>=_&&_>0),o()(r,"mdc-layout-grid__cell--span-".concat(S,"-tablet"),8>=S&&S>0),o()(r,"mdc-layout-grid__cell--start-".concat(y,"-tablet"),8>=y&&y>0),o()(r,"mdc-layout-grid__cell--order-".concat(O,"-tablet"),8>=O&&O>0),o()(r,"mdc-layout-grid__cell--span-".concat(h,"-phone"),4>=h&&h>0),o()(r,"mdc-layout-grid__cell--start-".concat(b,"-phone"),4>=b&&b>0),o()(r,"mdc-layout-grid__cell--order-".concat(m,"-phone"),4>=m&&m>0),r))}),R)}Cell.propTypes={smSize:l.a.number,smStart:l.a.number,smOrder:l.a.number,mdSize:l.a.number,mdStart:l.a.number,mdOrder:l.a.number,lgSize:l.a.number,lgStart:l.a.number,lgOrder:l.a.number,size:l.a.number,alignTop:l.a.bool,alignMiddle:l.a.bool,alignBottom:l.a.bool,alignRight:l.a.bool,alignLeft:l.a.bool,smAlignRight:l.a.bool,mdAlignRight:l.a.bool,lgAlignRight:l.a.bool,className:l.a.string,children:l.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,r(3))},108:function(e,t,r){"use strict";(function(e){var n=r(18),a=r.n(n),i=r(21),o=r.n(i),c=r(0),u=r.n(c),s=r(11),l=r.n(s),d=r(2),g=Object(d.forwardRef)((function(t,r){var n=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",a()({ref:r,className:l()("mdc-layout-grid__inner",n)},c),i)}));g.displayName="Row",g.propTypes={className:u.a.string,children:u.a.node},g.defaultProps={className:""},t.a=g}).call(this,r(3))},109:function(e,t,r){"use strict";(function(e){var n=r(18),a=r.n(n),i=r(21),o=r.n(i),c=r(0),u=r.n(c),s=r(11),l=r.n(s),d=r(2),g=Object(d.forwardRef)((function(t,r){var n=t.alignLeft,i=t.fill,c=t.className,u=t.children,s=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",a()({className:l()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":n,"mdc-layout-grid--collapsed":s,"mdc-layout-grid--fill":i})},d,{ref:r}),u)}));g.displayName="Grid",g.propTypes={alignLeft:u.a.bool,fill:u.a.bool,className:u.a.string,collapsed:u.a.bool,children:u.a.node},g.defaultProps={className:""},t.a=g}).call(this,r(3))},12:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return a})),r.d(t,"c",(function(){return i})),r.d(t,"h",(function(){return o})),r.d(t,"i",(function(){return c})),r.d(t,"f",(function(){return u})),r.d(t,"g",(function(){return s})),r.d(t,"e",(function(){return l})),r.d(t,"d",(function(){return d}));var n="core/user",a="connected_url_mismatch",i="googlesitekit_authenticate",o="googlesitekit_setup",c="googlesitekit_view_dashboard",u="googlesitekit_manage_options",s="googlesitekit_read_shared_module_data",l="googlesitekit_manage_module_sharing_options",d="googlesitekit_delegate_module_sharing_management"},138:function(e,t,r){"use strict";var n=r(2);function a(){return(a=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{},a=n.ownedSettingsSlugs,i=void 0===a?void 0:a,c=n.storeName,s=void 0===c?void 0:c,d=n.settingSlugs,f=void 0===d?[]:d;l()(e,"type is required."),l()(t,"identifier is required."),l()(r,"datapoint is required.");var p=s||"".concat(e,"/").concat(t),b={ownedSettingsSlugs:i,settings:void 0,savedSettings:void 0},S=Object(w.a)({baseName:"getSettings",controlCallback:function(){return m.a.get(e,t,r,{},{useCache:!1})},reducerCallback:function(e,t){return R(R({},e),{},{savedSettings:R({},t),settings:R(R({},t),e.settings||{})})}}),O=Object(w.a)({baseName:"saveSettings",controlCallback:function(n){var a=n.values;return m.a.set(e,t,r,a)},reducerCallback:function(e,t){return R(R({},e),{},{savedSettings:R({},t),settings:R({},t)})},argsToParams:function(e){return{values:e}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.values;l()(g()(t),"values is required.")}}),_={},j={setSettings:function(e){return l()(g()(e),"values is required."),{payload:{values:e},type:"SET_SETTINGS"}},rollbackSettings:function(){return{payload:{},type:"ROLLBACK_SETTINGS"}},saveSettings:o.a.mark((function e(){var t,r,n,a,i;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,y.a.commonActions.getRegistry();case 2:return t=e.sent,e.next=5,A("saveSettings",[]);case 5:return r=t.select(p).getSettings(),e.next=8,O.actions.fetchSaveSettings(r);case 8:if(n=e.sent,a=n.response,!(i=n.error)){e.next=14;break}return e.next=14,C(i,"saveSettings",[]);case 14:return e.abrupt("return",{response:a,error:i});case 15:case"end":return e.stop()}}),e)}))},N={},M=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b,t=arguments.length>1?arguments[1]:void 0,r=t.type,n=t.payload;switch(r){case"SET_SETTINGS":var a=n.values;return R(R({},e),{},{settings:R(R({},e.settings||{}),a)});case"ROLLBACK_SETTINGS":return R(R({},e),{},{settings:e.savedSettings});default:return void 0!==_[r]?_[r](e,{type:r,payload:n}):e}},D={getSettings:o.a.mark((function e(){var t;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,y.a.commonActions.getRegistry();case 2:if(t=e.sent,t.select(p).getSettings()){e.next=7;break}return e.next=7,S.actions.fetchGetSettings();case 7:case"end":return e.stop()}}),e)}))},I={getSettings:function(e){return e.settings},haveSettingsChanged:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=e.settings,n=e.savedSettings;return t?!v()(h()(r,t),h()(n,t)):!v()(r,n)},hasSettingChanged:function(e,t){l()(t,"setting is required.");var r=e.settings,n=e.savedSettings;return!(!r||!n)&&!v()(r[t],n[t])},isDoingSaveSettings:function(e){return Object.values(e.isFetchingSaveSettings).some(Boolean)},getOwnedSettingsSlugs:function(e){return e.ownedSettingsSlugs},haveOwnedSettingsChanged:k((function(e){return function(){var t=e(p).getOwnedSettingsSlugs();return e(p).haveSettingsChanged(t)}}))};f.forEach((function(e){var t=Object(E.b)(e),r=Object(E.a)(e);j["set".concat(t)]=function(e){return l()(void 0!==e,"value is required for calls to set".concat(t,"().")),{payload:{value:e},type:"SET_".concat(r)}},_["SET_".concat(r)]=function(t,r){var n=r.payload.value;return R(R({},t),{},{settings:R(R({},t.settings||{}),{},u()({},e,n))})},I["get".concat(t)]=k((function(t){return function(){return(t(p).getSettings()||{})[e]}}))}));var T=y.a.combineStores(y.a.commonStore,S,O,{initialState:b,actions:j,controls:N,reducer:M,resolvers:D,selectors:I});return R(R({},T),{},{STORE_NAME:p})};function I(e,t){return function(){var r=a()(o.a.mark((function r(n){var a,i,c,u;return o.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(a=n.select,i=n.dispatch,!a(t).haveSettingsChanged()){r.next=8;break}return r.next=4,i(t).saveSettings();case 4:if(c=r.sent,!(u=c.error)){r.next=8;break}return r.abrupt("return",{error:u});case 8:return r.next=10,m.a.invalidateCache("modules",e);case 10:return r.abrupt("return",{});case 11:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}()}function T(e){return function(t){var r=t.select,n=t.dispatch;return r(e).haveSettingsChanged()?n(e).rollbackSettings():{}}}function x(e){return function(t){var r=Object(O.e)(t)(e),n=r.haveSettingsChanged,a=r.isDoingSubmitChanges;l()(!a(),N),l()(n(),M)}}},17:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return a}));var n="core/modules",a="insufficient_module_dependencies"},20:function(e,t,r){"use strict";(function(e){var n=r(18),a=r.n(n),i=r(21),o=r.n(i),c=r(0),u=r.n(c),s=r(11),l=r.n(s),d=r(120),g=r(1),f=r(2),v=Object(f.forwardRef)((function(t,r){var n,i=t["aria-label"],c=t.arrow,u=t.back,s=t.caps,f=t.children,v=t.className,p=t.danger,h=t.disabled,b=t.external,m=t.hideExternalIndicator,S=t.href,y=t.inverse,O=t.onClick,E=t.small,w=t.to,_=o()(t,["aria-label","arrow","back","caps","children","className","danger","disabled","external","hideExternalIndicator","href","inverse","onClick","small","to"]),j=S||w||!O?w?"ROUTER_LINK":b?"EXTERNAL_LINK":"LINK":h?"BUTTON_DISABLED":"BUTTON",R="BUTTON"===j||"BUTTON_DISABLED"===j?"button":"ROUTER_LINK"===j?d.b:"a",k=("EXTERNAL_LINK"===j&&(n=Object(g._x)("(opens in a new tab)","screen reader text","google-site-kit")),"BUTTON_DISABLED"===j&&(n=Object(g._x)("(disabled)","screen reader text","google-site-kit")),n?i?"".concat(i," ").concat(n):"string"==typeof f?"".concat(f," ").concat(n):void 0:i);return e.createElement(R,a()({"aria-label":k,className:l()("googlesitekit-cta-link",v,{"googlesitekit-cta-link--arrow":c,"googlesitekit-cta-link--external":b&&!m,"googlesitekit-cta-link--inverse":y,"googlesitekit-cta-link--back":u,"googlesitekit-cta-link--small":E,"googlesitekit-cta-link--caps":s,"googlesitekit-cta-link--danger":p,"googlesitekit-cta-link--disabled":h}),disabled:h,href:"LINK"!==j&&"EXTERNAL_LINK"!==j||h?void 0:S,onClick:O,rel:"EXTERNAL_LINK"===j?"noopener noreferrer":void 0,ref:r,target:"EXTERNAL_LINK"===j?"_blank":void 0,to:w},_),f)}));v.propTypes={arrow:u.a.bool,back:u.a.bool,caps:u.a.bool,children:u.a.node,className:u.a.string,danger:u.a.bool,disabled:u.a.bool,external:u.a.bool,hideExternalIndicator:u.a.bool,href:u.a.string,inverse:u.a.bool,onClick:u.a.func,small:u.a.bool,to:u.a.string},v.defaultProps={arrow:!1,back:!1,caps:!1,className:"",danger:!1,disabled:!1,external:!1,hideExternalIndicator:!1,href:"",inverse:!1,small:!1},t.a=v}).call(this,r(3))},31:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return a}));var n="_googlesitekitDataLayer",a="data-googlesitekit-gtag"},32:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return S})),r.d(t,"b",(function(){return m}));var n=r(86),a=e._googlesitekitTrackingData||{},i=a.activeModules,o=void 0===i?[]:i,c=a.isSiteKitScreen,u=a.trackingEnabled,s=a.trackingID,l=a.referenceSiteURL,d=a.userIDHash,g=a.isAuthenticated,f={activeModules:o,trackingEnabled:u,trackingID:s,referenceSiteURL:l,userIDHash:d,isSiteKitScreen:c,userRoles:a.userRoles,isAuthenticated:g,pluginVersion:"1.89.0"},v=Object(n.a)(f),p=v.enableTracking,h=v.disableTracking,b=(v.isTrackingEnabled,v.initializeSnippet),m=v.trackEvent;function S(e){e?p():h()}c&&u&&b()}).call(this,r(22))},34:function(e,t){e.exports=googlesitekit.api},36:function(e,t,r){"use strict";r.d(t,"c",(function(){return n})),r.d(t,"e",(function(){return a})),r.d(t,"d",(function(){return i})),r.d(t,"b",(function(){return o})),r.d(t,"a",(function(){return c})),r.d(t,"f",(function(){return u}));var n="Date param must construct to a valid date instance or be a valid date instance itself.",a="Invalid dateString parameter, it must be a string.",i='Invalid date range, it must be a string with the format "last-x-days".',o=3600,c=86400,u=604800},37:function(e,t,r){"use strict";r.d(t,"a",(function(){return n}));var n=function(e){return e instanceof Date&&!isNaN(e)}},373:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return h}));var n=r(5),a=r.n(n),i=r(6),o=r.n(i),c=r(7),u=r.n(c),s=r(34),l=r.n(s),d=r(4),g=r.n(d),f=r(41);function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{},c=i.client,s=void 0===c||c,d=i.server,v=void 0===d||d,h=i.storeName,b=void 0===h?void 0:h;u()(t,"type is required."),u()(r,"identifier is required."),u()(n,"datapoint is required.");var m=b||"".concat(t,"/").concat(r),S={serverNotifications:v?void 0:{},clientNotifications:s?void 0:{}},y=Object(f.a)({baseName:"getNotifications",controlCallback:function(){return l.a.get(t,r,n)},reducerCallback:function(e,t){return p(p({},e),{},{serverNotifications:t.reduce((function(e,t){return p(p({},e),{},o()({},t.id,t))}),{})})}}),O={addNotification:function(e){return u()(e,"notification is required."),{payload:{notification:e},type:"ADD_NOTIFICATION"}},removeNotification:function(e){return u()(e,"id is required."),{payload:{id:e},type:"REMOVE_NOTIFICATION"}}},E={},w=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:S,r=arguments.length>1?arguments[1]:void 0,n=r.type,a=r.payload;switch(n){case"ADD_NOTIFICATION":var i=a.notification;return p(p({},t),{},{clientNotifications:p(p({},t.clientNotifications||{}),{},o()({},i.id,i))});case"REMOVE_NOTIFICATION":var c=a.id;if(void 0===t.clientNotifications||void 0===t.clientNotifications[c])return void 0!==t.serverNotifications&&void 0!==t.serverNotifications[c]&&e.console.warn('Cannot remove server-side notification with ID "'.concat(c,'"; this may be changed in a future release.')),t;var u=p({},t.clientNotifications);return delete u[c],p(p({},t),{},{clientNotifications:u});default:return t}},_={getNotifications:a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,y.actions.fetchGetNotifications();case 2:case"end":return e.stop()}}),e)}))};v||delete _.getNotifications;var j={getNotifications:function(e){var t=e.serverNotifications,r=e.clientNotifications;return void 0===t&&void 0===r?t:Object.values(p(p({},t||{}),r||{}))}},R=g.a.combineStores(y,{initialState:S,actions:O,controls:E,reducer:w,resolvers:_,selectors:j});return p(p({},R),{},{STORE_NAME:m})}}).call(this,r(22))},38:function(e,t,r){"use strict";r.d(t,"a",(function(){return s}));var n=r(14),a=r.n(n),i=r(7),o=r.n(i),c=r(36),u=r(43),s=function(e){o()(Object(u.a)(e),c.e);var t=e.split("-"),r=a()(t,3),n=r[0],i=r[1],s=r[2];return new Date(n,i-1,s)}},4:function(e,t){e.exports=googlesitekit.data},41:function(e,t,r){"use strict";r.d(t,"a",(function(){return O}));var n=r(5),a=r.n(n),i=r(6),o=r.n(i),c=r(7),u=r.n(c),s=r(57),l=r.n(s),d=r(53),g=r(80),f=r(8);function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t1?r-1:0),a=1;a1&&void 0!==arguments[1]?arguments[1]:i;return t instanceof Set&&t.has(e)}}).call(this,r(22))},43:function(e,t,r){"use strict";r.d(t,"a",(function(){return a}));var n=r(37),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var r=e.split("-");return 3===r.length&&Object(n.a)(new Date(e))}},451:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return ModuleSettingsWarning}));var n=r(4),a=r.n(n),i=r(17),o=r(11),c=r.n(o),u=r(138),s=a.a.useSelect;function ModuleSettingsWarning(t){var r=t.slug,n=s((function(e){var t;return null===(t=e(i.a))||void 0===t?void 0:t.getCheckRequirementsError(r)}));return n?e.createElement("div",{className:c()("googlesitekit-settings-module-warning","googlesitekit-settings-module-warning--modules-list")},e.createElement(u.a,{height:"20",width:"23"})," ",n.message):null}}).call(this,r(3))},51:function(e,t,r){"use strict";r.d(t,"b",(function(){return a})),r.d(t,"a",(function(){return i})),r.d(t,"d",(function(){return o})),r.d(t,"c",(function(){return c})),r.d(t,"e",(function(){return u}));var n=r(100);function a(e){try{return new URL(e).pathname}catch(e){}return null}function i(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function o(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function u(e,t){if(!Object(n.a)(e))return e;if(e.length<=t)return e;var r=new URL(e),a=e.replace(r.origin,"");if(a.length2&&void 0!==arguments[2]?arguments[2]:{},n=r.clearMatchingLegacyError,a=void 0!==n&&n;return e&&s()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:e,args:t,clearMatchingLegacyError:a}}},clearErrors:function(e){return{type:"CLEAR_ERRORS",payload:{baseName:e}}}};function b(e){s()(e,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var r={getErrorForSelector:function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var i=r.getError(t,n,a);if(i)return v(v({},i),{},{selectorData:{storeName:e,name:n,args:a}})},getErrorForAction:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(t,"actionName is required."),r.getError(e,t,n)},getError:function(e,t,r){var n=e.error,a=e.errors;return t||r?(s()(t,"baseName is required."),a[p(t,r)]):n},getErrors:function(e){var t=new Set(Object.values(e.errors));return void 0!==e.error&&t.add(e.error),Array.from(t)},getMetaDataForError:function(e,t){var r=Object.keys(e.errors).find((function(r){return e.errors[r]===t}));return r?{baseName:r.substring(0,r.indexOf("::")),args:e.errorArgs[r]}:null},getSelectorDataForError:Object(c.e)((function(t){return function(r,n){var a=t(e).getMetaDataForError(n);if(a){var i=a.baseName,o=a.args;if(!!t(e)[i])return{storeName:e,name:i,args:o}}return null}})),hasErrors:function(e){return r.getErrors(e).length>0}};return{initialState:t,actions:h,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"RECEIVE_ERROR":var i=n.baseName,o=n.args,c=n.error;if(i){var u=p(i,o);return v(v({},e),{},{errors:v(v({},e.errors||{}),{},a()({},u,c)),errorArgs:v(v({},e.errorArgs||{}),{},a()({},u,o))})}return v(v({},e),{},{error:c});case"CLEAR_ERROR":var s=n.baseName,l=n.args,d=v({},e);if(s){var g=p(s,l);d.errors=v({},e.errors||{}),d.errorArgs=v({},e.errorArgs||{}),n.clearMatchingLegacyError&&d.error===d.errors[g]&&delete d.error,delete d.errors[g],delete d.errorArgs[g]}else d.error=void 0;return d;case"CLEAR_ERRORS":var f=n.baseName,h=v({},e);if(f)for(var b in h.errors=v({},e.errors||{}),h.errorArgs=v({},e.errorArgs||{}),h.errors)(b===f||b.startsWith("".concat(f,"::")))&&(delete h.errors[b],delete h.errorArgs[b]);else h.errors={},h.errorArgs={},h.error=void 0;return h;default:return e}},resolvers:{},selectors:r}}},62:function(e,t,r){"use strict";(function(e){var n=r(0),a=r.n(n),i=r(11),o=r.n(i);function ChangeArrow(t){var r=t.direction,n=t.invertColor,a=t.width,i=t.height;return e.createElement("svg",{className:o()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(r),{"googlesitekit-change-arrow--inverted-color":n}),width:a,height:i,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:a.a.string,invertColor:a.a.bool,width:a.a.number,height:a.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,r(3))},63:function(e,t,r){"use strict";r.d(t,"a",(function(){return o})),r.d(t,"b",(function(){return c}));var n=r(30),a=r.n(n),i=r(78),o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:i.a.sanitize(e,t)}};function c(e){var t,r="object"===a()(e)?e.toString():e;return null==r||null===(t=r.replace)||void 0===t?void 0:t.call(r,/\/+$/,"")}},651:function(e,t,r){"use strict";r.d(t,"b",(function(){return H})),r.d(t,"a",(function(){return G}));var n=r(7),a=r.n(n),i=r(4),o=r.n(i),c=r(373),u=r(156),s=r(53),l=r(6),d=r.n(l),g=r(250),f=r(15),v=r(12);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function h(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=t.storeName,n=void 0===r?void 0:r,i=t.requiresSetup,o=void 0===i||i;a()(n,"storeName is required.");var c={},u={},s={},l=function(e){return e},d={},p={getAdminScreenURL:b((function(e){return function(t,r){return e(f.c).getAdminURL("googlesitekit-dashboard",r)}})),getAdminReauthURL:b((function(t){return function(r){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=t(v.a).needsReauthentication();if(void 0!==i){var c={};o||!0!==a||(c.notification="authentication_success",c.reAuth=void 0);var u=t(n).getAdminScreenURL(h({slug:e,reAuth:a},c));if(void 0!==u){if(!i)return u;var s=t(v.a).getConnectURL({redirectURL:u});return Object(g.a)(s,{status:a})}}}}))};return{STORE_NAME:n,initialState:c,actions:u,controls:s,reducer:l,resolvers:d,selectors:p}},S=r(5),y=r.n(S),O=r(69);function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=t.storeName,n=t.settingSlugs,i=t.ownedSettingsSlugs,l=void 0===i?void 0:i,d=t.requiresSetup,g=void 0===d||d,f=t.submitChanges,v=t.rollbackChanges,p=t.validateCanSubmitChanges,h=t.validateIsSetupBlocked,b=void 0===h?void 0:h;a()(e,"slug is required."),a()(r,"storeName is required.");var S=Object(c.a)("modules",e,"notifications",{storeName:r}),y=m(e,{storeName:r,requiresSetup:g}),E={};if(g&&b){var w=Object(O.g)(b,{negate:!0}),_=w.safeSelector,j=w.dangerousSelector;E.selectors={isSetupBlocked:_,__dangerousIsSetupBlocked:j}}var R={};if(void 0!==n){var A=Object(u.c)("modules",e,"settings",{ownedSettingsSlugs:l,storeName:r,settingSlugs:n}),C=k({submitChanges:f||Object(u.f)(e,r),rollbackChanges:v||Object(u.e)(r),validateCanSubmitChanges:p||Object(u.d)(r)});R=o.a.combineStores(S,A,C,y,Object(s.b)(r),E)}else R=o.a.combineStores(o.a.commonStore,S,y,E,Object(s.b)(r),k({submitChanges:f,validateCanSubmitChanges:p}));return R.STORE_NAME=r,R}var C=r(17);function N(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function M(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=Object(u.a)(e);return r.setDate(r.getDate()-t),c(r)},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},d=r(43);var g=r(1);function f(){var e=function(e){return Object(g.sprintf)( +/* translators: %s: number of days */ +Object(g._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},69:function(e,t,r){"use strict";r.d(t,"a",(function(){return k})),r.d(t,"b",(function(){return A})),r.d(t,"c",(function(){return C})),r.d(t,"d",(function(){return M})),r.d(t,"e",(function(){return D})),r.d(t,"g",(function(){return T})),r.d(t,"f",(function(){return x}));var n,a=r(5),i=r.n(a),o=r(24),c=r.n(o),u=r(6),s=r.n(u),l=r(7),d=r.n(l),g=r(201),f=r.n(g),v=r(71),p=r.n(v),h=r(66);function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a.reduce((function(e,r){return r(e,t)}),e)}},w=S,_=S,j=S,R=function(e){return e},k=function(){for(var e=arguments.length,t=new Array(e),r=0;r=1?r[a]+1:1,r[a]>1&&t.push(a)}return t},M={actions:A,controls:C,reducer:R},D=function(e){return function(t){return I(e(t))}},I=p()((function(e){return f()(e,(function(e,t){return function(){var r=e.apply(void 0,arguments);return d()(void 0!==r,"".concat(t,"(...) is not resolved")),r}}))}));function T(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.negate,n=void 0!==r&&r,a=Object(h.e)((function(t){return function(r){var a=!n,i=!!n;try{for(var o=arguments.length,c=new Array(o>1?o-1:0),u=1;u1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},r=m(e,t),n=r.formatUnit,a=r.formatDecimal;try{return n()}catch(e){return a()}},m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var r=Math.floor(e/60/60),n=Math.floor(e/60%60),a=Math.floor(e%60);return{hours:r,minutes:n,seconds:a,formatUnit:function(){var i=t.unitDisplay,o=h(h({unitDisplay:void 0===i?"short":i},l()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?w(a,h(h({},o),{},{unit:"second"})):Object(v.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(v._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?w(a,h(h({},o),{},{unit:"second"})):"",n?w(n,h(h({},o),{},{unit:"minute"})):"",r?w(r,h(h({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(v.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(v.__)("%ds","google-site-kit"),a);if(0===e)return t;var i=Object(v.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(v.__)("%dm","google-site-kit"),n),o=Object(v.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(v.__)("%dh","google-site-kit"),r);return Object(v.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(v._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",n?i:"",r?o:"").trim()}}},S=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},y=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(v.sprintf)(// translators: %s: an abbreviated number in millions. +Object(v.__)("%sM","google-site-kit"),w(S(e),e%10==0?{}:t)):1e4<=e?Object(v.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(v.__)("%sK","google-site-kit"),w(S(e))):1e3<=e?Object(v.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(v.__)("%sK","google-site-kit"),w(S(e),e%10==0?{}:t)):w(e,{signDisplay:"never",maximumFractionDigits:1})},O=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(d.isFinite)(e)?e:Number(e),Object(d.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var r={};if("%"===t)r={style:"percent",maximumFractionDigits:2};else{if("s"===t)return b(e,{unitDisplay:"narrow"});t&&"string"==typeof t?r={style:"currency",currency:t}:Object(d.isPlainObject)(t)&&(r=h({},t))}var n=r,a=n.style,i=void 0===a?"metric":a;return"metric"===i?y(e):"duration"===i?b(e,t):w(e,r)},E=f()(console.warn),w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?j():r,i=l()(t,["locale"]);try{return new Intl.NumberFormat(n,i).format(e)}catch(t){E("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(i)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},u=["signDisplay","compactDisplay"],s={},d=0,g=Object.entries(i);d1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?j():r,a=t.style,i=void 0===a?"long":a,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var u=new Intl.ListFormat(n,{style:i,type:c});return u.format(e)} +/* translators: used between list items, there is a space after the comma. */var s=Object(v.__)(", ","google-site-kit");return e.join(s)},j=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,r=Object(d.get)(t,["_googlesitekitLegacyData","locale"]);if(r){var n=r.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,r(22))},771:function(e,t,r){"use strict";(function(e){var n,a=r(14),i=r.n(a),o=r(5),c=r.n(o),u=r(6),s=r.n(u),l=r(71),d=r.n(l),g=r(772),f=r.n(g),v=r(389),p=r.n(v),h=r(57),b=r.n(h),m=r(7),S=r.n(m),y=r(1),O=r(34),E=r.n(O),w=r(4),_=r.n(w),j=r(17),R=r(15),k=r(12),A=r(41),C=r(8),N=r(773),M=r(69),D=c.a.mark(J);function I(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return T(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return T(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.slug,r=e.active;S()(t,"slug is required."),S()(void 0!==r,"active is required.")}}),V=Object(A.a)({baseName:"checkModuleAccess",controlCallback:function(e){var t=e.slug;return E.a.set("core","modules","check-access",{slug:t})},reducerCallback:function(e,t,r){var n=t.access,a=r.slug;return P(P({},e),{},{moduleAccess:P(P({},e.moduleAccess),{},s()({},a,n))})},argsToParams:function(e){return{slug:e}},validateParams:function(e){var t=e.slug;S()(t,"slug is required.")}}),z=Object(A.a)({baseName:"recoverModules",controlCallback:function(e){var t=e.slugs;return E.a.set("core","modules","recover-modules",{slugs:t})},reducerCallback:function(e,t){return P(P({},e),{},{recoveredModules:t})},argsToParams:function(e){return{slugs:e}},validateParams:function(e){var t=e.slugs;S()(t,"slugs is required.")}}),K={clientDefinitions:{},serverDefinitions:void 0,isAwaitingModulesRefresh:!1,checkRequirementsResults:{},moduleAccess:{},recoverableModules:void 0,sharedOwnershipModules:void 0,recoveredModules:void 0},$={activateModule:c.a.mark((function e(t){var r,n,a,i;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,$.setModuleActivation(t,!0);case 2:if(r=e.sent,n=r.response,a=r.error,!0!==(null==n?void 0:n.success)){e.next=10;break}return e.next=8,{payload:{slug:t},type:"SELECT_MODULE_REAUTH_URL"};case 8:return i=e.sent,e.abrupt("return",{response:P(P({},n),{},{moduleReauthURL:i}),error:a});case 10:return e.abrupt("return",{response:n,error:a});case 11:case"end":return e.stop()}}),e)})),deactivateModule:c.a.mark((function e(t){var r,n,a;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,$.setModuleActivation(t,!1);case 2:return r=e.sent,n=r.response,a=r.error,e.abrupt("return",{response:n,error:a});case 6:case"end":return e.stop()}}),e)})),setModuleActivation:Object(M.f)((function(e,t){S()(e,"slug is required."),S()(void 0!==t,"active is required.")}),c.a.mark((function e(t,r){var n,a,i;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,F.actions.fetchSetModuleActivation(t,r);case 2:if(n=e.sent,a=n.response,i=n.error,!0!==(null==a?void 0:a.success)){e.next=8;break}return e.next=8,{payload:{},type:"REFETCH_AUTHENTICATION"};case 8:return e.abrupt("return",{response:a,error:i});case 9:case"end":return e.stop()}}),e)}))),registerModule:Object(M.f)((function(e){S()(e,"module slug is required")}),c.a.mark((function e(t){var r,n,a,i,o,u,s,l,d,g,f,v,p,h,b,m=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=m.length>1&&void 0!==m[1]?m[1]:{},n=r.storeName,a=r.name,i=r.description,o=r.features,u=r.Icon,s=r.order,l=r.homepage,d=r.SettingsEditComponent,g=r.SettingsViewComponent,f=r.SetupComponent,v=r.SettingsSetupIncompleteComponent,p=r.checkRequirements,h={storeName:n,name:a,description:i,features:o,Icon:u,order:s,homepage:l,SettingsEditComponent:d,SettingsViewComponent:g,SetupComponent:f,SettingsSetupIncompleteComponent:v,checkRequirements:p},e.next=4,{payload:{settings:h,slug:t},type:"REGISTER_MODULE"};case 4:return e.next=6,_.a.commonActions.getRegistry();case 6:return b=e.sent,e.next=9,b.dispatch(j.a).invalidateResolution("canActivateModule",[t]);case 9:return e.next=11,b.dispatch(j.a).invalidateResolution("getCheckRequirementsError",[t]);case 11:case"end":return e.stop()}}),e)}))),receiveCheckRequirementsError:function(e,t){return S()(e,"slug is required"),S()(b()(t),"error is required and must be an object"),{payload:{slug:e,error:t},type:"RECEIVE_CHECK_REQUIREMENTS_ERROR"}},receiveCheckRequirementsSuccess:function(e){return S()(e,"slug is required"),{payload:{slug:e},type:"RECEIVE_CHECK_REQUIREMENTS_SUCCESS"}},receiveRecoverableModules:function(e){return S()(e,"recoverableModules is required."),{payload:{recoverableModules:e},type:"RECEIVE_RECOVERABLE_MODULES"}},recoverModules:Object(M.f)((function(e){S()(Array.isArray(e),"slugs must be an array")}),c.a.mark((function e(t){var r,n,a,i,o,u,s,l,d,g,f;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_.a.commonActions.getRegistry();case 2:return r=e.sent,n=r.dispatch,a=r.select,e.next=7,z.actions.fetchRecoverModules(t);case 7:i=e.sent,o=i.response,u=o.success,s=Object.keys(u).filter((function(e){return!!u[e]})),l=I(s),e.prev=12,l.s();case 14:if((d=l.n()).done){e.next=21;break}return g=d.value,f=a(j.a).getModuleStoreName(g),e.next=19,n(f).fetchGetSettings();case 19:e.next=14;break;case 21:e.next=26;break;case 23:e.prev=23,e.t0=e.catch(12),l.e(e.t0);case 26:return e.prev=26,l.f(),e.finish(26);case 29:if(!s.length){e.next=36;break}return e.next=32,B.actions.fetchGetModules();case 32:return e.next=34,n(j.a).invalidateResolution("getRecoverableModules",[]);case 34:return e.next=36,n(k.a).refreshCapabilities();case 36:return e.abrupt("return",{response:o});case 37:case"end":return e.stop()}}),e,null,[[12,23,26,29]])}))),receiveSharedOwnershipModules:function(e){return S()(e,"sharedOwnershipModules is required."),{payload:{sharedOwnershipModules:e},type:"RECEIVE_SHARED_OWNERSHIP_MODULES"}},clearRecoveredModules:function(){return{payload:{},type:"CLEAR_RECOVERED_MODULES"}}},W=(n={},s()(n,"REFETCH_AUTHENTICATION",q((function(e){var t=e.dispatch;return function(){return t(k.a).fetchGetAuthentication()}}))),s()(n,"SELECT_MODULE_REAUTH_URL",q((function(e){var t=e.select;return function(e){var r,n=e.payload.slug,a=t(j.a).getModuleStoreName(n);if(a){var i=null===(r=t(a))||void 0===r?void 0:r.getAdminReauthURL;return i?i():t(R.c).getAdminURL("googlesitekit-dashboard")}}}))),n);function J(){var e,t;return c.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,_.a.commonActions.getRegistry();case 2:return e=r.sent,t=e.__experimentalResolveSelect,r.next=6,_.a.commonActions.await(t(j.a).getModules());case 6:case"end":return r.stop()}}),D)}var X={getModules:c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_.a.commonActions.getRegistry();case 2:if(t=e.sent,t.select(j.a).getModules()){e.next=7;break}return e.next=7,B.actions.fetchGetModules();case 7:case"end":return e.stop()}}),e)})),canActivateModule:c.a.mark((function e(t){var r,n,a,i,o,u,s;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_.a.commonActions.getRegistry();case 2:return r=e.sent,n=r.select,a=r.__experimentalResolveSelect,e.next=6,_.a.commonActions.await(a(j.a).getModule(t));case 6:if(i=e.sent){e.next=9;break}return e.abrupt("return");case 9:if(o=[],i.dependencies.forEach((function(e){var t=n(j.a).getModule(e);(null==t?void 0:t.active)||o.push(t.name)})),!o.length){e.next=18;break} +/* translators: Error message text. 1: A flattened list of module names. 2: A module name. */return u=Object(y.__)("You need to set up %1$s to gain access to %2$s.","google-site-kit"),s=Object(y.sprintf)(u,Object(C.r)(o),i.name),e.next=16,$.receiveCheckRequirementsError(t,{code:j.b,message:s,data:{inactiveModules:o}});case 16:e.next=29;break;case 18:return e.prev=18,e.next=21,_.a.commonActions.await(i.checkRequirements(r));case 21:return e.next=23,$.receiveCheckRequirementsSuccess(t);case 23:e.next=29;break;case 25:return e.prev=25,e.t0=e.catch(18),e.next=29,$.receiveCheckRequirementsError(t,e.t0);case 29:case"end":return e.stop()}}),e,null,[[18,25]])})),hasModuleAccess:c.a.mark((function e(t){var r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_.a.commonActions.getRegistry();case 2:if(r=e.sent,void 0!==r.select(j.a).hasModuleAccess(t)){e.next=7;break}return e.next=7,V.actions.fetchCheckModuleAccess(t);case 7:case"end":return e.stop()}}),e)})),getRecoverableModules:c.a.mark((function e(){var t,r,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_.a.commonActions.getRegistry();case 2:return t=e.sent,e.next=5,_.a.commonActions.await(t.__experimentalResolveSelect(j.a).getModules());case 5:return r=e.sent,n=Object.entries(r||{}).reduce((function(e,t){var r=i()(t,2),n=r[0];return r[1].recoverable&&e.push(n),e}),[]),e.next=9,$.receiveRecoverableModules(n);case 9:case"end":return e.stop()}}),e)})),getSharedOwnershipModules:c.a.mark((function t(){var r;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,_.a.commonActions.getRegistry();case 2:if(!t.sent.select(j.a).getSharedOwnershipModules()){t.next=5;break}return t.abrupt("return");case 5:if(e._googlesitekitDashboardSharingData){t.next=8;break}return e.console.error("Could not load core/modules dashboard sharing."),t.abrupt("return");case 8:return r=e._googlesitekitDashboardSharingData.sharedOwnershipModules,t.next=11,$.receiveSharedOwnershipModules(r);case 11:case"end":return t.stop()}}),t)})),getModule:J,isModuleActive:J,isModuleConnected:J},Y={getModules:function(e){var t=e.clientDefinitions,r=e.serverDefinitions;if(void 0!==r)return H(r,t)},getModule:L((function(e){return function(t,r){var n=e(j.a).getModules();if(void 0!==n)return void 0===n[r]?null:n[r]}})),getModuleIcon:L((function(e){return function(t,r){var n=e(j.a).getModule(r);if(void 0!==n)return null===n||null===n.Icon?null:n.Icon}})),getModuleDependencyNames:L((function(e){return function(t,r){var n=e(j.a).getModule(r);if(void 0!==n){if(null===n)return[];var a=e(j.a).getModules();return n.dependencies.map((function(e){var t;return(null===(t=a[e])||void 0===t?void 0:t.name)||e}))}}})),getModuleDependantNames:L((function(e){return function(t,r){var n=e(j.a).getModule(r);if(void 0!==n){if(null===n)return[];var a=e(j.a).getModules();return n.dependants.map((function(e){var t;return(null===(t=a[e])||void 0===t?void 0:t.name)||e}))}}})),getModuleStoreName:L((function(e){return function(t,r){var n=e(j.a).getModule(r);if(void 0!==n)return null===n?null:n.storeName}})),isModuleAvailable:L((function(e){return function(t,r){var n=e(j.a).getModule(r);if(void 0!==n)return null!==n}})),isModuleActive:L((function(e){return function(t,r){var n=e(j.a).getModule(r);if(void 0!==n)return null===n?null:n.active}})),isModuleConnected:L((function(e){return function(t,r){var n=e(j.a).getModule(r);if(void 0!==n)return null===n?null:n.active&&n.connected}})),isDoingSetModuleActivation:L((function(e){return function(t,r){if(e(j.a).getModule(r))return!!e(j.a).isFetchingSetModuleActivation(r,!0)||(!!e(j.a).isFetchingSetModuleActivation(r,!1)||t.isAwaitingModulesRefresh)}})),canActivateModule:function(e,t){S()(t,"slug is required");var r=e.checkRequirementsResults[t];if(void 0!==r)return!0===r},getCheckRequirementsError:L((function(e){return function(t,r){return S()(r,"slug is required."),e(j.a).canActivateModule(r)?null:t.checkRequirementsResults[r]}})),getModuleFeatures:L((function(e){return function(t,r){var n,a=e(j.a).getModules();if(void 0!==a)return Array.isArray(null===(n=a[r])||void 0===n?void 0:n.features)?a[r].features:[]}})),hasModuleAccess:function(e,t){return e.moduleAccess[t]},getRecoverableModules:L((function(e){return function(t){var r=e(j.a).getModules();if(void 0!==t.recoverableModules&&void 0!==r)return G(r,t.recoverableModules)}})),getSharedOwnershipModules:L((function(e){return function(t){var r=e(j.a).getModules();if(void 0!==t.sharedOwnershipModules&&void 0!==r)return Object.values(r).reduce((function(e,r){return t.sharedOwnershipModules.includes(r.slug)?P(P({},e),{},s()({},r.slug,r)):e}),{})}})),getRecoveredModules:function(e){return e.recoveredModules}},Q=_.a.combineStores(B,F,V,z,{initialState:K,actions:$,controls:W,reducer:function(t,r){var n=r.type,a=r.payload;switch(n){case"REGISTER_MODULE":var i=a.slug,o=a.settings;return t.clientDefinitions[i]?(e.console.warn('Could not register module with slug "'.concat(i,'". Module "').concat(i,'" is already registered.')),t):P(P({},t),{},{clientDefinitions:P(P({},t.clientDefinitions),{},s()({},i,o))});case"RECEIVE_CHECK_REQUIREMENTS_ERROR":var c=a.slug,u=a.error;return P(P({},t),{},{checkRequirementsResults:P(P({},t.checkRequirementsResults),{},s()({},c,u))});case"RECEIVE_CHECK_REQUIREMENTS_SUCCESS":var l=a.slug;return P(P({},t),{},{checkRequirementsResults:P(P({},t.checkRequirementsResults),{},s()({},l,!0))});case"RECEIVE_RECOVERABLE_MODULES":var d=a.recoverableModules;return P(P({},t),{},{recoverableModules:d});case"RECEIVE_SHARED_OWNERSHIP_MODULES":var g=a.sharedOwnershipModules;return P(P({},t),{},{sharedOwnershipModules:g});case"CLEAR_RECOVERED_MODULES":return P(P({},t),{},{recoveredModules:void 0});default:return t}},resolvers:X,selectors:Y});Q.initialState,Q.actions,Q.controls,Q.reducer,Q.resolvers,Q.selectors;t.a=Q}).call(this,r(22))},773:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return DefaultSettingsSetupIncomplete}));var n=r(0),a=r.n(n),i=r(72),o=r(1),c=r(4),u=r.n(c),s=r(20),l=r(451),d=r(98),g=r(17),f=u.a.useSelect;function DefaultSettingsSetupIncomplete(t){var r=t.slug,n=f((function(e){return e(g.a).getModuleStoreName(r)})),a=f((function(e){var t,r;return null===(t=e(n))||void 0===t||null===(r=t.getAdminReauthURL)||void 0===r?void 0:r.call(t)}));return e.createElement(d.a,{size:12},e.createElement(l.a,{slug:r}),Object(i.a)(Object(o.__)("Setup incomplete: continue module setup","google-site-kit"),{a:e.createElement(s.a,{href:a})}))}DefaultSettingsSetupIncomplete.propTypes={slug:a.a.string.isRequired}}).call(this,r(3))},775:function(e,t,r){"use strict";(function(e){var n=r(5),a=r.n(n),i=r(14),o=r.n(i),c=r(776),u=r.n(c),s=r(6),l=r.n(s),d=r(7),g=r.n(d),f=r(134),v=r.n(f),p=r(494),h=r.n(p),b=r(159),m=r.n(b),S=r(34),y=r.n(S),O=r(4),E=r.n(O),w=r(41),_=r(17),j=r(69);function R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.savedSharingSettings;g()(t,"savedSharingSettings is required.")}}),D=Object(w.a)({baseName:"resetSharingSettings",controlCallback:function(e){return u()(e),y.a.set("core","modules","sharing-settings",{},{method:"DELETE"})},reducerCallback:function(e){return k(k({},e),{},{savedSharingSettings:{},sharingSettings:{}})}}),I={setSharingManagement:function(e,t){return g()(e,"moduleSlug is required."),g()(C.includes(t),"management must be one of: ".concat(C.join(", "),".")),{payload:{moduleSlug:e,management:t},type:"SET_SHARING_MANAGEMENT"}},setSharedRoles:function(e,t){return g()(e,"moduleSlug is required."),g()(Array.isArray(t)&&t.every((function(e){return"string"==typeof e})),"roles must be an array of strings."),{payload:{moduleSlug:e,roles:t},type:"SET_SHARED_ROLES"}},saveSharingSettings:a.a.mark((function e(){var t,r,n,i,c,u,s,l,d,g,f;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,E.a.commonActions.getRegistry();case 2:return t=e.sent,e.next=5,{type:"START_SUBMIT_SHARING_CHANGES",payload:{}};case 5:return r=t.select(_.a).getSharingSettings(),e.next=8,M.actions.fetchSaveSharingSettings(r);case 8:if(n=e.sent,i=n.response,!(c=n.error)&&Object.keys(i.newOwnerIDs).length)for(u=0,s=Object.entries(i.newOwnerIDs);u1&&void 0!==arguments[1]?arguments[1]:null,r=e.sharingSettings,n=e.savedSharingSettings;return t?!v()(m()(r,t),m()(n,t)):!v()(r,n)},haveSharingSettingsExpanded:function(e,t){var r=["management","sharedRoles"];g()(r.includes(t),"key must be one of: ".concat(r.join(", "),"."));var n=e.sharingSettings,a=e.savedSharingSettings;if(void 0!==n&&void 0!==a)return"management"===t?Object.keys(n).some((function(e){var t,r,i;return(null===(t=a[e])||void 0===t?void 0:t.management)!==(null===(r=n[e])||void 0===r?void 0:r.management)&&"all_admins"===(null===(i=n[e])||void 0===i?void 0:i.management)})):"sharedRoles"===t&&Object.keys(n).some((function(e){var t,r;return(null===(t=n[e])||void 0===t||null===(r=t.sharedRoles)||void 0===r?void 0:r.filter((function(t){var r,n;return!(null===(r=a[e])||void 0===r||null===(n=r.sharedRoles)||void 0===n?void 0:n.includes(t))})).length)>0}))},haveModuleSharingSettingsChanged:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;g()(t,"moduleSlug is required.");var n=e.sharingSettings,a=e.savedSharingSettings;if(void 0!==n&&void 0!==a)return r?!v()(m()(n[t],r),m()(a[t],r)):!v()(n[t],a[t])},isDoingSubmitSharingChanges:function(e){return!!e.isDoingSubmitSharingChanges},getDefaultSharedOwnershipModuleSettings:function(e){return e.defaultSharedOwnershipModuleSettings},haveSharingSettingsUpdated:function(e){var t=e.savedSharingSettings,r=e.sharedOwnershipModules;return!h()(t)&&!h()(r)&&Object.keys(t).some((function(e){var n=t[e],a=n.sharedRoles,i=n.management,o=r.includes(e)?"all_admins":"owner";return a.length>0||i!==o}))}},L=E.a.combineStores(M,D,{initialState:N,actions:I,selectors:P,reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"SET_SHARING_MANAGEMENT":var a=n.moduleSlug,i=n.management;return k(k({},e),{},{sharingSettings:k(k({},e.sharingSettings),{},l()({},a,k(k({},e.sharingSettings[a]),{},{management:i})))});case"SET_SHARED_ROLES":var o=n.moduleSlug,c=n.roles;return k(k({},e),{},{sharingSettings:k(k({},e.sharingSettings),{},l()({},o,k(k({},e.sharingSettings[o]),{},{sharedRoles:c})))});case"RECEIVE_GET_SHARING_SETTINGS":var u=n.sharingSettings;return k(k({},e),{},{sharingSettings:u,savedSharingSettings:u});case"RECEIVE_SHAREABLE_ROLES":var s=n.shareableRoles;return k(k({},e),{},{shareableRoles:s});case"START_SUBMIT_SHARING_CHANGES":return k(k({},e),{},{isDoingSubmitSharingChanges:!0});case"FINISH_SUBMIT_SHARING_CHANGES":return k(k({},e),{},{isDoingSubmitSharingChanges:!1});case"ROLLBACK_SHARING_SETTINGS":return k(k({},e),{},{sharingSettings:e.savedSharingSettings});case"RECEIVE_DEFAULT_SHARED_OWNERSHIP_MODULE_SETTINGS":var d=n.defaultSharedOwnershipModuleSettings;return k(k({},e),{},{defaultSharedOwnershipModuleSettings:d});default:return e}},resolvers:T}),q=(L.initialState,L.actions);L.selectors,L.reducer;t.a=L}).call(this,r(22))},78:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return a}));var n=r(124),a=r.n(n)()(e)}).call(this,r(22))},8:function(e,t,r){"use strict";r.d(t,"z",(function(){return c.b})),r.d(t,"w",(function(){return u.a})),r.d(t,"A",(function(){return u.b})),r.d(t,"y",(function(){return f})),r.d(t,"f",(function(){return v.a})),r.d(t,"m",(function(){return v.b})),r.d(t,"u",(function(){return p.c})),r.d(t,"v",(function(){return p.d})),r.d(t,"r",(function(){return p.b})),r.d(t,"l",(function(){return p.a})),r.d(t,"s",(function(){return S})),r.d(t,"g",(function(){return y})),r.d(t,"b",(function(){return O.b})),r.d(t,"a",(function(){return O.a})),r.d(t,"c",(function(){return O.e})),r.d(t,"i",(function(){return O.f})),r.d(t,"x",(function(){return O.k})),r.d(t,"j",(function(){return E.b})),r.d(t,"q",(function(){return E.c})),r.d(t,"e",(function(){return E.a})),r.d(t,"o",(function(){return w.b})),r.d(t,"k",(function(){return w.a})),r.d(t,"t",(function(){return w.d})),r.d(t,"p",(function(){return _})),r.d(t,"n",(function(){return j})),r.d(t,"d",(function(){return R})),r.d(t,"B",(function(){return k})),r.d(t,"h",(function(){return A}));var n=r(123),a=r.n(n),i=r(118),o=r.n(i),c=r(32),u=r(63),s=r(30),l=r.n(s),d=r(81),g=r.n(d),f=function(e){return g()(JSON.stringify(function e(t){var r={};return Object.keys(t).sort().forEach((function(n){var a=t[n];a&&"object"===l()(a)&&!Array.isArray(a)&&(a=e(a)),r[n]=a})),r}(e)))};var v=r(83),p=(r(84),r(73));function h(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function b(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function m(e){return e.replace(/\n/gi,"
")}function S(e){for(var t=e,r=0,n=[h,b,m];r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){u=!0,i=e},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:location,r=new URL(t.href);if(e)return r.searchParams&&r.searchParams.get?r.searchParams.get(e):u(e);var n,o={},c=i(r.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var s=a()(n.value,2),l=s[0],d=s[1];o[l]=d}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,r(22))},84:function(e,t,r){"use strict";(function(e){r(44),r(45)}).call(this,r(22))},85:function(e,t,r){"use strict";(function(e){r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return c}));var n=r(169),a=r(62),i=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=r.invertColor,o=void 0!==i&&i;return Object(n.a)(e.createElement(a.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,r,n,a,i,o,c,u,s,l,d,g,f,v,p;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(r=t.data)||void 0===r||null===(n=r.rows)||void 0===n?void 0:n.length)||(null==e||null===(a=e[0])||void 0===a||null===(i=a.data)||void 0===i||null===(o=i.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(u=c.metrics)||void 0===u||null===(s=u[0])||void 0===s||null===(l=s.values)||void 0===l?void 0:l[0])===(null==e||null===(d=e[0])||void 0===d||null===(g=d.data)||void 0===g||null===(f=g.totals)||void 0===f||null===(v=f[0])||void 0===v||null===(p=v.values)||void 0===p?void 0:p[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,r(3))},86:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return l}));var n=r(6),a=r.n(n),i=r(87),o=r(88);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,a=u(u({},s),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(a,r);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(o.a)(a,r,c,n)}}}).call(this,r(22))},87:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return i}));var n=r(52),a=r(31);function i(t,r){var i,o=Object(n.a)(r);return function(){var r=e.document;if(void 0===i&&(i=!!r.querySelector("script[".concat(a.b,"]"))),!i){var n=r.createElement("script");n.setAttribute(a.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),r.head.appendChild(n),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,r(22))},88:function(e,t,r){"use strict";r.d(t,"a",(function(){return f}));var n=r(5),a=r.n(n),i=r(6),o=r.n(i),c=r(16),u=r.n(c),s=r(52),l=r(42);function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var t=1;t1){if(!n)return;return t.reduce((function(e,t){return t._id===n?n:e}),void 0)}return t[0]._id}},A=function(e){var t=e.clients,n=e.previousClientID;if(void 0!==t){var a=t.filter((function(e){return"AFC"===e.productCode}));if(a.length){if(a.length>1&&n){var r=a.reduce((function(e,t){return t._id===n?n:e}),"");if(r)return r}return a[0]._id}}},O=function(e){return e===r||e===i},k=function(e){return N(e)||I(e)||j(e)},N=function(e){return C(e,"noAdSenseAccount")?d:C(e,"disapprovedAccount")?a:void 0},I=function(e){if(C(e,"accountPendingReview"))return i};function j(e){if((null==e?void 0:e.message)&&"ad client not found."===e.message.toLowerCase())return i}var C=function(e,t){return!(!e||!e.data)&&t===e.data.reason}},105:function(e,t,n){"use strict";(function(e){var a=n(0),r=n.n(a),i=n(11),o=n.n(i),c=n(72),s=n(1),u=n(20),l=n(56);function SourceLink(t){var n=t.name,a=t.href,r=t.className,i=t.external;return Object(l.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",r)},Object(c.a)(Object(s.sprintf)( +/* translators: %s: source link */ +Object(s.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(u.a,{key:"link",href:a,external:i})}))}SourceLink.propTypes={name:r.a.string,href:r.a.string,className:r.a.string,external:r.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},107:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Cell}));var a=n(18),r=n.n(a),i=n(6),o=n.n(i),c=n(21),s=n.n(c),u=n(0),l=n.n(u),d=n(11),m=n.n(d);function Cell(t){var n,a=t.className,i=t.alignTop,c=t.alignMiddle,u=t.alignBottom,l=t.alignRight,d=t.alignLeft,g=t.smAlignRight,f=t.mdAlignRight,p=t.lgAlignRight,y=t.smSize,b=t.smStart,v=t.smOrder,h=t.mdSize,S=t.mdStart,_=t.mdOrder,E=t.lgSize,T=t.lgStart,A=t.lgOrder,O=t.size,k=t.children,N=s()(t,["className","alignTop","alignMiddle","alignBottom","alignRight","alignLeft","smAlignRight","mdAlignRight","lgAlignRight","smSize","smStart","smOrder","mdSize","mdStart","mdOrder","lgSize","lgStart","lgOrder","size","children"]);return e.createElement("div",r()({},N,{className:m()(a,"mdc-layout-grid__cell",(n={"mdc-layout-grid__cell--align-top":i,"mdc-layout-grid__cell--align-middle":c,"mdc-layout-grid__cell--align-bottom":u,"mdc-layout-grid__cell--align-right":l,"mdc-layout-grid__cell--align-left":d,"mdc-layout-grid__cell--align-right-phone":g,"mdc-layout-grid__cell--align-right-tablet":f,"mdc-layout-grid__cell--align-right-desktop":p},o()(n,"mdc-layout-grid__cell--span-".concat(O),12>=O&&O>0),o()(n,"mdc-layout-grid__cell--span-".concat(E,"-desktop"),12>=E&&E>0),o()(n,"mdc-layout-grid__cell--start-".concat(T,"-desktop"),12>=T&&T>0),o()(n,"mdc-layout-grid__cell--order-".concat(A,"-desktop"),12>=A&&A>0),o()(n,"mdc-layout-grid__cell--span-".concat(h,"-tablet"),8>=h&&h>0),o()(n,"mdc-layout-grid__cell--start-".concat(S,"-tablet"),8>=S&&S>0),o()(n,"mdc-layout-grid__cell--order-".concat(_,"-tablet"),8>=_&&_>0),o()(n,"mdc-layout-grid__cell--span-".concat(y,"-phone"),4>=y&&y>0),o()(n,"mdc-layout-grid__cell--start-".concat(b,"-phone"),4>=b&&b>0),o()(n,"mdc-layout-grid__cell--order-".concat(v,"-phone"),4>=v&&v>0),n))}),k)}Cell.propTypes={smSize:l.a.number,smStart:l.a.number,smOrder:l.a.number,mdSize:l.a.number,mdStart:l.a.number,mdOrder:l.a.number,lgSize:l.a.number,lgStart:l.a.number,lgOrder:l.a.number,size:l.a.number,alignTop:l.a.bool,alignMiddle:l.a.bool,alignBottom:l.a.bool,alignRight:l.a.bool,alignLeft:l.a.bool,smAlignRight:l.a.bool,mdAlignRight:l.a.bool,lgAlignRight:l.a.bool,className:l.a.string,children:l.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var a=n(18),r=n.n(a),i=n(21),o=n.n(i),c=n(0),s=n.n(c),u=n(11),l=n.n(u),d=n(2),m=Object(d.forwardRef)((function(t,n){var a=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",r()({ref:n,className:l()("mdc-layout-grid__inner",a)},c),i)}));m.displayName="Row",m.propTypes={className:s.a.string,children:s.a.node},m.defaultProps={className:""},t.a=m}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var a=n(18),r=n.n(a),i=n(21),o=n.n(i),c=n(0),s=n.n(c),u=n(11),l=n.n(u),d=n(2),m=Object(d.forwardRef)((function(t,n){var a=t.alignLeft,i=t.fill,c=t.className,s=t.children,u=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",r()({className:l()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":a,"mdc-layout-grid--collapsed":u,"mdc-layout-grid--fill":i})},d,{ref:n}),s)}));m.displayName="Grid",m.propTypes={alignLeft:s.a.bool,fill:s.a.bool,className:s.a.string,collapsed:s.a.bool,children:s.a.node},m.defaultProps={className:""},t.a=m}).call(this,n(3))},110:function(e,t,n){"use strict";n.d(t,"a",(function(){return a.a})),n.d(t,"b",(function(){return r.a})),n.d(t,"c",(function(){return i.a})),n.d(t,"e",(function(){return o.a})),n.d(t,"d",(function(){return c.a})),n.d(t,"f",(function(){return s.a})),n.d(t,"g",(function(){return u.a})),n.d(t,"k",(function(){return l.a})),n.d(t,"i",(function(){return d.a})),n.d(t,"l",(function(){return m.a})),n.d(t,"m",(function(){return g.a})),n.d(t,"n",(function(){return f.a})),n.d(t,"o",(function(){return p.c})),n.d(t,"h",(function(){return y.a})),n.d(t,"j",(function(){return b.a})),n.d(t,"p",(function(){return ZeroDataMessage}));var a=n(361),r=n(362),i=n(363),o=n(364),c=n(365),s=n(366),u=n(367),l=n(368),d=n(264),m=n(369),g=n(370),f=n(371),p=n(265),y=(n(266),n(372)),b=n(254),v=n(0),h=n.n(v),S=n(1),_=n(4),E=n.n(_),T=n(15),A=E.a.useSelect;function ZeroDataMessage(e){var t=e.skipPrefix,n=A((function(e){return e(T.c).getCurrentEntityURL()}));return t?n?Object(S.__)("Your page hasn’t received any visitors yet","google-site-kit"):Object(S.__)("Your site hasn’t received any visitors yet","google-site-kit"):n?Object(S.__)("No data to display: your page hasn’t received any visitors yet","google-site-kit"):Object(S.__)("No data to display: your site hasn’t received any visitors yet","google-site-kit")}ZeroDataMessage.propTypes={skipPrefix:h.a.bool}},1121:function(e,t,n){"use strict";n.r(t);var a,r=n(4),i=n.n(r),o=n(135),c=n.n(o),s=n(270),u=n.n(s),l=n(5),d=n.n(l),m=n(16),g=n.n(m),f=n(1),p=n(167),y=(n(519),n(523),n(524),n(525),n(526),n(527),n(700)),b=(n(528),n(452),n(516)),v=(n(422),n(529),n(534),n(535),n(531),n(532),n(533),n(530),n(701)),h=(n(536),n(702)),S=n(703),_=(n(537),n(704)),E=n(705),T=n(706),A=n(707),O=n(390),k=n(29),N=n(354),I=n(42),j=n(6),C=n.n(j),w=n(7),D=n.n(w),R=n(156),P=n(230),M=n(69);function Z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function L(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID,n=e.clientID;D()(t,"accountID is required."),D()(n,"clientID is required.")}}),de={getAdUnits:d.a.mark((function e(t,n){var a;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t&&void 0!==n){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,i.a.commonActions.getRegistry();case 4:if(a=e.sent,!a.select(k.f).getAdUnits(t,n)){e.next=8;break}return e.abrupt("return");case 8:return e.next=10,le.actions.fetchGetAdUnits(t,n);case 10:case"end":return e.stop()}}),e)}))},me={getAdUnits:function(e,t,n){if(void 0!==t&&void 0!==n)return e.adunits["".concat(t,"::").concat(n)]}},ge=i.a.combineStores(le,{initialState:{adunits:{}},actions:{},reducer:function(e,t){t.type;return e},resolvers:de,selectors:me}),fe=(ge.initialState,ge.actions,ge.controls,ge.reducer,ge.resolvers,ge.selectors,ge);function pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function ye(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID;D()(t,"accountID is required.")}}),ve={resetAlerts:d.a.mark((function e(){var t,n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.getRegistry();case 2:return t=e.sent,n=t.dispatch,e.next=6,{payload:{},type:"RESET_ALERTS"};case 6:return e.next=8,X.a.clearErrors("getAlerts");case 8:return e.abrupt("return",n(k.f).invalidateResolutionForStoreSelector("getAlerts"));case 9:case"end":return e.stop()}}),e)}))},he={getAlerts:d.a.mark((function e(t){var n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t&&Object(P.b)(t)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,i.a.commonActions.getRegistry();case 4:if(n=e.sent,!n.select(k.f).getAlerts(t)){e.next=8;break}return e.abrupt("return");case 8:return e.next=10,be.actions.fetchGetAlerts(t);case 10:case"end":return e.stop()}}),e)}))},Se={getAlerts:function(e,t){if(void 0!==t)return e.alerts[t]}},_e=i.a.combineStores(be,{initialState:{alerts:{}},actions:ve,reducer:function(e,t){switch(t.type){case"RESET_ALERTS":var n=e.savedSettings||{},a=n.accountStatus,r=n.siteStatus,i=n.accountSetupComplete,o=n.siteSetupComplete;return ye(ye({},e),{},{alerts:Ee.alerts,settings:ye(ye({},e.settings||{}),{},{accountStatus:a,siteStatus:r,accountSetupComplete:i,siteSetupComplete:o})});default:return e}},resolvers:he,selectors:Se}),Ee=_e.initialState,Te=(_e.actions,_e.controls,_e.reducer,_e.resolvers,_e.selectors,_e);function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Oe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID;D()(t,"accountID is required.")}}),Ie={resetClients:d.a.mark((function e(){var t,n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.getRegistry();case 2:return t=e.sent,n=t.dispatch,e.next=6,{payload:{},type:"RESET_CLIENTS"};case 6:return e.next=8,X.a.clearErrors("getClients");case 8:return e.abrupt("return",n(k.f).invalidateResolutionForStoreSelector("getClients"));case 9:case"end":return e.stop()}}),e)}))},je={getClients:d.a.mark((function e(t){var n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t&&Object(P.b)(t)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,i.a.commonActions.getRegistry();case 4:if(n=e.sent,!n.select(k.f).getClients(t)){e.next=8;break}return e.abrupt("return");case 8:return e.next=10,Ne.actions.fetchGetClients(t);case 10:case"end":return e.stop()}}),e)}))},Ce={getClients:function(e,t){if(void 0!==t)return e.clients[t]},getAFCClient:ke((function(e){return function(t,n){if(void 0!==n){var a=e(k.f).getClients(n);if(void 0!==a){var r=a.filter((function(e){return"AFC"===e.productCode}));return r.length?r[0]:null}}}}))},we=i.a.combineStores(Ne,{initialState:{clients:{}},actions:Ie,reducer:function(e,t){switch(t.type){case"RESET_CLIENTS":var n=e.savedSettings||{},a=n.clientID,r=n.accountStatus,i=n.siteStatus,o=n.accountSetupComplete,c=n.siteSetupComplete;return Oe(Oe({},e),{},{clients:De.clients,settings:Oe(Oe({},e.settings||{}),{},{clientID:a,accountStatus:r,siteStatus:i,accountSetupComplete:o,siteSetupComplete:c})});default:return e}},resolvers:je,selectors:Ce}),De=we.initialState,Re=(we.actions,we.controls,we.reducer,we.resolvers,we.selectors,we),Pe=n(57),Me=n.n(Pe),Ze=n(8),Le=n(257),Ge=n(437),xe=n.n(Ge),Ue=["ACTIVE_VIEW_MEASURABILITY","ACTIVE_VIEW_TIME","ACTIVE_VIEW_VIEWABILITY","AD_REQUESTS_COVERAGE","AD_REQUESTS_CTR","AD_REQUESTS_RPM","AD_REQUESTS_SPAM_RATIO","AD_REQUESTS","ADS_PER_IMPRESSION","CLICKS_SPAM_RATIO","CLICKS","COST_PER_CLICK","ESTIMATED_EARNINGS","IMPRESSIONS_CTR","IMPRESSIONS_RPM","IMPRESSIONS_SPAM_RATIO","IMPRESSIONS","INDIVIDUAL_AD_IMPRESSIONS_CTR","INDIVIDUAL_AD_IMPRESSIONS_RPM","INDIVIDUAL_AD_IMPRESSIONS_SPAM_RATIO","INDIVIDUAL_AD_IMPRESSIONS","MATCHED_AD_REQUESTS_CTR","MATCHED_AD_REQUESTS_RPM","MATCHED_AD_REQUESTS_SPAM_RATIO","MATCHED_AD_REQUESTS","METRIC_UNSPECIFIED","PAGE_VIEWS_CTR","PAGE_VIEWS_RPM","PAGE_VIEWS_SPAM_RATIO","PAGE_VIEWS","TOTAL_EARNINGS","TOTAL_IMPRESSIONS","WEBSEARCH_RESULT_PAGES"],Be=["ACCOUNT_NAME","AD_CLIENT_ID","AD_FORMAT_CODE","AD_FORMAT_NAME","AD_PLACEMENT_CODE","AD_PLACEMENT_NAME","AD_UNIT_ID","AD_UNIT_NAME","AD_UNIT_SIZE_CODE","AD_UNIT_SIZE_NAME","BID_TYPE_CODE","BID_TYPE_NAME","BUYER_NETWORK_ID","BUYER_NETWORK_NAME","CONTENT_PLATFORM_CODE","CONTENT_PLATFORM_NAME","COUNTRY_CODE","COUNTRY_NAME","CREATIVE_SIZE_CODE","CREATIVE_SIZE_NAME","CUSTOM_CHANNEL_ID","CUSTOM_CHANNEL_NAME","CUSTOM_SEARCH_STYLE_ID","CUSTOM_SEARCH_STYLE_NAME","DATE","DIMENSION_UNSPECIFIED","DOMAIN_CODE","DOMAIN_NAME","DOMAIN_REGISTRANT","MONTH","OWNED_SITE_DOMAIN_NAME","OWNED_SITE_ID","PLATFORM_TYPE_CODE","PLATFORM_TYPE_NAME","PRODUCT_CODE","PRODUCT_NAME","REQUESTED_AD_TYPE_CODE","REQUESTED_AD_TYPE_NAME","SERVED_AD_TYPE_CODE","SERVED_AD_TYPE_NAME","TARGETING_TYPE_CODE","TARGETING_TYPE_NAME","URL_CHANNEL_ID","URL_CHANNEL_NAME","WEBSEARCH_QUERY_STRING","WEEK"];function Fe(e){var t=xe()(e);D()(t.length,"at least one metric is required.");var n=t.filter((function(e){return!Ue.includes(e)}));D()(0===n.length,"invalid AdSense metrics requested: ".concat(n.toString()))}function We(e){var t=xe()(e);D()(t.length,"at least one dimension is required.");var n=t.filter((function(e){return!Be.includes(e)}));D()(0===n.length,"invalid AdSense dimensions requested: ".concat(n.toString()))}function ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function qe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.options;D()(Me()(t),"options must be an object."),D()("today"===t.dateRange||Object(Le.a)(t),"Either date range or start/end dates must be provided for AdSense report.");var n=t.orderby,a=t.metrics,r=t.dimensions;D()(Object(Le.d)(a),"Metrics for an AdSense report must be either a string or an array of strings."),Fe(a),r&&(D()(Object(Le.d)(r),"Dimensions for an AdSense report must be either a string or an array of strings."),We(r)),n&&D()(Object(Le.b)(n),'Orders for an AdSense report must be either an object or an array of objects where each object should have "fieldName" and "sortOrder" properties.')}}),He={getReport:d.a.mark((function e(){var t,n,a=arguments;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.length>0&&void 0!==a[0]?a[0]:{},e.next=3,i.a.commonActions.getRegistry();case 3:if(n=e.sent,!n.select(k.f).getReport(t)){e.next=7;break}return e.abrupt("return");case 7:return e.next=9,Ve.actions.fetchGetReport(t);case 9:case"end":return e.stop()}}),e)}))},Ke={getReport:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.reports;return n[Object(Ze.y)(t)]}},Ye=i.a.combineStores(Ve,{initialState:{reports:{}},resolvers:He,selectors:Ke}),$e=(Ye.initialState,Ye.actions,Ye.controls,Ye.reducer,Ye.resolvers,Ye.selectors,Ye),Je=n(321),Qe=Object(Je.a)({storeName:k.f,tagMatchers:[/google_ad_client: ?["|'](.*?)["|']/,/<(?:script|amp-auto-ads) [^>]*data-ad-client="([^"]+)"/],isValidTag:P.c});function Xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function et(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID,n=e.clientID;D()(t,"accountID is required."),D()(n,"clientID is required.")}}),nt={resetURLChannels:d.a.mark((function e(){var t,n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.getRegistry();case 2:return t=e.sent,n=t.dispatch,e.next=6,{payload:{},type:"RESET_URLCHANNELS"};case 6:return e.next=8,X.a.clearErrors("getURLChannels");case 8:return e.abrupt("return",n(k.f).invalidateResolutionForStoreSelector("getURLChannels"));case 9:case"end":return e.stop()}}),e)}))},at={getURLChannels:d.a.mark((function e(t,n){var a,r,o;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t&&void 0!==n){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,i.a.commonActions.getRegistry();case 4:if(a=e.sent,!a.select(k.f).getURLChannels(t,n)){e.next=8;break}return e.abrupt("return");case 8:return e.next=10,tt.actions.fetchGetURLChannels(t,n);case 10:if(r=e.sent,!(o=r.error)){e.next=15;break}return e.next=15,X.a.receiveError(o,"getURLChannels",[t,n]);case 15:case"end":return e.stop()}}),e)}))},rt={getURLChannels:function(e,t,n){if(void 0!==t&&void 0!==n)return e.urlchannels["".concat(t,"::").concat(n)]}},it=i.a.combineStores(tt,{initialState:{urlchannels:{}},actions:nt,reducer:function(e,t){switch(t.type){case"RESET_URLCHANNELS":var n=e.savedSettings||{},a=n.siteStatus,r=n.siteSetupComplete;return et(et({},e),{},{urlchannels:ot.urlchannels,settings:et(et({},e.settings||{}),{},{siteStatus:a,siteSetupComplete:r})});default:return e}},resolvers:at,selectors:rt}),ot=it.initialState,ct=(it.actions,it.controls,it.reducer,it.resolvers,it.selectors,it),st=n(795),ut=n(17);function lt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function dt(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},a=n.path,r=n.query,i="https://www.google.com/adsense/new/u/0";if(a){var o="/".concat(a.replace(/^\//,""));i="".concat(i).concat(o)}r&&(i=Object(vt.a)(i,r));var c=e(ht.a).getAccountChooserURL(i);if(void 0!==c)return c}})),getServiceCreateAccountURL:Tt((function(e){return function(){var t=e(St.c).getReferenceSiteURL(),n={source:"site-kit",utm_source:"site-kit",utm_medium:"wordpress_signup"};return void 0!==t&&(n.url=t),Object(vt.a)("https://www.google.com/adsense/signup",n)}})),getServiceAccountURL:Tt((function(e){return function(){var t=e(k.f).getAccountID();if(void 0!==t){var n=Object(I.b)("adsenseSetupV2")?t:"".concat(t,"/home");return e(k.f).getServiceURL({path:n,query:{source:"site-kit"}})}}})),getServiceAccountSiteURL:Tt((function(e){return function(){var t=e(k.f).getAccountID(),n=e(St.c).getReferenceSiteURL();if(void 0!==t&&void 0!==n){var a="".concat(t,"/home"),r={source:"site-kit",url:Object(_t.a)(n)||n};return e(k.f).getServiceURL({path:a,query:r})}}})),getServiceReportURL:Tt((function(e){return function(t,n){var a=e(k.f).getAccountID();if(void 0!==a){var r=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID;D()(t,"accountID is required.")}}),wt={resetSites:d.a.mark((function e(){var t,n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.getRegistry();case 2:return t=e.sent,n=t.dispatch,e.next=6,{payload:{},type:"RESET_SITES"};case 6:return e.next=8,X.a.clearErrors("getSites");case 8:return e.abrupt("return",n(k.f).invalidateResolutionForStoreSelector("getSites"));case 9:case"end":return e.stop()}}),e)}))},Dt={getSites:d.a.mark((function e(t){var n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t&&Object(P.b)(t)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,i.a.commonActions.getRegistry();case 4:if(n=e.sent,!n.select(k.f).getSites(t)){e.next=8;break}return e.abrupt("return");case 8:return e.next=10,Ct.actions.fetchGetSites(t);case 10:case"end":return e.stop()}}),e)}))},Rt={getSites:function(e,t){if(void 0!==t)return e.sites[t]},getSite:jt((function(e){return function(t,n,a){return function(e,t){if(void 0!==e&&void 0!==t){var n=t.toLowerCase(),a=e.findIndex((function(e){return 0<=n.indexOf(e.domain.toLowerCase())}));return-1===a?null:e[a]}}(e(k.f).getSites(n),a)}})),getCurrentSite:jt((function(e){return function(t,n){var a=e(St.c).getReferenceSiteURL(),r=new URL(a);return e(k.f).getSite(n,r.origin)}}))},Pt=i.a.combineStores(Ct,{initialState:{sites:{}},actions:wt,reducer:function(e,t){switch(t.type){case"RESET_SITES":var n=e.savedSettings||{},a=n.siteID,r=n.accountStatus,i=n.siteStatus,o=n.accountSetupComplete,c=n.siteSetupComplete;return kt(kt({},e),{},{sites:Mt.sites,settings:kt(kt({},e.settings||{}),{},{siteID:a,accountStatus:r,siteStatus:i,accountSetupComplete:o,siteSetupComplete:c})});default:return e}},resolvers:Dt,selectors:Rt}),Mt=Pt.initialState,Zt=(Pt.actions,Pt.controls,Pt.reducer,Pt.resolvers,Pt.selectors,Pt),Lt=i.a.combineStores(H,ce,fe,Te,Re,$e,Qe,ct,V,bt,At,Zt);Lt.initialState,Lt.actions,Lt.controls,Lt.reducer,Lt.resolvers,Lt.selectors;i.a.registerStore(k.f,Lt),c.a.registerModule("adsense",{storeName:k.f,SettingsEditComponent:v.a,SettingsViewComponent:S.a,SettingsSetupIncompleteComponent:h.a,SetupComponent:Object(I.b)("adsenseSetupV2")?b.a:y.a,Icon:O.a,features:[Object(f.__)("Intelligent, automatic ad placement","google-site-kit"),Object(f.__)("Revenue from ads placed on your site","google-site-kit"),Object(f.__)("AdSense insights through Site Kit","google-site-kit")],checkRequirements:(Nt=g()(d.a.mark((function e(t){var n;return d.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.__experimentalResolveSelect(k.f).isAdBlockerActive();case 2:if(e.sent){e.next=5;break}return e.abrupt("return");case 5:throw n=t.select(k.f).getAdBlockerWarningMessage(),{code:N.d,message:n,data:null};case 7:case"end":return e.stop()}}),e)}))),function(e){return Nt.apply(this,arguments)})}),(It=u.a).registerWidget("adBlockerWarning",{Component:E.a,width:It.WIDGET_WIDTHS.FULL,priority:1,wrapWidget:!1,modules:["adsense"]},[p.AREA_MAIN_DASHBOARD_MONETIZATION_PRIMARY,N.c]),It.registerWidget("adsenseModuleOverview",{Component:A.a,width:It.WIDGET_WIDTHS.FULL,priority:2,wrapWidget:!1,modules:["adsense"]},[p.AREA_MAIN_DASHBOARD_MONETIZATION_PRIMARY]),It.registerWidget("adsenseConnectCTA",{Component:T.a,width:[It.WIDGET_WIDTHS.FULL],priority:2,wrapWidget:!1,modules:["adsense"]},[p.AREA_MAIN_DASHBOARD_MONETIZATION_PRIMARY]),It.registerWidget("adsenseTopEarningPages",{Component:_.a,width:[It.WIDGET_WIDTHS.HALF,It.WIDGET_WIDTHS.FULL],priority:3,wrapWidget:!1,modules:["adsense","analytics"]},[p.AREA_MAIN_DASHBOARD_MONETIZATION_PRIMARY])},113:function(e,t,n){"use strict";(function(e){var a=n(44),r=n.n(a),i=n(45),o=n.n(i),c=n(96),s=n.n(c),u=n(75),l=n.n(u),d=n(76),m=n.n(d),g=n(48),f=n.n(g),p=n(0),y=n.n(p),b=n(11),v=n.n(b),h=n(2),S=n(1),_=n(62),E=n(105),T=n(65),A=n(8);function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=f()(e);if(t){var r=f()(this).constructor;n=Reflect.construct(a,arguments,r)}else n=a.apply(this,arguments);return m()(this,n)}}var k=function(t){l()(DataBlock,t);var n=O(DataBlock);function DataBlock(e){var t;return r()(this,DataBlock),(t=n.call(this,e)).handleClick=t.handleClick.bind(s()(t)),t.handleKeyPress=t.handleKeyPress.bind(s()(t)),t}return o()(DataBlock,[{key:"handleClick",value:function(){var e=this.props,t=e.stat;(0,e.handleStatSelection)(t)}},{key:"handleKeyPress",value:function(e){e.preventDefault();var t=this.props,n=t.stat,a=t.handleStatSelection;"Enter"!==e.key&&" "!==e.key||a(n)}},{key:"render",value:function(){var t=this.props,n=t.className,a=t.title,r=t.datapoint,i=t.datapointUnit,o=t.change,c=t.changeDataUnit,s=t.context,u=t.period,l=t.selected,d=t.handleStatSelection,m=t.source,g=t.sparkline,f=t.invertChangeColor,p=t.gatheringData,y=t.gatheringDataNoticeStyle,b="button"===s?"button":"",O=g;O&&f&&(O=Object(h.cloneElement)(g,{invertChangeColor:f}));var k=o;c&&(k="%"===c?Object(A.u)(o,{style:"percent",signDisplay:"never",maximumFractionDigits:1}):Object(A.u)(o,c)),u&&(k=Object(S.sprintf)(u,k));var N=void 0===r?r:Object(A.u)(r,i||void 0);return e.createElement("div",{className:v()("googlesitekit-data-block",n,"googlesitekit-data-block--".concat(s),{"googlesitekit-data-block--selected":l,"googlesitekit-data-block--is-gathering-data":p}),tabIndex:"button"!==s||p?"-1":"0",role:d&&b,onClick:p?void 0:d&&this.handleClick,onKeyPress:p?void 0:d&&this.handleKeyPress,"aria-disabled":p||void 0,"aria-label":d&&a,"aria-pressed":d&&l},e.createElement("div",{className:"googlesitekit-data-block__title-datapoint-wrapper"},e.createElement("h3",{className:" googlesitekit-subheading-1 googlesitekit-data-block__title "},a),!p&&e.createElement("div",{className:"googlesitekit-data-block__datapoint"},N)),!p&&e.createElement(h.Fragment,null,O&&e.createElement("div",{className:"googlesitekit-data-block__sparkline"},O),e.createElement("div",{className:"googlesitekit-data-block__change-source-wrapper"},e.createElement("div",{className:v()("googlesitekit-data-block__change",{"googlesitekit-data-block__change--no-change":!o})},e.createElement(h.Fragment,null,!!o&&e.createElement("span",{className:"googlesitekit-data-block__arrow"},e.createElement(_.a,{direction:01?Object(m.a)(l):[],b=function(e){return s()("googlesitekit-tooltip-indicator",{active:e===c})};return e.createElement("div",r()({className:s()("googlesitekit-tour-tooltip",f.className)},p),e.createElement(o.a,{className:"googlesitekit-tooltip-card"},e.createElement("div",{className:"googlesitekit-tooltip-body"},e.createElement("h2",{className:"googlesitekit-tooltip-title"},f.title),e.createElement("div",{className:"googlesitekit-tooltip-content"},f.content)),e.createElement(i.CardActions,{className:"googlesitekit-tooltip-actions"},e.createElement("ul",{className:"googlesitekit-tooltip-indicators"},y.map((function(t){return e.createElement("li",{key:"indicator-".concat(t),className:b(t)})}))),e.createElement("div",{className:"googlesitekit-tooltip-buttons"},0!==c&&e.createElement(d.Button,r()({className:"googlesitekit-tooltip-button",text:!0},n),n.title),f.cta,u.title&&e.createElement(d.Button,r()({className:"googlesitekit-tooltip-button",text:!0},u),u.title))),e.createElement(d.Button,r()({className:"googlesitekit-tooltip-close",text:!0,icon:e.createElement(g.a,{width:"14",height:"14"})},a))))}TourTooltip.propTypes={backProps:l.a.object.isRequired,closeProps:l.a.object.isRequired,index:l.a.number.isRequired,isLastStep:l.a.bool.isRequired,primaryProps:l.a.object.isRequired,size:l.a.number.isRequired,step:l.a.shape({content:l.a.node,title:l.a.node.isRequired,cta:l.a.oneOfType([l.a.element,l.a.bool]),className:l.a.string}).isRequired,tooltipProps:l.a.object.isRequired}}).call(this,n(3))},138:function(e,t,n){"use strict";var a=n(2);function r(){return(r=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t||{},r=n.slug,i=void 0===r?"":r,o=n.name,c=void 0===o?"":o,s=n.owner,u=void 0===s?{}:s;if(!i||!c)return e;var l="",d="";return"analytics"===i?e.match(/account/i)?l=Object(a.__)("Your Google account does not have sufficient permissions for this Analytics account, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/property/i)?l=Object(a.__)("Your Google account does not have sufficient permissions for this Analytics property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/view/i)&&(l=Object(a.__)("Your Google account does not have sufficient permissions for this Analytics view, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")):"search-console"===i&&(l=Object(a.__)("Your Google account does not have sufficient permissions for this Search Console property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")),l||(l=Object(a.sprintf)( +/* translators: %s: module name */ +Object(a.__)("Your Google account does not have sufficient permissions to access %s data, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"),c)),u&&u.login&&(d=Object(a.sprintf)( +/* translators: %s: owner name */ +Object(a.__)('This service was originally connected by the administrator "%s" — you can contact them for more information.',"google-site-kit"),u.login)),d||(d=Object(a.__)("This service was originally connected by an administrator — you can contact them for more information.","google-site-kit")),"".concat(l," ").concat(d)}},145:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(7),r=n.n(a),i=function(e,t){var n=t.dateRangeLength;r()(Array.isArray(e),"report must be an array to partition."),r()(Number.isInteger(n)&&n>0,"dateRangeLength must be a positive integer.");var a=-1*n;return{currentRange:e.slice(a),compareRange:e.slice(2*a,a)}}},146:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return RecoverableModules}));var a=n(0),r=n.n(a),i=n(1),o=n(4),c=n.n(o),s=n(17),u=n(119),l=c.a.useSelect;function RecoverableModules(t){var n=t.moduleSlugs,a=l((function(e){var t=e(s.a).getModules();if(void 0!==t)return n.map((function(e){return t[e].name}))}));if(void 0===a)return null;var r=1===a.length?Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s data was previously shared by an admin who no longer has access. Please contact another admin to restore it.","google-site-kit"),a[0]):Object(i.sprintf)( +/* translators: %s: List of module names */ +Object(i.__)("The data for the following modules was previously shared by an admin who no longer has access: %s. Please contact another admin to restore it.","google-site-kit"),a.join(Object(i._x)(", ","Recoverable modules","google-site-kit")));return e.createElement(u.a,{title:Object(i.__)("Data Unavailable","google-site-kit"),description:r})}RecoverableModules.propTypes={moduleSlugs:r.a.arrayOf(r.a.string).isRequired}}).call(this,n(3))},15:function(e,t,n){"use strict";n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var a="core/site",r="primary",i="secondary"},151:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportZero}));var a=n(0),r=n.n(a),i=n(1),o=n(4),c=n.n(o),s=n(17),u=n(119),l=c.a.useSelect;function ReportZero(t){var n=t.moduleSlug,a=l((function(e){return e(s.a).getModule(n)}));return e.createElement(u.a,{title:Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s Gathering Data","google-site-kit"),null==a?void 0:a.name),description:Object(i.sprintf)( +/* translators: %s: Module name */ +Object(i.__)("%s data is not yet available, please check back later","google-site-kit"),null==a?void 0:a.name)})}ReportZero.propTypes={moduleSlug:r.a.string.isRequired}}).call(this,n(3))},153:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a=function(e){return new Array(null!=e?e:0).fill().map((function(e,t){return t}))}},154:function(e,t,n){"use strict";var a=n(2);function r(){return(r=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{},r=a.ownedSettingsSlugs,i=void 0===r?void 0:r,c=a.storeName,u=void 0===c?void 0:c,d=a.settingSlugs,g=void 0===d?[]:d;l()(e,"type is required."),l()(t,"identifier is required."),l()(n,"datapoint is required.");var p=u||"".concat(e,"/").concat(t),b={ownedSettingsSlugs:i,settings:void 0,savedSettings:void 0},h=Object(T.a)({baseName:"getSettings",controlCallback:function(){return v.a.get(e,t,n,{},{useCache:!1})},reducerCallback:function(e,t){return k(k({},e),{},{savedSettings:k({},t),settings:k(k({},t),e.settings||{})})}}),_=Object(T.a)({baseName:"saveSettings",controlCallback:function(a){var r=a.values;return v.a.set(e,t,n,r)},reducerCallback:function(e,t){return k(k({},e),{},{savedSettings:k({},t),settings:k({},t)})},argsToParams:function(e){return{values:e}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.values;l()(m()(t),"values is required.")}}),A={},O={setSettings:function(e){return l()(m()(e),"values is required."),{payload:{values:e},type:"SET_SETTINGS"}},rollbackSettings:function(){return{payload:{},type:"ROLLBACK_SETTINGS"}},saveSettings:o.a.mark((function e(){var t,n,a,r,i;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,S.a.commonActions.getRegistry();case 2:return t=e.sent,e.next=5,I("saveSettings",[]);case 5:return n=t.select(p).getSettings(),e.next=8,_.actions.fetchSaveSettings(n);case 8:if(a=e.sent,r=a.response,!(i=a.error)){e.next=14;break}return e.next=14,j(i,"saveSettings",[]);case 14:return e.abrupt("return",{response:r,error:i});case 15:case"end":return e.stop()}}),e)}))},C={},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b,t=arguments.length>1?arguments[1]:void 0,n=t.type,a=t.payload;switch(n){case"SET_SETTINGS":var r=a.values;return k(k({},e),{},{settings:k(k({},e.settings||{}),r)});case"ROLLBACK_SETTINGS":return k(k({},e),{},{settings:e.savedSettings});default:return void 0!==A[n]?A[n](e,{type:n,payload:a}):e}},D={getSettings:o.a.mark((function e(){var t;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,S.a.commonActions.getRegistry();case 2:if(t=e.sent,t.select(p).getSettings()){e.next=7;break}return e.next=7,h.actions.fetchGetSettings();case 7:case"end":return e.stop()}}),e)}))},R={getSettings:function(e){return e.settings},haveSettingsChanged:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=e.settings,a=e.savedSettings;return t?!f()(y()(n,t),y()(a,t)):!f()(n,a)},hasSettingChanged:function(e,t){l()(t,"setting is required.");var n=e.settings,a=e.savedSettings;return!(!n||!a)&&!f()(n[t],a[t])},isDoingSaveSettings:function(e){return Object.values(e.isFetchingSaveSettings).some(Boolean)},getOwnedSettingsSlugs:function(e){return e.ownedSettingsSlugs},haveOwnedSettingsChanged:N((function(e){return function(){var t=e(p).getOwnedSettingsSlugs();return e(p).haveSettingsChanged(t)}}))};g.forEach((function(e){var t=Object(E.b)(e),n=Object(E.a)(e);O["set".concat(t)]=function(e){return l()(void 0!==e,"value is required for calls to set".concat(t,"().")),{payload:{value:e},type:"SET_".concat(n)}},A["SET_".concat(n)]=function(t,n){var a=n.payload.value;return k(k({},t),{},{settings:k(k({},t.settings||{}),{},s()({},e,a))})},R["get".concat(t)]=N((function(t){return function(){return(t(p).getSettings()||{})[e]}}))}));var P=S.a.combineStores(S.a.commonStore,h,_,{initialState:b,actions:O,controls:C,reducer:w,resolvers:D,selectors:R});return k(k({},P),{},{STORE_NAME:p})};function R(e,t){return function(){var n=r()(o.a.mark((function n(a){var r,i,c,s;return o.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=a.select,i=a.dispatch,!r(t).haveSettingsChanged()){n.next=8;break}return n.next=4,i(t).saveSettings();case 4:if(c=n.sent,!(s=c.error)){n.next=8;break}return n.abrupt("return",{error:s});case 8:return n.next=10,v.a.invalidateCache("modules",e);case 10:return n.abrupt("return",{});case 11:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}()}function P(e){return function(t){var n=t.select,a=t.dispatch;return n(e).haveSettingsChanged()?a(e).rollbackSettings():{}}}function M(e){return function(t){var n=Object(_.e)(t)(e),a=n.haveSettingsChanged,r=n.isDoingSubmitChanges;l()(!r(),C),l()(a(),w)}}},157:function(e,t,n){"use strict";var a=n(0),r=n.n(a),i=function DisplaySetting(e){return e.value||" "};i.propTypes={value:r.a.oneOfType([r.a.string,r.a.bool,r.a.number])},t.a=i},158:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SettingsNotice}));var a=n(11),r=n.n(a),i=n(0),o=n.n(i),c=n(245),s=n(246),u=n(95);function SettingsNotice(t){var n=t.children,a=t.type,i=t.Icon,o=void 0===i?Object(u.d)(a):i,l=n?s.a:c.a;return e.createElement("div",{className:r()("googlesitekit-settings-notice","googlesitekit-settings-notice--".concat(a),{"googlesitekit-settings-notice--single-row":!n,"googlesitekit-settings-notice--multi-row":n})},e.createElement("div",{className:"googlesitekit-settings-notice__icon"},e.createElement(o,{width:"20",height:"20"})),e.createElement("div",{className:"googlesitekit-settings-notice__body"},e.createElement(l,t)))}SettingsNotice.propTypes={children:o.a.node,notice:o.a.node.isRequired,type:o.a.oneOf([u.a,u.c,u.b]),Icon:o.a.elementType,LearnMore:o.a.elementType},SettingsNotice.defaultProps={type:u.a}}).call(this,n(3))},161:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return c}));var a=n(26),r=[{countryCode:"AF",displayName:"Afghanistan",defaultTimeZoneId:"Asia/Kabul",timeZone:[{timeZoneId:"Asia/Kabul",displayName:"(GMT+04:30) Afghanistan Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"AL",displayName:"Albania",defaultTimeZoneId:"Europe/Tirane",timeZone:[{timeZoneId:"Europe/Tirane",displayName:"(GMT+02:00) Albania Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"DZ",displayName:"Algeria",defaultTimeZoneId:"Africa/Algiers",timeZone:[{timeZoneId:"Africa/Algiers",displayName:"(GMT+01:00) Algeria Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"AS",displayName:"American Samoa",defaultTimeZoneId:"Pacific/Pago_Pago",timeZone:[{timeZoneId:"Pacific/Pago_Pago",displayName:"(GMT-11:00) American Samoa Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"AD",displayName:"Andorra",defaultTimeZoneId:"Europe/Andorra",timeZone:[{timeZoneId:"Europe/Andorra",displayName:"(GMT+02:00) Andorra Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"AQ",displayName:"Antarctica",defaultTimeZoneId:"Antarctica/Palmer",timeZone:[{timeZoneId:"Antarctica/Palmer",displayName:"(GMT-03:00) Palmer Time"},{timeZoneId:"Antarctica/Rothera",displayName:"(GMT-03:00) Rothera Time"},{timeZoneId:"Antarctica/Syowa",displayName:"(GMT+03:00) Syowa Time"},{timeZoneId:"Antarctica/Mawson",displayName:"(GMT+05:00) Mawson Time"},{timeZoneId:"Antarctica/Vostok",displayName:"(GMT+06:00) Vostok Time"},{timeZoneId:"Antarctica/Davis",displayName:"(GMT+07:00) Davis Time"},{timeZoneId:"Antarctica/Casey",displayName:"(GMT+08:00) Casey Time"},{timeZoneId:"Antarctica/DumontDUrville",displayName:"(GMT+10:00) Dumont d’Urville Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"AR",displayName:"Argentina",defaultTimeZoneId:"America/Buenos_Aires",timeZone:[{timeZoneId:"America/Buenos_Aires",displayName:"(GMT-03:00) Buenos Aires Time"},{timeZoneId:"America/Cordoba",displayName:"(GMT-03:00) Cordoba Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"AM",displayName:"Armenia",defaultTimeZoneId:"Asia/Yerevan",timeZone:[{timeZoneId:"Asia/Yerevan",displayName:"(GMT+04:00) Armenia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"AU",displayName:"Australia",defaultTimeZoneId:"Australia/Perth",timeZone:[{timeZoneId:"Australia/Perth",displayName:"(GMT+08:00) Perth Time"},{timeZoneId:"Australia/Adelaide",displayName:"(GMT+09:30) Adelaide Time"},{timeZoneId:"Australia/Darwin",displayName:"(GMT+09:30) Darwin Time"},{timeZoneId:"Australia/Brisbane",displayName:"(GMT+10:00) Brisbane Time"},{timeZoneId:"Australia/Hobart",displayName:"(GMT+10:00) Hobart Time"},{timeZoneId:"Australia/Melbourne",displayName:"(GMT+10:00) Melbourne Time"},{timeZoneId:"Australia/Sydney",displayName:"(GMT+10:00) Sydney Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"AT",displayName:"Austria",defaultTimeZoneId:"Europe/Vienna",timeZone:[{timeZoneId:"Europe/Vienna",displayName:"(GMT+02:00) Austria Time"}],tosLocale:{language:"de",country:"DE"}},{countryCode:"AZ",displayName:"Azerbaijan",defaultTimeZoneId:"Asia/Baku",timeZone:[{timeZoneId:"Asia/Baku",displayName:"(GMT+04:00) Azerbaijan Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"BS",displayName:"Bahamas",defaultTimeZoneId:"America/Nassau",timeZone:[{timeZoneId:"America/Nassau",displayName:"(GMT-04:00) Bahamas Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"BD",displayName:"Bangladesh",defaultTimeZoneId:"Asia/Dhaka",timeZone:[{timeZoneId:"Asia/Dhaka",displayName:"(GMT+06:00) Bangladesh Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"BB",displayName:"Barbados",defaultTimeZoneId:"America/Barbados",timeZone:[{timeZoneId:"America/Barbados",displayName:"(GMT-04:00) Barbados Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"BY",displayName:"Belarus",defaultTimeZoneId:"Europe/Minsk",timeZone:[{timeZoneId:"Europe/Minsk",displayName:"(GMT+03:00) Belarus Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"BE",displayName:"Belgium",defaultTimeZoneId:"Europe/Brussels",timeZone:[{timeZoneId:"Europe/Brussels",displayName:"(GMT+02:00) Belgium Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"BZ",displayName:"Belize",defaultTimeZoneId:"America/Belize",timeZone:[{timeZoneId:"America/Belize",displayName:"(GMT-06:00) Belize Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"BM",displayName:"Bermuda",defaultTimeZoneId:"Atlantic/Bermuda",timeZone:[{timeZoneId:"Atlantic/Bermuda",displayName:"(GMT-03:00) Bermuda Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"BT",displayName:"Bhutan",defaultTimeZoneId:"Asia/Thimphu",timeZone:[{timeZoneId:"Asia/Thimphu",displayName:"(GMT+06:00) Bhutan Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"BO",displayName:"Bolivia",defaultTimeZoneId:"America/La_Paz",timeZone:[{timeZoneId:"America/La_Paz",displayName:"(GMT-04:00) Bolivia Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"BA",displayName:"Bosnia & Herzegovina",defaultTimeZoneId:"Europe/Sarajevo",timeZone:[{timeZoneId:"Europe/Sarajevo",displayName:"(GMT+02:00) Bosnia & Herzegovina Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"BR",displayName:"Brazil",defaultTimeZoneId:"America/Rio_Branco",timeZone:[{timeZoneId:"America/Rio_Branco",displayName:"(GMT-05:00) Rio Branco Time"},{timeZoneId:"America/Boa_Vista",displayName:"(GMT-04:00) Boa Vista Time"},{timeZoneId:"America/Campo_Grande",displayName:"(GMT-04:00) Campo Grande Time"},{timeZoneId:"America/Cuiaba",displayName:"(GMT-04:00) Cuiaba Time"},{timeZoneId:"America/Manaus",displayName:"(GMT-04:00) Manaus Time"},{timeZoneId:"America/Porto_Velho",displayName:"(GMT-04:00) Porto Velho Time"},{timeZoneId:"America/Araguaina",displayName:"(GMT-03:00) Araguaina Time"},{timeZoneId:"America/Bahia",displayName:"(GMT-03:00) Bahia Time"},{timeZoneId:"America/Belem",displayName:"(GMT-03:00) Belem Time"},{timeZoneId:"America/Fortaleza",displayName:"(GMT-03:00) Fortaleza Time"},{timeZoneId:"America/Maceio",displayName:"(GMT-03:00) Maceio Time"},{timeZoneId:"America/Recife",displayName:"(GMT-03:00) Recife Time"},{timeZoneId:"America/Sao_Paulo",displayName:"(GMT-03:00) Sao Paulo Time"},{timeZoneId:"America/Noronha",displayName:"(GMT-02:00) Noronha Time"}],tosLocale:{language:"pt",country:"BR"}},{countryCode:"IO",displayName:"British Indian Ocean Territory",defaultTimeZoneId:"Indian/Chagos",timeZone:[{timeZoneId:"Indian/Chagos",displayName:"(GMT+06:00) British Indian Ocean Territory Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"BN",displayName:"Brunei",defaultTimeZoneId:"Asia/Brunei",timeZone:[{timeZoneId:"Asia/Brunei",displayName:"(GMT+08:00) Brunei Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"BG",displayName:"Bulgaria",defaultTimeZoneId:"Europe/Sofia",timeZone:[{timeZoneId:"Europe/Sofia",displayName:"(GMT+03:00) Bulgaria Time"}],tosLocale:{language:"bg",country:"BG"}},{countryCode:"CA",displayName:"Canada",defaultTimeZoneId:"America/Dawson",timeZone:[{timeZoneId:"America/Dawson",displayName:"(GMT-07:00) Dawson Time"},{timeZoneId:"America/Vancouver",displayName:"(GMT-07:00) Vancouver Time"},{timeZoneId:"America/Whitehorse",displayName:"(GMT-07:00) Whitehorse Time"},{timeZoneId:"America/Edmonton",displayName:"(GMT-06:00) Edmonton Time"},{timeZoneId:"America/Yellowknife",displayName:"(GMT-06:00) Yellowknife Time"},{timeZoneId:"America/Dawson_Creek",displayName:"(GMT-07:00) Dawson Creek Time"},{timeZoneId:"America/Winnipeg",displayName:"(GMT-05:00) Winnipeg Time"},{timeZoneId:"America/Regina",displayName:"(GMT-06:00) Regina Time"},{timeZoneId:"America/Iqaluit",displayName:"(GMT-04:00) Iqaluit Time"},{timeZoneId:"America/Toronto",displayName:"(GMT-04:00) Toronto Time"},{timeZoneId:"America/Halifax",displayName:"(GMT-03:00) Halifax Time"},{timeZoneId:"America/St_Johns",displayName:"(GMT-02:30) St. John’s Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"CV",displayName:"Cape Verde",defaultTimeZoneId:"Atlantic/Cape_Verde",timeZone:[{timeZoneId:"Atlantic/Cape_Verde",displayName:"(GMT-01:00) Cape Verde Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"TD",displayName:"Chad",defaultTimeZoneId:"Africa/Ndjamena",timeZone:[{timeZoneId:"Africa/Ndjamena",displayName:"(GMT+01:00) Chad Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"CL",displayName:"Chile",defaultTimeZoneId:"Pacific/Easter",timeZone:[{timeZoneId:"Pacific/Easter",displayName:"(GMT-06:00) Easter Time"},{timeZoneId:"America/Santiago",displayName:"(GMT-04:00) Chile Time"},{timeZoneId:"America/Punta_Arenas",displayName:"(GMT-03:00) Punta Arenas Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"CN",displayName:"China",defaultTimeZoneId:"Asia/Shanghai",timeZone:[{timeZoneId:"Asia/Shanghai",displayName:"(GMT+08:00) China Time"}],tosLocale:{language:"zh",country:"CN"}},{countryCode:"CX",displayName:"Christmas Island",defaultTimeZoneId:"Indian/Christmas",timeZone:[{timeZoneId:"Indian/Christmas",displayName:"(GMT+07:00) Christmas Island Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"CC",displayName:"Cocos (Keeling) Islands",defaultTimeZoneId:"Indian/Cocos",timeZone:[{timeZoneId:"Indian/Cocos",displayName:"(GMT+06:30) Cocos (Keeling) Islands Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"CO",displayName:"Colombia",defaultTimeZoneId:"America/Bogota",timeZone:[{timeZoneId:"America/Bogota",displayName:"(GMT-05:00) Colombia Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"CK",displayName:"Cook Islands",defaultTimeZoneId:"Pacific/Rarotonga",timeZone:[{timeZoneId:"Pacific/Rarotonga",displayName:"(GMT-10:00) Cook Islands Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"CR",displayName:"Costa Rica",defaultTimeZoneId:"America/Costa_Rica",timeZone:[{timeZoneId:"America/Costa_Rica",displayName:"(GMT-06:00) Costa Rica Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"CI",displayName:"Côte d’Ivoire",defaultTimeZoneId:"Africa/Abidjan",timeZone:[{timeZoneId:"Africa/Abidjan",displayName:"(GMT+00:00) Côte d’Ivoire Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"HR",displayName:"Croatia",defaultTimeZoneId:"Europe/Zagreb",timeZone:[{timeZoneId:"Europe/Zagreb",displayName:"(GMT+02:00) Croatia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"CU",displayName:"Cuba",defaultTimeZoneId:"America/Havana",timeZone:[{timeZoneId:"America/Havana",displayName:"(GMT-04:00) Cuba Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"CW",displayName:"Curaçao",defaultTimeZoneId:"America/Curacao",timeZone:[{timeZoneId:"America/Curacao",displayName:"(GMT-04:00) Curaçao Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"CY",displayName:"Cyprus",defaultTimeZoneId:"Asia/Nicosia",timeZone:[{timeZoneId:"Asia/Nicosia",displayName:"(GMT+03:00) Nicosia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"CZ",displayName:"Czechia",defaultTimeZoneId:"Europe/Prague",timeZone:[{timeZoneId:"Europe/Prague",displayName:"(GMT+02:00) Czechia Time"}],tosLocale:{language:"cs",country:"CZ"}},{countryCode:"DK",displayName:"Denmark",defaultTimeZoneId:"Europe/Copenhagen",timeZone:[{timeZoneId:"Europe/Copenhagen",displayName:"(GMT+02:00) Denmark Time"}],tosLocale:{language:"da",country:"DK"}},{countryCode:"DO",displayName:"Dominican Republic",defaultTimeZoneId:"America/Santo_Domingo",timeZone:[{timeZoneId:"America/Santo_Domingo",displayName:"(GMT-04:00) Dominican Republic Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"EC",displayName:"Ecuador",defaultTimeZoneId:"Pacific/Galapagos",timeZone:[{timeZoneId:"Pacific/Galapagos",displayName:"(GMT-06:00) Galapagos Time"},{timeZoneId:"America/Guayaquil",displayName:"(GMT-05:00) Ecuador Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"EG",displayName:"Egypt",defaultTimeZoneId:"Africa/Cairo",timeZone:[{timeZoneId:"Africa/Cairo",displayName:"(GMT+02:00) Egypt Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SV",displayName:"El Salvador",defaultTimeZoneId:"America/El_Salvador",timeZone:[{timeZoneId:"America/El_Salvador",displayName:"(GMT-06:00) El Salvador Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"EE",displayName:"Estonia",defaultTimeZoneId:"Europe/Tallinn",timeZone:[{timeZoneId:"Europe/Tallinn",displayName:"(GMT+03:00) Estonia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"FK",displayName:"Falkland Islands (Islas Malvinas)",defaultTimeZoneId:"Atlantic/Stanley",timeZone:[{timeZoneId:"Atlantic/Stanley",displayName:"(GMT-03:00) Falkland Islands (Islas Malvinas) Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"FO",displayName:"Faroe Islands",defaultTimeZoneId:"Atlantic/Faeroe",timeZone:[{timeZoneId:"Atlantic/Faeroe",displayName:"(GMT+01:00) Faroe Islands Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"FJ",displayName:"Fiji",defaultTimeZoneId:"Pacific/Fiji",timeZone:[{timeZoneId:"Pacific/Fiji",displayName:"(GMT+12:00) Fiji Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"FI",displayName:"Finland",defaultTimeZoneId:"Europe/Helsinki",timeZone:[{timeZoneId:"Europe/Helsinki",displayName:"(GMT+03:00) Finland Time"}],tosLocale:{language:"fi",country:"FI"}},{countryCode:"FR",displayName:"France",defaultTimeZoneId:"Europe/Paris",timeZone:[{timeZoneId:"Europe/Paris",displayName:"(GMT+02:00) France Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"GF",displayName:"French Guiana",defaultTimeZoneId:"America/Cayenne",timeZone:[{timeZoneId:"America/Cayenne",displayName:"(GMT-03:00) French Guiana Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"PF",displayName:"French Polynesia",defaultTimeZoneId:"Pacific/Tahiti",timeZone:[{timeZoneId:"Pacific/Tahiti",displayName:"(GMT-10:00) Tahiti Time"},{timeZoneId:"Pacific/Marquesas",displayName:"(GMT-09:30) Marquesas Time"},{timeZoneId:"Pacific/Gambier",displayName:"(GMT-09:00) Gambier Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"TF",displayName:"French Southern Territories",defaultTimeZoneId:"Indian/Kerguelen",timeZone:[{timeZoneId:"Indian/Kerguelen",displayName:"(GMT+05:00) French Southern Territories Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"GE",displayName:"Georgia",defaultTimeZoneId:"Asia/Tbilisi",timeZone:[{timeZoneId:"Asia/Tbilisi",displayName:"(GMT+04:00) Georgia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"DE",displayName:"Germany",defaultTimeZoneId:"Europe/Berlin",timeZone:[{timeZoneId:"Europe/Berlin",displayName:"(GMT+02:00) Germany Time"}],tosLocale:{language:"de",country:"DE"}},{countryCode:"GH",displayName:"Ghana",defaultTimeZoneId:"Africa/Accra",timeZone:[{timeZoneId:"Africa/Accra",displayName:"(GMT+00:00) Ghana Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"GI",displayName:"Gibraltar",defaultTimeZoneId:"Europe/Gibraltar",timeZone:[{timeZoneId:"Europe/Gibraltar",displayName:"(GMT+02:00) Gibraltar Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"GR",displayName:"Greece",defaultTimeZoneId:"Europe/Athens",timeZone:[{timeZoneId:"Europe/Athens",displayName:"(GMT+03:00) Greece Time"}],tosLocale:{language:"el",country:"GR"}},{countryCode:"GL",displayName:"Greenland",defaultTimeZoneId:"America/Thule",timeZone:[{timeZoneId:"America/Thule",displayName:"(GMT-03:00) Thule Time"},{timeZoneId:"America/Godthab",displayName:"(GMT-02:00) Nuuk Time"},{timeZoneId:"America/Scoresbysund",displayName:"(GMT+00:00) Ittoqqortoormiit Time"},{timeZoneId:"America/Danmarkshavn",displayName:"(GMT+00:00) Danmarkshavn Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"GU",displayName:"Guam",defaultTimeZoneId:"Pacific/Guam",timeZone:[{timeZoneId:"Pacific/Guam",displayName:"(GMT+10:00) Guam Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"GT",displayName:"Guatemala",defaultTimeZoneId:"America/Guatemala",timeZone:[{timeZoneId:"America/Guatemala",displayName:"(GMT-06:00) Guatemala Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"GW",displayName:"Guinea-Bissau",defaultTimeZoneId:"Africa/Bissau",timeZone:[{timeZoneId:"Africa/Bissau",displayName:"(GMT+00:00) Guinea-Bissau Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"GY",displayName:"Guyana",defaultTimeZoneId:"America/Guyana",timeZone:[{timeZoneId:"America/Guyana",displayName:"(GMT-04:00) Guyana Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"HT",displayName:"Haiti",defaultTimeZoneId:"America/Port-au-Prince",timeZone:[{timeZoneId:"America/Port-au-Prince",displayName:"(GMT-04:00) Haiti Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"HN",displayName:"Honduras",defaultTimeZoneId:"America/Tegucigalpa",timeZone:[{timeZoneId:"America/Tegucigalpa",displayName:"(GMT-06:00) Honduras Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"HK",displayName:"Hong Kong",defaultTimeZoneId:"Asia/Hong_Kong",timeZone:[{timeZoneId:"Asia/Hong_Kong",displayName:"(GMT+08:00) Hong Kong Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"HU",displayName:"Hungary",defaultTimeZoneId:"Europe/Budapest",timeZone:[{timeZoneId:"Europe/Budapest",displayName:"(GMT+02:00) Hungary Time"}],tosLocale:{language:"hu",country:"HU"}},{countryCode:"IS",displayName:"Iceland",defaultTimeZoneId:"Atlantic/Reykjavik",timeZone:[{timeZoneId:"Atlantic/Reykjavik",displayName:"(GMT+00:00) Iceland Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"IN",displayName:"India",defaultTimeZoneId:"Asia/Calcutta",timeZone:[{timeZoneId:"Asia/Calcutta",displayName:"(GMT+05:30) India Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"ID",displayName:"Indonesia",defaultTimeZoneId:"Asia/Jakarta",timeZone:[{timeZoneId:"Asia/Jakarta",displayName:"(GMT+07:00) Jakarta Time"},{timeZoneId:"Asia/Makassar",displayName:"(GMT+08:00) Makassar Time"},{timeZoneId:"Asia/Jayapura",displayName:"(GMT+09:00) Jayapura Time"}],tosLocale:{language:"in",country:"ID"}},{countryCode:"IR",displayName:"Iran",defaultTimeZoneId:"Asia/Tehran",timeZone:[{timeZoneId:"Asia/Tehran",displayName:"(GMT+04:30) Iran Time"}]},{countryCode:"IQ",displayName:"Iraq",defaultTimeZoneId:"Asia/Baghdad",timeZone:[{timeZoneId:"Asia/Baghdad",displayName:"(GMT+03:00) Iraq Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"IE",displayName:"Ireland",defaultTimeZoneId:"Europe/Dublin",timeZone:[{timeZoneId:"Europe/Dublin",displayName:"(GMT+01:00) Ireland Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"IL",displayName:"Israel",defaultTimeZoneId:"Asia/Jerusalem",timeZone:[{timeZoneId:"Asia/Jerusalem",displayName:"(GMT+03:00) Israel Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"IT",displayName:"Italy",defaultTimeZoneId:"Europe/Rome",timeZone:[{timeZoneId:"Europe/Rome",displayName:"(GMT+02:00) Italy Time"}],tosLocale:{language:"it",country:"IT"}},{countryCode:"JM",displayName:"Jamaica",defaultTimeZoneId:"America/Jamaica",timeZone:[{timeZoneId:"America/Jamaica",displayName:"(GMT-05:00) Jamaica Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"JP",displayName:"Japan",defaultTimeZoneId:"Asia/Tokyo",timeZone:[{timeZoneId:"Asia/Tokyo",displayName:"(GMT+09:00) Japan Time"}],tosLocale:{language:"ja",country:"JP"}},{countryCode:"JO",displayName:"Jordan",defaultTimeZoneId:"Asia/Amman",timeZone:[{timeZoneId:"Asia/Amman",displayName:"(GMT+03:00) Jordan Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"KZ",displayName:"Kazakhstan",defaultTimeZoneId:"Asia/Aqtau",timeZone:[{timeZoneId:"Asia/Aqtau",displayName:"(GMT+05:00) Aqtau Time"},{timeZoneId:"Asia/Aqtobe",displayName:"(GMT+05:00) Aqtobe Time"},{timeZoneId:"Asia/Almaty",displayName:"(GMT+06:00) Almaty Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"KE",displayName:"Kenya",defaultTimeZoneId:"Africa/Nairobi",timeZone:[{timeZoneId:"Africa/Nairobi",displayName:"(GMT+03:00) Kenya Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"KI",displayName:"Kiribati",defaultTimeZoneId:"Pacific/Tarawa",timeZone:[{timeZoneId:"Pacific/Tarawa",displayName:"(GMT+12:00) Tarawa Time"},{timeZoneId:"Pacific/Enderbury",displayName:"(GMT+13:00) Enderbury Time"},{timeZoneId:"Pacific/Kiritimati",displayName:"(GMT+14:00) Kiritimati Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"KG",displayName:"Kyrgyzstan",defaultTimeZoneId:"Asia/Bishkek",timeZone:[{timeZoneId:"Asia/Bishkek",displayName:"(GMT+06:00) Kyrgyzstan Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"LV",displayName:"Latvia",defaultTimeZoneId:"Europe/Riga",timeZone:[{timeZoneId:"Europe/Riga",displayName:"(GMT+03:00) Latvia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"LB",displayName:"Lebanon",defaultTimeZoneId:"Asia/Beirut",timeZone:[{timeZoneId:"Asia/Beirut",displayName:"(GMT+03:00) Lebanon Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"LR",displayName:"Liberia",defaultTimeZoneId:"Africa/Monrovia",timeZone:[{timeZoneId:"Africa/Monrovia",displayName:"(GMT+00:00) Liberia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"LY",displayName:"Libya",defaultTimeZoneId:"Africa/Tripoli",timeZone:[{timeZoneId:"Africa/Tripoli",displayName:"(GMT+02:00) Libya Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"LT",displayName:"Lithuania",defaultTimeZoneId:"Europe/Vilnius",timeZone:[{timeZoneId:"Europe/Vilnius",displayName:"(GMT+03:00) Lithuania Time"}],tosLocale:{language:"lt",country:"LT"}},{countryCode:"LU",displayName:"Luxembourg",defaultTimeZoneId:"Europe/Luxembourg",timeZone:[{timeZoneId:"Europe/Luxembourg",displayName:"(GMT+02:00) Luxembourg Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"MO",displayName:"Macao",defaultTimeZoneId:"Asia/Macau",timeZone:[{timeZoneId:"Asia/Macau",displayName:"(GMT+08:00) Macao Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"MY",displayName:"Malaysia",defaultTimeZoneId:"Asia/Kuala_Lumpur",timeZone:[{timeZoneId:"Asia/Kuala_Lumpur",displayName:"(GMT+08:00) Malaysia Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"MV",displayName:"Maldives",defaultTimeZoneId:"Indian/Maldives",timeZone:[{timeZoneId:"Indian/Maldives",displayName:"(GMT+05:00) Maldives Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"MT",displayName:"Malta",defaultTimeZoneId:"Europe/Malta",timeZone:[{timeZoneId:"Europe/Malta",displayName:"(GMT+02:00) Malta Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"MH",displayName:"Marshall Islands",defaultTimeZoneId:"Pacific/Kwajalein",timeZone:[{timeZoneId:"Pacific/Kwajalein",displayName:"(GMT+12:00) Kwajalein Time"},{timeZoneId:"Pacific/Majuro",displayName:"(GMT+12:00) Marshall Islands Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"MQ",displayName:"Martinique",defaultTimeZoneId:"America/Martinique",timeZone:[{timeZoneId:"America/Martinique",displayName:"(GMT-04:00) Martinique Time"}],tosLocale:{language:"fr",country:"FR"}},{countryCode:"MU",displayName:"Mauritius",defaultTimeZoneId:"Indian/Mauritius",timeZone:[{timeZoneId:"Indian/Mauritius",displayName:"(GMT+04:00) Mauritius Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"MX",displayName:"Mexico",defaultTimeZoneId:"America/Tijuana",timeZone:[{timeZoneId:"America/Tijuana",displayName:"(GMT-07:00) Tijuana Time"},{timeZoneId:"America/Mazatlan",displayName:"(GMT-06:00) Mazatlan Time"},{timeZoneId:"America/Hermosillo",displayName:"(GMT-07:00) Hermosillo Time"},{timeZoneId:"America/Mexico_City",displayName:"(GMT-05:00) Mexico City Time"},{timeZoneId:"America/Cancun",displayName:"(GMT-05:00) Cancun Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"FM",displayName:"Micronesia",defaultTimeZoneId:"Pacific/Truk",timeZone:[{timeZoneId:"Pacific/Truk",displayName:"(GMT+10:00) Chuuk Time"},{timeZoneId:"Pacific/Kosrae",displayName:"(GMT+11:00) Kosrae Time"},{timeZoneId:"Pacific/Ponape",displayName:"(GMT+11:00) Pohnpei Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"MD",displayName:"Moldova",defaultTimeZoneId:"Europe/Chisinau",timeZone:[{timeZoneId:"Europe/Chisinau",displayName:"(GMT+03:00) Moldova Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"MC",displayName:"Monaco",defaultTimeZoneId:"Europe/Monaco",timeZone:[{timeZoneId:"Europe/Monaco",displayName:"(GMT+02:00) Monaco Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"MN",displayName:"Mongolia",defaultTimeZoneId:"Asia/Hovd",timeZone:[{timeZoneId:"Asia/Hovd",displayName:"(GMT+07:00) Hovd Time"},{timeZoneId:"Asia/Choibalsan",displayName:"(GMT+08:00) Choibalsan Time"},{timeZoneId:"Asia/Ulaanbaatar",displayName:"(GMT+08:00) Ulaanbaatar Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"MA",displayName:"Morocco",defaultTimeZoneId:"Africa/Casablanca",timeZone:[{timeZoneId:"Africa/Casablanca",displayName:"(GMT+01:00) Morocco Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"MZ",displayName:"Mozambique",defaultTimeZoneId:"Africa/Maputo",timeZone:[{timeZoneId:"Africa/Maputo",displayName:"(GMT+02:00) Mozambique Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"MM",displayName:"Myanmar (Burma)",defaultTimeZoneId:"Asia/Rangoon",timeZone:[{timeZoneId:"Asia/Rangoon",displayName:"(GMT+06:30) Myanmar (Burma) Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"NA",displayName:"Namibia",defaultTimeZoneId:"Africa/Windhoek",timeZone:[{timeZoneId:"Africa/Windhoek",displayName:"(GMT+02:00) Namibia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"NR",displayName:"Nauru",defaultTimeZoneId:"Pacific/Nauru",timeZone:[{timeZoneId:"Pacific/Nauru",displayName:"(GMT+12:00) Nauru Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"NP",displayName:"Nepal",defaultTimeZoneId:"Asia/Katmandu",timeZone:[{timeZoneId:"Asia/Katmandu",displayName:"(GMT+05:45) Nepal Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"NL",displayName:"Netherlands",defaultTimeZoneId:"Europe/Amsterdam",timeZone:[{timeZoneId:"Europe/Amsterdam",displayName:"(GMT+02:00) Netherlands Time"}],tosLocale:{language:"nl",country:"NL"}},{countryCode:"NC",displayName:"New Caledonia",defaultTimeZoneId:"Pacific/Noumea",timeZone:[{timeZoneId:"Pacific/Noumea",displayName:"(GMT+11:00) New Caledonia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"NZ",displayName:"New Zealand",defaultTimeZoneId:"Pacific/Auckland",timeZone:[{timeZoneId:"Pacific/Auckland",displayName:"(GMT+12:00) New Zealand Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"NI",displayName:"Nicaragua",defaultTimeZoneId:"America/Managua",timeZone:[{timeZoneId:"America/Managua",displayName:"(GMT-06:00) Nicaragua Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"NG",displayName:"Nigeria",defaultTimeZoneId:"Africa/Lagos",timeZone:[{timeZoneId:"Africa/Lagos",displayName:"(GMT+01:00) Nigeria Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"NU",displayName:"Niue",defaultTimeZoneId:"Pacific/Niue",timeZone:[{timeZoneId:"Pacific/Niue",displayName:"(GMT-11:00) Niue Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"NF",displayName:"Norfolk Island",defaultTimeZoneId:"Pacific/Norfolk",timeZone:[{timeZoneId:"Pacific/Norfolk",displayName:"(GMT+11:00) Norfolk Island Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"KP",displayName:"North Korea",defaultTimeZoneId:"Asia/Pyongyang",timeZone:[{timeZoneId:"Asia/Pyongyang",displayName:"(GMT+09:00) North Korea Time"}]},{countryCode:"MK",displayName:"North Macedonia",defaultTimeZoneId:"Europe/Skopje",timeZone:[{timeZoneId:"Europe/Skopje",displayName:"(GMT+02:00) North Macedonia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"NO",displayName:"Norway",defaultTimeZoneId:"Europe/Oslo",timeZone:[{timeZoneId:"Europe/Oslo",displayName:"(GMT+02:00) Norway Time"}],tosLocale:{language:"no",country:"NO"}},{countryCode:"PK",displayName:"Pakistan",defaultTimeZoneId:"Asia/Karachi",timeZone:[{timeZoneId:"Asia/Karachi",displayName:"(GMT+05:00) Pakistan Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"PW",displayName:"Palau",defaultTimeZoneId:"Pacific/Palau",timeZone:[{timeZoneId:"Pacific/Palau",displayName:"(GMT+09:00) Palau Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"PS",displayName:"Palestine",defaultTimeZoneId:"Asia/Gaza",timeZone:[{timeZoneId:"Asia/Gaza",displayName:"(GMT+03:00) Gaza Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"PA",displayName:"Panama",defaultTimeZoneId:"America/Panama",timeZone:[{timeZoneId:"America/Panama",displayName:"(GMT-05:00) Panama Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"PG",displayName:"Papua New Guinea",defaultTimeZoneId:"Pacific/Port_Moresby",timeZone:[{timeZoneId:"Pacific/Port_Moresby",displayName:"(GMT+10:00) Port Moresby Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"PY",displayName:"Paraguay",defaultTimeZoneId:"America/Asuncion",timeZone:[{timeZoneId:"America/Asuncion",displayName:"(GMT-04:00) Paraguay Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"PE",displayName:"Peru",defaultTimeZoneId:"America/Lima",timeZone:[{timeZoneId:"America/Lima",displayName:"(GMT-05:00) Peru Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"PH",displayName:"Philippines",defaultTimeZoneId:"Asia/Manila",timeZone:[{timeZoneId:"Asia/Manila",displayName:"(GMT+08:00) Philippines Time"}],tosLocale:{language:"tl",country:"PH"}},{countryCode:"PN",displayName:"Pitcairn Islands",defaultTimeZoneId:"Pacific/Pitcairn",timeZone:[{timeZoneId:"Pacific/Pitcairn",displayName:"(GMT-08:00) Pitcairn Islands Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"PL",displayName:"Poland",defaultTimeZoneId:"Europe/Warsaw",timeZone:[{timeZoneId:"Europe/Warsaw",displayName:"(GMT+02:00) Poland Time"}],tosLocale:{language:"pl",country:"PL"}},{countryCode:"PT",displayName:"Portugal",defaultTimeZoneId:"Atlantic/Azores",timeZone:[{timeZoneId:"Atlantic/Azores",displayName:"(GMT+00:00) Azores Time"},{timeZoneId:"Europe/Lisbon",displayName:"(GMT+01:00) Portugal Time"}],tosLocale:{language:"pt",country:"PT"}},{countryCode:"PR",displayName:"Puerto Rico",defaultTimeZoneId:"America/Puerto_Rico",timeZone:[{timeZoneId:"America/Puerto_Rico",displayName:"(GMT-04:00) Puerto Rico Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"QA",displayName:"Qatar",defaultTimeZoneId:"Asia/Qatar",timeZone:[{timeZoneId:"Asia/Qatar",displayName:"(GMT+03:00) Qatar Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"RE",displayName:"Réunion",defaultTimeZoneId:"Indian/Reunion",timeZone:[{timeZoneId:"Indian/Reunion",displayName:"(GMT+04:00) Réunion Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"RO",displayName:"Romania",defaultTimeZoneId:"Europe/Bucharest",timeZone:[{timeZoneId:"Europe/Bucharest",displayName:"(GMT+03:00) Romania Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"RU",displayName:"Russia",defaultTimeZoneId:"Europe/Kaliningrad",timeZone:[{timeZoneId:"Europe/Kaliningrad",displayName:"(GMT+02:00) Kaliningrad Time"},{timeZoneId:"Europe/Moscow",displayName:"(GMT+03:00) Moscow Time"},{timeZoneId:"Europe/Samara",displayName:"(GMT+04:00) Samara Time"},{timeZoneId:"Asia/Yekaterinburg",displayName:"(GMT+05:00) Yekaterinburg Time"},{timeZoneId:"Asia/Omsk",displayName:"(GMT+06:00) Omsk Time"},{timeZoneId:"Asia/Krasnoyarsk",displayName:"(GMT+07:00) Krasnoyarsk Time"},{timeZoneId:"Asia/Irkutsk",displayName:"(GMT+08:00) Irkutsk Time"},{timeZoneId:"Asia/Yakutsk",displayName:"(GMT+09:00) Yakutsk Time"},{timeZoneId:"Asia/Vladivostok",displayName:"(GMT+10:00) Vladivostok Time"},{timeZoneId:"Asia/Magadan",displayName:"(GMT+11:00) Magadan Time"},{timeZoneId:"Asia/Kamchatka",displayName:"(GMT+12:00) Kamchatka Time"}],tosLocale:{language:"ru",country:"RU"}},{countryCode:"WS",displayName:"Samoa",defaultTimeZoneId:"Pacific/Apia",timeZone:[{timeZoneId:"Pacific/Apia",displayName:"(GMT+13:00) Samoa Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"SM",displayName:"San Marino",defaultTimeZoneId:"Europe/San_Marino",timeZone:[{timeZoneId:"Europe/San_Marino",displayName:"(GMT+02:00) San Marino Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"ST",displayName:"São Tomé & Príncipe",defaultTimeZoneId:"Africa/Sao_Tome",timeZone:[{timeZoneId:"Africa/Sao_Tome",displayName:"(GMT+00:00) São Tomé & Príncipe Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SA",displayName:"Saudi Arabia",defaultTimeZoneId:"Asia/Riyadh",timeZone:[{timeZoneId:"Asia/Riyadh",displayName:"(GMT+03:00) Saudi Arabia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"RS",displayName:"Serbia",defaultTimeZoneId:"Europe/Belgrade",timeZone:[{timeZoneId:"Europe/Belgrade",displayName:"(GMT+02:00) Serbia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SC",displayName:"Seychelles",defaultTimeZoneId:"Indian/Mahe",timeZone:[{timeZoneId:"Indian/Mahe",displayName:"(GMT+04:00) Seychelles Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SG",displayName:"Singapore",defaultTimeZoneId:"Asia/Singapore",timeZone:[{timeZoneId:"Asia/Singapore",displayName:"(GMT+08:00) Singapore Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"SK",displayName:"Slovakia",defaultTimeZoneId:"Europe/Bratislava",timeZone:[{timeZoneId:"Europe/Bratislava",displayName:"(GMT+02:00) Slovakia Time"}],tosLocale:{language:"sk",country:"SK"}},{countryCode:"SI",displayName:"Slovenia",defaultTimeZoneId:"Europe/Ljubljana",timeZone:[{timeZoneId:"Europe/Ljubljana",displayName:"(GMT+02:00) Slovenia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SB",displayName:"Solomon Islands",defaultTimeZoneId:"Pacific/Guadalcanal",timeZone:[{timeZoneId:"Pacific/Guadalcanal",displayName:"(GMT+11:00) Solomon Islands Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"ZA",displayName:"South Africa",defaultTimeZoneId:"Africa/Johannesburg",timeZone:[{timeZoneId:"Africa/Johannesburg",displayName:"(GMT+02:00) South Africa Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"GS",displayName:"South Georgia & South Sandwich Islands",defaultTimeZoneId:"Atlantic/South_Georgia",timeZone:[{timeZoneId:"Atlantic/South_Georgia",displayName:"(GMT-02:00) South Georgia & South Sandwich Islands Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"KR",displayName:"South Korea",defaultTimeZoneId:"Asia/Seoul",timeZone:[{timeZoneId:"Asia/Seoul",displayName:"(GMT+09:00) South Korea Time"}],tosLocale:{language:"ko",country:"KR"}},{countryCode:"ES",displayName:"Spain",defaultTimeZoneId:"Atlantic/Canary",timeZone:[{timeZoneId:"Atlantic/Canary",displayName:"(GMT+01:00) Canary Time"},{timeZoneId:"Africa/Ceuta",displayName:"(GMT+02:00) Ceuta Time"},{timeZoneId:"Europe/Madrid",displayName:"(GMT+02:00) Spain Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"LK",displayName:"Sri Lanka",defaultTimeZoneId:"Asia/Colombo",timeZone:[{timeZoneId:"Asia/Colombo",displayName:"(GMT+05:30) Sri Lanka Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"PM",displayName:"St. Pierre & Miquelon",defaultTimeZoneId:"America/Miquelon",timeZone:[{timeZoneId:"America/Miquelon",displayName:"(GMT-02:00) St. Pierre & Miquelon Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SD",displayName:"Sudan",defaultTimeZoneId:"Africa/Khartoum",timeZone:[{timeZoneId:"Africa/Khartoum",displayName:"(GMT+02:00) Sudan Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SR",displayName:"Suriname",defaultTimeZoneId:"America/Paramaribo",timeZone:[{timeZoneId:"America/Paramaribo",displayName:"(GMT-03:00) Suriname Time"}],tosLocale:{language:"nl",country:"NL"}},{countryCode:"SJ",displayName:"Svalbard & Jan Mayen",defaultTimeZoneId:"Arctic/Longyearbyen",timeZone:[{timeZoneId:"Arctic/Longyearbyen",displayName:"(GMT+02:00) Svalbard & Jan Mayen Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"SE",displayName:"Sweden",defaultTimeZoneId:"Europe/Stockholm",timeZone:[{timeZoneId:"Europe/Stockholm",displayName:"(GMT+02:00) Sweden Time"}],tosLocale:{language:"sv",country:"SE"}},{countryCode:"CH",displayName:"Switzerland",defaultTimeZoneId:"Europe/Zurich",timeZone:[{timeZoneId:"Europe/Zurich",displayName:"(GMT+02:00) Switzerland Time"}],tosLocale:{language:"de",country:"DE"}},{countryCode:"SY",displayName:"Syria",defaultTimeZoneId:"Asia/Damascus",timeZone:[{timeZoneId:"Asia/Damascus",displayName:"(GMT+03:00) Syria Time"}]},{countryCode:"TW",displayName:"Taiwan",defaultTimeZoneId:"Asia/Taipei",timeZone:[{timeZoneId:"Asia/Taipei",displayName:"(GMT+08:00) Taiwan Time"}],tosLocale:{language:"zh",country:"TW"}},{countryCode:"TJ",displayName:"Tajikistan",defaultTimeZoneId:"Asia/Dushanbe",timeZone:[{timeZoneId:"Asia/Dushanbe",displayName:"(GMT+05:00) Tajikistan Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"TH",displayName:"Thailand",defaultTimeZoneId:"Asia/Bangkok",timeZone:[{timeZoneId:"Asia/Bangkok",displayName:"(GMT+07:00) Thailand Time"}],tosLocale:{language:"th",country:"TH"}},{countryCode:"TL",displayName:"Timor-Leste",defaultTimeZoneId:"Asia/Dili",timeZone:[{timeZoneId:"Asia/Dili",displayName:"(GMT+09:00) Timor-Leste Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"TK",displayName:"Tokelau",defaultTimeZoneId:"Pacific/Fakaofo",timeZone:[{timeZoneId:"Pacific/Fakaofo",displayName:"(GMT+13:00) Tokelau Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"TO",displayName:"Tonga",defaultTimeZoneId:"Pacific/Tongatapu",timeZone:[{timeZoneId:"Pacific/Tongatapu",displayName:"(GMT+13:00) Tonga Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"TT",displayName:"Trinidad & Tobago",defaultTimeZoneId:"America/Port_of_Spain",timeZone:[{timeZoneId:"America/Port_of_Spain",displayName:"(GMT-04:00) Trinidad & Tobago Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"TN",displayName:"Tunisia",defaultTimeZoneId:"Africa/Tunis",timeZone:[{timeZoneId:"Africa/Tunis",displayName:"(GMT+01:00) Tunisia Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"TR",displayName:"Turkey",defaultTimeZoneId:"Europe/Istanbul",timeZone:[{timeZoneId:"Europe/Istanbul",displayName:"(GMT+03:00) Turkey Time"}],tosLocale:{language:"tr",country:"TR"}},{countryCode:"TM",displayName:"Turkmenistan",defaultTimeZoneId:"Asia/Ashgabat",timeZone:[{timeZoneId:"Asia/Ashgabat",displayName:"(GMT+05:00) Turkmenistan Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"TC",displayName:"Turks & Caicos Islands",defaultTimeZoneId:"America/Grand_Turk",timeZone:[{timeZoneId:"America/Grand_Turk",displayName:"(GMT-04:00) Turks & Caicos Islands Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"TV",displayName:"Tuvalu",defaultTimeZoneId:"Pacific/Funafuti",timeZone:[{timeZoneId:"Pacific/Funafuti",displayName:"(GMT+12:00) Tuvalu Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"UM",displayName:"U.S. Outlying Islands",defaultTimeZoneId:"Pacific/Wake",timeZone:[{timeZoneId:"Pacific/Wake",displayName:"(GMT+12:00) Wake Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"UA",displayName:"Ukraine",defaultTimeZoneId:"Europe/Kiev",timeZone:[{timeZoneId:"Europe/Kiev",displayName:"(GMT+03:00) Ukraine Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"AE",displayName:"United Arab Emirates",defaultTimeZoneId:"Asia/Dubai",timeZone:[{timeZoneId:"Asia/Dubai",displayName:"(GMT+04:00) United Arab Emirates Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"GB",displayName:"United Kingdom",defaultTimeZoneId:"Etc/GMT",timeZone:[{timeZoneId:"Etc/GMT",displayName:"(GMT+00:00) GMT"},{timeZoneId:"Europe/London",displayName:"(GMT+01:00) United Kingdom Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"US",displayName:"United States",defaultTimeZoneId:"America/Los_Angeles",timeZone:[{timeZoneId:"Pacific/Honolulu",displayName:"(GMT-10:00) Honolulu Time"},{timeZoneId:"America/Anchorage",displayName:"(GMT-08:00) Anchorage Time"},{timeZoneId:"America/Los_Angeles",displayName:"(GMT-07:00) Los Angeles Time"},{timeZoneId:"America/Boise",displayName:"(GMT-06:00) Boise Time"},{timeZoneId:"America/Denver",displayName:"(GMT-06:00) Denver Time"},{timeZoneId:"America/Phoenix",displayName:"(GMT-07:00) Phoenix Time"},{timeZoneId:"America/Chicago",displayName:"(GMT-05:00) Chicago Time"},{timeZoneId:"America/Detroit",displayName:"(GMT-04:00) Detroit Time"},{timeZoneId:"America/New_York",displayName:"(GMT-04:00) New York Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"UY",displayName:"Uruguay",defaultTimeZoneId:"America/Montevideo",timeZone:[{timeZoneId:"America/Montevideo",displayName:"(GMT-03:00) Uruguay Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"UZ",displayName:"Uzbekistan",defaultTimeZoneId:"Asia/Tashkent",timeZone:[{timeZoneId:"Asia/Tashkent",displayName:"(GMT+05:00) Uzbekistan Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"VU",displayName:"Vanuatu",defaultTimeZoneId:"Pacific/Efate",timeZone:[{timeZoneId:"Pacific/Efate",displayName:"(GMT+11:00) Vanuatu Time"}],tosLocale:{language:"en",country:"US"}},{countryCode:"VA",displayName:"Vatican City",defaultTimeZoneId:"Europe/Vatican",timeZone:[{timeZoneId:"Europe/Vatican",displayName:"(GMT+02:00) Vatican City Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"VE",displayName:"Venezuela",defaultTimeZoneId:"America/Caracas",timeZone:[{timeZoneId:"America/Caracas",displayName:"(GMT-04:00) Venezuela Time"}],tosLocale:{language:"es",country:"ES"}},{countryCode:"VN",displayName:"Vietnam",defaultTimeZoneId:"Asia/Saigon",timeZone:[{timeZoneId:"Asia/Saigon",displayName:"(GMT+07:00) Vietnam Time"}],tosLocale:{language:"vi",country:"VN"}},{countryCode:"WF",displayName:"Wallis & Futuna",defaultTimeZoneId:"Pacific/Wallis",timeZone:[{timeZoneId:"Pacific/Wallis",displayName:"(GMT+12:00) Wallis & Futuna Time"}],tosLocale:{language:"en",country:"GB"}},{countryCode:"EH",displayName:"Western Sahara",defaultTimeZoneId:"Africa/El_Aaiun",timeZone:[{timeZoneId:"Africa/El_Aaiun",displayName:"(GMT+01:00) Western Sahara Time"}],tosLocale:{language:"en",country:"GB"}}],i=r.reduce((function(e,t){return e[t.countryCode]=t.timeZone,e}),{}),o=Object(a.keyBy)(r,"countryCode"),c=r.reduce((function(e,t){return t.timeZone.forEach((function(n){var a=n.timeZoneId;return e[a]=t.countryCode})),e}),{})},165:function(e,t,n){"use strict";t.a=function(e){if("string"==typeof e&&e.match(/[0-9]{8}/)){var t=e.slice(0,4),n=Number(e.slice(4,6))-1,a=e.slice(6,8);return new Date(t,n.toString(),a)}return!1}},166:function(e,t,n){"use strict";var a=n(2);function r(){return(r=Object.assign||function(e){for(var t=1;ts;s++)i.push(e.createElement("div",{className:"googlesitekit-preview-table__row",key:"table-row-"+s},e.createElement(c.a,{width:"100%",height:a+"px"})));return e.createElement("div",{className:o()("googlesitekit-preview-table",{"googlesitekit-preview-table--padding":r})},i)}PreviewTable.propTypes={rows:r.a.number,rowHeight:r.a.number,padding:r.a.bool},PreviewTable.defaultProps={rows:11,rowHeight:35,padding:!1},t.a=PreviewTable}).call(this,n(3))},223:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(4),r=n.n(a),i=n(33),o=r.a.useSelect;function c(e){return o((function(t){return t(i.b).getValue(e)||{isTooltipVisible:!1,rehideAdminMenu:!1,rehideAdminSubMenu:!1}}))}},224:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return y}));var a=n(5),r=n.n(a),i=n(16),o=n.n(i),c=n(7),s=n.n(c),u=n(324),l=n.n(u),d=n(243),m=n(100),g=n(250),f=n(15),p=function(e,t){var n=t.find((function(t){return t.test(e)}));return!!n&&n.exec(e)[1]},y=l()(function(){var e=o()(r.a.mark((function e(t){var n,a,i,o;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.homeURL,a=t.ampMode,s()(Object(m.a)(n),"homeURL must be valid URL"),i=[n],f.b!==a){e.next=14;break}return e.prev=4,e.next=7,Object(d.default)({path:"/wp/v2/posts?per_page=1"}).then((function(e){return e.slice(0,1).map((function(e){return Object(g.a)(e.link,{amp:1})})).pop()}));case 7:(o=e.sent)&&i.push(o),e.next=14;break;case 11:return e.prev=11,e.t0=e.catch(4),e.abrupt("return",i);case 14:return e.abrupt("return",i);case 15:case"end":return e.stop()}}),e,null,[[4,11]])})));return function(t){return e.apply(this,arguments)}}())},23:function(e,t,n){"use strict";n.d(t,"j",(function(){return a})),n.d(t,"h",(function(){return r})),n.d(t,"k",(function(){return i})),n.d(t,"i",(function(){return o})),n.d(t,"m",(function(){return c})),n.d(t,"p",(function(){return s})),n.d(t,"f",(function(){return u})),n.d(t,"o",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"n",(function(){return m})),n.d(t,"q",(function(){return g})),n.d(t,"l",(function(){return f})),n.d(t,"d",(function(){return p})),n.d(t,"a",(function(){return y})),n.d(t,"c",(function(){return b})),n.d(t,"b",(function(){return v})),n.d(t,"e",(function(){return h}));var a="mainDashboard",r="entityDashboard",i="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",s="userInput",u="activation",l="splash",d="adminBar",m="settings",g="wpDashboard",f="moduleSetup",p="traffic",y="content",b="speed",v="monetization",h=[a,r,i,o,s,l,m,f]},230:function(e,t,n){"use strict";n.d(t,"d",(function(){return a})),n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return l.a})),n.d(t,"c",(function(){return l.b}));n(577),n(38);function a(e){var t;if(void 0!==e){var n=e||{},a=n.rows,r=n.totals;return!(null==a?void 0:a.length)||(!(null==r||null===(t=r.cells)||void 0===t?void 0:t.length)||!r.cells.some((function(e){return(null==e?void 0:e.value)>0})))}}n(297);var r=n(11),i=n.n(r),o=n(1),c=n(8);function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.year,n=void 0===t?0:t,a=e.month,r=void 0===a?1:a,i=e.day,o=void 0===i?0:i;return new Date(n,r-1,o)}function u(e,t,n,a,r){for(var u=[[{type:"date",label:Object(o.__)("Day","google-site-kit")},{type:"string",role:"tooltip",p:{html:!0}},{type:"number",label:n},{type:"number",label:Object(o.__)("Previous period","google-site-kit")}]],l=function(e){var t=new Date(e);return t.setDate(e.getDate()+1),t},d=function(e){return function(t){return e.getTime()===Object(c.x)(t.cells[0].value).getTime()}},m=s(e.startDate),g=s(t.startDate),f=s(e.endDate),p=Object(c.l)(),y={weekday:"short",month:"short",day:"numeric"};m<=f;){var b,v,h,S,_,E,T=parseFloat((null===(b=((null==e?void 0:e.rows)||[]).find(d(m)))||void 0===b||null===(v=b.cells)||void 0===v||null===(h=v[a])||void 0===h?void 0:h.value)||0),A=parseFloat((null===(S=((null==t?void 0:t.rows)||[]).find(d(g)))||void 0===S||null===(_=S.cells)||void 0===_||null===(E=_[a])||void 0===E?void 0:E.value)||0),O=Object(c.e)(T,A),k=Object(c.j)(O),N=Object(o.sprintf)( +/* translators: 1: date for user stats, 2: previous date for user stats comparison */ +Object(o._x)("%1$s vs %2$s","Date range for chart tooltip","google-site-kit"),m.toLocaleDateString(p,y),g.toLocaleDateString(p,y)),I=Object(c.u)(T,null==r?void 0:r.currencyCode);"METRIC_RATIO"===(null==r?void 0:r.type)&&(I=Object(c.u)(T,"%"));var j=Object(o.sprintf)( +/* translators: 1: selected stat label, 2: numeric value of selected stat, 3: up or down arrow , 4: different change in percentage, %%: percent symbol */ +Object(o._x)("%1$s: %2$s %3$s %4$s%%","Stat information for chart tooltip","google-site-kit"),n,I,k,Math.abs(O).toFixed(2).replace(/(.00|0)$/,""));u.push([m,'
0,"googlesitekit-visualization-tooltip--down":O<0}),'">\n\t\t\t\t

').concat(N,"

\n\t\t\t\t

").concat(j,"

\n\t\t\t
"),T,A]),m=l(m),g=l(g)}return u}n(104);var l=n(520);n(404)},243:function(e,t,n){"use strict";(function(e){var a=n(59),r=n.n(a),i=n(244),o=e._googlesitekitAPIFetchData||{},c=o.nonce,s=o.nonceEndpoint,u=o.preloadedData,l=o.rootURL;r.a.nonceEndpoint=s,r.a.nonceMiddleware=r.a.createNonceMiddleware(c),r.a.rootURLMiddleware=r.a.createRootURLMiddleware(l),r.a.preloadingMiddleware=Object(i.a)(u),r.a.use(r.a.nonceMiddleware),r.a.use(r.a.mediaUploadMiddleware),r.a.use(r.a.rootURLMiddleware),r.a.use(r.a.preloadingMiddleware),t.default=r.a}).call(this,n(22))},244:function(e,t,n){"use strict";var a=n(213);t.a=function(e){var t=Object.keys(e).reduce((function(t,n){return t[Object(a.getStablePath)(n)]=e[n],t}),{}),n=!1;return function(e,r){if(n)return r(e);setTimeout((function(){n=!0}),1e3);var i=e.parse,o=void 0===i||i,c=e.path;if("string"==typeof e.path){var s,u=(null===(s=e.method)||void 0===s?void 0:s.toUpperCase())||"GET",l=Object(a.getStablePath)(c);if(o&&"GET"===u&&t[l]){var d=Promise.resolve(t[l].body);return delete t[l],d}if("OPTIONS"===u&&t[u]&&t[u][l]){var m=Promise.resolve(t[u][l]);return delete t[u][l],m}}return r(e)}}},245:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SettingsNoticeSingleRow}));var a=n(0),r=n.n(a),i=n(2);function SettingsNoticeSingleRow(t){var n=t.notice,a=t.LearnMore;return e.createElement(i.Fragment,null,e.createElement("div",{className:"googlesitekit-settings-notice__text"},n),a&&e.createElement("div",{className:"googlesitekit-settings-notice__learn-more"},e.createElement(a,null)))}SettingsNoticeSingleRow.propTypes={notice:r.a.node.isRequired,LearnMore:r.a.elementType}}).call(this,n(3))},246:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SettingsNoticeMultiRow}));var a=n(0),r=n.n(a),i=n(2);function SettingsNoticeMultiRow(t){var n=t.notice,a=t.LearnMore,r=t.children;return e.createElement(i.Fragment,null,e.createElement("div",{className:"googlesitekit-settings-notice__text"},n),e.createElement("div",{className:"googlesitekit-settings-notice__inner-row"},e.createElement("div",{className:"googlesitekit-settings-notice__children-container"},r),a&&e.createElement("div",{className:"googlesitekit-settings-notice__learn-more"},e.createElement(a,null))))}SettingsNoticeMultiRow.propTypes={children:r.a.node.isRequired,notice:r.a.node.isRequired,LearnMore:r.a.elementType}}).call(this,n(3))},254:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return GA4PropertyNotice}));var a=n(0),r=n.n(a),i=n(1),o=n(4),c=n.n(o),s=n(141),u=n(20),l=n(15),d=c.a.useSelect;function GA4PropertyNotice(t){var n=t.notice,a=t.children,r=d((function(e){return e(l.c).getDocumentationLinkURL("ga4")}));return e.createElement(s.b,{type:s.a,LearnMore:function LearnMore(){return e.createElement(u.a,{href:r,external:!0},Object(i.__)("Learn more","google-site-kit"))},notice:n},a)}GA4PropertyNotice.propTypes={children:r.a.node,notice:r.a.string.isRequired}}).call(this,n(3))},256:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(7),r=n.n(a),i=n(43),o=function(e){var t=e.startDate,n=e.endDate,a=e.compareStartDate,o=e.compareEndDate;r()(Object(i.a)(t),"A valid startDate is required."),r()(Object(i.a)(n),"A valid endDate is required.");var c={"_u.date00":t.replace(/-/g,""),"_u.date01":n.replace(/-/g,"")};return(a||o)&&(r()(Object(i.a)(a)&&Object(i.a)(o),"Valid compareStartDate and compareEndDate values are required."),c["_u.date10"]=a.replace(/-/g,""),c["_u.date11"]=o.replace(/-/g,"")),c}},257:function(e,t,n){"use strict";n.d(t,"c",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return c})),n.d(t,"d",(function(){return s}));var a=n(30),r=n.n(a);function i(e,t){return"string"==typeof e||(!("object"!==r()(e)||!t(e))||!!Array.isArray(e)&&e.every((function(e){return"string"==typeof e||"object"===r()(e)&&t(e)})))}function o(e){var t=e.dateRange,n=e.startDate,a=e.endDate,r=n&&n.match(/^\d{4}-\d{2}-\d{2}$/),i=a&&a.match(/^\d{4}-\d{2}-\d{2}$/),o=t&&t.match(/^last-\d+-days$/);return r&&i||o}function c(e){var t=function(e){var t=e.hasOwnProperty("fieldName")&&!!e.fieldName,n=e.hasOwnProperty("sortOrder")&&e.sortOrder.toString().match(/(ASCENDING|DESCENDING)/i);return t&&n};return Array.isArray(e)?e.every((function(e){return"object"===r()(e)&&t(e)})):"object"===r()(e)&&t(e)}function s(e){return"string"==typeof e||!!Array.isArray(e)&&e.every((function(e){return"string"==typeof e}))}},264:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return GA4Notice}));var a=n(1),r=n(4),i=n.n(r),o=n(141),c=n(20),s=n(15),u=i.a.useSelect;function GA4Notice(){var t=u((function(e){return e(s.c).getDocumentationLinkURL("ga4")}));return e.createElement(o.b,{type:o.a,LearnMore:function LearnMore(){return e.createElement(c.a,{href:t,external:!0},Object(a.__)("Learn more here.","google-site-kit"))},notice:Object(a.__)("Got a Google Analytics 4 (GA4) property and want to find out how to use it with Site Kit?","google-site-kit")})}}).call(this,n(3))},265:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return f})),n.d(t,"a",(function(){return p})),n.d(t,"d",(function(){return y})),n.d(t,"c",(function(){return TrackingExclusionSwitches}));var a,r=n(6),i=n.n(r),o=n(2),c=n(1),s=n(4),u=n.n(s),l=n(13),d=n(9),m=u.a.useSelect,g=u.a.useDispatch,f="loggedinUsers",p="contentCreators",y=(a={},i()(a,f,Object(c.__)("All logged-in users","google-site-kit")),i()(a,p,Object(c.__)("Users that can write posts","google-site-kit")),a);function TrackingExclusionSwitches(){var t,n=m((function(e){return e(d.f).getTrackingDisabled()})),a=g(d.f).setTrackingDisabled;t=n&&n.includes(f)?Object(c.__)("All logged-in users will be excluded from Analytics tracking","google-site-kit"):n&&n.includes(p)?Object(c.__)("Users that can write posts will be excluded from Analytics tracking","google-site-kit"):Object(c.__)("All logged-in users will be included in Analytics tracking","google-site-kit");var r=Object(o.useCallback)((function(e,t){var r=t?n.concat(e):n.filter((function(t){return t!==e}));a(r)}),[n,a]),i=Object(o.useCallback)((function(e){var t=e.target.checked;r(p,t)}),[r]),s=Object(o.useCallback)((function(e){var t=e.target.checked;r(f,t)}),[r]);return Array.isArray(n)?e.createElement("fieldset",{className:"googlesitekit-analytics-trackingdisabled"},e.createElement("legend",{className:"googlesitekit-setup-module__text"},Object(c.__)("Exclude from Analytics","google-site-kit")),e.createElement("div",{className:"googlesitekit-settings-module__inline-items"},e.createElement("div",{className:"googlesitekit-settings-module__inline-item"},e.createElement(l.Switch,{label:y[f],checked:n.includes(f),onClick:s,hideLabel:!1})),!n.includes(f)&&e.createElement("div",{className:"googlesitekit-settings-module__inline-item"},e.createElement(l.Switch,{label:y[p],checked:n.includes(p),onClick:i,hideLabel:!1}))),e.createElement("p",{className:"googlesitekit-margin-top-0"},t)):null}}).call(this,n(3))},266:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return UseSnippetSwitch}));var a=n(0),r=n.n(a),i=n(2),o=n(1),c=n(4),s=n.n(c),u=n(13),l=n(9),d=n(8),m=n(19),g=s.a.useSelect,f=s.a.useDispatch;function UseSnippetSwitch(t){var n=t.description,a=Object(m.a)(),r=g((function(e){return e(l.f).getUseSnippet()})),c=g((function(e){return e(l.f).getCanUseSnippet()})),s=g((function(e){return e(l.f).hasExistingTag()})),p=f(l.f).setUseSnippet,y=Object(i.useCallback)((function(){var e=!r;p(e),Object(d.z)("".concat(a,"_analytics"),e?"enable_tag":"disable_tag","ua")}),[r,p,a]);return void 0===r||void 0===s?null:e.createElement("div",{className:"googlesitekit-analytics-usesnippet"},e.createElement(u.Switch,{label:Object(o.__)("Place Universal Analytics code","google-site-kit"),checked:!1!==c&&r,onClick:y,hideLabel:!1,disabled:!1===c}),n)}UseSnippetSwitch.propTypes={description:r.a.node}}).call(this,n(3))},27:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return o}));var a="modules/analytics-4",r="property_create",i="webdatastream_create",o=10},270:function(e,t){e.exports=googlesitekit.widgets},28:function(e,t,n){"use strict";n.d(t,"g",(function(){return a})),n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"c",(function(){return c})),n.d(t,"f",(function(){return s})),n.d(t,"e",(function(){return u})),n.d(t,"h",(function(){return l}));var a="modules/tagmanager",r="account_create",i="container_create",o="web",c="amp",s="tagmanagerSetup",u="https://www.googleapis.com/auth/tagmanager.edit.containers",l="SETUP_WITH_ANALYTICS"},29:function(e,t,n){"use strict";n.d(t,"f",(function(){return a})),n.d(t,"e",(function(){return r})),n.d(t,"c",(function(){return i})),n.d(t,"b",(function(){return o})),n.d(t,"d",(function(){return c})),n.d(t,"a",(function(){return s}));var a="modules/adsense",r=1,i="READY",o="NEEDS_ATTENTION",c="REQUIRES_REVIEW",s="GETTING_READY"},291:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return GoogleChart}));var a=n(6),r=n.n(a),i=n(18),o=n.n(i),c=n(24),s=n.n(c),u=n(14),l=n.n(u),d=n(21),m=n.n(d),g=(n(449),n(11)),f=n.n(g),p=n(0),y=n.n(p),b=n(352),v=n(262),h=n.n(v),S=n(314),_=n.n(S),E=n(389),T=n.n(E),A=n(2),O=n(99),k=n(12),N=n(65),I=n(38),j=n(4);function C(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function w(e){for(var t=1;t0&&(q=c.map((function(e){return e.filter((function(e,t){return 0===t||C.includes(t-1)||z.includes(t-1)}))})));var V=p||d,H=y||w;V&&!H&&(H="100%"),H&&!V&&(V="100%");var K="PieChart"===a?"circular":"square",Y=e.createElement("div",{className:"googlesitekit-chart-loading"},e.createElement(O.a,{className:"googlesitekit-chart-loading__wrapper",height:V,shape:K,width:H})),$=Object(A.useRef)(),J=Object(A.useRef)();if(Object(A.useEffect)((function(){return function(){if(J.current&&$.current){var e=J.current.visualization.events;e.removeAllListeners($.current.getChart()),e.removeAllListeners($.current)}}}),[]),Object(A.useLayoutEffect)((function(){var e,t;v&&(null===(e=J.current)||void 0===e||e.visualization.events.addListener($.current.getChart(),"onmouseover",(function(e){v(e,{chartWrapper:$.current,google:J.current})})));S&&(null===(t=J.current)||void 0===t||t.visualization.events.addListener($.current.getChart(),"onmouseout",(function(e){S(e,{chartWrapper:$.current,google:J.current})})))}),[v,S]),!g)return e.createElement("div",{className:f()("googlesitekit-chart","googlesitekit-chart-loading__forced",i)},Y);var Q=s()(n||[]);E&&Q.push({eventName:"ready",callback:E}),j&&Q.push({eventName:"select",callback:j});var X,ee,te,ne,ae,re,ie,oe,ce=_()(R);M&&"LineChart"===a&&((null==R||null===(X=R.vAxis)||void 0===X||null===(ee=X.viewWindow)||void 0===ee?void 0:ee.min)||h()(ce,"vAxis.viewWindow.min",0),(null==R||null===(te=R.vAxis)||void 0===te||null===(ne=te.viewWindow)||void 0===ne?void 0:ne.max)||h()(ce,"vAxis.viewWindow.max",100),(null==R||null===(ae=R.hAxis)||void 0===ae||null===(re=ae.viewWindow)||void 0===re?void 0:re.min)||(h()(ce,"hAxis.viewWindow.min",Object(I.a)(G)),delete ce.hAxis.ticks),(null==R||null===(ie=R.hAxis)||void 0===ie||null===(oe=ie.viewWindow)||void 0===oe?void 0:oe.max)||(h()(ce,"hAxis.viewWindow.max",Object(I.a)(x)),delete ce.hAxis.ticks));return T()(ce,{hAxis:{textStyle:{fontSize:10,color:"#5f6561"}},vAxis:{textStyle:{color:"#5f6561",fontSize:10}},legend:{textStyle:{color:"#131418",fontSize:12}}}),e.createElement("div",{className:f()("googlesitekit-chart","googlesitekit-chart--".concat(a),i),tabIndex:-1},e.createElement(b.a,o()({className:"googlesitekit-chart__inner",chartEvents:Q,chartType:a,chartVersion:"49",data:q,loader:Y,height:d,getChartWrapper:function(e,t){var n,a,r;(F||W(!0),e!==$.current)&&(null===(n=J.current)||void 0===n||n.visualization.events.removeAllListeners(null===(a=$.current)||void 0===a?void 0:a.getChart()),null===(r=J.current)||void 0===r||r.visualization.events.removeAllListeners($.current));$.current=e,J.current=t,u&&u(e,t)},width:w,options:ce},Z)),M&&F&&e.createElement(N.b,{style:N.a.OVERLAY}),r)}GoogleChart.propTypes={className:y.a.string,children:y.a.node,chartEvents:y.a.arrayOf(y.a.shape({eventName:y.a.string,callback:y.a.func})),chartType:y.a.oneOf(["LineChart","PieChart"]).isRequired,data:y.a.array,getChartWrapper:y.a.func,height:y.a.string,loaded:y.a.bool,loadingHeight:y.a.string,loadingWidth:y.a.string,onMouseOut:y.a.func,onMouseOver:y.a.func,onReady:y.a.func,onSelect:y.a.func,selectedStats:y.a.arrayOf(y.a.number),width:y.a.string,options:y.a.object,gatheringData:y.a.bool},GoogleChart.defaultProps=w(w({},b.a.defaultProps),{},{loaded:!0})}).call(this,n(3))},292:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return JoyrideTooltip}));var r=n(6),i=n.n(r),o=n(14),c=n.n(o),s=n(0),u=n(25),l=n(612),d=n(2),m=n(137),g=n(92),f=n(127);function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function y(e){for(var t=1;t0){n.next=7;break}if(!(i=document.getElementById("wp-admin-bar-menu-toggle"))){n.next=7;break}return i.click(),n.next=7,new Promise((function(e){setTimeout(e,0)}));case 7:"#adminmenu [href*='page=googlesitekit-dashboard']",(o=!!document.querySelector("".concat("#adminmenu [href*='page=googlesitekit-dashboard']","[aria-haspopup=true]")))&&document.querySelector("#adminmenu [href*='page=googlesitekit-dashboard']").click(),t(e,{isTooltipVisible:!0,rehideAdminMenu:!a,rehideAdminSubMenu:o});case 11:case"end":return n.stop()}}),n)}))),[t,e])}},311:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdminMenuTooltip}));var a=n(6),r=n.n(a),i=n(18),o=n.n(i),c=n(5),s=n.n(c),u=n(16),l=n.n(u),d=n(21),m=n.n(d),g=n(2),f=n(0),p=n.n(f),y=n(4),b=n.n(y),v=n(292),h=n(33),S=n(223);function _(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function E(e){for(var t=1;t0&&(null===(t=document.getElementById("wp-admin-bar-menu-toggle"))||void 0===t||t.click()),d&&document.querySelector("body").click(),e.next=4,null==n?void 0:n();case 4:i(a,void 0);case 5:case"end":return e.stop()}}),e)}))),[n,u,d,i,a]);return e.createElement(v.a,o()({slug:"ga4-activation-banner-admin-menu-tooltip",onDismiss:f},r))}AdminMenuTooltip.propTypes=E(E({},v.a.propTypes),{},{target:p.a.string,tooltipStateKey:p.a.string.isRequired}),AdminMenuTooltip.defaultProps={target:'#adminmenu [href*="page=googlesitekit-settings"]'}}).call(this,n(3))},319:function(e,t,n){"use strict";(function(e,a){var r=n(14),i=n.n(r),o=n(0),c=n.n(o),s=n(26),u=n(11),l=n.n(u),d=n(2);function TableOverflowContainer(t){var n=t.children,r=Object(d.useState)(!1),o=i()(r,2),c=o[0],u=o[1],m=Object(d.useRef)();Object(d.useEffect)((function(){g();var t=Object(s.debounce)(g,100);return e.addEventListener("resize",t),function(){return e.removeEventListener("resize",t)}}),[]);var g=function(){if(m.current){var e=m.current,t=e.scrollLeft,n=e.scrollWidth-e.offsetWidth;u(t=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},n=t.storeName,a=t.isValidTag,i=t.tagMatchers;l()("string"==typeof n&&n,"storeName is required."),l()("function"==typeof a,"isValidTag must be a function."),l()(Array.isArray(i),"tagMatchers must be an Array.");var c={existingTag:void 0},u={fetchGetExistingTag:function(){return{payload:{},type:"FETCH_GET_EXISTING_TAG"}},receiveGetExistingTag:function(e){return l()(null===e||"string"==typeof e,"existingTag must be a tag string or null."),{payload:{existingTag:a(e)?e:null},type:"RECEIVE_GET_EXISTING_TAG"}},waitForExistingTag:s.a.mark((function e(){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"WAIT_FOR_EXISTING_TAG"};case 2:case"end":return e.stop()}}),e)}))},d=(e={},r()(e,"FETCH_GET_EXISTING_TAG",h((function(e){return o()(s.a.mark((function t(){var n,a,r,o,c,u,l,d;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.select(g.c).getHomeURL(),a=e.select(g.c).getAMPMode(),t.next=4,Object(f.b)({homeURL:n,ampMode:a});case 4:r=t.sent,o=b(r),t.prev=6,o.s();case 8:if((c=o.n()).done){t.next=18;break}return u=c.value,t.next=12,e.dispatch(g.c).waitForHTMLForURL(u);case 12:if(l=e.select(g.c).getHTMLForURL(u),!(d=Object(f.a)(l,i))){t.next=16;break}return t.abrupt("return",d);case 16:t.next=8;break;case 18:t.next=23;break;case 20:t.prev=20,t.t0=t.catch(6),o.e(t.t0);case 23:return t.prev=23,o.f(),t.finish(23);case 26:return t.abrupt("return",null);case 27:case"end":return t.stop()}}),t,null,[[6,20,23,26]])})))}))),r()(e,"WAIT_FOR_EXISTING_TAG",h((function(e){return function(){var t=function(){return void 0!==e.select(n).getExistingTag()};return!!t()||new Promise((function(n){var a=e.subscribe((function(){t()&&(a(),n())}))}))}}))),e),p=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c,t=arguments.length>1?arguments[1]:void 0,n=t.type,a=t.payload;switch(n){case"RECEIVE_GET_EXISTING_TAG":var r=a.existingTag;return y(y({},e),{},{existingTag:r});default:return e}},v={getExistingTag:s.a.mark((function e(){var t,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m.a.commonActions.getRegistry();case 2:if(void 0!==(t=e.sent).select(n).getExistingTag()){e.next=8;break}return e.next=6,u.fetchGetExistingTag();case 6:a=e.sent,t.dispatch(n).receiveGetExistingTag(a);case 8:case"end":return e.stop()}}),e)}))},_={getExistingTag:function(e){return e.existingTag},hasExistingTag:S((function(e){return function(){var t=e(n).getExistingTag();if(void 0!==t)return!!t}}))},E={initialState:c,actions:u,controls:d,reducer:p,resolvers:v,selectors:_};return y(y({},E),{},{STORE_NAME:n})}},328:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return f})),n.d(t,"a",(function(){return p})),n.d(t,"d",(function(){return y})),n.d(t,"c",(function(){return AutoAdExclusionSwitches}));var a,r=n(6),i=n.n(r),o=n(2),c=n(1),s=n(4),u=n.n(s),l=n(13),d=n(29),m=u.a.useSelect,g=u.a.useDispatch,f="loggedinUsers",p="contentCreators",y=(a={},i()(a,f,Object(c.__)("All logged-in users","google-site-kit")),i()(a,p,Object(c.__)("Users who can write posts","google-site-kit")),a);function AutoAdExclusionSwitches(){var t,n=m((function(e){return e(d.f).getAutoAdsDisabled()})),a=g(d.f).setAutoAdsDisabled;t=n&&n.includes(f)?Object(c.__)("Ads will not be displayed for all logged-in users","google-site-kit"):n&&n.includes(p)?Object(c.__)("Ads will not be displayed for users that can write posts","google-site-kit"):Object(c.__)("Ads will be displayed for all users","google-site-kit");var r=Object(o.useCallback)((function(e,t){var r=t?n.concat(e):n.filter((function(t){return t!==e}));a(r)}),[n,a]),i=Object(o.useCallback)((function(e){var t=e.target.checked;r(p,t)}),[r]),s=Object(o.useCallback)((function(e){var t=e.target.checked;r(f,t)}),[r]);return Array.isArray(n)?e.createElement("fieldset",{className:"googlesitekit-analytics-auto-ads-disabled"},e.createElement("legend",{className:"googlesitekit-setup-module__text"},Object(c.__)("Exclude from Ads","google-site-kit")),e.createElement("div",{className:"googlesitekit-settings-module__inline-items"},e.createElement("div",{className:"googlesitekit-settings-module__inline-item"},e.createElement(l.Switch,{label:y[f],checked:n.includes(f),onClick:s,hideLabel:!1})),!n.includes(f)&&e.createElement("div",{className:"googlesitekit-settings-module__inline-item"},e.createElement(l.Switch,{label:y[p],checked:n.includes(p),onClick:i,hideLabel:!1}))),e.createElement("p",{className:"googlesitekit-margin-top-0"},t)):null}}).call(this,n(3))},33:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return r}));var a="core/ui",r="activeContextID"},338:function(e,t,n){"use strict";(function(e){var a=n(0),r=function WidgetHeaderTitle(t){var n=t.title;return e.createElement("h3",{className:"googlesitekit-subheading-1 googlesitekit-widget__header-title"},n)};r.propTypes={title:n.n(a).a.string.isRequired},t.a=r}).call(this,n(3))},34:function(e,t){e.exports=googlesitekit.api},35:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a="core/forms"},354:function(e,t,n){"use strict";n.d(t,"d",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var a="adblocker_active",r="moduleAdsenseMain",i="adsense-connect-cta",o="adsense-connect-cta-tooltip-state"},36:function(e,t,n){"use strict";n.d(t,"c",(function(){return a})),n.d(t,"e",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return c})),n.d(t,"f",(function(){return s}));var a="Date param must construct to a valid date instance or be a valid date instance itself.",r="Invalid dateString parameter, it must be a string.",i='Invalid date range, it must be a string with the format "last-x-days".',o=3600,c=86400,s=604800},361:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AccountCreate}));var a=n(5),r=n.n(a),i=n(16),o=n.n(i),c=n(14),s=n.n(c),u=n(1),l=n(2),d=n(4),m=n.n(d),g=n(13),f=n(9),p=n(15),y=n(12),b=n(35),v=n(40),h=n(58),S=n(8),_=n(375),E=n(10),T=n(20),A=n(114),O=n(254),k=n(376),N=n(377),I=n(378),j=n(379),C=n(380),w=n(19),D=m.a.useDispatch,R=m.a.useSelect;function AccountCreate(){var t=Object(l.useState)(!1),n=s()(t,2),a=n[0],i=n[1],c=R((function(e){return{accounts:e(f.f).getAccounts(),hasResolvedAccounts:e(f.f).hasFinishedResolution("getAccounts")}})),d=c.accounts,m=c.hasResolvedAccounts,P=R((function(e){return e(f.f).getAccountTicketTermsOfServiceURL()})),M=R((function(e){return e(f.f).canSubmitAccountCreate()})),Z=R((function(e){return e(f.f).isDoingCreateAccount()})),L=R((function(e){return e(y.a).hasScope(f.k)})),G=R((function(e){return e(y.a).hasScope(f.c)})),x=R((function(e){return e(b.a).hasForm(f.d)})),U=R((function(e){return e(b.a).getValue(f.d,"autoSubmit")})),B=R((function(e){return e(p.c).getReferenceSiteURL()})),F=R((function(e){return e(p.c).getSiteName()})),W=R((function(e){return e(p.c).getTimezone()})),z=Object(w.a)(),q=D(b.a).setValues,V=D(v.a).navigateTo,H=D(f.f).createAccount,K=D(y.a).setPermissionScopeError;Object(l.useEffect)((function(){P&&V(P)}),[P,V]),Object(l.useEffect)((function(){x||q(f.d,Object(_.a)({siteName:F,siteURL:B,timezone:W}))}),[x,F,B,W,q]);var Y=Object(l.useCallback)(o()(r.a.mark((function e(){var t,n;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=[],L&&G||(t.push(f.k),t.push(f.c)),!(t.length>0)){e.next=6;break}return q(f.d,{autoSubmit:!0}),K({code:h.a,message:Object(u.__)("Additional permissions are required to create a new Analytics account.","google-site-kit"),data:{status:403,scopes:t,skipModal:!0}}),e.abrupt("return");case 6:return q(f.d,{autoSubmit:!1}),e.next=9,Object(S.z)("".concat(z,"_analytics"),"create_account","proxy");case 9:return e.next=11,H();case 11:n=e.sent,n.error||i(!0);case 14:case"end":return e.stop()}}),e)}))),[H,i,L,G,K,q,z]);Object(l.useEffect)((function(){L&&U&&Y()}),[L,U,Y]);var $=D(f.f).rollbackSettings,J=Object(l.useCallback)((function(){return $()}),[$]);return Z||a||!m||void 0===L?e.createElement(g.ProgressBar,null):e.createElement("div",null,e.createElement(A.a,{moduleSlug:"analytics",storeName:f.f}),e.createElement("h3",{className:"googlesitekit-heading-4"},Object(u.__)("Create your Analytics account","google-site-kit")),e.createElement("p",null,Object(u.__)("We’ve pre-filled the required information for your new account. Confirm or edit any details:","google-site-kit")),e.createElement("div",{className:"googlesitekit-setup-module__inputs"},e.createElement(E.a,{size:6},e.createElement(N.a,null)),e.createElement(E.a,{size:6},e.createElement(I.a,null)),e.createElement(E.a,{size:6},e.createElement(j.a,null))),e.createElement("div",{className:"googlesitekit-setup-module__inputs"},e.createElement(C.a,null),e.createElement(k.a,null)),e.createElement("p",null,L&&e.createElement("span",null,Object(u.__)("You will be redirected to Google Analytics to accept the terms of service.","google-site-kit")),!L&&e.createElement("span",null,Object(u.__)("You will need to give Site Kit permission to create an Analytics account on your behalf and also accept the Google Analytics terms of service.","google-site-kit"))),e.createElement(O.a,{notice:Object(u.__)("This will create both a Google Analytics 4 and Universal Analytics property.","google-site-kit")}),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(g.Button,{disabled:!M,onClick:Y},Object(u.__)("Create Account","google-site-kit")),d&&!!d.length&&e.createElement(T.a,{className:"googlesitekit-setup-module__sub-action",onClick:J},Object(u.__)("Back","google-site-kit"))))}}).call(this,n(3))},362:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return AccountCreateLegacy}));var r=n(5),i=n.n(r),o=n(16),c=n.n(o),s=n(2),u=n(1),l=n(4),d=n.n(l),m=n(13),g=n(20),f=n(8),p=n(9),y=n(114),b=n(264),v=n(19),h=d.a.useSelect,S=d.a.useDispatch;function AccountCreateLegacy(){var t=h((function(e){return{accounts:e(p.f).getAccounts(),hasResolvedAccounts:e(p.f).hasFinishedResolution("getAccounts")}})),n=t.accounts,r=t.hasResolvedAccounts,o=h((function(e){return e(p.f).getAccountID()})),l=p.a===o,d=h((function(e){return e(p.f).getServiceURL({path:"/provision/SignUp"})})),_=Object(v.a)(),E=Object(s.useCallback)(function(){var t=c()(i.a.mark((function t(n){return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.preventDefault(),t.next=3,Object(f.z)("".concat(_,"_analytics"),"create_account","custom-oauth");case 3:e.open(d,"_blank");case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),[d,_]),T=S(p.f).resetAccounts,A=Object(s.useCallback)((function(){T()}),[T]);return r?a.createElement("div",null,a.createElement(b.a,null),a.createElement(y.a,{moduleSlug:"analytics",storeName:p.f}),!l&&n&&0===n.length&&a.createElement("p",null,Object(u.__)('Looks like you don\'t have an Analytics account yet. Once you create it, click on "Re-fetch my account" and Site Kit will locate it.',"google-site-kit")),l&&a.createElement(s.Fragment,null,a.createElement("p",null,Object(u.__)("To create a new account, click the button below which will open the Google Analytics account creation screen in a new window.","google-site-kit")),a.createElement("p",null,Object(u.__)("Once completed, click the link below to re-fetch your accounts to continue.","google-site-kit"))),a.createElement("div",{className:"googlesitekit-setup-module__action"},a.createElement(m.Button,{onClick:E},Object(u.__)("Create an account","google-site-kit")),a.createElement("div",{className:"googlesitekit-setup-module__sub-action"},a.createElement(g.a,{onClick:A},Object(u.__)("Re-fetch My Account","google-site-kit"))))):a.createElement(m.ProgressBar,null)}}).call(this,n(22),n(3))},363:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AccountSelect}));var a=n(2),r=n(1),i=n(4),o=n.n(i),c=n(13),s=n(10),u=n(9),l=n(8),d=n(19),m=o.a.useSelect,g=o.a.useDispatch;function AccountSelect(t){var n=t.hasModuleAccess,i=Object(d.a)(),o=m((function(e){return e(u.f).getAccountID()})),f=m((function(e){return{accounts:e(u.f).getAccounts(),hasResolvedAccounts:e(u.f).hasFinishedResolution("getAccounts")}})),p=f.accounts,y=f.hasResolvedAccounts,b=g(u.f).selectAccount,v=Object(a.useCallback)((function(e,t){var n=t.dataset.value;if(o!==n){b(n);var a=n===u.a?"change_account_new":"change_account";Object(l.z)("".concat(i,"_analytics"),a)}}),[o,b,i]);return y?!1===n?e.createElement(s.q,{className:"googlesitekit-analytics__select-account",label:Object(r.__)("Account","google-site-kit"),value:o,enhanced:!0,outlined:!0,disabled:!0},e.createElement(s.o,{value:o},o)):e.createElement(s.q,{className:"googlesitekit-analytics__select-account",label:Object(r.__)("Account","google-site-kit"),value:o,onEnhancedChange:v,enhanced:!0,outlined:!0},(p||[]).concat({id:u.a,name:Object(r.__)("Set up a new account","google-site-kit")}).map((function(t,n){var a=t.id,r=t.name;return e.createElement(s.o,{key:n,value:a},r)}))):e.createElement(c.ProgressBar,{small:!0})}}).call(this,n(3))},364:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdsConversionIDTextField}));var a=n(11),r=n.n(a),i=n(2),o=n(1),c=n(4),s=n.n(c),u=n(10),l=n(9),d=n(60),m=n(77),g=s.a.useSelect,f=s.a.useDispatch;function AdsConversionIDTextField(){var t=g((function(e){return e(l.f).getAdsConversionID()})),n=g((function(e){return e(l.f).getCanUseSnippet()&&e(l.f).getUseSnippet()})),a=f(l.f).setAdsConversionID,c=Object(i.useCallback)((function(e){var n=e.currentTarget.value.trim().toUpperCase();"AW-".length1&&void 0!==arguments[1]?arguments[1]:Intl.DateTimeFormat().resolvedOptions().timeZone;r()(Object(o.a)(n),"a valid siteURL is required.");var u=new URL(n),l=u.hostname,d=u.pathname,m=c.c[a]?a:s;return{accountName:t||l,propertyName:"".concat(l).concat(d).replace(/\/$/,""),profileName:Object(i._x)("All Web Site Data","default Analytics view name","google-site-kit"),countryCode:c.c[m],timezone:m}}},376:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return TimezoneSelect}));var a=n(2),r=n(1),i=n(10),o=n(161),c=n(4),s=n.n(c),u=n(9),l=n(35),d=s.a.useSelect,m=s.a.useDispatch;function TimezoneSelect(){var t=d((function(e){return e(l.a).getValue(u.d,"countryCode")})),n=d((function(e){return e(l.a).getValue(u.d,"timezone")})),c=m(l.a).setValues,s=Object(a.useCallback)((function(e,t){c(u.d,{timezone:t.dataset.value})}),[c]);return e.createElement(i.q,{className:"googlesitekit-analytics__select-timezone",label:Object(r.__)("Timezone","google-site-kit"),value:n,onEnhancedChange:s,disabled:!t,enhanced:!0,outlined:!0},(o.d[t]||[]).map((function(t,n){var a=t.timeZoneId,r=t.displayName;return e.createElement(i.o,{key:n,value:a},r)})))}}).call(this,n(3))},377:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AccountField}));var a=n(2),r=n(1),i=n(210),o=n(4),c=n.n(o),s=n(9),u=n(35),l=c.a.useSelect,d=c.a.useDispatch;function AccountField(){var t=l((function(e){return e(u.a).getValue(s.d,"accountName")})),n=d(u.a).setValues,o=Object(a.useCallback)((function(e){n(s.d,{accountName:e})}),[n]);return e.createElement(i.a,{label:Object(r.__)("Account","google-site-kit"),hasError:!t,value:t,setValue:o,name:"account"})}}).call(this,n(3))},378:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return PropertyField}));var a=n(2),r=n(1),i=n(210),o=n(4),c=n.n(o),s=n(9),u=n(35),l=c.a.useSelect,d=c.a.useDispatch;function PropertyField(){var t=l((function(e){return e(u.a).getValue(s.d,"propertyName")})),n=d(u.a).setValues,o=Object(a.useCallback)((function(e){n(s.d,{propertyName:e})}),[n]);return e.createElement(i.a,{label:Object(r.__)("Property","google-site-kit"),value:t,hasError:!t,setValue:o,name:"property"})}}).call(this,n(3))},379:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ProfileField}));var a=n(2),r=n(1),i=n(210),o=n(4),c=n.n(o),s=n(9),u=n(35),l=c.a.useSelect,d=c.a.useDispatch;function ProfileField(){var t=l((function(e){return e(u.a).getValue(s.d,"profileName")})),n=d(u.a).setValues,o=Object(a.useCallback)((function(e){n(s.d,{profileName:e})}),[n]);return e.createElement(i.a,{label:Object(r.__)("View","google-site-kit"),value:t,hasError:!t,setValue:o,name:"profile"})}}).call(this,n(3))},38:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var a=n(14),r=n.n(a),i=n(7),o=n.n(i),c=n(36),s=n(43),u=function(e){o()(Object(s.a)(e),c.e);var t=e.split("-"),n=r()(t,3),a=n[0],i=n[1],u=n[2];return new Date(a,i-1,u)}},380:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return CountrySelect}));var a=n(2),r=n(1),i=n(10),o=n(161),c=n(4),s=n.n(c),u=n(9),l=n(35),d=s.a.useSelect,m=s.a.useDispatch;function CountrySelect(){var t=d((function(e){return e(l.a).getValue(u.d,"countryCode")})),n=m(l.a).setValues,c=Object(a.useCallback)((function(e,a){var r=a.dataset.value;r!==t&&o.b[r]&&n(u.d,{countryCode:r,timezone:o.b[r].defaultTimeZoneId})}),[n,t]);return e.createElement(i.q,{className:"googlesitekit-analytics__select-country",label:Object(r.__)("Country","google-site-kit"),value:t,onEnhancedChange:c,enhanced:!0,outlined:!0},o.a.map((function(t,n){var a=t.countryCode,r=t.displayName;return e.createElement(i.o,{key:n,value:a},r)})))}}).call(this,n(3))},390:function(e,t,n){"use strict";var a=n(2);function r(){return(r=Object.assign||function(e){for(var t=1;t1?n-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:i;return t instanceof Set&&t.has(e)}}).call(this,n(22))},420:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdBlockerWarning}));var a=n(6),r=n.n(a),i=n(0),o=n.n(i),c=n(11),s=n.n(c),u=n(1),l=n(72),d=n(4),m=n.n(d),g=n(138),f=n(20),p=n(29),y=n(15),b=m.a.useSelect;function AdBlockerWarning(t){var n=t.context,a=b((function(e){return e(p.f).getAdBlockerWarningMessage()})),i=b((function(e){return e(y.c).getDocumentationLinkURL("ad-blocker-detected")}));return a?e.createElement("div",{className:s()("googlesitekit-settings-module-warning",r()({},"googlesitekit-settings-module-warning--".concat(n),n))},Object(l.a)(Object(u.sprintf)( +/* translators: 1: The warning message. 2: "Get help" text. */ +Object(u.__)(" %1$s. %2$s","google-site-kit"),a,Object(u.__)("Get help","google-site-kit")),{ErrorIcon:e.createElement(g.a,{height:"20",width:"23"}),Link:e.createElement(f.a,{href:i,external:!0})})):null}AdBlockerWarning.propTypes={context:o.a.string},AdBlockerWarning.defaultProps={context:""}}).call(this,n(3))},421:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SiteSteps}));var a=n(1),r=n(4),i=n.n(r),o=n(20),c=n(29),s=i.a.useSelect;function SiteSteps(){var t=s((function(e){return e(c.f).getServiceAccountManageSitesURL()})),n=s((function(e){return e(c.f).getServiceAccountSiteAdsPreviewURL()})),r=[{linkText:Object(a.__)("Enabled auto ads for your site","google-site-kit"),linkURL:n},{linkText:Object(a.__)('Verified that your site is marked as "Ready"',"google-site-kit"),linkURL:t}];return e.createElement("div",{className:"googlesitekit-setup-module__list-wrapper"},e.createElement("ol",{className:"googlesitekit-setup-module__list"},r.map((function(t,n){return e.createElement("li",{className:"googlesitekit-setup-module__list-item",key:n},e.createElement(o.a,{href:t.linkURL,external:!0},t.linkText))}))))}}).call(this,n(3))},422:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupUseSnippetSwitch}));var a=n(2),r=n(1),i=n(4),o=n.n(i),c=n(29),s=n(297),u=n(121),l=o.a.useSelect,d=o.a.useDispatch;function SetupUseSnippetSwitch(){var t,n,i=l((function(e){return e(c.f).getOriginalUseSnippet()})),o=l((function(e){return e(c.f).getExistingTag()})),m=l((function(e){return e(c.f).getClientID()})),g=d(c.f),f=g.setUseSnippet,p=g.saveSettings,y=Boolean(o);if(Object(a.useEffect)((function(){y&&(f(!1),p())}),[y,p,f]),i&&!o||void 0===o||void 0===i)return null;var b=Object(r.__)("Make sure to remove the existing AdSense code to avoid conflicts with the code placed by Site Kit.","google-site-kit");return o===m?(n=Object(r.__)("You’ve already got an AdSense code on your site for this account. We recommend you use Site Kit to place the code to get the most out of AdSense.","google-site-kit"),t="".concat(n," ").concat(b)):o?(n=Object(r.sprintf)( +/* translators: 1: existing account ID, 2: current account ID */ +Object(r.__)("Site Kit detected AdSense code for a different account %1$s on your site. In order to configure AdSense for your current account %2$s, we recommend you use Site Kit to place the code instead.","google-site-kit"),Object(s.a)(o),Object(s.a)(m)),t="".concat(n," ").concat(b)):t=b,e.createElement(u.e,{checkedMessage:t,uncheckedMessage:n,saveOnChange:!0})}}).call(this,n(3))},43:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(37),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var n=e.split("-");return 3===n.length&&Object(a.a)(new Date(e))}},449:function(e,t,n){(function(e){Object.prototype.hasOwnProperty.call(e,"google")||(e.google=void 0)}).call(this,n(22))},452:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupSiteAdded}));var a=n(5),r=n.n(a),i=n(16),o=n.n(i),c=n(0),s=n.n(c),u=n(2),l=n(1),d=n(4),m=n.n(d),g=n(13),f=n(29),p=n(421),y=n(121),b=m.a.useSelect,v=m.a.useDispatch;function SetupSiteAdded(t){var n=t.finishSetup,a=b((function(e){return e(f.f).isDoingSubmitChanges()})),i=v(f.f).completeSiteSetup,c=Object(u.useCallback)(o()(r.a.mark((function e(){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!a){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,i();case 4:e.sent&&n();case 6:case"end":return e.stop()}}),e)}))),[a,n,i]);return e.createElement(u.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(l.__)("Let’s get your site ready for ads","google-site-kit")),e.createElement(y.d,null),e.createElement("p",null,Object(l.__)("In order for your site to display ads, make sure you’ve completed these steps in AdSense","google-site-kit")),e.createElement(p.a,null),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(g.Button,{onClick:c,disabled:a},Object(l.__)("Continue","google-site-kit"))))}SetupSiteAdded.propTypes={finishSetup:s.a.func},SetupSiteAdded.defaultProps={finishSetup:function(){}}}).call(this,n(3))},453:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return r}));var a=n(2);function r(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;Object(a.useEffect)((function(){var a,r=!1,i=function(){a=e.setTimeout((function(){r=!0}),n)},o=function(){e.clearTimeout(a),r&&(r=!1,t())};return e.addEventListener("focus",o),e.addEventListener("blur",i),function(){e.removeEventListener("focus",o),e.removeEventListener("blur",i),e.clearTimeout(a)}}),[n,t])}}).call(this,n(22))},49:function(e,t,n){"use strict";n.d(t,"d",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"b",(function(){return c})),n.d(t,"e",(function(){return s}));var a=n(103),r="xlarge",i="desktop",o="tablet",c="small";function s(){var e=Object(a.a)();return e>1280?r:e>960?i:e>600?o:c}},50:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return i}));var a={BOXES:"boxes",COMPOSITE:"composite"},r={QUARTER:"quarter",HALF:"half",FULL:"full"},i="core/widgets"},51:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"c",(function(){return c})),n.d(t,"e",(function(){return s}));var a=n(100);function r(e){try{return new URL(e).pathname}catch(e){}return null}function i(e,t){try{return new URL(t,e).href}catch(e){}return("string"==typeof e?e:"")+("string"==typeof t?t:"")}function o(e){return"string"!=typeof e?e:e.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function c(e){return/^#\w[A-Za-z0-9-_]*$/.test(e)}function s(e,t){if(!Object(a.a)(e))return e;if(e.length<=t)return e;var n=new URL(e),r=e.replace(n.origin,"");if(r.length1&&!q&&R(k.f)}),[R,q,z]),Object(g.useEffect)((function(){L&&!B&&K&&(G(!1),o()(r.a.mark((function e(){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return F(!0),e.next=3,P();case 3:F(!1);case 4:case"end":return e.stop()}}),e)})))())}),[L,B,K,P]);var oe,ce=Object(g.useCallback)((function(){void 0!==$&&k.k!==$&&(l(),d(),f(),p(),w())}),[$,l,d,f,p,w]);return Object(I.a)(ce,15e3),Object(g.useEffect)((function(){void 0!==$&&Object(_.z)(i,"receive_account_state",$)}),[i,$]),Object(g.useEffect)((function(){void 0!==Q&&Object(_.z)(i,"receive_site_state",Q)}),[i,Q]),oe=te&&void 0!==q&&void 0!==ne&&void 0!==ae&&void 0!==re?ee?e.createElement(E.d,null):(null==z?void 0:z.length)?q?e.createElement(v.a,{account:ie,finishSetup:n}):e.createElement(S.a,null):e.createElement(h.a,null):e.createElement(y.ProgressBar,null),e.createElement("div",{className:"googlesitekit-setup-module googlesitekit-setup-module--adsense"},e.createElement("div",{className:"googlesitekit-setup-module__step"},e.createElement("div",{className:"googlesitekit-setup-module__logo"},e.createElement(b.a,{width:"33",height:"33"})),e.createElement("h2",{className:"googlesitekit-heading-3 googlesitekit-setup-module__title"},Object(m._x)("AdSense","Service name","google-site-kit"))),e.createElement("div",{className:"googlesitekit-setup-module__step"},e.createElement(E.b,null),!W&&oe))}SetupMain.propTypes={finishSetup:d.a.func}}).call(this,n(3))},519:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountApproved}));var a=n(5),r=n.n(a),i=n(16),o=n.n(i),c=n(2),s=n(1),u=n(4),l=n.n(u),d=n(13),m=n(29),g=n(297),f=n(104),p=n(121),y=l.a.useSelect,b=l.a.useDispatch;function SetupAccountApproved(){var t=y((function(e){return e(m.f).getExistingTag()})),n=y((function(e){return e(m.f).getClientID()})),a=y((function(e){return e(m.f).getOriginalAccountStatus()})),i=y((function(e){return e(m.f).isDoingSubmitChanges()})),u=t===n,l=b(m.f).completeAccountSetup,v=Object(c.useCallback)(o()(r.a.mark((function e(){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,l();case 4:case"end":return e.stop()}}),e)}))),[i,l]);if(void 0===t||void 0===a)return null;var h,S,_,E,T=""===a||f.a===a;return h=T?Object(s.__)("Let Site Kit place AdSense code on your site to get your site approved","google-site-kit"):Object(s.__)("Keep AdSense code placed by Site Kit","google-site-kit"),t&&u?(S=!1,E=_=Object(s.__)("You’ve already got an AdSense code on your site for this account, we recommend you use Site Kit to place code to get the most out of AdSense.","google-site-kit")):t?(S=!0,_=Object(s.sprintf)( +/* translators: %s: account ID */ +Object(s.__)("Site Kit detected AdSense code for a different account %s on your site. For a better ads experience, you should remove AdSense code that’s not linked to this AdSense account.","google-site-kit"),Object(g.a)(t)),E=Object(s.__)("Please note that AdSense will not show ads on your website unless you’ve already placed the code.","google-site-kit")):(S=!1,E=Object(s.__)("Please note that AdSense will not show ads on your website unless you’ve already placed the code.","google-site-kit")),e.createElement(c.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},T&&e.createElement("span",null,Object(s.__)("Looks like you’re already using AdSense","google-site-kit")),!T&&e.createElement("span",null,Object(s.__)("Your account is ready to use AdSense","google-site-kit"))),e.createElement(p.d,null),e.createElement("p",null,T&&e.createElement("span",null,Object(s.__)("Site Kit will place AdSense code on your site to connect your site to AdSense and help you get the most out of ads. This means Google will automatically place ads for you in all the best places.","google-site-kit")),!T&&e.createElement("span",null,Object(s.__)("Site Kit has placed AdSense code on your site to connect your site to AdSense and help you get the most out of ads. This means Google will automatically place ads for you in all the best places.","google-site-kit"))),S&&e.createElement(p.f,null),e.createElement(p.e,{label:h,checkedMessage:_,uncheckedMessage:E,saveOnChange:!0}),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(d.Button,{onClick:v,disabled:i},Object(s.__)("Continue","google-site-kit"))))}}).call(this,n(3))},52:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(31);function r(e){return function(){e[a.a]=e[a.a]||[],e[a.a].push(arguments)}}},520:function(e,t,n){"use strict";function a(e){return"string"==typeof e&&/^pub-\d+$/.test(e)}function r(e){return"string"==typeof e&&/^ca-pub-\d+$/.test(e)}n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return r}))},521:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WebStoriesAdUnitSelect}));var a=n(2),r=n(1),i=n(4),o=n.n(i),c=n(13),s=n(10),u=n(29),l=o.a.useSelect,d=o.a.useDispatch;function WebStoriesAdUnitSelect(){var t=l((function(e){return e(u.f).getAccountID()})),n=l((function(e){return e(u.f).getClientID()})),i=l((function(e){return e(u.f).getWebStoriesAdUnit()})),o=l((function(e){return{adunits:e(u.f).getAdUnits(t,n),hasResolvedAdUnits:e(u.f).hasFinishedResolution("getAdUnits",[t,n])}})),m=o.adunits,g=o.hasResolvedAdUnits,f=d(u.f).setWebStoriesAdUnit,p=Object(a.useCallback)((function(e,t){var n=t.dataset.value;i!==n&&f(n)}),[i,f]);return g?e.createElement(s.q,{className:"googlesitekit-adsense__select-field",label:Object(r.__)("Web Stories Ad Unit","google-site-kit"),value:i,onEnhancedChange:p,enhanced:!0,outlined:!0},e.createElement(s.o,{value:""},Object(r.__)("Select ad unit","google-site-kit")),(m||[]).map((function(t){var n=t._id,a=t.displayName;return e.createElement(s.o,{key:n,value:n},a)}))):e.createElement(c.ProgressBar,{small:!0})}}).call(this,n(3))},522:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdSenseConnectCTA}));var a=n(18),r=n.n(a),i=n(5),o=n.n(i),c=n(16),s=n.n(c),u=n(14),l=n.n(u),d=n(398),m=n(0),g=n.n(m),f=n(1),p=n(2),y=n(72),b=n(4),v=n.n(b),h=n(13),S=n(29),_=n(10),E=n(15),T=n(17),A=n(40),O=n(8),k=n(782),N=n(20),I=n(19),j=v.a.useSelect,C=v.a.useDispatch;function AdSenseConnectCTA(t){var n=t.onDismissModule,a=C(A.a).navigateTo,i=C(T.a).activateModule,c=C(E.c).setInternalServerError,u=Object(I.a)(),m=Object(p.useRef)(),g=Object(p.useState)(!1),b=l()(g,2),v=b[0],w=b[1],D=Object(d.a)(m,{threshold:.25}),R=!!(null==D?void 0:D.intersectionRatio);Object(p.useEffect)((function(){R&&!v&&(Object(O.z)("".concat(u,"_adsense-cta-widget"),"widget_view"),w(!0))}),[R,u,v]);var P=j((function(e){return e(E.c).getGoogleSupportURL({path:"/adsense/answer/9724"})})),M=j((function(e){return e(S.f).getAdminReauthURL()})),Z=j((function(e){return e(T.a).isModuleActive("adsense")})),L=j((function(e){return e(T.a).isModuleConnected("adsense")})),G=Object(p.useCallback)(s()(o.a.mark((function e(){var t,n,r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i("adsense");case 2:if(t=e.sent,n=t.response,!(r=t.error)){e.next=8;break}return c({id:"setup-module-error",description:r.message}),e.abrupt("return",null);case 8:return e.next=10,Object(O.z)("".concat(u,"_adsense-cta-widget"),"activate_module","adsense");case 10:a(n.moduleReauthURL);case 11:case"end":return e.stop()}}),e)}))),[i,a,c,u]),x=Object(p.useCallback)((function(){return a(M)}),[M,a]),U=Object(p.useCallback)((function(){Object(O.z)("".concat(u,"_adsense-cta-widget"),"dismiss_widget"),n()}),[n,u]),B={smSize:4,mdSize:4,lgSize:6};return e.createElement("section",{ref:m,className:"googlesitekit-setup__wrapper googlesitekit-setup__wrapper--adsense-connect"},e.createElement(_.f,null,e.createElement(k.a,{hasBeenInView:v}),e.createElement(_.p,null,e.createElement(_.a,B,e.createElement("div",{className:"googlesitekit-setup-module__action"},!Z&&e.createElement(h.Button,{onClick:G},Object(f.__)("Connect now","google-site-kit")),Z&&!L&&e.createElement(h.Button,{onClick:x},Object(f.__)("Complete setup","google-site-kit")),e.createElement(N.a,{onClick:U},Object(f.__)("Maybe later","google-site-kit")))),e.createElement(_.a,r()({},B,{className:"googlesitekit-setup-module__footer-text"}),e.createElement("p",null,Object(y.a)(Object(f.__)("AdSense accounts are subject to review and approval by the Google AdSense team.","google-site-kit"),{a:e.createElement(N.a,{href:P,external:!0,hideExternalIndicator:!0})}))))))}AdSenseConnectCTA.propTypes={onDismissModule:g.a.func.isRequired}}).call(this,n(3))},523:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return SetupAccountCreate}));var r=n(5),i=n.n(r),o=n(16),c=n.n(o),s=n(2),u=n(1),l=n(4),d=n.n(l),m=n(13),g=n(20),f=n(8),p=n(297),y=n(29),b=n(15),v=n(12),h=n(121),S=n(19),_=d.a.useSelect;function SetupAccountCreate(){var t=Object(S.a)(),n="".concat(t,"_adsense"),r=_((function(e){return e(b.c).getReferenceSiteURL()})),o=_((function(e){return e(v.a).getEmail()})),l=_((function(e){return e(y.f).getExistingTag()})),d=_((function(e){return e(y.f).getServiceCreateAccountURL()})),E=_((function(e){return e(b.c).getGoogleSupportURL({path:"/adsense/answer/2659101"})})),T=Object(s.useCallback)(function(){var t=c()(i.a.mark((function t(a){return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a.preventDefault(),t.next=3,Object(f.z)(n,"create_account");case 3:e.open(d,"_blank");case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),[d,n]);return r&&o&&void 0!==l?a.createElement(s.Fragment,null,a.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(u.__)("Create your AdSense account","google-site-kit")),a.createElement(h.d,null),a.createElement("p",null,Object(u.__)("Site Kit will place AdSense code on every page across your site. This means Google will automatically place ads for you in all the best places.","google-site-kit")),a.createElement(h.f,null),a.createElement("div",{className:"googlesitekit-setup-module__action"},a.createElement(m.Button,{onClick:T,href:d},Object(u.__)("Create AdSense Account","google-site-kit"))),a.createElement("p",{className:"googlesitekit-setup-module__footer-text"},l&&Object(u.sprintf)( +/* translators: 1: client ID, 2: user email address, 3: account ID */ +Object(u.__)("Site Kit detected AdSense code %1$s on your page. We recommend you remove that code or add %2$s as a user to the AdSense account %3$s.","google-site-kit"),l,o,Object(p.a)(l)),!l&&Object(u.sprintf)( +/* translators: %s: user email address */ +Object(u.__)("Already use AdSense? Add %s as a user to an existing AdSense account.","google-site-kit"),o)," ",a.createElement(g.a,{href:E,external:!0,"aria-label":Object(u.__)("Learn more about adding a user to an existing AdSense account","google-site-kit")},Object(u.__)("Learn more","google-site-kit")))):null}}).call(this,n(22),n(3))},524:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountDisapproved}));var a=n(2),r=n(1),i=n(4),o=n.n(i),c=n(20),s=n(29),u=n(121),l=o.a.useSelect;function SetupAccountDisapproved(){var t=l((function(e){return e(s.f).getAccountID()})),n=l((function(e){return e(s.f).getServiceAccountURL()}));return void 0!==t&&n?e.createElement(a.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(r.__)("Your site isn’t ready to show ads yet","google-site-kit")),e.createElement(u.d,null),e.createElement("p",null,Object(r.__)("You need to fix some things before we can connect Site Kit to your AdSense account.","google-site-kit")),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(c.a,{href:n,external:!0},Object(r.__)("Go to AdSense to find out how to fix the issue","google-site-kit")))):null}}).call(this,n(3))},525:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountNoClient}));var a=n(2),r=n(1),i=n(4),o=n.n(i),c=n(20),s=n(121),u=n(15),l=o.a.useSelect;function SetupAccountNoClient(){var t=l((function(e){return e(u.c).getGoogleSupportURL({path:"/adsense/answer/6023158"})}));return e.createElement(a.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(r.__)("Looks like you have an AdMob account","google-site-kit")),e.createElement(s.d,null),e.createElement("p",null,Object(r.__)("To start using AdSense, you need to update your account so that you can connect your site to AdSense.","google-site-kit")),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(c.a,{href:t,external:!0,"aria-label":Object(r.__)("Learn more about updating your AdSense account","google-site-kit")},Object(r.__)("Learn more","google-site-kit"))))}}).call(this,n(3))},526:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountPending}));var a=n(2),r=n(1),i=n(4),o=n.n(i),c=n(20),s=n(29),u=n(121),l=o.a.useSelect;function SetupAccountPending(){var t=l((function(e){return e(s.f).getServiceAccountManageSiteURL()}));return t?e.createElement(a.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(r.__)("Your account is getting ready","google-site-kit")),e.createElement(u.d,null),e.createElement("p",null,Object(r.__)("Site Kit has placed AdSense code on every page across your site.","google-site-kit")," ",Object(r.__)("After you’ve finished setting up your account, we’ll let you know when your site is ready to show ads. This usually takes less than a day, but it can sometimes take a bit longer.","google-site-kit")),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(c.a,{href:t,external:!0},Object(r.__)("Go to your AdSense account to check on your site’s status or to complete setting up","google-site-kit")))):null}}).call(this,n(3))},527:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountSelect}));var a=n(2),r=n(1),i=n(121);function SetupAccountSelect(){return e.createElement(a.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(r.__)("Select your AdSense account","google-site-kit")),e.createElement(i.d,null),e.createElement("p",null,Object(r.__)("Looks like you have multiple AdSense accounts associated with your Google account. Select the account to use with Site Kit below.","google-site-kit")),e.createElement("div",{className:"googlesitekit-setup-module__inputs"},e.createElement(i.a,null)))}}).call(this,n(3))},528:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return SetupSiteAdd}));var r=n(2),i=n(1),o=n(4),c=n.n(o),s=n(13),u=n(29),l=n(121),d=c.a.useSelect;function SetupSiteAdd(){var t=d((function(e){return e(u.f).getAccountID()})),n=d((function(e){return e(u.f).getServiceAccountManageSiteURL()})),o=Object(r.useCallback)((function(t){t.preventDefault(),e.open(n,"_blank")}),[n]);return t&&n?a.createElement(r.Fragment,null,a.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(i.__)("Add site to your AdSense account","google-site-kit")),a.createElement(l.d,null),a.createElement("p",null,Object(i.__)("We’ve detected that you haven’t added this site to your AdSense account yet.","google-site-kit")),a.createElement("div",{className:"googlesitekit-setup-module__action"},a.createElement(s.Button,{onClick:o,href:n},Object(i.__)("Add site to AdSense","google-site-kit")))):null}}).call(this,n(22),n(3))},529:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccount}));var a=n(0),r=n.n(a),i=n(2),o=n(4),c=n.n(o),s=n(13),u=n(29),l=n(104),d=n(530),m=n(531),g=n(532),f=n(533),p=c.a.useSelect,y=c.a.useDispatch;function SetupAccount(t){var n=t.account,a=t.finishSetup,r=n._id,o=n.state,c=p((function(e){return e(u.f).getClientID()})),b=p((function(e){return e(u.f).getCurrentSite(r)})),v=p((function(e){return e(u.f).getAFCClient(r)})),h=y(u.f),S=h.setClientID,_=h.setAccountStatus,E=h.setSiteStatus;return Object(i.useEffect)((function(){(null==v?void 0:v._id)&&c!==v._id?S(v._id):null===v&&c&&S("")}),[v,c,S]),Object(i.useEffect)((function(){null===b&&E(l.o)}),[E,b]),Object(i.useEffect)((function(){void 0!==b&&(c?o===u.b?_(l.g):(null==v?void 0:v.state)===u.d?_(l.c):(null==v?void 0:v.state)===u.a?_(l.b):_(l.k):_(l.i))}),[o,v,c,_,b]),void 0===b?e.createElement(s.ProgressBar,null):c?null===b?e.createElement(g.a,null):o===u.b||(null==v?void 0:v.state)===u.d||(null==v?void 0:v.state)===u.a?e.createElement(f.a,null):e.createElement(d.a,{site:b,finishSetup:a}):e.createElement(m.a,null)}SetupAccount.propTypes={account:r.a.shape({_id:r.a.string,state:r.a.string}),finishSetup:r.a.func}}).call(this,n(3))},53:function(e,t,n){"use strict";n.d(t,"a",(function(){return y})),n.d(t,"b",(function(){return b}));var a=n(6),r=n.n(a),i=n(30),o=n.n(i),c=n(66),s=n(7),u=n.n(s),l=n(81),d=n.n(l),m=n(8);function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function f(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{},a=n.clearMatchingLegacyError,r=void 0!==a&&a;return e&&u()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:e,args:t,clearMatchingLegacyError:r}}},clearErrors:function(e){return{type:"CLEAR_ERRORS",payload:{baseName:e}}}};function b(e){u()(e,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var n={getErrorForSelector:function(t,a){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];u()(a,"selectorName is required.");var i=n.getError(t,a,r);if(i)return f(f({},i),{},{selectorData:{storeName:e,name:a,args:r}})},getErrorForAction:function(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return u()(t,"actionName is required."),n.getError(e,t,a)},getError:function(e,t,n){var a=e.error,r=e.errors;return t||n?(u()(t,"baseName is required."),r[p(t,n)]):a},getErrors:function(e){var t=new Set(Object.values(e.errors));return void 0!==e.error&&t.add(e.error),Array.from(t)},getMetaDataForError:function(e,t){var n=Object.keys(e.errors).find((function(n){return e.errors[n]===t}));return n?{baseName:n.substring(0,n.indexOf("::")),args:e.errorArgs[n]}:null},getSelectorDataForError:Object(c.e)((function(t){return function(n,a){var r=t(e).getMetaDataForError(a);if(r){var i=r.baseName,o=r.args;if(!!t(e)[i])return{storeName:e,name:i,args:o}}return null}})),hasErrors:function(e){return n.getErrors(e).length>0}};return{initialState:t,actions:y,controls:{},reducer:function(e,t){var n=t.type,a=t.payload;switch(n){case"RECEIVE_ERROR":var i=a.baseName,o=a.args,c=a.error;if(i){var s=p(i,o);return f(f({},e),{},{errors:f(f({},e.errors||{}),{},r()({},s,c)),errorArgs:f(f({},e.errorArgs||{}),{},r()({},s,o))})}return f(f({},e),{},{error:c});case"CLEAR_ERROR":var u=a.baseName,l=a.args,d=f({},e);if(u){var m=p(u,l);d.errors=f({},e.errors||{}),d.errorArgs=f({},e.errorArgs||{}),a.clearMatchingLegacyError&&d.error===d.errors[m]&&delete d.error,delete d.errors[m],delete d.errorArgs[m]}else d.error=void 0;return d;case"CLEAR_ERRORS":var g=a.baseName,y=f({},e);if(g)for(var b in y.errors=f({},e.errors||{}),y.errorArgs=f({},e.errorArgs||{}),y.errors)(b===g||b.startsWith("".concat(g,"::")))&&(delete y.errors[b],delete y.errorArgs[b]);else y.errors={},y.errorArgs={},y.error=void 0;return y;default:return e}},resolvers:{},selectors:n}}},530:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountSite}));var a=n(0),r=n.n(a),i=n(2),o=n(1),c=n(4),s=n.n(c),u=n(29),l=n(104),d=n(785),m=n(786),g=n(787),f=n(788),p=n(82),y=s.a.useDispatch;function SetupAccountSite(t){var n=t.site,a=t.finishSetup,r=n.autoAdsEnabled,c=n.state,s=y(u.f).setSiteStatus;switch(Object(i.useEffect)((function(){var e;switch(c){case u.b:e=l.n;break;case u.d:e=l.r;break;case u.a:e=l.m;break;case u.c:e=r?l.p:l.q}e&&s(e)}),[r,s,c]),c){case u.b:return e.createElement(d.a,null);case u.d:return e.createElement(g.a,null);case u.a:return e.createElement(m.a,null);case u.c:return e.createElement(f.a,{site:n,finishSetup:a});default:return e.createElement(p.a,{message:Object(o.sprintf)( +/* translators: %s: invalid site state identifier */ +Object(o.__)("Invalid site state %s","google-site-kit"),c)})}}SetupAccountSite.propTypes={site:r.a.shape({autoAdsEnabled:r.a.bool,state:r.a.string}).isRequired,finishSetup:r.a.func}}).call(this,n(3))},531:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountNoClient}));var a=n(2),r=n(72),i=n(1),o=n(4),c=n.n(o),s=n(13),u=n(20),l=n(121),d=n(8),m=n(15),g=n(19),f=c.a.useSelect;function SetupAccountNoClient(){var t=Object(g.a)(),n=f((function(e){return e(m.c).getGoogleSupportURL({path:"/adsense/answer/6023158"})})),o=Object(a.useCallback)((function(){Object(d.z)("".concat(t,"_adsense"),"apply_afc")}),[t]);return e.createElement(a.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(i.__)("Looks like you need to upgrade your AdSense account","google-site-kit")),e.createElement(l.d,null),e.createElement("p",null,Object(r.a)(Object(i.__)("To start using AdSense on your website, you need to upgrade your account to add “AdSense for contentâ€. Learn more","google-site-kit"),{a:e.createElement(u.a,{href:n,external:!0,"aria-label":Object(i.__)("Learn more about updating your AdSense account","google-site-kit")})})),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(s.Button,{href:"https://www.google.com/adsense",target:"_blank","aria-label":Object(i.__)("Learn more about updating your AdSense account","google-site-kit"),onClick:o},Object(i.__)("Apply now","google-site-kit"))))}}).call(this,n(3))},532:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return SetupAccountCreateSite}));var r=n(2),i=n(1),o=n(4),c=n.n(o),s=n(13),u=n(29),l=n(121),d=n(8),m=n(19),g=c.a.useSelect;function SetupAccountCreateSite(){var t=Object(m.a)(),n=g((function(e){return e(u.f).getServiceAccountManageSiteURL()})),o=Object(r.useCallback)((function(a){a.preventDefault(),Object(d.z)("".concat(t,"_adsense"),"create_site"),e.open(n,"_blank")}),[n,t]);return a.createElement(r.Fragment,null,a.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(i.__)("Add this site to your AdSense account","google-site-kit")),a.createElement(l.d,null),a.createElement("p",null,Object(i.__)("We’ve detected that you haven’t added this site to your AdSense account yet.","google-site-kit")),a.createElement("div",{className:"googlesitekit-setup-module__action"},a.createElement(s.Button,{onClick:o,href:n},Object(i.__)("Add site to AdSense","google-site-kit"))))}}).call(this,n(22),n(3))},533:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupAccountPendingTasks}));var a=n(2),r=n(1),i=n(4),o=n.n(i),c=n(13),s=n(422),u=n(29),l=n(121),d=n(8),m=n(19),g=o.a.useSelect;function SetupAccountPendingTasks(){var t=Object(m.a)(),n=Object(a.useCallback)((function(){Object(d.z)("".concat(t,"_adsense"),"review_tasks")}),[t]),i=g((function(e){return e(u.f).getServiceAccountURL()}));return e.createElement(a.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(r.__)("Your account isn’t ready to show ads yet","google-site-kit")),e.createElement(l.d,null),e.createElement("p",null,Object(r.__)("You need to fix some things before we can connect Site Kit to your AdSense account.","google-site-kit")),e.createElement(s.a,null),e.createElement("div",{className:"googlesitekit-setup-module__action"},e.createElement(c.Button,{onClick:n,href:i},Object(r.__)("Review AdSense account","google-site-kit"))))}}).call(this,n(3))},534:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return SetupCreateAccount}));var r=n(5),i=n.n(r),o=n(16),c=n.n(o),s=n(2),u=n(72),l=n(1),d=n(4),m=n.n(d),g=n(13),f=n(20),p=n(8),y=n(297),b=n(29),v=n(15),h=n(12),S=n(121),_=n(19),E=m.a.useSelect;function SetupCreateAccount(){var t=Object(_.a)(),n="".concat(t,"_adsense"),r=E((function(e){return e(h.a).getEmail()})),o=E((function(e){return e(b.f).getExistingTag()})),d=E((function(e){return e(b.f).getServiceCreateAccountURL()})),m=E((function(e){return e(v.c).getGoogleSupportURL({path:"/adsense/answer/2659101"})})),T=Object(s.useCallback)(function(){var t=c()(i.a.mark((function t(a){return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a.preventDefault(),t.next=3,Object(p.z)(n,"create_account");case 3:e.open(d,"_blank");case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),[d,n]);return a.createElement(s.Fragment,null,a.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(l.__)("Create your AdSense account","google-site-kit")),a.createElement(S.d,null),a.createElement("p",null,Object(l.__)("Once you create your account, Site Kit will place AdSense code on every page across your site. This means your site will be automatically optimized to help you earn money from your content.","google-site-kit")),a.createElement(S.f,null),a.createElement("div",{className:"googlesitekit-setup-module__action"},a.createElement(g.Button,{onClick:T,href:d},Object(l.__)("Create AdSense account","google-site-kit"))),a.createElement("p",{className:"googlesitekit-setup-module__footer-text"},o&&Object(l.sprintf)( +/* translators: 1: client ID, 2: user email address, 3: account ID */ +Object(l.__)("Site Kit detected AdSense code %1$s on your page. We recommend you remove that code or add %2$s as a user to the AdSense account %3$s.","google-site-kit"),o,r,Object(y.a)(o)),!o&&Object(u.a)(Object(l.sprintf)( +/* translators: %s: user email address */ +Object(l.__)("Already use AdSense? Add %s as a user to an existing AdSense account. Learn more","google-site-kit"),r),{a:a.createElement(f.a,{href:m,external:!0,"aria-label":Object(l.__)("Learn more about adding a user to an existing AdSense account","google-site-kit")})})))}}).call(this,n(22),n(3))},535:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SetupSelectAccount}));var a=n(2),r=n(1),i=n(121);function SetupSelectAccount(){return e.createElement(a.Fragment,null,e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(r.__)("Select your AdSense account","google-site-kit")),e.createElement(i.d,null),e.createElement("p",null,Object(r.__)("Looks like you have multiple AdSense accounts associated with your Google account. Select the account to use with Site Kit below.","google-site-kit")),e.createElement("div",{className:"googlesitekit-setup-module__inputs"},e.createElement(i.a,null)))}}).call(this,n(3))},536:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SettingsForm}));var a=n(1),r=n(2),i=n(4),o=n.n(i),c=n(13),s=n(29),u=n(297),l=n(121),d=n(521),m=n(20),g=n(15),f=o.a.useSelect;function SettingsForm(){var t,n,i=f((function(e){return e(g.c).isWebStoriesActive()})),o=f((function(e){return e(s.f).getClientID()})),p=f((function(e){return{existingTag:e(s.f).getExistingTag(),hasResolvedGetExistingTag:e(s.f).hasFinishedResolution("getExistingTag")}})),y=p.existingTag;if(!p.hasResolvedGetExistingTag)return e.createElement(c.ProgressBar,null);y&&y===o?n=t=Object(a.__)("You’ve already got an AdSense code on your site for this account, we recommend you use Site Kit to place code to get the most out of AdSense.","google-site-kit"):y?(t=Object(a.sprintf)( +/* translators: %s: account ID */ +Object(a.__)("Site Kit detected AdSense code for a different account %s on your site. For a better ads experience, you should remove AdSense code that’s not linked to this AdSense account.","google-site-kit"),Object(u.a)(y)),n=Object(a.__)("Please note that AdSense will not show ads on your website unless you’ve already placed the code.","google-site-kit")):n=Object(a.__)("Please note that AdSense will not show ads on your website unless you’ve already placed the code.","google-site-kit");return e.createElement("div",{className:"googlesitekit-adsense-settings-fields"},e.createElement(l.d,null),e.createElement(l.e,{checkedMessage:t,uncheckedMessage:n}),i&&e.createElement(r.Fragment,null,e.createElement(d.a,null),e.createElement("p",null,Object(a.__)("This ad unit will be used for your Web Stories.","google-site-kit")," ",e.createElement(m.a,{href:"https://support.google.com/adsense/answer/10175505#create-an-ad-unit-for-web-stories",external:!0,"aria-label":Object(a.__)("Learn more about Ad Sense Web Stories.","google-site-kit")},Object(a.__)("Learn more","google-site-kit")))),e.createElement(l.c,null))}}).call(this,n(3))},537:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return DashboardZeroData}));var a=n(1),r=n(10),i=n(421);function DashboardZeroData(){return e.createElement(r.f,{fill:!0},e.createElement(r.p,null,e.createElement(r.a,{size:12},e.createElement("h3",{className:"googlesitekit-heading-4 googlesitekit-setup-module__title"},Object(a.__)("No ad impressions yet","google-site-kit")),e.createElement("p",null,Object(a.__)("You don’t have any ad impressions yet. Make sure you’ve completed these steps in AdSense:","google-site-kit")),e.createElement(i.a,null))))}}).call(this,n(3))},56:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(23),r=n(19);function i(){var e=Object(r.a)();return e===a.k||e===a.i}},58:function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"e",(function(){return o})),n.d(t,"d",(function(){return c})),n.d(t,"b",(function(){return s})),n.d(t,"c",(function(){return u}));n(57);var a="missing_required_scopes",r="insufficientPermissions",i="forbidden";function o(e){return(null==e?void 0:e.code)===a}function c(e){var t;return[r,i].includes(null==e||null===(t=e.data)||void 0===t?void 0:t.reason)}function s(e){var t;return!!(null==e||null===(t=e.data)||void 0===t?void 0:t.reconnectURL)}function u(e,t){return!(!(null==t?void 0:t.storeName)||c(e)||o(e)||s(e))}},60:function(e,t,n){"use strict";(function(e){var a=n(18),r=n.n(a),i=n(21),o=n.n(i),c=n(0),s=n.n(c),u=n(11),l=n.n(u);function VisuallyHidden(t){var n=t.className,a=t.children,i=o()(t,["className","children"]);return a?e.createElement("span",r()({},i,{className:l()("screen-reader-text",n)}),a):null}VisuallyHidden.propTypes={className:s.a.string,children:s.a.node},VisuallyHidden.defaultProps={className:""},t.a=VisuallyHidden}).call(this,n(3))},600:function(e,t,n){"use strict";var a=n(310);n.d(t,"b",(function(){return a.a}));var r=n(223);n.d(t,"c",(function(){return r.a}));var i=n(311);n.d(t,"a",(function(){return i.a}))},601:function(e,t,n){"use strict";(function(e){var a=n(1),r=n(12),i=n(338),o=n(4),c=n.n(o).a.useSelect;t.a=function Header(){var t=c((function(e){return e(r.a).getDateRangeNumberOfDays()}));return e.createElement(i.a,{title:Object(a.sprintf)( +/* translators: %s: number of days */ +Object(a._n)("Performance over the last %s day","Performance over the last %s days",t,"google-site-kit"),t)})}}).call(this,n(3))},602:function(e,t,n){"use strict";(function(e){var a=n(1),r=n(29),i=n(12),o=n(791),c=n(105),s=n(4),u=n.n(s),l=n(56),d=u.a.useSelect;t.a=function Footer(){var t=Object(l.a)(),n=d((function(e){return e(i.a).getDateRangeDates({offsetDays:r.e})})),s=d((function(e){return t?null:e(r.f).getServiceReportURL(Object(o.a)(n))}));return e.createElement(c.a,{href:s,name:Object(a._x)("AdSense","Service name","google-site-kit"),external:!0})}}).call(this,n(3))},62:function(e,t,n){"use strict";(function(e){var a=n(0),r=n.n(a),i=n(11),o=n.n(i);function ChangeArrow(t){var n=t.direction,a=t.invertColor,r=t.width,i=t.height;return e.createElement("svg",{className:o()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(n),{"googlesitekit-change-arrow--inverted-color":a}),width:r,height:i,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:r.a.string,invertColor:r.a.bool,width:r.a.number,height:r.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,n(3))},63:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return c}));var a=n(30),r=n.n(a),i=n(78),o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:i.a.sanitize(e,t)}};function c(e){var t,n="object"===r()(e)?e.toString():e;return null==n||null===(t=n.replace)||void 0===t?void 0:t.call(n,/\/+$/,"")}},65:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return l}));var a=n(6),r=n.n(a),i=n(0),o=n.n(i),c=n(11),s=n.n(c),u=n(1),l={DEFAULT:"default",OVERLAY:"overlay",SMALL:"small",SMALL_OVERLAY:"small-overlay",LARGE:"large"};function GatheringDataNotice(t){var n=t.style;return e.createElement("div",{className:s()("googlesitekit-gathering-data-notice",r()({},"googlesitekit-gathering-data-notice--has-style-".concat(n),!!n))},e.createElement("span",null,Object(u.__)("Gathering data…","google-site-kit")))}GatheringDataNotice.propTypes={style:o.a.oneOf(Object.values(l))},t.b=GatheringDataNotice}).call(this,n(3))},68:function(e,t,n){"use strict";n.d(t,"d",(function(){return a.e})),n.d(t,"c",(function(){return a.d})),n.d(t,"b",(function(){return a.b})),n.d(t,"a",(function(){return a.a})),n.d(t,"e",(function(){return a.f})),n.d(t,"g",(function(){return c})),n.d(t,"h",(function(){return u})),n.d(t,"i",(function(){return l})),n.d(t,"j",(function(){return d.a})),n.d(t,"f",(function(){return g})),n.d(t,"k",(function(){return s.a}));var a=n(36),r=n(7),i=n.n(r),o=n(37),c=function(e){i()(Object(o.a)(e),a.c);var t="".concat(e.getMonth()+1),n="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,n.length<2?"0".concat(n):n].join("-")},s=n(38),u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=Object(s.a)(e);return n.setDate(n.getDate()-t),c(n)},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},d=n(43);var m=n(1);function g(){var e=function(e){return Object(m.sprintf)( +/* translators: %s: number of days */ +Object(m._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},69:function(e,t,n){"use strict";n.d(t,"a",(function(){return N})),n.d(t,"b",(function(){return I})),n.d(t,"c",(function(){return j})),n.d(t,"d",(function(){return w})),n.d(t,"e",(function(){return D})),n.d(t,"g",(function(){return P})),n.d(t,"f",(function(){return M}));var a,r=n(5),i=n.n(r),o=n(24),c=n.n(o),s=n(6),u=n.n(s),l=n(7),d=n.n(l),m=n(201),g=n.n(m),f=n(71),p=n.n(f),y=n(66);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function v(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r.reduce((function(e,n){return n(e,t)}),e)}},T=h,A=h,O=h,k=function(e){return e},N=function(){for(var e=arguments.length,t=new Array(e),n=0;n=1?n[r]+1:1,n[r]>1&&t.push(r)}return t},w={actions:I,controls:j,reducer:k},D=function(e){return function(t){return R(e(t))}},R=p()((function(e){return g()(e,(function(e,t){return function(){var n=e.apply(void 0,arguments);return d()(void 0!==n,"".concat(t,"(...) is not resolved")),n}}))}));function P(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.negate,a=void 0!==n&&n,r=Object(y.e)((function(t){return function(n){var r=!a,i=!!a;try{for(var o=arguments.length,c=new Array(o>1?o-1:0),s=1;s1?a-1:0),i=1;i".concat(n,"")),{a:e.createElement(s.a,{className:"googlesitekit-settings-module__edit-button",href:g})}))}}).call(this,n(3))},703:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SettingsView}));var a=n(1),r=n(72),i=n(4),o=n.n(i),c=n(157),s=n(20),u=n(60),l=n(117),d=n(15),m=n(328),g=n(29),f=n(104),p=n(121),y=o.a.useSelect;function SettingsView(){var t,n,i=Object(l.a)("adsenseSetupV2"),o=y((function(e){return e(g.f).getAccountID()})),b=y((function(e){return e(g.f).getClientID()})),v=y((function(e){return e(g.f).getAccountStatus()})),h=y((function(e){return e(g.f).getSiteStatus()})),S=y((function(e){return e(g.f).getUseSnippet()})),_=y((function(e){return e(g.f).getExistingTag()})),E=y((function(e){return e(g.f).getServiceAccountManageSitesURL()})),T=y((function(e){return e(d.c).isWebStoriesActive()})),A=y((function(e){return e(g.f).getWebStoriesAdUnit()})),O=y((function(e){return e(g.f).getAutoAdsDisabled()||[]}));switch(v){case f.a:t=Object(a.__)("Your account has been approved","google-site-kit");break;case f.k:t=Object(a.__)("Your site is ready for ads","google-site-kit");break;case f.j:case f.e:t=Object(a.__)("We’re getting your site ready for ads. This usually takes less than a day, but it can sometimes take a bit longer","google-site-kit");break;case f.i:case f.d:case f.g:case f.c:case f.b:t=Object(a.__)("You need to fix some issues before your account is approved. Go to AdSense to find out how to fix it","google-site-kit");break;default:t=Object(a.__)("Your site isn’t ready to show ads yet","google-site-kit")}switch(h){case f.n:case f.r:n=Object(a.__)("You need to fix some things before your site is ready.","google-site-kit");break;case f.m:n=Object(a.__)("Your site is getting ready.","google-site-kit");break;case f.p:n=Object(a.__)("Your site is ready for ads.","google-site-kit");break;case f.q:n=Object(a.__)("Your site is ready, with auto-ads disabled.","google-site-kit");break;default:n=""}var k,N=i?Object(r.a)(Object(a.__)("View site in AdSense","google-site-kit"),{VisuallyHidden:e.createElement(u.a,null)}):Object(a.__)("Check your site status","google-site-kit");k=S?Object(a.__)("The AdSense code has been placed on your site","google-site-kit"):_&&_===b?Object(a.__)("The AdSense code has been placed by another plugin or theme","google-site-kit"):Object(a.__)("The AdSense code has not been placed on your site","google-site-kit");var I=Object(a.__)("Ads are currently displayed for all visitors","google-site-kit");return O.includes(m.b)&&O.includes(m.a)?I=Object(a.__)("All logged-in users and users who can write posts","google-site-kit"):O.includes(m.b)?I=m.d[m.b]:O.includes(m.a)&&(I=m.d[m.a]),e.createElement("div",{className:"googlesitekit-setup-module googlesitekit-setup-module--adsense"},e.createElement(p.d,null),e.createElement("div",{className:"googlesitekit-settings-module__meta-items"},e.createElement("div",{className:"googlesitekit-settings-module__meta-item"},e.createElement("h5",{className:"googlesitekit-settings-module__meta-item-type"},Object(a.__)("Publisher ID","google-site-kit")),e.createElement("p",{className:"googlesitekit-settings-module__meta-item-data"},e.createElement(c.a,{value:o}))),e.createElement("div",{className:"googlesitekit-settings-module__meta-item"},e.createElement("h5",{className:"googlesitekit-settings-module__meta-item-type"},Object(a.__)("Account Status","google-site-kit")),e.createElement("p",{className:"googlesitekit-settings-module__meta-item-data"},t)),e.createElement("div",{className:"googlesitekit-settings-module__meta-item"},e.createElement("h5",{className:"googlesitekit-settings-module__meta-item-type"},Object(a.__)("Site Status","google-site-kit")),e.createElement("p",{className:"googlesitekit-settings-module__meta-item-data"},i&&n+" ",e.createElement(s.a,{href:E,className:"googlesitekit-settings-module__cta-button",external:!0,disabled:void 0===E,hideExternalIndicator:void 0===E},N)))),e.createElement("div",{className:"googlesitekit-settings-module__meta-items"},e.createElement("div",{className:"googlesitekit-settings-module__meta-item"},e.createElement("h5",{className:"googlesitekit-settings-module__meta-item-type"},Object(a.__)("AdSense Code","google-site-kit")),e.createElement("p",{className:"googlesitekit-settings-module__meta-item-data"},k))),e.createElement("div",{className:"googlesitekit-settings-module__meta-items"},e.createElement("div",{className:"googlesitekit-settings-module__meta-item"},e.createElement("h5",{className:"googlesitekit-settings-module__meta-item-type"},Object(a.__)("Excluded from ads","google-site-kit")),e.createElement("p",{className:"googlesitekit-settings-module__meta-item-data"},I))),T&&e.createElement("div",{className:"googlesitekit-settings-module__meta-items"},e.createElement("div",{className:"googlesitekit-settings-module__meta-item"},e.createElement("div",{className:"googlesitekit-settings-module__meta-item"},e.createElement("h5",{className:"googlesitekit-settings-module__meta-item-type"},Object(a.__)("Web Stories Ad Unit","google-site-kit")),e.createElement("p",{className:"googlesitekit-settings-module__meta-item-data"},!A&&e.createElement("span",null,Object(a.__)("None","google-site-kit")),A&&e.createElement(c.a,{value:A}))))))}}).call(this,n(3))},704:function(e,t,n){"use strict";(function(e){var a=n(14),r=n.n(a),i=n(1),o=n(653),c=n(4),s=n.n(c),u=n(9),l=n(12),d=n(29),m=n(195),g=n(222),f=n(105),p=n(319),y=n(320),b=n(20),v=n(420),h=n(256),S=n(110),_=n(8),E=n(789),T=n(56),A=s.a.useSelect,O=s.a.useInViewSelect;t.a=Object(o.a)(Object(m.a)({moduleName:"adsense"}),Object(m.a)({moduleName:"analytics"}))((function DashboardTopEarningPagesWidget(t){var n,a,o=t.Widget,c=t.WidgetReportError,s=t.WidgetNull,m=Object(T.a)(),k=O((function(e){return e(u.f).isGatheringData()})),N=A((function(e){return e(l.a).getDateRangeDates({offsetDays:u.b})})),I=N.startDate,j=N.endDate,C={startDate:I,endDate:j,dimensions:["ga:pageTitle","ga:pagePath"],metrics:[{expression:"ga:adsenseRevenue",alias:"Earnings"},{expression:"ga:adsenseECPM",alias:"Page RPM"},{expression:"ga:adsensePageImpressions",alias:"Impressions"}],orderby:{fieldName:"ga:adsenseRevenue",sortOrder:"DESCENDING"},limit:5},w=O((function(e){return e(u.f).getReport(C)})),D=O((function(e){return e(d.f).getReport({startDate:I,endDate:j,metrics:"ESTIMATED_EARNINGS"})})),R=A((function(e){return e(u.f).getErrorForSelector("getReport",[C])})),P=A((function(e){return!e(u.f).hasFinishedResolution("getReport",[C])})),M=A((function(e){if(!m||!P)return e(u.f).getAdsenseLinked()})),Z=A((function(e){return e(d.f).isAdBlockerActive()})),L=Object(E.a)(D),G=A((function(e){return m?null:e(u.f).getServiceReportURL("content-publisher-overview",Object(h.a)({startDate:I,endDate:j}))})),x=function Footer(){return e.createElement(f.a,{className:"googlesitekit-data-block__source",name:Object(i._x)("Analytics","Service name","google-site-kit"),href:G,external:!0})};if(Z)return e.createElement(o,{Footer:x},e.createElement(v.a,null));if(P||void 0===k)return e.createElement(o,{noPadding:!0,Footer:x},e.createElement(g.a,{rows:5,padding:!0}));if(!M&&m)return e.createElement(s,null);if(!M&&!m)return e.createElement(o,{Footer:x},e.createElement(S.d,null));if(R)return e.createElement(o,{Footer:x},e.createElement(c,{moduleSlug:"analytics",error:R}));var U=[{title:Object(i.__)("Top Earning Pages","google-site-kit"),tooltip:Object(i.__)("Top Earning Pages","google-site-kit"),primary:!0,Component:function Component(t){var n=t.row,a=r()(n.dimensions,2),i=a[0],o=a[1];return e.createElement(b.a,{href:o,children:i,external:!0,hideExternalIndicator:!0})}},{title:Object(i.__)("Earnings","google-site-kit"),tooltip:Object(i.__)("Earnings","google-site-kit"),field:"metrics.0.values.0",Component:function Component(t){var n=t.fieldValue;return e.createElement("span",null,Object(_.u)(n,L))}}];return e.createElement(o,{noPadding:!0,Footer:x},e.createElement(p.a,null,e.createElement(y.a,{rows:(null==w||null===(n=w[0])||void 0===n||null===(a=n.data)||void 0===a?void 0:a.rows)||[],columns:U,zeroState:S.p,gatheringData:k})))}))}).call(this,n(3))},705:function(e,t,n){"use strict";(function(e){var a=n(0),r=n.n(a),i=n(4),o=n.n(i),c=n(29),s=n(420),u=n(195),l=o.a.useSelect;function AdBlockerWarningWidget(t){var n=t.Widget,a=t.WidgetNull;return l((function(e){return e(c.f).isAdBlockerActive()}))?e.createElement(n,{noPadding:!0},e.createElement(s.a,null)):e.createElement(a,null)}AdBlockerWarningWidget.propTypes={Widget:r.a.elementType.isRequired},t.a=Object(u.a)({moduleName:"adsense"})(AdBlockerWarningWidget)}).call(this,n(3))},706:function(e,t,n){"use strict";(function(e){var a=n(5),r=n.n(a),i=n(16),o=n.n(i),c=n(2),s=n(1),u=n(0),l=n.n(u),d=n(4),m=n.n(d),g=n(522),f=n(354),p=n(12),y=n(17),b=n(19),v=n(8),h=n(600),S=m.a.useDispatch,_=m.a.useSelect;function AdSenseConnectCTAWidget(t){var n=t.Widget,a=t.WidgetNull,i=S(p.a).dismissItem,u=Object(h.c)(f.b).isTooltipVisible,l=Object(b.a)(),d=_((function(e){return e(y.a).isModuleConnected("adsense")})),m=_((function(e){return e(p.a).isItemDismissed(f.a)})),E=Object(h.b)(f.b),T=Object(c.useCallback)(o()(r.a.mark((function e(){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(v.z)("".concat(l,"_adsense-cta-widget"),"dismiss_tooltip");case 2:return e.next=4,i(f.a);case 4:case"end":return e.stop()}}),e)}))),[i,l]);return u?e.createElement(c.Fragment,null,e.createElement(a,null),e.createElement(h.a,{title:Object(s.__)("You can always connect AdSense from here later","google-site-kit"),content:Object(s.__)("The Monetization section will be added back to your dashboard if you connect AdSense in Settings later.","google-site-kit"),dismissLabel:Object(s.__)("Got it","google-site-kit"),onDismiss:T,tooltipStateKey:f.b})):!1===d&&!1===m?e.createElement(n,{noPadding:!0},e.createElement(g.a,{onDismissModule:E})):e.createElement(a,null)}AdSenseConnectCTAWidget.propTypes={Widget:l.a.elementType.isRequired},t.a=AdSenseConnectCTAWidget}).call(this,n(3))},707:function(e,t,n){"use strict";(function(e){var a=n(6),r=n.n(a),i=n(14),o=n.n(i),c=n(0),s=n.n(c),u=n(2),l=n(1),d=n(117),m=n(29),g=n(12),f=n(230),p=n(537),y=n(133),b=n(99),v=n(195),h=n(601),S=n(602),_=n(792),E=n(793),T=n(4),A=n.n(T);function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function k(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=v(e,t),a=n.formatUnit,r=n.formatDecimal;try{return a()}catch(e){return r()}},v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var n=Math.floor(e/60/60),a=Math.floor(e/60%60),r=Math.floor(e%60);return{hours:n,minutes:a,seconds:r,formatUnit:function(){var i=t.unitDisplay,o=y(y({unitDisplay:void 0===i?"short":i},l()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?T(r,y(y({},o),{},{unit:"second"})):Object(f.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(f._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),r?T(r,y(y({},o),{},{unit:"second"})):"",a?T(a,y(y({},o),{},{unit:"minute"})):"",n?T(n,y(y({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(f.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(f.__)("%ds","google-site-kit"),r);if(0===e)return t;var i=Object(f.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(f.__)("%dm","google-site-kit"),a),o=Object(f.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(f.__)("%dh","google-site-kit"),n);return Object(f.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(f._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),r?t:"",a?i:"",n?o:"").trim()}}},h=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},S=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(f.sprintf)(// translators: %s: an abbreviated number in millions. +Object(f.__)("%sM","google-site-kit"),T(h(e),e%10==0?{}:t)):1e4<=e?Object(f.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(f.__)("%sK","google-site-kit"),T(h(e))):1e3<=e?Object(f.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(f.__)("%sK","google-site-kit"),T(h(e),e%10==0?{}:t)):T(e,{signDisplay:"never",maximumFractionDigits:1})},_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(d.isFinite)(e)?e:Number(e),Object(d.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var n={};if("%"===t)n={style:"percent",maximumFractionDigits:2};else{if("s"===t)return b(e,{unitDisplay:"narrow"});t&&"string"==typeof t?n={style:"currency",currency:t}:Object(d.isPlainObject)(t)&&(n=y({},t))}var a=n,r=a.style,i=void 0===r?"metric":r;return"metric"===i?S(e):"duration"===i?b(e,t):T(e,n)},E=g()(console.warn),T=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,a=void 0===n?O():n,i=l()(t,["locale"]);try{return new Intl.NumberFormat(a,i).format(e)}catch(t){E("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(a),", ").concat(JSON.stringify(i)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},s=["signDisplay","compactDisplay"],u={},d=0,m=Object.entries(i);d1&&void 0!==arguments[1]?arguments[1]:{},n=t.locale,a=void 0===n?O():n,r=t.style,i=void 0===r?"long":r,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var s=new Intl.ListFormat(a,{style:i,type:c});return s.format(e)} +/* translators: used between list items, there is a space after the comma. */var u=Object(f.__)(", ","google-site-kit");return e.join(u)},O=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,n=Object(d.get)(t,["_googlesitekitLegacyData","locale"]);if(n){var a=n.match(/^(\w{2})?(_)?(\w{2})/);if(a&&a[0])return a[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,n(22))},77:function(e,t,n){"use strict";n.d(t,"m",(function(){return T})),n.d(t,"k",(function(){return A})),n.d(t,"c",(function(){return y})),n.d(t,"d",(function(){return b})),n.d(t,"i",(function(){return v})),n.d(t,"j",(function(){return h})),n.d(t,"h",(function(){return S})),n.d(t,"g",(function(){return _})),n.d(t,"f",(function(){return y})),n.d(t,"e",(function(){return E})),n.d(t,"l",(function(){return I})),n.d(t,"b",(function(){return j})),n.d(t,"a",(function(){return w}));var a=n(24),r=n.n(a),i=n(26),o=n(11),c=n.n(o),s=n(1),u=n(73),l=n(165),d=n(8),m=n(145),g=n(14),f=n.n(g),p=n(9),y=function(e){return(parseInt(e,10)||0)>0};function b(e){return e===p.a||y(e)}function v(e){return"string"==typeof e&&/^UA-\d+-\d+$/.test(e)}function h(e){return e===p.h||v(e)}function S(e){return e===p.g||y(e)}function _(e){return"string"==typeof e&&e.trim().length>0}function E(e){return"string"==typeof e&&/^AW-[0-9]+$/.test(e)}function T(e){if(!v(e))return!1;var t=e.match(/^UA-(\d+)-(\d+)/),n=f()(t,3);return{accountID:n[1],propertyID:e,number:n[2]}}function A(e){var t,n,a,r,i,o,c,s;if(void 0!==e)return!(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(a=n.rows)||void 0===a?void 0:a.length)||!(null==e||null===(r=e[0])||void 0===r||null===(i=r.data)||void 0===i||null===(o=i.totals)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.values)||void 0===s?void 0:s.length)||!e[0].data.totals.some((function(e){return e.values.some((function(e){return e>0}))}))}var O=n(51);function k(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return N(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:{},r=a.keyColumnIndex,i=void 0===r?0:r,o=a.maxSlices,c=a.withOthers,u=void 0!==c&&c,l=a.tooltipCallback,d=(null==e?void 0:e[0])||{},m=d.data,g=void 0===m?{}:m,f=g.rows,p=void 0===f?[]:f,y=g.totals,b=void 0===y?[]:y,v="function"==typeof l,h=["Source","Percent"];v&&h.push({type:"string",role:"tooltip",p:{html:!0}});var S=(null==b||null===(t=b[0])||void 0===t||null===(n=t.values)||void 0===n?void 0:n[i])||0,_=[h],E=u,T=p.length,A=1;o>0?(E=u&&p.length>o,T=Math.min(p.length,E?o-1:o)):(E=!1,T=p.length);for(var O=0;O0?N/S:0;A-=I;var j=[k.dimensions[0],I];v&&j.push(l(k,j)),_.push(j)}if(E&&A>0){var C=[Object(s.__)("Others","google-site-kit"),A];v&&C.push(l(null,C)),_.push(C)}return _}function C(e,t,n){var a=[];return Object(i.each)(e,(function(e){if(e.metrics){var r=e.metrics[t].values,i=e.dimensions[0],o=Object(l.a)(i);a.push([o,r[n]])}})),a}function w(e,t,n){var a,o,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,g=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,f=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[Object(s.__)("Users","google-site-kit"),Object(s.__)("Sessions","google-site-kit"),Object(s.__)("Bounce Rate %","google-site-kit"),Object(s.__)("Session Duration","google-site-kit")],p=arguments.length>6&&void 0!==arguments[6]?arguments[6]:[function(e){return parseFloat(e).toLocaleString()},function(e){return parseFloat(e).toLocaleString()},function(e){return Object(d.u)(e/100,{style:"percent",signDisplay:"never",maximumFractionDigits:2})},function(e){return Object(d.u)(e,"s")}];if(!Array.isArray(null===(a=e[0])||void 0===a||null===(o=a.data)||void 0===o?void 0:o.rows))return!1;var y=r()(e[0].data.rows),b=y.length;if(2*n>b){for(var v=new Date,h=0;n>h;h++){var S=(v.getMonth()+1).toString(),_=v.getDate().toString(),E=v.getFullYear().toString()+(2>S.length?"0":"")+S+(2>_.length?"0":"")+_;if(h>b){var T={dimensions:[E],metrics:[{values:[0,0,0,0,0]}]};y.unshift(T)}v.setDate(v.getDate()-1)}y.push([0,0])}var A=f[t]===Object(s.__)("Session Duration","google-site-kit"),O=A?"timeofday":"number",k=[[{type:"date",label:Object(s.__)("Day","google-site-kit")},{type:"string",role:"tooltip",p:{html:!0}},{type:O,label:f[t]},{type:O,label:Object(s.__)("Previous period","google-site-kit")}]],N=Object(m.a)(y,{dateRangeLength:n}),I=N.compareRange,j=N.currentRange,w=C(j,l,t),D=C(I,g,t),R=Object(u.a)(),P={weekday:"short",month:"short",day:"numeric"};return Object(i.each)(w,(function(e,n){if(e[0]&&e[1]&&D[n]){var a=parseFloat(D[n][1]),r=Object(d.e)(e[1],a),i=Object(d.j)(r),o=Object(s.sprintf)( +/* translators: 1: date for user stats, 2: previous date for user stats comparison */ +Object(s._x)("%1$s vs %2$s","Date range for chart tooltip","google-site-kit"),e[0].toLocaleDateString(R,P),D[n][0].toLocaleDateString(R,P)),u=Object(s.sprintf)( +/* translators: 1: selected stat label, 2: numeric value of selected stat, 3: up or down arrow , 4: different change in percentage */ +Object(s._x)("%1$s: %2$s %3$s %4$s","Stat information for chart tooltip","google-site-kit"),f[t],p[t](e[1]),i,Object(d.u)(Math.abs(r),"%"));k.push([e[0],'
0,"googlesitekit-visualization-tooltip--down":r<0}),'">\n\t\t\t\t

').concat(o,"

\n\t\t\t\t

").concat(u,"

\n\t\t\t
"),A?Object(d.g)(e[1]):e[1],A?Object(d.g)(D[n][1]):D[n][1]])}})),k}},78:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return r}));var a=n(124),r=n.n(a)()(e)}).call(this,n(22))},782:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ContentAutoUpdate}));var a=n(14),r=n.n(a),i=n(0),o=n.n(i),c=n(2),s=n(783);function ContentAutoUpdate(t){var n=t.hasBeenInView,a=Object(c.useState)({stage:0,mode:"static"}),i=r()(a,2),o=i[0],u=o.stage,l=o.mode,d=i[1];return Object(c.useEffect)((function(){if(n){var e=setTimeout((function(){d({stage:0,mode:"leave"})}),7e3);return function(){clearTimeout(e)}}}),[n]),e.createElement(s.a,{stage:u,mode:l,onAnimationEnd:function(){"enter"===l?d({stage:u,mode:"leave"}):"leave"===l&&d({stage:2===u?0:u+1,mode:"enter"})}})}ContentAutoUpdate.propTypes={hasBeenInView:o.a.bool.isRequired}}).call(this,n(3))},783:function(e,t,n){"use strict";(function(e){var a=n(18),r=n.n(a),i=n(6),o=n.n(i),c=n(0),s=n.n(c),u=n(11),l=n.n(u),d=n(1),m=n(2),g=n(10),f=n(784),p=n(390),y=Object(m.forwardRef)((function(t,n){var a=t.stage,i=t.mode,c=t.onAnimationEnd,s=[{title:Object(d.__)("Earn money from your site","google-site-kit"),description:Object(d.__)("Focus on writing good content and let AdSense help you make it profitable","google-site-kit")},{title:Object(d.__)("Save time with automated ads","google-site-kit"),description:Object(d.__)("Auto ads automatically place and optimize your ads for you so you don't have to spend time doing it yourself","google-site-kit")},{title:Object(d.__)("You’re in control","google-site-kit"),description:Object(d.__)("Block ads you don't like, customize where ads appear, and choose which types fit your site best","google-site-kit")}],u={smSize:4,mdSize:4,lgSize:6};return e.createElement(m.Fragment,null,e.createElement(g.p,null,e.createElement(g.a,{size:12},e.createElement("p",{className:"googlesitekit-setup__intro-title"},Object(d.__)("Connect Service","google-site-kit")),e.createElement("div",{className:"googlesitekit-setup-module"},e.createElement("div",{className:"googlesitekit-setup-module__logo"},e.createElement(p.a,{width:"33",height:"33"})),e.createElement("h2",{className:"googlesitekit-heading-3 googlesitekit-setup-module__title"},Object(d._x)("AdSense","Service name","google-site-kit"))))),e.createElement(g.p,{ref:n},e.createElement(g.a,r()({},u,{smOrder:2,mdOrder:1,className:"googlesitekit-setup-module--adsense__stage-captions"}),e.createElement("ul",{className:"googlesitekit-setup-module--adsense__stage-caption-container"},s.map((function(t,n){var r=t.title,c=t.description;return e.createElement("li",{key:n,className:l()("googlesitekit-setup-module--adsense__stage-caption",o()({},"googlesitekit-setup-module--adsense__stage-caption--current--".concat(i),a===n))},e.createElement("div",{className:"googlesitekit-setup-module--adsense__stage-caption-indicator"}),e.createElement("div",null,e.createElement("h4",null,r),e.createElement("p",null,c)))}))),e.createElement("ul",{className:"googlesitekit-setup-module--adsense__stage-indicator"},s.map((function(t,n){return e.createElement("li",{key:n,className:l()(o()({},"googlesitekit-setup-module--adsense__stage-indicator--current--".concat(i),a===n))})})))),e.createElement(g.a,r()({},u,{smOrder:1,mdOrder:2,className:"googlesitekit-setup-module--adsense__stage-images"}),e.createElement("div",{className:"googlesitekit-setup-module--adsense__stage-image-container"},s.map((function(t,n){return e.createElement("div",{key:n,className:l()("googlesitekit-setup-module--adsense__stage-image",o()({},"googlesitekit-setup-module--adsense__stage-image--current--".concat(i),a===n)),onAnimationEnd:a===n?c:void 0},e.createElement(f.a,{stage:n}))}))))))}));y.propTypes={stage:s.a.oneOf([0,1,2]),mode:s.a.oneOf(["static","enter","leave"]),onAnimationEnd:s.a.func},t.a=y}).call(this,n(3))},784:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ContentSVG}));var a=n(0),r=n(2),i=n(1),o=n(99),c=n(374),s=Object(r.lazy)((function(){return n.e(33).then(n.bind(null,1138))})),u=Object(r.lazy)((function(){return n.e(34).then(n.bind(null,1139))})),l=Object(r.lazy)((function(){return n.e(35).then(n.bind(null,1140))}));function LazyContentSVG(t){var n=t.stage,a={0:e.createElement(s,null),1:e.createElement(u,null),2:e.createElement(l,null)};return a[n]?e.createElement(c.a,{errorMessage:Object(i.__)("Failed to load graphic.","google-site-kit")},a[n]):null}function ContentSVG(t){var n=t.stage;return e.createElement(r.Suspense,{fallback:e.createElement(o.a,{width:"100%",height:"100%"})},e.createElement(LazyContentSVG,{stage:n}))}ContentSVG.propTypes={stage:a.PropTypes.oneOf([0,1,2]).isRequired}}).call(this,n(3))},785:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return NeedsAttention}));var r=n(2),i=n(1),o=n(4),c=n.n(o),s=n(70),u=n(8),l=n(29),d=n(391),m=c.a.useSelect;function NeedsAttention(){var t=Object(r.useContext)(s.b),n=m((function(e){return e(l.f).getServiceAccountManageSitesURL()})),o=Object(r.useCallback)((function(a){a.preventDefault(),Object(u.z)("".concat(t,"_adsense"),"review_site_state","needs_attention"),e.open(n,"_blank")}),[n,t]),c=Object(i.__)("Your site isn’t ready to show ads yet","google-site-kit"),g=Object(i.__)("You need to fix some things with this site before we can connect Site Kit to your AdSense account.","google-site-kit"),f={label:Object(i.__)("Review site in AdSense","google-site-kit"),href:n,onClick:o};return a.createElement(d.a,{heading:c,description:g,primaryButton:f})}}).call(this,n(22),n(3))},786:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return GettingReady}));var r=n(2),i=n(1),o=n(4),c=n.n(o),s=n(70),u=n(8),l=n(29),d=n(391),m=c.a.useSelect;function GettingReady(){var t=Object(r.useContext)(s.b),n=m((function(e){return e(l.f).getServiceAccountManageSitesURL()})),o=Object(r.useCallback)((function(a){a.preventDefault(),Object(u.z)("".concat(t,"_adsense"),"review_site_state","getting_ready"),e.open(n,"_blank")}),[n,t]),c=Object(i.__)("Your site is getting ready","google-site-kit"),g=Object(i.__)("This usually takes a few days, but in some cases can take up to 2 weeks. You’ll get an email from AdSense as soon as they have run some checks on your site.","google-site-kit"),f={label:Object(i.__)("Review site in AdSense","google-site-kit"),href:n,onClick:o};return a.createElement(d.a,{heading:c,description:g,primaryButton:f})}}).call(this,n(22),n(3))},787:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return RequiresReview}));var r=n(2),i=n(1),o=n(4),c=n.n(o),s=n(70),u=n(8),l=n(29),d=n(391),m=c.a.useSelect;function RequiresReview(){var t=Object(r.useContext)(s.b),n=m((function(e){return e(l.f).getServiceAccountManageSitesURL()})),o=Object(r.useCallback)((function(a){a.preventDefault(),Object(u.z)("".concat(t,"_adsense"),"review_site_state","requires_review"),e.open(n,"_blank")}),[n,t]),c=Object(i.__)("Your site requires review","google-site-kit"),g=Object(i.__)("To start serving ads, your site needs to be approved first. Go to AdSense to request the review.","google-site-kit"),f={label:Object(i.__)("Request review in AdSense","google-site-kit"),href:n,onClick:o};return a.createElement(d.a,{heading:c,description:g,primaryButton:f})}}).call(this,n(22),n(3))},788:function(e,t,n){"use strict";(function(e,a){n.d(t,"a",(function(){return Ready}));var r=n(5),i=n.n(r),o=n(16),c=n.n(o),s=n(14),u=n.n(s),l=n(2),d=n(1),m=n(4),g=n.n(m),f=n(70),p=n(8),y=n(29),b=n(391),v=g.a.useSelect,h=g.a.useDispatch;function Ready(t){var n=t.site,r=t.finishSetup,o=Object(l.useState)(!1),s=u()(o,2),m=s[0],g=s[1],S=Object(l.useContext)(f.b),_=v((function(e){return e(y.f).getExistingTag()})),E=v((function(e){return e(y.f).getServiceAccountSiteAdsPreviewURL()})),T=v((function(e){return e(y.f).isDoingSubmitChanges()})),A=h(y.f),O=A.completeSiteSetup,k=A.completeAccountSetup,N=Object(l.useCallback)((function(t){t.preventDefault(),Object(p.z)("".concat(S,"_adsense"),"enable_auto_ads"),e.open(E,"_blank")}),[E,S]),I=Object(l.useCallback)((function(e){e.preventDefault(),Object(p.z)("".concat(S,"_adsense"),"disable_auto_ads"),g(!0)}),[S]),j=Object(l.useCallback)(c()(i.a.mark((function e(){var t,n;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!T){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,O();case 4:return t=e.sent,e.next=7,k();case 7:n=e.sent,t&&n&&"function"==typeof r&&r();case 9:case"end":return e.stop()}}),e)}))),[T,r,O,k]),C={};return n.autoAdsEnabled||m?(C.heading=_?Object(d.__)("Your AdSense account is ready to connect to Site Kit","google-site-kit"):Object(d.__)("Your site is ready to use AdSense","google-site-kit"),C.description=_?Object(d.__)("Connect your AdSense account to see stats on your overall earnings, page CTR, and top earning pages.","google-site-kit"):Object(d.__)("Site Kit has placed AdSense code on your site to connect your site to AdSense and help you get the most out of ads.","google-site-kit"),C.primaryButton={label:Object(d.__)("Configure AdSense","google-site-kit"),onClick:j}):(C.heading=Object(d.__)("Enable auto ads for your site","google-site-kit"),C.description=Object(d.__)("To start serving ads via Site Kit, you need to activate auto ads first. Go to AdSense and enable auto ads for your site.","google-site-kit"),C.primaryButton={label:Object(d.__)("Enable auto ads","google-site-kit"),href:E,onClick:N},_&&(C.description=Object(d.__)("Site Kit recommends enabling auto ads. If your existing AdSense setup relies on individual ad units, you can proceed without enabling auto ads.","google-site-kit"),C.secondaryButton={label:Object(d.__)("Proceed without enabling auto ads","google-site-kit"),onClick:I})),a.createElement(b.a,C)}}).call(this,n(22),n(3))},789:function(e,t,n){"use strict";function a(e){var t,n=null==e||null===(t=e.headers)||void 0===t?void 0:t[0].currencyCode;return n?{style:"currency",currency:n}:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2}}n.d(t,"a",(function(){return a}))},791:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(7),r=n.n(a),i=n(43),o=function(e){r()(e,"A dates object is required.");var t=e.startDate,n=e.endDate;return r()(Object(i.a)(t),"A valid startDate is required."),r()(Object(i.a)(n),"A valid endDate is required."),{d:"".concat(t.replace(/-/g,"/"),"-").concat(n.replace(/-/g,"/"))}}},792:function(e,t,n){"use strict";(function(e){var a=n(0),r=n.n(a),i=n(10),o=n(8),c=n(113),s=function Overview(t){var n,a,r=t.metrics,s=t.currentRangeData,u=t.previousRangeData,l=t.selectedStats,d=t.handleStatsSelection,m=s.totals,g=s.headers,f=u.totals,p={smSize:2,mdSize:2,lgSize:3};return e.createElement(i.f,null,e.createElement(i.p,null,e.createElement(i.a,p,e.createElement(c.a,{stat:0,className:"googlesitekit-data-block--page-rpm googlesitekit-data-block--button-1",title:r[g[0].name],datapoint:(null==m?void 0:m.cells[0].value)||0,datapointUnit:null===(n=g[0])||void 0===n?void 0:n.currencyCode,change:Object(o.d)((null==f?void 0:f.cells[0].value)||0,(null==m?void 0:m.cells[0].value)||0),changeDataUnit:"%",context:"button",selected:0===l,handleStatSelection:d})),e.createElement(i.a,p,e.createElement(c.a,{stat:1,className:"googlesitekit-data-block--page-rpm googlesitekit-data-block--button-2",title:r[g[1].name],datapoint:(null==m?void 0:m.cells[1].value)||0,datapointUnit:null===(a=g[1])||void 0===a?void 0:a.currencyCode,change:Object(o.d)((null==f?void 0:f.cells[1].value)||0,(null==m?void 0:m.cells[1].value)||0),changeDataUnit:"%",context:"button",selected:1===l,handleStatSelection:d})),e.createElement(i.a,p,e.createElement(c.a,{stat:2,className:"googlesitekit-data-block--page-rpm googlesitekit-data-block--button-3",title:r[g[2].name],datapoint:(null==m?void 0:m.cells[2].value)||0,change:Object(o.d)((null==f?void 0:f.cells[2].value)||0,(null==m?void 0:m.cells[2].value)||0),changeDataUnit:"%",context:"button",selected:2===l,handleStatSelection:d})),e.createElement(i.a,p,e.createElement(c.a,{stat:3,className:"googlesitekit-data-block--impression googlesitekit-data-block--button-4",title:r[g[3].name],datapoint:(null==m?void 0:m.cells[3].value)||0,datapointUnit:"%",change:Object(o.d)((null==f?void 0:f.cells[3].value)||0,(null==m?void 0:m.cells[3].value)||0),changeDataUnit:"%",context:"button",selected:3===l,handleStatSelection:d}))))};s.propTypes={metrics:r.a.object,currentRangeData:r.a.object,previousRangeData:r.a.object,selectedStats:r.a.number.isRequired,handleStatsSelection:r.a.func.isRequired},t.a=s}).call(this,n(3))},793:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Stats}));var a=n(14),r=n.n(a),i=n(0),o=n.n(i),c=n(230),s=n(10),u=n(291);function Stats(t){var n=t.metrics,a=t.currentRangeData,i=t.previousRangeData,o=t.selectedStats,l=Object(c.a)(a,i,Object.values(n)[o],o+1,a.headers[o+1]),d=["#6380b8","#bed4ff","#5c9271","#6e48ab"],m={curveType:"function",height:270,width:"100%",chartArea:{height:"80%",width:"100%",left:60},legend:{position:"top",textStyle:{color:"#616161",fontSize:12}},hAxis:{format:"M/d/yy",gridlines:{color:"#fff"},textStyle:{color:"#616161",fontSize:12},ticks:l.slice(1).map((function(e){return r()(e,1)[0]}))},vAxis:{format:{METRIC_TALLY:void 0,METRIC_CURRENCY:"currency",METRIC_RATIO:"percent",METRIC_DECIMAL:"decimal",METRIC_MILLISECONDS:void 0}[a.headers[o+1].type],gridlines:{color:"#eee"},minorGridlines:{color:"#eee"},textStyle:{color:"#616161",fontSize:12},titleTextStyle:{color:"#616161",fontSize:12,italic:!1},viewWindow:{min:0}},focusTarget:"category",crosshair:{color:"gray",opacity:.1,orientation:"vertical",trigger:"both"},tooltip:{isHtml:!0,trigger:"both"},series:{0:{color:d[o],targetAxisIndex:0},1:{color:d[o],targetAxisIndex:0,lineDashStyle:[3,3],lineWidth:1}}};return Object(c.d)(a)&&Object(c.d)(i)?m.vAxis.viewWindow.max=100:m.vAxis.viewWindow.max=void 0,e.createElement(s.f,{className:"googlesitekit-adsense-site-stats"},e.createElement(s.p,null,e.createElement(s.a,{size:12},e.createElement(u.a,{chartType:"LineChart",data:l,loadingHeight:"270px",loadingWidth:"100%",options:m}))))}Stats.propTypes={metrics:o.a.object,currentRangeData:o.a.object,previousRangeData:o.a.object,selectedStats:o.a.number.isRequired}}).call(this,n(3))},8:function(e,t,n){"use strict";n.d(t,"z",(function(){return c.b})),n.d(t,"w",(function(){return s.a})),n.d(t,"A",(function(){return s.b})),n.d(t,"y",(function(){return g})),n.d(t,"f",(function(){return f.a})),n.d(t,"m",(function(){return f.b})),n.d(t,"u",(function(){return p.c})),n.d(t,"v",(function(){return p.d})),n.d(t,"r",(function(){return p.b})),n.d(t,"l",(function(){return p.a})),n.d(t,"s",(function(){return h})),n.d(t,"g",(function(){return S})),n.d(t,"b",(function(){return _.b})),n.d(t,"a",(function(){return _.a})),n.d(t,"c",(function(){return _.e})),n.d(t,"i",(function(){return _.f})),n.d(t,"x",(function(){return _.k})),n.d(t,"j",(function(){return E.b})),n.d(t,"q",(function(){return E.c})),n.d(t,"e",(function(){return E.a})),n.d(t,"o",(function(){return T.b})),n.d(t,"k",(function(){return T.a})),n.d(t,"t",(function(){return T.d})),n.d(t,"p",(function(){return A})),n.d(t,"n",(function(){return O})),n.d(t,"d",(function(){return k})),n.d(t,"B",(function(){return N})),n.d(t,"h",(function(){return I}));var a=n(123),r=n.n(a),i=n(118),o=n.n(i),c=n(32),s=n(63),u=n(30),l=n.n(u),d=n(81),m=n.n(d),g=function(e){return m()(JSON.stringify(function e(t){var n={};return Object.keys(t).sort().forEach((function(a){var r=t[a];r&&"object"===l()(r)&&!Array.isArray(r)&&(r=e(r)),n[a]=r})),n}(e)))};var f=n(83),p=(n(84),n(73));function y(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function b(e){return"

".concat(e.replace(/\n{2,}/g,"

"),"

")}function v(e){return e.replace(/\n/gi,"
")}function h(e){for(var t=e,n=0,a=[y,b,v];nredo the plugin setup.',"google-site-kit"),a));return e.createElement("div",{className:"googlesitekit-error-text"},e.createElement("p",{dangerouslySetInnerHTML:Object(c.w)(r,{ALLOWED_TAGS:["a"],ALLOWED_ATTR:["href"]})}))}ErrorText.propTypes={message:r.a.string.isRequired,reconnectURL:r.a.string},ErrorText.defaultProps={reconnectURL:""},t.a=ErrorText}).call(this,n(3))},83:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return u}));var a=n(14),r=n.n(a);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){s=!0,i=e},f:function(){try{c||null==n.return||n.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:location,n=new URL(t.href);if(e)return n.searchParams&&n.searchParams.get?n.searchParams.get(e):s(e);var a,o={},c=i(n.searchParams.entries());try{for(c.s();!(a=c.n()).done;){var u=r()(a.value,2),l=u[0],d=u[1];o[l]=d}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,n(22))},84:function(e,t,n){"use strict";(function(e){n(44),n(45)}).call(this,n(22))},85:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"a",(function(){return c}));var a=n(169),r=n(62),i=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=n.invertColor,o=void 0!==i&&i;return Object(a.a)(e.createElement(r.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,n,a,r,i,o,c,s,u,l,d,m,g,f,p;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(n=t.data)||void 0===n||null===(a=n.rows)||void 0===a?void 0:a.length)||(null==e||null===(r=e[0])||void 0===r||null===(i=r.data)||void 0===i||null===(o=i.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(s=c.metrics)||void 0===s||null===(u=s[0])||void 0===u||null===(l=u.values)||void 0===l?void 0:l[0])===(null==e||null===(d=e[0])||void 0===d||null===(m=d.data)||void 0===m||null===(g=m.totals)||void 0===g||null===(f=g[0])||void 0===f||null===(p=f.values)||void 0===p?void 0:p[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,n(3))},86:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return l}));var a=n(6),r=n.n(a),i=n(87),o=n(88);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,r=s(s({},u),t);r.referenceSiteURL&&(r.referenceSiteURL=r.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(r,n);return{enableTracking:function(){r.trackingEnabled=!0},disableTracking:function(){r.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!r.trackingEnabled},trackEvent:Object(o.a)(r,n,c,a)}}}).call(this,n(22))},87:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var a=n(52),r=n(31);function i(t,n){var i,o=Object(a.a)(n);return function(){var n=e.document;if(void 0===i&&(i=!!n.querySelector("script[".concat(r.b,"]"))),!i){var a=n.createElement("script");a.setAttribute(r.b,""),a.async=!0,a.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(r.a),n.head.appendChild(a),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,n(22))},88:function(e,t,n){"use strict";n.d(t,"a",(function(){return g}));var a=n(5),r=n.n(a),i=n(6),o=n.n(i),c=n(16),s=n.n(c),u=n(52),l=n(42);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function m(e){for(var t=1;t0&&void 0!==c[0]?c[0]:{},r=e.clearAfterRestore,n=void 0===r||r,t.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=t.sent,o=a.cacheHit,i=a.value,!o){t.next=13;break}return t.next=10,{payload:{snapshot:i},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!n){t.next=13;break}return t.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return t.abrupt("return",o);case 14:case"end":return t.stop()}}),t)})),createSnapshot:u.a.mark((function t(){var e;return u.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return e=t.sent,t.abrupt("return",e);case 4:case"end":return t.stop()}}),t)}))},o=(e={},i()(e,"DELETE_SNAPSHOT",(function(){return Object(d.a)("datastore::cache::".concat(t))})),i()(e,"CREATE_SNAPSHOT",v((function(e){return function(){return Object(d.d)("datastore::cache::".concat(t),e.stores[t].store.getState())}}))),i()(e,"RESTORE_SNAPSHOT",(function(){return Object(d.b)("datastore::cache::".concat(t),g.b)})),e);return{initialState:r,actions:n,controls:o,reducer:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,e=arguments.length>1?arguments[1]:void 0,n=e.type,o=e.payload;switch(n){case"SET_STATE_FROM_SNAPSHOT":var i=o.snapshot,c=(i.error,a()(i,["error"]));return c;default:return t}}}},y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p.a;return Object.values(t.stores).filter((function(t){return Object.keys(t.getActions()).includes("restoreSnapshot")}))},m=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p.a;return Promise.all(y(t).map((function(t){return t.getActions().createSnapshot()})))},h=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p.a;return Promise.all(y(t).map((function(t){return t.getActions().restoreSnapshot()})))}},1126:function(t,e,r){"use strict";r.r(e);var n=r(4),a=r.n(n),o=r(27),i=r(5),c=r.n(i),u=r(6),s=r.n(u),l=r(34),f=r.n(l),p=r(41);function d(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function g(t){for(var e=1;e0)return!0}},w=a.a.combineStores({selectors:O}),S=(w.initialState,w.actions,w.controls,w.reducer,w.resolvers,w.selectors,w),j=r(135),x=r.n(j),k=r(16),D=r.n(k),A=r(7),E=r.n(A),P=r(69),I=r(207),_=r(156),R=r(35),T=r(9),C=r(17);function N(){return(N=D()(c.a.mark((function t(e){var r,n,a,i,u,s,l,p,d,g,v,b,y;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.select,n=e.dispatch,(a=r(o.b).getPropertyID())!==o.c){t.next=15;break}return i=r(T.f).getAccountID(),t.next=6,n(o.b).createProperty(i);case 6:if(u=t.sent,s=u.response,!(l=u.error)){t.next=11;break}return t.abrupt("return",{error:l});case 11:a=s._id,n(o.b).setPropertyID(a),n(o.b).setWebDataStreamID(o.d),n(o.b).setMeasurementID("");case 15:if(p=r(o.b).getWebDataStreamID(),!a||p!==o.d&&Object(I.d)(p)){t.next=26;break}return t.next=19,n(o.b).createWebDataStream(a);case 19:if(d=t.sent,g=d.response,!(v=d.error)){t.next=24;break}return t.abrupt("return",{error:v});case 24:n(o.b).setWebDataStreamID(g._id),n(o.b).setMeasurementID(g.webStreamData.measurementId);case 26:if(!r(o.b).haveSettingsChanged()){t.next=36;break}return t.next=29,n(o.b).saveSettings();case 29:if(b=t.sent,!(y=b.error)){t.next=33;break}return t.abrupt("return",{error:y});case 33:if(!r(C.a).isModuleConnected("analytics")||r(C.a).isModuleConnected("analytics-4")){t.next=36;break}return t.next=36,n(C.a).fetchGetModules();case 36:return t.next=38,f.a.invalidateCache("modules","analytics-4");case 38:return t.abrupt("return",{});case 39:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var M=x.a.createModuleStore("analytics-4",{ownedSettingsSlugs:["propertyID","webDataStreamID","measurementID"],storeName:o.b,settingSlugs:["propertyID","webDataStreamID","measurementID","useSnippet","ownerID"],submitChanges:function(t){return N.apply(this,arguments)},rollbackChanges:function(t){var e=t.select,r=t.dispatch;r(R.a).setValues(T.e,{enableGA4:void 0}),e(o.b).haveSettingsChanged()&&r(o.b).rollbackSettings()},validateCanSubmitChanges:function(t){if(!1!==t(o.b).isAdminAPIWorking()){var e=Object(P.e)(t)(o.b),r=e.haveSettingsChanged,n=e.isDoingSubmitChanges,a=e.getPropertyID,i=e.getWebDataStreamID;(0,Object(P.e)(t)(T.f).haveSettingsChanged)()||E()(r(),_.b),E()(!n(),_.a);var c=a();E()(Object(I.c)(c),"a valid propertyID is required to submit changes"),c!==o.c&&E()(Object(I.e)(i()),"a valid webDataStreamID is required to submit changes")}}}),L=r(24),W=r.n(L),G=r(15),F=r(8),U=r(159),q=r.n(U),$=r(806),B=r.n($);function H(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return z(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return z(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw o}}}}function z(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{},e=t.propertyID;E()(Object(I.b)(e),"A valid GA4 propertyID is required.")}}),Y=Object(p.a)({baseName:"getWebDataStreamsBatch",controlCallback:function(t){var e=t.propertyIDs;return f.a.get("modules","analytics-4","webdatastreams-batch",{propertyIDs:e},{useCache:!1})},reducerCallback:function(t,e){return Z(Z({},t),{},{webdatastreams:Z(Z({},t.webdatastreams),e||{})})},argsToParams:function(t){return{propertyIDs:t}},validateParams:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.propertyIDs;E()(Array.isArray(e),"GA4 propertyIDs must be an array."),e.forEach((function(t){E()(Object(I.b)(t),"A valid GA4 propertyID is required.")}))}}),Q=Object(p.a)({baseName:"createWebDataStream",controlCallback:function(t){var e=t.propertyID;return f.a.set("modules","analytics-4","create-webdatastream",{propertyID:e})},reducerCallback:function(t,e,r){var n=r.propertyID;return Z(Z({},t),{},{webdatastreams:Z(Z({},t.webdatastreams),{},s()({},n,[].concat(W()(t.webdatastreams[n]||[]),[e])))})},argsToParams:function(t){return{propertyID:t}},validateParams:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.propertyID;E()(Object(I.b)(e),"A valid GA4 propertyID is required.")}}),tt={createWebDataStream:Object(P.f)((function(t){E()(t,"GA4 propertyID is required.")}),c.a.mark((function t(e){var r,n,a;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Q.actions.fetchCreateWebDataStream(e);case 2:return r=t.sent,n=r.response,a=r.error,t.abrupt("return",{response:n,error:a});case 6:case"end":return t.stop()}}),t)}))),matchWebDataStream:c.a.mark((function t(e){var r;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,tt.waitForWebDataStreams(e);case 2:return t.next=4,a.a.commonActions.getRegistry();case 4:return r=t.sent,t.abrupt("return",r.select(o.b).getMatchingWebDataStream(e));case 6:case"end":return t.stop()}}),t)})),waitForWebDataStreams:c.a.mark((function t(e){return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,{payload:{propertyID:e},type:"WAIT_FOR_WEBDATASTREAMS"};case 2:case"end":return t.stop()}}),t)}))},et=s()({},"WAIT_FOR_WEBDATASTREAMS",J((function(t){var e=t.__experimentalResolveSelect;return function(){var t=D()(c.a.mark((function t(r){var n,a;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=r.payload,a=n.propertyID,t.next=4,e(o.b).getWebDataStreams(a);case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()}))),rt={getWebDataStreams:c.a.mark((function t(e){var r;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.a.commonActions.getRegistry();case 2:if(r=t.sent,void 0!==r.select(o.b).getWebDataStreams(e)){t.next=7;break}return t.next=7,X.actions.fetchGetWebDataStreams(e);case 7:case"end":return t.stop()}}),t)})),getWebDataStreamsBatch:c.a.mark((function t(e){var r,n,i,u,s,l;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.a.commonActions.getRegistry();case 2:if(r=t.sent,n=r.select(o.b).getWebDataStreamsBatch(e)||{},i=Object.keys(n),!((u=B()(e,i)).length>0)){t.next=15;break}s=0;case 8:if(!(s=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw o}}}}function st(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{},e=t.propertyID;E()(e,"propertyID is required.")}}),vt=Object(p.a)({baseName:"getProperties",controlCallback:function(t){var e=t.accountID;return f.a.get("modules","analytics-4","properties",{accountID:e},{useCache:!1})},reducerCallback:function(t,e,r){var n=r.accountID;return ft(ft({},t),{},{properties:ft(ft({},t.properties),{},s()({},n,e)),propertiesByID:e.reduce((function(t,e){return ft(ft({},t),{},s()({},e._id,e))}),t.propertiesByID||{})})},argsToParams:function(t){return{accountID:t}},validateParams:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.accountID;E()(e,"accountID is required.")}}),bt=Object(p.a)({baseName:"createProperty",controlCallback:function(t){var e=t.accountID;return f.a.set("modules","analytics-4","create-property",{accountID:e})},reducerCallback:function(t,e,r){var n=r.accountID;return ft(ft({},t),{},{properties:ft(ft({},t.properties),{},s()({},n,[].concat(W()(t.properties[n]||[]),[e])))})},argsToParams:function(t){return{accountID:t}},validateParams:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.accountID;E()(e,"accountID is required.")}}),yt={createProperty:function(t){return E()(t,"accountID is required."),c.a.mark((function e(){var r,n,a;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,bt.actions.fetchCreateProperty(t);case 2:return r=e.sent,n=r.response,a=r.error,e.abrupt("return",{response:n,error:a});case 6:case"end":return e.stop()}}),e)}))()},selectProperty:Object(P.f)((function(t){E()(Object(I.c)(t),"A valid propertyID selection is required.")}),c.a.mark((function t(e){var r,n;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.a.commonActions.getRegistry();case 2:if((r=t.sent).dispatch(o.b).setPropertyID(e),r.dispatch(o.b).setWebDataStreamID(o.d),r.dispatch(o.b).setMeasurementID(""),o.c!==e){t.next=8;break}return t.abrupt("return");case 8:return t.next=10,ot.waitForWebDataStreams(e);case 10:(n=r.select(o.b).getMatchingWebDataStream(e))&&(r.dispatch(o.b).setWebDataStreamID(n._id),r.dispatch(o.b).setMeasurementID(n.webStreamData.measurementId));case 12:case"end":return t.stop()}}),t)}))),findMatchedProperty:c.a.mark((function t(){var e,r,n,i;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,pt.getRegistry();case 2:return e=t.sent,t.next=5,a.a.commonActions.await(e.__experimentalResolveSelect(o.b).getAccountSummaries());case 5:if(r=t.sent,Array.isArray(r)&&0!==r.length){t.next=8;break}return t.abrupt("return",null);case 8:return n=e.select(G.c).getReferenceSiteURL(),i=r.reduce((function(t,e){var r=e.propertySummaries;return[].concat(W()(t),W()((r||[]).map((function(t){return t._id}))))}),[]),t.next=12,a.a.commonActions.await(e.dispatch(o.b).matchPropertyByURL(i,n));case 12:return t.abrupt("return",t.sent);case 13:case"end":return t.stop()}}),t)})),matchAccountProperty:c.a.mark((function t(e){var r,n,i,u;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.a.commonActions.getRegistry();case 2:return r=t.sent,t.next=5,yt.waitForProperties(e);case 5:return n=r.select(G.c).getReferenceSiteURL(),i=r.select(o.b).getProperties(e),t.next=9,yt.matchPropertyByURL((i||[]).map((function(t){return t._id})),n);case 9:return u=t.sent,t.abrupt("return",u);case 11:case"end":return t.stop()}}),t)})),matchAndSelectProperty:c.a.mark((function t(e){var r,n,a,o=arguments;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:"",t.next=3,yt.matchAccountProperty(e);case 3:if(n=t.sent,!(a=(null==n?void 0:n._id)||r)){t.next=8;break}return t.next=8,yt.selectProperty(a);case 8:return t.abrupt("return",n);case 9:case"end":return t.stop()}}),t)})),matchPropertyByURL:c.a.mark((function t(e,r){var n,a,i,u,s,l,f,p,d,g,v,b;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,pt.getRegistry();case 2:n=t.sent,a=(Array.isArray(r)?r:[r]).filter((function(t){return"string"==typeof t})).map(F.t),i=0;case 5:if(!(i]*type="gtag"[^>]*>[^<]*[^<]*"gtag_id"\s*:\s*"(G-[a-zA-Z0-9]+)"/i,/]*type="googleanalytics"[^>]*>[^<]*[^<]*"account"\s*:\s*"(G-[a-zA-Z0-9]+)"/i],e=0,r=["","www\\."];e]*src=['|\"]https?://".concat(n,"googletagmanager\\.com/gtag/js\\?id=(G-[a-zA-Z0-9]+)['|\"][^>]*><\/script>"),"i"),new RegExp("]*src=['|\"]https?://".concat(n,"googletagmanager\\.com/gtag/js\\?id=(G-[a-zA-Z0-9]+)['|\"][^/]*/>"),"i"))}for(var a=0,o=["__gaTracker","ga","gtag"];a0,"dateRangeLength must be a positive integer.");var n=-1*r;return{currentRange:t.slice(n),compareRange:t.slice(2*n,n)}}},15:function(t,e,r){"use strict";r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){return a})),r.d(e,"b",(function(){return o}));var n="core/site",a="primary",o="secondary"},156:function(t,e,r){"use strict";r.d(e,"a",(function(){return I})),r.d(e,"b",(function(){return _})),r.d(e,"c",(function(){return R})),r.d(e,"f",(function(){return T})),r.d(e,"e",(function(){return C})),r.d(e,"d",(function(){return N}));var n=r(16),a=r.n(n),o=r(5),i=r.n(o),c=r(6),u=r.n(c),s=r(7),l=r.n(s),f=r(57),p=r.n(f),d=r(134),g=r.n(d),v=r(159),b=r.n(v),y=r(34),m=r.n(y),h=r(4),O=r.n(h),w=r(69),S=r(80),j=r(41),x=r(53);function k(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function D(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:{},a=n.ownedSettingsSlugs,o=void 0===a?void 0:a,c=n.storeName,s=void 0===c?void 0:c,f=n.settingSlugs,d=void 0===f?[]:f;l()(t,"type is required."),l()(e,"identifier is required."),l()(r,"datapoint is required.");var v=s||"".concat(t,"/").concat(e),y={ownedSettingsSlugs:o,settings:void 0,savedSettings:void 0},h=Object(j.a)({baseName:"getSettings",controlCallback:function(){return m.a.get(t,e,r,{},{useCache:!1})},reducerCallback:function(t,e){return D(D({},t),{},{savedSettings:D({},e),settings:D(D({},e),t.settings||{})})}}),w=Object(j.a)({baseName:"saveSettings",controlCallback:function(n){var a=n.values;return m.a.set(t,e,r,a)},reducerCallback:function(t,e){return D(D({},t),{},{savedSettings:D({},e),settings:D({},e)})},argsToParams:function(t){return{values:t}},validateParams:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.values;l()(p()(e),"values is required.")}}),x={},k={setSettings:function(t){return l()(p()(t),"values is required."),{payload:{values:t},type:"SET_SETTINGS"}},rollbackSettings:function(){return{payload:{},type:"ROLLBACK_SETTINGS"}},saveSettings:i.a.mark((function t(){var e,r,n,a,o;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,O.a.commonActions.getRegistry();case 2:return e=t.sent,t.next=5,E("saveSettings",[]);case 5:return r=e.select(v).getSettings(),t.next=8,w.actions.fetchSaveSettings(r);case 8:if(n=t.sent,a=n.response,!(o=n.error)){t.next=14;break}return t.next=14,P(o,"saveSettings",[]);case 14:return t.abrupt("return",{response:a,error:o});case 15:case"end":return t.stop()}}),t)}))},I={},_=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y,e=arguments.length>1?arguments[1]:void 0,r=e.type,n=e.payload;switch(r){case"SET_SETTINGS":var a=n.values;return D(D({},t),{},{settings:D(D({},t.settings||{}),a)});case"ROLLBACK_SETTINGS":return D(D({},t),{},{settings:t.savedSettings});default:return void 0!==x[r]?x[r](t,{type:r,payload:n}):t}},R={getSettings:i.a.mark((function t(){var e;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,O.a.commonActions.getRegistry();case 2:if(e=t.sent,e.select(v).getSettings()){t.next=7;break}return t.next=7,h.actions.fetchGetSettings();case 7:case"end":return t.stop()}}),t)}))},T={getSettings:function(t){return t.settings},haveSettingsChanged:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=t.settings,n=t.savedSettings;return e?!g()(b()(r,e),b()(n,e)):!g()(r,n)},hasSettingChanged:function(t,e){l()(e,"setting is required.");var r=t.settings,n=t.savedSettings;return!(!r||!n)&&!g()(r[e],n[e])},isDoingSaveSettings:function(t){return Object.values(t.isFetchingSaveSettings).some(Boolean)},getOwnedSettingsSlugs:function(t){return t.ownedSettingsSlugs},haveOwnedSettingsChanged:A((function(t){return function(){var e=t(v).getOwnedSettingsSlugs();return t(v).haveSettingsChanged(e)}}))};d.forEach((function(t){var e=Object(S.b)(t),r=Object(S.a)(t);k["set".concat(e)]=function(t){return l()(void 0!==t,"value is required for calls to set".concat(e,"().")),{payload:{value:t},type:"SET_".concat(r)}},x["SET_".concat(r)]=function(e,r){var n=r.payload.value;return D(D({},e),{},{settings:D(D({},e.settings||{}),{},u()({},t,n))})},T["get".concat(e)]=A((function(e){return function(){return(e(v).getSettings()||{})[t]}}))}));var C=O.a.combineStores(O.a.commonStore,h,w,{initialState:y,actions:k,controls:I,reducer:_,resolvers:R,selectors:T});return D(D({},C),{},{STORE_NAME:v})};function T(t,e){return function(){var r=a()(i.a.mark((function r(n){var a,o,c,u;return i.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(a=n.select,o=n.dispatch,!a(e).haveSettingsChanged()){r.next=8;break}return r.next=4,o(e).saveSettings();case 4:if(c=r.sent,!(u=c.error)){r.next=8;break}return r.abrupt("return",{error:u});case 8:return r.next=10,m.a.invalidateCache("modules",t);case 10:return r.abrupt("return",{});case 11:case"end":return r.stop()}}),r)})));return function(t){return r.apply(this,arguments)}}()}function C(t){return function(e){var r=e.select,n=e.dispatch;return r(t).haveSettingsChanged()?n(t).rollbackSettings():{}}}function N(t){return function(e){var r=Object(w.e)(e)(t),n=r.haveSettingsChanged,a=r.isDoingSubmitChanges;l()(!a(),I),l()(n(),_)}}},165:function(t,e,r){"use strict";e.a=function(t){if("string"==typeof t&&t.match(/[0-9]{8}/)){var e=t.slice(0,4),r=Number(t.slice(4,6))-1,n=t.slice(6,8);return new Date(e,r.toString(),n)}return!1}},17:function(t,e,r){"use strict";r.d(e,"a",(function(){return n})),r.d(e,"b",(function(){return a}));var n="core/modules",a="insufficient_module_dependencies"},207:function(t,e,r){"use strict";r.d(e,"b",(function(){return a})),r.d(e,"c",(function(){return o})),r.d(e,"d",(function(){return i})),r.d(e,"e",(function(){return c})),r.d(e,"a",(function(){return u}));var n=r(27);function a(t){return"string"==typeof t&&/^\w+$/.test(t)}function o(t){return t===n.c||a(t)}function i(t){return"string"==typeof t&&/^\d+$/.test(t)}function c(t){return t===n.d||i(t)}function u(t){return"string"==typeof t&&/^G-[a-zA-Z0-9]+$/.test(t)}},224:function(t,e,r){"use strict";r.d(e,"a",(function(){return v})),r.d(e,"b",(function(){return b}));var n=r(5),a=r.n(n),o=r(16),i=r.n(o),c=r(7),u=r.n(c),s=r(324),l=r.n(s),f=r(243),p=r(100),d=r(250),g=r(15),v=function(t,e){var r=e.find((function(e){return e.test(t)}));return!!r&&r.exec(t)[1]},b=l()(function(){var t=i()(a.a.mark((function t(e){var r,n,o,i;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.homeURL,n=e.ampMode,u()(Object(p.a)(r),"homeURL must be valid URL"),o=[r],g.b!==n){t.next=14;break}return t.prev=4,t.next=7,Object(f.default)({path:"/wp/v2/posts?per_page=1"}).then((function(t){return t.slice(0,1).map((function(t){return Object(d.a)(t.link,{amp:1})})).pop()}));case 7:(i=t.sent)&&o.push(i),t.next=14;break;case 11:return t.prev=11,t.t0=t.catch(4),t.abrupt("return",o);case 14:return t.abrupt("return",o);case 15:case"end":return t.stop()}}),t,null,[[4,11]])})));return function(e){return t.apply(this,arguments)}}())},243:function(t,e,r){"use strict";(function(t){var n=r(59),a=r.n(n),o=r(244),i=t._googlesitekitAPIFetchData||{},c=i.nonce,u=i.nonceEndpoint,s=i.preloadedData,l=i.rootURL;a.a.nonceEndpoint=u,a.a.nonceMiddleware=a.a.createNonceMiddleware(c),a.a.rootURLMiddleware=a.a.createRootURLMiddleware(l),a.a.preloadingMiddleware=Object(o.a)(s),a.a.use(a.a.nonceMiddleware),a.a.use(a.a.mediaUploadMiddleware),a.a.use(a.a.rootURLMiddleware),a.a.use(a.a.preloadingMiddleware),e.default=a.a}).call(this,r(22))},244:function(t,e,r){"use strict";var n=r(213);e.a=function(t){var e=Object.keys(t).reduce((function(e,r){return e[Object(n.getStablePath)(r)]=t[r],e}),{}),r=!1;return function(t,a){if(r)return a(t);setTimeout((function(){r=!0}),1e3);var o=t.parse,i=void 0===o||o,c=t.path;if("string"==typeof t.path){var u,s=(null===(u=t.method)||void 0===u?void 0:u.toUpperCase())||"GET",l=Object(n.getStablePath)(c);if(i&&"GET"===s&&e[l]){var f=Promise.resolve(e[l].body);return delete e[l],f}if("OPTIONS"===s&&e[s]&&e[s][l]){var p=Promise.resolve(e[s][l]);return delete e[s][l],p}}return a(t)}}},27:function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return a})),r.d(e,"d",(function(){return o})),r.d(e,"a",(function(){return i}));var n="modules/analytics-4",a="property_create",o="webdatastream_create",i=10},31:function(t,e,r){"use strict";r.d(e,"a",(function(){return n})),r.d(e,"b",(function(){return a}));var n="_googlesitekitDataLayer",a="data-googlesitekit-gtag"},32:function(t,e,r){"use strict";(function(t){r.d(e,"a",(function(){return h})),r.d(e,"b",(function(){return m}));var n=r(86),a=t._googlesitekitTrackingData||{},o=a.activeModules,i=void 0===o?[]:o,c=a.isSiteKitScreen,u=a.trackingEnabled,s=a.trackingID,l=a.referenceSiteURL,f=a.userIDHash,p=a.isAuthenticated,d={activeModules:i,trackingEnabled:u,trackingID:s,referenceSiteURL:l,userIDHash:f,isSiteKitScreen:c,userRoles:a.userRoles,isAuthenticated:p,pluginVersion:"1.89.0"},g=Object(n.a)(d),v=g.enableTracking,b=g.disableTracking,y=(g.isTrackingEnabled,g.initializeSnippet),m=g.trackEvent;function h(t){t?v():b()}c&&u&&y()}).call(this,r(22))},321:function(t,e,r){"use strict";r.d(e,"a",(function(){return w}));var n=r(6),a=r.n(n),o=r(16),i=r.n(o),c=r(5),u=r.n(c),s=r(7),l=r.n(s),f=r(4),p=r.n(f),d=r(15),g=r(224);function v(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function b(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw o}}}}function m(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{},r=e.storeName,n=e.isValidTag,o=e.tagMatchers;l()("string"==typeof r&&r,"storeName is required."),l()("function"==typeof n,"isValidTag must be a function."),l()(Array.isArray(o),"tagMatchers must be an Array.");var c={existingTag:void 0},s={fetchGetExistingTag:function(){return{payload:{},type:"FETCH_GET_EXISTING_TAG"}},receiveGetExistingTag:function(t){return l()(null===t||"string"==typeof t,"existingTag must be a tag string or null."),{payload:{existingTag:n(t)?t:null},type:"RECEIVE_GET_EXISTING_TAG"}},waitForExistingTag:u.a.mark((function t(){return u.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,{payload:{},type:"WAIT_FOR_EXISTING_TAG"};case 2:case"end":return t.stop()}}),t)}))},f=(t={},a()(t,"FETCH_GET_EXISTING_TAG",h((function(t){return i()(u.a.mark((function e(){var r,n,a,i,c,s,l,f;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.select(d.c).getHomeURL(),n=t.select(d.c).getAMPMode(),e.next=4,Object(g.b)({homeURL:r,ampMode:n});case 4:a=e.sent,i=y(a),e.prev=6,i.s();case 8:if((c=i.n()).done){e.next=18;break}return s=c.value,e.next=12,t.dispatch(d.c).waitForHTMLForURL(s);case 12:if(l=t.select(d.c).getHTMLForURL(s),!(f=Object(g.a)(l,o))){e.next=16;break}return e.abrupt("return",f);case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(6),i.e(e.t0);case 23:return e.prev=23,i.f(),e.finish(23);case 26:return e.abrupt("return",null);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])})))}))),a()(t,"WAIT_FOR_EXISTING_TAG",h((function(t){return function(){var e=function(){return void 0!==t.select(r).getExistingTag()};return!!e()||new Promise((function(r){var n=t.subscribe((function(){e()&&(n(),r())}))}))}}))),t),v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c,e=arguments.length>1?arguments[1]:void 0,r=e.type,n=e.payload;switch(r){case"RECEIVE_GET_EXISTING_TAG":var a=n.existingTag;return b(b({},t),{},{existingTag:a});default:return t}},m={getExistingTag:u.a.mark((function t(){var e,n;return u.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p.a.commonActions.getRegistry();case 2:if(void 0!==(e=t.sent).select(r).getExistingTag()){t.next=8;break}return t.next=6,s.fetchGetExistingTag();case 6:n=t.sent,e.dispatch(r).receiveGetExistingTag(n);case 8:case"end":return t.stop()}}),t)}))},w={getExistingTag:function(t){return t.existingTag},hasExistingTag:O((function(t){return function(){var e=t(r).getExistingTag();if(void 0!==e)return!!e}}))},S={initialState:c,actions:s,controls:f,reducer:v,resolvers:m,selectors:w};return b(b({},S),{},{STORE_NAME:r})}},34:function(t,e){t.exports=googlesitekit.api},35:function(t,e,r){"use strict";r.d(e,"a",(function(){return n}));var n="core/forms"},36:function(t,e,r){"use strict";r.d(e,"c",(function(){return n})),r.d(e,"e",(function(){return a})),r.d(e,"d",(function(){return o})),r.d(e,"b",(function(){return i})),r.d(e,"a",(function(){return c})),r.d(e,"f",(function(){return u}));var n="Date param must construct to a valid date instance or be a valid date instance itself.",a="Invalid dateString parameter, it must be a string.",o='Invalid date range, it must be a string with the format "last-x-days".',i=3600,c=86400,u=604800},37:function(t,e,r){"use strict";r.d(e,"a",(function(){return n}));var n=function(t){return t instanceof Date&&!isNaN(t)}},38:function(t,e,r){"use strict";r.d(e,"a",(function(){return s}));var n=r(14),a=r.n(n),o=r(7),i=r.n(o),c=r(36),u=r(43),s=function(t){i()(Object(u.a)(t),c.e);var e=t.split("-"),r=a()(e,3),n=r[0],o=r[1],s=r[2];return new Date(n,o-1,s)}},4:function(t,e){t.exports=googlesitekit.data},41:function(t,e,r){"use strict";r.d(e,"a",(function(){return w}));var n=r(5),a=r.n(n),o=r(6),i=r.n(o),c=r(7),u=r.n(c),s=r(57),l=r.n(s),f=r(53),p=r(80),d=r(8);function g(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function v(t){for(var e=1;e1?r-1:0),a=1;a1&&void 0!==arguments[1]?arguments[1]:o;return e instanceof Set&&e.has(t)}}).call(this,r(22))},43:function(t,e,r){"use strict";r.d(e,"a",(function(){return a}));var n=r(37),a=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e="string"==typeof t;if(!e)return!1;var r=t.split("-");return 3===r.length&&Object(n.a)(new Date(t))}},46:function(t,e,r){"use strict";(function(t){r.d(e,"b",(function(){return y})),r.d(e,"d",(function(){return m})),r.d(e,"a",(function(){return h})),r.d(e,"c",(function(){return O}));var n=r(5),a=r.n(n),o=r(16),i=r.n(o),c=(r(24),r(8));function u(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw o}}}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r2&&void 0!==b[2]?b[2]:{},i=o.ttl,u=void 0===i?c.b:i,s=o.timestamp,l=void 0===s?Math.round(Date.now()/1e3):s,p=o.isError,d=void 0!==p&&p,e.next=3,v();case 3:if(!(g=e.sent)){e.next=14;break}return e.prev=5,g.setItem("".concat(f).concat(r),JSON.stringify({timestamp:l,ttl:u,value:n,isError:d})),e.abrupt("return",!0);case 10:return e.prev=10,e.t0=e.catch(5),t.console.warn("Encountered an unexpected storage error:",e.t0),e.abrupt("return",!1);case 14:return e.abrupt("return",!1);case 15:case"end":return e.stop()}}),e,null,[[5,10]])})));return function(t,r){return e.apply(this,arguments)}}(),h=function(){var e=i()(a.a.mark((function e(r){var n;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,v();case 2:if(!(n=e.sent)){e.next=13;break}return e.prev=4,n.removeItem("".concat(f).concat(r)),e.abrupt("return",!0);case 9:return e.prev=9,e.t0=e.catch(4),t.console.warn("Encountered an unexpected storage error:",e.t0),e.abrupt("return",!1);case 13:return e.abrupt("return",!1);case 14:case"end":return e.stop()}}),e,null,[[4,9]])})));return function(t){return e.apply(this,arguments)}}(),O=function(){var e=i()(a.a.mark((function e(){var r,n,o,i;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,v();case 2:if(!(r=e.sent)){e.next=14;break}for(e.prev=4,n=[],o=0;o2&&void 0!==arguments[2]?arguments[2]:{},n=r.clearMatchingLegacyError,a=void 0!==n&&n;return t&&s()(e&&Array.isArray(e),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:t,args:e,clearMatchingLegacyError:a}}},clearErrors:function(t){return{type:"CLEAR_ERRORS",payload:{baseName:t}}}};function y(t){s()(t,"storeName must be defined.");var e={errors:{},errorArgs:{},error:void 0};var r={getErrorForSelector:function(e,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var o=r.getError(e,n,a);if(o)return g(g({},o),{},{selectorData:{storeName:t,name:n,args:a}})},getErrorForAction:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(e,"actionName is required."),r.getError(t,e,n)},getError:function(t,e,r){var n=t.error,a=t.errors;return e||r?(s()(e,"baseName is required."),a[v(e,r)]):n},getErrors:function(t){var e=new Set(Object.values(t.errors));return void 0!==t.error&&e.add(t.error),Array.from(e)},getMetaDataForError:function(t,e){var r=Object.keys(t.errors).find((function(r){return t.errors[r]===e}));return r?{baseName:r.substring(0,r.indexOf("::")),args:t.errorArgs[r]}:null},getSelectorDataForError:Object(c.e)((function(e){return function(r,n){var a=e(t).getMetaDataForError(n);if(a){var o=a.baseName,i=a.args;if(!!e(t)[o])return{storeName:t,name:o,args:i}}return null}})),hasErrors:function(t){return r.getErrors(t).length>0}};return{initialState:e,actions:b,controls:{},reducer:function(t,e){var r=e.type,n=e.payload;switch(r){case"RECEIVE_ERROR":var o=n.baseName,i=n.args,c=n.error;if(o){var u=v(o,i);return g(g({},t),{},{errors:g(g({},t.errors||{}),{},a()({},u,c)),errorArgs:g(g({},t.errorArgs||{}),{},a()({},u,i))})}return g(g({},t),{},{error:c});case"CLEAR_ERROR":var s=n.baseName,l=n.args,f=g({},t);if(s){var p=v(s,l);f.errors=g({},t.errors||{}),f.errorArgs=g({},t.errorArgs||{}),n.clearMatchingLegacyError&&f.error===f.errors[p]&&delete f.error,delete f.errors[p],delete f.errorArgs[p]}else f.error=void 0;return f;case"CLEAR_ERRORS":var d=n.baseName,b=g({},t);if(d)for(var y in b.errors=g({},t.errors||{}),b.errorArgs=g({},t.errorArgs||{}),b.errors)(y===d||y.startsWith("".concat(d,"::")))&&(delete b.errors[y],delete b.errorArgs[y]);else b.errors={},b.errorArgs={},b.error=void 0;return b;default:return t}},resolvers:{},selectors:r}}},62:function(t,e,r){"use strict";(function(t){var n=r(0),a=r.n(n),o=r(11),i=r.n(o);function ChangeArrow(e){var r=e.direction,n=e.invertColor,a=e.width,o=e.height;return t.createElement("svg",{className:i()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(r),{"googlesitekit-change-arrow--inverted-color":n}),width:a,height:o,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:a.a.string,invertColor:a.a.bool,width:a.a.number,height:a.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},e.a=ChangeArrow}).call(this,r(3))},63:function(t,e,r){"use strict";r.d(e,"a",(function(){return i})),r.d(e,"b",(function(){return c}));var n=r(30),a=r.n(n),o=r(78),i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:o.a.sanitize(t,e)}};function c(t){var e,r="object"===a()(t)?t.toString():t;return null==r||null===(e=r.replace)||void 0===e?void 0:e.call(r,/\/+$/,"")}},68:function(t,e,r){"use strict";r.d(e,"d",(function(){return n.e})),r.d(e,"c",(function(){return n.d})),r.d(e,"b",(function(){return n.b})),r.d(e,"a",(function(){return n.a})),r.d(e,"e",(function(){return n.f})),r.d(e,"g",(function(){return c})),r.d(e,"h",(function(){return s})),r.d(e,"i",(function(){return l})),r.d(e,"j",(function(){return f.a})),r.d(e,"f",(function(){return d})),r.d(e,"k",(function(){return u.a}));var n=r(36),a=r(7),o=r.n(a),i=r(37),c=function(t){o()(Object(i.a)(t),n.c);var e="".concat(t.getMonth()+1),r="".concat(t.getDate());return[t.getFullYear(),e.length<2?"0".concat(e):e,r.length<2?"0".concat(r):r].join("-")},u=r(38),s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,r=Object(u.a)(t);return r.setDate(r.getDate()-e),c(r)},l=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=t.split("-");return 3===e.length&&"last"===e[0]&&!Number.isNaN(e[1])&&!Number.isNaN(parseFloat(e[1]))&&"days"===e[2]},f=r(43);var p=r(1);function d(){var t=function(t){return Object(p.sprintf)( +/* translators: %s: number of days */ +Object(p._n)("Last %s day","Last %s days",t,"google-site-kit"),t)};return{"last-7-days":{slug:"last-7-days",label:t(7),days:7},"last-14-days":{slug:"last-14-days",label:t(14),days:14},"last-28-days":{slug:"last-28-days",label:t(28),days:28},"last-90-days":{slug:"last-90-days",label:t(90),days:90}}}},69:function(t,e,r){"use strict";r.d(e,"a",(function(){return A})),r.d(e,"b",(function(){return E})),r.d(e,"c",(function(){return P})),r.d(e,"d",(function(){return _})),r.d(e,"e",(function(){return R})),r.d(e,"g",(function(){return C})),r.d(e,"f",(function(){return N}));var n,a=r(5),o=r.n(a),i=r(24),c=r.n(i),u=r(6),s=r.n(u),l=r(7),f=r.n(l),p=r(201),d=r.n(p),g=r(71),v=r.n(g),b=r(66);function y(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function m(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a.reduce((function(t,r){return r(t,e)}),t)}},j=h,x=h,k=h,D=function(t){return t},A=function(){for(var t=arguments.length,e=new Array(t),r=0;r=1?r[a]+1:1,r[a]>1&&e.push(a)}return e},_={actions:E,controls:P,reducer:D},R=function(t){return function(e){return T(t(e))}},T=v()((function(t){return d()(t,(function(t,e){return function(){var r=t.apply(void 0,arguments);return f()(void 0!==r,"".concat(e,"(...) is not resolved")),r}}))}));function C(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.negate,n=void 0!==r&&r,a=Object(b.e)((function(e){return function(r){var a=!n,o=!!n;try{for(var i=arguments.length,c=new Array(i>1?i-1:0),u=1;u1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:{},r=m(t,e),n=r.formatUnit,a=r.formatDecimal;try{return n()}catch(t){return a()}},m=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=parseInt(t,10),Number.isNaN(t)&&(t=0);var r=Math.floor(t/60/60),n=Math.floor(t/60%60),a=Math.floor(t%60);return{hours:r,minutes:n,seconds:a,formatUnit:function(){var o=e.unitDisplay,i=b(b({unitDisplay:void 0===o?"short":o},l()(e,["unitDisplay"])),{},{style:"unit"});return 0===t?j(a,b(b({},i),{},{unit:"second"})):Object(g.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(g._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?j(a,b(b({},i),{},{unit:"second"})):"",n?j(n,b(b({},i),{},{unit:"minute"})):"",r?j(r,b(b({},i),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var e=Object(g.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit. +Object(g.__)("%ds","google-site-kit"),a);if(0===t)return e;var o=Object(g.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit. +Object(g.__)("%dm","google-site-kit"),n),i=Object(g.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit. +Object(g.__)("%dh","google-site-kit"),r);return Object(g.sprintf)( +/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ +Object(g._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?e:"",n?o:"",r?i:"").trim()}}},h=function(t){return 1e6<=t?Math.round(t/1e5)/10:1e4<=t?Math.round(t/1e3):1e3<=t?Math.round(t/100)/10:t},O=function(t){var e={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=t?Object(g.sprintf)(// translators: %s: an abbreviated number in millions. +Object(g.__)("%sM","google-site-kit"),j(h(t),t%10==0?{}:e)):1e4<=t?Object(g.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(g.__)("%sK","google-site-kit"),j(h(t))):1e3<=t?Object(g.sprintf)(// translators: %s: an abbreviated number in thousands. +Object(g.__)("%sK","google-site-kit"),j(h(t),t%10==0?{}:e)):j(t,{signDisplay:"never",maximumFractionDigits:1})},w=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=Object(f.isFinite)(t)?t:Number(t),Object(f.isFinite)(t)||(console.warn("Invalid number",t,i()(t)),t=0);var r={};if("%"===e)r={style:"percent",maximumFractionDigits:2};else{if("s"===e)return y(t,{unitDisplay:"narrow"});e&&"string"==typeof e?r={style:"currency",currency:e}:Object(f.isPlainObject)(e)&&(r=b({},e))}var n=r,a=n.style,o=void 0===a?"metric":a;return"metric"===o?O(t):"duration"===o?y(t,e):j(t,r)},S=d()(console.warn),j=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.locale,n=void 0===r?k():r,o=l()(e,["locale"]);try{return new Intl.NumberFormat(n,o).format(t)}catch(e){S("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(o)," ).format( ").concat(i()(t)," )"),e.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},u=["signDisplay","compactDisplay"],s={},f=0,p=Object.entries(o);f1&&void 0!==arguments[1]?arguments[1]:{},r=e.locale,n=void 0===r?k():r,a=e.style,o=void 0===a?"long":a,i=e.type,c=void 0===i?"conjunction":i;if(Intl.ListFormat){var u=new Intl.ListFormat(n,{style:o,type:c});return u.format(t)} +/* translators: used between list items, there is a space after the comma. */var s=Object(g.__)(", ","google-site-kit");return t.join(s)},k=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t,r=Object(f.get)(e,["_googlesitekitLegacyData","locale"]);if(r){var n=r.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return e.navigator.language}}).call(this,r(22))},77:function(t,e,r){"use strict";r.d(e,"m",(function(){return j})),r.d(e,"k",(function(){return x})),r.d(e,"c",(function(){return b})),r.d(e,"d",(function(){return y})),r.d(e,"i",(function(){return m})),r.d(e,"j",(function(){return h})),r.d(e,"h",(function(){return O})),r.d(e,"g",(function(){return w})),r.d(e,"f",(function(){return b})),r.d(e,"e",(function(){return S})),r.d(e,"l",(function(){return E})),r.d(e,"b",(function(){return P})),r.d(e,"a",(function(){return _}));var n=r(24),a=r.n(n),o=r(26),i=r(11),c=r.n(i),u=r(1),s=r(73),l=r(165),f=r(8),p=r(145),d=r(14),g=r.n(d),v=r(9),b=function(t){return(parseInt(t,10)||0)>0};function y(t){return t===v.a||b(t)}function m(t){return"string"==typeof t&&/^UA-\d+-\d+$/.test(t)}function h(t){return t===v.h||m(t)}function O(t){return t===v.g||b(t)}function w(t){return"string"==typeof t&&t.trim().length>0}function S(t){return"string"==typeof t&&/^AW-[0-9]+$/.test(t)}function j(t){if(!m(t))return!1;var e=t.match(/^UA-(\d+)-(\d+)/),r=g()(e,3);return{accountID:r[1],propertyID:t,number:r[2]}}function x(t){var e,r,n,a,o,i,c,u;if(void 0!==t)return!(null==t||null===(e=t[0])||void 0===e||null===(r=e.data)||void 0===r||null===(n=r.rows)||void 0===n?void 0:n.length)||!(null==t||null===(a=t[0])||void 0===a||null===(o=a.data)||void 0===o||null===(i=o.totals)||void 0===i||null===(c=i[0])||void 0===c||null===(u=c.values)||void 0===u?void 0:u.length)||!t[0].data.totals.some((function(t){return t.values.some((function(t){return t>0}))}))}var k=r(51);function D(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return A(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return A(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw o}}}}function A(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},a=n.keyColumnIndex,o=void 0===a?0:a,i=n.maxSlices,c=n.withOthers,s=void 0!==c&&c,l=n.tooltipCallback,f=(null==t?void 0:t[0])||{},p=f.data,d=void 0===p?{}:p,g=d.rows,v=void 0===g?[]:g,b=d.totals,y=void 0===b?[]:b,m="function"==typeof l,h=["Source","Percent"];m&&h.push({type:"string",role:"tooltip",p:{html:!0}});var O=(null==y||null===(e=y[0])||void 0===e||null===(r=e.values)||void 0===r?void 0:r[o])||0,w=[h],S=s,j=v.length,x=1;i>0?(S=s&&v.length>i,j=Math.min(v.length,S?i-1:i)):(S=!1,j=v.length);for(var k=0;k0?A/O:0;x-=E;var P=[D.dimensions[0],E];m&&P.push(l(D,P)),w.push(P)}if(S&&x>0){var I=[Object(u.__)("Others","google-site-kit"),x];m&&I.push(l(null,I)),w.push(I)}return w}function I(t,e,r){var n=[];return Object(o.each)(t,(function(t){if(t.metrics){var a=t.metrics[e].values,o=t.dimensions[0],i=Object(l.a)(o);n.push([i,a[r]])}})),n}function _(t,e,r){var n,i,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,d=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[Object(u.__)("Users","google-site-kit"),Object(u.__)("Sessions","google-site-kit"),Object(u.__)("Bounce Rate %","google-site-kit"),Object(u.__)("Session Duration","google-site-kit")],v=arguments.length>6&&void 0!==arguments[6]?arguments[6]:[function(t){return parseFloat(t).toLocaleString()},function(t){return parseFloat(t).toLocaleString()},function(t){return Object(f.u)(t/100,{style:"percent",signDisplay:"never",maximumFractionDigits:2})},function(t){return Object(f.u)(t,"s")}];if(!Array.isArray(null===(n=t[0])||void 0===n||null===(i=n.data)||void 0===i?void 0:i.rows))return!1;var b=a()(t[0].data.rows),y=b.length;if(2*r>y){for(var m=new Date,h=0;r>h;h++){var O=(m.getMonth()+1).toString(),w=m.getDate().toString(),S=m.getFullYear().toString()+(2>O.length?"0":"")+O+(2>w.length?"0":"")+w;if(h>y){var j={dimensions:[S],metrics:[{values:[0,0,0,0,0]}]};b.unshift(j)}m.setDate(m.getDate()-1)}b.push([0,0])}var x=g[e]===Object(u.__)("Session Duration","google-site-kit"),k=x?"timeofday":"number",D=[[{type:"date",label:Object(u.__)("Day","google-site-kit")},{type:"string",role:"tooltip",p:{html:!0}},{type:k,label:g[e]},{type:k,label:Object(u.__)("Previous period","google-site-kit")}]],A=Object(p.a)(b,{dateRangeLength:r}),E=A.compareRange,P=A.currentRange,_=I(P,l,e),R=I(E,d,e),T=Object(s.a)(),C={weekday:"short",month:"short",day:"numeric"};return Object(o.each)(_,(function(t,r){if(t[0]&&t[1]&&R[r]){var n=parseFloat(R[r][1]),a=Object(f.e)(t[1],n),o=Object(f.j)(a),i=Object(u.sprintf)( +/* translators: 1: date for user stats, 2: previous date for user stats comparison */ +Object(u._x)("%1$s vs %2$s","Date range for chart tooltip","google-site-kit"),t[0].toLocaleDateString(T,C),R[r][0].toLocaleDateString(T,C)),s=Object(u.sprintf)( +/* translators: 1: selected stat label, 2: numeric value of selected stat, 3: up or down arrow , 4: different change in percentage */ +Object(u._x)("%1$s: %2$s %3$s %4$s","Stat information for chart tooltip","google-site-kit"),g[e],v[e](t[1]),o,Object(f.u)(Math.abs(a),"%"));D.push([t[0],'
0,"googlesitekit-visualization-tooltip--down":a<0}),'">\n\t\t\t\t

').concat(i,"

\n\t\t\t\t

").concat(s,"

\n\t\t\t
"),x?Object(f.g)(t[1]):t[1],x?Object(f.g)(R[r][1]):R[r][1]])}})),D}},78:function(t,e,r){"use strict";(function(t){r.d(e,"a",(function(){return a}));var n=r(124),a=r.n(n)()(t)}).call(this,r(22))},8:function(t,e,r){"use strict";r.d(e,"z",(function(){return c.b})),r.d(e,"w",(function(){return u.a})),r.d(e,"A",(function(){return u.b})),r.d(e,"y",(function(){return d})),r.d(e,"f",(function(){return g.a})),r.d(e,"m",(function(){return g.b})),r.d(e,"u",(function(){return v.c})),r.d(e,"v",(function(){return v.d})),r.d(e,"r",(function(){return v.b})),r.d(e,"l",(function(){return v.a})),r.d(e,"s",(function(){return h})),r.d(e,"g",(function(){return O})),r.d(e,"b",(function(){return w.b})),r.d(e,"a",(function(){return w.a})),r.d(e,"c",(function(){return w.e})),r.d(e,"i",(function(){return w.f})),r.d(e,"x",(function(){return w.k})),r.d(e,"j",(function(){return S.b})),r.d(e,"q",(function(){return S.c})),r.d(e,"e",(function(){return S.a})),r.d(e,"o",(function(){return j.b})),r.d(e,"k",(function(){return j.a})),r.d(e,"t",(function(){return j.d})),r.d(e,"p",(function(){return x})),r.d(e,"n",(function(){return k})),r.d(e,"d",(function(){return D})),r.d(e,"B",(function(){return A})),r.d(e,"h",(function(){return E}));var n=r(123),a=r.n(n),o=r(118),i=r.n(o),c=r(32),u=r(63),s=r(30),l=r.n(s),f=r(81),p=r.n(f),d=function(t){return p()(JSON.stringify(function t(e){var r={};return Object.keys(e).sort().forEach((function(n){var a=e[n];a&&"object"===l()(a)&&!Array.isArray(a)&&(a=t(a)),r[n]=a})),r}(t)))};var g=r(83),v=(r(84),r(73));function b(t){return t.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function y(t){return"

".concat(t.replace(/\n{2,}/g,"

"),"

")}function m(t){return t.replace(/\n/gi,"
")}function h(t){for(var e=t,r=0,n=[b,y,m];r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw o}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:location,r=new URL(e.href);if(t)return r.searchParams&&r.searchParams.get?r.searchParams.get(t):u(t);var n,i={},c=o(r.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var s=a()(n.value,2),l=s[0],f=s[1];i[l]=f}}catch(t){c.e(t)}finally{c.f()}return i}}).call(this,r(22))},84:function(t,e,r){"use strict";(function(t){r(44),r(45)}).call(this,r(22))},85:function(t,e,r){"use strict";(function(t){r.d(e,"b",(function(){return o})),r.d(e,"c",(function(){return i})),r.d(e,"a",(function(){return c}));var n=r(169),a=r(62),o=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(e)))return"";var o=r.invertColor,i=void 0!==o&&o;return Object(n.a)(t.createElement(a.a,{direction:e>0?"up":"down",invertColor:i}))},i=function(t){var e,r,n,a,o,i,c,u,s,l,f,p,d,g,v;if(void 0!==t)return 1===(null==t||null===(e=t[0])||void 0===e||null===(r=e.data)||void 0===r||null===(n=r.rows)||void 0===n?void 0:n.length)||(null==t||null===(a=t[0])||void 0===a||null===(o=a.data)||void 0===o||null===(i=o.rows)||void 0===i||null===(c=i[0])||void 0===c||null===(u=c.metrics)||void 0===u||null===(s=u[0])||void 0===s||null===(l=s.values)||void 0===l?void 0:l[0])===(null==t||null===(f=t[0])||void 0===f||null===(p=f.data)||void 0===p||null===(d=p.totals)||void 0===d||null===(g=d[0])||void 0===g||null===(v=g.values)||void 0===v?void 0:v[0])},c=function(t,e){return t>0&&e>0?t/e-1:t>0?1:e>0?-1:0}}).call(this,r(3))},86:function(t,e,r){"use strict";(function(t){r.d(e,"a",(function(){return l}));var n=r(6),a=r.n(n),o=r(87),i=r(88);function c(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function u(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:t,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,a=u(u({},s),e);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(o.a)(a,r);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(i.a)(a,r,c,n)}}}).call(this,r(22))},87:function(t,e,r){"use strict";(function(t){r.d(e,"a",(function(){return o}));var n=r(52),a=r(31);function o(e,r){var o,i=Object(n.a)(r);return function(){var r=t.document;if(void 0===o&&(o=!!r.querySelector("script[".concat(a.b,"]"))),!o){var n=r.createElement("script");n.setAttribute(a.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(e.trackingID,"&l=").concat(a.a),r.head.appendChild(n),i("js",new Date),i("config",e.trackingID,{send_page_view:e.isSiteKitScreen}),o=!0}}}}).call(this,r(22))},88:function(t,e,r){"use strict";r.d(e,"a",(function(){return d}));var n=r(5),a=r.n(n),o=r(6),i=r.n(o),c=r(16),u=r.n(c),s=r(52),l=r(42);function f(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function p(t){for(var e=1;e0&&void 0!==c[0]?c[0]:{},n=t.clearAfterRestore,a=void 0===n||n,e.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(r=e.sent,i=r.cacheHit,o=r.value,!i){e.next=13;break}return e.next=10,{payload:{snapshot:o},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!a){e.next=13;break}return e.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}}),e)})),createSnapshot:s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))},i=(t={},o()(t,"DELETE_SNAPSHOT",(function(){return Object(g.a)("datastore::cache::".concat(e))})),o()(t,"CREATE_SNAPSHOT",p((function(t){return function(){return Object(g.d)("datastore::cache::".concat(e),t.stores[e].store.getState())}}))),o()(t,"RESTORE_SNAPSHOT",(function(){return Object(g.b)("datastore::cache::".concat(e),f.b)})),t);return{initialState:n,actions:a,controls:i,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0,a=t.type,i=t.payload;switch(a){case"SET_STATE_FROM_SNAPSHOT":var o=i.snapshot,c=(o.error,r()(o,["error"]));return c;default:return e}}}},v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m.a;return Object.values(e.stores).filter((function(e){return Object.keys(e.getActions()).includes("restoreSnapshot")}))},b=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m.a;return Promise.all(v(e).map((function(e){return e.getActions().createSnapshot()})))},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m.a;return Promise.all(v(e).map((function(e){return e.getActions().restoreSnapshot()})))}},105:function(e,t,n){"use strict";(function(e){var a=n(0),r=n.n(a),i=n(11),o=n.n(i),c=n(72),s=n(1),l=n(20),u=n(56);function SourceLink(t){var n=t.name,a=t.href,r=t.className,i=t.external;return Object(u.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",r)},Object(c.a)(Object(s.sprintf)( +/* translators: %s: source link */ +Object(s.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(l.a,{key:"link",href:a,external:i})}))}SourceLink.propTypes={name:r.a.string,href:r.a.string,className:r.a.string,external:r.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},107:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Cell}));var a=n(18),r=n.n(a),i=n(6),o=n.n(i),c=n(21),s=n.n(c),l=n(0),u=n.n(l),d=n(11),m=n.n(d);function Cell(t){var n,a=t.className,i=t.alignTop,c=t.alignMiddle,l=t.alignBottom,u=t.alignRight,d=t.alignLeft,g=t.smAlignRight,f=t.mdAlignRight,p=t.lgAlignRight,y=t.smSize,v=t.smStart,b=t.smOrder,h=t.mdSize,T=t.mdStart,_=t.mdOrder,O=t.lgSize,E=t.lgStart,A=t.lgOrder,k=t.size,N=t.children,S=s()(t,["className","alignTop","alignMiddle","alignBottom","alignRight","alignLeft","smAlignRight","mdAlignRight","lgAlignRight","smSize","smStart","smOrder","mdSize","mdStart","mdOrder","lgSize","lgStart","lgOrder","size","children"]);return e.createElement("div",r()({},S,{className:m()(a,"mdc-layout-grid__cell",(n={"mdc-layout-grid__cell--align-top":i,"mdc-layout-grid__cell--align-middle":c,"mdc-layout-grid__cell--align-bottom":l,"mdc-layout-grid__cell--align-right":u,"mdc-layout-grid__cell--align-left":d,"mdc-layout-grid__cell--align-right-phone":g,"mdc-layout-grid__cell--align-right-tablet":f,"mdc-layout-grid__cell--align-right-desktop":p},o()(n,"mdc-layout-grid__cell--span-".concat(k),12>=k&&k>0),o()(n,"mdc-layout-grid__cell--span-".concat(O,"-desktop"),12>=O&&O>0),o()(n,"mdc-layout-grid__cell--start-".concat(E,"-desktop"),12>=E&&E>0),o()(n,"mdc-layout-grid__cell--order-".concat(A,"-desktop"),12>=A&&A>0),o()(n,"mdc-layout-grid__cell--span-".concat(h,"-tablet"),8>=h&&h>0),o()(n,"mdc-layout-grid__cell--start-".concat(T,"-tablet"),8>=T&&T>0),o()(n,"mdc-layout-grid__cell--order-".concat(_,"-tablet"),8>=_&&_>0),o()(n,"mdc-layout-grid__cell--span-".concat(y,"-phone"),4>=y&&y>0),o()(n,"mdc-layout-grid__cell--start-".concat(v,"-phone"),4>=v&&v>0),o()(n,"mdc-layout-grid__cell--order-".concat(b,"-phone"),4>=b&&b>0),n))}),N)}Cell.propTypes={smSize:u.a.number,smStart:u.a.number,smOrder:u.a.number,mdSize:u.a.number,mdStart:u.a.number,mdOrder:u.a.number,lgSize:u.a.number,lgStart:u.a.number,lgOrder:u.a.number,size:u.a.number,alignTop:u.a.bool,alignMiddle:u.a.bool,alignBottom:u.a.bool,alignRight:u.a.bool,alignLeft:u.a.bool,smAlignRight:u.a.bool,mdAlignRight:u.a.bool,lgAlignRight:u.a.bool,className:u.a.string,children:u.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var a=n(18),r=n.n(a),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),m=Object(d.forwardRef)((function(t,n){var a=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",r()({ref:n,className:u()("mdc-layout-grid__inner",a)},c),i)}));m.displayName="Row",m.propTypes={className:s.a.string,children:s.a.node},m.defaultProps={className:""},t.a=m}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var a=n(18),r=n.n(a),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),m=Object(d.forwardRef)((function(t,n){var a=t.alignLeft,i=t.fill,c=t.className,s=t.children,l=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",r()({className:u()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":a,"mdc-layout-grid--collapsed":l,"mdc-layout-grid--fill":i})},d,{ref:n}),s)}));m.displayName="Grid",m.propTypes={alignLeft:s.a.bool,fill:s.a.bool,className:s.a.string,collapsed:s.a.bool,children:s.a.node},m.defaultProps={className:""},t.a=m}).call(this,n(3))},110:function(e,t,n){"use strict";n.d(t,"a",(function(){return a.a})),n.d(t,"b",(function(){return r.a})),n.d(t,"c",(function(){return i.a})),n.d(t,"e",(function(){return o.a})),n.d(t,"d",(function(){return c.a})),n.d(t,"f",(function(){return s.a})),n.d(t,"g",(function(){return l.a})),n.d(t,"k",(function(){return u.a})),n.d(t,"i",(function(){return d.a})),n.d(t,"l",(function(){return m.a})),n.d(t,"m",(function(){return g.a})),n.d(t,"n",(function(){return f.a})),n.d(t,"o",(function(){return p.c})),n.d(t,"h",(function(){return y.a})),n.d(t,"j",(function(){return v.a})),n.d(t,"p",(function(){return ZeroDataMessage}));var a=n(361),r=n(362),i=n(363),o=n(364),c=n(365),s=n(366),l=n(367),u=n(368),d=n(264),m=n(369),g=n(370),f=n(371),p=n(265),y=(n(266),n(372)),v=n(254),b=n(0),h=n.n(b),T=n(1),_=n(4),O=n.n(_),E=n(15),A=O.a.useSelect;function ZeroDataMessage(e){var t=e.skipPrefix,n=A((function(e){return e(E.c).getCurrentEntityURL()}));return t?n?Object(T.__)("Your page hasn’t received any visitors yet","google-site-kit"):Object(T.__)("Your site hasn’t received any visitors yet","google-site-kit"):n?Object(T.__)("No data to display: your page hasn’t received any visitors yet","google-site-kit"):Object(T.__)("No data to display: your site hasn’t received any visitors yet","google-site-kit")}ZeroDataMessage.propTypes={skipPrefix:h.a.bool}},1122:function(e,t,n){"use strict";n.r(t);var a=n(4),r=n.n(a),i=n(135),o=n.n(i),c=n(270),s=n.n(c),l=n(1),u=n(167),d=n(578),m=n(9),g=(n(538),n(713)),f=(n(539),n(540),n(541),n(542),n(325),n(714)),p=(n(543),n(715)),y=(n(544),n(545),n(546),n(547),n(797)),v=n(804),b=n(716),h=n(101),T=n(5),_=n.n(T),O=n(16),E=n.n(O),A=n(7),k=n.n(A),N=n(34),S=n.n(N),I=n(35),j=n(27),P=n(156),w=n(77),D=n(69),C=n(58),Z=n(17),M=n(28),R=r.a.createRegistrySelector;function G(e){return x.apply(this,arguments)}function x(){return(x=E()(_.a.mark((function e(t){var n,a,r,i;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.select,a=t.dispatch,n(j.b).haveSettingsChanged()){e.next=3;break}return e.abrupt("return",{});case 3:return e.next=5,a(j.b).submitChanges();case 5:if(r=e.sent,i=r.error,!Object(C.e)(i)){e.next=9;break}return e.abrupt("return",{error:i});case 9:return e.abrupt("return",{});case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function L(){return(L=E()(_.a.mark((function e(t){var n,a,r,i,o,c,s,l,u,d,g,f,p,y,v,b,h,T,O,E;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.select,a=t.dispatch,(r=n(m.f).getPropertyID())!==m.h){e.next=14;break}return i=n(m.f).getAccountID(),e.next=6,a(m.f).createProperty(i);case 6:if(o=e.sent,c=o.response,!(s=o.error)){e.next=11;break}return e.abrupt("return",{error:s});case 11:r=c.id,a(m.f).setPropertyID(c.id),a(m.f).setInternalWebPropertyID(c.internalWebPropertyId);case 14:if(n(m.f).getProfileID()!==m.g){e.next=26;break}return l=n(I.a).getValue(m.e,"profileName"),u=n(m.f).getAccountID(),e.next=20,a(m.f).createProfile(u,r,{profileName:l});case 20:if(d=e.sent,g=d.response,!(f=d.error)){e.next=25;break}return e.abrupt("return",{error:f});case 25:a(m.f).setProfileID(g.id);case 26:if(p=n(j.b).getPropertyID(),y=n(j.b).getWebDataStreamID(),p!==j.c&&y!==j.d){e.next=35;break}return e.next=31,G(t);case 31:if(v=e.sent,!(b=v.error)){e.next=35;break}return e.abrupt("return",{error:b});case 35:if(!n(m.f).haveSettingsChanged()){e.next=42;break}return e.next=38,a(m.f).saveSettings();case 38:if(h=e.sent,!(T=h.error)){e.next=42;break}return e.abrupt("return",{error:T});case 42:return e.next=44,S.a.invalidateCache("modules","analytics");case 44:return e.next=46,G(t);case 46:if(O=e.sent,!(E=O.error)){e.next=50;break}return e.abrupt("return",{error:E});case 50:return e.abrupt("return",{});case 51:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var U=R((function(e){return function(){var t=e(m.f).getSettings();if(t){if(!(e(Z.a).isModuleAvailable("tagmanager")&&e(Z.a).isModuleConnected("tagmanager"))||!e(M.g))return t.canUseSnippet;if(!e(M.g).getUseSnippet())return t.canUseSnippet;var n=e(M.g).getGAPropertyID();return Object(w.i)(n)?n!==t.propertyID:t.canUseSnippet}}})),B=o.a.createModuleStore("analytics",{ownedSettingsSlugs:["accountID","internalWebPropertyID","profileID","propertyID"],storeName:m.f,settingSlugs:["accountID","adsConversionID","anonymizeIP","canUseSnippet","internalWebPropertyID","ownerID","profileID","propertyID","trackingDisabled","useSnippet"],submitChanges:function(e){return L.apply(this,arguments)},rollbackChanges:function(e){var t=e.select,n=e.dispatch;n(j.b).rollbackChanges(),n(I.a).setValues(m.e,{enableGA4:void 0}),t(m.f).haveSettingsChanged()&&n(m.f).rollbackSettings()},validateCanSubmitChanges:function(e){var t=Object(D.e)(e)(m.f),n=t.getAccountID,a=t.getAdsConversionID,r=t.getInternalWebPropertyID,i=t.getProfileID,o=t.getPropertyID,c=t.haveSettingsChanged,s=t.isDoingSubmitChanges;if(k()(!s(),P.a),k()(c()||e(j.b).haveSettingsChanged(),P.b),k()(Object(w.c)(n()),"a valid accountID is required to submit changes"),k()(Object(w.j)(o()),"a valid propertyID is required to submit changes"),k()(Object(w.h)(i()),"a valid profileID is required to submit changes"),a()&&k()(Object(w.e)(a()),"a valid adsConversionID is required to submit changes"),i()===m.g){var l=e(I.a).getValue(m.e,"profileName");k()(Object(w.g)(l),"a valid profile name is required to submit changes")}k()(!Object(w.i)(o())||Object(w.f)(r()),"cannot submit changes with incorrect internal webPropertyID"),e(m.f).canUseGA4Controls()&&e(j.b).__dangerousCanSubmitChanges()}});B.selectors.getCanUseSnippet=U;var F=B,z=n(6),V=n.n(z),q=n(57),H=n.n(q),W=n(41),K=n(53),Y=n(24),$=n.n(Y),J=n(15);function X(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Q(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID;k()(t,"accountID is required.")}}),ie=Object(W.a)({baseName:"createProperty",controlCallback:function(e){var t=e.accountID;return S.a.set("modules","analytics","create-property",{accountID:t})},reducerCallback:function(e,t,n){var a=n.accountID;return Q(Q({},e),{},{properties:Q(Q({},e.properties),{},V()({},a,[].concat($()(e.properties[a]||[]),[t])))})},argsToParams:function(e){return{accountID:e}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID;k()(t,"accountID is required.")}}),oe={properties:{},isAwaitingPropertiesProfilesCompletion:{},matchedProperty:void 0,primaryPropertyType:m.j},ce={createProperty:Object(D.f)((function(e){k()(e,"accountID is required.")}),_.a.mark((function e(t){var n,a,r;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ie.actions.fetchCreateProperty(t);case 2:return n=e.sent,a=n.response,r=n.error,e.abrupt("return",{response:a,error:r});case 6:case"end":return e.stop()}}),e)}))),receiveMatchedProperty:function(e){return k()(e,"matchedProperty is required."),{payload:{matchedProperty:e},type:"RECEIVE_MATCHED_PROPERTY"}},selectProperty:Object(D.f)((function(e){k()(Object(w.j)(e),"A valid propertyID selection is required.")}),_.a.mark((function e(t){var n,a,i,o,c,s,l,u=arguments;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=u.length>1&&void 0!==u[1]?u[1]:"",e.next=3,r.a.commonActions.getRegistry();case 3:if(i=e.sent,o=i.select(m.f).getAccountID(),Object(w.c)(o)){e.next=7;break}return e.abrupt("return");case 7:if(i.dispatch(m.f).setPropertyID(t),m.h!==t){e.next=11;break}return i.dispatch(m.f).setProfileID(m.g),e.abrupt("return");case 11:return e.next=13,ce.waitForProperties(o);case 13:return c=i.select(m.f).getPropertyByID(t)||{},a||(a=c.internalWebPropertyId),i.dispatch(m.f).setInternalWebPropertyID(a||""),s=i.select(m.f).getProfileID(),e.next=19,r.a.commonActions.await(i.__experimentalResolveSelect(m.f).getProfiles(o,t));case 19:if(l=e.sent,Array.isArray(l)){e.next=22;break}return e.abrupt("return");case 22:if(!s||!l.some((function(e){return e.id===s}))){e.next=24;break}return e.abrupt("return");case 24:if(!c.defaultProfileId||!l.some((function(e){return e.id===c.defaultProfileId}))){e.next=27;break}return i.dispatch(m.f).setProfileID(c.defaultProfileId),e.abrupt("return");case 27:i.dispatch(m.f).setProfileID((null===(n=l[0])||void 0===n?void 0:n.id)||m.g);case 28:case"end":return e.stop()}}),e)}))),findMatchedProperty:_.a.mark((function e(t){var n,a,i;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ce.waitForProperties(t);case 2:return e.next=4,r.a.commonActions.getRegistry();case 4:return n=e.sent,a=n.select(J.c).getSiteURLPermutations(),i=n.select(m.f).getProperties(t),e.abrupt("return",Object(w.l)(i,a));case 8:case"end":return e.stop()}}),e)})),receiveGetProperties:function(e,t){var n=t.accountID;return k()(Array.isArray(e),"properties must be an array."),k()(n,"accountID is required."),{payload:{properties:e,accountID:n},type:"RECEIVE_GET_PROPERTIES"}},receivePropertiesProfilesCompletion:function(e){return k()(e,"accountID is required."),{payload:{accountID:e},type:"RECEIVE_PROPERTIES_PROFILES_COMPLETION"}},waitForProperties:function(e){return{payload:{accountID:e},type:"WAIT_FOR_PROPERTIES"}},setPrimaryPropertyType:function(e){return k()([m.j,m.i].includes(e),'type must be "'.concat(m.j,'" or "').concat(m.i,'"')),{payload:{primaryPropertyType:e},type:"SET_PRIMARY_PROPERTY_TYPE"}}},se=V()({},"WAIT_FOR_PROPERTIES",ae((function(e){return function(t){var n=t.payload.accountID,a=function(){return void 0!==e.select(m.f).getProperties(n)};return!!a()||new Promise((function(t){var n=e.subscribe((function(){a()&&(n(),t())}))}))}}))),le={getProperties:_.a.mark((function e(t){var n,a,i,o,c,s,l,u;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Object(w.c)(t)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,r.a.commonActions.getRegistry();case 4:return n=e.sent,e.next=7,ee("getProperties",[t]);case 7:if(void 0!==n.select(m.f).getProperties(t)){e.next=20;break}return e.next=11,re.actions.fetchGetPropertiesProfiles(t);case 11:if(a=e.sent,i=a.response,o=a.error,c=n.dispatch,i&&(c(m.f).receiveGetProperties(i.properties,{accountID:t}),(null===(s=i.profiles)||void 0===s||null===(l=s[0])||void 0===l?void 0:l.webPropertyId)&&(u=i.profiles[0].webPropertyId,c(m.f).receiveGetProfiles(i.profiles,{accountID:t,propertyID:u})),i.matchedProperty&&c(m.f).receiveMatchedProperty(i.matchedProperty),i.properties),c(m.f).receivePropertiesProfilesCompletion(t),!o){e.next=20;break}return e.next=20,te(o,"getProperties",[t]);case 20:case"end":return e.stop()}}),e)}))},ue={getPropertyByID:function(e,t){if(Object(w.i)(t)){var n=Object(w.m)(t).accountID;return(e.properties[n]||[]).find((function(e){return e.id===t}))}},getPrimaryPropertyType:function(e){return e.primaryPropertyType},getMatchedProperty:function(e){return e.matchedProperty},getProperties:function(e,t){return e.properties[t]},isDoingCreateProperty:ne((function(e){return function(t,n){return e(m.f).isFetchingCreateProperty(n)}})),isDoingGetProperties:ne((function(e){return function(t,n){return!(!n||!t.isAwaitingPropertiesProfilesCompletion[n])||e(m.f).isFetchingGetPropertiesProfiles(n)}})),getPropertiesIncludingGA4:ne((function(e){return function(t,n){var a=e(m.f).getProperties(n);if(void 0!==a){var r=e(j.b).getProperties(n);if(void 0!==r){a=a.concat(r);var i=function(e){return!!e._id},o=function(e,t){return et?1:0};return a.sort((function(e,t){var n=i(e)?e.displayName:e.name,a=i(t)?t.displayName:t.name;if(n!==a)return o(n,a);var r=i(e)?e._id:e.id,c=i(t)?t._id:t.id;return o(r,c)}))}}}}))},de=r.a.combineStores(re,ie,{initialState:oe,actions:ce,controls:se,reducer:function(e,t){var n=t.type,a=t.payload;switch(n){case"RECEIVE_MATCHED_PROPERTY":var r=a.matchedProperty;return Q(Q({},e),{},{matchedProperty:r});case"RECEIVE_GET_PROPERTIES":var i=a.properties,o=a.accountID;return Q(Q({},e),{},{properties:Q(Q({},e.properties),{},V()({},o,$()(i)))});case"RECEIVE_PROPERTIES_PROFILES_COMPLETION":var c=a.accountID;return Q(Q({},e),{},{isAwaitingPropertiesProfilesCompletion:Q(Q({},e.isAwaitingPropertiesProfilesCompletion),{},V()({},c,!1))});case"SET_PRIMARY_PROPERTY_TYPE":var s=a.primaryPropertyType;return Q(Q({},e),{},{primaryPropertyType:s});default:return e}},resolvers:le,selectors:ue}),me=(de.initialState,de.actions),ge=(de.controls,de.reducer,de.resolvers,de.selectors,de);function fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function pe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.data;k()(H()(t),"data must be an object.")}}),Oe={accounts:void 0,isAwaitingAccountsPropertiesProfilesCompletion:!1,accountTicketID:void 0,finishedSelectingAccount:void 0},Ee={receiveGetAccounts:function(e){return k()(Array.isArray(e),"accounts must be an array."),{payload:{accounts:e},type:"RECEIVE_GET_ACCOUNTS"}},receiveAccountsPropertiesProfilesCompletion:function(){return{payload:{},type:"RECEIVE_ACCOUNTS_PROPERTIES_PROFILES_COMPLETION"}},resetAccounts:_.a.mark((function e(){var t,n;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.a.commonActions.getRegistry();case 2:return t=e.sent,n=t.dispatch,e.next=6,{payload:{},type:"RESET_ACCOUNTS"};case 6:return e.abrupt("return",n(m.f).invalidateResolutionForStoreSelector("getAccounts"));case 7:case"end":return e.stop()}}),e)})),selectAccount:Object(D.f)((function(e){k()(Object(w.d)(e),"A valid accountID is required to select.")}),_.a.mark((function e(t){var n,a,i,o,c,s,l,u,d,g,f;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.a.commonActions.getRegistry();case 2:return i=e.sent,o={type:"FINISH_SELECTING_ACCOUNT",payload:{}},e.next=6,{type:"START_SELECTING_ACCOUNT",payload:{}};case 6:return e.next=8,he();case 8:if(i.dispatch(m.f).setSettings({accountID:t,internalWebPropertyID:"",propertyID:"",profileID:""}),m.a!==t){e.next=13;break}return e.next=12,o;case 12:return e.abrupt("return");case 13:return e.next=15,me.findMatchedProperty(t);case 15:if(c=e.sent,s=null===(n=c)||void 0===n?void 0:n.id,c||(l=i.select(m.f).getProperties(t),c={id:0===l.length?m.h:"",internalWebPropertyId:""}),!(null===(a=c)||void 0===a?void 0:a.id)){e.next=23;break}return e.next=21,me.selectProperty(null===(u=c)||void 0===u?void 0:u.id,null===(d=c)||void 0===d?void 0:d.internalWebPropertyId);case 21:e.next=25;break;case 23:i.dispatch(m.f).setPropertyID(""),i.dispatch(m.f).setProfileID("");case 25:if(i.select(m.f).canUseGA4Controls()){e.next=29;break}return e.next=28,o;case 28:return e.abrupt("return");case 29:return i.dispatch(m.f).setPrimaryPropertyType(m.j),g=i.dispatch(j.b).matchAndSelectProperty(t,j.c),e.next=33,r.a.commonActions.await(g);case 33:return f=e.sent,(null==f?void 0:f._id)&&!s&&i.dispatch(m.f).setPrimaryPropertyType(m.i),e.next=38,o;case 38:case"end":return e.stop()}}),e)}))),createAccount:_.a.mark((function e(){var t,n,a,i,o,c,s;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.a.commonActions.getRegistry();case 2:return t=e.sent,n=t.select(I.a),a=n.getValue,i={accountName:a(m.d,"accountName"),propertyName:a(m.d,"propertyName"),profileName:a(m.d,"profileName"),timezone:a(m.d,"timezone")},e.next=7,be("createAccount",[]);case 7:return e.next=9,_e.actions.fetchCreateAccount(i);case 9:if(o=e.sent,c=o.response,!(s=o.error)){e.next=15;break}return e.next=15,ve(s,"createAccount",[]);case 15:return e.abrupt("return",{response:c,error:s});case 16:case"end":return e.stop()}}),e)}))},Ae={getAccounts:_.a.mark((function e(){var t,n,a,i,o,c,s,l,u,d,g,f,p,y,v,b,h,T,O;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.a.commonActions.getRegistry();case 2:return n=e.sent,e.next=5,be("getAccounts",[]);case 5:if(a=n.select(m.f).getAccounts(),i=n.select(m.f).getMatchedProperty(),void 0!==a){e.next=19;break}return e.next=10,Te.actions.fetchGetAccountsPropertiesProfiles();case 10:if(o=e.sent,c=o.response,s=o.error,l=n.dispatch,c&&(l(m.f).receiveGetAccounts(c.accounts),(null===(u=c.properties)||void 0===u||null===(d=u[0])||void 0===d?void 0:d.accountId)&&(p=c.properties[0].accountId,l(m.f).receiveGetProperties(c.properties,{accountID:p})),(null===(g=c.profiles)||void 0===g||null===(f=g[0])||void 0===f?void 0:f.webPropertyId)&&(y=c.profiles[0].webPropertyId,v=c.profiles[0].accountId,l(m.f).receiveGetProfiles(c.profiles,{accountID:v,propertyID:y})),c.matchedProperty&&l(m.f).receiveMatchedProperty(c.matchedProperty),i=c.matchedProperty),!s){e.next=18;break}return e.next=18,ve(s,"getAccounts",[]);case 18:l(m.f).receiveAccountsPropertiesProfilesCompletion();case 19:if(b=n.select(m.f).getAccountID(),!i||b){e.next=25;break}return b=i.accountId,n.dispatch(m.f).setAccountID(i.accountId),e.next=25,me.selectProperty(i.id,i.internalWebPropertyId);case 25:if(!n.select(Z.a).isModuleConnected("analytics")){e.next=28;break}return e.abrupt("return");case 28:if(i||b){e.next=38;break}return e.next=31,r.a.commonActions.await(n.dispatch(j.b).findMatchedProperty());case 31:if(!(null==(h=e.sent)?void 0:h._accountID)){e.next=38;break}return n.dispatch(m.f).setAccountID(null==h?void 0:h._accountID),n.dispatch(m.f).setPrimaryPropertyType(m.i),e.next=37,r.a.commonActions.await(n.dispatch(j.b).selectProperty(h._id));case 37:return e.abrupt("return");case 38:if((O=n.select(j.b).getPropertyID())!==j.c){e.next=41;break}return e.abrupt("return");case 41:if(!O){e.next=45;break}return e.next=44,r.a.commonActions.await(n.__experimentalResolveSelect(j.b).getProperty(O));case 44:T=e.sent;case 45:if(!b||(null===(t=T)||void 0===t?void 0:t._accountID)===b){e.next=48;break}return e.next=48,r.a.commonActions.await(n.dispatch(j.b).matchAndSelectProperty(b,j.c));case 48:case"end":return e.stop()}}),e)}))},ke={getAccounts:function(e){return e.accounts},isDoingGetAccounts:function(e){return!!e.isAwaitingAccountsPropertiesProfilesCompletion||Object.values(e.isFetchingGetAccountsPropertiesProfiles).some(Boolean)},isDoingCreateAccount:function(e){return Object.values(e.isFetchingCreateAccount).some(Boolean)},getAccountTicketTermsOfServiceURL:ye((function(e){return function(t){var n=t.accountTicketID,a=e(m.f).getServiceURL({path:"/termsofservice/".concat(n),query:{provisioningSignup:"false"}});if(void 0!==n&&a)return a}})),canSubmitAccountCreate:ye((function(e){return function(){var t=e(I.a).getValue;return!!t(m.d,"accountName")&&(!!t(m.d,"propertyName")&&(!!t(m.d,"profileName")&&!!t(m.d,"timezone")))}})),hasFinishedSelectingAccount:function(e){return e.finishedSelectingAccount}},Ne=r.a.combineStores(Te,_e,{initialState:Oe,actions:Ee,reducer:function(e,t){var n=t.type,a=t.payload;switch(n){case"START_SELECTING_ACCOUNT":return pe(pe({},e),{},{finishedSelectingAccount:!1});case"FINISH_SELECTING_ACCOUNT":return pe(pe({},e),{},{finishedSelectingAccount:!0});case"RECEIVE_GET_ACCOUNTS":var r=a.accounts;return pe(pe({},e),{},{accounts:r});case"RECEIVE_ACCOUNTS_PROPERTIES_PROFILES_COMPLETION":return pe(pe({},e),{},{isAwaitingAccountsPropertiesProfilesCompletion:!1});case"RESET_ACCOUNTS":return pe(pe({},e),{},{accounts:Oe.accounts,settings:pe(pe({},e.settings),{},{accountID:void 0,propertyID:void 0,internalWebPropertyID:void 0,profileID:void 0})});default:return e}},resolvers:Ae,selectors:ke}),Se=(Ne.initialState,Ne.actions,Ne.controls,Ne.reducer,Ne.resolvers,Ne.selectors,Ne);function Ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function je(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID,n=e.propertyID;k()(Object(w.c)(t),"a valid account ID is required to fetch profiles for."),k()(Object(w.i)(n),"a valid property ID is required to fetch profiles for.")}}),Ke=Object(W.a)({baseName:"createProfile",controlCallback:function(e){var t=e.accountID,n=e.propertyID,a=e.profileName;return S.a.set("modules","analytics","create-profile",{accountID:t,propertyID:n,profileName:a})},reducerCallback:function(e,t,n){var a=n.accountID,r=n.propertyID;return qe(qe({},e),{},{profiles:qe(qe({},e.profiles),{},V()({},"".concat(a,"::").concat(r),[].concat($()(e.profiles["".concat(a,"::").concat(r)]||[]),[t])))})},argsToParams:function(e,t,n){return{accountID:e,propertyID:t,profileName:n.profileName}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.accountID,n=e.propertyID,a=e.profileName;k()(Object(w.c)(t),"a valid account ID is required to create a profiles."),k()(Object(w.i)(n),"a valid property ID is required to create a profile."),k()(Object(w.g)(a),"a valid name is required to create a profile.")}}),Ye={createProfile:Object(D.f)((function(e,t,n){var a=n.profileName;k()(Object(w.c)(e),"a valid account ID is required to create a profile."),k()(Object(w.i)(t),"a valid property ID is required to create a profile."),k()(Object(w.g)(a),"a valid name is required to create a profile.")}),_.a.mark((function e(t,n,a){var r,i,o,c;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.profileName,e.next=3,Ke.actions.fetchCreateProfile(t,n,{profileName:r});case 3:return i=e.sent,o=i.response,c=i.error,e.abrupt("return",{response:o,error:c});case 7:case"end":return e.stop()}}),e)}))),findPropertyProfile:_.a.mark((function e(t,n){var a,i,o,c,s=arguments;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.length>2&&void 0!==s[2]?s[2]:"",e.next=3,r.a.commonActions.getRegistry();case 3:return i=e.sent,e.next=6,r.a.commonActions.await(i.__experimentalResolveSelect(m.f).getProfiles(t,n));case 6:if(o=e.sent,!a){e.next=11;break}if(!(c=o.find((function(e){return e.id===a})))){e.next=11;break}return e.abrupt("return",c);case 11:return e.abrupt("return",o[0]);case 12:case"end":return e.stop()}}),e)}))},$e={getProfiles:_.a.mark((function e(t,n){var a,i,o,c,s;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Object(w.c)(t)){e.next=2;break}return e.abrupt("return");case 2:if(Object(w.i)(n)){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,r.a.commonActions.getRegistry();case 6:if(a=e.sent,i=a.select(m.f).getProfiles(t,n)){e.next=13;break}return e.next=11,We.actions.fetchGetProfiles(t,n);case 11:o=e.sent,i=o.response;case 13:c=a.select(m.f).getProfileID(),i&&!c&&(s=i[0]||{id:m.g},a.dispatch(m.f).setProfileID(s.id));case 15:case"end":return e.stop()}}),e)}))},Je={getProfiles:function(e,t,n){return e.profiles["".concat(t,"::").concat(n)]},isDoingCreateProfile:function(e){return Object.values(e.isFetchingCreateProfile).some(Boolean)},isDoingGetProfiles:He((function(e){return function(t,n,a){return e(m.f).isFetchingGetProfiles(n,a)}}))},Xe=r.a.combineStores(We,Ke,{initialState:{profiles:{}},actions:Ye,resolvers:$e,selectors:Je}),Qe=(Xe.initialState,Xe.actions,Xe.controls,Xe.reducer,Xe.resolvers,Xe.selectors,Xe),et=n(12),tt=n(8);function nt(e,t){var n,a;return!(400!==(null==e?void 0:e.code)||!(null===(n=e.message)||void 0===n||null===(a=n.startsWith)||void 0===a?void 0:a.call(n,"Restricted metric")))&&(!(t instanceof RegExp||"string"==typeof t)||e.message.match(/ga:[a-z]+/gi).some((function(e){return e.match(t)})))}var at=n(21),rt=n.n(at),it=n(437),ot=n.n(it),ct=n(71);function report_normalization_ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function report_normalization_objectSpread(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.metrics,n=e.dimensions,a=rt()(e,["metrics","dimensions"]);return report_normalization_objectSpread({metrics:report_normalization_normalizeMetrics(t),dimensions:report_normalization_normalizeDimensions(n)},a)})),report_normalization_normalizeMetrics=function(e){return ot()(e).map((function(e){return"string"==typeof e?{expression:e}:e})).filter((function(e){return H()(e)}))},report_normalization_normalizeDimensions=function(e){return ot()(e).map((function(e){return"string"==typeof e?{name:e}:e})).filter((function(e){return H()(e)}))},lt=n(257),ut=n(30),dt=n.n(ut);function mt(e){return Object(lt.c)(e,(function(e){var t=e.hasOwnProperty("expression")&&"string"==typeof e.expression,n=!e.hasOwnProperty("alias")||"string"==typeof e.alias;return t&&n}))}function gt(e){return Object(lt.c)(e,(function(e){return e.hasOwnProperty("name")&&"string"==typeof e.name}))}function ft(e){var t=["number","string"];return Object.keys(e).every((function(n){return t.includes(dt()(e[n]))&&"string"==typeof n||Array.isArray(e[n])&&Object.keys(e[n]).every((function(a){return t.includes(dt()(e[n][a]))&&t.includes(dt()(a))}))}))}function pt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function yt(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.options;k()(H()(t),"Options for Analytics report must be an object."),k()(Object(lt.a)(t),"Either date range or start/end dates must be provided for Analytics report.");var n=st(t),a=n.metrics,r=n.dimensions,i=n.dimensionFilters,o=n.orderby;k()(a.length,"Requests must specify at least one metric for an Analytics report."),k()(mt(a),'Metrics for an Analytics report must be either a string, an array of strings, an object, an array of objects or a mix of strings and objects. If an object is used, it must have "expression" and "alias" properties.'),r&&k()(gt(r),'Dimensions for an Analytics report must be either a string, an array of strings, an object, an array of objects or a mix of strings and objects. If an object is used, it must have "name" property.'),i&&k()(ft(i),"Dimension filters must be a map of dimension names as keys and dimension values as values."),o&&k()(Object(lt.b)(o),'Orders for an Analytics report must be either an object or an array of objects where each object should have "fieldName" and "sortOrder" properties.')}}),ht={getReport:_.a.mark((function e(){var t,n,a,i,o=arguments;return _.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.length>0&&void 0!==o[0]?o[0]:{},e.next=3,r.a.commonActions.getRegistry();case 3:if(n=e.sent,!n.select(m.f).getReport(t)){e.next=7;break}return e.abrupt("return");case 7:return e.next=9,bt.actions.fetchGetReport(t);case 9:if(a=e.sent,i=a.error,!st(t).metrics.some((function(e){var t=e.expression;return/^ga:adsense/.test(t)}))){e.next=19;break}if(!nt(i,"ga:adsense")){e.next=17;break}return e.next=15,De.setAdsenseLinked(!1);case 15:e.next=19;break;case 17:return e.next=19,De.setAdsenseLinked(!0);case 19:case"end":return e.stop()}}),e)}))},Tt={getReport:function(e,t){return e.reports[Object(tt.y)(t)]},getPageTitles:vt((function(e){return function(t,n){var a,r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i.startDate,c=i.endDate;if(Array.isArray(n)){var s=[],u=5;(n||[]).forEach((function(e){var t=e.columnHeader,n=e.data;if(Array.isArray(null==t?void 0:t.dimensions)&&Array.isArray(null==n?void 0:n.rows)&&t.dimensions.includes("ga:pagePath")){var a=t.dimensions.indexOf("ga:pagePath");((null==n?void 0:n.rows)||[]).forEach((function(e){var t=e.dimensions;s.includes(t[a])||s.push(t[a])}))}}));var d={};if(!s.length)return d;var g={startDate:o,endDate:c,dimensions:["ga:pagePath","ga:pageTitle"],dimensionFilters:{"ga:pagePath":s.sort()},metrics:[{expression:"ga:pageviews",alias:"Pageviews"}],orderby:[{fieldName:"ga:pageviews",sortOrder:"DESCENDING"}],limit:u*s.length},f=e(m.f).getReport(g);if(void 0!==f)return((null==f||null===(a=f[0])||void 0===a||null===(r=a.data)||void 0===r?void 0:r.rows)||[]).forEach((function(e){var t=e.dimensions;d[t[0]]||(d[t[0]]=t[1])})),s.forEach((function(e){d[e]||(d[e]=Object(l.__)("(unknown)","google-site-kit"))})),d}}})),isGatheringData:vt((function(e){return function(){var t,n,a,r,i,o=e(et.a).getDateRangeDates({offsetDays:m.b}),c={dimensions:["ga:date"],metrics:[{expression:"ga:users"}],startDate:o.startDate,endDate:o.endDate},s=e(J.c).getCurrentEntityURL();s&&(c.url=s);var l=e(m.f).getReport(c);if(e(m.f).hasFinishedResolution("getReport",[c]))return!!Array.isArray(l)&&(!Array.isArray(null===(t=l[0])||void 0===t||null===(n=t.data)||void 0===n?void 0:n.rows)||0===(null===(a=l[0])||void 0===a||null===(r=a.data)||void 0===r||null===(i=r.rows)||void 0===i?void 0:i.length))}})),hasZeroData:vt((function(e){return function(){var t=e(et.a).getDateRangeDates({offsetDays:m.b}),n={dimensions:["ga:date"],metrics:[{expression:"ga:users"}],startDate:t.startDate,endDate:t.endDate},a=e(J.c).getCurrentEntityURL();a&&(n.url=a);var r=e(m.f).isGatheringData();if(void 0!==r){var i=e(m.f).getReport(n);if(e(m.f).hasFinishedResolution("getReport",[n])){if(!Array.isArray(i))return!1;var o=Object(w.k)(i);return!1!==r||!1!==o}}}}))},_t=r.a.combineStores(bt,{initialState:{reports:{}},resolvers:ht,selectors:Tt}),Ot=(_t.initialState,_t.actions,_t.controls,_t.reducer,_t.resolvers,_t.selectors,_t),Et=n(321),At=Object(Et.a)({storeName:m.f,tagMatchers:[/):', " $script_execution", $tag, 1 ); + } + + return $tag; + } + + /** + * Executes all extra callbacks before printing a list of dependencies. + * + * This method ensures that such callbacks that run e.g. `wp_add_inline_script()` are executed just-in-time, + * only when the asset is actually loaded in the current request. + * + * This method works recursively, also looking at dependencies, and supports both scripts and stylesheets. + * + * @since 1.2.0 + * + * @param WP_Dependencies $dependencies WordPress dependencies class instance. + * @param array $handles List of handles to run before print callbacks for. + */ + private function run_before_print_callbacks( WP_Dependencies $dependencies, array $handles ) { + $is_amp = $this->context->is_amp(); + + foreach ( $handles as $handle ) { + if ( isset( $this->print_callbacks_done[ $handle ] ) ) { + continue; + } + + $this->print_callbacks_done[ $handle ] = true; + + if ( isset( $this->assets[ $handle ] ) ) { + $this->assets[ $handle ]->before_print(); + + // TODO: This can be removed at some point, see https://github.com/ampproject/amp-wp/pull/4001. + if ( $is_amp && $this->assets[ $handle ] instanceof Script ) { + $this->add_extra_script_amp_dev_mode( $handle ); + } + } + + if ( isset( $dependencies->registered[ $handle ] ) && is_array( $dependencies->registered[ $handle ]->deps ) ) { + $this->run_before_print_callbacks( $dependencies, $dependencies->registered[ $handle ]->deps ); + } + } + } + + /** + * Adds a comment to all extra scripts so that they are considered compatible with AMP dev mode. + * + * {@see Assets::add_amp_dev_mode_attributes()} makes all registered scripts and stylesheets compatible, including + * their potential inline additions. This method does the same for extra scripts, which are registered under the + * 'data' key. + * + * @since 1.4.0 + * + * @param string $handle The handle of a registered script. + */ + private function add_extra_script_amp_dev_mode( $handle ) { + $data = wp_scripts()->get_data( $handle, 'data' ) ?: ''; + if ( ! empty( $data ) && is_string( $data ) ) { + wp_scripts()->add_data( $handle, 'data', '/*googlesitekit*/ ' . $data ); + } + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Assets/Manifest.php b/wp-content/plugins/google-site-kit/includes/Core/Assets/Manifest.php new file mode 100644 index 000000000..6d315a8a5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Assets/Manifest.php @@ -0,0 +1,66 @@ + [ $filename, $hash ] map. + * + * @since 1.48.0 + * @var array + */ + private static $data; + + /** + * Gets the manifest entry for the given handle. + * + * @since 1.48.0 + * + * @param string $handle Asset handle to get manifest data for. + * @return array List of $filename and $hash, or `null` for both if not found. + */ + public static function get( $handle ) { + if ( null === self::$data ) { + self::load(); + } + + if ( isset( self::$data[ $handle ] ) ) { + return self::$data[ $handle ]; + } + + return array( null, null ); + } + + /** + * Loads the generated manifest file. + * + * @since 1.48.0 + */ + private static function load() { + $path = Plugin::instance()->context()->path( 'dist/manifest.php' ); + + if ( file_exists( $path ) ) { + // If the include fails, $data will be `false` + // so this should only be attempted once. + self::$data = include $path; + } + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Assets/Script.php b/wp-content/plugins/google-site-kit/includes/Core/Assets/Script.php new file mode 100644 index 000000000..b02c02cab --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Assets/Script.php @@ -0,0 +1,175 @@ +args = wp_parse_args( + $this->args, + array( + 'in_footer' => true, + 'execution' => '', + ) + ); + } + + /** + * Registers the script. + * + * @since 1.0.0 + * @since 1.15.0 Adds $context parameter. + * + * @param Context $context Plugin context. + */ + public function register( Context $context ) { + if ( $this->args['fallback'] && wp_script_is( $this->handle, 'registered' ) ) { + return; + } + + $src = $this->args['src']; + $version = $this->args['version']; + + if ( $src ) { + $entry = Manifest::get( $this->handle ); + + if ( is_array( $entry[0] ) ) { + // If the first entry item is an array, we can assume `$entry` is an array of entries in the format filename => hash. + // In this scenario we want to match the nested entry against the filename provided in `$src`. + $src_filename = basename( $src ); + + foreach ( $entry as $entry_pair ) { + if ( $this->is_matching_manifest_entry( $entry_pair, $src_filename ) ) { + list( $filename, $hash ) = $entry_pair; + break; + } + } + } else { + // Otherwise, `$entry` will be a single entry in the format filename => hash. + list( $filename, $hash ) = $entry; + } + + if ( $filename ) { + $src = $context->url( 'dist/assets/js/' . $filename ); + $version = $hash; + } + } + + wp_register_script( + $this->handle, + $src, + (array) $this->args['dependencies'], + $version, + $this->args['in_footer'] + ); + + if ( ! empty( $this->args['execution'] ) ) { + wp_script_add_data( $this->handle, 'script_execution', $this->args['execution'] ); + } + + if ( ! empty( $src ) ) { + $this->set_locale_data(); + } + } + + /** + * Enqueues the script. + * + * @since 1.0.0 + */ + public function enqueue() { + wp_enqueue_script( $this->handle ); + } + + /** + * Checks if the provided manifest entry matches the given filename. + * + * @since 1.89.0 + * + * @param array $entry Array of filename, hash. + * @param string $src_filename Filename to check. + * @return bool + */ + private function is_matching_manifest_entry( array $entry, $src_filename ) { + list ( $filename, $hash ) = $entry; + + if ( ! isset( $hash ) ) { + // If the hash is not set, it means the hash is embedded in the entry filename. + // Remove the hash then compare to the src filename. + $entry_filename_without_hash = preg_replace( '/-[a-f0-9]+\.js$/', '.js', $filename ); + if ( $src_filename === $entry_filename_without_hash ) { + return true; + } + } + + if ( $filename === $src_filename ) { + return true; + } + + return false; + } + + /** + * Sets locale data for the script, if it has translations. + * + * @since 1.21.0 + */ + private function set_locale_data() { + $json_translations = load_script_textdomain( $this->handle, 'google-site-kit' ); + if ( ! $json_translations ) { + return; + } + + $output = <<handle, $output, 'before' ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Assets/Script_Data.php b/wp-content/plugins/google-site-kit/includes/Core/Assets/Script_Data.php new file mode 100644 index 000000000..0d5285ece --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Assets/Script_Data.php @@ -0,0 +1,80 @@ + null, + 'global' => '', + ); + // SRC will always be false. + $args['src'] = false; + + parent::__construct( $handle, $args ); + + // Lazy-load script data before handle is to be printed. + $this->args['before_print'] = function ( $handle ) { + if ( empty( $this->args['global'] ) || ! is_callable( $this->args['data_callback'] ) ) { + return; + } + $data = call_user_func( $this->args['data_callback'], $handle ); + $this->add_script_data( $data ); + }; + } + + /** + * Adds the given data to the script handle's 'data' key. + * + * 'data' is the key used by `wp_localize_script`, which is output + * in older versions of WP even if the handle has no src (such as an alias). + * This is done manually instead of using `wp_localize_script` to avoid casting + * top-level keys to strings as this function is primarily intended for + * providing an array of translations to Javascript rather than arbitrary data. + * + * @see \WP_Scripts::localize + * + * @since 1.5.0 + * + * @param mixed $data Data to be assigned to the defined global. + */ + private function add_script_data( $data ) { + $script_data = wp_scripts()->get_data( $this->handle, 'data' ) ?: ''; + $js = sprintf( + 'var %s = %s;', + preg_replace( '[^\w\d_-]', '', $this->args['global'] ), // Ensure only a-zA-Z0-9_- are allowed. + wp_json_encode( $data ) + ); + wp_scripts()->add_data( $this->handle, 'data', trim( "$script_data\n$js" ) ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Assets/Stylesheet.php b/wp-content/plugins/google-site-kit/includes/Core/Assets/Stylesheet.php new file mode 100644 index 000000000..b4e7f0c0b --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Assets/Stylesheet.php @@ -0,0 +1,91 @@ +args = wp_parse_args( + $this->args, + array( + 'media' => 'all', + ) + ); + } + + /** + * Registers the stylesheet. + * + * @since 1.0.0 + * @since 1.15.0 Adds $context parameter. + * + * @param Context $context Plugin context. + */ + public function register( Context $context ) { + if ( $this->args['fallback'] && wp_style_is( $this->handle, 'registered' ) ) { + return; + } + $src = $this->args['src']; + $version = $this->args['version']; + + list( $filename, $hash ) = Manifest::get( $this->handle ); + + if ( $filename ) { + $src = $context->url( 'dist/assets/css/' . $filename ); + $version = $hash; + } + + wp_register_style( + $this->handle, + $src, + (array) $this->args['dependencies'], + $version, + $this->args['media'] + ); + } + + /** + * Enqueues the stylesheet. + * + * @since 1.0.0 + */ + public function enqueue() { + wp_enqueue_style( $this->handle ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Authentication.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Authentication.php new file mode 100644 index 000000000..dca8b8a1c --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Authentication.php @@ -0,0 +1,1504 @@ +context = $context; + $this->options = $options ?: new Options( $this->context ); + $this->user_options = $user_options ?: new User_Options( $this->context ); + $this->transients = $transients ?: new Transients( $this->context ); + $this->modules = new Modules( $this->context, $this->options, $this->user_options, $this ); + $this->user_input_state = new User_Input_State( $this->user_options ); + $this->user_input_settings = new User_Input_Settings( $context, $this, $transients ); + $this->google_proxy = new Google_Proxy( $this->context ); + $this->credentials = new Credentials( new Encrypted_Options( $this->options ) ); + $this->verification = new Verification( $this->user_options ); + $this->verification_meta = new Verification_Meta( $this->user_options ); + $this->verification_file = new Verification_File( $this->user_options ); + $this->profile = new Profile( $this->user_options ); + $this->token = new Token( $this->user_options ); + $this->owner_id = new Owner_ID( $this->options ); + $this->has_connected_admins = new Has_Connected_Admins( $this->options, $this->user_options ); + $this->has_multiple_admins = new Has_Multiple_Admins( $this->transients ); + $this->connected_proxy_url = new Connected_Proxy_URL( $this->options ); + $this->disconnected_reason = new Disconnected_Reason( $this->user_options ); + $this->initial_version = new Initial_Version( $this->user_options ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.0.0 + */ + public function register() { + $this->credentials()->register(); + $this->verification()->register(); + $this->verification_file()->register(); + $this->verification_meta()->register(); + $this->has_connected_admins->register(); + $this->owner_id->register(); + $this->connected_proxy_url->register(); + $this->disconnected_reason->register(); + $this->user_input_state->register(); + $this->initial_version->register(); + + add_filter( 'allowed_redirect_hosts', $this->get_method_proxy( 'allowed_redirect_hosts' ) ); + add_filter( 'googlesitekit_admin_data', $this->get_method_proxy( 'inline_js_admin_data' ) ); + add_filter( 'googlesitekit_admin_notices', $this->get_method_proxy( 'authentication_admin_notices' ) ); + add_filter( 'googlesitekit_inline_base_data', $this->get_method_proxy( 'inline_js_base_data' ) ); + add_filter( 'googlesitekit_setup_data', $this->get_method_proxy( 'inline_js_setup_data' ) ); + add_filter( 'googlesitekit_is_feature_enabled', $this->get_method_proxy( 'filter_features_via_proxy' ), 10, 2 ); + + add_action( 'googlesitekit_cron_update_remote_features', $this->get_method_proxy( 'cron_update_remote_features' ) ); + if ( ! wp_next_scheduled( 'googlesitekit_cron_update_remote_features' ) && ! wp_installing() ) { + wp_schedule_event( time(), 'twicedaily', 'googlesitekit_cron_update_remote_features' ); + } + + add_action( 'admin_init', $this->get_method_proxy( 'handle_oauth' ) ); + add_action( 'admin_init', $this->get_method_proxy( 'check_connected_proxy_url' ) ); + add_action( 'admin_init', $this->get_method_proxy( 'verify_user_input_settings' ) ); + add_action( + 'admin_init', + function() { + if ( + 'googlesitekit-dashboard' === $this->context->input()->filter( INPUT_GET, 'page', FILTER_SANITIZE_STRING ) + && User_Input_State::VALUE_REQUIRED === $this->user_input_state->get() + ) { + wp_safe_redirect( $this->context->admin_url( 'user-input' ) ); + exit; + } + } + ); + add_action( 'admin_action_' . self::ACTION_CONNECT, $this->get_method_proxy( 'handle_connect' ) ); + add_action( 'admin_action_' . self::ACTION_DISCONNECT, $this->get_method_proxy( 'handle_disconnect' ) ); + + add_action( + 'admin_action_' . Google_Proxy::ACTION_PERMISSIONS, + function () { + $this->handle_proxy_permissions(); + } + ); + + add_action( + 'googlesitekit_authorize_user', + function ( $token_response, $scopes, $previous_scopes ) { + if ( ! $this->credentials->using_proxy() ) { + return; + } + + $this->set_connected_proxy_url(); + + if ( empty( $previous_scopes ) ) { + $this->require_user_input(); + } + }, + 10, + 3 + ); + + add_filter( + 'googlesitekit_rest_routes', + function( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function( $routes ) { + $authentication_routes = array( + '/' . REST_Routes::REST_ROOT . '/core/site/data/connection', + '/' . REST_Routes::REST_ROOT . '/core/user/data/authentication', + ); + return array_merge( $routes, $authentication_routes ); + } + ); + + add_filter( + 'googlesitekit_user_data', + function( $user ) { + if ( $this->profile->has() ) { + $profile_data = $this->profile->get(); + $user['user']['email'] = $profile_data['email']; + $user['user']['picture'] = $profile_data['photo']; + // Older versions of Site Kit (before 1.86.0) did not + // fetch the user's full name, so we need to check for + // that attribute before using it. + $user['user']['full_name'] = isset( $profile_data['full_name'] ) ? $profile_data['full_name'] : null; + } + + $user['connectURL'] = esc_url_raw( $this->get_connect_url() ); + $user['hasMultipleAdmins'] = $this->has_multiple_admins->get(); + $user['initialVersion'] = $this->initial_version->get(); + $user['userInputState'] = $this->user_input_state->get(); + $user['verified'] = $this->verification->has(); + + return $user; + } + ); + + add_filter( 'googlesitekit_inline_tracking_data', $this->get_method_proxy( 'inline_js_tracking_data' ) ); + + // Synchronize site fields on shutdown when select options change. + $option_updated = function () { + $sync_site_fields = function () { + if ( $this->did_sync_fields ) { + return; + } + // This method should run no more than once per request. + $this->did_sync_fields = true; + + if ( $this->credentials->using_proxy() ) { + $this->google_proxy->sync_site_fields( $this->credentials() ); + } + }; + add_action( 'shutdown', $sync_site_fields ); + }; + + add_action( 'update_option_blogname', $option_updated ); + add_action( 'update_option_googlesitekit_db_version', $option_updated ); + + add_action( + OAuth_Client::CRON_REFRESH_PROFILE_DATA, + function ( $user_id ) { + $this->cron_refresh_profile_data( $user_id ); + } + ); + + // If no initial version set for the current user, set it when getting a new access token. + if ( ! $this->initial_version->get() ) { + $set_initial_version = function() { + $this->initial_version->set( GOOGLESITEKIT_VERSION ); + }; + add_action( 'googlesitekit_authorize_user', $set_initial_version ); + add_action( 'googlesitekit_reauthorize_user', $set_initial_version ); + } + + add_action( + 'current_screen', + function( $current_screen ) { + $this->maybe_refresh_token_for_screen( $current_screen->id ); + } + ); + + add_action( + 'heartbeat_tick', + function() { + $this->maybe_refresh_token_for_screen( $this->context->input()->filter( INPUT_POST, 'screen_id' ) ); + } + ); + } + + /** + * Gets the OAuth credentials object. + * + * @since 1.0.0 + * + * @return Credentials Credentials instance. + */ + public function credentials() { + return $this->credentials; + } + + /** + * Gets the verification instance. + * + * @since 1.0.0 + * + * @return Verification Verification instance. + */ + public function verification() { + return $this->verification; + } + + /** + * Gets the verification tag instance. + * + * @since 1.0.0 + * @deprecated 1.1.0 + * + * @return Verification_Meta Verification tag instance. + */ + public function verification_tag() { + _deprecated_function( __METHOD__, '1.1.0', __CLASS__ . '::verification_meta()' ); + return $this->verification_meta; + } + + /** + * Gets the verification meta instance. + * + * @since 1.1.0 + * + * @return Verification_Meta Verification tag instance. + */ + public function verification_meta() { + return $this->verification_meta; + } + + /** + * Gets the verification file instance. + * + * @since 1.1.0 + * + * @return Verification_File Verification file instance. + */ + public function verification_file() { + return $this->verification_file; + } + + /** + * Gets the Profile instance. + * + * @since 1.0.0 + * + * @return Profile Profile instance. + */ + public function profile() { + return $this->profile; + } + + /** + * Gets the Token instance. + * + * @since 1.39.0 + * + * @return Token Token instance. + */ + public function token() { + return $this->token; + } + + /** + * Gets the OAuth client instance. + * + * @since 1.0.0 + * + * @return Clients\OAuth_Client OAuth client instance. + */ + public function get_oauth_client() { + if ( ! $this->auth_client instanceof OAuth_Client ) { + $this->auth_client = new OAuth_Client( + $this->context, + $this->options, + $this->user_options, + $this->credentials, + $this->google_proxy, + $this->profile, + $this->token + ); + } + return $this->auth_client; + } + + /** + * Gets the Google Proxy instance. + * + * @since 1.19.0 + * + * @return Google_Proxy An instance of Google Proxy. + */ + public function get_google_proxy() { + return $this->google_proxy; + } + + /** + * Gets the User Input State instance. + * + * @since 1.21.0 + * + * @return User_Input_State An instance of the User_Input_State class. + */ + public function get_user_input_state() { + return $this->user_input_state; + } + + /** + * Revokes authentication along with user options settings. + * + * @since 1.0.0 + */ + public function disconnect() { + global $wpdb; + + // Revoke token via API call. + $this->get_oauth_client()->revoke_token(); + + // Delete all user data. + $user_id = $this->user_options->get_user_id(); + $prefix = $this->user_options->get_meta_key( 'googlesitekit\_%' ); + + // Reset Has_Connected_Admins setting. + $this->has_connected_admins->delete(); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery + $wpdb->query( + $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key LIKE %s", $user_id, $prefix ) + ); + wp_cache_delete( $user_id, 'user_meta' ); + } + + /** + * Gets the URL for connecting to Site Kit. + * + * @since 1.0.0 + * @since 1.32.0 Updated to use dedicated action URL. + * + * @return string Connect URL. + */ + public function get_connect_url() { + return add_query_arg( + array( + 'action' => self::ACTION_CONNECT, + 'nonce' => wp_create_nonce( self::ACTION_CONNECT ), + ), + admin_url( 'index.php' ) + ); + } + + /** + * Gets the URL for disconnecting from Site Kit. + * + * @since 1.0.0 + * @since 1.32.0 Updated to use dedicated action URL. + * + * @return string Disconnect URL. + */ + public function get_disconnect_url() { + return add_query_arg( + array( + 'action' => self::ACTION_DISCONNECT, + 'nonce' => wp_create_nonce( self::ACTION_DISCONNECT ), + ), + admin_url( 'index.php' ) + ); + } + + /** + * Check if the current user is authenticated. + * + * @since 1.0.0 + * + * @return boolean True if the user is authenticated, false otherwise. + */ + public function is_authenticated() { + return $this->token->has(); + } + /** + * Checks whether the Site Kit setup is considered complete. + * + * If this is not the case, most permissions will be force-prevented to ensure that only permissions required for + * initial setup are granted. + * + * @since 1.0.0 + * @since 1.7.0 Moved from `Permissions` class. + * + * @return bool True if setup is completed, false otherwise. + */ + public function is_setup_completed() { + if ( ! $this->credentials->has() ) { + return false; + } + + /** + * Filters whether the Site Kit plugin should consider its setup to be completed. + * + * This can be used by essential auto-activated modules to amend the result of this check. + * + * @since 1.0.0 + * + * @param bool $complete Whether the setup is completed. + */ + return (bool) apply_filters( 'googlesitekit_setup_complete', true ); + } + + /** + * Refreshes user profile data in the background. + * + * @since 1.13.0 + * + * @param int $user_id User ID to refresh profile data for. + */ + private function cron_refresh_profile_data( $user_id ) { + $original_user_id = $this->user_options->get_user_id(); + $this->user_options->switch_user( $user_id ); + + if ( $this->is_authenticated() ) { + $this->get_oauth_client()->refresh_profile_data( 30 * MINUTE_IN_SECONDS ); + } + + $this->user_options->switch_user( $original_user_id ); + } + + /** + * Proactively refreshes the current user's OAuth token when on the + * Site Kit Plugin Dashboard screen. + * + * Also refreshes the module owner's OAuth token for all shareable modules + * the current user can read shared data for. + * + * @since 1.42.0 + * @since 1.70.0 Moved the closure within regiser() to this method. + * + * @param string $screen_id The unique ID of the current WP_Screen. + * + * @return void + */ + private function maybe_refresh_token_for_screen( $screen_id ) { + if ( 'dashboard' !== $screen_id && 'toplevel_page_googlesitekit-dashboard' !== $screen_id ) { + return; + } + + if ( Feature_Flags::enabled( 'dashboardSharing' ) ) { + $this->refresh_shared_module_owner_tokens(); + } + + if ( ! current_user_can( Permissions::AUTHENTICATE ) || ! $this->credentials()->has() ) { + return; + } + + $this->refresh_user_token(); + } + + /** + * Proactively refreshes the module owner's OAuth token for all shareable + * modules the current user can read shared data for. + * + * @since 1.70.0 + * + * @return void + */ + private function refresh_shared_module_owner_tokens() { + $shareable_modules = $this->modules->get_shareable_modules(); + foreach ( $shareable_modules as $module_slug => $module ) { + if ( ! current_user_can( Permissions::READ_SHARED_MODULE_DATA, $module_slug ) ) { + continue; + } + $owner_id = $module->get_owner_id(); + if ( ! $owner_id ) { + continue; + } + $restore_user = $this->user_options->switch_user( $owner_id ); + $this->refresh_user_token(); + $restore_user(); + } + } + + /** + * Proactively refreshes the current user's OAuth token. + * + * @since 1.70.0 + * + * @return void + */ + private function refresh_user_token() { + $token = $this->token->get(); + + // Do nothing if the token is not set. + if ( empty( $token['created'] ) || empty( $token['expires_in'] ) ) { + return; + } + + // Do nothing if the token expires in more than 5 minutes. + if ( $token['created'] + $token['expires_in'] > time() + 5 * MINUTE_IN_SECONDS ) { + return; + } + + $this->get_oauth_client()->refresh_token(); + } + + /** + * Handles receiving a temporary OAuth code. + * + * @since 1.0.0 + * @since 1.32.0 Moved connect and disconnect actions to dedicated handlers. + */ + private function handle_oauth() { + if ( defined( 'WP_CLI' ) && WP_CLI ) { + return; + } + + // Handles Direct OAuth client request. + if ( $this->context->input()->filter( INPUT_GET, 'oauth2callback' ) ) { + if ( ! current_user_can( Permissions::AUTHENTICATE ) ) { + wp_die( esc_html__( 'You don\'t have permissions to authenticate with Site Kit.', 'google-site-kit' ), 403 ); + } + + $this->get_oauth_client()->authorize_user(); + } + } + + /** + * Handles request to connect via oAuth. + * + * @since 1.32.0 + */ + private function handle_connect() { + $input = $this->context->input(); + $nonce = $input->filter( INPUT_GET, 'nonce' ); + if ( ! wp_verify_nonce( $nonce, self::ACTION_CONNECT ) ) { + $this->invalid_nonce_error( self::ACTION_CONNECT ); + } + + if ( ! current_user_can( Permissions::AUTHENTICATE ) ) { + wp_die( esc_html__( 'You don\'t have permissions to authenticate with Site Kit.', 'google-site-kit' ), 403 ); + } + + $redirect_url = $input->filter( INPUT_GET, 'redirect', FILTER_VALIDATE_URL ); + if ( $redirect_url ) { + $redirect_url = esc_url_raw( wp_unslash( $redirect_url ) ); + } + + // User is trying to authenticate, but access token hasn't been set. + $additional_scopes = $input->filter( INPUT_GET, 'additional_scopes', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ); + + wp_safe_redirect( + $this->get_oauth_client()->get_authentication_url( $redirect_url, $additional_scopes ) + ); + exit(); + } + + /** + * Handles request to disconnect via oAuth. + * + * @since 1.32.0 + */ + private function handle_disconnect() { + $nonce = $this->context->input()->filter( INPUT_GET, 'nonce' ); + if ( ! wp_verify_nonce( $nonce, self::ACTION_DISCONNECT ) ) { + $this->invalid_nonce_error( self::ACTION_DISCONNECT ); + } + + if ( ! current_user_can( Permissions::AUTHENTICATE ) ) { + wp_die( esc_html__( 'You don\'t have permissions to authenticate with Site Kit.', 'google-site-kit' ), 403 ); + } + + $this->disconnect(); + + $redirect_url = $this->context->admin_url( + 'splash', + array( + 'googlesitekit_reset_session' => 1, + ) + ); + + wp_safe_redirect( $redirect_url ); + exit(); + } + + /** + * Gets the update core URL if the user can update the WordPress core version. + * + * If the site is multisite, it gets the update core URL for the network admin. + * + * @since 1.85.0 + * + * @return string The update core URL. + */ + private function get_update_core_url() { + if ( ! current_user_can( 'update_core' ) ) { + return null; + } + + if ( is_multisite() ) { + return admin_url( 'network/update-core.php' ); + } + + return admin_url( 'update-core.php' ); + } + + /** + * Modifies the base data to pass to JS. + * + * @since 1.2.0 + * + * @param array $data Inline JS data. + * @return array Filtered $data. + */ + private function inline_js_base_data( $data ) { + $data['isOwner'] = $this->owner_id->get() === get_current_user_id(); + $data['splashURL'] = esc_url_raw( $this->context->admin_url( 'splash' ) ); + $data['proxySetupURL'] = ''; + $data['proxyPermissionsURL'] = ''; + $data['usingProxy'] = false; + $data['isAuthenticated'] = $this->is_authenticated(); + $data['setupErrorCode'] = null; + $data['setupErrorMessage'] = null; + $data['setupErrorRedoURL'] = null; + $data['proxySupportLinkURL'] = null; + $data['updateCoreURL'] = null; + + if ( $this->credentials->using_proxy() ) { + $auth_client = $this->get_oauth_client(); + $data['proxySetupURL'] = esc_url_raw( $this->get_proxy_setup_url() ); + $data['proxyPermissionsURL'] = esc_url_raw( $this->get_proxy_permissions_url() ); + $data['usingProxy'] = true; + $data['proxySupportLinkURL'] = esc_url_raw( $this->get_proxy_support_link_url() ); + $data['updateCoreURL'] = esc_url_raw( $this->get_update_core_url() ); + + // Check for an error in the proxy setup. + $error_code = $this->user_options->get( OAuth_Client::OPTION_ERROR_CODE ); + + // If an error is found, add it to the data we send to the client. + // + // We'll also remove the existing access code in the user options, + // because it isn't valid (given there was a setup error). + if ( ! empty( $error_code ) ) { + $data['setupErrorCode'] = $error_code; + $data['setupErrorMessage'] = $auth_client->get_error_message( $error_code ); + + // Get credentials needed to authenticate with the proxy + // so we can build a new setup URL. + $credentials = $this->credentials->get(); + + $access_code = $this->user_options->get( OAuth_Client::OPTION_PROXY_ACCESS_CODE ); + + // Both the access code and site ID are needed to generate + // a setup URL. + if ( $access_code && ! empty( $credentials['oauth2_client_id'] ) ) { + $setup_url = $this->google_proxy->setup_url( + array( + 'code' => $access_code, + 'site_id' => $credentials['oauth2_client_id'], + ) + ); + + $this->user_options->delete( OAuth_Client::OPTION_PROXY_ACCESS_CODE ); + } elseif ( $this->is_authenticated() ) { + $setup_url = $this->get_connect_url(); + } else { + $setup_url = $data['proxySetupURL']; + } + + // Add the setup URL to the data sent to the client. + $data['setupErrorRedoURL'] = $setup_url; + + // Remove the error code from the user options so it doesn't + // appear again. + $this->user_options->delete( OAuth_Client::OPTION_ERROR_CODE ); + } + } + + $version = get_bloginfo( 'version' ); + + // The trailing '.0' is added to the $version to ensure there are always at least 2 segments in the version. + // This is necessary in case the minor version is stripped from the version string by a plugin. + // See https://github.com/google/site-kit-wp/issues/4963 for more details. + list( $major, $minor ) = explode( '.', $version . '.0' ); + + $data['wpVersion'] = array( + 'version' => $version, + 'major' => (int) $major, + 'minor' => (int) $minor, + ); + + $current_user = wp_get_current_user(); + $data['userRoles'] = $current_user->roles; + + return $data; + } + + /** + * Modifies the admin data to pass to JS. + * + * @since 1.0.0 + * + * @param array $data Inline JS data. + * @return array Filtered $data. + */ + private function inline_js_admin_data( $data ) { + $data['connectURL'] = esc_url_raw( $this->get_connect_url() ); + $data['disconnectURL'] = esc_url_raw( $this->get_disconnect_url() ); + + return $data; + } + + /** + * Modifies the setup data to pass to JS. + * + * @since 1.0.0 + * + * @param array $data Inline JS data. + * @return array Filtered $data. + */ + private function inline_js_setup_data( $data ) { + $auth_client = $this->get_oauth_client(); + $is_authenticated = $this->is_authenticated(); + + $data['isSiteKitConnected'] = $this->credentials->has(); + $data['isResettable'] = $this->options->has( Credentials::OPTION ); + $data['isAuthenticated'] = $is_authenticated; + $data['requiredScopes'] = $auth_client->get_required_scopes(); + $data['grantedScopes'] = $is_authenticated ? $auth_client->get_granted_scopes() : array(); + $data['unsatisfiedScopes'] = $is_authenticated ? $auth_client->get_unsatisfied_scopes() : array(); + $data['needReauthenticate'] = $auth_client->needs_reauthentication(); + + // All admins need to go through site verification process. + if ( current_user_can( Permissions::MANAGE_OPTIONS ) ) { + $data['isVerified'] = $this->verification->has(); + } else { + $data['isVerified'] = false; + } + + // The actual data for this is passed in from the Search Console module. + if ( ! isset( $data['hasSearchConsoleProperty'] ) ) { + $data['hasSearchConsoleProperty'] = false; + } + + return $data; + } + + /** + * Adds / modifies tracking relevant data to pass to JS. + * + * @since 1.78.0 + * + * @param array $data Inline JS data. + * @return array Filtered $data. + */ + private function inline_js_tracking_data( $data ) { + $data['isAuthenticated'] = $this->is_authenticated(); + $data['userRoles'] = wp_get_current_user()->roles; + + return $data; + } + + /** + * Add allowed redirect host to safe wp_safe_redirect + * + * @since 1.0.0 + * + * @param array $hosts Array of safe hosts to redirect to. + * + * @return array + */ + private function allowed_redirect_hosts( $hosts ) { + $hosts[] = 'accounts.google.com'; + $hosts[] = URL::parse( $this->google_proxy->url(), PHP_URL_HOST ); + + return $hosts; + } + + /** + * Gets related REST routes. + * + * @since 1.3.0 + * + * @return array List of REST_Route objects. + */ + private function get_rest_routes() { + $can_setup = function() { + return current_user_can( Permissions::SETUP ); + }; + + $can_access_authentication = function() { + return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD ); + }; + + $can_disconnect = function() { + return current_user_can( Permissions::AUTHENTICATE ); + }; + + return array( + new REST_Route( + 'core/site/data/connection', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + $data = array( + 'connected' => $this->credentials->has(), + 'resettable' => $this->options->has( Credentials::OPTION ), + 'setupCompleted' => $this->is_setup_completed(), + 'hasConnectedAdmins' => $this->has_connected_admins->get(), + 'hasMultipleAdmins' => $this->has_multiple_admins->get(), + 'ownerID' => $this->owner_id->get(), + ); + + return new WP_REST_Response( $data ); + }, + 'permission_callback' => $can_setup, + ), + ) + ), + new REST_Route( + 'core/user/data/authentication', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + $oauth_client = $this->get_oauth_client(); + $is_authenticated = $this->is_authenticated(); + + $data = array( + 'authenticated' => $is_authenticated, + 'requiredScopes' => $oauth_client->get_required_scopes(), + 'grantedScopes' => $is_authenticated ? $oauth_client->get_granted_scopes() : array(), + 'unsatisfiedScopes' => $is_authenticated ? $oauth_client->get_unsatisfied_scopes() : array(), + 'needsReauthentication' => $oauth_client->needs_reauthentication(), + 'disconnectedReason' => $this->disconnected_reason->get(), + 'connectedProxyURL' => $this->connected_proxy_url->get(), + ); + + return new WP_REST_Response( $data ); + }, + 'permission_callback' => $can_access_authentication, + ), + ) + ), + new REST_Route( + 'core/user/data/disconnect', + array( + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function( WP_REST_Request $request ) { + $this->disconnect(); + return new WP_REST_Response( true ); + }, + 'permission_callback' => $can_disconnect, + ), + ) + ), + ); + } + + /** + * Shows admin notification for authentication related issues. + * + * @since 1.0.0 + * + * @param array $notices Array of admin notices. + * + * @return array Array of admin notices. + */ + private function authentication_admin_notices( $notices ) { + + // Only include notices if in the correct admin panel. + if ( $this->context->is_network_mode() !== is_network_admin() ) { + return $notices; + } + + $notices[] = $this->get_reauthentication_needed_notice(); + $notices[] = $this->get_reconnect_after_url_mismatch_notice(); + + return $notices; + } + + /** + * Gets reconnect notice. + * + * @since 1.17.0 + * + * @return Notice Notice object. + */ + private function get_reconnect_after_url_mismatch_notice() { + return new Notice( + 'reconnect_after_url_mismatch', + array( + 'content' => function() { + $connected_url = $this->connected_proxy_url->get(); + $current_url = $this->context->get_canonical_home_url(); + $content = '

' . sprintf( + /* translators: 1: Plugin name. 2: URL change message. 3: Proxy setup URL. 4: Reconnect string. 5: Proxy support link for the url-has-changed help page. 6: Help link message. */ + __( '%1$s: %2$s %4$s. %6$s', 'google-site-kit' ), + esc_html__( 'Site Kit by Google', 'google-site-kit' ), + esc_html__( 'Looks like the URL of your site has changed. In order to continue using Site Kit, you’ll need to reconnect, so that your plugin settings are updated with the new URL.', 'google-site-kit' ), + esc_url( $this->get_proxy_setup_url() ), + esc_html__( 'Reconnect', 'google-site-kit' ), + esc_url( $this->get_proxy_support_link_url() . '/?doc=url-has-changed' ), + esc_html__( 'Get help', 'google-site-kit' ) + ) . '

'; + + // Only show the comparison if URLs don't match as it is possible + // they could already match again at this point, although they most likely won't. + if ( ! $this->connected_proxy_url->matches_url( $current_url ) ) { + $content .= sprintf( + '
  • %s
  • %s
', + sprintf( + /* translators: %s: Previous URL */ + esc_html__( 'Old URL: %s', 'google-site-kit' ), + $connected_url + ), + sprintf( + /* translators: %s: Current URL */ + esc_html__( 'New URL: %s', 'google-site-kit' ), + $current_url + ) + ); + } + + return $content; + }, + 'type' => Notice::TYPE_INFO, + 'active_callback' => function() { + return $this->disconnected_reason->get() === Disconnected_Reason::REASON_CONNECTED_URL_MISMATCH + && $this->credentials->has(); + }, + ) + ); + } + + /** + * Gets re-authentication notice. + * + * @since 1.0.0 + * + * @return Notice Notice object. + */ + private function get_reauthentication_needed_notice() { + return new Notice( + 'needs_reauthentication', + array( + 'content' => function() { + ob_start(); + ?> +

+ + +

+ get_connect_url() ) + ) + ); + return ob_get_clean(); + }, + 'type' => Notice::TYPE_SUCCESS, + 'active_callback' => function() { + if ( ! empty( $this->user_options->get( OAuth_Client::OPTION_ERROR_CODE ) ) ) { + return false; + } + return $this->get_oauth_client()->needs_reauthentication(); + }, + ) + ); + } + + /** + * Requires user input if it is not already completed. + * + * @since 1.22.0 + */ + private function require_user_input() { + if ( ! Feature_Flags::enabled( 'userInput' ) ) { + return; + } + + // Refresh user input settings from the proxy. + // This will ensure the user input state is updated as well. + $this->user_input_settings->set_settings( null ); + + if ( User_Input_State::VALUE_COMPLETED !== $this->user_input_state->get() ) { + $this->user_input_state->set( User_Input_State::VALUE_REQUIRED ); + } + } + + /** + * Sets the current connected proxy URL. + * + * @since 1.17.0 + */ + private function set_connected_proxy_url() { + $this->connected_proxy_url->set( $this->context->get_canonical_home_url() ); + } + + /** + * Checks whether the current site URL has changed or not. If the URL has been changed, + * it disconnects the Site Kit and sets the disconnected reason to "connected_url_mismatch". + * + * @since 1.17.0 + */ + private function check_connected_proxy_url() { + if ( $this->connected_proxy_url->matches_url( $this->context->get_canonical_home_url() ) ) { + return; + } + + if ( ! current_user_can( Permissions::SETUP ) ) { + return; + } + + if ( ! $this->credentials->has() ) { + return; + } + + if ( ! $this->credentials->using_proxy() ) { + return; + } + + if ( ! $this->is_authenticated() ) { + return; + } + + if ( ! $this->connected_proxy_url->has() ) { + $this->set_connected_proxy_url(); + return; + } + + $this->disconnect(); + $this->disconnected_reason->set( Disconnected_Reason::REASON_CONNECTED_URL_MISMATCH ); + } + + /** + * Gets the publicly visible URL to set up the plugin with the authentication proxy. + * + * @since 1.17.0 + * + * @return string An URL for googlesitekit_proxy_connect_user action protected with a nonce. + */ + private function get_proxy_setup_url() { + return add_query_arg( + array( + 'action' => Google_Proxy::ACTION_SETUP_START, + 'nonce' => wp_create_nonce( Google_Proxy::ACTION_SETUP_START ), + ), + admin_url( 'index.php' ) + ); + } + + /** + * Handles proxy permissions. + * + * @since 1.18.0 + */ + private function handle_proxy_permissions() { + $nonce = $this->context->input()->filter( INPUT_GET, 'nonce' ); + if ( ! wp_verify_nonce( $nonce, Google_Proxy::ACTION_PERMISSIONS ) ) { + $this->invalid_nonce_error( Google_Proxy::ACTION_PERMISSIONS ); + } + + if ( ! current_user_can( Permissions::AUTHENTICATE ) ) { + wp_die( esc_html__( 'You have insufficient permissions to manage Site Kit permissions.', 'google-site-kit' ) ); + } + + if ( ! $this->credentials->using_proxy() ) { + wp_die( esc_html__( 'Site Kit is not configured to use the authentication proxy.', 'google-site-kit' ) ); + } + + wp_safe_redirect( $this->get_oauth_client()->get_proxy_permissions_url() ); + exit; + + } + + /** + * Gets the proxy permission URL. + * + * @since 1.18.0 + * + * @return string Proxy permission URL. + */ + private function get_proxy_permissions_url() { + return add_query_arg( + array( + 'action' => Google_Proxy::ACTION_PERMISSIONS, + 'nonce' => wp_create_nonce( Google_Proxy::ACTION_PERMISSIONS ), + ), + admin_url( 'index.php' ) + ); + } + + /** + * Gets the proxy support URL. + * + * @since 1.80.0 + * + * @return string|null Support URL. + */ + public function get_proxy_support_link_url() { + return $this->google_proxy->url( Google_Proxy::SUPPORT_LINK_URI ); + } + + /** + * Verifies the user input settings + * + * @since 1.20.0 + */ + private function verify_user_input_settings() { + if ( + empty( $this->user_input_state->get() ) + && $this->is_authenticated() + && $this->credentials()->has() + && $this->credentials->using_proxy() + ) { + $is_empty = $this->user_input_settings->are_settings_empty(); + if ( ! is_null( $is_empty ) ) { + $this->user_input_state->set( $is_empty ? User_Input_State::VALUE_MISSING : User_Input_State::VALUE_COMPLETED ); + } + } + } + + /** + * Filters feature flags using features received from the proxy server. + * + * @since 1.27.0 + * + * @param boolean $feature_enabled Original value of the feature. + * @param string $feature_name Feature name. + * @return boolean State flag from the proxy server if it is available, otherwise the original value. + */ + private function filter_features_via_proxy( $feature_enabled, $feature_name ) { + $remote_features_option = 'googlesitekitpersistent_remote_features'; + $features = $this->options->get( $remote_features_option ); + + if ( false === $features ) { + // The experimental features (ideaHubModule and twgModule) are checked within Modules::construct() which + // runs before Modules::register() where the `googlesitekit_features_request_data` filter is registered. + // Without this filter, some necessary context data is not sent when a request to Google_Proxy::get_features() is + // made. So we avoid making this request and solely check the active modules in the database to see if these + // features are enabled. + if ( in_array( $feature_name, array( 'ideaHubModule', 'twgModule' ), true ) ) { + $active_modules = $this->options->get( Modules::OPTION_ACTIVE_MODULES ); + + if ( ! is_array( $active_modules ) ) { + return false; + } + + if ( 'ideaHubModule' === $feature_name ) { + return in_array( Idea_Hub::MODULE_SLUG, $active_modules, true ); + } + + if ( 'twgModule' === $feature_name ) { + return in_array( Thank_With_Google::MODULE_SLUG, $active_modules, true ); + } + } + + // Don't attempt to fetch features if the site is not connected yet. + if ( ! $this->credentials->has() ) { + return $feature_enabled; + } + + $features = $this->fetch_remote_features(); + } + + if ( ! is_wp_error( $features ) && isset( $features[ $feature_name ]['enabled'] ) ) { + return filter_var( $features[ $feature_name ]['enabled'], FILTER_VALIDATE_BOOLEAN ); + } + + return $feature_enabled; + } + + /** + * Fetches remotely-controlled features from the Google Proxy server and + * saves them in a persistent option. + * + * If the fetch errors or fails, the persistent option is not updated. + * + * @since 1.71.0 + * + * @return array|WP_Error Array of features or a WP_Error object if the fetch errored. + */ + private function fetch_remote_features() { + $remote_features_option = 'googlesitekitpersistent_remote_features'; + $features = $this->google_proxy->get_features( $this->credentials ); + if ( ! is_wp_error( $features ) && is_array( $features ) ) { + $this->options->set( $remote_features_option, $features ); + } + + return $features; + } + + /** + * Action that is run by a cron twice daily to fetch and cache remotely-enabled features + * from the Google Proxy server, if Site Kit has been setup. + * + * @since 1.71.0 + * + * @return void + */ + private function cron_update_remote_features() { + if ( ! $this->credentials->has() ) { + return; + } + $this->fetch_remote_features(); + } + + /** + * Invalid nonce error handler. + * + * @since 1.42.0 + * + * @param string $action Action name. + */ + public function invalid_nonce_error( $action ) { + if ( strpos( $action, 'googlesitekit_proxy_' ) !== 0 ) { + wp_nonce_ays( $action ); + return; + } + // Copied from wp_nonce_ays() with tweak to the url. + $html = __( 'The link you followed has expired.', 'google-site-kit' ); + $html .= '

'; + $html .= sprintf( + /* translators: 1: Admin splash URL. 2: Support link URL. */ + __( 'Please try again. Retry didn’t work? Get help.', 'google-site-kit' ), + esc_url( Plugin::instance()->context()->admin_url( 'splash' ) ), + esc_url( $this->get_proxy_support_link_url() . '?error_id=nonce_expired' ) + ); + wp_die( $html, __( 'Something went wrong.', 'google-site-kit' ), 403 ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Client_Factory.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Client_Factory.php new file mode 100644 index 000000000..9364f9485 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Client_Factory.php @@ -0,0 +1,162 @@ + '', + 'client_secret' => '', + 'redirect_uri' => '', + 'token' => array(), + 'token_callback' => null, + 'token_exception_callback' => null, + 'required_scopes' => array(), + 'login_hint_email' => '', + 'using_proxy' => true, + 'proxy_url' => Google_Proxy::PRODUCTION_BASE_URL, + ), + $args + ); + + if ( $args['using_proxy'] ) { + $client = new Google_Site_Kit_Proxy_Client( + array( 'proxy_base_path' => $args['proxy_url'] ) + ); + } else { + $client = new Google_Site_Kit_Client(); + } + + // Enable exponential retries, try up to three times. + $client->setConfig( 'retry', array( 'retries' => 3 ) ); + + // Override the default user-agent for the Guzzle client. This is used for oauth/token requests. + // By default this header uses the generic Guzzle client's user-agent and includes + // Guzzle, cURL, and PHP versions as it is normally shared. + // In our case however, the client is namespaced to be used by Site Kit only. + $http_client = $client->getHttpClient(); + $http_client->setDefaultOption( 'headers/User-Agent', Google_Proxy::get_application_name() ); + + /** This filter is documented in wp-includes/class-http.php */ + $ssl_verify = apply_filters( 'https_ssl_verify', true, null ); + // If SSL verification is enabled (default) use the SSL certificate bundle included with WP. + if ( $ssl_verify ) { + $http_client->setDefaultOption( 'verify', ABSPATH . WPINC . '/certificates/ca-bundle.crt' ); + } else { + $http_client->setDefaultOption( 'verify', false ); + } + + // Configure the Google_Client's HTTP client to use to use the same HTTP proxy as WordPress HTTP, if set. + $http_proxy = new WP_HTTP_Proxy(); + if ( $http_proxy->is_enabled() ) { + // See http://docs.guzzlephp.org/en/5.3/clients.html#proxy for reference. + $auth = $http_proxy->use_authentication() ? "{$http_proxy->authentication()}@" : ''; + $http_client->setDefaultOption( 'proxy', "{$auth}{$http_proxy->host()}:{$http_proxy->port()}" ); + } + + $auth_config = self::get_auth_config( $args['client_id'], $args['client_secret'], $args['redirect_uri'] ); + if ( ! empty( $auth_config ) ) { + try { + $client->setAuthConfig( $auth_config ); + } catch ( Exception $e ) { + return $client; + } + } + + // Offline access so we can access the refresh token even when the user is logged out. + $client->setAccessType( 'offline' ); + $client->setPrompt( 'consent' ); + $client->setRedirectUri( $args['redirect_uri'] ); + $client->setScopes( (array) $args['required_scopes'] ); + $client->prepareScopes(); + + // Set the full token data. + if ( ! empty( $args['token'] ) ) { + $client->setAccessToken( $args['token'] ); + } + + // Set the callback which is called when the client refreshes the access token on-the-fly. + $token_callback = $args['token_callback']; + if ( $token_callback ) { + $client->setTokenCallback( + function( $cache_key, $access_token ) use ( $client, $token_callback ) { + // The same token from this callback should also already be set in the client object, which is useful + // to get the full token data, all of which needs to be saved. Just in case, if that is not the same, + // we save the passed token only, relying on defaults for the other values. + $token = $client->getAccessToken(); + if ( $access_token !== $token['access_token'] ) { + $token = array( 'access_token' => $access_token ); + } + + $token_callback( $token ); + } + ); + } + + // Set the callback which is called when refreshing the access token on-the-fly fails. + $token_exception_callback = $args['token_exception_callback']; + if ( ! empty( $token_exception_callback ) ) { + $client->setTokenExceptionCallback( $token_exception_callback ); + } + + if ( ! empty( $args['login_hint_email'] ) ) { + $client->setLoginHint( $args['login_hint_email'] ); + } + + return $client; + } + + /** + * Returns the full OAuth credentials configuration data based on the given client ID and secret. + * + * @since 1.39.0 + * + * @param string $client_id OAuth client ID. + * @param string $client_secret OAuth client secret. + * @param string $redirect_uri OAuth redirect URI. + * @return array Credentials data, or empty array if any of the given values is empty. + */ + private static function get_auth_config( $client_id, $client_secret, $redirect_uri ) { + if ( ! $client_id || ! $client_secret || ! $redirect_uri ) { + return array(); + } + + return array( + 'client_id' => $client_id, + 'client_secret' => $client_secret, + 'auth_uri' => 'https://accounts.google.com/o/oauth2/auth', + 'token_uri' => 'https://oauth2.googleapis.com/token', + 'auth_provider_x509_cert_url' => 'https://www.googleapis.com/oauth2/v1/certs', + 'redirect_uris' => array( $redirect_uri ), + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Client.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Client.php new file mode 100644 index 000000000..c036371c8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Client.php @@ -0,0 +1,307 @@ +setTokenExceptionCallback( $config['token_exception_callback'] ); + } + + unset( $config['token_exception_callback'] ); + + parent::__construct( $config ); + } + + /** + * Sets the function to be called when fetching an access token results in an exception. + * + * @since 1.2.0 + * + * @param callable $exception_callback Function accepting an exception as single parameter. + */ + public function setTokenExceptionCallback( callable $exception_callback ) { + $this->token_exception_callback = $exception_callback; + } + + /** + * Sets whether or not to return raw requests and returns a callback to reset to the previous value. + * + * @since 1.2.0 + * + * @param bool $defer Whether or not to return raw requests. + * @return callable Callback function that resets to the original $defer value. + */ + public function withDefer( $defer ) { + $orig_defer = $this->shouldDefer(); + $this->setDefer( $defer ); + + // Return a function to restore the original refer value. + return function () use ( $orig_defer ) { + $this->setDefer( $orig_defer ); + }; + } + + /** + * Adds auth listeners to the HTTP client based on the credentials set in the Google API Client object. + * + * @since 1.2.0 + * + * @param ClientInterface $http The HTTP client object. + * @return ClientInterface The HTTP client object. + * + * @throws Exception Thrown when fetching a new access token via refresh token on-the-fly fails. + */ + public function authorize( ClientInterface $http = null ) { + if ( $this->isUsingApplicationDefaultCredentials() ) { + return parent::authorize( $http ); + } + + $token = $this->getAccessToken(); + if ( isset( $token['refresh_token'] ) && $this->isAccessTokenExpired() ) { + $callback = $this->getConfig( 'token_callback' ); + + try { + $token_response = $this->fetchAccessTokenWithRefreshToken( $token['refresh_token'] ); + if ( $callback ) { + // Due to original callback signature this can only accept the token itself. + call_user_func( $callback, '', $token_response['access_token'] ); + } + } catch ( Exception $e ) { + // Pass exception to special callback if provided. + if ( $this->token_exception_callback ) { + call_user_func( $this->token_exception_callback, $e ); + } + throw $e; + } + } + + return parent::authorize( $http ); + } + + /** + * Fetches an OAuth 2.0 access token by using a temporary code. + * + * @since 1.0.0 + * @since 1.2.0 Ported from Google_Site_Kit_Proxy_Client. + * + * @param string $code Temporary authorization code, or undelegated token code. + * @return array Access token. + * + * @throws InvalidArgumentException Thrown when the passed code is empty. + */ + public function fetchAccessTokenWithAuthCode( $code ) { + if ( strlen( $code ) === 0 ) { + throw new InvalidArgumentException( 'Invalid code' ); + } + + $auth = $this->getOAuth2Service(); + $auth->setCode( $code ); + $auth->setRedirectUri( $this->getRedirectUri() ); + + $http_handler = HttpHandlerFactory::build( $this->getHttpClient() ); + + $token_response = $this->fetchAuthToken( $auth, $http_handler ); + if ( $token_response && isset( $token_response['access_token'] ) ) { + $token_response['created'] = time(); + $this->setAccessToken( $token_response ); + } + + return $token_response; + } + + /** + * Fetches a fresh OAuth 2.0 access token by using a refresh token. + * + * @since 1.0.0 + * @since 1.2.0 Ported from Google_Site_Kit_Proxy_Client. + * + * @param string $refresh_token Optional. Refresh token. Unused here. + * @param array $extra_params Optional. Array of extra parameters to fetch with. + * @return array Access token. + * + * @throws LogicException Thrown when no refresh token is available. + */ + public function fetchAccessTokenWithRefreshToken( $refresh_token = null, $extra_params = array() ) { + if ( null === $refresh_token ) { + $refresh_token = $this->getRefreshToken(); + if ( ! $refresh_token ) { + throw new LogicException( 'refresh token must be passed in or set as part of setAccessToken' ); + } + } + + $this->getLogger()->info( 'OAuth2 access token refresh' ); + $auth = $this->getOAuth2Service(); + $auth->setRefreshToken( $refresh_token ); + + $http_handler = HttpHandlerFactory::build( $this->getHttpClient() ); + + $token_response = $this->fetchAuthToken( $auth, $http_handler, $extra_params ); + if ( $token_response && isset( $token_response['access_token'] ) ) { + $token_response['created'] = time(); + if ( ! isset( $token_response['refresh_token'] ) ) { + $token_response['refresh_token'] = $refresh_token; + } + $this->setAccessToken( $token_response ); + + /** + * Fires when the current user has just been reauthorized to access Google APIs with a refreshed access token. + * + * In other words, this action fires whenever Site Kit has just obtained a new access token based on + * the refresh token for the current user, which typically happens once every hour when using Site Kit, + * since that is the lifetime of every access token. + * + * @since 1.25.0 + * + * @param array $token_response Token response data. + */ + do_action( 'googlesitekit_reauthorize_user', $token_response ); + } + + return $token_response; + } + + /** + * Executes deferred HTTP requests. + * + * @since 1.38.0 + * + * @param RequestInterface $request Request object to execute. + * @param string $expected_class Expected class to return. + * @return object An object of the type of the expected class or Psr\Http\Message\ResponseInterface. + */ + public function execute( RequestInterface $request, $expected_class = null ) { + $request = $request->withHeader( 'X-Goog-Quota-User', self::getQuotaUser() ); + + return parent::execute( $request, $expected_class ); + } + + /** + * Returns a string that uniquely identifies a user of the application. + * + * @since 1.38.0 + * + * @return string Unique user identifier. + */ + public static function getQuotaUser() { + $user_id = get_current_user_id(); + $url = get_home_url(); + + $scheme = URL::parse( $url, PHP_URL_SCHEME ); + $host = URL::parse( $url, PHP_URL_HOST ); + $path = URL::parse( $url, PHP_URL_PATH ); + + return "{$scheme}://{$user_id}@{$host}{$path}"; + } + + /** + * Fetches an OAuth 2.0 access token using a given auth object and HTTP handler. + * + * This method is used in place of {@see OAuth2::fetchAuthToken()}. + * + * @since 1.0.0 + * @since 1.2.0 Ported from Google_Site_Kit_Proxy_Client. + * + * @param OAuth2 $auth OAuth2 instance. + * @param callable|null $http_handler Optional. HTTP handler callback. Default null. + * @param array $extra_params Optional. Array of extra parameters to fetch with. + * @return array Access token. + */ + protected function fetchAuthToken( OAuth2 $auth, callable $http_handler = null, $extra_params = array() ) { + if ( is_null( $http_handler ) ) { + $http_handler = HttpHandlerFactory::build( HttpClientCache::getHttpClient() ); + } + + $request = $auth->generateCredentialsRequest( $extra_params ); + $response = $http_handler( $request ); + $credentials = $auth->parseTokenResponse( $response ); + if ( ! empty( $credentials['error'] ) ) { + $this->handleAuthTokenErrorResponse( $credentials['error'], $credentials ); + } + + $auth->updateToken( $credentials ); + + return $credentials; + } + + /** + * Handles an erroneous response from a request to fetch an auth token. + * + * @since 1.2.0 + * + * @param string $error Error code / error message. + * @param array $data Associative array of full response data. + * + * @throws Google_OAuth_Exception Thrown with the given $error as message. + */ + protected function handleAuthTokenErrorResponse( $error, array $data ) { + throw new Google_OAuth_Exception( $error ); + } + + /** + * Create a default Google OAuth2 object. + * + * @return OAuth2 Created OAuth2 instance. + */ + protected function createOAuth2Service() { + $auth = new OAuth2( + array( + 'clientId' => $this->getClientId(), + 'clientSecret' => $this->getClientSecret(), + 'authorizationUri' => self::OAUTH2_AUTH_URL, + 'tokenCredentialUri' => self::OAUTH2_TOKEN_URI, + 'redirectUri' => $this->getRedirectUri(), + 'issuer' => $this->getConfig( 'client_id' ), + 'signingKey' => $this->getConfig( 'signing_key' ), + 'signingAlgorithm' => $this->getConfig( 'signing_algorithm' ), + ) + ); + + return $auth; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php new file mode 100644 index 000000000..ddd2d1ba8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php @@ -0,0 +1,148 @@ +setProxyBasePath( $config['proxy_base_path'] ); + } + + unset( $config['proxy_base_path'] ); + + parent::__construct( $config ); + + $this->setApplicationName( Google_Proxy::get_application_name() ); + } + + /** + * Sets the base URL to the proxy. + * + * @since 1.2.0 + * + * @param string $base_path Proxy base URL. + */ + public function setProxyBasePath( $base_path ) { + $this->proxy_base_path = untrailingslashit( $base_path ); + } + + /** + * Revokes an OAuth2 access token using the authentication proxy. + * + * @since 1.0.0 + * + * @param string|array|null $token Optional. Access token. Default is the current one. + * @return bool True on success, false on failure. + */ + public function revokeToken( $token = null ) { + if ( ! $token ) { + $token = $this->getAccessToken(); + } + if ( is_array( $token ) ) { + $token = $token['access_token']; + } + + $body = Psr7\stream_for( + http_build_query( + array( + 'client_id' => $this->getClientId(), + 'token' => $token, + ) + ) + ); + $request = new Request( + 'POST', + $this->proxy_base_path . Google_Proxy::OAUTH2_REVOKE_URI, + array( + 'Cache-Control' => 'no-store', + 'Content-Type' => 'application/x-www-form-urlencoded', + ), + $body + ); + + $http_handler = HttpHandlerFactory::build( $this->getHttpClient() ); + + $response = $http_handler( $request ); + + return 200 === (int) $response->getStatusCode(); + } + + /** + * Creates a Google auth object for the authentication proxy. + * + * @since 1.0.0 + */ + protected function createOAuth2Service() { + return new OAuth2( + array( + 'clientId' => $this->getClientId(), + 'clientSecret' => $this->getClientSecret(), + 'authorizationUri' => $this->proxy_base_path . Google_Proxy::OAUTH2_AUTH_URI, + 'tokenCredentialUri' => $this->proxy_base_path . Google_Proxy::OAUTH2_TOKEN_URI, + 'redirectUri' => $this->getRedirectUri(), + 'issuer' => $this->getClientId(), + 'signingKey' => null, + 'signingAlgorithm' => null, + ) + ); + } + + + + /** + * Handles an erroneous response from a request to fetch an auth token. + * + * @since 1.2.0 + * + * @param string $error Error code / error message. + * @param array $data Associative array of full response data. + * + * @throws Google_Proxy_Code_Exception Thrown when proxy returns an error accompanied by a temporary access code. + */ + protected function handleAuthTokenErrorResponse( $error, array $data ) { + if ( ! empty( $data['code'] ) ) { + throw new Google_Proxy_Code_Exception( $error, 0, $data['code'] ); + } + parent::handleAuthTokenErrorResponse( $error, $data ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth2.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth2.php new file mode 100644 index 000000000..7dc2fd1cb --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth2.php @@ -0,0 +1,54 @@ +getGrantType(); + + if ( empty( $extra_params ) || 'refresh_token' !== $grant_type ) { + return $request; + } + + $params = array( + 'body' => Query::build( + array_merge( + Query::parse( Utils::copyToString( $request->getBody() ) ), + $extra_params + ) + ), + ); + + return Utils::modifyRequest( $request, $params ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client.php new file mode 100644 index 000000000..e7ca5c9c5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client.php @@ -0,0 +1,661 @@ +owner_id = new Owner_ID( $this->options ); + $this->activity_metrics = new Activity_Metrics( $this->context, $this->user_options ); + $this->active_consumers = new Active_Consumers( $this->user_options ); + } + + /** + * Refreshes the access token. + * + * While this method can be used to explicitly refresh the current access token, the preferred way + * should be to rely on the Google_Site_Kit_Client to do that automatically whenever the current access token + * has expired. + * + * @since 1.0.0 + */ + public function refresh_token() { + $token = $this->get_token(); + if ( empty( $token['refresh_token'] ) ) { + $this->delete_token(); + $this->user_options->set( self::OPTION_ERROR_CODE, 'refresh_token_not_exist' ); + return; + } + + $active_consumers = $this->activity_metrics->get_for_refresh_token(); + + try { + $token_response = $this->get_client()->fetchAccessTokenWithRefreshToken( $token['refresh_token'], $active_consumers ); + } catch ( \Exception $e ) { + $this->handle_fetch_token_exception( $e ); + return; + } + + if ( ! isset( $token_response['access_token'] ) ) { + $this->user_options->set( self::OPTION_ERROR_CODE, 'access_token_not_received' ); + return; + } + + $this->active_consumers->delete(); + $this->set_token( $token_response ); + } + + /** + * Revokes the access token. + * + * @since 1.0.0 + */ + public function revoke_token() { + try { + $this->get_client()->revokeToken(); + } catch ( \Exception $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement + // No special handling, we just need to make sure this goes through. + } + + $this->delete_token(); + } + + /** + * Gets the list of currently granted Google OAuth scopes for the current user. + * + * @since 1.0.0 + * @see https://developers.google.com/identity/protocols/googlescopes + * + * @return string[] List of Google OAuth scopes. + */ + public function get_granted_scopes() { + $base_scopes = parent::get_granted_scopes(); + $extra_scopes = $this->get_granted_additional_scopes(); + + return array_unique( + array_merge( $base_scopes, $extra_scopes ) + ); + } + + /** + * Gets the list of currently granted additional Google OAuth scopes for the current user. + * + * Scopes are considered "additional scopes" if they were granted to perform a specific action, + * rather than being granted as an overall required scope. + * + * @since 1.9.0 + * @see https://developers.google.com/identity/protocols/googlescopes + * + * @return string[] List of Google OAuth scopes. + */ + public function get_granted_additional_scopes() { + return array_values( $this->user_options->get( self::OPTION_ADDITIONAL_AUTH_SCOPES ) ?: array() ); + } + + /** + * Checks if new scopes are required that are not yet granted for the current user. + * + * @since 1.9.0 + * + * @return bool true if any required scopes are not satisfied, otherwise false. + */ + public function needs_reauthentication() { + if ( ! $this->token->has() ) { + return false; + } + + return ! $this->has_sufficient_scopes(); + } + + /** + * Gets the list of scopes which are not satisfied by the currently granted scopes. + * + * @since 1.9.0 + * + * @param string[] $scopes Optional. List of scopes to test against granted scopes. + * Default is the list of required scopes. + * @return string[] Filtered $scopes list, only including scopes that are not satisfied. + */ + public function get_unsatisfied_scopes( array $scopes = null ) { + if ( null === $scopes ) { + $scopes = $this->get_required_scopes(); + } + + $granted_scopes = $this->get_granted_scopes(); + $unsatisfied_scopes = array_filter( + $scopes, + function( $scope ) use ( $granted_scopes ) { + return ! Scopes::is_satisfied_by( $scope, $granted_scopes ); + } + ); + + return array_values( $unsatisfied_scopes ); + } + + /** + * Checks whether or not currently granted scopes are sufficient for the given list. + * + * @since 1.9.0 + * + * @param string[] $scopes Optional. List of scopes to test against granted scopes. + * Default is the list of required scopes. + * @return bool True if all $scopes are satisfied, false otherwise. + */ + public function has_sufficient_scopes( array $scopes = null ) { + if ( null === $scopes ) { + $scopes = $this->get_required_scopes(); + } + return Scopes::are_satisfied_by( $scopes, $this->get_granted_scopes() ); + } + + /** + * Sets the list of currently granted Google OAuth scopes for the current user. + * + * @since 1.0.0 + * @see https://developers.google.com/identity/protocols/googlescopes + * + * @param string[] $scopes List of Google OAuth scopes. + */ + public function set_granted_scopes( $scopes ) { + $required_scopes = $this->get_required_scopes(); + $base_scopes = array(); + $extra_scopes = array(); + + foreach ( $scopes as $scope ) { + if ( in_array( $scope, $required_scopes, true ) ) { + $base_scopes[] = $scope; + } else { + $extra_scopes[] = $scope; + } + } + + parent::set_granted_scopes( $base_scopes ); + $this->user_options->set( self::OPTION_ADDITIONAL_AUTH_SCOPES, $extra_scopes ); + } + + /** + * Gets the current user's OAuth access token. + * + * @since 1.0.0 + * + * @return string|bool Access token if it exists, false otherwise. + */ + public function get_access_token() { + $token = $this->get_token(); + if ( empty( $token['access_token'] ) ) { + return false; + } + return $token['access_token']; + } + + /** + * Sets the current user's OAuth access token. + * + * @since 1.0.0 + * @deprecated 1.39.0 Use `OAuth_Client::set_token` instead. + * + * @param string $access_token New access token. + * @param int $expires_in TTL of the access token in seconds. + * @param int $created Optional. Timestamp when the token was created, in GMT. Default is the current time. + * @return bool True on success, false on failure. + */ + public function set_access_token( $access_token, $expires_in, $created = 0 ) { + _deprecated_function( __METHOD__, '1.39.0', self::class . '::set_token' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + return $this->set_token( + array( + 'access_token' => $access_token, + 'expires_in' => $expires_in, + 'created' => $created, + ) + ); + } + + /** + * Gets the current user's OAuth refresh token. + * + * @since 1.0.0 + * @deprecated 1.39.0 Use `OAuth_Client::get_token` instead. + * + * @return string|bool Refresh token if it exists, false otherwise. + */ + public function get_refresh_token() { + _deprecated_function( __METHOD__, '1.39.0', self::class . '::get_token' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + $token = $this->get_token(); + if ( empty( $token['refresh_token'] ) ) { + return false; + } + return $token['refresh_token']; + } + + /** + * Sets the current user's OAuth refresh token. + * + * @since 1.0.0 + * @deprecated 1.39.0 Use `OAuth_Client::set_token` instead. + * + * @param string $refresh_token New refresh token. + * @return bool True on success, false on failure. + */ + public function set_refresh_token( $refresh_token ) { + _deprecated_function( __METHOD__, '1.39.0', self::class . '::set_token' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + $token = $this->get_token(); + $token['refresh_token'] = $refresh_token; + return $this->set_token( $token ); + } + + /** + * Gets the authentication URL. + * + * @since 1.0.0 + * @since 1.9.0 Added $additional_scopes parameter. + * @since 1.34.1 Updated handling of $additional_scopes to restore rewritten scope. + * + * @param string $redirect_url Redirect URL after authentication. + * @param string[] $additional_scopes List of additional scopes to request. + * @return string Authentication URL. + */ + public function get_authentication_url( $redirect_url = '', $additional_scopes = array() ) { + if ( empty( $redirect_url ) ) { + $redirect_url = $this->context->admin_url( 'splash' ); + } + if ( is_array( $additional_scopes ) ) { + // Rewrite each scope to convert `gttp` -> `http`, if it starts with this placeholder scheme. + // This restores the original scope rewritten by getConnectURL. + $additional_scopes = array_map( + function ( $scope ) { + return preg_replace( '/^gttp(s)?:/', 'http$1:', $scope ); + }, + $additional_scopes + ); + } else { + $additional_scopes = array(); + } + + $url_query = URL::parse( $redirect_url, PHP_URL_QUERY ); + + if ( $url_query ) { + parse_str( $url_query, $query_args ); + } + + if ( empty( $query_args['notification'] ) ) { + $redirect_url = add_query_arg( array( 'notification' => 'authentication_success' ), $redirect_url ); + } + // Ensure we remove error query string. + $redirect_url = remove_query_arg( 'error', $redirect_url ); + + $this->user_options->set( self::OPTION_REDIRECT_URL, $redirect_url ); + + // Ensure the latest required scopes are requested. + $scopes = array_merge( $this->get_required_scopes(), $additional_scopes ); + $this->get_client()->setScopes( array_unique( $scopes ) ); + + return add_query_arg( + $this->google_proxy->get_metadata_fields(), + $this->get_client()->createAuthUrl() + ); + } + + /** + * Redirects the current user to the Google OAuth consent screen, or processes a response from that consent + * screen if present. + * + * @since 1.0.0 + * @since 1.49.0 Uses the new `Google_Proxy::setup_url_v2` method when the `serviceSetupV2` feature flag is enabled. + */ + public function authorize_user() { + $code = $this->context->input()->filter( INPUT_GET, 'code', FILTER_SANITIZE_STRING ); + $error_code = $this->context->input()->filter( INPUT_GET, 'error', FILTER_SANITIZE_STRING ); + // If the OAuth redirects with an error code, handle it. + if ( ! empty( $error_code ) ) { + $this->user_options->set( self::OPTION_ERROR_CODE, $error_code ); + wp_safe_redirect( $this->authorize_user_redirect_url() ); + exit(); + } + + if ( ! $this->credentials->has() ) { + $this->user_options->set( self::OPTION_ERROR_CODE, 'oauth_credentials_not_exist' ); + wp_safe_redirect( $this->authorize_user_redirect_url() ); + exit(); + } + + try { + $token_response = $this->get_client()->fetchAccessTokenWithAuthCode( $code ); + } catch ( Google_Proxy_Code_Exception $e ) { + // Redirect back to proxy immediately with the access code. + $credentials = $this->credentials->get(); + $params = array( + 'code' => $e->getAccessCode(), + 'site_id' => ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : '', + ); + $params = $this->google_proxy->add_setup_step_from_error_code( $params, $e->getMessage() ); + $url = $this->google_proxy->setup_url( $params ); + + wp_safe_redirect( $url ); + exit(); + } catch ( Exception $e ) { + $this->handle_fetch_token_exception( $e ); + wp_safe_redirect( $this->authorize_user_redirect_url() ); + exit(); + } + + if ( ! isset( $token_response['access_token'] ) ) { + $this->user_options->set( self::OPTION_ERROR_CODE, 'access_token_not_received' ); + wp_safe_redirect( $this->authorize_user_redirect_url() ); + exit(); + } + + // Update the access token and refresh token. + $this->set_token( $token_response ); + + // Store the previously granted scopes for use in the action below before they're updated. + $previous_scopes = $this->get_granted_scopes(); + + // Update granted scopes. + if ( isset( $token_response['scope'] ) ) { + $scopes = explode( ' ', sanitize_text_field( $token_response['scope'] ) ); + } elseif ( $this->context->input()->filter( INPUT_GET, 'scope' ) ) { + $scope = $this->context->input()->filter( INPUT_GET, 'scope', FILTER_SANITIZE_STRING ); + $scopes = explode( ' ', $scope ); + } else { + $scopes = $this->get_required_scopes(); + } + $scopes = array_filter( + $scopes, + function( $scope ) { + if ( ! is_string( $scope ) ) { + return false; + } + if ( in_array( $scope, array( 'openid', 'profile', 'email' ), true ) ) { + return true; + } + return 0 === strpos( $scope, 'https://www.googleapis.com/auth/' ); + } + ); + $this->set_granted_scopes( $scopes ); + + $this->refresh_profile_data( 2 * MINUTE_IN_SECONDS ); + + /** + * Fires when the current user has just been authorized to access Google APIs. + * + * In other words, this action fires whenever Site Kit has just obtained a new set of access token and + * refresh token for the current user, which may happen to set up the initial connection or to request + * access to further scopes. + * + * @since 1.3.0 + * @since 1.6.0 The $token_response parameter was added. + * @since 1.30.0 The $scopes and $previous_scopes parameters were added. + * + * @param array $token_response Token response data. + * @param string[] $scopes List of scopes. + * @param string[] $previous_scopes List of previous scopes. + */ + do_action( 'googlesitekit_authorize_user', $token_response, $scopes, $previous_scopes ); + + // This must happen after googlesitekit_authorize_user as the permissions checks depend on + // values set which affect the meta capability mapping. + $current_user_id = get_current_user_id(); + if ( $this->should_update_owner_id( $current_user_id ) ) { + $this->owner_id->set( $current_user_id ); + } + + $redirect_url = $this->user_options->get( self::OPTION_REDIRECT_URL ); + + if ( $redirect_url ) { + $url_query = URL::parse( $redirect_url, PHP_URL_QUERY ); + + if ( $url_query ) { + parse_str( $url_query, $query_args ); + } + + $reauth = isset( $query_args['reAuth'] ) && 'true' === $query_args['reAuth']; + + if ( false === $reauth && empty( $query_args['notification'] ) ) { + $redirect_url = add_query_arg( array( 'notification' => 'authentication_success' ), $redirect_url ); + } + $this->user_options->delete( self::OPTION_REDIRECT_URL ); + } else { + // No redirect_url is set, use default page. + $redirect_url = $this->context->admin_url( 'splash', array( 'notification' => 'authentication_success' ) ); + } + + wp_safe_redirect( $redirect_url ); + exit(); + } + + /** + * Fetches and updates the user profile data for the currently authenticated Google account. + * + * @since 1.1.4 + * @since 1.13.0 Added $retry_after param, also made public. + * + * @param int $retry_after Optional. Number of seconds to retry data fetch if unsuccessful. + */ + public function refresh_profile_data( $retry_after = 0 ) { + try { + $people_service = new Google_Service_PeopleService( $this->get_client() ); + $response = $people_service->people->get( 'people/me', array( 'personFields' => 'emailAddresses,photos,names' ) ); + + if ( isset( $response['emailAddresses'][0]['value'], $response['photos'][0]['url'], $response['names'][0]['displayName'] ) ) { + $this->profile->set( + array( + 'email' => $response['emailAddresses'][0]['value'], + 'photo' => $response['photos'][0]['url'], + 'full_name' => $response['names'][0]['displayName'], + ) + ); + } + // Clear any scheduled job to refresh this data later, if any. + wp_clear_scheduled_hook( + self::CRON_REFRESH_PROFILE_DATA, + array( $this->user_options->get_user_id() ) + ); + } catch ( Exception $e ) { + $retry_after = absint( $retry_after ); + if ( $retry_after < 1 ) { + return; + } + wp_schedule_single_event( + time() + $retry_after, + self::CRON_REFRESH_PROFILE_DATA, + array( $this->user_options->get_user_id() ) + ); + } + } + + /** + * Determines whether the authentication proxy is used. + * + * In order to streamline the setup and authentication flow, the plugin uses a proxy mechanism based on an external + * service. This can be overridden by providing actual GCP credentials with the {@see 'googlesitekit_oauth_secret'} + * filter. + * + * @since 1.0.0 + * @deprecated 1.9.0 + * + * @return bool True if proxy authentication is used, false otherwise. + */ + public function using_proxy() { + _deprecated_function( __METHOD__, '1.9.0', Credentials::class . '::using_proxy' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + return $this->credentials->using_proxy(); + } + + /** + * Determines whether the current owner ID must be changed or not. + * + * @since 1.16.0 + * + * @param int $user_id Current user ID. + * @return bool TRUE if owner needs to be changed, otherwise FALSE. + */ + private function should_update_owner_id( $user_id ) { + $current_owner_id = $this->owner_id->get(); + if ( $current_owner_id === $user_id ) { + return false; + } + + if ( ! empty( $current_owner_id ) && user_can( $current_owner_id, Permissions::MANAGE_OPTIONS ) ) { + return false; + } + + if ( ! user_can( $user_id, Permissions::MANAGE_OPTIONS ) ) { + return false; + } + + return true; + } + + /** + * Returns the permissions URL to the authentication proxy. + * + * This only returns a URL if the user already has an access token set. + * + * @since 1.0.0 + * + * @return string URL to the permissions page on the authentication proxy on success, + * or empty string on failure. + */ + public function get_proxy_permissions_url() { + $access_token = $this->get_access_token(); + if ( empty( $access_token ) ) { + return ''; + } + + return $this->google_proxy->permissions_url( + $this->credentials, + array( 'token' => $access_token ) + ); + } + + /** + * Deletes the current user's token and all associated data. + * + * @since 1.0.3 + */ + protected function delete_token() { + parent::delete_token(); + + $this->user_options->delete( self::OPTION_REDIRECT_URL ); + $this->user_options->delete( self::OPTION_ADDITIONAL_AUTH_SCOPES ); + } + + /** + * Return the URL for the user to view the dashboard/splash + * page based on their permissions. + * + * @since 1.77.0 + */ + private function authorize_user_redirect_url() { + return current_user_can( Permissions::VIEW_DASHBOARD ) + ? $this->context->admin_url( 'dashboard' ) + : $this->context->admin_url( 'splash' ); + } + + /** + * Adds a user to the active consumers list. + * + * @since 1.87.0 + * + * @param WP_User $user User object. + */ + public function add_active_consumer( WP_User $user ) { + $this->active_consumers->add( $user->ID, $user->roles ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client_Base.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client_Base.php new file mode 100644 index 000000000..056ccbc8f --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client_Base.php @@ -0,0 +1,352 @@ +context = $context; + $this->options = $options ?: new Options( $this->context ); + $this->user_options = $user_options ?: new User_Options( $this->context ); + $this->credentials = $credentials ?: new Credentials( new Encrypted_Options( $this->options ) ); + $this->google_proxy = $google_proxy ?: new Google_Proxy( $this->context ); + $this->profile = $profile ?: new Profile( $this->user_options ); + $this->token = $token ?: new Token( $this->user_options ); + } + + /** + * Gets the Google client object. + * + * @since 1.39.0 + * @since 1.2.0 Now always returns a Google_Site_Kit_Client. + * + * @return Google_Site_Kit_Client Google client object. + */ + public function get_client() { + if ( ! $this->google_client instanceof Google_Site_Kit_Client ) { + $credentials = $this->credentials->get(); + + $this->google_client = Client_Factory::create_client( + array( + 'client_id' => $credentials['oauth2_client_id'], + 'client_secret' => $credentials['oauth2_client_secret'], + 'redirect_uri' => $this->get_redirect_uri(), + 'token' => $this->get_token(), + 'token_callback' => array( $this, 'set_token' ), + 'token_exception_callback' => function( Exception $e ) { + $this->handle_fetch_token_exception( $e ); + }, + 'required_scopes' => $this->get_required_scopes(), + 'login_hint_email' => $this->profile->has() ? $this->profile->get()['email'] : '', + 'using_proxy' => $this->credentials->using_proxy(), + 'proxy_url' => $this->google_proxy->url(), + ) + ); + } + + return $this->google_client; + } + + /** + * Gets the list of currently required Google OAuth scopes. + * + * @since 1.39.0 + * @see https://developers.google.com/identity/protocols/googlescopes + * + * @return array List of Google OAuth scopes. + */ + public function get_required_scopes() { + /** + * Filters the list of required Google OAuth scopes. + * + * See all Google oauth scopes here: https://developers.google.com/identity/protocols/googlescopes + * + * @since 1.39.0 + * + * @param array $scopes List of scopes. + */ + $scopes = (array) apply_filters( 'googlesitekit_auth_scopes', array() ); + + return array_unique( + array_merge( + // Default scopes that are always required. + array( + 'openid', + 'https://www.googleapis.com/auth/userinfo.profile', + 'https://www.googleapis.com/auth/userinfo.email', + ), + $scopes + ) + ); + } + + /** + * Gets the list of currently granted Google OAuth scopes for the current user. + * + * @since 1.39.0 + * @see https://developers.google.com/identity/protocols/googlescopes + * + * @return string[] List of Google OAuth scopes. + */ + public function get_granted_scopes() { + return $this->user_options->get( self::OPTION_AUTH_SCOPES ) ?: array(); + } + + /** + * Sets the list of currently granted Google OAuth scopes for the current user. + * + * @since 1.39.0 + * @see https://developers.google.com/identity/protocols/googlescopes + * + * @param string[] $scopes List of Google OAuth scopes. + */ + public function set_granted_scopes( $scopes ) { + $required_scopes = $this->get_required_scopes(); + $scopes = array_values( array_unique( array_intersect( $scopes, $required_scopes ) ) ); + + $this->user_options->set( self::OPTION_AUTH_SCOPES, $scopes ); + } + + /** + * Gets the current user's full OAuth token data, including access token and optional refresh token. + * + * @since 1.39.0 + * + * @return array Associative array with 'access_token', 'expires_in', 'created', and 'refresh_token' keys, or empty + * array if no token available. + */ + public function get_token() { + return $this->token->get(); + } + + /** + * Sets the current user's full OAuth token data, including access token and optional refresh token. + * + * @since 1.39.0 + * + * @param array $token { + * Full token data, optionally including the refresh token. + * + * @type string $access_token Required. The access token. + * @type int $expires_in Number of seconds in which the token expires. Default 3600 (1 hour). + * @type int $created Timestamp in seconds when the token was created. Default is the current time. + * @type string $refresh_token The refresh token, if relevant. If passed, it is set as well. + * } + * @return bool True on success, false on failure. + */ + public function set_token( array $token ) { + // Remove the error code from the user options so it doesn't + // appear again. + $this->user_options->delete( OAuth_Client::OPTION_ERROR_CODE ); + + return $this->token->set( $token ); + } + + /** + * Deletes the current user's token and all associated data. + * + * @since 1.0.3 + */ + protected function delete_token() { + $this->token->delete(); + + $this->user_options->delete( self::OPTION_AUTH_SCOPES ); + } + + /** + * Converts the given error code to a user-facing message. + * + * @since 1.39.0 + * + * @param string $error_code Error code. + * @return string Error message. + */ + public function get_error_message( $error_code ) { + switch ( $error_code ) { + case 'access_denied': + return __( 'The Site Kit setup was interrupted because you did not grant the necessary permissions.', 'google-site-kit' ); + case 'access_token_not_received': + return __( 'Unable to receive access token because of an unknown error.', 'google-site-kit' ); + case 'cannot_log_in': + return __( 'Internal error that the Google login redirect failed.', 'google-site-kit' ); + case 'invalid_client': + return __( 'Unable to receive access token because of an invalid client.', 'google-site-kit' ); + case 'invalid_code': + return __( 'Unable to receive access token because of an empty authorization code.', 'google-site-kit' ); + case 'invalid_grant': + return __( 'Unable to receive access token because of an invalid authorization code or refresh token.', 'google-site-kit' ); + case 'invalid_request': + return __( 'Unable to receive access token because of an invalid OAuth request.', 'google-site-kit' ); + case 'missing_delegation_consent': + return __( 'Looks like your site is not allowed access to Google account data and can’t display stats in the dashboard.', 'google-site-kit' ); + case 'missing_search_console_property': + return __( 'Looks like there is no Search Console property for your site.', 'google-site-kit' ); + case 'missing_verification': + return __( 'Looks like the verification token for your site is missing.', 'google-site-kit' ); + case 'oauth_credentials_not_exist': + return __( 'Unable to authenticate Site Kit, as no client credentials exist.', 'google-site-kit' ); + case 'refresh_token_not_exist': + return __( 'Unable to refresh access token, as no refresh token exists.', 'google-site-kit' ); + case 'unauthorized_client': + return __( 'Unable to receive access token because of an unauthorized client.', 'google-site-kit' ); + case 'unsupported_grant_type': + return __( 'Unable to receive access token because of an unsupported grant type.', 'google-site-kit' ); + default: + /* translators: %s: error code from API */ + return sprintf( __( 'Unknown Error (code: %s).', 'google-site-kit' ), $error_code ); + } + } + + /** + * Handles an exception thrown when fetching an access token. + * + * @since 1.2.0 + * + * @param Exception $e Exception thrown. + */ + protected function handle_fetch_token_exception( Exception $e ) { + $error_code = $e->getMessage(); + + // Revoke and delete user connection data on 'invalid_grant'. + // This typically happens during refresh if the refresh token is invalid or expired. + if ( 'invalid_grant' === $error_code ) { + $this->delete_token(); + } + + $this->user_options->set( self::OPTION_ERROR_CODE, $error_code ); + if ( $e instanceof Google_Proxy_Code_Exception ) { + $this->user_options->set( self::OPTION_PROXY_ACCESS_CODE, $e->getAccessCode() ); + } + } + + /** + * Gets the OAuth redirect URI that listens to the callback request. + * + * @since 1.39.0 + * + * @return string OAuth redirect URI. + */ + protected function get_redirect_uri() { + return add_query_arg( 'oauth2callback', '1', admin_url( 'index.php' ) ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Connected_Proxy_URL.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Connected_Proxy_URL.php new file mode 100644 index 000000000..7429c6365 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Connected_Proxy_URL.php @@ -0,0 +1,54 @@ +get_sanitize_callback(); + $normalized = $sanitize( $url ); + return $normalized === $this->get(); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.17.0 + * + * @return callable A sanitizing function. + */ + protected function get_sanitize_callback() { + return 'trailingslashit'; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Credentials.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Credentials.php new file mode 100644 index 000000000..ddf713fc0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Credentials.php @@ -0,0 +1,137 @@ +?oauth2callback=1 (this must be public) + * - Click the 'Download JSON' button to download the JSON file that can be copied and pasted into the filter + */ + $credentials = apply_filters( 'googlesitekit_oauth_secret', '' ); + + if ( is_string( $credentials ) && trim( $credentials ) ) { + $credentials = json_decode( $credentials, true ); + } + + if ( isset( $credentials['web']['client_id'], $credentials['web']['client_secret'] ) ) { + return $this->parse_defaults( + array( + 'oauth2_client_id' => $credentials['web']['client_id'], + 'oauth2_client_secret' => $credentials['web']['client_secret'], + ) + ); + } + + return $this->parse_defaults( + $this->options->get( self::OPTION ) + ); + } + + /** + * Checks whether Site Kit has been setup with client ID and secret. + * + * @since 1.0.0 + * + * @return bool True if credentials are set, false otherwise. + */ + public function has() { + $credentials = (array) $this->get(); + if ( ! empty( $credentials ) && ! empty( $credentials['oauth2_client_id'] ) && ! empty( $credentials['oauth2_client_secret'] ) ) { + return true; + } + + return false; + } + + /** + * Parses Credentials data and merges with its defaults. + * + * @since 1.0.0 + * + * @param mixed $data Credentials data. + * @return array Parsed $data. + */ + private function parse_defaults( $data ) { + $defaults = $this->get_default(); + + if ( ! is_array( $data ) ) { + return $defaults; + } + + return wp_parse_args( $data, $defaults ); + } + + /** + * Gets the default value. + * + * @since 1.2.0 + * + * @return array + */ + protected function get_default() { + return array( + 'oauth2_client_id' => '', + 'oauth2_client_secret' => '', + ); + } + + /** + * Determines whether the authentication proxy is used. + * + * In order to streamline the setup and authentication flow, the plugin uses a proxy mechanism based on an external + * service. This can be overridden by providing actual GCP credentials with the {@see 'googlesitekit_oauth_secret'} + * filter. + * + * @since 1.9.0 + * + * @return bool True if proxy authentication is used, false otherwise. + */ + public function using_proxy() { + $creds = $this->get(); + + if ( ! $this->has() ) { + return true; + } + + return (bool) preg_match( '/\.apps\.sitekit\.withgoogle\.com$/', $creds['oauth2_client_id'] ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Disconnected_Reason.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Disconnected_Reason.php new file mode 100644 index 000000000..6a3ed5a2f --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Disconnected_Reason.php @@ -0,0 +1,44 @@ +access_code = $access_code; + } + + /** + * Gets the temporary access code for an undelegated proxy token. + * + * @since 1.0.0 + * + * @return string Temporary code. + */ + public function getAccessCode() { + return $this->access_code; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Insufficient_Scopes_Exception.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Insufficient_Scopes_Exception.php new file mode 100644 index 000000000..dd0d3561b --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Insufficient_Scopes_Exception.php @@ -0,0 +1,91 @@ +set_scopes( $scopes ); + } + + /** + * Sets the missing scopes that raised this exception. + * + * @since 1.9.0 + * + * @param array $scopes OAuth scopes that are required but not yet granted. + */ + public function set_scopes( array $scopes ) { + $this->scopes = $scopes; + } + + /** + * Gets the missing scopes that raised this exception. + * + * @since 1.9.0 + * + * @return array + */ + public function get_scopes() { + return $this->scopes; + } + + /** + * Gets the WP_Error representation of this exception. + * + * @since 1.9.0 + * + * @return WP_Error + */ + public function to_wp_error() { + return new WP_Error( + static::WP_ERROR_CODE, + $this->getMessage(), + array( + 'status' => 403, // Forbidden. + 'scopes' => $this->scopes, + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Missing_Verification_Exception.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Missing_Verification_Exception.php new file mode 100644 index 000000000..58ed78f7d --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Missing_Verification_Exception.php @@ -0,0 +1,22 @@ +context = $context; + } + + /** + * Sets required scopes to use when the site is registering at proxy. + * + * @since 1.68.0 + * + * @param array $scopes List of scopes. + */ + public function with_scopes( array $scopes ) { + $this->required_scopes = $scopes; + } + + /** + * Returns the application name: a combination of the namespace and version. + * + * @since 1.27.0 + * + * @return string The application name. + */ + public static function get_application_name() { + $platform = self::get_platform(); + return $platform . '/google-site-kit/' . GOOGLESITEKIT_VERSION; + } + + /** + * Gets the list of features to declare support for when setting up with the proxy. + * + * @since 1.27.0 + * + * @return array Array of supported features. + */ + private function get_supports() { + $supports = array( + 'credentials_retrieval', + 'short_verification_token', + // Informs the proxy the user input feature is generally supported. + 'user_input_flow', + ); + + $home_path = URL::parse( $this->context->get_canonical_home_url(), PHP_URL_PATH ); + if ( ! $home_path || '/' === $home_path ) { + $supports[] = 'file_verification'; + } + + // Informs the proxy the user input feature is already enabled locally. + // TODO: Remove once the feature is fully rolled out. + if ( Feature_Flags::enabled( 'userInput' ) ) { + $supports[] = 'user_input_flow_feature'; + } + + return $supports; + } + + /** + * Returns the setup URL to the authentication proxy. + * + * @since 1.49.0 + * @since 1.71.0 Uses the V2 setup flow by default. + * + * @param array $query_params Query parameters to include in the URL. + * @return string URL to the setup page on the authentication proxy. + * + * @throws Exception Thrown if called without the required query parameters. + */ + public function setup_url( array $query_params = array() ) { + if ( empty( $query_params['code'] ) ) { + throw new Exception( __( 'Missing code parameter for setup URL.', 'google-site-kit' ) ); + } + if ( empty( $query_params['site_id'] ) && empty( $query_params['site_code'] ) ) { + throw new Exception( __( 'Missing site_id or site_code parameter for setup URL.', 'google-site-kit' ) ); + } + + return add_query_arg( $query_params, $this->url( self::SETUP_URI ) ); + } + + /** + * Conditionally adds the `step` parameter to the passed query parameters, depending on the given error code. + * + * @since 1.49.0 + * + * @param array $query_params Query parameters. + * @param string $error_code Error code. + * @return array Query parameters with `step` included, depending on the error code. + */ + public function add_setup_step_from_error_code( $query_params, $error_code ) { + switch ( $error_code ) { + case 'missing_verification': + $query_params['step'] = 'verification'; + break; + case 'missing_delegation_consent': + $query_params['step'] = 'delegation_consent'; + break; + case 'missing_search_console_property': + $query_params['step'] = 'search_console_property'; + break; + } + return $query_params; + } + + /** + * Returns the permissions URL to the authentication proxy. + * + * This only returns a URL if the user already has an access token set. + * + * @since 1.27.0 + * + * @param Credentials $credentials Credentials instance. + * @param array $query_args Optional. Additional query parameters. + * @return string URL to the permissions page on the authentication proxy on success, or an empty string on failure. + */ + public function permissions_url( Credentials $credentials, array $query_args = array() ) { + if ( $credentials->has() ) { + $creds = $credentials->get(); + $query_args['site_id'] = $creds['oauth2_client_id']; + } + + $query_args['application_name'] = rawurlencode( self::get_application_name() ); + $query_args['hl'] = $this->context->get_locale( 'user' ); + + return add_query_arg( $query_args, $this->url( self::PERMISSIONS_URI ) ); + } + + /** + * Gets a URL to the proxy with optional path. + * + * @since 1.1.2 + * + * @param string $path Optional. Path to append to the base URL. + * @return string Complete proxy URL. + */ + public function url( $path = '' ) { + $url = defined( 'GOOGLESITEKIT_PROXY_URL' ) && self::STAGING_BASE_URL === GOOGLESITEKIT_PROXY_URL + ? self::STAGING_BASE_URL + : self::PRODUCTION_BASE_URL; + + $url = untrailingslashit( $url ); + + if ( $path && is_string( $path ) ) { + $url .= '/' . ltrim( $path, '/' ); + } + + return $url; + } + + /** + * Sends a POST request to the Google Proxy server. + * + * @since 1.27.0 + * + * @param string $uri Endpoint to send the request to. + * @param Credentials $credentials Credentials instance. + * @param array $args Array of request arguments. + * @return array|WP_Error The response as an associative array or WP_Error on failure. + */ + private function request( $uri, $credentials, array $args = array() ) { + $request_args = array( + 'headers' => ! empty( $args['headers'] ) && is_array( $args['headers'] ) ? $args['headers'] : array(), + 'body' => ! empty( $args['body'] ) && is_array( $args['body'] ) ? $args['body'] : array(), + 'timeout' => isset( $args['timeout'] ) ? $args['timeout'] : 15, + ); + + if ( $credentials && $credentials instanceof Credentials ) { + if ( ! $credentials->has() ) { + return new WP_Error( + 'oauth_credentials_not_exist', + __( 'OAuth credentials haven\'t been found.', 'google-site-kit' ), + array( 'status' => 401 ) + ); + } + + $creds = $credentials->get(); + $request_args['body']['site_id'] = $creds['oauth2_client_id']; + $request_args['body']['site_secret'] = $creds['oauth2_client_secret']; + } + + if ( ! empty( $args['access_token'] ) && is_string( $args['access_token'] ) ) { + $request_args['headers']['Authorization'] = 'Bearer ' . $args['access_token']; + } + + if ( isset( $args['mode'] ) && 'async' === $args['mode'] ) { + $request_args['timeout'] = 0.01; + $request_args['blocking'] = false; + } + + if ( ! empty( $args['json_request'] ) ) { + $request_args['headers']['Content-Type'] = 'application/json'; + $request_args['body'] = wp_json_encode( $request_args['body'] ); + } + + $url = $this->url( $uri ); + $response = wp_remote_post( $url, $request_args ); + if ( is_wp_error( $response ) ) { + return $response; + } + + $code = wp_remote_retrieve_response_code( $response ); + $body = wp_remote_retrieve_body( $response ); + $body = json_decode( $body, true ); + if ( $code < 200 || 299 < $code ) { + $message = is_array( $body ) && ! empty( $body['error'] ) ? $body['error'] : ''; + return new WP_Error( 'request_failed', $message, array( 'status' => $code ) ); + } + + if ( ! empty( $args['return'] ) && 'response' === $args['return'] ) { + return $response; + } + + if ( is_null( $body ) ) { + return new WP_Error( + 'failed_to_parse_response', + __( 'Failed to parse response.', 'google-site-kit' ), + array( 'status' => 500 ) + ); + } + + return $body; + } + + /** + * Gets site fields. + * + * @since 1.5.0 + * + * @return array Associative array of $query_arg => $value pairs. + */ + public function get_site_fields() { + return array( + 'name' => wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ), + 'url' => $this->context->get_canonical_home_url(), + 'redirect_uri' => add_query_arg( 'oauth2callback', 1, admin_url( 'index.php' ) ), + 'action_uri' => admin_url( 'index.php' ), + 'return_uri' => $this->context->admin_url( 'splash' ), + 'analytics_redirect_uri' => add_query_arg( 'gatoscallback', 1, admin_url( 'index.php' ) ), + ); + } + + /** + * Gets metadata fields. + * + * @since 1.68.0 + * + * @return array Metadata fields array. + */ + public function get_metadata_fields() { + $metadata = array( + 'supports' => implode( ' ', $this->get_supports() ), + 'nonce' => wp_create_nonce( self::NONCE_ACTION ), + 'mode' => '', + 'hl' => $this->context->get_locale( 'user' ), + 'application_name' => self::get_application_name(), + 'service_version' => 'v2', + ); + + /** + * Filters the setup mode. + * + * @since 1.68.0 + * + * @param string $mode An initial setup mode. + */ + $metadata['mode'] = apply_filters( 'googlesitekit_proxy_setup_mode', $metadata['mode'] ); + + return $metadata; + } + + /** + * Fetch site fields + * + * @since 1.22.0 + * + * @param Credentials $credentials Credentials instance. + * @return array|WP_Error The response as an associative array or WP_Error on failure. + */ + public function fetch_site_fields( Credentials $credentials ) { + return $this->request( self::OAUTH2_SITE_URI, $credentials ); + } + + /** + * Are site fields synced + * + * @since 1.22.0 + * + * @param Credentials $credentials Credentials instance. + * + * @return boolean|WP_Error Boolean do the site fields match or WP_Error on failure. + */ + public function are_site_fields_synced( Credentials $credentials ) { + $site_fields = $this->fetch_site_fields( $credentials ); + if ( is_wp_error( $site_fields ) ) { + return $site_fields; + } + + $get_site_fields = $this->get_site_fields(); + foreach ( $get_site_fields as $key => $site_field ) { + if ( ! array_key_exists( $key, $site_fields ) || $site_fields[ $key ] !== $site_field ) { + return false; + } + } + + return true; + } + + /** + * Gets user fields. + * + * @since 1.10.0 + * + * @return array Associative array of $query_arg => $value pairs. + */ + public function get_user_fields() { + $user_roles = wp_get_current_user()->roles; + // If multisite, also consider network administrators. + if ( is_multisite() && current_user_can( 'manage_network' ) ) { + $user_roles[] = 'network_administrator'; + } + $user_roles = array_unique( $user_roles ); + + return array( + 'user_roles' => implode( ',', $user_roles ), + ); + } + + /** + * Unregisters the site on the proxy. + * + * @since 1.20.0 + * + * @param Credentials $credentials Credentials instance. + * @return array|WP_Error Response data on success, otherwise WP_Error object. + */ + public function unregister_site( Credentials $credentials ) { + return $this->request( self::OAUTH2_DELETE_SITE_URI, $credentials ); + } + + /** + * Registers the site on the proxy. + * + * @since 1.68.0 + * + * @param string $mode Sync mode. + * @return string|WP_Error Redirect URL on success, otherwise an error. + */ + public function register_site( $mode = 'async' ) { + return $this->send_site_fields( null, $mode ); + } + + /** + * Synchronizes site fields with the proxy. + * + * @since 1.5.0 + * @since 1.68.0 Updated the function to return redirect URL. + * + * @param Credentials $credentials Credentials instance. + * @param string $mode Sync mode. + * @return string|WP_Error Redirect URL on success, otherwise an error. + */ + public function sync_site_fields( Credentials $credentials, $mode = 'async' ) { + return $this->send_site_fields( $credentials, $mode ); + } + + /** + * Sends site fields to the proxy. + * + * @since 1.68.0 + * + * @param Credentials $credentials Credentials instance. + * @param string $mode Sync mode. + * @return string|WP_Error Redirect URL on success, otherwise an error. + */ + private function send_site_fields( Credentials $credentials = null, $mode = 'async' ) { + $response = $this->request( + self::OAUTH2_SITE_URI, + $credentials, + array( + 'return' => 'response', + 'mode' => $mode, + 'body' => array_merge( + $this->get_site_fields(), + $this->get_user_fields(), + $this->get_metadata_fields(), + array( + 'scope' => implode( ' ', $this->required_scopes ), + ) + ), + ) + ); + + if ( is_wp_error( $response ) ) { + return $response; + } + + $redirect_to = wp_remote_retrieve_header( $response, self::HEADER_REDIRECT_TO ); + if ( empty( $redirect_to ) ) { + return new WP_Error( + 'failed_to_retrive_redirect', + __( 'Failed to retrieve redirect URL.', 'google-site-kit' ), + array( 'status' => 500 ) + ); + } + + return $redirect_to; + } + + /** + * Synchronizes user input settings with the proxy. + * + * @since 1.27.0 + * + * @param Credentials $credentials Credentials instance. + * @param string $access_token Access token. + * @param array|null $settings Settings array. + * @return array|WP_Error Response of the wp_remote_post request. + */ + public function sync_user_input_settings( Credentials $credentials, $access_token, $settings = null ) { + $body = array(); + if ( ! empty( $settings ) ) { + $body = array( + 'settings' => $settings, + 'client_user_id' => (string) get_current_user_id(), + ); + } + + return $this->request( + self::USER_INPUT_SETTINGS_URI, + $credentials, + array( + 'json_request' => true, + 'access_token' => $access_token, + 'body' => $body, + ) + ); + } + + /** + * Exchanges a site code for client credentials from the proxy. + * + * @since 1.1.2 + * + * @param string $site_code Site code identifying the site. + * @param string $undelegated_code Undelegated code identifying the undelegated token. + * @return array|WP_Error Response data containing site_id and site_secret on success, WP_Error object on failure. + */ + public function exchange_site_code( $site_code, $undelegated_code ) { + $response_data = $this->request( + self::OAUTH2_SITE_URI, + null, + array( + 'body' => array( + 'code' => $undelegated_code, + 'site_code' => $site_code, + ), + ) + ); + + if ( is_wp_error( $response_data ) ) { + return $response_data; + } + + if ( ! isset( $response_data['site_id'], $response_data['site_secret'] ) ) { + return new WP_Error( + 'oauth_credentials_not_exist', + __( 'OAuth credentials haven\'t been found.', 'google-site-kit' ), + array( 'status' => 401 ) + ); + } + + return $response_data; + } + + /** + * Gets remote features. + * + * @since 1.27.0 + * + * @param Credentials $credentials Credentials instance. + * @return array|WP_Error Response of the wp_remote_post request. + */ + public function get_features( Credentials $credentials ) { + global $wp_version; + + $platform = self::get_platform(); + $user_count = count_users(); + $connectable_user_count = isset( $user_count['avail_roles']['administrator'] ) ? $user_count['avail_roles']['administrator'] : 0; + + $body = array( + 'platform' => $platform . '/google-site-kit', + 'version' => GOOGLESITEKIT_VERSION, + 'platform_version' => $wp_version, + 'user_count' => $user_count['total_users'], + 'connectable_user_count' => $connectable_user_count, + 'connected_user_count' => $this->count_connected_users(), + ); + + /** + * Filters additional context data sent with the body of a remote-controlled features request. + * + * @since 1.71.0 + * + * @param array $body Context data to be sent with the features request. + */ + $body = apply_filters( 'googlesitekit_features_request_data', $body ); + + return $this->request( self::FEATURES_URI, $credentials, array( 'body' => $body ) ); + } + + /** + * Gets the number of users who are connected (i.e. authenticated / + * have an access token). + * + * @since 1.71.0 + * + * @return int Number of WordPress user accounts connected to SiteKit. + */ + public function count_connected_users() { + $user_options = new User_Options( $this->context ); + $connected_users = get_users( + array( + 'meta_key' => $user_options->get_meta_key( OAuth_Client::OPTION_ACCESS_TOKEN ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key + 'meta_compare' => 'EXISTS', + 'role' => 'administrator', + 'fields' => 'ID', + ) + ); + + return count( $connected_users ); + } + + /** + * Gets the platform. + * + * @since 1.37.0 + * + * @return string WordPress multisite or WordPress. + */ + public static function get_platform() { + if ( is_multisite() ) { + return 'wordpress-multisite'; + } + return 'wordpress'; // phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled + } + + /** + * Sends survey trigger ID to the proxy. + * + * @since 1.35.0 + * + * @param Credentials $credentials Credentials instance. + * @param string $access_token Access token. + * @param string $trigger_id Token ID. + * @return array|WP_Error Response of the wp_remote_post request. + */ + public function send_survey_trigger( Credentials $credentials, $access_token, $trigger_id ) { + return $this->request( + self::SURVEY_TRIGGER_URI, + $credentials, + array( + 'access_token' => $access_token, + 'json_request' => true, + 'body' => array( + 'trigger_context' => array( + 'trigger_id' => $trigger_id, + 'language' => get_user_locale(), + ), + ), + ) + ); + } + + /** + * Sends survey event to the proxy. + * + * @since 1.35.0 + * + * @param Credentials $credentials Credentials instance. + * @param string $access_token Access token. + * @param array|\stdClass $session Session object. + * @param array|\stdClass $event Event object. + * @return array|WP_Error Response of the wp_remote_post request. + */ + public function send_survey_event( Credentials $credentials, $access_token, $session, $event ) { + return $this->request( + self::SURVEY_EVENT_URI, + $credentials, + array( + 'access_token' => $access_token, + 'json_request' => true, + 'body' => array( + 'session' => $session, + 'event' => $event, + ), + ) + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Connected_Admins.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Connected_Admins.php new file mode 100644 index 000000000..eb064dd46 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Connected_Admins.php @@ -0,0 +1,139 @@ +user_options = $user_options; + } + + /** + * Registers the setting in WordPress. + * + * @since 1.14.0 + */ + public function register() { + parent::register(); + + $access_token_meta_key = $this->user_options->get_meta_key( OAuth_Client::OPTION_ACCESS_TOKEN ); + + add_action( + 'added_user_meta', + function ( $mid, $uid, $meta_key ) use ( $access_token_meta_key ) { + if ( $meta_key === $access_token_meta_key && user_can( $uid, 'administrator' ) ) { + $this->set( true ); + } + }, + 10, + 3 + ); + + add_action( + 'deleted_user_meta', + function ( $mid, $uid, $meta_key ) use ( $access_token_meta_key ) { + if ( $meta_key === $access_token_meta_key ) { + $this->delete(); + } + }, + 10, + 3 + ); + } + + /** + * Gets the value of the setting. If the option is not set yet, it pulls connected + * admins from the database and sets the option. + * + * @since 1.14.0 + * + * @return boolean TRUE if the site kit already has connected admins, otherwise FALSE. + */ + public function get() { + // If the option doesn't exist, query the fresh value, set it and return it. + if ( ! $this->has() ) { + $users = $this->query_connected_admins(); + $has_connected_admins = count( $users ) > 0; + + $this->set( (int) $has_connected_admins ); + + return $has_connected_admins; + } + + return (bool) parent::get(); + } + + /** + * Queries connected admins and returns an array of connected admin IDs. + * + * @since 1.14.0 + * + * @return array The array of connected admin IDs. + */ + protected function query_connected_admins() { + return get_users( + array( + 'meta_key' => $this->user_options->get_meta_key( OAuth_Client::OPTION_ACCESS_TOKEN ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key + 'meta_compare' => 'EXISTS', + 'role' => 'administrator', + 'number' => 1, + 'fields' => 'ID', + ) + ); + } + + /** + * Gets the expected value type. + * + * @since 1.14.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'boolean'; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Multiple_Admins.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Multiple_Admins.php new file mode 100644 index 000000000..90afcf203 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Multiple_Admins.php @@ -0,0 +1,74 @@ +transients = $transients; + } + + /** + * Returns a flag indicating whether the current site has multiple users. + * + * @since 1.29.0 + * + * @return boolean TRUE if the site kit has multiple admins, otherwise FALSE. + */ + public function get() { + $admins_count = $this->transients->get( self::OPTION ); + if ( false === $admins_count ) { + $user_query_args = array( + 'number' => 1, + 'role__in' => array( 'Administrator' ), + 'count_total' => true, + ); + + $user_query = new WP_User_Query( $user_query_args ); + $admins_count = $user_query->get_total(); + + $this->transients->get( self::OPTION, $admins_count, HOUR_IN_SECONDS ); + } + + return $admins_count > 1; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Initial_Version.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Initial_Version.php new file mode 100644 index 000000000..104ffe36c --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Initial_Version.php @@ -0,0 +1,28 @@ +options->get( 'googlesitekit_first_admin' ); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.16.0 + * + * @return callable The callable sanitize callback. + */ + protected function get_sanitize_callback() { + return 'intval'; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Profile.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Profile.php new file mode 100644 index 000000000..8aa6dcd0f --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Profile.php @@ -0,0 +1,85 @@ +user_options = $user_options; + } + + /** + * Retrieves user profile data. + * + * @since 1.0.0 + * + * @return array|bool Value set for the profile, or false if not set. + */ + public function get() { + return $this->user_options->get( self::OPTION ); + } + + /** + * Saves user profile data. + * + * @since 1.0.0 + * + * @param array $data User profile data: email and photo. + * @return bool True on success, false on failure. + */ + public function set( $data ) { + return $this->user_options->set( self::OPTION, $data ); + } + + /** + * Verifies if user has their profile information stored. + * + * @since 1.0.0 + * + * @return bool True if profile is set, false otherwise. + */ + public function has() { + $profile = (array) $this->get(); + + if ( ! empty( $profile['email'] ) && ! empty( $profile['photo'] ) ) { + return true; + } + + return false; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Setup.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Setup.php new file mode 100644 index 000000000..fdc3b2342 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Setup.php @@ -0,0 +1,399 @@ +context = $context; + $this->user_options = $user_options; + $this->authentication = $authentication; + $this->credentials = $authentication->credentials(); + $this->google_proxy = $authentication->get_google_proxy(); + $this->proxy_support_link_url = $authentication->get_proxy_support_link_url(); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.48.0 + */ + public function register() { + add_action( 'admin_action_' . Google_Proxy::ACTION_SETUP_START, array( $this, 'handle_action_setup_start' ) ); + add_action( 'admin_action_' . Google_Proxy::ACTION_VERIFY, array( $this, 'handle_action_verify' ) ); + add_action( 'admin_action_' . Google_Proxy::ACTION_EXCHANGE_SITE_CODE, array( $this, 'handle_action_exchange_site_code' ) ); + } + + /** + * Composes the oAuth proxy get help link. + * + * @since 1.81.0 + * + * @return string The get help link. + */ + private function get_oauth_proxy_failed_help_link() { + return sprintf( + /* translators: 1: Support link URL. 2: Get help string. */ + __( '%2$s', 'google-site-kit' ), + esc_url( add_query_arg( 'error_id', 'request_to_auth_proxy_failed', $this->proxy_support_link_url ) ), + esc_html__( 'Get help', 'google-site-kit' ) + ); + } + + /** + * Handles the setup start action, taking the user to the proxy setup screen. + * + * @since 1.48.0 + */ + public function handle_action_setup_start() { + $nonce = $this->context->input()->filter( INPUT_GET, 'nonce', FILTER_SANITIZE_STRING ); + $redirect_url = $this->context->input()->filter( INPUT_GET, 'redirect', FILTER_SANITIZE_URL ); + + $this->verify_nonce( $nonce, Google_Proxy::ACTION_SETUP_START ); + + if ( ! current_user_can( Permissions::SETUP ) ) { + wp_die( esc_html__( 'You have insufficient permissions to connect Site Kit.', 'google-site-kit' ) ); + } + + if ( ! $this->credentials->using_proxy() ) { + wp_die( esc_html__( 'Site Kit is not configured to use the authentication proxy.', 'google-site-kit' ) ); + } + + $required_scopes = $this->authentication->get_oauth_client()->get_required_scopes(); + $this->google_proxy->with_scopes( $required_scopes ); + + $oauth_setup_redirect = $this->credentials->has() + ? $this->google_proxy->sync_site_fields( $this->credentials, 'sync' ) + : $this->google_proxy->register_site( 'sync' ); + + $oauth_proxy_failed_help_link = $this->get_oauth_proxy_failed_help_link(); + + if ( is_wp_error( $oauth_setup_redirect ) ) { + $error_message = $oauth_setup_redirect->get_error_message(); + if ( empty( $error_message ) ) { + $error_message = $oauth_setup_redirect->get_error_code(); + } + + wp_die( + sprintf( + /* translators: 1: Error message or error code. 2: Get help link. */ + esc_html__( 'The request to the authentication proxy has failed with an error: %1$s %2$s.', 'google-site-kit' ), + esc_html( $error_message ), + wp_kses( + $oauth_proxy_failed_help_link, + array( + 'a' => array( + 'href' => array(), + 'target' => array(), + ), + ) + ) + ) + ); + } + + if ( ! filter_var( $oauth_setup_redirect, FILTER_VALIDATE_URL ) ) { + wp_die( + sprintf( + /* translators: %s: Get help link. */ + esc_html__( 'The request to the authentication proxy has failed. Please, try again later. %s.', 'google-site-kit' ), + wp_kses( + $oauth_proxy_failed_help_link, + array( + 'a' => array( + 'href' => array(), + 'target' => array(), + ), + ) + ) + ) + ); + } + + if ( $redirect_url ) { + $this->user_options->set( OAuth_Client::OPTION_REDIRECT_URL, $redirect_url ); + } + + wp_safe_redirect( $oauth_setup_redirect ); + exit; + } + + /** + * Handles the action for verifying site ownership. + * + * @since 1.48.0 + * @since 1.49.0 Sets the `verify` and `verification_method` and `site_id` query params. + */ + public function handle_action_verify() { + $input = $this->context->input(); + $step = $input->filter( INPUT_GET, 'step', FILTER_SANITIZE_STRING ); + $nonce = $input->filter( INPUT_GET, 'nonce', FILTER_SANITIZE_STRING ); + $code = $input->filter( INPUT_GET, 'googlesitekit_code', FILTER_SANITIZE_STRING ); + $site_code = $input->filter( INPUT_GET, 'googlesitekit_site_code', FILTER_SANITIZE_STRING ); + $verification_token = $input->filter( INPUT_GET, 'googlesitekit_verification_token', FILTER_SANITIZE_STRING ); + $verification_method = $input->filter( INPUT_GET, 'googlesitekit_verification_token_type', FILTER_SANITIZE_STRING ); + + $this->verify_nonce( $nonce ); + + if ( ! current_user_can( Permissions::SETUP ) ) { + wp_die( esc_html__( 'You don\'t have permissions to set up Site Kit.', 'google-site-kit' ), 403 ); + } + + if ( ! $code ) { + wp_die( esc_html__( 'Invalid request.', 'google-site-kit' ), 400 ); + } + + if ( ! $verification_token || ! $verification_method ) { + wp_die( esc_html__( 'Verifying site ownership requires a token and verification method.', 'google-site-kit' ), 400 ); + } + + $this->handle_verification( $verification_token, $verification_method ); + + $proxy_query_params = array( + 'step' => $step, + 'verify' => 'true', + 'verification_method' => $verification_method, + ); + + // If the site does not have a site ID yet, a site code will be passed. + // Handling the site code here will save the extra redirect from the proxy if successful. + if ( $site_code ) { + try { + $this->handle_site_code( $code, $site_code ); + } catch ( Missing_Verification_Exception $exception ) { + $proxy_query_params['site_code'] = $site_code; + + $this->redirect_to_proxy( $code, $proxy_query_params ); + } catch ( Exchange_Site_Code_Exception $exception ) { + $this->redirect_to_splash(); + } + } + + $credentials = $this->credentials->get(); + $proxy_query_params['site_id'] = ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : ''; + + $this->redirect_to_proxy( $code, $proxy_query_params ); + } + + /** + * Handles the action for exchanging the site code for site credentials. + * + * This action will only be called if the site code failed to be handled + * during the verification step. + * + * @since 1.48.0 + */ + public function handle_action_exchange_site_code() { + $input = $this->context->input(); + $step = $input->filter( INPUT_GET, 'step', FILTER_SANITIZE_STRING ); + $nonce = $input->filter( INPUT_GET, 'nonce', FILTER_SANITIZE_STRING ); + $code = $input->filter( INPUT_GET, 'googlesitekit_code', FILTER_SANITIZE_STRING ); + $site_code = $input->filter( INPUT_GET, 'googlesitekit_site_code', FILTER_SANITIZE_STRING ); + + $this->verify_nonce( $nonce ); + + if ( ! current_user_can( Permissions::SETUP ) ) { + wp_die( esc_html__( 'You don\'t have permissions to set up Site Kit.', 'google-site-kit' ), 403 ); + } + + if ( ! $code || ! $site_code ) { + wp_die( esc_html__( 'Invalid request.', 'google-site-kit' ), 400 ); + } + + try { + $this->handle_site_code( $code, $site_code ); + } catch ( Missing_Verification_Exception $exception ) { + $this->redirect_to_proxy( $code, compact( 'site_code', 'step' ) ); + } catch ( Exchange_Site_Code_Exception $exception ) { + $this->redirect_to_splash(); + } + + $credentials = $this->credentials->get(); + $site_id = ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : ''; + + $this->redirect_to_proxy( $code, compact( 'site_id', 'step' ) ); + } + + /** + * Verifies the given nonce for a setup action. + * + * The nonce passed from the proxy will always be the one initially provided to it. + * {@see Google_Proxy::setup_url()} + * + * @since 1.48.0 + * + * @param string $nonce Action nonce. + * @param string $action Action name. Optional. Defaults to the action for the nonce given to the proxy. + */ + protected function verify_nonce( $nonce, $action = Google_Proxy::NONCE_ACTION ) { + if ( ! wp_verify_nonce( $nonce, $action ) ) { + $this->authentication->invalid_nonce_error( $action ); + } + } + + /** + * Handles site verification. + * + * @since 1.48.0 + * + * @param string $token Verification token. + * @param string $method Verification method. + */ + protected function handle_verification( $token, $method ) { + /** + * Verifies site ownership using the given token and verification method. + * + * @since 1.48.0 + * + * @param string $token Verification token. + * @param string $method Verification method. + */ + do_action( 'googlesitekit_verify_site_ownership', $token, $method ); + } + + /** + * Handles the exchange of a code and site code for client credentials from the proxy. + * + * @since 1.48.0 + * + * @param string $code Code ('googlesitekit_code') provided by proxy. + * @param string $site_code Site code ('googlesitekit_site_code') provided by proxy. + * + * @throws Missing_Verification_Exception Thrown if exchanging the site code fails due to missing site verification. + * @throws Exchange_Site_Code_Exception Thrown if exchanging the site code fails for any other reason. + */ + protected function handle_site_code( $code, $site_code ) { + $data = $this->google_proxy->exchange_site_code( $site_code, $code ); + + if ( is_wp_error( $data ) ) { + $error_code = $data->get_error_message() ?: $data->get_error_code(); + $error_code = $error_code ?: 'unknown_error'; + + if ( 'missing_verification' === $error_code ) { + throw new Missing_Verification_Exception(); + } + + $this->user_options->set( OAuth_Client::OPTION_ERROR_CODE, $error_code ); + + throw new Exchange_Site_Code_Exception( $error_code ); + } + + $this->credentials->set( + array( + 'oauth2_client_id' => $data['site_id'], + 'oauth2_client_secret' => $data['site_secret'], + ) + ); + } + + /** + * Redirects back to the authentication service with any added parameters. + * + * For v2 of the proxy, this method now has to ensure that the user is redirected back to the correct step on the + * proxy, based on which action was received. + * + * @since 1.48.0 + * @since 1.49.0 Uses the new `Google_Proxy::setup_url_v2` method when the `serviceSetupV2` feature flag is enabled. + * + * @param string $code Code ('googlesitekit_code') provided by proxy. + * @param array $params Additional query parameters to include in the proxy redirect URL. + */ + protected function redirect_to_proxy( $code = '', $params = array() ) { + $params['code'] = $code; + $url = $this->authentication->get_google_proxy()->setup_url( $params ); + + wp_safe_redirect( $url ); + exit; + } + + /** + * Redirects to the Site Kit splash page. + * + * @since 1.48.0 + */ + protected function redirect_to_splash() { + wp_safe_redirect( $this->context->admin_url( 'splash' ) ); + exit; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Token.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Token.php new file mode 100644 index 000000000..5980bf1bf --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Token.php @@ -0,0 +1,147 @@ +user_options = $user_options; + $this->encrypted_user_options = new Encrypted_User_Options( $this->user_options ); + } + + /** + * Checks whether or not the setting exists. + * + * @since 1.39.0 + * + * @return bool True on success, false on failure. + */ + public function has() { + if ( ! $this->get() ) { + return false; + } + + return true; + } + + /** + * Gets the value of the setting. + * + * @since 1.39.0 + * + * @return mixed Value set for the option, or default if not set. + */ + public function get() { + $access_token = $this->encrypted_user_options->get( OAuth_Client::OPTION_ACCESS_TOKEN ); + if ( empty( $access_token ) ) { + return array(); + } + + $token = array( + 'access_token' => $access_token, + 'expires_in' => (int) $this->user_options->get( OAuth_Client::OPTION_ACCESS_TOKEN_EXPIRES_IN ), + 'created' => (int) $this->user_options->get( OAuth_Client::OPTION_ACCESS_TOKEN_CREATED ), + ); + + $refresh_token = $this->encrypted_user_options->get( OAuth_Client::OPTION_REFRESH_TOKEN ); + if ( ! empty( $refresh_token ) ) { + $token['refresh_token'] = $refresh_token; + } + + return $token; + } + + /** + * Sets the value of the setting with the given value. + * + * @since 1.39.0 + * + * @param mixed $value Setting value. Must be serializable if non-scalar. + * + * @return bool True on success, false on failure. + */ + public function set( $value ) { + if ( empty( $value['access_token'] ) ) { + return false; + } + + // Use reasonable defaults for these fields. + if ( empty( $value['expires_in'] ) ) { + $value['expires_in'] = HOUR_IN_SECONDS; + } + if ( empty( $value['created'] ) ) { + $value['created'] = time(); + } + + $this->encrypted_user_options->set( OAuth_Client::OPTION_ACCESS_TOKEN, $value['access_token'] ); + $this->user_options->set( OAuth_Client::OPTION_ACCESS_TOKEN_EXPIRES_IN, $value['expires_in'] ); + $this->user_options->set( OAuth_Client::OPTION_ACCESS_TOKEN_CREATED, $value['created'] ); + + if ( ! empty( $value['refresh_token'] ) ) { + $this->encrypted_user_options->set( OAuth_Client::OPTION_REFRESH_TOKEN, $value['refresh_token'] ); + } + + return true; + } + + /** + * Deletes the setting. + * + * @since 1.39.0 + * + * @return bool True on success, false on failure. + */ + public function delete() { + $this->user_options->delete( OAuth_Client::OPTION_ACCESS_TOKEN ); + $this->user_options->delete( OAuth_Client::OPTION_ACCESS_TOKEN_EXPIRES_IN ); + $this->user_options->delete( OAuth_Client::OPTION_ACCESS_TOKEN_CREATED ); + $this->user_options->delete( OAuth_Client::OPTION_REFRESH_TOKEN ); + return true; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/User_Input_State.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/User_Input_State.php new file mode 100644 index 000000000..f60592853 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/User_Input_State.php @@ -0,0 +1,60 @@ +delete(); + } + + return parent::set( '1' ); + } + + /** + * Gets the expected value type. + * + * @since 1.4.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'boolean'; + } + + /** + * Gets the default value. + * + * Returns an empty string by default for consistency with get_user_meta. + * + * @since 1.4.0 + * + * @return mixed The default value. + */ + protected function get_default() { + return false; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Verification_File.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Verification_File.php new file mode 100644 index 000000000..1a2fca726 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Verification_File.php @@ -0,0 +1,28 @@ + + * : User ID to disconnect. + * + * ## EXAMPLES + * + * wp google-site-kit auth disconnect --id=11 + * + * @alias revoke + * + * @since 1.11.0 + * + * @param array $args Array of arguments. + * @param array $assoc_args Array of associated arguments. + */ + public function disconnect( $args, $assoc_args ) { + $user_id = absint( $assoc_args['id'] ); + + $authentication = new Authentication( + $this->context, + new Options( $this->context ), + new User_Options( $this->context, $user_id ), + new Transients( $this->context ) + ); + $authentication->disconnect(); + + WP_CLI::success( sprintf( 'User with ID %d successfully disconnected.', $user_id ) ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Command.php b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Command.php new file mode 100644 index 000000000..1f9489a15 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Command.php @@ -0,0 +1,45 @@ +context = $context; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Commands.php b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Commands.php new file mode 100644 index 000000000..17b7ce9db --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Commands.php @@ -0,0 +1,55 @@ +context = $context; + } + + /** + * Registers WP CLI commands. + * + * @since 1.11.0 + */ + public function register() { + WP_CLI::add_command( 'google-site-kit auth', new Authentication_CLI_Command( $this->context ) ); + WP_CLI::add_command( 'google-site-kit reset', new Reset_CLI_Command( $this->context ) ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/CLI/Reset_CLI_Command.php b/wp-content/plugins/google-site-kit/includes/Core/CLI/Reset_CLI_Command.php new file mode 100644 index 000000000..1240b4313 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/CLI/Reset_CLI_Command.php @@ -0,0 +1,57 @@ +context ); + $reset->all(); + + if ( isset( $assoc_args['persistent'] ) && true === $assoc_args['persistent'] ) { + $reset_persistent = new Reset_Persistent( $this->context ); + $reset_persistent->all(); + } + + WP_CLI::success( 'Settings successfully reset.' ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Contracts/WP_Errorable.php b/wp-content/plugins/google-site-kit/includes/Core/Contracts/WP_Errorable.php new file mode 100644 index 000000000..43d324bf0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Contracts/WP_Errorable.php @@ -0,0 +1,30 @@ +get(); + } + + $results = array(); + + foreach ( $value as $id => $roles ) { + // If any of the IDs isn't an integer, do not include that item. + if ( ! is_int( $id ) ) { + continue; + } + + // If any of the array values isn't an array, do not include that item. + if ( ! is_array( $roles ) ) { + continue; + } + + $user_roles = array(); + + foreach ( $roles as $role ) { + // If the nested role item is a string, include that role item. + if ( is_string( $role ) ) { + $user_roles[] = $role; + } + } + + if ( ! empty( $user_roles ) ) { + $results[ $id ] = $user_roles; + } + } + + return $results; + }; + } + + /** + * Adds a consumer to the active consumers list. + * + * @since 1.87.0 + * + * @param int $user_id User ID. + * @param string[] $roles User roles. + */ + public function add( $user_id, $roles ) { + $active_consumers = $this->get(); + if ( ! array_key_exists( $user_id, $active_consumers ) ) { + $active_consumers[ $user_id ] = $roles; + $this->set( $active_consumers ); + } + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php new file mode 100644 index 000000000..491b7ab0b --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php @@ -0,0 +1,79 @@ +active_consumers = new Active_Consumers( $user_options ?: new User_Options( $context ) ); + } + + /** + * Registers functionality. + * + * @since 1.82.0 + */ + public function register() { + $this->active_consumers->register(); + } + + /** + * Get active consumers for refresh token. + * + * @since 1.87.0 + * + * @return array Array of active consumers formatted for refresh token. + */ + public function get_for_refresh_token() { + $active_consumers = $this->active_consumers->get(); + + if ( empty( $active_consumers ) ) { + return array(); + } + + $formatted_consumers = array(); + + foreach ( $active_consumers as $id => $roles ) { + $formatted_consumers[] = $id . ':' . implode( ',', $roles ); + } + + return array( + 'active_consumers' => implode( ' ', $formatted_consumers ), + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Dashboard_Sharing.php b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Dashboard_Sharing.php new file mode 100644 index 000000000..725fcc71e --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Dashboard_Sharing.php @@ -0,0 +1,84 @@ +context = $context; + $this->user_options = $user_options ?: new User_Options( $this->context ); + $this->activity_metrics = new Activity_Metrics( $this->context, $this->user_options ); + $this->view_only_pointer = new View_Only_Pointer(); + } + + /** + * Registers functionality. + * + * @since 1.82.0 + */ + public function register() { + $this->activity_metrics->register(); + $this->view_only_pointer->register(); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/View_Only_Pointer.php b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/View_Only_Pointer.php new file mode 100644 index 000000000..e03e3a13a --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/View_Only_Pointer.php @@ -0,0 +1,82 @@ +get_view_only_pointer(); + return $pointers; + } + ); + } + + /** + * Gets the view-only pointer. + * + * @since 1.83.0. + * + * @return Pointer Admin notice instance. + */ + private function get_view_only_pointer() { + return new Pointer( + self::SLUG, + array( + 'title' => __( 'You now have access to Site Kit', 'google-site-kit' ), + 'content' => __( 'Check Site Kit’s dashboard to find out how much traffic your site is getting, your most popular pages, top keywords people use to find your site on Search, and more.', 'google-site-kit' ), + 'target_id' => 'toplevel_page_googlesitekit-dashboard', + 'active_callback' => function( $hook_suffix ) { + if ( 'index.php' !== $hook_suffix + || ! Feature_Flags::enabled( 'dashboardSharing' ) + || current_user_can( Permissions::AUTHENTICATE ) + || ! current_user_can( Permissions::VIEW_SPLASH ) + + ) { + return false; + } + + $dismissed_wp_pointers = get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ); + if ( ! $dismissed_wp_pointers ) { + return true; + } + + $dismissed_wp_pointers = explode( ',', $dismissed_wp_pointers ); + if ( in_array( self::SLUG, $dismissed_wp_pointers, true ) ) { + return false; + } + + return true; + }, + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissals.php b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissals.php new file mode 100644 index 000000000..c7bd9200d --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissals.php @@ -0,0 +1,75 @@ +dismissed_items = new Dismissed_Items( $user_options ?: new User_Options( $context ) ); + $this->rest_controller = new REST_Dismissals_Controller( $this->dismissed_items ); + } + + /** + * Gets the reference to the Dismissed_Items instance. + * + * @since 1.69.0 + * + * @return Dismissed_Items An instance of the Dismissed_Items class. + */ + public function get_dismissed_items() { + return $this->dismissed_items; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.37.0 + */ + public function register() { + $this->dismissed_items->register(); + $this->rest_controller->register(); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissed_Items.php b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissed_Items.php new file mode 100644 index 000000000..d33a05352 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissed_Items.php @@ -0,0 +1,154 @@ +get(); + $items[ $item ] = $expires_in_seconds ? time() + $expires_in_seconds : 0; + + $this->set( $items ); + } + + /** + * Gets the value of the setting. + * + * @since 1.37.0 + * + * @return array Value set for the option, or default if not set. + */ + public function get() { + $value = parent::get(); + return is_array( $value ) ? $value : $this->get_default(); + } + + /** + * Gets the expected value type. + * + * @since 1.37.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'array'; + } + + /** + * Gets the default value. + * + * @since 1.37.0 + * + * @return array The default value. + */ + protected function get_default() { + return array(); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.37.0 + * + * @return callable Sanitize callback. + */ + protected function get_sanitize_callback() { + return function ( $items ) { + return $this->filter_dismissed_items( $items ); + }; + } + + /** + * Determines whether the item is dismissed. + * + * @since 1.37.0 + * + * @param string $item The item to check. + * @return bool TRUE if item is dismissed, otherwise FALSE. + */ + public function is_dismissed( $item ) { + $items = $this->get(); + if ( ! array_key_exists( $item, $items ) ) { + return false; + } + + $ttl = $items[ $item ]; + if ( $ttl > 0 && $ttl < time() ) { + return false; + } + + return true; + } + + /** + * Gets dismissed items. + * + * @since 1.37.0 + * + * @return array Dismissed items array. + */ + public function get_dismissed_items() { + $dismissed_items = $this->get(); + $dismissed_items = $this->filter_dismissed_items( $dismissed_items ); + + return array_keys( $dismissed_items ); + } + + /** + * Filters dismissed items. + * + * @since 1.37.0 + * + * @param array $items Dismissed items list. + * @return array Filtered dismissed items. + */ + private function filter_dismissed_items( $items ) { + $dismissed = array(); + + if ( is_array( $items ) ) { + foreach ( $items as $item => $ttl ) { + if ( self::DISMISS_ITEM_PERMANENTLY === $ttl || $ttl > time() ) { + $dismissed[ $item ] = $ttl; + } + } + } + + return $dismissed; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dismissals/REST_Dismissals_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/REST_Dismissals_Controller.php new file mode 100644 index 000000000..984f44e80 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/REST_Dismissals_Controller.php @@ -0,0 +1,135 @@ +dismissed_items = $dismissed_items; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.37.0 + */ + public function register() { + add_filter( + 'googlesitekit_rest_routes', + function ( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $paths ) { + return array_merge( + $paths, + array( + '/' . REST_Routes::REST_ROOT . '/core/user/data/dismissed-items', + ) + ); + } + ); + } + + /** + * Gets REST route instances. + * + * @since 1.37.0 + * + * @return REST_Route[] List of REST_Route objects. + */ + protected function get_rest_routes() { + $can_dismiss_item = function() { + return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD ); + }; + + return array( + new REST_Route( + 'core/user/data/dismissed-items', + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function () { + return new WP_REST_Response( $this->dismissed_items->get_dismissed_items() ); + }, + 'permission_callback' => $can_dismiss_item, + ) + ), + new REST_Route( + 'core/user/data/dismiss-item', + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => function ( WP_REST_Request $request ) { + $data = $request['data']; + + if ( empty( $data['slug'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'slug' ), + array( 'status' => 400 ) + ); + } + + $expiration = Dismissed_Items::DISMISS_ITEM_PERMANENTLY; + if ( isset( $data['expiration'] ) && intval( $data['expiration'] ) > 0 ) { + $expiration = $data['expiration']; + } + + $this->dismissed_items->add( $data['slug'], $expiration ); + + return new WP_REST_Response( $this->dismissed_items->get_dismissed_items() ); + }, + 'permission_callback' => $can_dismiss_item, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + ), + ), + ) + ), + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Dismissed_Tours.php b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Dismissed_Tours.php new file mode 100644 index 000000000..27b3c41af --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Dismissed_Tours.php @@ -0,0 +1,95 @@ +get(), $tour_slug ); + + $this->set( $value ); + } + + /** + * Gets the value of the setting. + * + * @since 1.27.0 + * + * @return array Value set for the option, or default if not set. + */ + public function get() { + $value = parent::get(); + + return is_array( $value ) ? $value : array(); + } + + /** + * Gets the expected value type. + * + * @since 1.27.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'array'; + } + + /** + * Gets the default value. + * + * @since 1.27.0 + * + * @return array The default value. + */ + protected function get_default() { + return array(); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.27.0 + * + * @return Closure + */ + protected function get_sanitize_callback() { + return function ( $value ) { + return is_array( $value ) + ? array_values( array_unique( $value ) ) + : $this->get(); + }; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Feature_Tours.php b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Feature_Tours.php new file mode 100644 index 000000000..c8d0d2772 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Feature_Tours.php @@ -0,0 +1,64 @@ +dismissed_tours = new Dismissed_Tours( $user_options ?: new User_Options( $context ) ); + $this->rest_controller = new REST_Feature_Tours_Controller( $this->dismissed_tours ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.27.0 + */ + public function register() { + $this->dismissed_tours->register(); + $this->rest_controller->register(); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/REST_Feature_Tours_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/REST_Feature_Tours_Controller.php new file mode 100644 index 000000000..d8736cb3d --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/REST_Feature_Tours_Controller.php @@ -0,0 +1,129 @@ +dismissed_tours = $dismissed_tours; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.27.0 + */ + public function register() { + add_filter( + 'googlesitekit_rest_routes', + function ( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $paths ) { + $feature_tour_routes = array( + '/' . REST_Routes::REST_ROOT . '/core/user/data/dismissed-tours', + ); + + return array_merge( $paths, $feature_tour_routes ); + } + ); + } + + /** + * Gets REST route instances. + * + * @since 1.27.0 + * + * @return REST_Route[] List of REST_Route objects. + */ + protected function get_rest_routes() { + $can_dismiss_tour = function() { + return current_user_can( Permissions::AUTHENTICATE ) || current_user_can( Permissions::VIEW_SHARED_DASHBOARD ); + }; + + return array( + new REST_Route( + 'core/user/data/dismissed-tours', + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function () { + return new WP_REST_Response( $this->dismissed_tours->get() ); + }, + 'permission_callback' => $can_dismiss_tour, + ) + ), + new REST_Route( + 'core/user/data/dismiss-tour', + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => function ( WP_REST_Request $request ) { + $data = $request['data']; + + if ( empty( $data['slug'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'slug' ), + array( 'status' => 400 ) + ); + } + + $this->dismissed_tours->add( $data['slug'] ); + + return new WP_REST_Response( $this->dismissed_tours->get() ); + }, + 'permission_callback' => $can_dismiss_tour, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + ), + ), + ) + ), + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Guards/Guard_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Guards/Guard_Interface.php new file mode 100644 index 000000000..e061ae2c1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Guards/Guard_Interface.php @@ -0,0 +1,33 @@ +shareable = ! empty( $definition['shareable'] ); + + if ( isset( $definition['service'] ) && is_string( $definition['service'] ) ) { + $this->service = $definition['service']; + } + + if ( isset( $definition['scopes'] ) && is_array( $definition['scopes'] ) ) { + $this->scopes = $definition['scopes']; + } + + if ( isset( $definition['request_scopes_message'] ) && is_string( $definition['request_scopes_message'] ) ) { + $this->request_scopes_message = $definition['request_scopes_message']; + } + } + + /** + * Checks if the datapoint is shareable. + * + * @since 1.77.0 + * + * @return bool + */ + public function is_shareable() { + return $this->shareable; + } + + /** + * Gets the service identifier. + * + * @since 1.77.0 + * + * @return string + */ + public function get_service() { + return $this->service; + } + + /** + * Gets the list of required scopes. + * + * @since 1.77.0 + * + * @return string[] + */ + public function get_required_scopes() { + return $this->scopes; + } + + /** + * Gets the request scopes message. + * + * @since 1.77.0 + * + * @return string + */ + public function get_request_scopes_message() { + if ( $this->request_scopes_message ) { + return $this->request_scopes_message; + } + + return __( 'You’ll need to grant Site Kit permission to do this.', 'google-site-kit' ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module.php new file mode 100644 index 000000000..0ed889478 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module.php @@ -0,0 +1,889 @@ + $service_instance pairs. + * + * @since 1.0.0 + * @var array|null + */ + private $google_services; + + /** + * Whether module is using shared credentials or not. + * + * @since 1.82.0 + * @var bool + */ + protected $is_using_shared_credentials = false; + + /** + * Constructor. + * + * @since 1.0.0 + * + * @param Context $context Plugin context. + * @param Options $options Optional. Option API instance. Default is a new instance. + * @param User_Options $user_options Optional. User Option API instance. Default is a new instance. + * @param Authentication $authentication Optional. Authentication instance. Default is a new instance. + * @param Assets $assets Optional. Assets API instance. Default is a new instance. + */ + public function __construct( + Context $context, + Options $options = null, + User_Options $user_options = null, + Authentication $authentication = null, + Assets $assets = null + ) { + $this->context = $context; + $this->options = $options ?: new Options( $this->context ); + $this->user_options = $user_options ?: new User_Options( $this->context ); + $this->authentication = $authentication ?: new Authentication( $this->context, $this->options, $this->user_options ); + $this->assets = $assets ?: new Assets( $this->context ); + $this->info = $this->parse_info( (array) $this->setup_info() ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.0.0 + */ + abstract public function register(); + + /** + * Magic isset-er. + * + * Allows checking for existence of module information. + * + * @since 1.0.0 + * + * @param string $key Key to check.. + * @return bool True if value for $key is available, false otherwise. + */ + final public function __isset( $key ) { + return isset( $this->info[ $key ] ); + } + + /** + * Magic getter. + * + * Allows reading module information. + * + * @since 1.0.0 + * + * @param string $key Key to get value for. + * @return mixed Value for $key, or null if not available. + */ + final public function __get( $key ) { + if ( ! isset( $this->info[ $key ] ) ) { + return null; + } + + return $this->info[ $key ]; + } + + /** + * Checks whether the module is connected. + * + * A module being connected means that all steps required as part of its activation are completed. + * + * @since 1.0.0 + * + * @return bool True if module is connected, false otherwise. + */ + public function is_connected() { + return true; + } + + /** + * Gets data for the given datapoint. + * + * @since 1.0.0 + * + * @param string $datapoint Datapoint to get data for. + * @param array|Data_Request $data Optional. Contextual data to provide. Default empty array. + * @return mixed Data on success, or WP_Error on failure. + */ + final public function get_data( $datapoint, $data = array() ) { + return $this->execute_data_request( + new Data_Request( 'GET', 'modules', $this->slug, $datapoint, $data ) + ); + } + + /** + * Sets data for the given datapoint. + * + * @since 1.0.0 + * + * @param string $datapoint Datapoint to get data for. + * @param array|Data_Request $data Data to set. + * @return mixed Response data on success, or WP_Error on failure. + */ + final public function set_data( $datapoint, $data ) { + return $this->execute_data_request( + new Data_Request( 'POST', 'modules', $this->slug, $datapoint, $data ) + ); + } + + /** + * Returns the list of datapoints the class provides data for. + * + * @since 1.0.0 + * + * @return array List of datapoints. + */ + final public function get_datapoints() { + $keys = array(); + $definitions = $this->get_datapoint_definitions(); + + foreach ( array_keys( $definitions ) as $key ) { + $parts = explode( ':', $key ); + $name = end( $parts ); + if ( ! empty( $name ) ) { + $keys[ $name ] = $name; + } + } + + return array_values( $keys ); + } + + /** + * Returns the mapping between available datapoints and their services. + * + * @since 1.0.0 + * @since 1.9.0 No longer abstract. + * @deprecated 1.12.0 + * + * @return array Associative array of $datapoint => $service_identifier pairs. + */ + protected function get_datapoint_services() { + _deprecated_function( __METHOD__, '1.12.0', static::class . '::get_datapoint_definitions' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + return array(); + } + + /** + * Gets map of datapoint to definition data for each. + * + * @since 1.9.0 + * + * @return array Map of datapoints to their definitions. + */ + protected function get_datapoint_definitions() { + return array(); + } + + /** + * Gets the datapoint definition instance. + * + * @since 1.77.0 + * + * @param string $datapoint_id Datapoint ID. + * @return Datapoint Datapoint instance. + * @throws Invalid_Datapoint_Exception Thrown if no datapoint exists by the given ID. + */ + protected function get_datapoint_definition( $datapoint_id ) { + $definitions = $this->get_datapoint_definitions(); + + // All datapoints must be defined. + if ( empty( $definitions[ $datapoint_id ] ) ) { + throw new Invalid_Datapoint_Exception(); + } + + return new Datapoint( $definitions[ $datapoint_id ] ); + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * // phpcs:ignore Squiz.Commenting.FunctionComment.InvalidNoReturn + * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure. + * @throws Invalid_Datapoint_Exception Override in a sub-class. + */ + protected function create_data_request( Data_Request $data ) { + throw new Invalid_Datapoint_Exception(); + } + + /** + * Parses a response for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @param mixed $response Request response. + * + * @return mixed Parsed response data on success, or WP_Error on failure. + */ + protected function parse_data_response( Data_Request $data, $response ) { + return $response; + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @return mixed Data on success, or WP_Error on failure. + */ + final protected function execute_data_request( Data_Request $data ) { + $restore_defers = array(); + try { + $datapoint = $this->get_datapoint_definition( "{$data->method}:{$data->datapoint}" ); + $oauth_client = $this->get_oauth_client_for_datapoint( $datapoint ); + + // Always reset this property first to ensure it is only set true for the current request. + $this->is_using_shared_credentials = false; + + $this->validate_datapoint_scopes( $datapoint, $oauth_client ); + $this->validate_base_scopes( $oauth_client ); + + // In order for a request to leverage a client other than the default + // it must return a RequestInterface (Google Services return this when defer = true). + // If not deferred, the request will be executed immediately with the client + // the service instance was instantiated with, which will always be the + // default client, configured for the current user and provided in `get_service`. + + // Client defer is false by default, so we need to configure the default to defer + // even if a different client will be the one to execute the request because + // the default instance is what services are setup with. + $restore_defers[] = $this->get_client()->withDefer( true ); + if ( $this->authentication->get_oauth_client() !== $oauth_client ) { + $restore_defers[] = $oauth_client->get_client()->withDefer( true ); + + // Set request as using shared credentials if oAuth clients do not match. + $this->is_using_shared_credentials = true; + + $current_user = wp_get_current_user(); + // Adds the current user to the active consumers list. + $oauth_client->add_active_consumer( $current_user ); + } + + $request = $this->create_data_request( $data ); + + if ( is_wp_error( $request ) ) { + return $request; + } elseif ( $request instanceof Closure ) { + $response = $request(); + } elseif ( $request instanceof RequestInterface ) { + $response = $oauth_client->get_client()->execute( $request ); + } else { + return new WP_Error( + 'invalid_datapoint_request', + __( 'Invalid datapoint request.', 'google-site-kit' ), + array( 'status' => 400 ) + ); + } + } catch ( Exception $e ) { + return $this->exception_to_error( $e, $data->datapoint ); + } finally { + foreach ( $restore_defers as $restore_defer ) { + $restore_defer(); + } + + // Reset shared credentials usage property after the request + // is made, regardless of whether or not it completed successfully + // or encountered an error. + $this->is_using_shared_credentials = false; + } + + if ( is_wp_error( $response ) ) { + return $response; + } + + return $this->parse_data_response( $data, $response ); + } + + /** + * Validates necessary scopes for the given datapoint. + * + * @since 1.77.0 + * + * @param Datapoint $datapoint Datapoint instance. + * @param OAuth_Client $oauth_client OAuth_Client instance. + * @throws Insufficient_Scopes_Exception Thrown if required scopes are not satisfied. + */ + private function validate_datapoint_scopes( Datapoint $datapoint, OAuth_Client $oauth_client ) { + $required_scopes = $datapoint->get_required_scopes(); + + if ( $required_scopes && ! $oauth_client->has_sufficient_scopes( $required_scopes ) ) { + $message = $datapoint->get_request_scopes_message(); + + throw new Insufficient_Scopes_Exception( $message, 0, null, $required_scopes ); + } + } + + /** + * Validates necessary scopes for the module. + * + * @since 1.77.0 + * + * @param OAuth_Client $oauth_client OAuth_Client instance. + * @throws Insufficient_Scopes_Exception Thrown if required scopes are not satisfied. + */ + private function validate_base_scopes( OAuth_Client $oauth_client ) { + if ( ! $this instanceof Module_With_Scopes ) { + return; + } + if ( ! $oauth_client->has_sufficient_scopes( $this->get_scopes() ) ) { + $message = sprintf( + /* translators: %s: module name */ + __( 'Site Kit can’t access the relevant data from %s because you haven’t granted all permissions requested during setup.', 'google-site-kit' ), + $this->name + ); + throw new Insufficient_Scopes_Exception( $message, 0, null, $this->get_scopes() ); + } + } + + /** + * Parses a date range string into a start date and an end date. + * + * @since 1.0.0 + * + * @param string $range Date range string. Either 'last-7-days', 'last-14-days', 'last-90-days', or + * 'last-28-days' (default). + * @param string $multiplier Optional. How many times the date range to get. This value can be specified if the + * range should be request multiple times back. Default 1. + * @param int $offset Days the range should be offset by. Default 1. Used by Search Console where + * data is delayed by two days. + * @param bool $previous Whether to select the previous period. Default false. + * + * @return array List with two elements, the first with the start date and the second with the end date, both as + * 'Y-m-d'. + */ + protected function parse_date_range( $range, $multiplier = 1, $offset = 1, $previous = false ) { + preg_match( '*-(\d+)-*', $range, $matches ); + $number_of_days = $multiplier * ( isset( $matches[1] ) ? $matches[1] : 28 ); + + // Calculate the end date. For previous period requests, offset period by the number of days in the request. + $end_date_offset = $previous ? $offset + $number_of_days : $offset; + $date_end = gmdate( 'Y-m-d', strtotime( $end_date_offset . ' days ago' ) ); + + // Set the start date. + $start_date_offset = $end_date_offset + $number_of_days - 1; + $date_start = gmdate( 'Y-m-d', strtotime( $start_date_offset . ' days ago' ) ); + + return array( $date_start, $date_end ); + } + + /** + * Gets the output for a specific frontend hook. + * + * @since 1.0.0 + * + * @param string $hook Frontend hook name, e.g. 'wp_head', 'wp_footer', etc. + * @return string Output the hook generates. + */ + final protected function get_frontend_hook_output( $hook ) { + $current_user_id = get_current_user_id(); + + // Unset current user to make WordPress behave as if nobody was logged in. + wp_set_current_user( false ); + + ob_start(); + do_action( $hook ); + $output = ob_get_clean(); + + // Restore the current user. + wp_set_current_user( $current_user_id ); + + return $output; + } + + /** + * Permutes site URL to cover all different variants of it (not considering the path). + * + * @since 1.0.0 + * + * @param string $site_url Site URL to get permutations for. + * @return array List of permutations. + */ + final protected function permute_site_url( $site_url ) { + $hostname = URL::parse( $site_url, PHP_URL_HOST ); + $path = URL::parse( $site_url, PHP_URL_PATH ); + + return array_reduce( + $this->permute_site_hosts( $hostname ), + function ( $urls, $host ) use ( $path ) { + $host_with_path = $host . $path; + array_push( $urls, "https://$host_with_path", "http://$host_with_path" ); + return $urls; + }, + array() + ); + } + + /** + * Generates common variations of the given hostname. + * + * Returns a list of hostnames that includes: + * - (if IDN) in Punycode encoding + * - (if IDN) in Unicode encoding + * - with and without www. subdomain (including IDNs) + * + * @since 1.38.0 + * + * @param string $hostname Hostname to generate variations of. + * @return string[] Hostname variations. + */ + protected function permute_site_hosts( $hostname ) { + $punycode = new Punycode(); + // See \Requests_IDNAEncoder::is_ascii. + $is_ascii = preg_match( '/(?:[^\x00-\x7F])/', $hostname ) !== 1; + $is_www = 0 === strpos( $hostname, 'www.' ); + // Normalize hostname without www. + $hostname = $is_www ? substr( $hostname, strlen( 'www.' ) ) : $hostname; + $hosts = array( $hostname, "www.$hostname" ); + + try { + // An ASCII hostname can only be non-IDN or punycode-encoded. + if ( $is_ascii ) { + // If the hostname is in punycode encoding, add the decoded version to the list of hosts. + if ( 0 === strpos( $hostname, Punycode::PREFIX ) || false !== strpos( $hostname, '.' . Punycode::PREFIX ) ) { + $host_decoded = $punycode->decode( $hostname ); + array_push( $hosts, $host_decoded, "www.$host_decoded" ); + } + } else { + // If it's not ASCII, then add the punycode encoded version. + $host_encoded = $punycode->encode( $hostname ); + array_push( $hosts, $host_encoded, "www.$host_encoded" ); + } + } catch ( Exception $exception ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + // Do nothing. + } + + return $hosts; + } + + /** + * Gets the Google client the module uses. + * + * This method should be used to access the client. + * + * @since 1.0.0 + * @since 1.2.0 Now returns Google_Site_Kit_Client instance. + * @since 1.35.0 Updated to be public. + * + * @return Google_Site_Kit_Client Google client instance. + * + * @throws Exception Thrown when the module did not correctly set up the client. + */ + final public function get_client() { + if ( null === $this->google_client ) { + $client = $this->setup_client(); + if ( ! $client instanceof Google_Site_Kit_Client ) { + throw new Exception( __( 'Google client not set up correctly.', 'google-site-kit' ) ); + } + $this->google_client = $client; + } + + return $this->google_client; + } + + /** + * Gets the oAuth client instance to use for the given datapoint. + * + * @since 1.77.0 + * + * @param Datapoint $datapoint Datapoint definition. + * @return OAuth_Client OAuth_Client instance. + */ + private function get_oauth_client_for_datapoint( Datapoint $datapoint ) { + if ( + $this instanceof Module_With_Owner + && $this->is_shareable() + && $datapoint->is_shareable() + && $this->get_owner_id() !== get_current_user_id() + && ! $this->is_recoverable() + && current_user_can( Permissions::READ_SHARED_MODULE_DATA, $this->slug ) + ) { + $oauth_client = $this->get_owner_oauth_client(); + + try { + $this->validate_base_scopes( $oauth_client ); + return $oauth_client; + } catch ( Exception $exception ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + // Fallthrough to default oauth client if scopes are unsatisfied. + } + } + + return $this->authentication->get_oauth_client(); + } + + /** + * Gets the Google service for the given identifier. + * + * This method should be used to access Google services. + * + * @since 1.0.0 + * + * @param string $identifier Identifier for the service. + * @return Google_Service Google service instance. + * + * @throws Exception Thrown when the module did not correctly set up the services or when the identifier is invalid. + */ + final protected function get_service( $identifier ) { + if ( null === $this->google_services ) { + $services = $this->setup_services( $this->get_client() ); + if ( ! is_array( $services ) ) { + throw new Exception( __( 'Google services not set up correctly.', 'google-site-kit' ) ); + } + foreach ( $services as $service ) { + if ( ! $service instanceof Google_Service ) { + throw new Exception( __( 'Google services not set up correctly.', 'google-site-kit' ) ); + } + } + $this->google_services = $services; + } + + if ( ! isset( $this->google_services[ $identifier ] ) ) { + /* translators: %s: service identifier */ + throw new Exception( sprintf( __( 'Google service identified by %s does not exist.', 'google-site-kit' ), $identifier ) ); + } + + return $this->google_services[ $identifier ]; + } + + /** + * Sets up information about the module. + * + * @since 1.0.0 + * + * @return array Associative array of module info. + */ + abstract protected function setup_info(); + + /** + * Sets up the Google client the module should use. + * + * This method is invoked once by {@see Module::get_client()} to lazily set up the client when it is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now returns Google_Site_Kit_Client instance. + * + * @return Google_Site_Kit_Client Google client instance. + */ + protected function setup_client() { + return $this->authentication->get_oauth_client()->get_client(); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now requires Google_Site_Kit_Client instance. + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + return array(); + } + + /** + * Sets whether or not to return raw requests and returns a callback to reset to the previous value. + * + * @since 1.2.0 + * + * @param bool $defer Whether or not to return raw requests. + * @return callable Callback function that resets to the original $defer value. + */ + protected function with_client_defer( $defer ) { + return $this->get_client()->withDefer( $defer ); + } + + /** + * Parses information about the module. + * + * @since 1.0.0 + * + * @param array $info Associative array of module info. + * @return array Parsed $info. + */ + private function parse_info( array $info ) { + $info = wp_parse_args( + $info, + array( + 'slug' => '', + 'name' => '', + 'description' => '', + 'order' => 10, + 'homepage' => '', + 'feature' => '', + 'depends_on' => array(), + 'force_active' => static::is_force_active(), + 'internal' => false, + ) + ); + + if ( empty( $info['name'] ) && ! empty( $info['slug'] ) ) { + $info['name'] = $info['slug']; + } + + $info['depends_on'] = (array) $info['depends_on']; + + return $info; + } + + /** + * Transforms an exception into a WP_Error object. + * + * @since 1.0.0 + * @since 1.49.0 Uses the new `Google_Proxy::setup_url_v2` method when the `serviceSetupV2` feature flag is enabled. + * @since 1.70.0 $datapoint parameter is optional. + * + * @param Exception $e Exception object. + * @param string $datapoint Optional. Datapoint originally requested. Default is an empty string. + * @return WP_Error WordPress error object. + */ + protected function exception_to_error( Exception $e, $datapoint = '' ) { + if ( $e instanceof WP_Errorable ) { + return $e->to_wp_error(); + } + + $code = $e->getCode(); + + $message = $e->getMessage(); + $status = is_numeric( $code ) && $code ? (int) $code : 500; + $reason = ''; + $reconnect_url = ''; + + if ( $e instanceof Google_Service_Exception ) { + $errors = $e->getErrors(); + if ( isset( $errors[0]['message'] ) ) { + $message = $errors[0]['message']; + } + if ( isset( $errors[0]['reason'] ) ) { + $reason = $errors[0]['reason']; + } + } elseif ( $e instanceof Google_Proxy_Code_Exception ) { + $status = 401; + $code = $message; + $auth_client = $this->authentication->get_oauth_client(); + $message = $auth_client->get_error_message( $code ); + $google_proxy = $this->authentication->get_google_proxy(); + $credentials = $this->authentication->credentials()->get(); + $params = array( + 'code' => $e->getAccessCode(), + 'site_id' => ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : '', + ); + $params = $google_proxy->add_setup_step_from_error_code( $params, $code ); + $reconnect_url = $google_proxy->setup_url( $params ); + } + + if ( empty( $code ) ) { + $code = 'unknown'; + } + + $data = array( + 'status' => $status, + 'reason' => $reason, + ); + + if ( ! empty( $reconnect_url ) ) { + $data['reconnectURL'] = $reconnect_url; + } + + return new WP_Error( $code, $message, $data ); + } + + /** + * Parses the string list into an array of strings. + * + * @since 1.15.0 + * + * @param string|array $items Items to parse. + * @return array An array of string items. + */ + protected function parse_string_list( $items ) { + if ( is_string( $items ) ) { + $items = explode( ',', $items ); + } + + if ( ! is_array( $items ) || empty( $items ) ) { + return array(); + } + + $items = array_map( + function( $item ) { + if ( ! is_string( $item ) ) { + return false; + } + + $item = trim( $item ); + if ( empty( $item ) ) { + return false; + } + + return $item; + }, + $items + ); + + $items = array_filter( $items ); + $items = array_values( $items ); + + return $items; + } + + /** + * Determines whether the current module is forced to be active or not. + * + * @since 1.49.0 + * + * @return bool TRUE if the module forced to be active, otherwise FALSE. + */ + public static function is_force_active() { + return false; + } + + /** + * Checks whether the module is shareable. + * + * @since 1.50.0 + * + * @return bool True if module is shareable, false otherwise. + */ + public function is_shareable() { + if ( $this instanceof Module_With_Owner && $this->is_connected() ) { + $datapoints = $this->get_datapoint_definitions(); + foreach ( $datapoints as $details ) { + if ( ! empty( $details['shareable'] ) ) { + return true; + } + } + } + + return false; + } + + /** + * Checks whether the module is recoverable. + * + * @since 1.78.0 + * + * @return bool + */ + public function is_recoverable() { + /** + * Filters the recoverable status of the module. + * + * @since 1.78.0 + * @param bool $_ Whether or not the module is recoverable. Default: false + * @param string $slug Module slug. + */ + return (bool) apply_filters( 'googlesitekit_is_module_recoverable', false, $this->slug ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Registry.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Registry.php new file mode 100644 index 000000000..8c9b9f321 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Registry.php @@ -0,0 +1,67 @@ +registry[ $module_classname ] = $module_classname; + } + + /** + * Gets all registered module class names. + * + * @since 1.21.0 + * + * @return string[] Registered module class names. + */ + public function get_all() { + return array_keys( $this->registry ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Settings.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Settings.php new file mode 100644 index 000000000..5d86ce8db --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Settings.php @@ -0,0 +1,99 @@ +add_option_default_filters(); + } + + /** + * Merges an array of settings to update. + * + * Only existing keys will be updated. + * + * @since 1.3.0 + * + * @param array $partial Partial settings array to save. + * + * @return bool True on success, false on failure. + */ + public function merge( array $partial ) { + $settings = $this->get(); + $partial = array_filter( + $partial, + function ( $value ) { + return null !== $value; + } + ); + $updated = array_intersect_key( $partial, $settings ); + + return $this->set( array_merge( $settings, $updated ) ); + } + + /** + * Registers a filter to ensure default values are present in the saved option. + * + * @since 1.2.0 + */ + protected function add_option_default_filters() { + add_filter( + 'option_' . static::OPTION, + function ( $option ) { + if ( ! is_array( $option ) ) { + return $this->get_default(); + } + return $option; + }, + 0 + ); + + // Fill in any missing keys with defaults. + // Must run later to not conflict with legacy key migration. + add_filter( + 'option_' . static::OPTION, + function ( $option ) { + if ( is_array( $option ) ) { + return $option + $this->get_default(); + } + return $option; + }, + 99 + ); + } + + /** + * Gets the expected value type. + * + * @since 1.2.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'object'; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Sharing_Settings.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Sharing_Settings.php new file mode 100644 index 000000000..43bc3ed9e --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Sharing_Settings.php @@ -0,0 +1,262 @@ + $sharing_settings ) { + $sanitized_option[ $module_slug ] = array(); + + if ( isset( $sharing_settings['sharedRoles'] ) ) { + $filtered_shared_roles = $this->filter_shared_roles( $this->sanitize_string_list( $sharing_settings['sharedRoles'] ) ); + + $sanitized_option[ $module_slug ]['sharedRoles'] = $filtered_shared_roles; + } + + if ( isset( $sharing_settings['management'] ) ) { + $sanitized_option[ $module_slug ]['management'] = (string) $sharing_settings['management']; + } + } + + return $sanitized_option; + }; + } + + /** + * Filters empty or non-string elements from a given array. + * + * @since 1.50.0 + * + * @param array $elements Array to check. + * @return array Empty array or a filtered array containing only non-empty strings. + */ + private function sanitize_string_list( $elements = array() ) { + if ( ! is_array( $elements ) ) { + $elements = array( $elements ); + } + + if ( empty( $elements ) ) { + return array(); + } + + $filtered_elements = array_filter( + $elements, + function( $element ) { + return is_string( $element ) && ! empty( $element ); + } + ); + // Avoid index gaps for filtered values. + return array_values( $filtered_elements ); + } + + /** + * Filters the shared roles to only include roles with the edit_posts capability. + * + * @since 1.85.0. + * + * @param array $shared_roles The shared roles list. + * @return string[] The sanitized shared roles list. + */ + private function filter_shared_roles( array $shared_roles ) { + $filtered_shared_roles = array_filter( + $shared_roles, + function( $role_slug ) { + $role = get_role( $role_slug ); + + if ( empty( $role ) || ! $role->has_cap( 'edit_posts' ) ) { + return false; + } + + return true; + } + ); + + return array_values( $filtered_shared_roles ); + } + + /** + * Gets the settings after filling in default values. + * + * @since 1.50.0 + * + * @return array Value set for the option, or registered default if not set. + */ + public function get() { + $settings = parent::get(); + + foreach ( $settings as $module_slug => $sharing_settings ) { + if ( ! isset( $sharing_settings['sharedRoles'] ) || ! is_array( $sharing_settings['sharedRoles'] ) ) { + $settings[ $module_slug ]['sharedRoles'] = array(); + } + if ( ! isset( $sharing_settings['management'] ) || ! in_array( $sharing_settings['management'], array( 'all_admins', 'owner' ), true ) ) { + $settings[ $module_slug ]['management'] = 'owner'; + } + + if ( isset( $sharing_settings['sharedRoles'] ) && is_array( $sharing_settings['sharedRoles'] ) ) { + $filtered_shared_roles = $this->filter_shared_roles( $sharing_settings['sharedRoles'] ); + $settings[ $module_slug ]['sharedRoles'] = $filtered_shared_roles; + } + } + + return $settings; + } + + /** + * Merges a partial Module_Sharing_Settings option array into existing sharing settings. + * + * @since 1.75.0 + * @since 1.77.0 Removed capability checks. + * + * @param array $partial Partial settings array to update existing settings with. + * + * @return bool True if sharing settings option was updated, false otherwise. + */ + public function merge( array $partial ) { + $settings = $this->get(); + $partial = array_filter( + $partial, + function ( $value ) { + return ! empty( $value ); + } + ); + + return $this->set( $this->array_merge_deep( $settings, $partial ) ); + } + + /** + * Unsets the settings for a given module. + * + * @since 1.68.0 + * + * @param string $slug Module slug. + */ + public function unset_module( $slug ) { + $settings = $this->get(); + + if ( isset( $settings[ $slug ] ) ) { + unset( $settings[ $slug ] ); + $this->set( $settings ); + } + } + + /** + * Gets the combined roles that are set as shareable for all modules. + * + * @since 1.69.0 + * + * @return array Combined array of shared roles for all modules. + */ + public function get_all_shared_roles() { + $shared_roles = array(); + $settings = $this->get(); + foreach ( $settings as $sharing_settings ) { + if ( ! isset( $sharing_settings['sharedRoles'] ) ) { + continue; + } + + $shared_roles = array_merge( $shared_roles, $sharing_settings['sharedRoles'] ); + } + return array_unique( $shared_roles ); + } + + /** + * Gets the shared roles for the given module slug. + * + * @since 1.69.0 + * + * @param string $slug Module slug. + * @return array list of shared roles for the module, otherwise an empty list. + */ + public function get_shared_roles( $slug ) { + $settings = $this->get(); + + if ( isset( $settings[ $slug ]['sharedRoles'] ) ) { + return $settings[ $slug ]['sharedRoles']; + } + + return array(); + } + + /** + * Merges two arrays recursively to a specific depth. + * + * When array1 and array2 have the same string keys, it overwrites + * the elements of array1 with elements of array2. Otherwise, it adds/appends + * elements of array2. + * + * @since 1.77.0 + * + * @param array $array1 First array. + * @param array $array2 Second array. + * @param int $depth Optional. Depth to merge to. Default is 1. + * + * @return array Merged array. + */ + private function array_merge_deep( $array1, $array2, $depth = 1 ) { + foreach ( $array2 as $key => $value ) { + if ( $depth > 0 && is_array( $value ) ) { + $array1_key = isset( $array1[ $key ] ) ? $array1[ $key ] : null; + $array1[ $key ] = $this->array_merge_deep( $array1_key, $value, $depth - 1 ); + } else { + $array1[ $key ] = $value; + } + } + + return $array1; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Activation.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Activation.php new file mode 100644 index 000000000..92770cf0a --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Activation.php @@ -0,0 +1,27 @@ +registerable_assets ) { + $this->registerable_assets = $this->setup_assets(); + } + + return $this->registerable_assets; + } + + /** + * Enqueues all assets necessary for the module. + * + * This default implementation simply enqueues all assets that the module + * has registered. + * + * @since 1.7.0 + * @since 1.37.0 Added the $asset_context argument; only enqueue assets in the correct context. + * + * @param string $asset_context The page context to load this asset, see `Asset::CONTEXT_*` constants. + */ + public function enqueue_assets( $asset_context = Asset::CONTEXT_ADMIN_SITEKIT ) { + $assets = $this->get_assets(); + array_walk( + $assets, + function( Asset $asset, $index, $asset_context ) { + if ( $asset->has_context( $asset_context ) ) { + $asset->enqueue(); + } + }, + $asset_context + ); + } + + /** + * Sets up the module's assets to register. + * + * @since 1.7.0 + * + * @return Asset[] List of Asset objects. + */ + abstract protected function setup_assets(); +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Deactivation.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Deactivation.php new file mode 100644 index 000000000..c682bc485 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Deactivation.php @@ -0,0 +1,27 @@ +get_settings()->get(); + if ( empty( $settings['ownerID'] ) ) { + return 0; + } + + return $settings['ownerID']; + } + + /** + * Gets the OAuth_Client instance for the module owner. + * + * @since 1.77.0 + * + * @return OAuth_Client OAuth_Client instance. + */ + public function get_owner_oauth_client() { + if ( $this->owner_oauth_client instanceof OAuth_Client ) { + return $this->owner_oauth_client; + } + + $user_options = new User_Options( $this->context, $this->get_owner_id() ); + + $this->owner_oauth_client = new OAuth_Client( + $this->context, + $this->options, + $user_options, + $this->authentication->credentials(), + $this->authentication->get_google_proxy(), + new Profile( $user_options ), + new Token( $user_options ) + ); + + return $this->owner_oauth_client; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Persistent_Registration.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Persistent_Registration.php new file mode 100644 index 000000000..b9b752127 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Persistent_Registration.php @@ -0,0 +1,29 @@ +get_scopes() ); + } + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Service_Entity.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Service_Entity.php new file mode 100644 index 000000000..ffdb91014 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Service_Entity.php @@ -0,0 +1,32 @@ +settings instanceof Module_Settings ) { + $this->settings = $this->setup_settings(); + } + + return $this->settings; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Modules.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Modules.php new file mode 100644 index 000000000..fee94ad24 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Modules.php @@ -0,0 +1,1725 @@ + $module pairs. + * + * @since 1.0.0 + * @var array + */ + private $modules = array(); + + /** + * Map of module slugs and which other modules they depend on. + * + * @since 1.0.0 + * @var array + */ + private $dependencies = array(); + + /** + * Map of module slugs and which other modules depend on them. + * + * @since 1.0.0 + * @var array + */ + private $dependants = array(); + + /** + * Module_Registry instance. + * + * @since 1.21.0 + * @var Module_Registry + */ + private $registry; + + /** + * Assets API instance. + * + * @since 1.40.0 + * @var Assets + */ + private $assets; + + /** + * Core module class names. + * + * @since 1.21.0 + * @var string[] Core module class names. + */ + private $core_modules = array( + Site_Verification::MODULE_SLUG => Site_Verification::class, + Search_Console::MODULE_SLUG => Search_Console::class, + Analytics::MODULE_SLUG => Analytics::class, + Optimize::MODULE_SLUG => Optimize::class, + Tag_Manager::MODULE_SLUG => Tag_Manager::class, + AdSense::MODULE_SLUG => AdSense::class, + PageSpeed_Insights::MODULE_SLUG => PageSpeed_Insights::class, + ); + + /** + * Constructor. + * + * @since 1.0.0 + * + * @param Context $context Plugin context. + * @param Options $options Optional. Option API instance. Default is a new instance. + * @param User_Options $user_options Optional. User Option API instance. Default is a new instance. + * @param Authentication $authentication Optional. Authentication instance. Default is a new instance. + * @param Assets $assets Optional. Assets API instance. Default is a new instance. + */ + public function __construct( + Context $context, + Options $options = null, + User_Options $user_options = null, + Authentication $authentication = null, + Assets $assets = null + ) { + $this->context = $context; + $this->options = $options ?: new Options( $this->context ); + $this->sharing_settings = new Module_Sharing_Settings( $this->options ); + $this->user_options = $user_options ?: new User_Options( $this->context ); + $this->authentication = $authentication ?: new Authentication( $this->context, $this->options, $this->user_options ); + $this->assets = $assets ?: new Assets( $this->context ); + + $this->core_modules[ Analytics_4::MODULE_SLUG ] = Analytics_4::class; + + // Preferably no features should be checked here, or any time prior to + // Modules::register() being called to add the 'googlesitekit_features_request_data' + // filter callback. For any feature flags checked in this method, a workaround needs + // to be added to Authentication::filter_features_via_proxy() so that the remote + // features request is not triggered too early. + + if ( Feature_Flags::enabled( 'ideaHubModule' ) ) { + $this->core_modules[ Idea_Hub::MODULE_SLUG ] = Idea_Hub::class; + } + + if ( self::should_enable_twg() ) { + $this->core_modules[ Thank_With_Google::MODULE_SLUG ] = Thank_With_Google::class; + } + } + + /** + * Determines if Thank with Google module should be enabled. + * + * @since 1.83.0 + * + * @return bool True if the module should be enabled, false otherwise. + */ + public static function should_enable_twg() { + if ( ! Feature_Flags::enabled( 'twgModule' ) ) { + return false; + } + + if ( Build_Mode::get_mode() === Build_Mode::MODE_DEVELOPMENT ) { + return true; + } + + if ( 'https' === URL::parse( home_url(), PHP_URL_SCHEME ) ) { + return true; + } + + // Because we aren't in development mode and haven't detected SSL being enabled, TwG should + // not be enabled. + return false; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.0.0 + */ + public function register() { + add_filter( + 'googlesitekit_features_request_data', + function( $body ) { + $active_modules = $this->get_active_modules(); + $connected_modules = array_filter( + $active_modules, + function( $module ) { + return $module->is_connected(); + } + ); + + $body['active_modules'] = implode( ' ', array_keys( $active_modules ) ); + $body['connected_modules'] = implode( ' ', array_keys( $connected_modules ) ); + return $body; + } + ); + + add_filter( + 'googlesitekit_rest_routes', + function( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $paths ) { + $modules_routes = array( + '/' . REST_Routes::REST_ROOT . '/core/modules/data/list', + ); + + return array_merge( $paths, $modules_routes ); + } + ); + + $available_modules = $this->get_available_modules(); + array_walk( + $available_modules, + function( Module $module ) { + if ( $module instanceof Module_With_Settings ) { + $module->get_settings()->register(); + } + + if ( $module instanceof Module_With_Persistent_Registration ) { + $module->register_persistent(); + } + } + ); + + $this->sharing_settings->register(); + + if ( Feature_Flags::enabled( 'dashboardSharing' ) ) { + ( new REST_Dashboard_Sharing_Controller( $this ) )->register(); + } + + add_filter( + 'googlesitekit_assets', + function( $assets ) use ( $available_modules ) { + foreach ( $available_modules as $module ) { + if ( $module instanceof Module_With_Assets ) { + $assets = array_merge( $assets, $module->get_assets() ); + } + } + return $assets; + } + ); + + $active_modules = $this->get_active_modules(); + array_walk( + $active_modules, + function( Module $module ) { + $module->register(); + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $paths ) use ( $active_modules ) { + $settings_routes = array_map( + function ( Module $module ) { + if ( $module instanceof Module_With_Settings ) { + return '/' . REST_Routes::REST_ROOT . "/modules/{$module->slug}/data/settings"; + } + return null; + }, + array_values( $active_modules ) + ); + + return array_merge( $paths, array_filter( $settings_routes ) ); + } + ); + + add_action( + 'googlesitekit_authorize_user', + function( $token_response ) { + if ( empty( $token_response['analytics_configuration'] ) ) { + return; + } + + // Do nothing if the Analytics module is already activated. + if ( $this->is_module_active( Analytics::MODULE_SLUG ) ) { + return; + } + + $this->activate_module( Analytics::MODULE_SLUG ); + + $extra_scopes = $this->user_options->get( OAuth_Client::OPTION_ADDITIONAL_AUTH_SCOPES ); + if ( is_array( $extra_scopes ) ) { + $readonly_scope_index = array_search( Analytics::READONLY_SCOPE, $extra_scopes, true ); + if ( $readonly_scope_index >= 0 ) { + unset( $extra_scopes[ $readonly_scope_index ] ); + + $auth_scopes = $this->user_options->get( OAuth_Client::OPTION_AUTH_SCOPES ); + if ( is_array( $auth_scopes ) ) { + $auth_scopes[] = Analytics::READONLY_SCOPE; + $auth_scopes = array_unique( $auth_scopes ); + + $this->user_options->set( OAuth_Client::OPTION_ADDITIONAL_AUTH_SCOPES, array_values( $extra_scopes ) ); + $this->user_options->set( OAuth_Client::OPTION_AUTH_SCOPES, $auth_scopes ); + } + } + } + + try { + $analytics = $this->get_module( Analytics::MODULE_SLUG ); + $analytics->handle_token_response_data( $token_response ); + } catch ( Exception $e ) { + return; + } + }, + 1 + ); + + add_filter( 'googlesitekit_inline_base_data', $this->get_method_proxy( 'inline_js_data' ) ); + add_filter( 'googlesitekit_inline_tracking_data', $this->get_method_proxy( 'inline_js_data' ) ); + + add_filter( + 'googlesitekit_dashboard_sharing_data', + function ( $data ) { + $data['sharedOwnershipModules'] = array_keys( $this->get_shared_ownership_modules() ); + $data['defaultSharedOwnershipModuleSettings'] = $this->populate_default_shared_ownership_module_settings( array() ); + + return $data; + } + ); + + add_filter( + 'googlesitekit_module_exists', + function ( $exists, $slug ) { + return $this->module_exists( $slug ); + }, + 10, + 2 + ); + + add_filter( + 'googlesitekit_is_module_recoverable', + function ( $recoverable, $slug ) { + return $this->is_module_recoverable( $slug ); + }, + 10, + 2 + ); + + add_filter( 'option_' . Module_Sharing_Settings::OPTION, $this->get_method_proxy( 'populate_default_shared_ownership_module_settings' ) ); + add_filter( 'default_option_' . Module_Sharing_Settings::OPTION, $this->get_method_proxy( 'populate_default_shared_ownership_module_settings' ), 20 ); + + add_action( + 'add_option_' . Module_Sharing_Settings::OPTION, + function( $option, $values ) { + array_walk( + $values, + function( $value, $module_slug ) { + if ( ! $this->module_exists( $module_slug ) ) { + return; + } + + $module = $this->get_module( $module_slug ); + + if ( ! $module instanceof Module_With_Service_Entity ) { + + $module->get_settings()->merge( + array( + 'ownerID' => get_current_user_id(), + ) + ); + + }; + } + ); + }, + 10, + 2 + ); + + add_action( + 'update_option_' . Module_Sharing_Settings::OPTION, + function( $old_values, $values ) { + if ( is_array( $values ) && is_array( $old_values ) ) { + array_walk( + $values, + function( $value, $module_slug ) use ( $old_values ) { + if ( ! $this->module_exists( $module_slug ) ) { + return; + } + + $module = $this->get_module( $module_slug ); + + if ( ! $module instanceof Module_With_Service_Entity ) { + $changed_settings = false; + + if ( is_array( $value ) ) { + array_walk( + $value, + function( $setting, $setting_key ) use ( $old_values, $module_slug, &$changed_settings ) { + // Check if old value is an array and set, then compare both arrays. + if ( + is_array( $setting ) && + isset( $old_values[ $module_slug ][ $setting_key ] ) && + is_array( $old_values[ $module_slug ][ $setting_key ] ) + ) { + sort( $setting ); + sort( $old_values[ $module_slug ][ $setting_key ] ); + if ( $setting !== $old_values[ $module_slug ][ $setting_key ] ) { + $changed_settings = true; + } + } elseif ( + // If we don't have the old values or the types are different, then we have updated settings. + ! isset( $old_values[ $module_slug ][ $setting_key ] ) || + gettype( $setting ) !== gettype( $old_values[ $module_slug ][ $setting_key ] ) || + $setting !== $old_values[ $module_slug ][ $setting_key ] + ) { + $changed_settings = true; + } + } + ); + } + + if ( $changed_settings ) { + $module->get_settings()->merge( + array( + 'ownerID' => get_current_user_id(), + ) + ); + } + } + } + ); + } + }, + 10, + 2 + ); + } + + /** + * Adds / modifies data to pass to JS. + * + * @since 1.78.0 + * + * @param array $data Inline JS data. + * @return array Filtered $data. + */ + private function inline_js_data( $data ) { + $all_active_modules = $this->get_active_modules(); + + $non_internal_active_modules = array_filter( + $all_active_modules, + function( Module $module ) { + return false === $module->internal; + } + ); + + $data['activeModules'] = array_keys( $non_internal_active_modules ); + + return $data; + } + + /** + * Gets the reference to the Module_Sharing_Settings instance. + * + * @since 1.69.0 + * + * @return Module_Sharing_Settings An instance of the Module_Sharing_Settings class. + */ + public function get_module_sharing_settings() { + return $this->sharing_settings; + } + + /** + * Gets the available modules. + * + * @since 1.0.0 + * @since 1.85.0 Filter out modules which are missing any of the dependencies specified in `depends_on`. + * + * @return array Available modules as $slug => $module pairs. + */ + public function get_available_modules() { + if ( empty( $this->modules ) ) { + $module_classes = $this->get_registry()->get_all(); + foreach ( $module_classes as $module_class ) { + $instance = new $module_class( $this->context, $this->options, $this->user_options, $this->authentication, $this->assets ); + + $this->modules[ $instance->slug ] = $instance; + $this->dependencies[ $instance->slug ] = array(); + $this->dependants[ $instance->slug ] = array(); + } + + uasort( + $this->modules, + function( Module $a, Module $b ) { + if ( $a->order === $b->order ) { + return 0; + } + return ( $a->order < $b->order ) ? -1 : 1; + } + ); + + // Remove any modules which are missing dependencies. This may occur as the result of a dependency + // being removed via the googlesitekit_available_modules filter. + $this->modules = array_filter( + $this->modules, + function( Module $module ) { + foreach ( $module->depends_on as $dependency ) { + if ( ! isset( $this->modules[ $dependency ] ) ) { + return false; + } + } + return true; + } + ); + + // Set up dependency maps. + foreach ( $this->modules as $module ) { + foreach ( $module->depends_on as $dependency ) { + if ( $module->slug === $dependency ) { + continue; + } + + $this->dependencies[ $module->slug ][] = $dependency; + $this->dependants[ $dependency ][] = $module->slug; + } + } + } + + return $this->modules; + } + + /** + * Gets the active modules. + * + * @since 1.0.0 + * + * @return array Active modules as $slug => $module pairs. + */ + public function get_active_modules() { + $modules = $this->get_available_modules(); + $option = $this->get_active_modules_option(); + + return array_filter( + $modules, + function( Module $module ) use ( $option ) { + // Force active OR manually active modules. + return $module->force_active || in_array( $module->slug, $option, true ); + } + ); + } + + /** + * Gets the module identified by the given slug. + * + * @since 1.0.0 + * + * @param string $slug Unique module slug. + * @return Module Module for the slug. + * + * @throws Exception Thrown when the module slug is invalid. + */ + public function get_module( $slug ) { + $modules = $this->get_available_modules(); + + if ( ! isset( $modules[ $slug ] ) ) { + /* translators: %s: module slug */ + throw new Exception( sprintf( __( 'Invalid module slug %s.', 'google-site-kit' ), $slug ) ); + } + + return $modules[ $slug ]; + } + + /** + * Checks if the module exists. + * + * @since 1.80.0 + * + * @param string $slug Module slug. + * @return bool True if the module exists, false otherwise. + */ + public function module_exists( $slug ) { + try { + $this->get_module( $slug ); + return true; + } catch ( Exception $e ) { + return false; + } + } + + /** + * Gets the list of module slugs the module with the given slug depends on. + * + * @since 1.0.0 + * + * @param string $slug Unique module slug. + * @return array List of slugs for other modules that are dependencies. + * + * @throws Exception Thrown when the module slug is invalid. + */ + public function get_module_dependencies( $slug ) { + $modules = $this->get_available_modules(); + + if ( ! isset( $modules[ $slug ] ) ) { + /* translators: %s: module slug */ + throw new Exception( sprintf( __( 'Invalid module slug %s.', 'google-site-kit' ), $slug ) ); + } + + return $this->dependencies[ $slug ]; + } + + /** + * Gets the list of module slugs that depend on the module with the given slug. + * + * @since 1.0.0 + * + * @param string $slug Unique module slug. + * @return array List of slugs for other modules that are dependants. + * + * @throws Exception Thrown when the module slug is invalid. + */ + public function get_module_dependants( $slug ) { + $modules = $this->get_available_modules(); + + if ( ! isset( $modules[ $slug ] ) ) { + /* translators: %s: module slug */ + throw new Exception( sprintf( __( 'Invalid module slug %s.', 'google-site-kit' ), $slug ) ); + } + + return $this->dependants[ $slug ]; + } + + /** + * Checks whether the module identified by the given slug is active. + * + * @since 1.0.0 + * + * @param string $slug Unique module slug. + * @return bool True if module is active, false otherwise. + */ + public function is_module_active( $slug ) { + $modules = $this->get_active_modules(); + + return isset( $modules[ $slug ] ); + } + + /** + * Checks whether the module identified by the given slug is connected. + * + * @since 1.0.0 + * + * @param string $slug Unique module slug. + * @return bool True if module is connected, false otherwise. + */ + public function is_module_connected( $slug ) { + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return false; + } + + return (bool) $module->is_connected(); + } + + /** + * Activates the module identified by the given slug. + * + * @since 1.0.0 + * + * @param string $slug Unique module slug. + * @return bool True on success, false on failure. + */ + public function activate_module( $slug ) { + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return false; + } + + // TODO: Remove this hack. + if ( Analytics::MODULE_SLUG === $slug ) { + // GA4 needs to be handled first to pass conditions below + // due to special handling in active modules option. + $this->activate_module( Analytics_4::MODULE_SLUG ); + } + + $option = $this->get_active_modules_option(); + + if ( in_array( $slug, $option, true ) ) { + return true; + } + + $option[] = $slug; + + $this->set_active_modules_option( $option ); + + if ( $module instanceof Module_With_Activation ) { + $module->on_activation(); + } + + return true; + } + + /** + * Checks whether the module identified by the given slug is enabled by the option. + * + * @since 1.46.0 + * + * @param string $slug Unique module slug. + * @return bool True if module has been manually enabled, false otherwise. + */ + private function manually_enabled( $slug ) { + $option = $this->get_active_modules_option(); + return in_array( $slug, $option, true ); + } + + /** + * Deactivates the module identified by the given slug. + * + * @since 1.0.0 + * + * @param string $slug Unique module slug. + * @return bool True on success, false on failure. + */ + public function deactivate_module( $slug ) { + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return false; + } + + // TODO: Remove this hack. + if ( Analytics::MODULE_SLUG === $slug ) { + // GA4 needs to be handled first to pass conditions below + // due to special handling in active modules option. + $this->deactivate_module( Analytics_4::MODULE_SLUG ); + } + + $option = $this->get_active_modules_option(); + + $key = array_search( $slug, $option, true ); + if ( false === $key ) { + return true; + } + + // Prevent deactivation if force-active. + if ( $module->force_active ) { + return false; + } + + unset( $option[ $key ] ); + + $this->set_active_modules_option( array_values( $option ) ); + + if ( $module instanceof Module_With_Deactivation ) { + $module->on_deactivation(); + } + + $this->sharing_settings->unset_module( $slug ); + + return true; + } + + /** + * Enqueues all module-specific assets. + * + * @since 1.7.0 + */ + public function enqueue_assets() { + $available_modules = $this->get_available_modules(); + array_walk( + $available_modules, + function( Module $module ) { + if ( $module instanceof Module_With_Assets ) { + $module->enqueue_assets(); + } + } + ); + } + + /** + * Gets the configured module registry instance. + * + * @since 1.21.0 + * + * @return Module_Registry + */ + protected function get_registry() { + if ( ! $this->registry instanceof Module_Registry ) { + $this->registry = $this->setup_registry(); + } + + return $this->registry; + } + + /** + * Sets up a fresh module registry instance. + * + * @since 1.21.0 + * + * @return Module_Registry + */ + protected function setup_registry() { + $registry = new Module_Registry(); + /** + * Filters core module slugs before registering them in the module registry. Each slug presented on this array will + * be registered for inclusion. If a module is forced to be active, then it will be included even if the module slug is + * removed from this filter. + * + * @since 1.49.0 + * + * @param array $available_modules An array of core module slugs available for registration in the module registry. + * @return array An array of filtered module slugs. + */ + $available_modules = (array) apply_filters( 'googlesitekit_available_modules', array_keys( $this->core_modules ) ); + $modules = array_fill_keys( $available_modules, true ); + + foreach ( $this->core_modules as $slug => $module ) { + if ( isset( $modules[ $slug ] ) || call_user_func( array( $module, 'is_force_active' ) ) ) { + $registry->register( $module ); + } + } + + return $registry; + } + + /** + * Gets related REST routes. + * + * @since 1.3.0 + * + * @return array List of REST_Route objects. + */ + private function get_rest_routes() { + $can_setup = function() { + return current_user_can( Permissions::SETUP ); + }; + + $can_authenticate = function() { + return current_user_can( Permissions::AUTHENTICATE ); + }; + + $can_list_data = function() { + return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD ); + }; + + $can_view_insights = function() { + // This accounts for routes that need to be called before user has completed setup flow. + if ( current_user_can( Permissions::SETUP ) ) { + return true; + } + + return current_user_can( Permissions::VIEW_POSTS_INSIGHTS ); + }; + + $can_manage_options = function() { + // This accounts for routes that need to be called before user has completed setup flow. + if ( current_user_can( Permissions::SETUP ) ) { + return true; + } + + return current_user_can( Permissions::MANAGE_OPTIONS ); + }; + + $get_module_schema = function () { + return $this->get_module_schema(); + }; + + return array( + new REST_Route( + 'core/modules/data/list', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + $modules = array_map( + array( $this, 'prepare_module_data_for_response' ), + $this->get_available_modules() + ); + return new WP_REST_Response( array_values( $modules ) ); + }, + 'permission_callback' => $can_list_data, + ), + ), + array( + 'schema' => $get_module_schema, + ) + ), + new REST_Route( + 'core/modules/data/activation', + array( + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function( WP_REST_Request $request ) { + $data = $request['data']; + $slug = isset( $data['slug'] ) ? $data['slug'] : ''; + + try { + $this->get_module( $slug ); + } catch ( Exception $e ) { + return new WP_Error( 'invalid_module_slug', $e->getMessage() ); + } + + $modules = $this->get_available_modules(); + + if ( ! empty( $data['active'] ) ) { + // Prevent activation if one of the dependencies is not active. + $dependency_slugs = $this->get_module_dependencies( $slug ); + foreach ( $dependency_slugs as $dependency_slug ) { + if ( ! $this->is_module_active( $dependency_slug ) ) { + /* translators: %s: module name */ + return new WP_Error( 'inactive_dependencies', sprintf( __( 'Module cannot be activated because of inactive dependency %s.', 'google-site-kit' ), $modules[ $dependency_slug ]->name ), array( 'status' => 500 ) ); + } + } + if ( ! $this->activate_module( $slug ) ) { + return new WP_Error( 'cannot_activate_module', __( 'An internal error occurred while trying to activate the module.', 'google-site-kit' ), array( 'status' => 500 ) ); + } + } else { + // Automatically deactivate dependants. + $dependant_slugs = $this->get_module_dependants( $slug ); + foreach ( $dependant_slugs as $dependant_slug ) { + if ( $this->is_module_active( $dependant_slug ) ) { + if ( ! $this->deactivate_module( $dependant_slug ) ) { + /* translators: %s: module name */ + return new WP_Error( 'cannot_deactivate_dependant', sprintf( __( 'Module cannot be deactivated because deactivation of dependant %s failed.', 'google-site-kit' ), $modules[ $dependant_slug ]->name ), array( 'status' => 500 ) ); + } + } + } + if ( ! $this->deactivate_module( $slug ) ) { + return new WP_Error( 'cannot_deactivate_module', __( 'An internal error occurred while trying to deactivate the module.', 'google-site-kit' ), array( 'status' => 500 ) ); + } + } + + return new WP_REST_Response( array( 'success' => true ) ); + }, + 'permission_callback' => $can_manage_options, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + ), + ), + ), + ), + array( + 'schema' => $get_module_schema, + ) + ), + new REST_Route( + 'core/modules/data/info', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + try { + $module = $this->get_module( $request['slug'] ); + } catch ( Exception $e ) { + return new WP_Error( 'invalid_module_slug', $e->getMessage() ); + } + + return new WP_REST_Response( $this->prepare_module_data_for_response( $module ) ); + }, + 'permission_callback' => $can_authenticate, + 'args' => array( + 'slug' => array( + 'type' => 'string', + 'description' => __( 'Identifier for the module.', 'google-site-kit' ), + 'sanitize_callback' => 'sanitize_key', + ), + ), + ), + ), + array( + 'schema' => $get_module_schema, + ) + ), + new REST_Route( + self::REST_ENDPOINT_CHECK_ACCESS, + array( + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function( WP_REST_Request $request ) { + $data = $request['data']; + $slug = isset( $data['slug'] ) ? $data['slug'] : ''; + + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) ); + } + + if ( ! $this->is_module_connected( $slug ) ) { + return new WP_Error( 'module_not_connected', __( 'Module is not connected.', 'google-site-kit' ), array( 'status' => 400 ) ); + } + + if ( ! $module instanceof Module_With_Service_Entity ) { + if ( $module->is_shareable() ) { + return new WP_REST_Response( + array( + 'access' => true, + ) + ); + } + + return new WP_Error( 'invalid_module', __( 'Module access cannot be checked.', 'google-site-kit' ), array( 'status' => 400 ) ); + } + + $access = $module->check_service_entity_access(); + + if ( is_wp_error( $access ) ) { + return $access; + } + + return new WP_REST_Response( + array( + 'access' => $access, + ) + ); + }, + 'permission_callback' => $can_setup, + 'args' => array( + 'slug' => array( + 'type' => 'string', + 'description' => __( 'Identifier for the module.', 'google-site-kit' ), + 'sanitize_callback' => 'sanitize_key', + ), + ), + ), + ) + ), + new REST_Route( + 'modules/(?P[a-z0-9\-]+)/data/notifications', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + $slug = $request['slug']; + $modules = $this->get_available_modules(); + if ( ! isset( $modules[ $slug ] ) ) { + return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) ); + } + $notifications = array(); + if ( $this->is_module_active( $slug ) ) { + $notifications = $modules[ $slug ]->get_data( 'notifications' ); + if ( is_wp_error( $notifications ) ) { + // Don't consider it an error if the module does not have a 'notifications' datapoint. + if ( Invalid_Datapoint_Exception::WP_ERROR_CODE === $notifications->get_error_code() ) { + $notifications = array(); + } + return $notifications; + } + } + return new WP_REST_Response( $notifications ); + }, + 'permission_callback' => $can_authenticate, + ), + ), + array( + 'args' => array( + 'slug' => array( + 'type' => 'string', + 'description' => __( 'Identifier for the module.', 'google-site-kit' ), + 'sanitize_callback' => 'sanitize_key', + ), + ), + ) + ), + new REST_Route( + 'modules/(?P[a-z0-9\-]+)/data/settings', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + $slug = $request['slug']; + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) ); + } + + if ( ! $module instanceof Module_With_Settings ) { + return new WP_Error( 'invalid_module_slug', __( 'Module does not support settings.', 'google-site-kit' ), array( 'status' => 400 ) ); + } + return new WP_REST_Response( $module->get_settings()->get() ); + }, + 'permission_callback' => $can_manage_options, + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function( WP_REST_Request $request ) { + $slug = $request['slug']; + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) ); + } + + if ( ! $module instanceof Module_With_Settings ) { + return new WP_Error( 'invalid_module_slug', __( 'Module does not support settings.', 'google-site-kit' ), array( 'status' => 400 ) ); + } + + do_action( 'googlesitekit_pre_save_settings_' . $slug ); + + $module->get_settings()->merge( (array) $request['data'] ); + + do_action( 'googlesitekit_save_settings_' . $slug ); + + return new WP_REST_Response( $module->get_settings()->get() ); + }, + 'permission_callback' => $can_manage_options, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'description' => __( 'Settings to set.', 'google-site-kit' ), + 'validate_callback' => function( $value ) { + return is_array( $value ); + }, + ), + ), + ), + ), + array( + 'args' => array( + 'slug' => array( + 'type' => 'string', + 'description' => __( 'Identifier for the module.', 'google-site-kit' ), + 'sanitize_callback' => 'sanitize_key', + ), + ), + ) + ), + new REST_Route( + 'modules/(?P[a-z0-9\-]+)/data/(?P[a-z\-]+)', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + $slug = $request['slug']; + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) ); + } + + if ( ! $this->is_module_active( $slug ) ) { + return new WP_Error( 'module_not_active', __( 'Module must be active to request data.', 'google-site-kit' ), array( 'status' => 403 ) ); + } + + $data = $module->get_data( $request['datapoint'], $request->get_params() ); + if ( is_wp_error( $data ) ) { + return $data; + } + return new WP_REST_Response( $data ); + }, + 'permission_callback' => $can_view_insights, + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function( WP_REST_Request $request ) { + $slug = $request['slug']; + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) ); + } + + if ( ! $this->is_module_active( $slug ) ) { + return new WP_Error( 'module_not_active', __( 'Module must be active to request data.', 'google-site-kit' ), array( 'status' => 403 ) ); + } + + $data = isset( $request['data'] ) ? (array) $request['data'] : array(); + $data = $module->set_data( $request['datapoint'], $data ); + if ( is_wp_error( $data ) ) { + return $data; + } + return new WP_REST_Response( $data ); + }, + 'permission_callback' => $can_manage_options, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'description' => __( 'Data to set.', 'google-site-kit' ), + 'validate_callback' => function( $value ) { + return is_array( $value ); + }, + ), + ), + ), + ), + array( + 'args' => array( + 'slug' => array( + 'type' => 'string', + 'description' => __( 'Identifier for the module.', 'google-site-kit' ), + 'sanitize_callback' => 'sanitize_key', + ), + 'datapoint' => array( + 'type' => 'string', + 'description' => __( 'Module data point to address.', 'google-site-kit' ), + 'sanitize_callback' => 'sanitize_key', + ), + ), + ) + ), + new REST_Route( + 'core/modules/data/recover-modules', + array( + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function( WP_REST_Request $request ) { + $data = $request['data']; + $slugs = isset( $data['slugs'] ) ? $data['slugs'] : array(); + + if ( ! is_array( $slugs ) || empty( $slugs ) ) { + return new WP_Error( + 'invalid_param', + __( 'Request parameter slugs is not valid.', 'google-site-kit' ), + array( 'status' => 400 ) + ); + } + + $response = array( + 'success' => array(), + 'error' => array(), + ); + + foreach ( $slugs as $slug ) { + try { + $module = $this->get_module( $slug ); + } catch ( Exception $e ) { + $response = $this->handle_module_recovery_error( + $slug, + $response, + new WP_Error( + 'invalid_module_slug', + $e->getMessage(), + array( 'status' => 404 ) + ) + ); + continue; + } + + if ( ! $module->is_shareable() ) { + $response = $this->handle_module_recovery_error( + $slug, + $response, + new WP_Error( + 'module_not_shareable', + __( 'Module is not shareable.', 'google-site-kit' ), + array( 'status' => 404 ) + ) + ); + continue; + } + + if ( ! $this->is_module_recoverable( $module ) ) { + $response = $this->handle_module_recovery_error( + $slug, + $response, + new WP_Error( + 'module_not_recoverable', + __( 'Module is not recoverable.', 'google-site-kit' ), + array( 'status' => 403 ) + ) + ); + continue; + } + + $check_access_endpoint = '/' . REST_Routes::REST_ROOT . '/' . self::REST_ENDPOINT_CHECK_ACCESS; + $check_access_request = new WP_REST_Request( 'POST', $check_access_endpoint ); + $check_access_request->set_body_params( + array( + 'data' => array( + 'slug' => $slug, + ), + ) + ); + $check_access_response = rest_do_request( $check_access_request ); + + if ( is_wp_error( $check_access_response ) ) { + $response = $this->handle_module_recovery_error( + $slug, + $response, + $check_access_response + ); + continue; + } + $access = isset( $check_access_response->data['access'] ) ? $check_access_response->data['access'] : false; + if ( ! $access ) { + $response = $this->handle_module_recovery_error( + $slug, + $response, + new WP_Error( + 'module_not_accessible', + __( 'Module is not accessible by current user.', 'google-site-kit' ), + array( 'status' => 403 ) + ) + ); + continue; + } + + // Update the module's ownerID to the ID of the user making the request. + $module_setting_updates = array( + 'ownerID' => get_current_user_id(), + ); + $recovered_module = $module->get_settings()->merge( $module_setting_updates ); + + if ( $recovered_module ) { + $response['success'][ $slug ] = true; + } + } + + // Cast error array to an object so JSON encoded response is + // always an object, even when the error array is empty. + if ( ! $response['error'] ) { + $response['error'] = (object) array(); + } + + return new WP_REST_Response( $response ); + }, + 'permission_callback' => $can_setup, + ), + ), + array( + 'schema' => $get_module_schema, + ) + ), + ); + } + + /** + * Prepares module data for a REST response according to the schema. + * + * @since 1.3.0 + * + * @param Module $module Module instance. + * @return array Module REST response data. + */ + private function prepare_module_data_for_response( Module $module ) { + $module_data = array( + 'slug' => $module->slug, + 'name' => $module->name, + 'description' => $module->description, + 'homepage' => $module->homepage, + 'internal' => $module->internal, + 'order' => $module->order, + 'forceActive' => $module->force_active, + 'shareable' => $module->is_shareable(), + 'recoverable' => $module->is_recoverable(), + 'active' => $this->is_module_active( $module->slug ), + 'connected' => $this->is_module_connected( $module->slug ), + 'dependencies' => $this->get_module_dependencies( $module->slug ), + 'dependants' => $this->get_module_dependants( $module->slug ), + 'owner' => null, + ); + + if ( current_user_can( 'list_users' ) && $module instanceof Module_With_Owner ) { + $owner_id = $module->get_owner_id(); + if ( $owner_id ) { + $module_data['owner'] = array( + 'id' => $owner_id, + 'login' => get_the_author_meta( 'user_login', $owner_id ), + ); + } + } + + return $module_data; + } + + /** + * Gets the REST schema for a module. + * + * @since 1.3.0 + * + * @return array Module REST schema. + */ + private function get_module_schema() { + return array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'module', + 'type' => 'object', + 'properties' => array( + 'slug' => array( + 'type' => 'string', + 'description' => __( 'Identifier for the module.', 'google-site-kit' ), + 'readonly' => true, + ), + 'name' => array( + 'type' => 'string', + 'description' => __( 'Name of the module.', 'google-site-kit' ), + 'readonly' => true, + ), + 'description' => array( + 'type' => 'string', + 'description' => __( 'Description of the module.', 'google-site-kit' ), + 'readonly' => true, + ), + 'homepage' => array( + 'type' => 'string', + 'description' => __( 'The module homepage.', 'google-site-kit' ), + 'format' => 'uri', + 'readonly' => true, + ), + 'internal' => array( + 'type' => 'boolean', + 'description' => __( 'Whether the module is internal, thus without any UI.', 'google-site-kit' ), + 'readonly' => true, + ), + 'active' => array( + 'type' => 'boolean', + 'description' => __( 'Whether the module is active.', 'google-site-kit' ), + ), + 'connected' => array( + 'type' => 'boolean', + 'description' => __( 'Whether the module setup has been completed.', 'google-site-kit' ), + 'readonly' => true, + ), + 'dependencies' => array( + 'type' => 'array', + 'description' => __( 'List of slugs of other modules that the module depends on.', 'google-site-kit' ), + 'items' => array( + 'type' => 'string', + ), + 'readonly' => true, + ), + 'dependants' => array( + 'type' => 'array', + 'description' => __( 'List of slugs of other modules depending on the module.', 'google-site-kit' ), + 'items' => array( + 'type' => 'string', + ), + 'readonly' => true, + ), + 'owner' => array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'integer', + 'description' => __( 'Owner ID.', 'google-site-kit' ), + 'readonly' => true, + ), + 'login' => array( + 'type' => 'string', + 'description' => __( 'Owner login.', 'google-site-kit' ), + 'readonly' => true, + ), + ), + ), + ), + ); + } + + /** + * Gets the option containing the active modules. + * + * @since 1.0.0 + * + * @return array List of active module slugs. + */ + private function get_active_modules_option() { + $option = $this->options->get( self::OPTION_ACTIVE_MODULES ); + + if ( ! is_array( $option ) ) { + $option = $this->options->get( 'googlesitekit-active-modules' ); + } + + // If both options are not arrays, use the default value. + if ( ! is_array( $option ) ) { + $option = array( PageSpeed_Insights::MODULE_SLUG ); + } + + $includes_analytics = in_array( Analytics::MODULE_SLUG, $option, true ); + $includes_analytics_4 = in_array( Analytics_4::MODULE_SLUG, $option, true ); + if ( $includes_analytics && ! $includes_analytics_4 ) { + $option[] = Analytics_4::MODULE_SLUG; + } + + return $option; + } + + /** + * Sets the option containing the active modules. + * + * @since 1.0.0 + * + * @param array $option List of active module slugs. + */ + private function set_active_modules_option( array $option ) { + if ( in_array( Analytics_4::MODULE_SLUG, $option, true ) ) { + unset( $option[ array_search( Analytics_4::MODULE_SLUG, $option, true ) ] ); + } + + $this->options->set( self::OPTION_ACTIVE_MODULES, $option ); + } + + /** + * Gets the shareable active modules. + * + * @since 1.50.0 + * + * @return array Shareable modules as $slug => $module pairs. + */ + public function get_shareable_modules() { + $all_active_modules = $this->get_active_modules(); + + return array_filter( + $all_active_modules, + function( Module $module ) { + return $module->is_shareable(); + } + ); + } + + /** + * Checks the given module is recoverable. + * + * A module is recoverable if: + * - No user is identified by its owner ID + * - the owner lacks the capability to authenticate + * - the owner is no longer authenticated + * - no user exists for the owner ID + * + * @since 1.69.0 + * + * @param Module|string $module A module instance or its slug. + * @return bool True if the module is recoverable, false otherwise. + */ + public function is_module_recoverable( $module ) { + if ( is_string( $module ) ) { + try { + $module = $this->get_module( $module ); + } catch ( Exception $e ) { + return false; + } + } + + if ( ! $module instanceof Module_With_Owner ) { + return false; + } + + $shared_roles = $this->sharing_settings->get_shared_roles( $module->slug ); + if ( empty( $shared_roles ) ) { + return false; + } + + $owner_id = $module->get_owner_id(); + if ( ! $owner_id || ! user_can( $owner_id, Permissions::AUTHENTICATE ) ) { + return true; + } + + $restore_user = $this->user_options->switch_user( $owner_id ); + $owner_authenticated = $this->authentication->is_authenticated(); + $restore_user(); + + if ( ! $owner_authenticated ) { + return true; + } + + return false; + } + + /** + * Gets the recoverable modules. + * + * @since 1.50.0 + * + * @return array Recoverable modules as $slug => $module pairs. + */ + public function get_recoverable_modules() { + return array_filter( + $this->get_shareable_modules(), + array( $this, 'is_module_recoverable' ) + ); + } + + /** + * Gets shared ownership modules. + * + * @since 1.70.0 + * + * @return array Shared ownership modules as $slug => $module pairs. + */ + public function get_shared_ownership_modules() { + return array_filter( + $this->get_shareable_modules(), + function( $module ) { + return ! ( $module instanceof Module_With_Service_Entity ); + } + ); + } + + /** + * Inserts default settings for shared ownership modules in passed dashboard sharing settings. + * + * Sharing settings for shared ownership modules such as pagespeed-insights + * and idea-hub should always be manageable by "all admins". This function inserts + * this 'default' setting for their respective module slugs even when the + * dashboard_sharing settings option is not defined in the database or when settings + * are not set for these modules. + * + * @since 1.75.0 + * @since 1.85.0 Renamed from filter_shared_ownership_module_settings to populate_default_shared_ownership_module_settings. + * + * @param array $sharing_settings The dashboard_sharing settings option fetched from the database. + * @return array Dashboard sharing settings option with default settings inserted for shared ownership modules. + */ + protected function populate_default_shared_ownership_module_settings( $sharing_settings ) { + $shared_ownership_modules = array_keys( $this->get_shared_ownership_modules() ); + foreach ( $shared_ownership_modules as $shared_ownership_module ) { + if ( ! isset( $sharing_settings[ $shared_ownership_module ] ) ) { + $sharing_settings[ $shared_ownership_module ] = array( + 'sharedRoles' => array(), + 'management' => 'all_admins', + ); + } + } + return $sharing_settings; + } + + /** + * Gets the ownerIDs of all shareable modules. + * + * @since 1.75.0 + * + * @return array Array of $module_slug => $owner_id. + */ + public function get_shareable_modules_owners() { + $module_owners = array(); + $shareable_modules = $this->get_shareable_modules(); + foreach ( $shareable_modules as $module_slug => $module ) { + $module_owners[ $module_slug ] = $module->get_owner_id(); + } + return $module_owners; + } + + /** + * Deletes sharing settings. + * + * @since 1.84.0 + * + * @return bool True on success, false on failure. + */ + public function delete_dashboard_sharing_settings() { + return $this->options->delete( Module_Sharing_Settings::OPTION ); + } + + /** + * Prepares error data to pass with WP_REST_Response. + * + * @since 1.87.0 + * + * @param WP_Error $error Error (WP_Error) to prepare. + * + * @return array Formatted error response suitable for the client. + */ + protected function prepare_error_response( $error ) { + return array( + 'code' => $error->get_error_code(), + 'message' => $error->get_error_message(), + 'data' => $error->get_error_data(), + ); + } + + /** + * Updates response with error encounted during module recovery. + * + * @since 1.87.0 + * + * @param string $slug The module slug. + * @param array $response The existing response. + * @param WP_Error $error The error encountered. + * + * @return array The updated response with error included. + */ + protected function handle_module_recovery_error( $slug, $response, $error ) { + $response['success'][ $slug ] = false; + $response['error'][ $slug ] = $this->prepare_error_response( + $error + ); + return $response; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/REST_Dashboard_Sharing_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/REST_Dashboard_Sharing_Controller.php new file mode 100644 index 000000000..47aa68c46 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/REST_Dashboard_Sharing_Controller.php @@ -0,0 +1,139 @@ +modules = $modules; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.75.0 + */ + public function register() { + add_filter( + 'googlesitekit_rest_routes', + function ( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + } + + /** + * Gets REST route instances. + * + * @since 1.75.0 + * + * @return REST_Route[] List of REST_Route objects. + */ + protected function get_rest_routes() { + $can_manage_options = function () { + return current_user_can( Permissions::MANAGE_OPTIONS ); + }; + + return array( + new REST_Route( + 'core/modules/data/sharing-settings', + array( + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function ( WP_REST_Request $request ) { + $original_module_owners = $this->modules->get_shareable_modules_owners(); + + $sharing_settings = $this->modules->get_module_sharing_settings(); + $new_sharing_settings = array_reduce( + array( + new Collection_Key_Cap_Filter( 'sharedRoles', Permissions::MANAGE_MODULE_SHARING_OPTIONS ), + new Collection_Key_Cap_Filter( 'management', Permissions::DELEGATE_MODULE_SHARING_MANAGEMENT ), + ), + function ( $settings, Collection_Key_Cap_Filter $filter ) { + return $filter->filter_key_by_cap( $settings ); + }, + (array) $request['data'] + ); + + $sharing_settings->merge( $new_sharing_settings ); + + $new_module_owners = $this->modules->get_shareable_modules_owners(); + $changed_module_owners = array_filter( + $new_module_owners, + function ( $new_owner_id, $module_slug ) use ( $original_module_owners ) { + return $new_owner_id !== $original_module_owners[ $module_slug ]; + }, + ARRAY_FILTER_USE_BOTH + ); + + return new WP_REST_Response( + array( + 'settings' => $sharing_settings->get(), + // Cast array to an object so JSON encoded response is always an object, + // even when the array is empty. + 'newOwnerIDs' => (object) $changed_module_owners, + ) + ); + }, + 'permission_callback' => $can_manage_options, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + ), + ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => function () { + $delete_settings = $this->modules->delete_dashboard_sharing_settings(); + + return new WP_REST_Response( + $delete_settings + ); + }, + 'permission_callback' => $can_manage_options, + ), + ) + ), + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_AMP_Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_AMP_Tag.php new file mode 100644 index 000000000..ea58a7f66 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_AMP_Tag.php @@ -0,0 +1,120 @@ +module_slug}_tag_amp_blocked", false ); + } + + /** + * Gets the HTML attributes for a script tag that may potentially require user consent before loading. + * + * @since 1.24.0 + * + * @return string HTML attributes to add if the tag requires consent to load, or an empty string. + */ + public function get_tag_blocked_on_consent_attribute() { + // @see https://amp.dev/documentation/components/amp-consent/#advanced-predefined-consent-blocking-behaviors + $allowed_amp_block_on_consent_values = array( + '_till_responded', + '_till_accepted', + '_auto_reject', + ); + + /** + * Filters whether the tag requires user consent before loading. + * + * @since 1.24.0 + * + * @param bool|string $blocked Whether or not the tag requires user consent to load. Alternatively, this can also be one of + * the special string values '_till_responded', '_till_accepted', or '_auto_reject'. Default: false. + */ + $block_on_consent = apply_filters( "googlesitekit_{$this->module_slug}_tag_amp_block_on_consent", false ); + if ( in_array( $block_on_consent, $allowed_amp_block_on_consent_values, true ) ) { + return sprintf( ' data-block-on-consent="%s"', $block_on_consent ); + } + + if ( filter_var( $block_on_consent, FILTER_VALIDATE_BOOLEAN ) ) { + return ' data-block-on-consent'; + } + + return ''; + } + + /** + * Enqueues a component script for AMP Reader. + * + * @since 1.24.0 + * + * @param string $handle Script handle. + * @param string $src Script source URL. + * @return callable Hook function. + */ + protected function enqueue_amp_reader_component_script( $handle, $src ) { + $component_script_hook = function( $data ) use ( $handle, $src ) { + if ( ! isset( $data['amp_component_scripts'] ) || ! is_array( $data['amp_component_scripts'] ) ) { + $data['amp_component_scripts'] = array(); + } + + if ( ! isset( $data['amp_component_scripts'][ $handle ] ) ) { + $data['amp_component_scripts'][ $handle ] = $src; + } + + return $data; + }; + + add_filter( 'amp_post_template_data', $component_script_hook ); + + return $component_script_hook; + } + + /** + * Fires the "googlesitekit_{module_slug}_init_tag_amp" action to let 3rd party plugins to perform required setup. + * + * @since 1.24.0 + */ + protected function do_init_tag_action() { + /** + * Fires when the tag has been initialized which means that the tag will be rendered in the current request. + * + * @since 1.24.0 + * + * @param string $tag_id Tag ID. + */ + do_action( "googlesitekit_{$this->module_slug}_init_tag_amp", $this->tag_id ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag.php new file mode 100644 index 000000000..3fb641da0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag.php @@ -0,0 +1,52 @@ +module_slug = $module_slug; + } + + /** + * Outputs the tag. + * + * @since 1.24.0 + */ + abstract protected function render(); + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag_Guard.php new file mode 100644 index 000000000..96f96cdbf --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag_Guard.php @@ -0,0 +1,54 @@ +settings = $settings; + } + + /** + * Determines whether the guarded tag can be activated or not. + * + * @since 1.24.0 + * + * @return bool|WP_Error TRUE if guarded tag can be activated, otherwise FALSE or an error. + */ + abstract public function can_activate(); + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Web_Tag.php new file mode 100644 index 000000000..7cc310c37 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Web_Tag.php @@ -0,0 +1,105 @@ +module_slug}_tag_blocked", false ); + } + + /** + * Gets the HTML attributes for a script tag that may potentially require user consent before loading. + * + * @since 1.24.0 + * + * @return string HTML attributes to add if the tag requires consent to load, or an empty string. + */ + public function get_tag_blocked_on_consent_attribute() { + /** + * Filters whether the tag requires user consent before loading. + * + * @since 1.24.0 + * + * @param bool $blocked Whether or not the tag requires user consent to load. Default: false. + */ + if ( apply_filters( "googlesitekit_{$this->module_slug}_tag_block_on_consent", false ) ) { + return ' type="text/plain" data-block-on-consent'; + } + + return ''; + } + + /** + * Gets the array of HTML attributes for a script tag that may potentially require user consent before loading. + * + * @since 1.41.0 + * + * @return array containing HTML attributes to add if the tag requires consent to load, or an empty array. + */ + public function get_tag_blocked_on_consent_attribute_array() { + /** + * Filters whether the tag requires user consent before loading. + * + * @since 1.24.0 + * + * @param bool $blocked Whether or not the tag requires user consent to load. Default: false. + */ + if ( apply_filters( "googlesitekit_{$this->module_slug}_tag_block_on_consent", false ) ) { + return array( + 'type' => 'text/plain', + 'data-block-on-consent' => true, + ); + } + + return array(); + } + + /** + * Fires the "googlesitekit_{module_slug}_init_tag" action to let 3rd party plugins to perform required setup. + * + * @since 1.24.0 + */ + protected function do_init_tag_action() { + /** + * Fires when the tag has been initialized which means that the tag will be rendered in the current request. + * + * @since 1.24.0 + * + * @param string $tag_id Tag ID. + */ + do_action( "googlesitekit_{$this->module_slug}_init_tag", $this->tag_id ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notification.php b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notification.php new file mode 100644 index 000000000..fb756178a --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notification.php @@ -0,0 +1,107 @@ +slug = (string) $slug; + $this->args = array_merge( + array( + 'title' => '', + 'content' => '', + 'cta_url' => '', + 'cta_label' => '', + 'cta_target' => '', + 'learn_more_url' => '', + 'learn_more_label' => '', + 'dismissible' => false, + 'dismiss_label' => __( 'Dismiss', 'google-site-kit' ), + ), + $args + ); + } + + /** + * Gets the notification's slug. + * + * @since 1.4.0 + * + * @return string Unique notification slug. + */ + public function get_slug() { + return $this->slug; + } + + /** + * Prepares the JS representation of the Notification. + * + * @since 1.4.0 + * + * @return array + */ + public function prepare_for_js() { + return array( + 'id' => $this->get_slug(), + 'title' => $this->args['title'], + 'content' => $this->args['content'], + 'ctaURL' => $this->args['cta_url'], + 'ctaLabel' => $this->args['cta_label'], + 'ctaTarget' => $this->args['cta_target'], + 'learnMoreURL' => $this->args['learn_more_url'], + 'learnMoreLabel' => $this->args['learn_more_label'], + 'dismissible' => $this->args['dismissible'], + 'dismissLabel' => $this->args['dismiss_label'], + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notifications.php b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notifications.php new file mode 100644 index 000000000..d25b05ec2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notifications.php @@ -0,0 +1,289 @@ +context = $context; + $this->options = $options ?: new Options( $context ); + $this->google_proxy = new Google_Proxy( $this->context ); + $this->authentication = $authentication ?: new Authentication( $this->context ); + $this->credentials = $this->authentication->credentials(); + } + + /** + * Registers core notifications. + * + * @since 1.4.0 + */ + public function register() { + add_filter( + 'googlesitekit_rest_routes', + function ( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + } + + /** + * Gets related REST routes. + * + * @since 1.4.0 + * + * @return array List of REST_Route objects. + */ + private function get_rest_routes() { + $can_use_notifications = function () { + return current_user_can( Permissions::SETUP ) && $this->credentials->has(); + }; + + return array( + new REST_Route( + 'core/site/data/notifications', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function ( WP_REST_Request $request ) { + $endpoint = add_query_arg( + array( + 'site_id' => $this->credentials->get()['oauth2_client_id'], + ), + $this->google_proxy->url( '/notifications/' ) + ); + + // Return an empty array of notifications if the user isn't using the proxy. + if ( ! $this->credentials->using_proxy() ) { + return new WP_REST_Response( array() ); + } + + $response = wp_remote_get( $endpoint ); // phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.wp_remote_get_wp_remote_get + + if ( is_wp_error( $response ) ) { + return $response; + } + + try { + $response = $this->parse_response( $response ); + } catch ( Exception $e ) { + return new WP_Error( 'exception', $e->getMessage() ); + } + + $data = array_map( + function ( Notification $notification ) { + return $notification->prepare_for_js(); + }, + $this->map_response_to_notifications( $response ) + ); + + return new WP_REST_Response( $data ); + }, + 'permission_callback' => $can_use_notifications, + ), + ) + ), + new REST_Route( + 'core/site/data/mark-notification', + array( + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => function ( WP_REST_Request $request ) { + $data = $request['data']; + + if ( empty( $data['notificationID'] ) ) { + return $this->missing_required_param( 'data.notificationID' ); + } + if ( empty( $data['notificationState'] ) ) { + return $this->missing_required_param( 'data.notificationState' ); + } + + $credentials = $this->credentials->get(); + $response = wp_remote_post( + $this->google_proxy->url( '/notifications/mark/' ), + array( + 'body' => array( + 'site_id' => $credentials['oauth2_client_id'], + 'site_secret' => $credentials['oauth2_client_secret'], + 'notification_id' => $data['notificationID'], + 'notification_state' => $data['notificationState'], + ), + ) + ); + + if ( is_wp_error( $response ) ) { + return $response; + } + + try { + $response = $this->parse_response( $response ); + } catch ( Exception $e ) { + return new WP_Error( 'exception', $e->getMessage() ); + } + + return new WP_REST_Response( + array( + 'success' => isset( $response['success'] ) ? (bool) $response['success'] : false, + ) + ); + }, + 'args' => array( + 'data' => array( + 'required' => true, + 'type' => 'object', + ), + ), + 'permission_callback' => $can_use_notifications, + ), + ) + ), + ); + } + + /** + * Validates and parses the given JSON response into an array. + * + * @since 1.4.0 + * + * @param array $response HTTP response array. + * @return mixed JSON decoded response. + * @throws Exception Throws exception if response cannot be parsed or if an error is returned. + */ + private function parse_response( $response ) { + $body = wp_remote_retrieve_body( $response ); + $decoded = json_decode( $body, true ); + + if ( json_last_error() ) { + throw new Exception( 'Error while decoding response: ' . json_last_error() ); + } + + if ( ! empty( $decoded['error'] ) ) { + throw new Exception( $decoded['error'] ); + } + + return $decoded; + } + + /** + * Maps the response objects into Notification objects. + * + * @since 1.4.0 + * + * @param array $response Array of notification objects from API. + * @return Notification[] Array of Notification objects. + */ + private function map_response_to_notifications( array $response ) { + return array_map( + function ( $notification ) { + return new Notification( + $notification['id'], + array( + 'title' => $notification['title'], + 'content' => $notification['content'], + 'cta_url' => $notification['ctaURL'], + 'cta_label' => $notification['ctaLabel'], + 'cta_target' => $notification['ctaTarget'], + 'learn_more_url' => $notification['learnMoreURL'], + 'learn_more_label' => $notification['learnMoreLabel'], + 'dismissible' => $notification['dismissible'], + 'dismiss_label' => $notification['dismissLabel'], + ) + ); + }, + $response + ); + } + + /** + * Gets a WP_Error instance for the given missing required parameter. + * + * @since 1.4.0 + * + * @param string $param Missing required parameter. + * @return WP_Error + */ + private function missing_required_param( $param ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), $param ), + array( 'status' => 400 ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Permissions/Permissions.php b/wp-content/plugins/google-site-kit/includes/Core/Permissions/Permissions.php new file mode 100644 index 000000000..3c59adab7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Permissions/Permissions.php @@ -0,0 +1,784 @@ +context = $context; + $this->authentication = $authentication; + $this->modules = $modules; + $this->user_options = $user_options; + $this->dismissed_items = $dismissed_items; + + // TODO Remove the temporary assignment of these capabilities when Dashboard Sharing feature flag is removed. + $editor_capability = 'manage_options'; + $admin_network_capability = 'manage_options'; + if ( Feature_Flags::enabled( 'dashboardSharing' ) ) { + $editor_capability = 'edit_posts'; + $admin_network_capability = 'manage_network'; + } + + $this->base_to_core = array( + // By default, only allow administrators to authenticate. + self::AUTHENTICATE => 'manage_options', + + // Allow contributors and up to view their own post's insights. + // TODO change to map to edit_posts when Dashboard Sharing feature flag is removed. + self::VIEW_POSTS_INSIGHTS => $editor_capability, + + // Allow editors and up to view the dashboard and module details. + // TODO change to map to edit_posts when Dashboard Sharing feature flag is removed. + self::VIEW_DASHBOARD => $editor_capability, + self::VIEW_WP_DASHBOARD_WIDGET => $editor_capability, + self::VIEW_ADMIN_BAR_MENU => $editor_capability, + + // Allow administrators and up to manage options and set up the plugin. + self::MANAGE_OPTIONS => 'manage_options', + self::SETUP => 'manage_options', + ); + + $this->meta_to_core = array( + // Allow users that can edit a post to view that post's insights. + self::VIEW_POST_INSIGHTS => 'edit_post', + ); + + $this->meta_to_base = array( + self::VIEW_SPLASH => self::VIEW_DASHBOARD, + self::VIEW_AUTHENTICATED_DASHBOARD => array( self::VIEW_DASHBOARD, self::AUTHENTICATE ), + // Allow users that can generally view posts insights to view a specific post's insights. + self::VIEW_POST_INSIGHTS => self::VIEW_POSTS_INSIGHTS, + ); + // TODO Merge the array below into $this->meta_to_base above when the dashboard sharing feature flag is removed. + if ( Feature_Flags::enabled( 'dashboardSharing' ) ) { + $this->meta_to_base = array_merge( + $this->meta_to_base, + array( + // Allow users that can generally view dashboard to read shared module data. + self::READ_SHARED_MODULE_DATA => self::VIEW_DASHBOARD, + // Admins who can manage options for SK can generally manage module sharing options. + self::MANAGE_MODULE_SHARING_OPTIONS => self::MANAGE_OPTIONS, + self::DELEGATE_MODULE_SHARING_MANAGEMENT => self::MANAGE_OPTIONS, + self::VIEW_SHARED_DASHBOARD => self::VIEW_DASHBOARD, + ) + ); + } + + $this->network_base = array( + // Require network admin access to view the dashboard and module details in network mode. + // TODO change to map to manage_network when Dashboard Sharing feature flag is removed. + self::VIEW_DASHBOARD => $admin_network_capability, + self::VIEW_WP_DASHBOARD_WIDGET => $admin_network_capability, + self::VIEW_ADMIN_BAR_MENU => $admin_network_capability, + + // Require network admin access to manage options and set up the plugin in network mode. + self::MANAGE_OPTIONS => 'manage_network_options', + self::SETUP => 'manage_network_options', + ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.0.0 + */ + public function register() { + add_filter( + 'map_meta_cap', + function( array $caps, $cap, $user_id, $args ) { + return $this->map_meta_capabilities( $caps, $cap, $user_id, $args ); + }, + 10, + 4 + ); + + add_filter( + 'googlesitekit_rest_routes', + function( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $paths ) { + return array_merge( + $paths, + array( + '/' . REST_Routes::REST_ROOT . '/core/user/data/permissions', + ) + ); + } + ); + + // This constant can be set if an alternative mechanism to grant these capabilities is in place. + if ( defined( 'GOOGLESITEKIT_DISABLE_DYNAMIC_CAPABILITIES' ) && GOOGLESITEKIT_DISABLE_DYNAMIC_CAPABILITIES ) { + return; + } + + add_filter( + 'user_has_cap', + function( array $allcaps ) { + return $this->grant_additional_caps( $allcaps ); + } + ); + } + + /** + * Get dashboard sharing meta permissions for current user. + * + * @since 1.70.0 + * + * @return array List meta capabilities as keys and current user permission as value. + */ + public function get_dashboard_sharing_meta_permissions() { + if ( ! Feature_Flags::enabled( 'dashboardSharing' ) ) { + return array(); + } + + $dashboard_sharing_meta_capabilities = self::get_dashboard_sharing_meta_capabilities(); + + $shareable_modules = array_keys( $this->modules->get_shareable_modules() ); + + $dashboard_sharing_meta_permissions = array(); + foreach ( $dashboard_sharing_meta_capabilities as $cap ) { + foreach ( $shareable_modules as $module ) { + $dashboard_sharing_meta_permissions[ "{$cap}::" . wp_json_encode( array( $module ) ) ] = current_user_can( $cap, $module ); + } + } + + return $dashboard_sharing_meta_permissions; + } + + /** + * Check permissions for current user. + * + * @since 1.21.0 + * + * @return array List of base capabilities and meta capabilities as keys and current user permission as value. + */ + public function check_all_for_current_user() { + $permissions = self::get_capabilities(); + + return array_merge( + array_combine( + $permissions, + array_map( 'current_user_can', $permissions ) + ), + self::get_dashboard_sharing_meta_permissions() + ); + } + + /** + * Resolves meta capabilities to their base capabilities. + * + * This method first maps plugin meta capabilities to their base capabilities. In addition, if the meta + * capability should also map to a core meta capability, that mapping is taken care of as well. + * + * If in network mode and the custom base capability requires network access, it is checked that the user + * has that access, and if not, the method bails early causing in a result of false. + * + * It also prevents access to Site Kit's custom capabilities based on additional rules. These additional + * checks ideally could be done within the `user_has_cap` filter. However, the `user_has_cap` filter is + * applied after a check for multi-site admins which could potentially grant the capability without + * executing these additional checks. + * + * @see WP_User::has_cap() To see the order of execution mentioned above. + * + * @since 1.0.0 + * + * @param array $caps List of resolved capabilities. + * @param string $cap Capability checked. + * @param int $user_id Current user ID. + * @param array $args Additional arguments passed to the capability check. + * @return array Filtered value of $caps. + */ + private function map_meta_capabilities( array $caps, $cap, $user_id, $args ) { + // Bail early under these circumstances as we already know for sure the check will result in false. + if ( isset( $this->network_base[ $cap ] ) && $this->context->is_network_mode() && ! is_super_admin( $user_id ) ) { + return array( 'do_not_allow' ); + } + + if ( isset( $this->meta_to_base[ $cap ] ) ) { + $caps = (array) $this->meta_to_base[ $cap ]; + } + + if ( isset( $this->meta_to_core[ $cap ] ) ) { + $required_core_caps = call_user_func_array( + 'map_meta_cap', + array_merge( + array( $this->meta_to_core[ $cap ], $user_id ), + $args + ) + ); + + $caps = array_merge( $caps, $required_core_caps ); + } + + // Special setup and authentication rules. + if ( ( isset( $this->base_to_core[ $cap ] ) || isset( $this->meta_to_core[ $cap ] ) ) ) { + // If setup has not yet been completed, require administrator capabilities for everything. + if ( self::SETUP !== $cap && ! $this->authentication->is_setup_completed() ) { + $caps[] = self::SETUP; + } + + if ( ! in_array( $cap, array( self::AUTHENTICATE, self::SETUP, self::VIEW_DASHBOARD, self::VIEW_POSTS_INSIGHTS ), true ) ) { + // For regular users, require being authenticated. + if ( ! $this->is_user_authenticated( $user_id ) ) { + return array_merge( $caps, array( 'do_not_allow' ) ); + } + // For admin users, also require being verified. + if ( user_can( $user_id, self::SETUP ) && ! $this->is_user_verified( $user_id ) ) { + return array_merge( $caps, array( 'do_not_allow' ) ); + } + + // For all users, require setup to have been completed. + if ( ! $this->authentication->is_setup_completed() ) { + return array_merge( $caps, array( 'do_not_allow' ) ); + } + } + } + + if ( in_array( $cap, self::get_dashboard_sharing_capabilities(), true ) ) { + $caps = array_merge( $caps, $this->check_dashboard_sharing_capability( $cap, $user_id, $args ) ); + } + + switch ( $cap ) { + case self::VIEW_SPLASH: + $caps = array_merge( $caps, $this->check_view_splash_capability( $user_id ) ); + break; + // Intentional fallthrough - viewing the dashboard widget and admin bar menu require + // a user to be authenticated. + case self::VIEW_AUTHENTICATED_DASHBOARD: + case self::VIEW_WP_DASHBOARD_WIDGET: + case self::VIEW_ADMIN_BAR_MENU: + $caps = array_merge( $caps, $this->check_view_authenticated_dashboard_capability( $user_id ) ); + break; + // Intentional fallthrough. + case self::VIEW_DASHBOARD: + case self::VIEW_POSTS_INSIGHTS: + $caps = array_merge( $caps, $this->check_view_dashboard_capability( $user_id ) ); + break; + } + + return $caps; + } + + /** + * Checks a dashboard sharing capability based on rules of dashboard sharing. + * + * @since 1.69.0 + * + * @param string $cap Capability to be checked. + * @param int $user_id User ID of the user the capability is checked for. + * @param array $args Additional arguments passed to check a meta capability. + * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass. + */ + private function check_dashboard_sharing_capability( $cap, $user_id, $args ) { + // TODO remove this check when Dashboard Sharing feature flag is removed. + if ( ! Feature_Flags::enabled( 'dashboardSharing' ) ) { + return array( 'do_not_allow' ); + } + + if ( isset( $args[0] ) ) { + $module_slug = $args[0]; + } + + switch ( $cap ) { + case self::VIEW_SHARED_DASHBOARD: + return $this->check_view_shared_dashboard_capability( $user_id ); + + case self::READ_SHARED_MODULE_DATA: + return $this->check_read_shared_module_data_capability( $user_id, $module_slug ); + + case self::MANAGE_MODULE_SHARING_OPTIONS: + case self::DELEGATE_MODULE_SHARING_MANAGEMENT: + return $this->check_module_sharing_admin_capability( $cap, $user_id, $module_slug ); + + default: + return array(); + } + } + + /** + * Checks if the VIEW_SPLASH capability is allowed for the user. + * + * @since 1.73.0 + * + * @param int $user_id User ID of the user the capability is checked for. + * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass. + */ + private function check_view_splash_capability( $user_id ) { + if ( ! Feature_Flags::enabled( 'dashboardSharing' ) ) { + return array( self::AUTHENTICATE ); + } + + if ( $this->is_shared_dashboard_splash_dismissed( $user_id ) ) { + return array( self::AUTHENTICATE ); + } + + if ( ! $this->user_has_shared_role( $user_id ) ) { + return array( self::AUTHENTICATE ); + } + + return array(); + } + + /** + * Checks if the VIEW_DASHBOARD capability is allowed for the user. + * + * Allows access to the VIEW_DASHBOARD capability if the user can view either + * the authenticated or shared dashboard. + * + * @since 1.73.0 + * + * @param int $user_id User ID of the user the capability is checked for. + * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass. + */ + private function check_view_dashboard_capability( $user_id ) { + $view_authenticated_dashboard = $this->check_view_authenticated_dashboard_capability( $user_id ); + + if ( Feature_Flags::enabled( 'dashboardSharing' ) && in_array( 'do_not_allow', $view_authenticated_dashboard, true ) ) { + return $this->check_view_shared_dashboard_capability( $user_id ); + } + + return $view_authenticated_dashboard; + } + + /** + * Checks if the VIEW_SHARED_DASHBOARD capability should be denied. + * + * Prevents access to the VIEW_SHARED_DASHBOARD capability if a user does not + * have any of the shared roles set for any shareable module or if they have + * not dismissed the dashboard sharing splash screen message. + * + * @since 1.69.0 + * + * @param int $user_id User ID of the user the capability is checked for. + * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass. + */ + private function check_view_shared_dashboard_capability( $user_id ) { + if ( ! $this->user_has_shared_role( $user_id ) ) { + return array( 'do_not_allow' ); + } + + if ( ! $this->is_shared_dashboard_splash_dismissed( $user_id ) ) { + return array( 'do_not_allow' ); + } + + return array(); + } + + /** + * Checks if the VIEW_AUTHENTICATED_DASHBOARD capability is allowed for the user. + * + * Allows access to the VIEW_AUTHENTICATED_DASHBOARD capability if the user is authenticated. + * + * @since 1.73.0 + * + * @param int $user_id User ID of the user the capability is checked for. + * @return array Array with a 'do_not_allow' element if checks fail, otherise returns AUTHENTICATE capability. + */ + private function check_view_authenticated_dashboard_capability( $user_id ) { + if ( + $this->is_user_authenticated( $user_id ) + && $this->is_user_verified( $user_id ) + && $this->authentication->is_setup_completed() + ) { + return array( self::AUTHENTICATE ); + } + return array( 'do_not_allow' ); + } + + /** + * Checks if the READ_SHARED_MODULE_DATA capability should be denied. + * + * Prevents access to the READ_SHARED_MODULE_DATA capability if a user does not + * have the shared roles set for the given module slug. + * + * @since 1.69.0 + * + * @param int $user_id User ID of the user the capability is checked for. + * @param string $module_slug Module for which the meta capability is checked for. + * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass. + */ + private function check_read_shared_module_data_capability( $user_id, $module_slug ) { + if ( ! $this->user_has_shared_role_for_module( $user_id, $module_slug ) ) { + return array( 'do_not_allow' ); + } + + return array(); + } + + /** + * Checks if the MANAGE_MODULE_SHARING_OPTIONS or the DELEGATE_MODULE_SHARING_MANAGEMENT + * capability should be denied. + * + * Prevents access to MANAGE_MODULE_SHARING_OPTIONS or the DELEGATE_MODULE_SHARING_MANAGEMENT + * capability if a user is not an authenticated admin. + * + * Furthermore, it prevents access for these capabilities if the user is not the owner + * of the given module slug. This check is skipped for MANAGE_MODULE_SHARING_OPTIONS if the + * module settings allow all admins to manage sharing options for that module. + * + * @since 1.69.0 + * + * @param string $cap Capability to be checked. + * @param int $user_id User ID of the user the capability is checked for. + * @param string $module_slug Module for which the meta capability is checked for. + * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass. + */ + private function check_module_sharing_admin_capability( $cap, $user_id, $module_slug ) { + $module_sharing_settings = $this->modules->get_module_sharing_settings(); + $sharing_settings = $module_sharing_settings->get(); + + if ( ! $this->is_user_authenticated( $user_id ) ) { + return array( 'do_not_allow' ); + } + + if ( self::MANAGE_MODULE_SHARING_OPTIONS === $cap && + isset( $sharing_settings[ $module_slug ]['management'] ) && + 'all_admins' === $sharing_settings[ $module_slug ]['management'] + ) { + return array(); + } + + try { + $module = $this->modules->get_module( $module_slug ); + if ( ! ( $module instanceof Module_With_Owner ) ) { + return array( 'do_not_allow' ); + } + if ( $module->get_owner_id() !== $user_id ) { + return array( 'do_not_allow' ); + } + } catch ( Exception $e ) { + return array( 'do_not_allow' ); + } + + return array(); + } + + /** + * Checks if the given user has a role in the list of shared roles. + * + * @since 1.73.0 + * + * @param int $user_id User ID. + * @param string[]|null $shared_roles Optional. List of shared role IDs to check against the user's. Defaults to all shared module roles. + * @return bool + */ + private function user_has_shared_role( $user_id, array $shared_roles = null ) { + if ( ! is_array( $shared_roles ) ) { + $shared_roles = $this->modules->get_module_sharing_settings()->get_all_shared_roles(); + } + + $shared_user_roles = array_intersect( $shared_roles, ( new WP_User( $user_id ) )->roles ); + + return ! empty( $shared_user_roles ); + } + + /** + * Checks if the given user has a role in the list of shared roles for the given module. + * + * @since 1.73.0 + * + * @param int $user_id User ID. + * @param string $module Module slug. + * @return bool + */ + private function user_has_shared_role_for_module( $user_id, $module ) { + $settings = $this->modules->get_module_sharing_settings()->get(); + + if ( empty( $settings[ $module ]['sharedRoles'] ) ) { + return false; + } + + return $this->user_has_shared_role( $user_id, $settings[ $module ]['sharedRoles'] ); + } + + /** + * Checks if a user is authenticated in Site Kit. + * + * @since 1.69.0 + * + * @param int $user_id User ID of the user to be checked. + * @return bool True if the user is authenticated, false if not. + */ + public function is_user_authenticated( $user_id ) { + $restore_user = $this->user_options->switch_user( $user_id ); + $is_user_authenticated = $this->authentication->is_authenticated(); + $restore_user(); + return $is_user_authenticated; + } + + /** + * Checks if a user is verified in Site Kit. + * + * @since 1.69.0 + * + * @param int $user_id User ID of the user to be checked. + * @return bool True if the user is verified, false if not. + */ + public function is_user_verified( $user_id ) { + $restore_user = $this->user_options->switch_user( $user_id ); + $is_user_verified = $this->authentication->verification()->has(); + $restore_user(); + return $is_user_verified; + } + + /** + * Checks if a user has dimissed the shared dashboard splash screen message. + * + * @since 1.69.0 + * + * @param int $user_id User ID of the user to be checked. + * @return bool True if the user has dismissed the splash message, false if not. + */ + private function is_shared_dashboard_splash_dismissed( $user_id ) { + $restore_user = $this->user_options->switch_user( $user_id ); + $is_splash_dismissed = $this->dismissed_items->is_dismissed( 'shared_dashboard_splash' ); + $restore_user(); + return $is_splash_dismissed; + } + + /** + * Grants custom capabilities on-the-fly, based on core capabilities. + * + * If you want to instead set up your own custom role or mechanism to grant these capabilities, you can set a + * constant flag `GOOGLESITEKIT_DISABLE_DYNAMIC_CAPABILITIES` to ensure this function is not hooked in. + * + * @since 1.0.0 + * + * @param array $allcaps Associative array of $capability => $grant pairs. + * @return array Filtered value of $allcaps. + */ + private function grant_additional_caps( array $allcaps ) { + foreach ( $this->base_to_core as $custom_cap => $core_cap ) { + if ( isset( $allcaps[ $core_cap ] ) ) { + $allcaps[ $custom_cap ] = $allcaps[ $core_cap ]; + } + } + + return $allcaps; + } + + /** + * Gets related REST routes. + * + * @since 1.82.0 + * + * @return array List of REST_Route objects. + */ + private function get_rest_routes() { + return array( + new REST_Route( + 'core/user/data/permissions', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function() { + return new WP_REST_Response( $this->check_all_for_current_user() ); + }, + 'permission_callback' => function() { + return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD ); + }, + ), + ) + ), + ); + } + + /** + * Gets all the base capabilities used in Google Site Kit. + * + * @since 1.31.0 + * + * @return array + */ + public static function get_capabilities() { + $capabilities = array( + self::AUTHENTICATE, + self::SETUP, + self::VIEW_POSTS_INSIGHTS, + self::VIEW_DASHBOARD, + self::MANAGE_OPTIONS, + self::VIEW_SPLASH, + self::VIEW_AUTHENTICATED_DASHBOARD, + self::VIEW_WP_DASHBOARD_WIDGET, + self::VIEW_ADMIN_BAR_MENU, + ); + + if ( Feature_Flags::enabled( 'dashboardSharing' ) ) { + $capabilities[] = self::VIEW_SHARED_DASHBOARD; + } + + return $capabilities; + } + + /** + * Gets all the capabilities specifically added for dashboard sharing. + * + * @since 1.69.0 + * + * @return array List of capabilities specific to dashboard sharing. + */ + public static function get_dashboard_sharing_capabilities() { + return array( + self::VIEW_SHARED_DASHBOARD, + self::READ_SHARED_MODULE_DATA, + self::MANAGE_MODULE_SHARING_OPTIONS, + self::DELEGATE_MODULE_SHARING_MANAGEMENT, + ); + } + + /** + * Gets all the meta capabilities specifically added for dashboard sharing. + * + * @since 1.70.0 + * + * @return array List of meta capabilities specific to dashboard sharing. + */ + public static function get_dashboard_sharing_meta_capabilities() { + return array( + self::READ_SHARED_MODULE_DATA, + self::MANAGE_MODULE_SHARING_OPTIONS, + self::DELEGATE_MODULE_SHARING_MANAGEMENT, + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/Data_Request.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Data_Request.php new file mode 100644 index 000000000..4e8746a95 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Data_Request.php @@ -0,0 +1,161 @@ +method = strtoupper( $method ); + $this->type = $type; + $this->identifier = $identifier; + $this->datapoint = $datapoint; + $this->data = $data instanceof self ? $data->data : (array) $data; + $this->key = $key; + } + + /** + * Gets the accessed property by the given name. + * + * @param string $name Property name. + * + * @return mixed + */ + public function __get( $name ) { + return isset( $this->$name ) ? $this->$name : null; + } + + /** + * Checks whether or not the given magic property is set. + * + * @param string $name Property name. + * + * @return bool + */ + public function __isset( $name ) { + return isset( $this->$name ); + } + + /** + * Checks whether the given key exists. + * + * @param string|int $key Key to check. + * + * @return bool + */ + public function offsetExists( $key ) { + return array_key_exists( $key, $this->data ); + } + + /** + * Gets the value at the given key. + * + * @param string|int $key Key to return the value for. + * + * @return mixed + */ + public function offsetGet( $key ) { + if ( $this->offsetExists( $key ) ) { + return $this->data[ $key ]; + } + + return null; + } + + /** + * Sets the given key to the given value. + * + * @param string|int $key Key to set the value for. + * @param mixed $value New value for the given key. + */ + public function offsetSet( $key, $value ) { + // Data is immutable. + } + + /** + * Unsets the given key. + * + * @param string|int $key Key to unset. + */ + public function offsetUnset( $key ) { + // Data is immutable. + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/Exception/Invalid_Datapoint_Exception.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Exception/Invalid_Datapoint_Exception.php new file mode 100644 index 000000000..ca53e8315 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Exception/Invalid_Datapoint_Exception.php @@ -0,0 +1,44 @@ + 400, // Bad request. + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Route.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Route.php new file mode 100644 index 000000000..4fe635104 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Route.php @@ -0,0 +1,171 @@ +uri = trim( $uri, '/' ); + + $this->args = $args; + + if ( isset( $this->args['args'] ) ) { + $this->args['args'] = $this->parse_param_args( $this->args['args'] ); + } + + // In case there are string arguments, this is only a single endpoint and needs to be turned into a list. + if ( ! wp_is_numeric_array( $endpoints ) ) { + $endpoints = array( $endpoints ); + } + + $endpoint_defaults = array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => null, + 'args' => array(), + ); + + foreach ( $endpoints as $endpoint ) { + $endpoint = wp_parse_args( $endpoint, $endpoint_defaults ); + + $endpoint['args'] = $this->parse_param_args( $endpoint['args'] ); + if ( ! empty( $this->args['args'] ) ) { + $endpoint['args'] = array_merge( $this->args['args'], $endpoint['args'] ); + } + + $this->args[] = $endpoint; + } + } + + /** + * Registers the REST route. + * + * @since 1.16.0 + */ + public function register() { + register_rest_route( REST_Routes::REST_ROOT, $this->get_uri(), $this->get_args() ); + } + + /** + * Gets the route URI. + * + * @since 1.0.0 + * + * @return string Unique route URI. + */ + public function get_uri() { + return $this->uri; + } + + /** + * Gets the route arguments, including endpoints and schema. + * + * @since 1.0.0 + * + * @return array Route arguments. + */ + public function get_args() { + return $this->args; + } + + /** + * Parses all supported request arguments and their data. + * + * @since 1.0.0 + * + * @param array $args Associative array of $arg => $data pairs. + * @return array Parsed arguments. + */ + protected function parse_param_args( array $args ) { + return array_map( array( $this, 'parse_param_arg' ), $args ); + } + + /** + * Parses data for a supported request argument. + * + * @since 1.0.0 + * + * @param array $data { + * Request argument data. + * + * @type string $type Data type of the argument. Default 'string'. + * @type string $description Public description of the argument. Default empty string. + * @†ype callable $validate_callback Callback to validate the argument. Default + * {@see rest_validate_rest_arg()}. + * @type callable $sanitize_callback Callback to sanitize the argument. Default + * {@see rest_sanitize_rest_arg()}. + * @type bool $required Whether the argument is required. Default false. + * @type mixed $default Default value for the argument, if any. Default none. + * @type array $enum Allowlist of possible values to validate against. Default none. + * @type array $items Only if $type is 'array': Similar specification that applies to each item. + * @type array $properties Only if $type is 'object'. Similar specification per property. + * } + * @return array Parsed data. + */ + protected function parse_param_arg( array $data ) { + return wp_parse_args( + $data, + array( + 'type' => 'string', + 'description' => '', + 'validate_callback' => 'rest_validate_request_arg', + 'sanitize_callback' => 'rest_sanitize_request_arg', + 'required' => false, + 'default' => null, + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Routes.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Routes.php new file mode 100644 index 000000000..2b8882646 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Routes.php @@ -0,0 +1,228 @@ +context = $context; + + if ( ! $authentication ) { + $authentication = new Authentication( $this->context ); + } + $this->authentication = $authentication; + + if ( ! $modules ) { + $modules = new Modules( $this->context, null, null, $this->authentication ); + } + $this->modules = $modules; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.0.0 + */ + public function register() { + add_action( + 'rest_api_init', + function() { + $this->register_routes(); + } + ); + + add_filter( + 'do_parse_request', + function( $do_parse_request, $wp ) { + add_filter( + 'query_vars', + function( $vars ) use ( $wp ) { + // Unsets standard public query vars to escape conflicts between WordPress core + // and Google Site Kit APIs which happen when WordPress incorrectly parses request + // arguments. + + $unset_vars = ( $wp->request && stripos( $wp->request, trailingslashit( rest_get_url_prefix() ) . self::REST_ROOT ) !== false ) // Check regular permalinks. + || ( empty( $wp->request ) && stripos( $this->context->input()->filter( INPUT_GET, 'rest_route' ), self::REST_ROOT ) !== false ); // Check plain permalinks. + + if ( $unset_vars ) { + // List of variable names to remove from public query variables list. + return array_values( + array_diff( + $vars, + array( + 'orderby', + ) + ) + ); + } + + return $vars; + } + ); + return $do_parse_request; + }, + 10, + 2 + ); + } + + /** + * Registers all REST routes. + * + * @since 1.0.0 + * @since 1.16.0 Reworked to use REST_Route::register method to register a route. + */ + private function register_routes() { + $routes = $this->get_routes(); + foreach ( $routes as $route ) { + $route->register(); + } + } + + /** + * Gets available REST routes. + * + * @since 1.0.0 + * @since 1.3.0 Moved most routes into individual classes and introduced {@see 'googlesitekit_rest_routes'} filter. + * + * @return array List of REST_Route instances. + */ + private function get_routes() { + + $can_authenticate = function() { + return current_user_can( Permissions::AUTHENTICATE ); + }; + + $routes = array( + new REST_Route( + 'core/user/data/user-input-settings', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => function( WP_REST_Request $request ) { + $user_input_settings = new User_Input_Settings( $this->context, $this->authentication ); + return rest_ensure_response( $user_input_settings->get_settings() ); + }, + 'permission_callback' => $can_authenticate, + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => function( WP_REST_Request $request ) { + $user_input_settings = new User_Input_Settings( $this->context, $this->authentication ); + $data = $request->get_param( 'data' ); + + if ( ! isset( $data['settings'] ) || ! is_array( $data['settings'] ) ) { + return new WP_Error( + 'rest_missing_callback_param', + __( 'Missing settings data.', 'google-site-kit' ), + array( 'status' => 400 ) + ); + } + + return rest_ensure_response( + $user_input_settings->set_settings( + $data['settings'] + ) + ); + }, + 'permission_callback' => $can_authenticate, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'settings' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'purpose' => array( + 'type' => 'array', + 'items' => array( 'type' => 'string' ), + ), + 'postFrequency' => array( + 'type' => 'array', + 'items' => array( 'type' => 'string' ), + ), + 'goals' => array( + 'type' => 'array', + 'items' => array( 'type' => 'string' ), + ), + ), + ), + ), + ), + ), + ), + ) + ), + ); + + /** + * Filters the list of available REST routes. + * + * @since 1.3.0 + * + * @param array $routes List of REST_Route objects. + */ + return apply_filters( 'googlesitekit_rest_routes', $routes ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Cache.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Cache.php new file mode 100644 index 000000000..e63ee816b --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Cache.php @@ -0,0 +1,137 @@ +global_cache_keys = get_option( self::$global_cache_keys_key ) ?: array(); + } + + /** + * Helper function to get the cache data. + */ + public function get_current_cache_data() { + + $cache_data = array(); + + // Add the global cache data. + $keys = $this->get_global_cache_keys(); + foreach ( $keys as $key ) { + + // This only retrieves fresh data because transients expire. + $cache = get_transient( 'googlesitekit_' . $key ); + + if ( $cache ) { + $cache_data[ $key ] = $cache; + } else { + + // Remove the expired key from the global cache. + $this->remove_global_cache_key( $key ); + } + } + return $cache_data; + } + + /** + * Remove a cache key to the global record of cache keys. + * + * @param string $key The key to add. + */ + private function remove_global_cache_key( $key ) { + $key_index = array_search( $key, $this->global_cache_keys, true ); + + if ( $key_index ) { + unset( $this->global_cache_keys[ $key_index ] ); + update_option( self::$global_cache_keys_key, $this->global_cache_keys, false ); + } + } + + /** + * Add a cache key to the global record of cache keys. + * + * @param string $key The key to add. + */ + private function add_global_cache_key( $key ) { + // Only add the key if it isn't already present. + if ( ! in_array( $key, $this->global_cache_keys, true ) ) { + $this->global_cache_keys[] = $key; + update_option( self::$global_cache_keys_key, $this->global_cache_keys, false ); + } + } + + /** + * Retrieve the global record of cache keys. + * + * @return array The array of cache keys used on the site. + */ + private function get_global_cache_keys() { + return $this->global_cache_keys; + } + + /** + * Cache some data. + * + * @param Object $key The original data key. + * @param Object $data The data to cache. + */ + public function set_cache_data( $key, $data ) { + set_transient( 'googlesitekit_' . $key, $data, HOUR_IN_SECONDS ); + $this->add_global_cache_key( $key ); + } + + /** + * Cache the results of a batch operation. + * + * @param array $batch_requests The original requests. + * @param array $results The results to cache. + */ + public function cache_batch_results( $batch_requests, $results ) { + $request_keys = wp_list_pluck( $batch_requests, 'key' ); + + foreach ( $results as $key => $result ) { + if ( $result instanceof \Exception || $result instanceof Google_Service_Exception ) { + continue; + } + $key = str_replace( 'response-', '', $key ); + if ( in_array( $key, $request_keys, true ) ) { + $this->set_cache_data( $key, $result ); + } + } + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Data_Encryption.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Data_Encryption.php new file mode 100644 index 000000000..5e5fad987 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Data_Encryption.php @@ -0,0 +1,145 @@ +key = $this->get_default_key(); + $this->salt = $this->get_default_salt(); + } + + /** + * Encrypts a value. + * + * If a user-based key is set, that key is used. Otherwise the default key is used. + * + * @since 1.0.0 + * + * @param string $value Value to encrypt. + * @return string|bool Encrypted value, or false on failure. + */ + public function encrypt( $value ) { + if ( ! extension_loaded( 'openssl' ) ) { + return $value; + } + + $method = 'aes-256-ctr'; + $ivlen = openssl_cipher_iv_length( $method ); + $iv = openssl_random_pseudo_bytes( $ivlen ); + + $raw_value = openssl_encrypt( $value . $this->salt, $method, $this->key, 0, $iv ); + if ( ! $raw_value ) { + return false; + } + + return base64_encode( $iv . $raw_value ); + } + + /** + * Decrypts a value. + * + * If a user-based key is set, that key is used. Otherwise the default key is used. + * + * @since 1.0.0 + * + * @param string $raw_value Value to decrypt. + * @return string|bool Decrypted value, or false on failure. + */ + public function decrypt( $raw_value ) { + if ( ! extension_loaded( 'openssl' ) ) { + return $raw_value; + } + + $raw_value = base64_decode( $raw_value, true ); + + $method = 'aes-256-ctr'; + $ivlen = openssl_cipher_iv_length( $method ); + $iv = substr( $raw_value, 0, $ivlen ); + + $raw_value = substr( $raw_value, $ivlen ); + + $value = openssl_decrypt( $raw_value, $method, $this->key, 0, $iv ); + if ( ! $value || substr( $value, - strlen( $this->salt ) ) !== $this->salt ) { + return false; + } + + return substr( $value, 0, - strlen( $this->salt ) ); + } + + /** + * Gets the default encryption key to use. + * + * @since 1.0.0 + * + * @return string Default (not user-based) encryption key. + */ + private function get_default_key() { + if ( defined( 'GOOGLESITEKIT_ENCRYPTION_KEY' ) && '' !== GOOGLESITEKIT_ENCRYPTION_KEY ) { + return GOOGLESITEKIT_ENCRYPTION_KEY; + } + + if ( defined( 'LOGGED_IN_KEY' ) && '' !== LOGGED_IN_KEY ) { + return LOGGED_IN_KEY; + } + + // If this is reached, you're either not on a live site or have a serious security issue. + return 'das-ist-kein-geheimer-schluessel'; + } + + /** + * Gets the default encryption salt to use. + * + * @since 1.0.0 + * + * @return string Encryption salt. + */ + private function get_default_salt() { + if ( defined( 'GOOGLESITEKIT_ENCRYPTION_SALT' ) && '' !== GOOGLESITEKIT_ENCRYPTION_SALT ) { + return GOOGLESITEKIT_ENCRYPTION_SALT; + } + + if ( defined( 'LOGGED_IN_SALT' ) && '' !== LOGGED_IN_SALT ) { + return LOGGED_IN_SALT; + } + + // If this is reached, you're either not on a live site or have a serious security issue. + return 'das-ist-kein-geheimes-salz'; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_Options.php new file mode 100644 index 000000000..9cc1a7f94 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_Options.php @@ -0,0 +1,115 @@ +encryption = new Data_Encryption(); + $this->options = $options; + } + + /** + * Checks whether or not a value is set for the given option. + * + * @since 1.3.0 + * + * @param string $option Option name. + * @return bool True if value set, false otherwise. + */ + public function has( $option ) { + return $this->options->has( $option ); + } + + /** + * Gets the value of the given option. + * + * @since 1.0.0 + * + * @param string $option Option name. + * @return mixed Value set for the option, or false if not set. + */ + public function get( $option ) { + $raw_value = $this->options->get( $option ); + + // If there is no value stored, return the default which will not be encrypted. + if ( ! $this->options->has( $option ) ) { + return $raw_value; + } + + $data = $this->encryption->decrypt( $raw_value ); + + return maybe_unserialize( $data ); + } + + /** + * Sets the value for a option. + * + * @since 1.0.0 + * + * @param string $option Option name. + * @param mixed $value Option value. Must be serializable if non-scalar. + * @return bool True on success, false on failure. + */ + public function set( $option, $value ) { + if ( ! is_scalar( $value ) ) { + $value = maybe_serialize( $value ); + } + $raw_value = $this->encryption->encrypt( $value ); + if ( ! $raw_value ) { + return false; + } + + return $this->options->set( $option, $raw_value ); + } + + /** + * Deletes the given option. + * + * @since 1.0.0 + * + * @param string $option Option name. + * @return bool True on success, false on failure. + */ + public function delete( $option ) { + return $this->options->delete( $option ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_User_Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_User_Options.php new file mode 100644 index 000000000..183ccf534 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_User_Options.php @@ -0,0 +1,135 @@ +encryption = new Data_Encryption(); + $this->user_options = $user_options; + } + + /** + * Gets the value of the given user option. + * + * @since 1.0.0 + * + * @param string $option User option name. + * @return mixed Value set for the user option, or false if not set. + */ + public function get( $option ) { + $raw_value = $this->user_options->get( $option ); + if ( ! $raw_value ) { + return false; + } + + $data = $this->encryption->decrypt( $raw_value ); + + return maybe_unserialize( $data ); + } + + /** + * Sets the value for a user option. + * + * @since 1.0.0 + * + * @param string $option User option name. + * @param mixed $value User option value. Must be serializable if non-scalar. + * @return bool True on success, false on failure. + */ + public function set( $option, $value ) { + if ( ! is_scalar( $value ) ) { + $value = maybe_serialize( $value ); + } + $raw_value = $this->encryption->encrypt( $value ); + if ( ! $raw_value ) { + return false; + } + + return $this->user_options->set( $option, $raw_value ); + } + + /** + * Deletes the given user option. + * + * @since 1.0.0 + * + * @param string $option User option name. + * @return bool True on success, false on failure. + */ + public function delete( $option ) { + return $this->user_options->delete( $option ); + } + + /** + * Gets the underlying meta key for the given option. + * + * @since 1.4.0 + * + * @param string $option Option name. + * @return string Meta key name. + */ + public function get_meta_key( $option ) { + return $this->user_options->get_meta_key( $option ); + } + + /** + * Gets the ID of the user that options are controlled for. + * + * @since 1.4.0 + * + * @return int User ID. + */ + public function get_user_id() { + return $this->user_options->get_user_id(); + } + + /** + * Switches the user that options are controlled for to the one with the given ID. + * + * @since 1.4.0 + * + * @param int $user_id User ID. + */ + public function switch_user( $user_id ) { + $this->user_options->switch_user( $user_id ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options.php new file mode 100644 index 000000000..7e7888543 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options.php @@ -0,0 +1,116 @@ +context = $context; + } + + /** + * Checks whether or not a value is set for the given option. + * + * @since 1.3.0 + * + * @param string $option Option name. + * @return bool True if value set, false otherwise. + */ + public function has( $option ) { + // Call without getting the value to ensure 'notoptions' cache is fresh for the option. + $this->get( $option ); + + if ( $this->context->is_network_mode() ) { + $network_id = get_current_network_id(); + $notoptions = wp_cache_get( "$network_id:notoptions", 'site-options' ); + } else { + $notoptions = wp_cache_get( 'notoptions', 'options' ); + } + + return ! isset( $notoptions[ $option ] ); + } + + /** + * Gets the value of the given option. + * + * @since 1.0.0 + * + * @param string $option Option name. + * @return mixed Value set for the option, or false if not set. + */ + public function get( $option ) { + if ( $this->context->is_network_mode() ) { + return get_network_option( null, $option ); + } + + return get_option( $option ); + } + + /** + * Sets the value for a option. + * + * @since 1.0.0 + * + * @param string $option Option name. + * @param mixed $value Option value. Must be serializable if non-scalar. + * @return bool True on success, false on failure. + */ + public function set( $option, $value ) { + if ( $this->context->is_network_mode() ) { + return update_network_option( null, $option, $value ); + } + + return update_option( $option, $value ); + } + + /** + * Deletes the given option. + * + * @since 1.0.0 + * + * @param string $option Option name. + * @return bool True on success, false on failure. + */ + public function delete( $option ) { + if ( $this->context->is_network_mode() ) { + return delete_network_option( null, $option ); + } + + return delete_option( $option ); + } +} + diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Options_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options_Interface.php new file mode 100644 index 000000000..c1965754c --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options_Interface.php @@ -0,0 +1,62 @@ +post_meta = $post_meta; + } + + /** + * Registers the post setting in WordPress. + * + * @since 1.33.0 + */ + public function register() { + register_meta( + 'post', + static::META_KEY, + array( + 'type' => $this->get_type(), + 'sanitize_callback' => $this->get_sanitize_callback(), + 'single' => true, + 'show_in_rest' => $this->get_show_in_rest(), + ) + ); + } + + /** + * Gets the expected value type. + * + * Returns 'string' by default for consistency with register_meta. + * Override in a sub-class if different. + * + * Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'. + * + * @since 1.33.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'string'; + } + + /** + * Gets the default value. + * + * Returns an empty string by default. + * Override in a sub-class if different. + * + * @since 1.33.0 + * + * @return mixed The default value. + */ + protected function get_default() { + return ''; + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * For use internally with register_meta. + * Returns `null` for consistency with the default in register_meta. + * Override in a sub-class. + * + * @since 1.33.0 + * + * @return callable|null Sanitize callback function. + */ + protected function get_sanitize_callback() { + return null; + } + + /** + * Gets the `show_in_rest` value for this postmeta setting value. + * + * @since 1.37.0 + * + * @return bool|Array Any valid value for the `show_in_rest` + */ + protected function get_show_in_rest() { + return false; + } + + /** + * Checks whether a post meta exists or not. + * + * @since 1.33.0 + * + * @param int $post_id Post ID. + * @return bool True if the meta key exists, otherwise false. + */ + public function has( $post_id ) { + return metadata_exists( 'post', $post_id, static::META_KEY ); + } + + /** + * Gets the value of the setting. + * + * @since 1.33.0 + * + * @param int $post_id Post ID. + * @return mixed Value set for the setting, or default if not set. + */ + public function get( $post_id ) { + if ( ! $this->has( $post_id ) ) { + return $this->get_default(); + } + + return $this->post_meta->get( $post_id, static::META_KEY, true ); + } + + /** + * Updates the post setting for the given post ID. + * + * @since 1.33.0 + * + * @param int $post_id Post ID. + * @param mixed $value Metadata value. + * @return bool TRUE on success, otherwise FALSE. + */ + public function set( $post_id, $value ) { + return $this->post_meta->update( $post_id, static::META_KEY, $value ); + } + + /** + * Deletes the post setting for the given post ID. + * + * @since 1.33.0 + * + * @param int $post_id Post ID. + * @return bool TRUE on success, otherwise FALSE. + */ + public function delete( $post_id ) { + return $this->post_meta->delete( $post_id, static::META_KEY ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting.php new file mode 100644 index 000000000..5a125c829 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting.php @@ -0,0 +1,154 @@ +options = $options; + } + + /** + * Registers the setting in WordPress. + * + * @since 1.2.0 + */ + public function register() { + register_setting( + static::OPTION, + static::OPTION, + array( + 'type' => $this->get_type(), + 'sanitize_callback' => $this->get_sanitize_callback(), + 'default' => $this->get_default(), + ) + ); + } + + /** + * Checks whether or not the option is set with a valid value. + * + * @since 1.2.0 + * @since 1.3.0 Now relies on {@see Options_Interface::has()}. + * + * @return bool True on success, false on failure. + */ + public function has() { + return $this->options->has( static::OPTION ); + } + + /** + * Gets the value of the setting. + * + * @since 1.2.0 + * + * @return mixed Value set for the option, or registered default if not set. + */ + public function get() { + return $this->options->get( static::OPTION ); + } + + /** + * Sets the value of the setting with the given value. + * + * @since 1.2.0 + * + * @param mixed $value Setting value. Must be serializable if non-scalar. + * + * @return bool True on success, false on failure. + */ + public function set( $value ) { + return $this->options->set( static::OPTION, $value ); + } + + /** + * Deletes the setting. + * + * @since 1.2.0 + * + * @return bool True on success, false on failure. + */ + public function delete() { + return $this->options->delete( static::OPTION ); + } + + /** + * Gets the expected value type. + * + * Returns 'string' by default for consistency with register_setting. + * Override in a sub-class if different. + * + * @since 1.2.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'string'; + } + + /** + * Gets the default value. + * + * For use with register_setting and fetching the default directly. + * Returns false by default for consistency with get_option. + * Override in a sub-class if different. + * + * @since 1.2.0 + * + * @return mixed The default value. + */ + protected function get_default() { + return false; + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * For use internally with register_setting. + * Returns `null` for consistency with the default in register_setting. + * Override in a sub-class. + * + * @since 1.2.0 + * + * @return callable|null + */ + protected function get_sanitize_callback() { + return null; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Legacy_Keys_Trait.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Legacy_Keys_Trait.php new file mode 100644 index 000000000..10f816d37 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Legacy_Keys_Trait.php @@ -0,0 +1,44 @@ +migrate_legacy_keys( $option, $legacy_key_map ); + } + return $option; + }, + 0 + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Owned_Keys_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Owned_Keys_Interface.php new file mode 100644 index 000000000..30f88606e --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Owned_Keys_Interface.php @@ -0,0 +1,31 @@ +get_owned_keys(); + + add_action( + 'add_option_' . static::OPTION, + function ( $option, $value ) use ( $keys ) { + if ( is_array( $value ) && count( array_intersect( array_keys( $value ), $keys ) ) > 0 && current_user_can( Permissions::MANAGE_OPTIONS ) ) { + $this->merge( array( 'ownerID' => get_current_user_id() ) ); + } + }, + 10, + 2 + ); + + add_filter( + 'pre_update_option_' . static::OPTION, + function( $value, $old_value ) use ( $keys ) { + if ( is_array( $value ) && is_array( $old_value ) ) { + foreach ( $keys as $key ) { + if ( isset( $value[ $key ], $old_value[ $key ] ) && $value[ $key ] !== $old_value[ $key ] && current_user_can( Permissions::MANAGE_OPTIONS ) ) { + $value['ownerID'] = get_current_user_id(); + break; + } + } + } + + return $value; + }, + 10, + 2 + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Transients.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Transients.php new file mode 100644 index 000000000..e20040a0b --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Transients.php @@ -0,0 +1,95 @@ +context = $context; + } + + /** + * Gets the value of the given transient. + * + * @since 1.0.0 + * + * @param string $transient Transient name. + * @return mixed Value set for the transient, or false if not set. + */ + public function get( $transient ) { + if ( $this->context->is_network_mode() ) { + return get_site_transient( $transient ); + } + + return get_transient( $transient ); + } + + /** + * Sets the value for a transient. + * + * @since 1.0.0 + * + * @param string $transient Transient name. + * @param mixed $value Transient value. Must be serializable if non-scalar. + * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration). + * @return bool True on success, false on failure. + */ + public function set( $transient, $value, $expiration = 0 ) { + if ( $this->context->is_network_mode() ) { + return set_site_transient( $transient, $value, $expiration ); + } + + return set_transient( $transient, $value, $expiration ); + } + + /** + * Deletes the given transient. + * + * @since 1.0.0 + * + * @param string $transient Transient name. + * @return bool True on success, false on failure. + */ + public function delete( $transient ) { + if ( $this->context->is_network_mode() ) { + return delete_site_transient( $transient ); + } + + return delete_transient( $transient ); + } +} + diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Aware_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Aware_Interface.php new file mode 100644 index 000000000..d19686b74 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Aware_Interface.php @@ -0,0 +1,41 @@ +user_id; + } + + /** + * Switches the current user to the one with the given ID. + * + * This method exists to exchange the user that is set as the current user in WordPress on the fly. In most cases + * it is preferred to create a new instance of the class when dealing with multiple users. This method should only + * be applied when the entire chain of class main instances need to be updated to rely on another user, i.e. when + * the current WordPress user has changed. + * + * @since 1.18.0 + * + * @param int $user_id User ID. + * @return callable A closure to switch back to the original user. + */ + public function switch_user( $user_id ) { + $prev_user_id = $this->user_id; + + $this->user_id = (int) $user_id; + + return function() use ( $prev_user_id ) { + $this->user_id = $prev_user_id; + }; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options.php new file mode 100644 index 000000000..60677fa82 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options.php @@ -0,0 +1,140 @@ +context = $context; + + if ( empty( $user_id ) ) { + $user_id = get_current_user_id(); + } + $this->user_id = (int) $user_id; + } + + /** + * Gets the value of the given user option. + * + * @since 1.0.0 + * + * @param string $option User option name. + * @return mixed Value set for the user option, or false if not set. + */ + public function get( $option ) { + $user_id = $this->get_user_id(); + if ( ! $user_id ) { + return false; + } + + if ( $this->context->is_network_mode() ) { + $value = get_user_meta( $user_id, $option ); + if ( empty( $value ) ) { + return false; + } + + return $value[0]; + } + + return get_user_option( $option, $user_id ); + } + + /** + * Sets the value for a user option. + * + * @since 1.0.0 + * + * @param string $option User option name. + * @param mixed $value User option value. Must be serializable if non-scalar. + * @return bool True on success, false on failure. + */ + public function set( $option, $value ) { + $user_id = $this->get_user_id(); + if ( ! $user_id ) { + return false; + } + + if ( $this->context->is_network_mode() ) { + return (bool) update_user_meta( $user_id, $option, $value ); + } + + return (bool) update_user_option( $user_id, $option, $value ); + } + + /** + * Deletes the given user option. + * + * @since 1.0.0 + * + * @param string $option User option name. + * @return bool True on success, false on failure. + */ + public function delete( $option ) { + $user_id = $this->get_user_id(); + if ( ! $user_id ) { + return false; + } + + if ( $this->context->is_network_mode() ) { + return (bool) delete_user_meta( $user_id, $option ); + } + + return (bool) delete_user_option( $user_id, $option ); + } + + /** + * Gets the underlying meta key for the given option. + * + * @since 1.4.0 + * + * @param string $option Option name. + * @return string Meta key name. + */ + public function get_meta_key( $option ) { + global $wpdb; + + if ( $this->context->is_network_mode() ) { + return $option; + } + + return $wpdb->get_blog_prefix() . $option; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options_Interface.php new file mode 100644 index 000000000..e084ac942 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options_Interface.php @@ -0,0 +1,63 @@ +user_options = $user_options; + } + + /** + * Registers the setting in WordPress. + * + * @since 1.4.0 + */ + public function register() { + register_meta( + 'user', + $this->user_options->get_meta_key( static::OPTION ), + array( + 'type' => $this->get_type(), + 'sanitize_callback' => $this->get_sanitize_callback(), + 'single' => true, + ) + ); + } + + /** + * Checks whether or not the setting exists. + * + * @since 1.4.0 + * + * @return bool True on success, false on failure. + */ + public function has() { + return metadata_exists( + 'user', + $this->user_options->get_user_id(), + $this->user_options->get_meta_key( static::OPTION ) + ); + } + + /** + * Gets the value of the setting. + * + * @since 1.4.0 + * + * @return mixed Value set for the option, or default if not set. + */ + public function get() { + if ( ! $this->has() ) { + return $this->get_default(); + } + + return $this->user_options->get( static::OPTION ); + } + + /** + * Sets the value of the setting with the given value. + * + * @since 1.4.0 + * + * @param mixed $value Setting value. Must be serializable if non-scalar. + * + * @return bool True on success, false on failure. + */ + public function set( $value ) { + return $this->user_options->set( static::OPTION, $value ); + } + + /** + * Deletes the setting. + * + * @since 1.4.0 + * + * @return bool True on success, false on failure. + */ + public function delete() { + return $this->user_options->delete( static::OPTION ); + } + + /** + * Gets the expected value type. + * + * Returns 'string' by default for consistency with register_meta. + * Override in a sub-class if different. + * + * Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'. + * + * @since 1.4.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'string'; + } + + /** + * Gets the default value. + * + * Returns an empty string by default for consistency with get_user_meta. + * Override in a sub-class if different. + * + * @since 1.4.0 + * + * @return mixed The default value. + */ + protected function get_default() { + return ''; + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * For use internally with register_meta. + * Returns `null` for consistency with the default in register_meta. + * Override in a sub-class. + * + * @since 1.4.0 + * + * @return callable|null + */ + protected function get_sanitize_callback() { + return null; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Transients.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Transients.php new file mode 100644 index 000000000..77d213672 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Transients.php @@ -0,0 +1,274 @@ +context = $context; + $this->user_options = new User_Options( $context, $user_id ); + $this->ext_cache_group = $context->is_network_mode() ? 'site-transient' : 'transient'; + } + + /** + * Gets the associated user ID. + * + * @since 1.18.0 + * + * @return int User ID. + */ + public function get_user_id() { + return $this->user_options->get_user_id(); + } + + /** + * Switches the current user to the one with the given ID. + * + * This method exists to exchange the user that is set as the current user in WordPress on the fly. In most cases + * it is preferred to create a new instance of the class when dealing with multiple users. This method should only + * be applied when the entire chain of class main instances need to be updated to rely on another user, i.e. when + * the current WordPress user has changed. + * + * @since 1.18.0 + * + * @param int $user_id User ID. + * @return callable A closure to switch back to the original user. + */ + public function switch_user( $user_id ) { + return $this->user_options->switch_user( $user_id ); + } + + /** + * Gets the value of the given transient. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return mixed Value set for the transient, or false if not set. + */ + public function get( $transient ) { + return wp_using_ext_object_cache() + ? $this->get_from_cache( $transient ) + : $this->get_from_user_options( $transient ); + } + + /** + * Sets the value for a transient. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @param mixed $value Transient value. + * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration). + * @return bool True on success, false on failure. + */ + public function set( $transient, $value, $expiration = 0 ) { + return wp_using_ext_object_cache() + ? $this->set_in_cache( $transient, $value, $expiration ) + : $this->set_in_user_options( $transient, $value, $expiration ); + } + + /** + * Deletes the given transient. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return bool True on success, false on failure. + */ + public function delete( $transient ) { + return wp_using_ext_object_cache() + ? $this->delete_from_cache( $transient ) + : $this->delete_from_user_options( $transient ); + } + + /** + * Gets prefixed transient name for an external cache. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return string Prefixed transient name. + */ + private function get_transient_name_for_cache( $transient ) { + $user_id = $this->get_user_id(); + return $this->user_options->get_meta_key( "user_{$user_id}_{$transient}" ); + } + + /** + * Gets the value of the given transient from an external cache. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return mixed Value set for the transient, or false if not set. + */ + private function get_from_cache( $transient ) { + return wp_cache_get( + $this->get_transient_name_for_cache( $transient ), + $this->ext_cache_group + ); + } + + /** + * Sets the value for a transient in an external cache. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @param mixed $value Transient value. + * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration). + * @return bool True on success, false on failure. + */ + private function set_in_cache( $transient, $value, $expiration ) { + return wp_cache_set( // phpcs:ignore WordPressVIPMinimum.Performance.LowExpiryCacheTime.LowCacheTime + $this->get_transient_name_for_cache( $transient ), + $value, + $this->ext_cache_group, + (int) $expiration + ); + } + + /** + * Deletes the given transient in an external cache. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return bool True on success, false on failure. + */ + private function delete_from_cache( $transient ) { + return wp_cache_delete( + $this->get_transient_name_for_cache( $transient ), + $this->ext_cache_group + ); + } + + /** + * Gets prefixed transient name. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return string Prefixed transient name. + */ + private function get_transient_name_for_user_options( $transient ) { + return 'googlesitekit_transient_' . $transient; + } + + /** + * Gets prefixed transient timeout name. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return string Prefixed transient timeout name. + */ + private function get_transient_timeout_for_user_options( $transient ) { + return 'googlesitekit_transient_timeout_' . $transient; + } + + /** + * Gets the value of the given transient. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return mixed Value set for the transient, or false if not set. + */ + private function get_from_user_options( $transient ) { + $prefixed_transient_timeout = $this->get_transient_timeout_for_user_options( $transient ); + $timeout = $this->user_options->get( $prefixed_transient_timeout ); + if ( false === $timeout || $timeout < time() ) { + $this->delete( $transient ); + return false; + } + + $prefixed_transient = $this->get_transient_name_for_user_options( $transient ); + return $this->user_options->get( $prefixed_transient ); + } + + /** + * Sets the value for a transient. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @param mixed $value Transient value. + * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration). + * @return bool True on success, false on failure. + */ + private function set_in_user_options( $transient, $value, $expiration ) { + $prefixed_transient_timeout = $this->get_transient_timeout_for_user_options( $transient ); + $this->user_options->set( $prefixed_transient_timeout, time() + $expiration ); + + $prefixed_transient = $this->get_transient_name_for_user_options( $transient ); + return $this->user_options->set( $prefixed_transient, $value ); + } + + /** + * Deletes the given transient. + * + * @since 1.18.0 + * + * @param string $transient Transient name. + * @return bool True on success, false on failure. + */ + private function delete_from_user_options( $transient ) { + $prefixed_transient_timeout = $this->get_transient_timeout_for_user_options( $transient ); + $this->user_options->delete( $prefixed_transient_timeout ); + + $prefixed_transient = $this->get_transient_name_for_user_options( $transient ); + return $this->user_options->delete( $prefixed_transient ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tags/Blockable_Tag_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Tags/Blockable_Tag_Interface.php new file mode 100644 index 000000000..6844510a5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Tags/Blockable_Tag_Interface.php @@ -0,0 +1,40 @@ +input = $input; + } + + /** + * Determines whether the guarded tag can be activated or not. + * + * @since 1.24.0 + * + * @return bool|WP_Error TRUE if guarded tag can be activated, otherwise FALSE or an error. + */ + public function can_activate() { + return ! $this->input->filter( INPUT_GET, 'tagverify', FILTER_VALIDATE_BOOLEAN ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag.php new file mode 100644 index 000000000..d5223cb12 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag.php @@ -0,0 +1,89 @@ +tag_id = $tag_id; + } + + /** + * Adds a new guard to the guards list. + * + * @since 1.24.0 + * + * @param Guard_Interface $guard A guard instance to add to the guards list. + */ + public function use_guard( Guard_Interface $guard ) { + $this->guards[] = $guard; + } + + /** + * Determines whether the tag can be register or not. + * + * @since 1.24.0 + * + * @return bool TRUE if the tag can be register, otherwise FALSE. + */ + public function can_register() { + foreach ( $this->guards as $guard ) { + if ( $guard instanceof Guard_Interface ) { + $can_activate = $guard->can_activate(); + if ( is_wp_error( $can_activate ) || ! $can_activate ) { + return false; + } + } + } + + return true; + } + + /** + * Registers tag hooks. + * + * @since 1.24.0 + */ + abstract public function register(); + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag_Interface.php new file mode 100644 index 000000000..7974adc88 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag_Interface.php @@ -0,0 +1,38 @@ +consent = $tracking_consent; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.49.0 + */ + public function register() { + add_filter( 'googlesitekit_rest_routes', $this->get_method_proxy( 'get_rest_routes' ) ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $routes ) { + return array_merge( + $routes, + array( + '/' . REST_Routes::REST_ROOT . '/core/user/data/tracking', + ) + ); + } + ); + } + + /** + * Is tracking active for the current user? + * + * @since 1.49.0 + * + * @return bool True if tracking enabled, and False if not. + */ + public function is_active() { + return (bool) $this->consent->get(); + } + + /** + * Gets tracking routes. + * + * @since 1.49.0 + * + * @param array $routes Array of routes. + * @return array Modified array of routes that contains tracking related routes. + */ + private function get_rest_routes( $routes ) { + $can_access_tracking = function() { + return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD ); + }; + + $tracking_callback = function ( WP_REST_Request $request ) { + return new WP_REST_Response( + array( + 'enabled' => $this->is_active(), + ) + ); + }; + + return array_merge( + $routes, + array( + new REST_Route( + 'core/user/data/tracking', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => $tracking_callback, + 'permission_callback' => $can_access_tracking, + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => function ( WP_REST_Request $request ) use ( $tracking_callback ) { + $data = $request->get_param( 'data' ); + $enabled = ! empty( $data['enabled'] ); + + $this->consent->set( $enabled ); + + return $tracking_callback( $request ); + }, + 'permission_callback' => $can_access_tracking, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'enabled' => array( + 'type' => 'boolean', + 'required' => true, + ), + ), + ), + ), + ), + ) + ), + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking.php b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking.php new file mode 100644 index 000000000..0584ea5f3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking.php @@ -0,0 +1,118 @@ +screens = $screens ?: new Screens( $context ); + $this->consent = new Tracking_Consent( $user_options ); + $this->rest_controller = new REST_Tracking_Consent_Controller( $this->consent ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.49.0 + */ + public function register() { + $this->consent->register(); + $this->rest_controller->register(); + + add_filter( 'googlesitekit_inline_tracking_data', $this->get_method_proxy( 'inline_js_tracking_data' ) ); + } + + /** + * Is tracking active for the current user? + * + * @since 1.49.0 + * + * @return bool True if tracking enabled, and False if not. + */ + public function is_active() { + return (bool) $this->consent->get(); + } + + /** + * Adds / modifies tracking relevant data to pass to JS. + * + * @since 1.78.0 + * + * @param array $data Inline JS data. + * @return array Filtered $data. + */ + private function inline_js_tracking_data( $data ) { + global $hook_suffix; + $data['isSiteKitScreen'] = $this->screens->get_screen( $hook_suffix ) instanceof Screen; + $data['trackingEnabled'] = $this->is_active(); + $data['trackingID'] = self::TRACKING_ID; + + return $data; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking_Consent.php b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking_Consent.php new file mode 100644 index 000000000..86d536ad7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking_Consent.php @@ -0,0 +1,64 @@ +user_options->get( static::OPTION ); + } + + /** + * Gets the expected value type. + * + * @since 1.49.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'boolean'; + } + + /** + * Gets the default value. + * + * @since 1.49.0 + * + * @return bool The default value. + */ + protected function get_default() { + return false; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/REST_User_Surveys_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/REST_User_Surveys_Controller.php new file mode 100644 index 000000000..0d5fc8d62 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/REST_User_Surveys_Controller.php @@ -0,0 +1,237 @@ +authentication = $authentication; + $this->timeouts = $timeouts; + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.35.0 + */ + public function register() { + add_filter( + 'googlesitekit_rest_routes', + function ( $routes ) { + return array_merge( $routes, $this->get_rest_routes() ); + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $paths ) { + return array_merge( + $paths, + array( + '/' . REST_Routes::REST_ROOT . '/core/user/data/survey-timeouts', + ) + ); + } + ); + } + + + /** + * Gets REST route instances. + * + * @since 1.35.0 + * + * @return REST_Route[] List of REST_Route objects. + */ + protected function get_rest_routes() { + $can_authenticate = function () { + return $this->authentication->is_authenticated() + && $this->authentication->credentials()->using_proxy(); + }; + + return array( + 'survey-trigger' => new REST_Route( + 'core/user/data/survey-trigger', + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => function ( WP_REST_Request $request ) { + $proxy = $this->authentication->get_google_proxy(); + $creds = $this->authentication->credentials(); + $access_token = (string) $this->authentication->get_oauth_client()->get_access_token(); + $data = $request->get_param( 'data' ); + + $response = $proxy->send_survey_trigger( $creds, $access_token, $data['triggerID'] ); + $response = rest_ensure_response( $response ); + + return $response; + }, + 'permission_callback' => $can_authenticate, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'triggerID' => array( + 'type' => 'string', + 'required' => true, + ), + ), + ), + ), + ) + ), + 'survey-event' => new REST_Route( + 'core/user/data/survey-event', + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => function ( WP_REST_Request $request ) { + $proxy = $this->authentication->get_google_proxy(); + $creds = $this->authentication->credentials(); + $access_token = (string) $this->authentication->get_oauth_client()->get_access_token(); + $data = $request->get_param( 'data' ); + + $response = $proxy->send_survey_event( $creds, $access_token, $data['session'], $data['event'] ); + $response = rest_ensure_response( $response ); + + return $response; + }, + 'permission_callback' => $can_authenticate, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'session' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'session_id' => array( + 'type' => 'string', + 'required' => true, + ), + 'session_token' => array( + 'type' => 'string', + 'required' => true, + ), + ), + ), + 'event' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'survey_shown' => array( + 'type' => 'object', + ), + 'survey_closed' => array( + 'type' => 'object', + ), + 'question_answered' => array( + 'type' => 'object', + ), + 'completion_shown' => array( + 'type' => 'object', + ), + 'follow_up_link_clicked' => array( + 'type' => 'object', + ), + ), + ), + ), + ), + ), + ) + ), + 'survey-timeout' => new REST_Route( + 'core/user/data/survey-timeout', + array( + 'methods' => WP_REST_Server::CREATABLE, + 'permission_callback' => $can_authenticate, + 'callback' => function ( WP_REST_Request $request ) { + $data = $request['data']; + + if ( empty( $data['slug'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'slug' ), + array( 'status' => 400 ) + ); + } + + $timeout = HOUR_IN_SECONDS; + if ( isset( $data['timeout'] ) && intval( $data['timeout'] ) > 0 ) { + $timeout = $data['timeout']; + } + + $this->timeouts->add( $data['slug'], $timeout ); + + return new WP_REST_Response( $this->timeouts->get_survey_timeouts() ); + }, + 'args' => array( + 'data' => array( + 'type' => 'object', + 'required' => true, + ), + ), + ) + ), + 'survey-timeouts' => new REST_Route( + 'core/user/data/survey-timeouts', + array( + 'methods' => WP_REST_Server::READABLE, + 'permission_callback' => $can_authenticate, + 'callback' => function ( WP_REST_Request $request ) { + return new WP_REST_Response( $this->timeouts->get_survey_timeouts() ); + }, + ) + ), + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/Survey_Timeouts.php b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/Survey_Timeouts.php new file mode 100644 index 000000000..c34d9a6e1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/Survey_Timeouts.php @@ -0,0 +1,122 @@ +get(); + $surveys[ $survey ] = time() + $timeout; + + $this->set( $surveys ); + } + + /** + * Gets the value of the setting. + * + * @since 1.73.0 + * + * @return array Value set for the option, or default if not set. + */ + public function get() { + $value = parent::get(); + return is_array( $value ) ? $value : $this->get_default(); + } + + /** + * Gets the expected value type. + * + * @since 1.73.0 + * + * @return string The type name. + */ + protected function get_type() { + return 'array'; + } + + /** + * Gets the default value. + * + * @since 1.73.0 + * + * @return array The default value. + */ + protected function get_default() { + return array(); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.73.0 + * + * @return callable Sanitize callback. + */ + protected function get_sanitize_callback() { + return array( $this, 'filter_survey_timeouts' ); + } + + /** + * Gets survey timeouts. + * + * @since 1.73.0 + * + * @return array Survey timeouts array. + */ + public function get_survey_timeouts() { + $surveys = $this->get(); + $surveys = $this->filter_survey_timeouts( $surveys ); + + return array_keys( $surveys ); + } + + /** + * Filters survey timeouts. + * + * @since 1.73.0 + * + * @param array $items Survey timeouts list. + * @return array Filtered survey timeouts. + */ + private function filter_survey_timeouts( $items ) { + $surveys = array(); + + if ( is_array( $items ) ) { + foreach ( $items as $item => $ttl ) { + if ( $ttl > time() ) { + $surveys[ $item ] = $ttl; + } + } + } + + return $surveys; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/User_Surveys.php b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/User_Surveys.php new file mode 100644 index 000000000..dfb5ee29e --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/User_Surveys.php @@ -0,0 +1,64 @@ +survey_timeouts = new Survey_Timeouts( $user_options ); + $this->rest_controller = new REST_User_Surveys_Controller( $authentication, $this->survey_timeouts ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.73.0 + */ + public function register() { + $this->survey_timeouts->register(); + $this->rest_controller->register(); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Flag.php b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Flag.php new file mode 100644 index 000000000..cb8cbcdb2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Flag.php @@ -0,0 +1,143 @@ +context = $context; + $this->options = $options ?: new Options( $this->context ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.10.0 + */ + public function register() { + add_action( + 'googlesitekit_activation', + function( $network_wide ) { + // Set activation flag. + $this->set_activation_flag( $network_wide ); + } + ); + + add_filter( + 'googlesitekit_admin_data', + function ( $data ) { + return $this->inline_js_admin_data( $data ); + } + ); + } + + /** + * Sets the flag that the plugin has just been activated. + * + * @since 1.10.0 Migrated from Activation class. + * + * @param bool $network_wide Whether the plugin is being activated network-wide. + */ + public function set_activation_flag( $network_wide ) { + if ( $network_wide ) { + update_network_option( null, self::OPTION_SHOW_ACTIVATION_NOTICE, '1' ); + return; + } + + update_option( self::OPTION_SHOW_ACTIVATION_NOTICE, '1', false ); + } + + /** + * Gets the flag that the plugin has just been activated. + * + * @since 1.10.0 Migrated from Activation class. + * + * @param bool $network_wide Whether to check the flag network-wide. + * @return bool True if just activated, false otherwise. + */ + public function get_activation_flag( $network_wide ) { + if ( $network_wide ) { + return (bool) get_network_option( null, self::OPTION_SHOW_ACTIVATION_NOTICE ); + } + + return (bool) get_option( self::OPTION_SHOW_ACTIVATION_NOTICE ); + } + + /** + * Deletes the flag that the plugin has just been activated. + * + * @since 1.10.0 Migrated from Activation class. + * + * @param bool $network_wide Whether the plugin is being activated network-wide. + */ + public function delete_activation_flag( $network_wide ) { + if ( $network_wide ) { + delete_network_option( null, self::OPTION_SHOW_ACTIVATION_NOTICE ); + return; + } + + delete_option( self::OPTION_SHOW_ACTIVATION_NOTICE ); + } + + + /** + * Modifies the admin data to pass to JS. + * + * @since 1.10.0 Migrated from Activation class. + * + * @param array $data Inline JS data. + * @return array Filtered $data. + */ + private function inline_js_admin_data( $data ) { + $data['newSitePosts'] = $this->options->get( self::OPTION_NEW_SITE_POSTS ); + + return $data; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Notice.php b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Notice.php new file mode 100644 index 000000000..ae275d964 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Notice.php @@ -0,0 +1,157 @@ +context = $context; + $this->activation_flag = $activation_flag; + $this->assets = $assets ?: new Assets( $this->context ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.10.0 + */ + public function register() { + add_filter( + 'googlesitekit_admin_notices', + function( $notices ) { + $notices[] = $this->get_activation_notice(); + return $notices; + } + ); + + add_action( + 'admin_enqueue_scripts', + function( $hook_suffix ) { + if ( 'plugins.php' !== $hook_suffix || ! $this->activation_flag->get_activation_flag( is_network_admin() ) ) { + return; + } + + /** + * Prevent the default WordPress "Plugin Activated" notice from rendering. + * + * @link https://github.com/WordPress/WordPress/blob/e1996633228749cdc2d92bc04cc535d45367bfa4/wp-admin/plugins.php#L569-L570 + */ + unset( $_GET['activate'] ); // phpcs:ignore WordPress.Security.NonceVerification, WordPress.VIP.SuperGlobalInputUsage + + $this->assets->enqueue_asset( 'googlesitekit-admin-css' ); + $this->assets->enqueue_asset( 'googlesitekit-activation' ); + } + ); + } + + /** + * Gets the admin notice indicating that the plugin has just been activated. + * + * @since 1.10.0 + * + * @return Notice Admin notice instance. + */ + private function get_activation_notice() { + return new Notice( + 'activated', + array( + 'content' => function() { + ob_start(); + ?> +

+ render_noscript_html(); ?> + +
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+ Notice::TYPE_SUCCESS, + 'active_callback' => function( $hook_suffix ) { + if ( 'plugins.php' !== $hook_suffix ) { + return false; + } + $network_wide = is_network_admin(); + $flag = $this->activation_flag->get_activation_flag( $network_wide ); + if ( $flag ) { + // Unset the flag so that the notice only shows once. + $this->activation_flag->delete_activation_flag( $network_wide ); + } + return $flag; + }, + 'dismissible' => true, + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Core/Util/BC_Functions.php b/wp-content/plugins/google-site-kit/includes/Core/Util/BC_Functions.php new file mode 100644 index 000000000..a0cc4528c --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Core/Util/BC_Functions.php @@ -0,0 +1,151 @@ +` tag attributes. + * @return string String made of sanitized `\n", self::wp_sanitize_script_attributes( $attributes ) ); + } + + /** + * A fallback for the wp_print_script_tag function introduced in the WordPress version 5.7.0. + * + * @since 1.41.0 + * + * @param array $attributes Key-value pairs representing `\n", self::wp_sanitize_script_attributes( $attributes ), $javascript ); + } + + /** + * A fallback for the wp_get_inline_script_tag function introduced in the WordPress version 5.7.0. + * + * @since 1.41.0 + * + * @param string $javascript Inline JavaScript code. + * @param array $attributes Optional. Key-value pairs representing `', wp_json_encode( $config ) ); + + printf( "\n\n", esc_html__( 'End Google AdSense AMP snippet added by Site Kit', 'google-site-kit' ) ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Auto_Ad_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Auto_Ad_Guard.php new file mode 100644 index 000000000..08812eaac --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Auto_Ad_Guard.php @@ -0,0 +1,47 @@ +settings->get(); + if ( ! isset( $settings['autoAdsDisabled'] ) ) { + return true; + } + + if ( + ( in_array( 'loggedinUsers', $settings['autoAdsDisabled'], true ) && is_user_logged_in() ) || + ( in_array( 'contentCreators', $settings['autoAdsDisabled'], true ) && current_user_can( 'edit_posts' ) ) + ) { + return false; + } + + return true; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Settings.php new file mode 100644 index 000000000..687d3e8f1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Settings.php @@ -0,0 +1,192 @@ + array( + 'accountStatus' => 'approved', + 'siteStatus' => 'added', + ), + 'account-connected-nonmatching' => array( + 'accountStatus' => 'approved', + 'siteStatus' => 'added', + ), + 'account-connected-no-data' => array( + 'accountStatus' => 'approved', + 'siteStatus' => 'added', + ), + 'account-pending-review' => array( + 'accountStatus' => 'approved', + 'siteStatus' => 'none', + ), + 'account-required-action' => array( + 'accountStatus' => 'no-client', + ), + 'disapproved-account-afc' => array( + 'accountStatus' => 'no-client', + ), + 'ads-display-pending' => array( + 'accountStatus' => 'pending', + ), + 'disapproved-account' => array( + 'accountStatus' => 'disapproved', + ), + 'no-account' => array( + 'accountStatus' => 'none', + ), + 'no-account-tag-found' => array( + 'accountStatus' => 'none', + ), + ); + + /** + * Registers the setting in WordPress. + * + * @since 1.2.0 + */ + public function register() { + parent::register(); + + $this->register_legacy_keys_migration( + array( + 'account_id' => 'accountID', + 'accountId' => 'accountID', + 'account_status' => 'accountStatus', + 'adsenseTagEnabled' => 'useSnippet', + 'client_id' => 'clientID', + 'clientId' => 'clientID', + 'setup_complete' => 'setupComplete', + ) + ); + + $this->register_owned_keys(); + + add_filter( + 'option_' . self::OPTION, + function ( $option ) { + /** + * Filters the AdSense account ID to use. + * + * @since 1.0.0 + * + * @param string $account_id Empty by default, will fall back to the option value if not set. + */ + $account_id = apply_filters( 'googlesitekit_adsense_account_id', '' ); + + if ( $account_id ) { + $option['accountID'] = $account_id; + } + + // Migrate legacy account statuses (now split into account status and site status). + if ( ! empty( $option['accountStatus'] ) && isset( $this->legacy_account_statuses[ $option['accountStatus'] ] ) ) { + foreach ( $this->legacy_account_statuses[ $option['accountStatus'] ] as $key => $value ) { + $option[ $key ] = $value; + } + } + + // Migration of legacy setting. + if ( ! empty( $option['setupComplete'] ) ) { + $option['accountSetupComplete'] = $option['setupComplete']; + $option['siteSetupComplete'] = $option['setupComplete']; + } + unset( $option['setupComplete'] ); + + return $option; + } + ); + } + + /** + * Returns keys for owned settings. + * + * @since 1.16.0 + * + * @return array An array of keys for owned settings. + */ + public function get_owned_keys() { + return array( + 'accountID', + 'clientID', + ); + } + + /** + * Gets the default value. + * + * @since 1.2.0 + * + * @return array + */ + protected function get_default() { + return array( + 'ownerID' => 0, + 'accountID' => '', + 'autoAdsDisabled' => array(), + 'clientID' => '', + 'accountStatus' => '', + 'siteStatus' => '', + 'accountSetupComplete' => false, + 'siteSetupComplete' => false, + 'useSnippet' => true, + 'webStoriesAdUnit' => '', + ); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.6.0 + * + * @return callable|null + */ + protected function get_sanitize_callback() { + return function( $option ) { + if ( is_array( $option ) ) { + if ( isset( $option['accountSetupComplete'] ) ) { + $option['accountSetupComplete'] = (bool) $option['accountSetupComplete']; + } + if ( isset( $option['siteStatusComplete'] ) ) { + $option['siteStatusComplete'] = (bool) $option['siteStatusComplete']; + } + if ( isset( $option['useSnippet'] ) ) { + $option['useSnippet'] = (bool) $option['useSnippet']; + } + if ( isset( $option['autoAdsDisabled'] ) ) { + $option['autoAdsDisabled'] = (array) $option['autoAdsDisabled']; + } + } + return $option; + }; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Tag_Guard.php new file mode 100644 index 000000000..477e26bcb --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Tag_Guard.php @@ -0,0 +1,48 @@ +settings->get(); + + // For web stories, the tag must only be rendered if a story-specific ad unit is provided. + if ( is_singular( 'web-story' ) && empty( $settings['webStoriesAdUnit'] ) ) { + return false; + } + + return ! empty( $settings['useSnippet'] ) && ! empty( $settings['clientID'] ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Web_Tag.php new file mode 100644 index 000000000..1b6d0f9c7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Web_Tag.php @@ -0,0 +1,99 @@ +get_method_proxy_once( 'render' ) ); + + add_filter( + 'wp_resource_hints', + $this->get_dns_prefetch_hints_callback( '//pagead2.googlesyndication.com' ), + 10, + 2 + ); + + $this->do_init_tag_action(); + } + + /** + * Outputs the AdSense script tag. + * + * @since 1.24.0 + */ + protected function render() { + // If we haven't completed the account connection yet, we still insert the AdSense tag + // because it is required for account verification. + + $adsense_script_src = sprintf( + 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=%s&host=%s', + esc_attr( $this->tag_id ), // Site owner's web property code. + 'ca-host-pub-2644536267352236' // SiteKit's web property code. + ); + + $adsense_script_attributes = array( + 'async' => true, + 'src' => $adsense_script_src, + 'crossorigin' => 'anonymous', + ); + + $adsense_attributes = $this->get_tag_blocked_on_consent_attribute_array(); + + $auto_ads_opt = array(); + + $auto_ads_opt_filtered = apply_filters( 'googlesitekit_auto_ads_opt', $auto_ads_opt, $this->tag_id ); + + if ( is_array( $auto_ads_opt_filtered ) && ! empty( $auto_ads_opt_filtered ) ) { + $strip_attributes = array( + 'google_ad_client' => '', + 'enable_page_level_ads' => '', + ); + + $auto_ads_opt_filtered = array_diff_key( $auto_ads_opt_filtered, $strip_attributes ); + + $auto_ads_opt_sanitized = array(); + + foreach ( $auto_ads_opt_filtered as $key => $value ) { + $new_key = 'data-'; + $new_key .= str_replace( '_', '-', $key ); + + $auto_ads_opt_sanitized[ $new_key ] = $value; + } + + $adsense_attributes = array_merge( $adsense_attributes, $auto_ads_opt_sanitized ); + } + + printf( "\n\n", esc_html__( 'Google AdSense snippet added by Site Kit', 'google-site-kit' ) ); + BC_Functions::wp_print_script_tag( array_merge( $adsense_script_attributes, $adsense_attributes ) ); + printf( "\n\n", esc_html__( 'End Google AdSense snippet added by Site Kit', 'google-site-kit' ) ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics.php new file mode 100644 index 000000000..19acbbd01 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics.php @@ -0,0 +1,1481 @@ +register_scopes_hook(); + + /** + * This filter only exists to be unhooked by the AdSense module if active. + * + * @see \Google\Site_Kit\Modules\Analytics\Settings::register + */ + add_filter( 'googlesitekit_analytics_adsense_linked', '__return_false' ); + + add_action( 'admin_init', $this->get_method_proxy( 'handle_provisioning_callback' ) ); + add_action( 'googlesitekit_authorize_user', array( $this, 'handle_token_response_data' ) ); + + // For non-AMP and AMP. + add_action( 'wp_head', $this->get_method_proxy( 'print_tracking_opt_out' ), 0 ); + // For Web Stories plugin. + add_action( 'web_stories_story_head', $this->get_method_proxy( 'print_tracking_opt_out' ), 0 ); + // Analytics tag placement logic. + add_action( 'template_redirect', $this->get_method_proxy( 'register_tag' ) ); + + add_filter( + 'googlesitekit_proxy_setup_mode', + function( $original_mode ) { + return ! $this->is_connected() + ? 'analytics-step' + : $original_mode; + } + ); + + ( new Advanced_Tracking( $this->context ) )->register(); + } + + /** + * Checks whether or not tracking snippet should be contextually disabled for this request. + * + * @since 1.1.0 + * + * @return bool + */ + protected function is_tracking_disabled() { + $settings = $this->get_settings()->get(); + // This filter is documented in Tag_Manager::filter_analytics_allow_tracking_disabled. + if ( ! apply_filters( 'googlesitekit_allow_tracking_disabled', $settings['useSnippet'] ) ) { + return false; + } + + $option = $this->get_settings()->get(); + + $disable_logged_in_users = in_array( 'loggedinUsers', $option['trackingDisabled'], true ) && is_user_logged_in(); + $disable_content_creators = in_array( 'contentCreators', $option['trackingDisabled'], true ) && current_user_can( 'edit_posts' ); + + $disabled = $disable_logged_in_users || $disable_content_creators; + + /** + * Filters whether or not the Analytics tracking snippet is output for the current request. + * + * @since 1.1.0 + * + * @param $disabled bool Whether to disable tracking or not. + */ + return (bool) apply_filters( 'googlesitekit_analytics_tracking_disabled', $disabled ); + } + + /** + * Gets required Google OAuth scopes for the module. + * + * @since 1.0.0 + * + * @return array List of Google OAuth scopes. + */ + public function get_scopes() { + return array( + self::READONLY_SCOPE, + ); + } + + /** + * Checks whether the module is connected. + * + * A module being connected means that all steps required as part of its activation are completed. + * + * @since 1.0.0 + * + * @return bool True if module is connected, false otherwise. + */ + public function is_connected() { + $required_keys = array( + 'accountID', + 'propertyID', + 'profileID', + 'internalWebPropertyID', + ); + + $options = $this->get_settings()->get(); + foreach ( $required_keys as $required_key ) { + if ( empty( $options[ $required_key ] ) ) { + return false; + } + } + + return parent::is_connected(); + } + + /** + * Cleans up when the module is deactivated. + * + * @since 1.0.0 + */ + public function on_deactivation() { + $this->get_settings()->delete(); + $this->options->delete( 'googlesitekit_analytics_adsense_linked' ); + } + + /** + * Gets an array of debug field definitions. + * + * @since 1.5.0 + * + * @return array + */ + public function get_debug_fields() { + $settings = $this->get_settings()->get(); + + return array( + 'analytics_account_id' => array( + 'label' => __( 'Analytics account ID', 'google-site-kit' ), + 'value' => $settings['accountID'], + 'debug' => Debug_Data::redact_debug_value( $settings['accountID'] ), + ), + 'analytics_property_id' => array( + 'label' => __( 'Analytics property ID', 'google-site-kit' ), + 'value' => $settings['propertyID'], + 'debug' => Debug_Data::redact_debug_value( $settings['propertyID'], 7 ), + ), + 'analytics_profile_id' => array( + 'label' => __( 'Analytics view ID', 'google-site-kit' ), + 'value' => $settings['profileID'], + 'debug' => Debug_Data::redact_debug_value( $settings['profileID'] ), + ), + 'analytics_use_snippet' => array( + 'label' => __( 'Analytics snippet placed', 'google-site-kit' ), + 'value' => $settings['useSnippet'] ? __( 'Yes', 'google-site-kit' ) : __( 'No', 'google-site-kit' ), + 'debug' => $settings['useSnippet'] ? 'yes' : 'no', + ), + ); + } + + /** + * Handles the provisioning callback after the user completes the terms of service. + * + * @since 1.9.0 + */ + protected function handle_provisioning_callback() { + if ( defined( 'WP_CLI' ) && WP_CLI ) { + return; + } + + if ( ! current_user_can( Permissions::MANAGE_OPTIONS ) ) { + return; + } + + $input = $this->context->input(); + + if ( ! $input->filter( INPUT_GET, 'gatoscallback' ) ) { + return; + } + + // The handler should check the received Account Ticket id parameter against the id stored in the provisioning step. + $account_ticket_id = $input->filter( INPUT_GET, 'accountTicketId', FILTER_SANITIZE_STRING ); + $stored_account_ticket_id = get_transient( self::PROVISION_ACCOUNT_TICKET_ID . '::' . get_current_user_id() ); + delete_transient( self::PROVISION_ACCOUNT_TICKET_ID . '::' . get_current_user_id() ); + + if ( $stored_account_ticket_id !== $account_ticket_id ) { + wp_safe_redirect( + $this->context->admin_url( 'module-analytics', array( 'error_code' => 'account_ticket_id_mismatch' ) ) + ); + exit; + } + + // Check for a returned error. + $error = $input->filter( INPUT_GET, 'error', FILTER_SANITIZE_STRING ); + if ( ! empty( $error ) ) { + wp_safe_redirect( + $this->context->admin_url( 'module-analytics', array( 'error_code' => $error ) ) + ); + exit; + } + + $account_id = $input->filter( INPUT_GET, 'accountId', FILTER_SANITIZE_STRING ); + $web_property_id = $input->filter( INPUT_GET, 'webPropertyId', FILTER_SANITIZE_STRING ); + $profile_id = $input->filter( INPUT_GET, 'profileId', FILTER_SANITIZE_STRING ); + + if ( empty( $account_id ) || empty( $web_property_id ) || empty( $profile_id ) ) { + wp_safe_redirect( + $this->context->admin_url( 'module-analytics', array( 'error_code' => 'callback_missing_parameter' ) ) + ); + exit; + } + + // Retrieve the internal web property id. + try { + $web_property = $this->get_service( 'analytics' )->management_webproperties->get( $account_id, $web_property_id ); + } catch ( Exception $e ) { + wp_safe_redirect( + $this->context->admin_url( 'module-analytics', array( 'error_code' => 'property_not_found' ) ) + ); + exit; + } + + $internal_web_property_id = $web_property->getInternalWebPropertyId(); + + $this->get_settings()->merge( + array( + 'accountID' => $account_id, + 'propertyID' => $web_property_id, + 'profileID' => $profile_id, + 'internalWebPropertyID' => $internal_web_property_id, + ) + ); + + do_action( + 'googlesitekit_analytics_handle_provisioning_callback', + $account_id, + $web_property_id, + $internal_web_property_id, + $profile_id + ); + + wp_safe_redirect( + $this->context->admin_url( + 'dashboard', + array( + 'notification' => 'authentication_success', + 'slug' => 'analytics', + ) + ) + ); + exit; + } + + /** + * Gets map of datapoint to definition data for each. + * + * @since 1.9.0 + * + * @return array Map of datapoints to their definitions. + */ + protected function get_datapoint_definitions() { + return array( + 'GET:accounts-properties-profiles' => array( 'service' => 'analytics' ), + 'POST:create-account-ticket' => array( + 'service' => 'analyticsprovisioning', + 'scopes' => array( self::PROVISION_SCOPE ), + 'request_scopes_message' => __( 'You’ll need to grant Site Kit permission to create a new Analytics account on your behalf.', 'google-site-kit' ), + ), + 'POST:create-profile' => array( + 'service' => 'analytics', + 'scopes' => array( self::EDIT_SCOPE ), + 'request_scopes_message' => __( 'You’ll need to grant Site Kit permission to create a new Analytics view on your behalf.', 'google-site-kit' ), + ), + 'POST:create-property' => array( + 'service' => 'analytics', + 'scopes' => array( self::EDIT_SCOPE ), + 'request_scopes_message' => __( 'You’ll need to grant Site Kit permission to create a new Analytics property on your behalf.', 'google-site-kit' ), + ), + 'GET:goals' => array( + 'service' => 'analytics', + 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ), + ), + 'GET:profiles' => array( 'service' => 'analytics' ), + 'GET:properties-profiles' => array( 'service' => 'analytics' ), + 'GET:report' => array( + 'service' => 'analyticsreporting', + 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ), + ), + ); + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure. + * + * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist. + */ + protected function create_data_request( Data_Request $data ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:accounts-properties-profiles': + return function () use ( $data ) { + $restore_defer = $this->with_client_defer( false ); + + try { + return $this->get_service( 'analytics' )->management_accounts->listManagementAccounts(); + } catch ( Google_Service_Exception $exception ) { + // The exception message is a JSON object of all errors, so we'll convert it to our WP Error first. + $wp_error = $this->exception_to_error( $exception, $data->datapoint ); + // Unfortunately there isn't a better way to identify this without checking the message. + if ( 'User does not have any Google Analytics account.' === $wp_error->get_error_message() ) { + return new Google_Service_Analytics_Accounts(); + } + // If any other exception was caught, re-throw it. + throw $exception; + } finally { + $restore_defer(); // Will be called before returning in all cases. + } + }; + case 'POST:create-account-ticket': + if ( ! isset( $data['accountName'] ) ) { + /* translators: %s: Missing parameter name */ + return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountName' ), array( 'status' => 400 ) ); + } + if ( ! isset( $data['propertyName'] ) ) { + /* translators: %s: Missing parameter name */ + return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'propertyName' ), array( 'status' => 400 ) ); + } + if ( ! isset( $data['profileName'] ) ) { + /* translators: %s: Missing parameter name */ + return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'profileName' ), array( 'status' => 400 ) ); + } + if ( ! isset( $data['timezone'] ) ) { + /* translators: %s: Missing parameter name */ + return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'timezone' ), array( 'status' => 400 ) ); + } + + if ( ! $this->authentication->credentials()->using_proxy() ) { + return new WP_Error( 'requires_service', __( 'Analytics provisioning requires connecting via the Site Kit Service.', 'google-site-kit' ), array( 'status' => 400 ) ); + } + + $account = new Google_Service_Analytics_Account(); + $account->setName( $data['accountName'] ); + + $property = new Google_Service_Analytics_Webproperty(); + $property->setName( $data['propertyName'] ); + $property->setWebsiteUrl( $this->context->get_reference_site_url() ); + + $profile = new Google_Service_Analytics_Profile(); + $profile->setName( $data['profileName'] ); + $profile->setTimezone( $data['timezone'] ); + + $account_ticket = new Proxy_AccountTicket(); + $account_ticket->setAccount( $account ); + $account_ticket->setWebproperty( $property ); + $account_ticket->setProfile( $profile ); + $account_ticket->setRedirectUri( $this->get_provisioning_redirect_uri() ); + + // Add site id and secret. + $creds = $this->authentication->credentials()->get(); + $account_ticket->setSiteId( $creds['oauth2_client_id'] ); + $account_ticket->setSiteSecret( $creds['oauth2_client_secret'] ); + + return $this->get_service( 'analyticsprovisioning' ) + ->provisioning->createAccountTicket( $account_ticket ); + case 'GET:goals': + $connection = $this->get_settings()->get(); + if ( + empty( $connection['accountID'] ) || + empty( $connection['internalWebPropertyID'] ) || + empty( $connection['profileID'] ) + ) { + // This is needed to return and emulate the same error format from Analytics API. + return function() { + return array( + 'error' => array( + 'code' => 400, + 'message' => __( 'Analytics module needs to be configured.', 'google-site-kit' ), + 'status' => 'INVALID_ARGUMENT', + ), + ); + }; + } + $service = $this->get_service( 'analytics' ); + return $service->management_goals->listManagementGoals( $connection['accountID'], $connection['propertyID'], $connection['profileID'] ); + case 'GET:profiles': + if ( ! isset( $data['accountID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), + array( 'status' => 400 ) + ); + } + if ( ! isset( $data['propertyID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'propertyID' ), + array( 'status' => 400 ) + ); + } + + return $this->get_service( 'analytics' )->management_profiles->listManagementProfiles( $data['accountID'], $data['propertyID'] ); + case 'GET:properties-profiles': + if ( ! isset( $data['accountID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), + array( 'status' => 400 ) + ); + } + + return $this->get_service( 'analytics' )->management_webproperties->listManagementWebproperties( $data['accountID'] ); + case 'GET:report': + $request_args = array(); + + if ( empty( $data['metrics'] ) ) { + /* translators: %s: Missing parameter name */ + return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'metrics' ), array( 'status' => 400 ) ); + } + + if ( ! empty( $data['url'] ) ) { + $request_args['page'] = $data['url']; + } + + if ( ! empty( $data['limit'] ) ) { + $request_args['row_limit'] = $data['limit']; + } + + $dimensions = $data['dimensions']; + if ( ! empty( $dimensions ) && ( is_string( $dimensions ) || is_array( $dimensions ) ) ) { + if ( is_string( $dimensions ) ) { + $dimensions = explode( ',', $dimensions ); + } elseif ( is_array( $dimensions ) && ! wp_is_numeric_array( $dimensions ) ) { // If single object is passed. + $dimensions = array( $dimensions ); + } + + $dimensions = array_filter( + array_map( + function ( $dimension_def ) { + $dimension = new Google_Service_AnalyticsReporting_Dimension(); + + if ( is_string( $dimension_def ) ) { + $dimension->setName( $dimension_def ); + } elseif ( is_array( $dimension_def ) && ! empty( $dimension_def['name'] ) ) { + $dimension->setName( $dimension_def['name'] ); + } else { + return null; + } + + return $dimension; + }, + array_filter( $dimensions ) + ) + ); + + if ( ! empty( $dimensions ) ) { + try { + $this->validate_report_dimensions( $dimensions ); + } catch ( Invalid_Report_Dimensions_Exception $exception ) { + return new WP_Error( + 'invalid_analytics_report_dimensions', + $exception->getMessage() + ); + } + + $request_args['dimensions'] = $dimensions; + } + } + + $dimension_filters = $data['dimensionFilters']; + $dimension_filter_instances = array(); + if ( ! empty( $dimension_filters ) && is_array( $dimension_filters ) ) { + foreach ( $dimension_filters as $dimension_name => $dimension_value ) { + $dimension_filter = new Google_Service_AnalyticsReporting_DimensionFilter(); + $dimension_filter->setDimensionName( $dimension_name ); + if ( is_array( $dimension_value ) ) { + $dimension_filter->setOperator( 'IN_LIST' ); + $dimension_filter->setExpressions( $dimension_value ); + } else { + $dimension_filter->setOperator( 'EXACT' ); + $dimension_filter->setExpressions( array( $dimension_value ) ); + } + $dimension_filter_instances[] = $dimension_filter; + } + + if ( ! empty( $dimension_filter_instances ) ) { + $request_args['dimension_filters'] = $dimension_filter_instances; + } + } + + $request = $this->create_analytics_site_data_request( $request_args ); + + if ( is_wp_error( $request ) ) { + return $request; + } + + $date_ranges = array(); + $start_date = $data['startDate']; + $end_date = $data['endDate']; + if ( strtotime( $start_date ) && strtotime( $end_date ) ) { + $compare_start_date = $data['compareStartDate']; + $compare_end_date = $data['compareEndDate']; + $date_ranges[] = array( $start_date, $end_date ); + + // When using multiple date ranges, it changes the structure of the response, + // where each date range becomes an item in a list. + if ( strtotime( $compare_start_date ) && strtotime( $compare_end_date ) ) { + $date_ranges[] = array( $compare_start_date, $compare_end_date ); + } + } else { + $date_range = $data['dateRange'] ?: 'last-28-days'; + $date_ranges[] = $this->parse_date_range( $date_range, $data['compareDateRanges'] ? 2 : 1 ); + + // When using multiple date ranges, it changes the structure of the response, + // where each date range becomes an item in a list. + if ( ! empty( $data['multiDateRange'] ) ) { + $date_ranges[] = $this->parse_date_range( $date_range, 1, 1, true ); + } + } + + $date_ranges = array_map( + function ( $date_range ) { + list ( $start_date, $end_date ) = $date_range; + $date_range = new Google_Service_AnalyticsReporting_DateRange(); + $date_range->setStartDate( $start_date ); + $date_range->setEndDate( $end_date ); + + return $date_range; + }, + $date_ranges + ); + $request->setDateRanges( $date_ranges ); + + $metrics = $data['metrics']; + if ( is_string( $metrics ) || is_array( $metrics ) ) { + if ( is_string( $metrics ) ) { + $metrics = explode( ',', $data['metrics'] ); + } elseif ( is_array( $metrics ) && ! wp_is_numeric_array( $metrics ) ) { // If single object is passed. + $metrics = array( $metrics ); + } + + $metrics = array_filter( + array_map( + function ( $metric_def ) { + $metric = new Google_Service_AnalyticsReporting_Metric(); + + if ( is_string( $metric_def ) ) { + $metric->setAlias( $metric_def ); + $metric->setExpression( $metric_def ); + } elseif ( is_array( $metric_def ) && ! empty( $metric_def['expression'] ) ) { + $metric->setExpression( $metric_def['expression'] ); + $metric->setAlias( ! empty( $metric_def['alias'] ) ? $metric_def['alias'] : $metric_def['expression'] ); + } else { + return null; + } + + return $metric; + }, + array_filter( $metrics ) + ) + ); + + if ( ! empty( $metrics ) ) { + try { + $this->validate_report_metrics( $metrics ); + } catch ( Invalid_Report_Metrics_Exception $exception ) { + return new WP_Error( + 'invalid_analytics_report_metrics', + $exception->getMessage() + ); + } + + $request->setMetrics( $metrics ); + } + } + + // Order by. + $orderby = $this->parse_reporting_orderby( $data['orderby'] ); + if ( ! empty( $orderby ) ) { + $request->setOrderBys( $orderby ); + } + + // Batch reports requests. + $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); + $body->setReportRequests( array( $request ) ); + + return $this->get_analyticsreporting_service()->reports->batchGet( $body ); + case 'POST:create-profile': + if ( ! isset( $data['accountID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), + array( 'status' => 400 ) + ); + } + if ( ! isset( $data['propertyID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'propertyID' ), + array( 'status' => 400 ) + ); + } + $profile_name = trim( $data['profileName'] ); + if ( empty( $profile_name ) ) { + $profile_name = _x( 'All Web Site Data', 'default Analytics view name', 'google-site-kit' ); + } + $profile = new Google_Service_Analytics_Profile(); + $profile->setName( $profile_name ); + return $profile = $this->get_service( 'analytics' )->management_profiles->insert( $data['accountID'], $data['propertyID'], $profile ); + case 'POST:create-property': + if ( ! isset( $data['accountID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), + array( 'status' => 400 ) + ); + } + $property = new Google_Service_Analytics_Webproperty(); + $property->setName( URL::parse( $this->context->get_reference_site_url(), PHP_URL_HOST ) ); + $property->setWebsiteUrl( $this->context->get_reference_site_url() ); + return $this->get_service( 'analytics' )->management_webproperties->insert( $data['accountID'], $property ); + } + + return parent::create_data_request( $data ); + } + + /** + * Parses the orderby value of the data request into an array of reporting orderby object instances. + * + * @since 1.13.1 + * + * @param array|null $orderby Data request orderby value. + * @return Google_Service_AnalyticsReporting_OrderBy[] An array of reporting orderby objects. + */ + protected function parse_reporting_orderby( $orderby ) { + if ( empty( $orderby ) || ! is_array( $orderby ) ) { + return array(); + } + + $results = array_map( + function ( $order_def ) { + $order_def = array_merge( + array( + 'fieldName' => '', + 'sortOrder' => '', + ), + (array) $order_def + ); + + if ( empty( $order_def['fieldName'] ) || empty( $order_def['sortOrder'] ) ) { + return null; + } + + $order_by = new Google_Service_AnalyticsReporting_OrderBy(); + $order_by->setFieldName( $order_def['fieldName'] ); + $order_by->setSortOrder( $order_def['sortOrder'] ); + + return $order_by; + }, + // When just object is passed we need to convert it to an array of objects. + wp_is_numeric_array( $orderby ) ? $orderby : array( $orderby ) + ); + + $results = array_filter( $results ); + $results = array_values( $results ); + + return $results; + } + + /** + * Parses a response for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @param mixed $response Request response. + * + * @return mixed Parsed response data on success, or WP_Error on failure. + */ + protected function parse_data_response( Data_Request $data, $response ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:accounts-properties-profiles': + /* @var Google_Service_Analytics_Accounts $response listManagementAccounts response. */ + $accounts = (array) $response->getItems(); + $account_ids = array_map( + function ( Google_Service_Analytics_Account $account ) { + return $account->getId(); + }, + $accounts + ); + $properties_profiles = array( + 'properties' => array(), + 'profiles' => array(), + ); + + if ( empty( $accounts ) ) { + return array_merge( compact( 'accounts' ), $properties_profiles ); + } + + // Get the account ID from the saved settings. + $option = $this->get_settings()->get(); + $account_id = $option['accountID']; + // If the saved account ID is in the list of accounts the user has access to, it's a match. + if ( in_array( $account_id, $account_ids, true ) ) { + $properties_profiles = $this->get_data( 'properties-profiles', array( 'accountID' => $account_id ) ); + } else { + $account_summaries = $this->get_service( 'analytics' )->management_accountSummaries->listManagementAccountSummaries(); + $current_url = $this->context->get_reference_site_url(); + $current_urls = $this->permute_site_url( $current_url ); + + foreach ( $account_summaries as $account_summary ) { + $found_property = $this->find_property( $account_summary->getWebProperties(), '', $current_urls ); + if ( ! is_null( $found_property ) ) { + $properties_profiles = $this->get_data( 'properties-profiles', array( 'accountID' => $account_summary->getId() ) ); + break; + } + } + } + + if ( is_wp_error( $properties_profiles ) || ! $properties_profiles ) { + $properties_profiles = array( + 'properties' => array(), + 'profiles' => array(), + ); + } + + return array_merge( compact( 'accounts' ), $properties_profiles ); + case 'GET:goals': + if ( is_array( $response ) ) { + return $response; + } + // TODO: Parse this response to a regular array. + break; + case 'GET:profiles': + // TODO: Parse this response to a regular array. + $response = $response->getItems(); + + return $response; + case 'GET:properties-profiles': + /* @var Google_Service_Analytics_Webproperties $response listManagementWebproperties response. */ + $properties = (array) $response->getItems(); + $found_property = null; + $response = array( + 'properties' => $properties, + 'profiles' => array(), + ); + + if ( 0 === count( $properties ) ) { + return $response; + } + + $current_url = $this->context->get_reference_site_url(); + $current_urls = $this->permute_site_url( $current_url ); + $found_property = $this->find_property( $properties, '', $current_urls ); + + if ( ! is_null( $found_property ) ) { + $response['matchedProperty'] = $found_property; + } else { + $found_property = new Google_Service_Analytics_Webproperty(); + } + + // If no match is found, fetch profiles for the first property if available. + if ( ! $found_property->getAccountId() && $properties ) { + $found_property = array_shift( $properties ); + } elseif ( ! $found_property->getAccountId() ) { + // If no found property, skip the call to 'profiles' as it would be empty/fail. + return $response; + } + + $profiles = $this->get_data( + 'profiles', + array( + 'accountID' => $found_property->getAccountId(), + 'propertyID' => $found_property->getId(), + ) + ); + + if ( is_wp_error( $profiles ) ) { + return $profiles; + } + + $response['profiles'] = $profiles; + + return $response; + case 'GET:report': + // If AdSense metric successfully requested, set adsenseLinked to true. + if ( $this->is_adsense_request( $data ) ) { + $this->get_settings()->merge( array( 'adsenseLinked' => true ) ); + } + + return $response->getReports(); + case 'POST:create-account-ticket': + // Cache the create ticket id long enough to verify it upon completion of the terms of service. + set_transient( + self::PROVISION_ACCOUNT_TICKET_ID . '::' . get_current_user_id(), + $response->getId(), + 15 * MINUTE_IN_SECONDS + ); + return $response; + } + + return parent::parse_data_response( $data, $response ); + } + + /** + * Creates a new Analytics site request for the current site and given arguments. + * + * @since 1.0.0 + * @since 1.24.0 Added $dimension_filters + * + * @param array $args { + * Optional. Additional arguments. + * + * @type array $dimensions List of request dimensions. Default empty array. + * @type Google_Service_AnalyticsReporting_DimensionFilter[] $dimension_filters List of dimension filter instances for the specified request dimensions. Default empty array. + * @type string $start_date Start date in 'Y-m-d' format. Default empty string. + * @type string $end_date End date in 'Y-m-d' format. Default empty string. + * @type string $page Specific page URL to filter by. Default empty string. + * @type int $row_limit Limit of rows to return. Default empty string. + * } + * @return Google_Service_AnalyticsReporting_ReportRequest|WP_Error Analytics site request instance. + */ + protected function create_analytics_site_data_request( array $args = array() ) { + $args = wp_parse_args( + $args, + array( + 'dimensions' => array(), + 'dimension_filters' => array(), + 'start_date' => '', + 'end_date' => '', + 'page' => '', + 'row_limit' => '', + ) + ); + + $option = $this->get_settings()->get(); + $profile_id = $option['profileID']; + + $request = new Google_Service_AnalyticsReporting_ReportRequest(); + $request->setIncludeEmptyRows( true ); + $request->setViewId( $profile_id ); + + if ( ! empty( $args['dimensions'] ) ) { + $request->setDimensions( (array) $args['dimensions'] ); + } + + if ( ! empty( $args['start_date'] ) && ! empty( $args['end_date'] ) ) { + $date_range = new Google_Service_AnalyticsReporting_DateRange(); + $date_range->setStartDate( $args['start_date'] ); + $date_range->setEndDate( $args['end_date'] ); + $request->setDateRanges( array( $date_range ) ); + } + + $dimension_filter_clauses = array(); + + $hostnames = array_values( + array_unique( + array_map( + function ( $site_url ) { + return URL::parse( $site_url, PHP_URL_HOST ); + }, + $this->permute_site_url( $this->context->get_reference_site_url() ) + ) + ) + ); + + $dimension_filter = new Google_Service_AnalyticsReporting_DimensionFilter(); + $dimension_filter->setDimensionName( 'ga:hostname' ); + $dimension_filter->setOperator( 'IN_LIST' ); + $dimension_filter->setExpressions( $hostnames ); + $dimension_filter_clause = new Google_Service_AnalyticsReporting_DimensionFilterClause(); + $dimension_filter_clause->setFilters( array( $dimension_filter ) ); + $dimension_filter_clauses[] = $dimension_filter_clause; + + if ( ! empty( $args['dimension_filters'] ) ) { + $dimension_filters = $args['dimension_filters']; + $dimension_filter_clause = new Google_Service_AnalyticsReporting_DimensionFilterClause(); + $dimension_filter_clause->setFilters( $dimension_filters ); + $dimension_filter_clause->setOperator( 'AND' ); + $dimension_filter_clauses[] = $dimension_filter_clause; + } + + if ( ! empty( $args['page'] ) ) { + $dimension_filter = new Google_Service_AnalyticsReporting_DimensionFilter(); + $dimension_filter->setDimensionName( 'ga:pagePath' ); + $dimension_filter->setOperator( 'EXACT' ); + $args['page'] = str_replace( trim( $this->context->get_reference_site_url(), '/' ), '', esc_url_raw( $args['page'] ) ); + $dimension_filter->setExpressions( array( rawurldecode( $args['page'] ) ) ); + $dimension_filter_clause = new Google_Service_AnalyticsReporting_DimensionFilterClause(); + $dimension_filter_clause->setFilters( array( $dimension_filter ) ); + $dimension_filter_clauses[] = $dimension_filter_clause; + } + + $request->setDimensionFilterClauses( $dimension_filter_clauses ); + + if ( ! empty( $args['row_limit'] ) ) { + $request->setPageSize( $args['row_limit'] ); + } + + return $request; + } + + /** + * Sets up information about the module. + * + * @since 1.0.0 + * + * @return array Associative array of module info. + */ + protected function setup_info() { + return array( + 'slug' => 'analytics', + 'name' => _x( 'Analytics', 'Service name', 'google-site-kit' ), + 'description' => __( 'Get a deeper understanding of your customers. Google Analytics gives you the free tools you need to analyze data for your business in one place.', 'google-site-kit' ), + 'order' => 3, + 'homepage' => __( 'https://analytics.google.com/analytics/web', 'google-site-kit' ), + ); + } + + /** + * Gets the configured Analytics Reporting service object instance. + * + * @return Google_Service_AnalyticsReporting The Analytics Reporting API service. + */ + private function get_analyticsreporting_service() { + return $this->get_service( 'analyticsreporting' ); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now requires Google_Site_Kit_Client instance. + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + $google_proxy = new Google_Proxy( $this->context ); + return array( + 'analytics' => new Google_Service_Analytics( $client ), + 'analyticsreporting' => new Google_Service_AnalyticsReporting( $client ), + 'analyticsprovisioning' => new Google_Service_AnalyticsProvisioning( $client, $google_proxy->url() ), + ); + } + + /** + * Gets the provisioning redirect URI that listens for the Terms of Service redirect. + * + * @since 1.9.0 + * + * @return string Provisioning redirect URI. + */ + private function get_provisioning_redirect_uri() { + $google_proxy = new Google_Proxy( $this->context ); + return $google_proxy->get_site_fields()['analytics_redirect_uri']; + } + + /** + * Transforms an exception into a WP_Error object. + * + * @since 1.0.0 + * @since 1.70.0 $datapoint parameter is optional. + * + * @param Exception $e Exception object. + * @param string $datapoint Optional. Datapoint originally requested. Default is an empty string. + * @return WP_Error WordPress error object. + */ + protected function exception_to_error( Exception $e, $datapoint = '' ) { + $cache_ttl = false; + + if ( 'report' === $datapoint && $e instanceof Google_Service_Exception ) { + $errors = $e->getErrors(); + // If error is because of AdSense metric being requested, set adsenseLinked to false. + if ( isset( $errors[0]['message'] ) ) { + if ( $this->is_adsense_metric( substr( $errors[0]['message'], strlen( 'Restricted metric(s): ' ) ) ) ) { + $this->get_settings()->merge( array( 'adsenseLinked' => false ) ); + } + + if ( preg_match( '#^Restricted metric\(s\)\:#im', $errors[0]['message'] ) ) { + $cache_ttl = ( 10 * MINUTE_IN_SECONDS ); + } + } + } + + $error = parent::exception_to_error( $e, $datapoint ); + + if ( $cache_ttl && is_wp_error( $error ) ) { + $error_code = $error->get_error_code(); + if ( ! empty( $error->error_data[ $error_code ] ) ) { + $error->error_data[ $error_code ]['cacheTTL'] = $cache_ttl; + } else { + $error->add_data( + array( + 'cacheTTL' => $cache_ttl, + ), + $error_code + ); + } + } + + return $error; + } + + /** + * Determines whether the given request is for an adsense request. + * + * @param Data_Request $data Data request object. + * + * @return bool + */ + private function is_adsense_request( $data ) { + foreach ( (array) $data['metrics'] as $metric ) { + $metric = (array) $metric; + if ( isset( $metric['expression'] ) && $this->is_adsense_metric( $metric['expression'] ) ) { + return true; + } + } + + return false; + } + + /** + * Determines whether the given metric expression is for an AdSense metric. + * + * @since 1.8.0 + * + * @param string $metric Metric expression. + * @return bool True if AdSense metric, false otherwise. + */ + private function is_adsense_metric( $metric ) { + return 0 === strpos( $metric, 'ga:adsense' ); + } + + /** + * Outputs the user tracking opt-out script. + * + * This script opts out of all Google Analytics tracking, for all measurement IDs, regardless of implementation. + * E.g. via Tag Manager, etc. + * + * @since 1.5.0 + * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/user-opt-out + */ + private function print_tracking_opt_out() { + if ( ! $this->is_tracking_disabled() ) { + return; + } + $settings = $this->get_settings()->get(); + $account_id = $settings['accountID']; + $property_id = $settings['propertyID']; + + if ( $this->context->is_amp() ) : ?> + + + + + + + + + options ); + } + + /** + * Sets up the module's assets to register. + * + * @since 1.8.0 + * + * @return Asset[] List of Asset objects. + */ + protected function setup_assets() { + $base_url = $this->context->url( 'dist/assets/' ); + + return array( + new Script( + 'googlesitekit-modules-analytics', + array( + 'src' => $base_url . 'js/googlesitekit-modules-analytics.js', + 'dependencies' => array( + 'googlesitekit-vendor', + 'googlesitekit-api', + 'googlesitekit-data', + 'googlesitekit-modules', + 'googlesitekit-datastore-site', + 'googlesitekit-datastore-user', + 'googlesitekit-datastore-forms', + 'googlesitekit-components', + ), + ) + ), + ); + } + + /** + * Determines the Analytics account ID from a given Analytics property ID. + * + * @since 1.8.0 + * + * @param string $property_id Analytics property ID. + * @return string Analytics account ID, or empty string if invalid property ID. + */ + protected function parse_account_id( $property_id ) { + if ( ! preg_match( '/^UA-([0-9]+)-[0-9]+$/', $property_id, $matches ) ) { + return ''; + } + return $matches[1]; + } + + /** + * Registers the Analytics tag. + * + * @since 1.24.0 + */ + private function register_tag() { + $settings = $this->get_settings()->get(); + + if ( $this->context->is_amp() ) { + $tag = new AMP_Tag( $settings['propertyID'], self::MODULE_SLUG ); + } else { + $tag = new Web_Tag( $settings['propertyID'], self::MODULE_SLUG ); + } + + if ( $tag->is_tag_blocked() ) { + return; + } + + $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) ); + $tag->use_guard( new Tag_Guard( $this->get_settings() ) ); + $tag->use_guard( new Tag_Environment_Type_Guard() ); + + if ( $tag->can_register() ) { + $tag->set_anonymize_ip( $settings['anonymizeIP'] ); + $tag->set_home_domain( + URL::parse( $this->context->get_canonical_home_url(), PHP_URL_HOST ) + ); + $tag->set_ads_conversion_id( $settings['adsConversionID'] ); + + $tag->register(); + } + } + + /** + * Finds a property in the properties list. + * + * @since 1.31.0 + * + * @param array $properties An array of Analytics properties to search in. + * @param string $property_id Optional. The Analytics property ID. Default is the current property ID from the Analytics settings. + * @param array $urls Optional. An array of URLs that searched property can have. + * @return mixed A property instance on success, otherwise NULL. + */ + protected function find_property( array $properties, $property_id = '', array $urls = array() ) { + if ( strlen( $property_id ) === 0 ) { + $option = $this->get_settings()->get(); + $property_id = $option['propertyID']; + } + + foreach ( $properties as $property ) { + /* @var Google_Service_Analytics_Webproperty $property Property instance. */ + $id = $property->getId(); + $website_url = $property->getWebsiteUrl(); + $website_url = untrailingslashit( $website_url ); + + if ( $id === $property_id || ( 0 < count( $urls ) && in_array( $website_url, $urls, true ) ) ) { + return $property; + } + } + + return null; + } + + /** + * Populates Analytics settings using the incoming token response data. + * + * @since 1.50.0 + * + * @param array $token_response Token response data. + */ + public function handle_token_response_data( $token_response ) { + if ( empty( $token_response['analytics_configuration'] ) || $this->is_connected() ) { + return; + } + + $configuration = $token_response['analytics_configuration']; + if ( ! is_array( $configuration ) ) { + return; + } + + $keys_map = array( + 'ga_account_id' => 'accountID', + 'ua_property_id' => 'propertyID', + 'ua_internal_web_property_id' => 'internalWebPropertyID', + 'ua_profile_id' => 'profileID', + ); + + $settings = array(); + foreach ( $keys_map as $key => $setting ) { + if ( ! empty( $configuration[ $key ] ) && is_string( $configuration[ $key ] ) ) { + $settings[ $setting ] = $configuration[ $key ]; + } + } + + // Save new settings only if all keys are not empty. + if ( ! empty( $settings ) && count( $settings ) === 4 ) { + $this->get_settings()->merge( $settings ); + } + } + + /** + * Checks if the current user has access to the current configured service entity. + * + * @since 1.70.0 + * + * @return boolean|WP_Error + */ + public function check_service_entity_access() { + $data_request = array( + 'row_limit' => 1, + ); + + $request = $this->create_analytics_site_data_request( $data_request ); + + if ( is_wp_error( $request ) ) { + return $request; + } + + try { + $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); + $body->setReportRequests( array( $request ) ); + $this->get_analyticsreporting_service()->reports->batchGet( $body ); + } catch ( Exception $e ) { + if ( $e->getCode() === 403 ) { + return false; + } + return $this->exception_to_error( $e ); + } + + return true; + } + + /** + * Validates the report metrics. + * + * @since 1.82.0 + * + * @param Google_Service_AnalyticsReporting_Metric[] $metrics The metrics to validate. + * @throws Invalid_Report_Metrics_Exception Thrown if the metrics are invalid. + */ + protected function validate_report_metrics( $metrics ) { + if ( false === $this->is_using_shared_credentials ) { + return; + } + + $valid_metrics = apply_filters( + 'googlesitekit_shareable_analytics_metrics', + array( + 'ga:sessions', + 'ga:users', + 'ga:pageviews', + 'ga:uniquePageviews', + 'ga:bounceRate', + 'ga:avgSessionDuration', + 'ga:adsenseRevenue', + 'ga:adsenseECPM', + 'ga:adsensePageImpressions', + 'ga:goalCompletionsAll', + ) + ); + + $invalid_metrics = array_diff( + array_map( + function ( $metric ) { + return $metric->getExpression(); + }, + $metrics + ), + $valid_metrics + ); + + if ( count( $invalid_metrics ) > 0 ) { + $message = count( $invalid_metrics ) > 1 ? sprintf( + /* translators: %s: is replaced with a comma separated list of the invalid metrics. */ + __( + 'Unsupported metrics requested: %s', + 'google-site-kit' + ), + join( + /* translators: used between list items, there is a space after the comma. */ + __( ', ', 'google-site-kit' ), + $invalid_metrics + ) + ) : sprintf( + /* translators: %s: is replaced with the invalid metric. */ + __( + 'Unsupported metric requested: %s', + 'google-site-kit' + ), + $invalid_metrics + ); + + throw new Invalid_Report_Metrics_Exception( $message ); + } + } + + /** + * Validates the report dimensions. + * + * @since 1.82.0 + * + * @param Google_Service_AnalyticsReporting_Dimension[] $dimensions The dimensions to validate. + * @throws Invalid_Report_Dimensions_Exception Thrown if the dimensions are invalid. + */ + protected function validate_report_dimensions( $dimensions ) { + if ( false === $this->is_using_shared_credentials ) { + return; + } + + $valid_dimensions = apply_filters( + 'googlesitekit_shareable_analytics_dimensions', + array( + 'ga:date', + 'ga:pagePath', + 'ga:pageTitle', + 'ga:channelGrouping', + 'ga:country', + 'ga:deviceCategory', + 'ga:hostname', + ) + ); + + $invalid_dimensions = array_diff( + array_map( + function ( $dimension ) { + return $dimension->getName(); + }, + $dimensions + ), + $valid_dimensions + ); + + if ( count( $invalid_dimensions ) > 0 ) { + $message = count( $invalid_dimensions ) > 1 ? sprintf( + /* translators: %s: is replaced with a comma separated list of the invalid dimensions. */ + __( + 'Unsupported dimensions requested: %s', + 'google-site-kit' + ), + join( + /* translators: used between list items, there is a space after the comma. */ + __( ', ', 'google-site-kit' ), + $invalid_dimensions + ) + ) : sprintf( + /* translators: %s: is replaced with the invalid dimension. */ + __( + 'Unsupported dimension requested: %s', + 'google-site-kit' + ), + $invalid_dimensions + ); + + throw new Invalid_Report_Dimensions_Exception( $message ); + } + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/AMP_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/AMP_Tag.php new file mode 100644 index 000000000..f49b2462c --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/AMP_Tag.php @@ -0,0 +1,166 @@ +home_domain = $domain; + } + + /** + * Sets whether or not to anonymize IP addresses. + * + * @since 1.32.0 + * + * @param bool $anonymize_ip Whether to anonymize IP addresses or not. + */ + public function set_anonymize_ip( $anonymize_ip ) { + // Data from AMP documents is always IP anonymized. + // See https://support.google.com/analytics/answer/6343176. + } + + /** + * Sets the ads conversion ID. + * + * @since 1.32.0 + * + * @param string $ads_conversion_id Ads ID. + */ + public function set_ads_conversion_id( $ads_conversion_id ) { + $this->ads_conversion_id = $ads_conversion_id; + } + + /** + * Registers tag hooks. + * + * @since 1.24.0 + */ + public function register() { + $render = $this->get_method_proxy_once( 'render' ); + + // Which actions are run depends on the version of the AMP Plugin + // (https://amp-wp.org/) available. Version >=1.3 exposes a + // new, `amp_print_analytics` action. + // For all AMP modes, AMP plugin version >=1.3. + add_action( 'amp_print_analytics', $render ); + // For AMP Standard and Transitional, AMP plugin version <1.3. + add_action( 'wp_footer', $render, 20 ); + // For AMP Reader, AMP plugin version <1.3. + add_action( 'amp_post_template_footer', $render, 20 ); + // For Web Stories plugin. + add_action( 'web_stories_print_analytics', $render ); + + // Load amp-analytics component for AMP Reader. + $this->enqueue_amp_reader_component_script( 'amp-analytics', 'https://cdn.ampproject.org/v0/amp-analytics-0.1.js' ); + + $this->do_init_tag_action(); + } + + /** + * Outputs gtag tag. + * + * @since 1.24.0 + */ + protected function render() { + $config = array( + $this->tag_id => array( + 'groups' => 'default', + 'linker' => array( + 'domains' => array( $this->home_domain ), + ), + ), + ); + + if ( ! empty( $this->ads_conversion_id ) ) { + $config[ $this->ads_conversion_id ] = array( + 'groups' => 'default', + ); + } + + $gtag_amp_opt = array( + 'optoutElementId' => '__gaOptOutExtension', + 'vars' => array( + 'gtag_id' => $this->tag_id, + 'config' => $config, + ), + ); + + /** + * Filters the gtag configuration options for the amp-analytics tag. + * + * You can use the {@see 'googlesitekit_gtag_opt'} filter to do the same for gtag in non-AMP. + * + * @since 1.24.0 + * @see https://developers.google.com/gtagjs/devguide/amp + * + * @param array $gtag_amp_opt gtag config options for AMP. + */ + $gtag_amp_opt_filtered = apply_filters( 'googlesitekit_amp_gtag_opt', $gtag_amp_opt ); + + // Ensure gtag_id is set to the correct value. + if ( ! is_array( $gtag_amp_opt_filtered ) ) { + $gtag_amp_opt_filtered = $gtag_amp_opt; + } + + if ( ! isset( $gtag_amp_opt_filtered['vars'] ) || ! is_array( $gtag_amp_opt_filtered['vars'] ) ) { + $gtag_amp_opt_filtered['vars'] = $gtag_amp_opt['vars']; + } + + $gtag_amp_opt_filtered['vars']['gtag_id'] = $this->tag_id; + + printf( "\n\n", esc_html__( 'Google Analytics AMP snippet added by Site Kit', 'google-site-kit' ) ); + + printf( + '', + $this->get_tag_blocked_on_consent_attribute(), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + wp_json_encode( $gtag_amp_opt_filtered ) + ); + + printf( "\n\n", esc_html__( 'End Google Analytics AMP snippet added by Site Kit', 'google-site-kit' ) ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking.php new file mode 100644 index 000000000..a353a9672 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking.php @@ -0,0 +1,167 @@ +context = $context; + $this->event_list_registry = new Event_List_Registry(); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.18.0. + */ + public function register() { + add_action( + 'googlesitekit_analytics_init_tag', + function() { + $this->register_event_lists(); + add_action( + 'wp_footer', + function() { + $this->set_up_advanced_tracking(); + } + ); + } + ); + add_action( + 'googlesitekit_analytics_init_tag_amp', + function() { + $this->register_event_lists(); + add_filter( + 'googlesitekit_amp_gtag_opt', + function( $gtag_amp_opt ) { + return $this->set_up_advanced_tracking_amp( $gtag_amp_opt ); + } + ); + } + ); + } + + /** + * Returns the map of unique events. + * + * @since 1.18.0. + * + * @return array Map of Event instances, keyed by their unique ID. + */ + public function get_events() { + return $this->events; + } + + /** + * Injects javascript to track active events. + * + * @since 1.18.0. + */ + private function set_up_advanced_tracking() { + $this->compile_events(); + ( new Script_Injector( $this->context ) )->inject_event_script( $this->events ); + } + + /** + * Adds triggers to AMP configuration. + * + * @since 1.18.0. + * + * @param array $gtag_amp_opt gtag config options for AMP. + * @return array Filtered $gtag_amp_opt. + */ + private function set_up_advanced_tracking_amp( $gtag_amp_opt ) { + $this->compile_events(); + return ( new AMP_Config_Injector() )->inject_event_configurations( $gtag_amp_opt, $this->events ); + } + + /** + * Instantiates and registers event lists. + * + * @since 1.18.0. + */ + private function register_event_lists() { + /** + * Fires when the Advanced_Tracking class is ready to receive event lists. + * + * This means that Advanced_Tracking class stores the event lists in the Event_List_Registry instance. + * + * @since 1.18.0. + * + * @param Event_List_Registry $event_list_registry + */ + do_action( 'googlesitekit_analytics_register_event_lists', $this->event_list_registry ); + + foreach ( $this->event_list_registry->get_lists() as $event_list ) { + $event_list->register(); + } + } + + /** + * Compiles the list of Event objects. + * + * @since 1.18.0. + */ + private function compile_events() { + $this->events = array_reduce( + $this->event_list_registry->get_lists(), + function ( $events, Event_List $event_list ) { + return array_merge( $events, $event_list->get_events() ); + }, + array() + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php new file mode 100644 index 000000000..a0ee39257 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php @@ -0,0 +1,64 @@ + $event ) { + $event_config = $event->get_config(); + + $amp_trigger = array(); + if ( 'DOMContentLoaded' === $event_config['on'] ) { + $amp_trigger['on'] = 'visible'; + } else { + $amp_trigger['on'] = $event_config['on']; + $amp_trigger['selector'] = $event_config['selector']; + } + + $amp_trigger['vars'] = array(); + $amp_trigger['vars']['event_name'] = $event_config['action']; + if ( is_array( $event_config['metadata'] ) ) { + foreach ( $event_config['metadata'] as $key => $value ) { + $amp_trigger['vars'][ $key ] = $value; + } + } + + $gtag_amp_opt['triggers'][ $amp_trigger_key ] = $amp_trigger; + } + + return $gtag_amp_opt; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event.php new file mode 100644 index 000000000..ccf6e8a26 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event.php @@ -0,0 +1,109 @@ +config = $this->validate_config( $config ); + } + + /** + * Returns an associative event containing the event attributes. + * + * @since 1.18.0. + * + * @return array The configuration in JSON-serializable format. + */ + public function jsonSerialize() { + return $this->config; + } + + /** + * Returns the measurement event configuration. + * + * @since 1.18.0. + * + * @return array The config. + */ + public function get_config() { + return $this->config; + } + + /** + * Validates the configuration keys and value types. + * + * @since 1.18.0. + * + * @param array $config The event's configuration. + * @return array The event's configuration. + * @throws Exception Thrown when invalid keys or value type. + */ + private function validate_config( $config ) { + $valid_keys = array( + 'action', + 'selector', + 'on', + 'metadata', + ); + foreach ( $config as $key => $value ) { + if ( ! in_array( $key, $valid_keys, true ) ) { + throw new Exception( 'Invalid configuration parameter: ' . $key ); + } + } + if ( ! array_key_exists( 'metadata', $config ) ) { + $config['metadata'] = null; + } + if ( array_key_exists( 'on', $config ) && 'DOMContentLoaded' === $config['on'] ) { + $config['selector'] = ''; + } + foreach ( $valid_keys as $key ) { + if ( ! array_key_exists( $key, $config ) ) { + throw new Exception( 'Missed configuration parameter: ' . $key ); + } + } + return $config; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List.php new file mode 100644 index 000000000..bb96146f6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List.php @@ -0,0 +1,62 @@ +events[ $hash ] = $event; + } + + /** + * Gets the measurement events array. + * + * @since 1.18.0. + * + * @return array The map of events for this list, keyed by their unique ID. + */ + public function get_events() { + return $this->events; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php new file mode 100644 index 000000000..c200ade6d --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php @@ -0,0 +1,51 @@ +event_lists[] = $event_list; + } + + /** + * Gets the list of registered event lists. + * + * @since 1.18.0. + * + * @return Event_List[] The list of registered event lists. + */ + public function get_lists() { + return $this->event_lists; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Script_Injector.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Script_Injector.php new file mode 100644 index 000000000..b2a4166ae --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Script_Injector.php @@ -0,0 +1,78 @@ +context = $context; + } + + /** + * Creates list of measurement event configurations and javascript to inject. + * + * @since 1.18.0. + * + * @param array $events The map of Event objects, keyed by their unique ID. + */ + public function inject_event_script( $events ) { + if ( empty( $events ) ) { + return; + } + + list( $filename ) = Manifest::get( 'analytics-advanced-tracking' ); + if ( ! $filename ) { + // Get file contents of script and add it to the page, injecting event configurations into it. + $filename = 'analytics-advanced-tracking.js'; + + } + + $script_path = $this->context->path( "dist/assets/js/{$filename}" ); + + // phpcs:ignore WordPress.WP.AlternativeFunctions, WordPressVIPMinimum.Performance.FetchingRemoteData + $script_content = file_get_contents( $script_path ); + if ( ! $script_content ) { + return; + } + + $data_var = sprintf( + 'var _googlesitekitAnalyticsTrackingData = %s;', + wp_json_encode( array_values( $events ) ) + ); + BC_Functions::wp_print_inline_script_tag( $data_var . "\n" . $script_content ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Google_Service_AnalyticsProvisioning.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Google_Service_AnalyticsProvisioning.php new file mode 100644 index 000000000..c7fd69bb0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Google_Service_AnalyticsProvisioning.php @@ -0,0 +1,49 @@ +provisioning = new Proxy_Provisioning( + $this, + $this->serviceName, // phpcs:ignore WordPress.NamingConventions.ValidVariableName + 'provisioning', + array( + 'methods' => array( + 'createAccountTicket' => array( + 'path' => 'provisioning/createAccountTicket', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ), + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Account_Ticket.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Account_Ticket.php new file mode 100644 index 000000000..1c8c41fac --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Account_Ticket.php @@ -0,0 +1,79 @@ +site_id; + } + + /** + * Sets the site ID. + * + * @since 1.9.0 + * + * @param string $id The site id. + */ + public function setSiteId( $id ) { + $this->site_id = $id; + } + + /** + * Gets the site secret. + * + * @since 1.9.0 + */ + public function getSiteSecret() { + return $this->site_secret; + } + + /** + * Sets the site secret. + * + * @since 1.9.0 + * + * @param string $secret The site secret. + */ + public function setSiteSecret( $secret ) { + $this->site_secret = $secret; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Provisioning.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Provisioning.php new file mode 100644 index 000000000..e384a5f97 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Provisioning.php @@ -0,0 +1,40 @@ + $post_body ); + $params = array_merge( $params, $opt_params ); + return $this->call( 'createAccountTicket', array( $params ), 'Google\Site_Kit_Dependencies\Google_Service_Analytics_AccountTicket' ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Settings.php new file mode 100644 index 000000000..b69777edf --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Settings.php @@ -0,0 +1,231 @@ +register_legacy_keys_migration( + array( + 'accountId' => 'accountID', + 'profileId' => 'profileID', + 'propertyId' => 'propertyID', + 'internalWebPropertyId' => 'internalWebPropertyID', + ) + ); + + $this->register_owned_keys(); + + // Backwards compatibility with previous dedicated option. + add_filter( + 'default_option_' . self::OPTION, + function ( $default ) { + // Only fallback to the legacy option if the linked state is not filtered. + // This filter is documented below. + if ( is_null( apply_filters( 'googlesitekit_analytics_adsense_linked', null ) ) ) { + $default['adsenseLinked'] = (bool) $this->options->get( 'googlesitekit_analytics_adsense_linked' ); + } + + // `canUseSnippet` is a computed setting, so this sets the value if settings have not been saved yet. + // This filter is documented below. + $can_use_snippet = apply_filters( 'googlesitekit_analytics_can_use_snippet', true, '' ); + if ( is_bool( $can_use_snippet ) ) { + $default['canUseSnippet'] = $can_use_snippet; + } + + return $default; + } + ); + + add_filter( + 'option_' . self::OPTION, + function ( $option ) { + /** + * Filters the Google Analytics account ID to use. + * + * @since 1.0.0 + * + * @param string $account_id Empty by default, will fall back to the option value if not set. + */ + $account_id = apply_filters( 'googlesitekit_analytics_account_id', '' ); + if ( ! empty( $account_id ) ) { + $option['accountID'] = $account_id; + } + + /** + * Filters the Google Analytics property ID to use. + * + * @since 1.0.0 + * + * @param string $property_id Empty by default, will fall back to the option value if not set. + */ + $property_id = apply_filters( 'googlesitekit_analytics_property_id', '' ); + if ( ! empty( $property_id ) ) { + $option['propertyID'] = $property_id; + } + $property_id = isset( $option['propertyID'] ) ? $option['propertyID'] : ''; + + /** + * Filters the Google Analytics internal web property ID to use. + * + * @since 1.0.0 + * + * @param string $internal_web_property_id Empty by default, will fall back to the option value if not set. + */ + $internal_web_property_id = apply_filters( 'googlesitekit_analytics_internal_web_property_id', '' ); + if ( ! empty( $internal_web_property_id ) ) { + $option['internalWebPropertyID'] = $internal_web_property_id; + } + + /** + * Filters the Google Analytics profile / view ID to use. + * + * @since 1.0.0 + * + * @param string $profile_id Empty by default, will fall back to the option value if not set. + */ + $profile_id = apply_filters( 'googlesitekit_analytics_view_id', '' ); + if ( ! empty( $profile_id ) ) { + $option['profileID'] = $profile_id; + } + + /** + * Filters the linked state of AdSense with Analytics. + * + * This filter exists so that adsenseLinked can only be truthy if the AdSense module is active, + * regardless of the saved setting. + * + * @since 1.3.0 + * @param bool $adsense_linked Null by default, will fallback to the option value if not set. + */ + $adsense_linked = apply_filters( 'googlesitekit_analytics_adsense_linked', null ); + if ( is_bool( $adsense_linked ) ) { + $option['adsenseLinked'] = $adsense_linked; + } + + /** + * Filters the state of the can use snipped setting. + * + * This filter exists so that useSnippet can be restored to true when the Tag Manager module + * is disconnected, ensuring the Analytics snippet is always included. + * + * @since 1.28.0 + * @since 1.75.0 Added the `$property_id` parameter. + * + * @param bool $can_use_snippet Whether or not `useSnippet` can control snippet output. Default: `true`. + * @param string $property_id The current property ID. + */ + $can_use_snippet = apply_filters( 'googlesitekit_analytics_can_use_snippet', true, $property_id ); + if ( is_bool( $can_use_snippet ) ) { + $option['canUseSnippet'] = $can_use_snippet; + } + + return $option; + } + ); + } + + /** + * Returns keys for owned settings. + * + * @since 1.16.0 + * + * @return array An array of keys for owned settings. + */ + public function get_owned_keys() { + return array( + 'accountID', + 'internalWebPropertyID', + 'profileID', + 'propertyID', + ); + } + + /** + * Gets the default value. + * + * @since 1.2.0 + * + * @return array + */ + protected function get_default() { + return array( + 'ownerID' => 0, + 'accountID' => '', + 'adsenseLinked' => false, + 'adsConversionID' => '', + 'anonymizeIP' => true, + 'internalWebPropertyID' => '', + 'profileID' => '', + 'propertyID' => '', + 'trackingDisabled' => array( 'loggedinUsers' ), + 'useSnippet' => true, + 'canUseSnippet' => true, + ); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.6.0 + * + * @return callable|null + */ + protected function get_sanitize_callback() { + return function( $option ) { + if ( is_array( $option ) ) { + if ( isset( $option['useSnippet'] ) ) { + $option['useSnippet'] = (bool) $option['useSnippet']; + } + if ( isset( $option['canUseSnippet'] ) ) { + $option['canUseSnippet'] = (bool) $option['canUseSnippet']; + } + if ( isset( $option['anonymizeIP'] ) ) { + $option['anonymizeIP'] = (bool) $option['anonymizeIP']; + } + if ( isset( $option['trackingDisabled'] ) ) { + // Prevent other options from being saved if 'loggedinUsers' is selected. + if ( in_array( 'loggedinUsers', $option['trackingDisabled'], true ) ) { + $option['trackingDisabled'] = array( 'loggedinUsers' ); + } else { + $option['trackingDisabled'] = (array) $option['trackingDisabled']; + } + } + if ( isset( $option['adsenseLinked'] ) ) { + $option['adsenseLinked'] = (bool) $option['adsenseLinked']; + } + } + return $option; + }; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Guard.php new file mode 100644 index 000000000..5f2879405 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Guard.php @@ -0,0 +1,36 @@ +settings->get(); + return $settings['canUseSnippet'] && ! empty( $settings['useSnippet'] ) && ! empty( $settings['propertyID'] ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Interface.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Interface.php new file mode 100644 index 000000000..19ecef80a --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Interface.php @@ -0,0 +1,47 @@ +home_domain = $domain; + } + + /** + * Sets whether or not to anonymize IP addresses. + * + * @since 1.24.0 + * + * @param bool $anonymize_ip Whether to anonymize IP addresses or not. + */ + public function set_anonymize_ip( $anonymize_ip ) { + $this->anonymize_ip = (bool) $anonymize_ip; + } + + /** + * Sets the ads conversion ID. + * + * @since 1.32.0 + * + * @param string $ads_conversion_id Ads ID. + */ + public function set_ads_conversion_id( $ads_conversion_id ) { + $this->ads_conversion_id = $ads_conversion_id; + } + + /** + * Registers tag hooks. + * + * @since 1.24.0 + */ + public function register() { + add_action( 'wp_enqueue_scripts', $this->get_method_proxy( 'enqueue_gtag_script' ) ); + add_filter( + 'wp_resource_hints', + $this->get_dns_prefetch_hints_callback( '//www.googletagmanager.com' ), + 10, + 2 + ); + + $this->do_init_tag_action(); + } + + /** + * Outputs gtag snippet. + * + * @since 1.24.0 + */ + protected function render() { + // Do nothing, gtag script is enqueued. + } + + /** + * Enqueues gtag script. + * + * @since 1.24.0 + */ + protected function enqueue_gtag_script() { + $gtag_opt = array(); + $gtag_src = 'https://www.googletagmanager.com/gtag/js?id=' . rawurlencode( $this->tag_id ); + + // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion + wp_enqueue_script( 'google_gtagjs', $gtag_src, false, null, false ); + wp_script_add_data( 'google_gtagjs', 'script_execution', 'async' ); + wp_add_inline_script( 'google_gtagjs', 'window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}' ); + + if ( ! empty( $this->home_domain ) ) { + $gtag_opt['linker'] = array( 'domains' => array( $this->home_domain ) ); + } + + if ( $this->anonymize_ip ) { + // See https://developers.google.com/analytics/devguides/collection/gtagjs/ip-anonymization. + $gtag_opt['anonymize_ip'] = true; + } + + /** + * Filters the gtag configuration options for the Analytics snippet. + * + * You can use the {@see 'googlesitekit_amp_gtag_opt'} filter to do the same for gtag in AMP. + * + * @since 1.24.0 + * + * @see https://developers.google.com/gtagjs/devguide/configure + * + * @param array $gtag_opt gtag config options. + */ + $gtag_opt = apply_filters( 'googlesitekit_gtag_opt', $gtag_opt ); + + if ( ! empty( $gtag_opt['linker'] ) ) { + $linker = wp_json_encode( $gtag_opt['linker'] ); + $linker = sprintf( "gtag('set', 'linker', %s );", $linker ); + wp_add_inline_script( 'google_gtagjs', $linker ); + } + + unset( $gtag_opt['linker'] ); + + wp_add_inline_script( 'google_gtagjs', 'gtag("js", new Date());' ); + wp_add_inline_script( 'google_gtagjs', 'gtag("set", "developer_id.dZTNiMT", true);' ); // Site Kit developer ID. + + if ( empty( $gtag_opt ) ) { + $config = sprintf( 'gtag("config", "%s");', esc_js( $this->tag_id ) ); + wp_add_inline_script( 'google_gtagjs', $config ); + } else { + $config = sprintf( 'gtag("config", "%s", %s);', esc_js( $this->tag_id ), wp_json_encode( $gtag_opt ) ); + wp_add_inline_script( 'google_gtagjs', $config ); + } + + $this->add_inline_ads_conversion_id_config(); + + $block_on_consent_attrs = $this->get_tag_blocked_on_consent_attribute(); + + $filter_google_gtagjs = function ( $tag, $handle ) use ( $block_on_consent_attrs, $gtag_src ) { + if ( 'google_gtagjs' !== $handle ) { + return $tag; + } + + $snippet_comment_begin = sprintf( "\n\n", esc_html__( 'Google Analytics snippet added by Site Kit', 'google-site-kit' ) ); + $snippet_comment_end = sprintf( "\n\n", esc_html__( 'End Google Analytics snippet added by Site Kit', 'google-site-kit' ) ); + + if ( $block_on_consent_attrs ) { + $tag = str_replace( + array( + " + + get_settings()->get(); + + return array( + 'optimize_id' => array( + 'label' => __( 'Optimize Container ID', 'google-site-kit' ), + 'value' => $settings['optimizeID'], + 'debug' => Debug_Data::redact_debug_value( $settings['optimizeID'], 7 ), + ), + ); + } + + /** + * Adds AMP experiment script if opted in. + * + * @since 1.0.0 + * + * @param array $data AMP template data. + * @return array Filtered $data. + */ + protected function amp_data_load_experiment_component( $data ) { + $settings = $this->get_settings()->get(); + + if ( $settings['ampExperimentJSON'] ) { + $data['amp_component_scripts']['amp-experiment'] = 'https://cdn.ampproject.org/v0/amp-experiment-0.1.js'; + } + + return $data; + } + + /** + * Sets up information about the module. + * + * @since 1.0.0 + * + * @return array Associative array of module info. + */ + protected function setup_info() { + return array( + 'slug' => 'optimize', + 'name' => _x( 'Optimize', 'Service name', 'google-site-kit' ), + 'description' => __( 'Create free A/B tests that help you drive metric-based design solutions to your site', 'google-site-kit' ), + 'order' => 5, + 'homepage' => __( 'https://optimize.google.com/optimize/home/', 'google-site-kit' ), + 'depends_on' => array( 'analytics' ), + ); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now requires Google_Site_Kit_Client instance. + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + return array(); + } + + /** + * Sets up the module's settings instance. + * + * @since 1.2.0 + * + * @return Module_Settings + */ + protected function setup_settings() { + return new Settings( $this->options ); + } + + /** + * Sets up the module's assets to register. + * + * @since 1.10.0 + * + * @return Asset[] List of Asset objects. + */ + protected function setup_assets() { + $base_url = $this->context->url( 'dist/assets/' ); + + return array( + new Script( + 'googlesitekit-modules-optimize', + array( + 'src' => $base_url . 'js/googlesitekit-modules-optimize.js', + 'dependencies' => array( + 'googlesitekit-vendor', + 'googlesitekit-api', + 'googlesitekit-data', + 'googlesitekit-modules', + 'googlesitekit-datastore-site', + 'googlesitekit-datastore-forms', + 'googlesitekit-components', + ), + ) + ), + ); + } + + /** + * Registers the Optimize tag. + * + * @since 1.39.0 + */ + private function register_tag() { + $is_amp = $this->context->is_amp(); + $module_settings = $this->get_settings(); + $settings = $module_settings->get(); + + if ( $is_amp ) { + return false; + } + + $tag = new Web_Tag( $settings['optimizeID'], self::MODULE_SLUG ); + + if ( ! $tag->is_tag_blocked() ) { + $tag->use_guard( new Tag_Guard( $module_settings ) ); + + if ( $tag->can_register() ) { + $tag->register(); + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Settings.php new file mode 100644 index 000000000..cb91b7229 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Settings.php @@ -0,0 +1,112 @@ +register_legacy_keys_migration( + array( + 'AMPExperimentJson' => 'ampExperimentJSON', + 'ampExperimentJson' => 'ampExperimentJSON', + 'optimize_id' => 'optimizeID', + 'optimizeId' => 'optimizeID', + ) + ); + + $this->register_owned_keys(); + + add_filter( + 'option_' . self::OPTION, + function ( $option ) { + // Migrate legacy values where this was saved as decoded JSON object. + if ( is_array( $option ) && array_key_exists( 'ampExperimentJSON', $option ) && ! is_string( $option['ampExperimentJSON'] ) ) { + if ( empty( $option['ampExperimentJSON'] ) ) { + $option['ampExperimentJSON'] = ''; + } else { + $option['ampExperimentJSON'] = wp_json_encode( $option['ampExperimentJSON'] ); + } + } + + return $option; + } + ); + } + + /** + * Returns keys for owned settings. + * + * @since 1.16.0 + * + * @return array An array of keys for owned settings. + */ + public function get_owned_keys() { + return array( + 'optimizeID', + ); + } + + /** + * Gets the default value. + * + * @since 1.2.0 + * + * @return array + */ + protected function get_default() { + return array( + 'ownerID' => 0, + 'ampExperimentJSON' => '', + 'optimizeID' => '', + 'placeAntiFlickerSnippet' => false, + ); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.39.0 + * + * @return callable|null + */ + protected function get_sanitize_callback() { + return function( $option ) { + if ( is_array( $option ) ) { + if ( isset( $option['placeAntiFlickerSnippet'] ) ) { + $option['placeAntiFlickerSnippet'] = (bool) $option['placeAntiFlickerSnippet']; + } + } + return $option; + }; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Tag_Guard.php new file mode 100644 index 000000000..1e9845329 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Tag_Guard.php @@ -0,0 +1,41 @@ +settings->get(); + + if ( ! isset( $settings['placeAntiFlickerSnippet'] ) ) { + return false; + } + + return $settings['placeAntiFlickerSnippet']; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Web_Tag.php new file mode 100644 index 000000000..ffc9f0038 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Web_Tag.php @@ -0,0 +1,62 @@ +get_method_proxy_once( 'render' ), 1 ); + + $this->do_init_tag_action(); + } + + /** + * Outputs the Optimize anti-flicker script tag. + * + * @since 1.39.0 + */ + protected function render() { + + $anti_flicker_script = sprintf( + "(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date; + h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')}; + (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c; + })(window,document.documentElement,'async-hide','dataLayer',4000, + {'%s':true});", + esc_js( $this->tag_id ) + ); + + printf( "\n\n", esc_html__( 'Anti-flicker snippet added by Site Kit', 'google-site-kit' ) ); + echo ''; + BC_Functions::wp_print_inline_script_tag( $anti_flicker_script ); + printf( "\n\n", esc_html__( 'End Anti-flicker snippet added by Site Kit', 'google-site-kit' ) ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights.php b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights.php new file mode 100644 index 000000000..ecd1fa575 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights.php @@ -0,0 +1,228 @@ +get_settings()->delete(); + } + + /** + * Gets map of datapoint to definition data for each. + * + * @since 1.12.0 + * + * @return array Map of datapoints to their definitions. + */ + protected function get_datapoint_definitions() { + return array( + 'GET:pagespeed' => array( + 'service' => 'pagespeedonline', + 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ), + ), + ); + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure. + * + * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist. + */ + protected function create_data_request( Data_Request $data ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:pagespeed': + if ( empty( $data['strategy'] ) ) { + return new WP_Error( + 'missing_required_param', + sprintf( + /* translators: %s: Missing parameter name */ + __( 'Request parameter is empty: %s.', 'google-site-kit' ), + 'strategy' + ), + array( 'status' => 400 ) + ); + } + + $valid_strategies = array( 'mobile', 'desktop' ); + + if ( ! in_array( $data['strategy'], $valid_strategies, true ) ) { + return new WP_Error( + 'invalid_param', + sprintf( + /* translators: 1: Invalid parameter name, 2: list of valid values */ + __( 'Request parameter %1$s is not one of %2$s', 'google-site-kit' ), + 'strategy', + implode( ', ', $valid_strategies ) + ), + array( 'status' => 400 ) + ); + } + + if ( ! empty( $data['url'] ) ) { + $page_url = $data['url']; + } else { + $page_url = $this->context->get_reference_site_url(); + } + + $service = $this->get_service( 'pagespeedonline' ); + + return $service->pagespeedapi->runpagespeed( + $page_url, + array( + 'locale' => $this->context->get_locale( 'site', 'language-code' ), + 'strategy' => $data['strategy'], + ) + ); + } + + return parent::create_data_request( $data ); + } + + /** + * Sets up the module's assets to register. + * + * @since 1.9.0 + * + * @return Asset[] List of Asset objects. + */ + protected function setup_assets() { + $base_url = $this->context->url( 'dist/assets/' ); + + return array( + new Script( + 'googlesitekit-modules-pagespeed-insights', + array( + 'src' => $base_url . 'js/googlesitekit-modules-pagespeed-insights.js', + 'dependencies' => array( + 'googlesitekit-vendor', + 'googlesitekit-api', + 'googlesitekit-data', + 'googlesitekit-modules', + 'googlesitekit-datastore-site', + 'googlesitekit-components', + ), + ) + ), + ); + } + + + /** + * Sets up information about the module. + * + * @since 1.0.0 + * + * @return array Associative array of module info. + */ + protected function setup_info() { + return array( + 'slug' => 'pagespeed-insights', + 'name' => _x( 'PageSpeed Insights', 'Service name', 'google-site-kit' ), + 'description' => __( 'Google PageSpeed Insights gives you metrics about performance, accessibility, SEO and PWA', 'google-site-kit' ), + 'order' => 4, + 'homepage' => __( 'https://pagespeed.web.dev', 'google-site-kit' ), + ); + } + + /** + * Sets up the module's settings instance. + * + * @since 1.49.0 + * + * @return Module_Settings + */ + protected function setup_settings() { + return new Settings( $this->options ); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now requires Google_Site_Kit_Client instance. + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + return array( + 'pagespeedonline' => new Google_Service_PagespeedInsights( $client ), + ); + } + + /** + * Gets required Google OAuth scopes for the module. + * + * @return array List of Google OAuth scopes. + * @since 1.0.0 + */ + public function get_scopes() { + return array( + 'openid', + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights/Settings.php new file mode 100644 index 000000000..94425ea87 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights/Settings.php @@ -0,0 +1,36 @@ + 0 ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Search_Console.php b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console.php new file mode 100644 index 000000000..84d92276b --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console.php @@ -0,0 +1,600 @@ +register_scopes_hook(); + + // Detect and store Search Console property when receiving token for the first time. + add_action( + 'googlesitekit_authorize_user', + function( array $token_response ) { + if ( ! current_user_can( Permissions::SETUP ) ) { + return; + } + + // If the response includes the Search Console property, set that. + // But only if it is being set for the first time or if Search Console + // has no owner or the current user is the owner. + if ( ! empty( $token_response['search_console_property'] ) && + ( empty( $this->get_property_id() ) || ( in_array( $this->get_owner_id(), array( 0, get_current_user_id() ), true ) ) ) ) { + $this->get_settings()->merge( + array( 'propertyID' => $token_response['search_console_property'] ) + ); + return; + } + + // Otherwise try to detect if there isn't one set already. + $property_id = $this->get_property_id() ?: $this->detect_property_id(); + if ( ! $property_id ) { + return; + } + + $this->get_settings()->merge( + array( 'propertyID' => $property_id ) + ); + } + ); + + // Ensure that a Search Console property must be set at all times. + add_filter( + 'googlesitekit_setup_complete', + function( $complete ) { + if ( ! $complete ) { + return $complete; + } + + return (bool) $this->get_property_id(); + } + ); + + // Provide Search Console property information to JavaScript. + add_filter( + 'googlesitekit_setup_data', + function ( $data ) { + $data['hasSearchConsoleProperty'] = (bool) $this->get_property_id(); + + return $data; + }, + 11 + ); + } + + /** + * Gets required Google OAuth scopes for the module. + * + * @since 1.0.0 + * + * @return array List of Google OAuth scopes. + */ + public function get_scopes() { + return array( + 'https://www.googleapis.com/auth/webmasters', // The scope for the Search Console remains the legacy webmasters scope. + ); + } + + /** + * Gets an array of debug field definitions. + * + * @since 1.5.0 + * + * @return array + */ + public function get_debug_fields() { + return array( + 'search_console_property' => array( + 'label' => __( 'Search Console property', 'google-site-kit' ), + 'value' => $this->get_property_id(), + ), + ); + } + + /** + * Gets map of datapoint to definition data for each. + * + * @since 1.12.0 + * + * @return array Map of datapoints to their definitions. + */ + protected function get_datapoint_definitions() { + return array( + 'GET:matched-sites' => array( 'service' => 'searchconsole' ), + 'GET:searchanalytics' => array( + 'service' => 'searchconsole', + 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ), + ), + 'POST:site' => array( 'service' => 'searchconsole' ), + 'GET:sites' => array( 'service' => 'searchconsole' ), + ); + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure. + * + * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist. + */ + protected function create_data_request( Data_Request $data ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:matched-sites': + return $this->get_searchconsole_service()->sites->listSites(); + case 'GET:searchanalytics': + $start_date = $data['startDate']; + $end_date = $data['endDate']; + if ( ! strtotime( $start_date ) || ! strtotime( $end_date ) ) { + list ( $start_date, $end_date ) = $this->parse_date_range( + $data['dateRange'] ?: 'last-28-days', + $data['compareDateRanges'] ? 2 : 1, + 1 // Offset. + ); + } + + $data_request = array( + 'start_date' => $start_date, + 'end_date' => $end_date, + ); + + if ( ! empty( $data['url'] ) ) { + $data_request['page'] = ( new Google_URL_Normalizer() )->normalize_url( $data['url'] ); + } + + if ( isset( $data['limit'] ) ) { + $data_request['row_limit'] = $data['limit']; + } + + $dimensions = $this->parse_string_list( $data['dimensions'] ); + if ( is_array( $dimensions ) && ! empty( $dimensions ) ) { + $data_request['dimensions'] = $dimensions; + } + + return $this->create_search_analytics_data_request( $data_request ); + case 'POST:site': + if ( empty( $data['siteURL'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'siteURL' ), + array( 'status' => 400 ) + ); + } + + $url_normalizer = new Google_URL_Normalizer(); + + $site_url = $data['siteURL']; + if ( 0 === strpos( $site_url, 'sc-domain:' ) ) { // Domain property. + $site_url = 'sc-domain:' . $url_normalizer->normalize_url( str_replace( 'sc-domain:', '', $site_url, 1 ) ); + } else { // URL property. + $site_url = $url_normalizer->normalize_url( trailingslashit( $site_url ) ); + } + + return function () use ( $site_url ) { + $restore_defer = $this->with_client_defer( false ); + + try { + // If the site does not exist in the account, an exception will be thrown. + $site = $this->get_searchconsole_service()->sites->get( $site_url ); + } catch ( Google_Service_Exception $exception ) { + // If we got here, the site does not exist in the account, so we will add it. + /* @var ResponseInterface $response Response object. */ + $response = $this->get_searchconsole_service()->sites->add( $site_url ); + + if ( 204 !== $response->getStatusCode() ) { + return new WP_Error( + 'failed_to_add_site_to_search_console', + __( 'Error adding the site to Search Console.', 'google-site-kit' ), + array( 'status' => 500 ) + ); + } + + // Fetch the site again now that it exists. + $site = $this->get_searchconsole_service()->sites->get( $site_url ); + } + + $restore_defer(); + $this->get_settings()->merge( array( 'propertyID' => $site_url ) ); + + return array( + 'siteURL' => $site->getSiteUrl(), + 'permissionLevel' => $site->getPermissionLevel(), + ); + }; + case 'GET:sites': + return $this->get_searchconsole_service()->sites->listSites(); + } + + return parent::create_data_request( $data ); + } + + /** + * Parses a response for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @param mixed $response Request response. + * + * @return mixed Parsed response data on success, or WP_Error on failure. + */ + protected function parse_data_response( Data_Request $data, $response ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:matched-sites': + /* @var Google_Service_SearchConsole_SitesListResponse $response Response object. */ + $entries = $this->map_sites( (array) $response->getSiteEntry() ); + $strict = filter_var( $data['strict'], FILTER_VALIDATE_BOOLEAN ); + + $current_url = $this->context->get_reference_site_url(); + if ( ! $strict ) { + $current_url = untrailingslashit( $current_url ); + $current_url = $this->strip_url_scheme( $current_url ); + $current_url = $this->strip_domain_www( $current_url ); + } + + $sufficient_permission_levels = array( + 'siteRestrictedUser', + 'siteOwner', + 'siteFullUser', + ); + + return array_values( + array_filter( + $entries, + function ( array $entry ) use ( $current_url, $sufficient_permission_levels, $strict ) { + if ( 0 === strpos( $entry['siteURL'], 'sc-domain:' ) ) { + $match = $this->is_domain_match( substr( $entry['siteURL'], strlen( 'sc-domain:' ) ), $current_url ); + } else { + $site_url = untrailingslashit( $entry['siteURL'] ); + if ( ! $strict ) { + $site_url = $this->strip_url_scheme( $site_url ); + $site_url = $this->strip_domain_www( $site_url ); + } + + $match = $this->is_url_match( $site_url, $current_url ); + } + return $match && in_array( $entry['permissionLevel'], $sufficient_permission_levels, true ); + } + ) + ); + case 'GET:searchanalytics': + return $response->getRows(); + case 'GET:sites': + /* @var Google_Service_SearchConsole_SitesListResponse $response Response object. */ + return $this->map_sites( (array) $response->getSiteEntry() ); + } + + return parent::parse_data_response( $data, $response ); + } + + /** + * Map Site model objects to associative arrays used for API responses. + * + * @param array $sites Site objects. + * + * @return array + */ + private function map_sites( $sites ) { + return array_map( + function ( Google_Service_SearchConsole_WmxSite $site ) { + return array( + 'siteURL' => $site->getSiteUrl(), + 'permissionLevel' => $site->getPermissionLevel(), + ); + }, + $sites + ); + } + + /** + * Creates a new Search Console analytics request for the current site and given arguments. + * + * @since 1.0.0 + * + * @param array $args { + * Optional. Additional arguments. + * + * @type array $dimensions List of request dimensions. Default empty array. + * @type string $start_date Start date in 'Y-m-d' format. Default empty string. + * @type string $end_date End date in 'Y-m-d' format. Default empty string. + * @type string $page Specific page URL to filter by. Default empty string. + * @type int $row_limit Limit of rows to return. Default 1000. + * } + * @return RequestInterface Search Console analytics request instance. + */ + protected function create_search_analytics_data_request( array $args = array() ) { + $args = wp_parse_args( + $args, + array( + 'dimensions' => array(), + 'start_date' => '', + 'end_date' => '', + 'page' => '', + 'row_limit' => 1000, + ) + ); + + $property_id = $this->get_property_id(); + + $request = new Google_Service_SearchConsole_SearchAnalyticsQueryRequest(); + if ( ! empty( $args['dimensions'] ) ) { + $request->setDimensions( (array) $args['dimensions'] ); + } + if ( ! empty( $args['start_date'] ) ) { + $request->setStartDate( $args['start_date'] ); + } + if ( ! empty( $args['end_date'] ) ) { + $request->setEndDate( $args['end_date'] ); + } + + $request->setDataState( 'all' ); + + $filters = array(); + + // If domain property, limit data to URLs that are part of the current site. + if ( 0 === strpos( $property_id, 'sc-domain:' ) ) { + $scope_site_filter = new Google_Service_SearchConsole_ApiDimensionFilter(); + $scope_site_filter->setDimension( 'page' ); + $scope_site_filter->setOperator( 'contains' ); + $scope_site_filter->setExpression( esc_url_raw( $this->context->get_reference_site_url() ) ); + $filters[] = $scope_site_filter; + } + + // If specific URL requested, limit data to that URL. + if ( ! empty( $args['page'] ) ) { + $single_url_filter = new Google_Service_SearchConsole_ApiDimensionFilter(); + $single_url_filter->setDimension( 'page' ); + $single_url_filter->setOperator( 'equals' ); + $single_url_filter->setExpression( rawurldecode( esc_url_raw( $args['page'] ) ) ); + $filters[] = $single_url_filter; + } + + // If there are relevant filters, add them to the request. + if ( ! empty( $filters ) ) { + $filter_group = new Google_Service_SearchConsole_ApiDimensionFilterGroup(); + $filter_group->setGroupType( 'and' ); + $filter_group->setFilters( $filters ); + $request->setDimensionFilterGroups( array( $filter_group ) ); + } + + if ( ! empty( $args['row_limit'] ) ) { + $request->setRowLimit( $args['row_limit'] ); + } + + return $this->get_searchconsole_service() + ->searchanalytics + ->query( $property_id, $request ); + } + + /** + * Gets the property ID. + * + * @since 1.3.0 + * + * @return string Property ID URL if set, or empty string. + */ + protected function get_property_id() { + $option = $this->get_settings()->get(); + + return $option['propertyID']; + } + + /** + * Detects the property ID to use for this site. + * + * This method runs a Search Console API request. The determined ID should therefore be stored and accessed through + * {@see Search_Console::get_property_id()} instead. + * + * @since 1.3.0 + * + * @return string Property ID, or empty string if none found. + */ + protected function detect_property_id() { + $properties = $this->get_data( 'matched-sites', array( 'strict' => 'yes' ) ); + if ( is_wp_error( $properties ) || ! $properties ) { + return ''; + } + + // If there are multiple, prefer URL property over domain property. + if ( count( $properties ) > 1 ) { + $url_properties = array_filter( + $properties, + function( $property ) { + return 0 !== strpos( $property['siteURL'], 'sc-domain:' ); + } + ); + if ( count( $url_properties ) > 0 ) { + $properties = $url_properties; + } + } + + $property = array_shift( $properties ); + return $property['siteURL']; + } + + /** + * Sets up information about the module. + * + * @since 1.0.0 + * + * @return array Associative array of module info. + */ + protected function setup_info() { + return array( + 'slug' => 'search-console', + 'name' => _x( 'Search Console', 'Service name', 'google-site-kit' ), + 'description' => __( 'Google Search Console and helps you understand how Google views your site and optimize its performance in search results.', 'google-site-kit' ), + 'order' => 1, + 'homepage' => __( 'https://search.google.com/search-console', 'google-site-kit' ), + ); + } + + /** + * Get the configured SearchConsole service instance. + * + * @since 1.25.0 + * + * @return Google_Service_SearchConsole The Search Console API service. + */ + private function get_searchconsole_service() { + return $this->get_service( 'searchconsole' ); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now requires Google_Site_Kit_Client instance. + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + return array( + 'searchconsole' => new Google_Service_SearchConsole( $client ), + ); + } + + /** + * Sets up the module's settings instance. + * + * @since 1.3.0 + * + * @return Module_Settings + */ + protected function setup_settings() { + return new Settings( $this->options ); + } + + /** + * Sets up the module's assets to register. + * + * @since 1.9.0 + * + * @return Asset[] List of Asset objects. + */ + protected function setup_assets() { + $base_url = $this->context->url( 'dist/assets/' ); + + return array( + new Script( + 'googlesitekit-modules-search-console', + array( + 'src' => $base_url . 'js/googlesitekit-modules-search-console.js', + 'dependencies' => array( + 'googlesitekit-vendor', + 'googlesitekit-api', + 'googlesitekit-data', + 'googlesitekit-modules', + 'googlesitekit-components', + ), + ) + ), + ); + } + + /** + * Returns TRUE to indicate that this module should be always active. + * + * @since 1.49.0 + * + * @return bool Returns `true` indicating that this module should be activated all the time. + */ + public static function is_force_active() { + return true; + } + + /** + * Checks if the current user has access to the current configured service entity. + * + * @since 1.70.0 + * + * @return boolean|WP_Error + */ + public function check_service_entity_access() { + $data_request = array( + 'start_date' => gmdate( 'Y-m-d' ), + 'end_date' => gmdate( 'Y-m-d' ), + 'row_limit' => 1, + ); + + try { + $this->create_search_analytics_data_request( $data_request ); + } catch ( Exception $e ) { + if ( $e->getCode() === 403 ) { + return false; + } + return $this->exception_to_error( $e ); + } + + return true; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Search_Console/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console/Settings.php new file mode 100644 index 000000000..8fa09b65d --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console/Settings.php @@ -0,0 +1,77 @@ +register_owned_keys(); + + // Backwards compatibility with previous dedicated option. + add_filter( + 'default_option_' . self::OPTION, + function ( $default ) { + $default['propertyID'] = $this->options->get( 'googlesitekit_search_console_property' ) ?: ''; + + return $default; + } + ); + } + + /** + * Gets the default value. + * + * @since 1.3.0 + * + * @return array + */ + protected function get_default() { + return array( + 'propertyID' => '', + 'ownerID' => '', + ); + } + + /** + * Returns keys for owned settings. + * + * @since 1.31.0 + * + * @return array An array of keys for owned settings. + */ + public function get_owned_keys() { + return array( + 'propertyID', + ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Site_Verification.php b/wp-content/plugins/google-site-kit/includes/Modules/Site_Verification.php new file mode 100644 index 000000000..3338d1a49 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Site_Verification.php @@ -0,0 +1,506 @@ +register_scopes_hook(); + + add_action( + 'googlesitekit_verify_site_ownership', + $this->get_method_proxy( 'handle_verification_token' ), + 10, + 2 + ); + + $print_site_verification_meta = function() { + $this->print_site_verification_meta(); + }; + + add_action( 'wp_head', $print_site_verification_meta ); + add_action( 'login_head', $print_site_verification_meta ); + + add_action( + 'googlesitekit_authorize_user', + function() { + if ( ! $this->authentication->credentials()->using_proxy() ) { + return; + } + $this->user_options->set( Verification::OPTION, 'verified' ); + } + ); + + add_action( + 'init', + function () { + $request_uri = $this->context->input()->filter( INPUT_SERVER, 'REQUEST_URI' ); + $request_method = $this->context->input()->filter( INPUT_SERVER, 'REQUEST_METHOD' ); + + if ( + ( $request_uri && $request_method ) + && 'GET' === strtoupper( $request_method ) + && preg_match( '/^\/google(?P[a-z0-9]+)\.html$/', $request_uri, $matches ) + ) { + $this->serve_verification_file( $matches['token'] ); + } + } + ); + + $clear_verification_meta_cache = function ( $meta_id, $object_id, $meta_key ) { + if ( $this->user_options->get_meta_key( Verification_Meta::OPTION ) === $meta_key ) { + ( new Transients( $this->context ) )->delete( self::TRANSIENT_VERIFICATION_META_TAGS ); + } + }; + add_action( 'added_user_meta', $clear_verification_meta_cache, 10, 3 ); + add_action( 'updated_user_meta', $clear_verification_meta_cache, 10, 3 ); + add_action( 'deleted_user_meta', $clear_verification_meta_cache, 10, 3 ); + } + + /** + * Gets required Google OAuth scopes for the module. + * + * @since 1.0.0 + * + * @return array List of Google OAuth scopes. + */ + public function get_scopes() { + return array( + 'https://www.googleapis.com/auth/siteverification', + ); + } + + /** + * Gets map of datapoint to definition data for each. + * + * @since 1.12.0 + * + * @return array Map of datapoints to their definitions. + */ + protected function get_datapoint_definitions() { + return array( + 'GET:verification' => array( 'service' => 'siteverification' ), + 'POST:verification' => array( 'service' => 'siteverification' ), + 'GET:verification-token' => array( 'service' => 'siteverification' ), + 'GET:verified-sites' => array( 'service' => 'siteverification' ), + ); + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure. + * + * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist. + */ + protected function create_data_request( Data_Request $data ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:verification': + return $this->get_siteverification_service()->webResource->listWebResource(); + case 'POST:verification': + if ( ! isset( $data['siteURL'] ) ) { + /* translators: %s: Missing parameter name */ + return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'siteURL' ), array( 'status' => 400 ) ); + } + + return function() use ( $data ) { + $current_user = wp_get_current_user(); + + if ( ! $current_user || ! $current_user->exists() ) { + return new WP_Error( 'unknown_user', __( 'Unknown user.', 'google-site-kit' ) ); + } + + $site = $this->get_data( 'verification', $data ); + + if ( is_wp_error( $site ) ) { + return $site; + } + + $sites = array(); + + if ( ! empty( $site['verified'] ) ) { + $this->authentication->verification()->set( true ); + + return $site; + } else { + $token = $this->get_data( 'verification-token', $data ); + + if ( is_wp_error( $token ) ) { + return $token; + } + + $this->authentication->verification_meta()->set( $token['token'] ); + + $restore_defer = $this->with_client_defer( false ); + $errors = new WP_Error(); + + foreach ( $this->permute_site_url( $data['siteURL'] ) as $url ) { + $site = new Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite(); + $site->setType( 'SITE' ); + $site->setIdentifier( $url ); + $resource = new Google_Service_SiteVerification_SiteVerificationWebResourceResource(); + $resource->setSite( $site ); + + try { + $sites[] = $this->get_siteverification_service()->webResource->insert( 'META', $resource ); + } catch ( Google_Service_Exception $e ) { + $messages = wp_list_pluck( $e->getErrors(), 'message' ); + $message = array_shift( $messages ); + + $errors->add( $e->getCode(), $message, array( 'url' => $url ) ); + } catch ( Exception $e ) { + $errors->add( $e->getCode(), $e->getMessage(), array( 'url' => $url ) ); + } + } + + $restore_defer(); + + if ( empty( $sites ) ) { + return $errors; + } + } + + $this->authentication->verification()->set( true ); + + try { + $verification = $this->get_siteverification_service()->webResource->get( $data['siteURL'] ); + } catch ( Google_Service_Exception $e ) { + $verification = array_shift( $sites ); + } + + return array( + 'identifier' => $verification->getSite()->getIdentifier(), + 'type' => $verification->getSite()->getType(), + 'verified' => true, + ); + }; + case 'GET:verification-token': + $existing_token = $this->authentication->verification_meta()->get(); + + if ( ! empty( $existing_token ) ) { + return function() use ( $existing_token ) { + return array( + 'method' => 'META', + 'token' => $existing_token, + ); + }; + } + + $current_url = ! empty( $data['siteURL'] ) ? $data['siteURL'] : $this->context->get_reference_site_url(); + $site = new Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite(); + $site->setIdentifier( $current_url ); + $site->setType( 'SITE' ); + $request = new Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequest(); + $request->setSite( $site ); + $request->setVerificationMethod( 'META' ); + + return $this->get_siteverification_service()->webResource->getToken( $request ); + case 'GET:verified-sites': + return $this->get_siteverification_service()->webResource->listWebResource(); + } + + return parent::create_data_request( $data ); + } + + /** + * Parses a response for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @param mixed $response Request response. + * + * @return mixed Parsed response data on success, or WP_Error on failure. + */ + protected function parse_data_response( Data_Request $data, $response ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:verification': + if ( $data['siteURL'] ) { + $current_url = $data['siteURL']; + } else { + $current_url = $this->context->get_reference_site_url(); + } + + $items = $response->getItems(); + foreach ( $items as $item ) { + $site = $item->getSite(); + + $match = false; + if ( 'INET_DOMAIN' === $site->getType() ) { + $match = $this->is_domain_match( $site->getIdentifier(), $current_url ); + } elseif ( 'SITE' === $site->getType() ) { + $match = $this->is_url_match( $site->getIdentifier(), $current_url ); + } + + if ( $match ) { + return array( + 'identifier' => $site->getIdentifier(), + 'type' => $site->getType(), + 'verified' => true, + ); + } + } + + return array( + 'identifier' => $current_url, + 'type' => 'SITE', + 'verified' => false, + ); + case 'GET:verification-token': + if ( is_array( $response ) ) { + return $response; + } + + return array( + 'method' => $response->getMethod(), + 'token' => $response->getToken(), + ); + case 'GET:verified-sites': + $items = $response->getItems(); + $data = array(); + + foreach ( $items as $item ) { + $site = $item->getSite(); + $data[ $item->getId() ] = array( + 'identifier' => $site->getIdentifier(), + 'type' => $site->getType(), + ); + } + + return $data; + } + + return parent::parse_data_response( $data, $response ); + } + + /** + * Sets up information about the module. + * + * @since 1.0.0 + * + * @return array Associative array of module info. + */ + protected function setup_info() { + return array( + 'slug' => 'site-verification', + 'name' => _x( 'Site Verification', 'Service name', 'google-site-kit' ), + 'description' => __( 'Google Site Verification allows you to manage ownership of your site.', 'google-site-kit' ), + 'order' => 0, + 'homepage' => __( 'https://www.google.com/webmasters/verification/home', 'google-site-kit' ), + 'internal' => true, + ); + } + + /** + * Get the configured siteverification service instance. + * + * @return Google_Service_SiteVerification The Site Verification API service. + */ + private function get_siteverification_service() { + return $this->get_service( 'siteverification' ); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now requires Google_Site_Kit_Client instance. + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + return array( + 'siteverification' => new Google_Service_SiteVerification( $client ), + ); + } + + /** + * Handles receiving a verification token for a user by the authentication proxy. + * + * @since 1.1.0 + * @since 1.1.2 Runs on `admin_action_googlesitekit_proxy_setup` and no longer redirects directly. + * @since 1.48.0 Token and method are now passed as arguments. + * @since 1.49.0 No longer uses the `googlesitekit_proxy_setup_url_params` filter to set the `verify` and `verification_method` query params. + * + * @param string $token Verification token. + * @param string $method Verification method type. + */ + private function handle_verification_token( $token, $method ) { + switch ( $method ) { + case self::VERIFICATION_TYPE_FILE: + $this->authentication->verification_file()->set( $token ); + break; + case self::VERIFICATION_TYPE_META: + $this->authentication->verification_meta()->set( $token ); + } + } + + /** + * Prints site verification meta in wp_head(). + * + * @since 1.1.0 + */ + private function print_site_verification_meta() { + // Get verification meta tags for all users. + $verification_tags = $this->get_all_verification_tags(); + $allowed_html = array( + 'meta' => array( + 'name' => array(), + 'content' => array(), + ), + ); + + foreach ( $verification_tags as $verification_tag ) { + $verification_tag = html_entity_decode( $verification_tag ); + + if ( 0 !== strpos( $verification_tag, ''; + } + + echo wp_kses( $verification_tag, $allowed_html ); + } + } + + /** + * Gets all available verification tags for all users. + * + * This is a special method needed for printing all meta tags in the frontend. + * + * @since 1.4.0 + * + * @return array List of verification meta tags. + */ + private function get_all_verification_tags() { + global $wpdb; + + $transients = new Transients( $this->context ); + $meta_tags = $transients->get( self::TRANSIENT_VERIFICATION_META_TAGS ); + + if ( ! is_array( $meta_tags ) ) { + $meta_key = $this->user_options->get_meta_key( Verification_Meta::OPTION ); + // phpcs:ignore WordPress.DB.DirectDatabaseQuery + $meta_tags = $wpdb->get_col( + $wpdb->prepare( "SELECT DISTINCT meta_value FROM {$wpdb->usermeta} WHERE meta_key = %s", $meta_key ) + ); + $transients->set( self::TRANSIENT_VERIFICATION_META_TAGS, $meta_tags ); + } + + return array_filter( $meta_tags ); + } + + /** + * Serves the verification file response. + * + * @param string $verification_token Token portion of verification. + * + * @since 1.1.0 + */ + private function serve_verification_file( $verification_token ) { + $user_ids = ( new \WP_User_Query( + array( + // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key + 'meta_key' => $this->user_options->get_meta_key( Verification_File::OPTION ), + // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value + 'meta_value' => $verification_token, + 'fields' => 'id', + 'number' => 1, + ) + ) )->get_results(); + + $user_id = array_shift( $user_ids ) ?: 0; + + if ( $user_id && user_can( $user_id, Permissions::SETUP ) ) { + printf( 'google-site-verification: google%s.html', esc_html( $verification_token ) ); + ( new Exit_Handler() )->invoke(); + } + + // If the user does not have the necessary permissions then let the request pass through. + } + + + /** + * Returns TRUE to indicate that this module should be always active. + * + * @since 1.49.0 + * + * @return bool Returns `true` indicating that this module should be activated all the time. + */ + public static function is_force_active() { + return true; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager.php new file mode 100644 index 000000000..0ced14732 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager.php @@ -0,0 +1,659 @@ + 'containerID', + self::USAGE_CONTEXT_AMP => 'ampContainerID', + ); + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.0.0 + */ + public function register() { + $this->register_scopes_hook(); + + // Tag Manager tag placement logic. + add_action( 'template_redirect', $this->get_method_proxy( 'register_tag' ) ); + // Filter the Analytics `canUseSnippet` value. + add_filter( 'googlesitekit_analytics_can_use_snippet', $this->get_method_proxy( 'can_analytics_use_snippet' ), 10, 2 ); + // Filter whether certain users can be excluded from tracking. + add_action( 'googlesitekit_allow_tracking_disabled', $this->get_method_proxy( 'filter_analytics_allow_tracking_disabled' ) ); + add_action( 'googlesitekit_analytics_tracking_opt_out', $this->get_method_proxy( 'analytics_tracking_opt_out' ) ); + } + + /** + * Gets required Google OAuth scopes for the module. + * + * @since 1.0.0 + * + * @return array List of Google OAuth scopes. + */ + public function get_scopes() { + return array( + 'https://www.googleapis.com/auth/tagmanager.readonly', + ); + } + + /** + * Checks whether the module is connected. + * + * A module being connected means that all steps required as part of its activation are completed. + * + * @since 1.0.0 + * + * @return bool True if module is connected, false otherwise. + */ + public function is_connected() { + $settings = $this->get_settings()->get(); + $amp_mode = $this->context->get_amp_mode(); + + switch ( $amp_mode ) { + case Context::AMP_MODE_PRIMARY: + $container_ids = array( $settings['ampContainerID'] ); + break; + case Context::AMP_MODE_SECONDARY: + $container_ids = array( $settings['containerID'], $settings['ampContainerID'] ); + break; + default: + $container_ids = array( $settings['containerID'] ); + } + + $container_id_errors = array_filter( + $container_ids, + function( $container_id ) { + return ! $container_id; + } + ); + + if ( ! empty( $container_id_errors ) ) { + return false; + } + + return parent::is_connected(); + } + + /** + * Cleans up when the module is deactivated. + * + * @since 1.0.0 + */ + public function on_deactivation() { + $this->get_settings()->delete(); + } + + /** + * Gets an array of debug field definitions. + * + * @since 1.5.0 + * + * @return array + */ + public function get_debug_fields() { + $settings = $this->get_settings()->get(); + + return array( + 'tagmanager_account_id' => array( + 'label' => __( 'Tag Manager account ID', 'google-site-kit' ), + 'value' => $settings['accountID'], + 'debug' => Debug_Data::redact_debug_value( $settings['accountID'] ), + ), + 'tagmanager_container_id' => array( + 'label' => __( 'Tag Manager container ID', 'google-site-kit' ), + 'value' => $settings['containerID'], + 'debug' => Debug_Data::redact_debug_value( $settings['containerID'], 7 ), + ), + 'tagmanager_amp_container_id' => array( + 'label' => __( 'Tag Manager AMP container ID', 'google-site-kit' ), + 'value' => $settings['ampContainerID'], + 'debug' => Debug_Data::redact_debug_value( $settings['ampContainerID'], 7 ), + ), + 'tagmanager_use_snippet' => array( + 'label' => __( 'Tag Manager snippet placed', 'google-site-kit' ), + 'value' => $settings['useSnippet'] ? __( 'Yes', 'google-site-kit' ) : __( 'No', 'google-site-kit' ), + 'debug' => $settings['useSnippet'] ? 'yes' : 'no', + ), + ); + } + + /** + * Sanitizes a string to be used for a container name. + * + * @since 1.0.4 + * + * @param string $name String to sanitize. + * + * @return string + */ + public static function sanitize_container_name( $name ) { + // Remove any leading or trailing whitespace. + $name = trim( $name ); + // Must not start with an underscore. + $name = ltrim( $name, '_' ); + // Decode entities for special characters so that they are stripped properly. + $name = wp_specialchars_decode( $name, ENT_QUOTES ); + // Convert accents to basic characters to prevent them from being stripped. + $name = remove_accents( $name ); + // Strip all non-simple characters. + $name = preg_replace( '/[^a-zA-Z0-9_., -]/', '', $name ); + // Collapse multiple whitespaces. + $name = preg_replace( '/\s+/', ' ', $name ); + + return $name; + } + + /** + * Gets map of datapoint to definition data for each. + * + * @since 1.9.0 + * + * @return array Map of datapoints to their definitions. + */ + protected function get_datapoint_definitions() { + return array( + 'GET:accounts' => array( 'service' => 'tagmanager' ), + 'GET:accounts-containers' => array( 'service' => 'tagmanager' ), + 'GET:containers' => array( 'service' => 'tagmanager' ), + 'POST:create-container' => array( + 'service' => 'tagmanager', + 'scopes' => array( 'https://www.googleapis.com/auth/tagmanager.edit.containers' ), + 'request_scopes_message' => __( 'Additional permissions are required to create a new Tag Manager container on your behalf.', 'google-site-kit' ), + ), + 'GET:live-container-version' => array( 'service' => 'tagmanager' ), + ); + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure. + * + * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist. + */ + protected function create_data_request( Data_Request $data ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + // Intentional fallthrough. + case 'GET:accounts': + case 'GET:accounts-containers': + return $this->get_tagmanager_service()->accounts->listAccounts(); + case 'GET:containers': + if ( ! isset( $data['accountID'] ) ) { + /* translators: %s: Missing parameter name */ + return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), array( 'status' => 400 ) ); + } + return $this->get_tagmanager_service()->accounts_containers->listAccountsContainers( "accounts/{$data['accountID']}" ); + case 'POST:create-container': + if ( ! isset( $data['accountID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), + array( 'status' => 400 ) + ); + } + + $usage_context = $data['usageContext'] ?: array( self::USAGE_CONTEXT_WEB, self::USAGE_CONTEXT_AMP ); + + if ( empty( $this->context_map[ $usage_context ] ) ) { + return new WP_Error( + 'invalid_param', + sprintf( + /* translators: 1: Invalid parameter name, 2: list of valid values */ + __( 'Request parameter %1$s is not one of %2$s', 'google-site-kit' ), + 'usageContext', + implode( ', ', array_keys( $this->context_map ) ) + ), + array( 'status' => 400 ) + ); + } + + $account_id = $data['accountID']; + + if ( $data['name'] ) { + $container_name = $data['name']; + } else { + // Use site name for container, fallback to domain of reference URL. + $container_name = get_bloginfo( 'name' ) ?: URL::parse( $this->context->get_reference_site_url(), PHP_URL_HOST ); + // Prevent naming conflict (Tag Manager does not allow more than one with same name). + if ( self::USAGE_CONTEXT_AMP === $usage_context ) { + $container_name .= ' AMP'; + } + } + + $container = new Google_Service_TagManager_Container(); + $container->setName( self::sanitize_container_name( $container_name ) ); + $container->setUsageContext( (array) $usage_context ); + + return $this->get_tagmanager_service()->accounts_containers->create( "accounts/{$account_id}", $container ); + case 'GET:live-container-version': + if ( ! isset( $data['accountID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), + array( 'status' => 400 ) + ); + } + if ( ! isset( $data['internalContainerID'] ) ) { + return new WP_Error( + 'missing_required_param', + /* translators: %s: Missing parameter name */ + sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'internalContainerID' ), + array( 'status' => 400 ) + ); + } + + return $this->get_tagmanager_service()->accounts_containers_versions->live( + "accounts/{$data['accountID']}/containers/{$data['internalContainerID']}" + ); + } + + return parent::create_data_request( $data ); + } + + /** + * Creates GTM Container. + * + * @since 1.0.0 + * @param string $account_id The account ID. + * @param string|array $usage_context The container usage context(s). + * + * @return string Container public ID. + * @throws Exception Throws an exception if raised during container creation. + */ + protected function create_container( $account_id, $usage_context = self::USAGE_CONTEXT_WEB ) { + $restore_defer = $this->with_client_defer( false ); + + // Use site name for container, fallback to domain of reference URL. + $container_name = get_bloginfo( 'name' ) ?: URL::parse( $this->context->get_reference_site_url(), PHP_URL_HOST ); + // Prevent naming conflict (Tag Manager does not allow more than one with same name). + if ( self::USAGE_CONTEXT_AMP === $usage_context ) { + $container_name .= ' AMP'; + } + $container_name = self::sanitize_container_name( $container_name ); + + $container = new Google_Service_TagManager_Container(); + $container->setName( $container_name ); + $container->setUsageContext( (array) $usage_context ); + + try { + $new_container = $this->get_tagmanager_service()->accounts_containers->create( "accounts/{$account_id}", $container ); + } catch ( Exception $exception ) { + $restore_defer(); + throw $exception; + } + + $restore_defer(); + + return $new_container->getPublicId(); + } + + /** + * Parses a response for the given datapoint. + * + * @since 1.0.0 + * + * @param Data_Request $data Data request object. + * @param mixed $response Request response. + * + * @return mixed Parsed response data on success, or WP_Error on failure. + */ + protected function parse_data_response( Data_Request $data, $response ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:accounts': + /* @var Google_Service_TagManager_ListAccountsResponse $response List accounts response. */ + return $response->getAccount(); + case 'GET:accounts-containers': + /* @var Google_Service_TagManager_ListAccountsResponse $response List accounts response. */ + $response = array( + // TODO: Parse this response to a regular array. + 'accounts' => $response->getAccount(), + 'containers' => array(), + ); + if ( 0 === count( $response['accounts'] ) ) { + return $response; + } + if ( $data['accountID'] ) { + $account_id = $data['accountID']; + } else { + $account_id = $response['accounts'][0]->getAccountId(); + } + + $containers = $this->get_data( + 'containers', + array( + 'accountID' => $account_id, + 'usageContext' => $data['usageContext'] ?: self::USAGE_CONTEXT_WEB, + ) + ); + + if ( is_wp_error( $containers ) ) { + return $response; + } + + return array_merge( $response, compact( 'containers' ) ); + case 'GET:containers': + /* @var Google_Service_TagManager_ListContainersResponse $response Response object. */ + $usage_context = $data['usageContext'] ?: array( self::USAGE_CONTEXT_WEB, self::USAGE_CONTEXT_AMP ); + /* @var Google_Service_TagManager_Container[] $containers Filtered containers. */ + $containers = array_filter( + (array) $response->getContainer(), + function ( Google_Service_TagManager_Container $container ) use ( $usage_context ) { + return array_intersect( (array) $usage_context, $container->getUsageContext() ); + } + ); + + return array_values( $containers ); + } + + return parent::parse_data_response( $data, $response ); + } + + /** + * Gets the configured TagManager service instance. + * + * @since 1.2.0 + * + * @return Google_Service_TagManager instance. + * @throws Exception Thrown if the module did not correctly set up the service. + */ + private function get_tagmanager_service() { + return $this->get_service( 'tagmanager' ); + } + + /** + * Sets up information about the module. + * + * @since 1.0.0 + * + * @return array Associative array of module info. + */ + protected function setup_info() { + return array( + 'slug' => self::MODULE_SLUG, + 'name' => _x( 'Tag Manager', 'Service name', 'google-site-kit' ), + 'description' => __( 'Tag Manager creates an easy to manage way to create tags on your site without updating code', 'google-site-kit' ), + 'order' => 6, + 'homepage' => __( 'https://tagmanager.google.com/', 'google-site-kit' ), + ); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.0.0 + * @since 1.2.0 Now requires Google_Site_Kit_Client instance. + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + return array( + 'tagmanager' => new Google_Service_TagManager( $client ), + ); + } + + /** + * Sets up the module's settings instance. + * + * @since 1.2.0 + * + * @return Module_Settings + */ + protected function setup_settings() { + return new Settings( $this->options ); + } + + /** + * Sets up the module's assets to register. + * + * @since 1.11.0 + * + * @return Asset[] List of Asset objects. + */ + protected function setup_assets() { + $base_url = $this->context->url( 'dist/assets/' ); + + $dependencies = array( + 'googlesitekit-api', + 'googlesitekit-data', + 'googlesitekit-datastore-site', + 'googlesitekit-modules', + 'googlesitekit-vendor', + 'googlesitekit-components', + ); + + $analytics_exists = apply_filters( 'googlesitekit_module_exists', false, 'analytics' ); + + // Note that the Tag Manager bundle will make use of the Analytics bundle if it's available, + // but can also function without it, hence the conditional include of the Analytics bundle here. + if ( $analytics_exists ) { + $dependencies[] = 'googlesitekit-modules-analytics'; + } + + return array( + new Script( + 'googlesitekit-modules-tagmanager', + array( + 'src' => $base_url . 'js/googlesitekit-modules-tagmanager.js', + 'dependencies' => $dependencies, + ) + ), + ); + } + + /** + * Registers the Tag Manager tag. + * + * @since 1.24.0 + */ + private function register_tag() { + $is_amp = $this->context->is_amp(); + $module_settings = $this->get_settings(); + $settings = $module_settings->get(); + + $tag = $is_amp + ? new AMP_Tag( $settings['ampContainerID'], self::MODULE_SLUG ) + : new Web_Tag( $settings['containerID'], self::MODULE_SLUG ); + + if ( ! $tag->is_tag_blocked() ) { + $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) ); + $tag->use_guard( new Tag_Guard( $module_settings, $is_amp ) ); + $tag->use_guard( new Tag_Environment_Type_Guard() ); + + if ( $tag->can_register() ) { + $tag->register(); + } + } + } + + /** + * Filters whether or not the Analytics module's snippet should be controlled by its `useSnippet` setting. + * + * @since 1.28.0 + * @since 1.75.0 Now requires current UA property ID as second parameter. + * + * @param boolean $original_value Original value of useSnippet setting. + * @param string $ua_property_id Current UA property. + * @return boolean Filtered value. + */ + private function can_analytics_use_snippet( $original_value, $ua_property_id ) { + $settings = $this->get_settings()->get(); + + if ( ! empty( $settings['gaPropertyID'] ) && $settings['useSnippet'] && $settings['gaPropertyID'] === $ua_property_id ) { + return false; + } + + return $original_value; + } + + /** + * Handles Analytics measurement opt-out for the configured Analytics property in the container(s). + * + * @since 1.41.0 + * + * @param string $property_id Analytics property_id. + */ + private function analytics_tracking_opt_out( $property_id ) { + $settings = $this->get_settings()->get(); + $ga_property_id = $settings['gaPropertyID']; + if ( ! $ga_property_id || $ga_property_id === $property_id ) { + return; + } + + BC_Functions::wp_print_inline_script_tag( + sprintf( + 'window["ga-disable-%s"] = true;', + esc_attr( $ga_property_id ) + ) + ); + + } + + /** + * Filters whether or not the option to exclude certain users from tracking should be displayed. + * + * If Site Kit does not place the Analytics snippet (neither via Analytics nor via Tag Manager), + * the option to exclude certain users from tracking should not be displayed. + * + * @since 1.36.0 + * + * @param boolean $allowed Whether to allow tracking exclusion. + * @return boolean Filtered value. + */ + private function filter_analytics_allow_tracking_disabled( $allowed ) { + if ( $allowed ) { + return true; + } + + $settings = $this->get_settings()->get(); + + if ( ! empty( $settings['gaPropertyID'] ) && $settings['useSnippet'] ) { + return true; + } + + return $allowed; + } + + /** + * Checks if the current user has access to the current configured service entity. + * + * @since 1.77.0 + * + * @return boolean|WP_Error + */ + public function check_service_entity_access() { + $is_amp_mode = in_array( $this->context->get_amp_mode(), array( Context::AMP_MODE_PRIMARY, Context::AMP_MODE_SECONDARY ), true ); + + $settings = $this->get_settings()->get(); + $account_id = $settings['accountID']; + + $configured_containers = $is_amp_mode ? array( $settings['containerID'], $settings['ampContainerID'] ) : array( $settings['containerID'] ); + + try { + $containers = $this->get_tagmanager_service()->accounts_containers->listAccountsContainers( "accounts/{$account_id}" ); + } catch ( Exception $e ) { + if ( $e->getCode() === 403 ) { + return false; + } + return $this->exception_to_error( $e ); + } + + $all_containers = array_map( + function( $container ) { + return $container->getPublicId(); + }, + $containers->getContainer() + ); + + return empty( array_diff( $configured_containers, $all_containers ) ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/AMP_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/AMP_Tag.php new file mode 100644 index 000000000..4145f6864 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/AMP_Tag.php @@ -0,0 +1,78 @@ +get_method_proxy_once( 'render' ); + + // Which actions are run depends on the version of the AMP Plugin + // (https://amp-wp.org/) available. Version >=1.3 exposes a + // new, `amp_print_analytics` action. + // For all AMP modes, AMP plugin version >=1.3. + add_action( 'amp_print_analytics', $render ); + // For AMP Standard and Transitional, AMP plugin version <1.3. + add_action( 'wp_footer', $render, 20 ); + // For AMP Reader, AMP plugin version <1.3. + add_action( 'amp_post_template_footer', $render, 20 ); + // For Web Stories plugin. + add_action( 'web_stories_print_analytics', $render ); + + // Load amp-analytics component for AMP Reader. + $this->enqueue_amp_reader_component_script( 'amp-analytics', 'https://cdn.ampproject.org/v0/amp-analytics-0.1.js' ); + + $this->do_init_tag_action(); + } + + /** + * Outputs Tag Manager tag. + * + * @since 1.24.0 + */ + protected function render() { + // Add the optoutElementId for compatibility with our Analytics opt-out mechanism. + // This configuration object will be merged with the configuration object returned + // by the `config` attribute URL. + $gtm_amp_opt = array( + 'optoutElementId' => '__gaOptOutExtension', + ); + + printf( "\n\n", esc_html__( 'Google Tag Manager AMP snippet added by Site Kit', 'google-site-kit' ) ); + + printf( + '', + esc_url( 'https://www.googletagmanager.com/amp.json?id=' . rawurlencode( $this->tag_id ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + $this->get_tag_blocked_on_consent_attribute(), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + wp_json_encode( $gtm_amp_opt ) + ); + + printf( "\n\n", esc_html__( 'End Google Tag Manager AMP snippet added by Site Kit', 'google-site-kit' ) ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Settings.php new file mode 100644 index 000000000..7ddeeacc3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Settings.php @@ -0,0 +1,104 @@ +register_legacy_keys_migration( + array( + 'account_id' => 'accountID', + 'accountId' => 'accountID', + 'container_id' => 'containerID', + 'containerId' => 'containerID', + ) + ); + + $this->register_owned_keys(); + } + + /** + * Returns keys for owned settings. + * + * @since 1.16.0 + * + * @return array An array of keys for owned settings. + */ + public function get_owned_keys() { + return array( + 'accountID', + 'ampContainerID', + 'containerID', + 'internalAMPContainerID', + 'internalContainerID', + ); + } + + /** + * Gets the default value. + * + * @since 1.2.0 + * + * @return array + */ + protected function get_default() { + return array( + 'ownerID' => 0, + 'accountID' => '', + 'ampContainerID' => '', + 'containerID' => '', + 'internalContainerID' => '', + 'internalAMPContainerID' => '', + 'useSnippet' => true, + 'gaPropertyID' => '', + ); + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.6.0 + * + * @return callable|null + */ + protected function get_sanitize_callback() { + return function( $option ) { + if ( is_array( $option ) ) { + if ( isset( $option['useSnippet'] ) ) { + $option['useSnippet'] = (bool) $option['useSnippet']; + } + } + return $option; + }; + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Tag_Guard.php new file mode 100644 index 000000000..3dc477478 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Tag_Guard.php @@ -0,0 +1,59 @@ +is_amp = $is_amp; + } + + /** + * Determines whether the guarded tag can be activated or not. + * + * @since 1.24.0 + * + * @return bool|WP_Error TRUE if guarded tag can be activated, otherwise FALSE or an error. + */ + public function can_activate() { + $settings = $this->settings->get(); + $container_id = $this->is_amp ? $settings['ampContainerID'] : $settings['containerID']; + return ! empty( $settings['useSnippet'] ) && ! empty( $container_id ); + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Web_Tag.php new file mode 100644 index 000000000..5856c5e6e --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Web_Tag.php @@ -0,0 +1,104 @@ +get_method_proxy_once( 'render_no_js' ); + + add_action( 'wp_head', $this->get_method_proxy( 'render' ) ); + // For non-AMP (if `wp_body_open` supported). + add_action( 'wp_body_open', $render_no_js, -9999 ); + // For non-AMP (as fallback). + add_action( 'wp_footer', $render_no_js ); + + add_filter( + 'wp_resource_hints', + $this->get_dns_prefetch_hints_callback( '//www.googletagmanager.com' ), + 10, + 2 + ); + + $this->do_init_tag_action(); + } + + /** + * Outputs Tag Manager script. + * + * @since 1.24.0 + */ + protected function render() { + + $tag_manager_inline_script = sprintf( + " + ( function( w, d, s, l, i ) { + w[l] = w[l] || []; + w[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} ); + var f = d.getElementsByTagName( s )[0], + j = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : ''; + j.async = true; + j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; + f.parentNode.insertBefore( j, f ); + } )( window, document, 'script', 'dataLayer', '%s' ); + ", + esc_js( $this->tag_id ) + ); + + $tag_manager_consent_attribute = $this->get_tag_blocked_on_consent_attribute_array(); + + printf( "\n\n", esc_html__( 'Google Tag Manager snippet added by Site Kit', 'google-site-kit' ) ); + BC_Functions::wp_print_inline_script_tag( $tag_manager_inline_script, $tag_manager_consent_attribute ); + printf( "\n\n", esc_html__( 'End Google Tag Manager snippet added by Site Kit', 'google-site-kit' ) ); + } + + /** + * Outputs Tag Manager iframe for when the browser has JavaScript disabled. + * + * @since 1.24.0 + */ + private function render_no_js() { + // Consent-based blocking requires JS to be enabled so we need to bail here if present. + if ( $this->get_tag_blocked_on_consent_attribute() ) { + return; + } + + $iframe_src = 'https://www.googletagmanager.com/ns.html?id=' . rawurlencode( $this->tag_id ); + + ?> + + + + transients = new Transients( $this->context ); + } + + /** + * Registers functionality through WordPress hooks. + * + * @since 1.78.0 + */ + public function register() { + $this->register_scopes_hook(); + + add_action( + 'googlesitekit_pre_save_settings_' . self::MODULE_SLUG, + function() { + $this->pre_update_is_connected = $this->is_connected(); + } + ); + + add_action( + 'googlesitekit_save_settings_' . self::MODULE_SLUG, + function() { + if ( ! $this->pre_update_is_connected && $this->is_connected() ) { + $this->transients->set( self::TRANSIENT_SETUP_TIMER, time(), WEEK_IN_SECONDS ); + } + } + ); + + if ( ! $this->is_connected() ) { + return; + } + + add_action( 'template_redirect', $this->get_method_proxy( 'register_tag' ) ); + + add_action( + 'widgets_init', + function() { + register_widget( Supporter_Wall_Widget::class ); + } + ); + + add_action( + 'admin_init', + function() { + if ( + ! empty( $_GET['legacy-widget-preview']['idBase'] ) && // phpcs:ignore WordPress.Security.NonceVerification.Recommended + Supporter_Wall_Widget::WIDGET_ID !== $_GET['legacy-widget-preview']['idBase'] // phpcs:ignore WordPress.Security.NonceVerification.Recommended + ) { + $this->register_tag(); + } + } + ); + + add_filter( + 'googlesitekit_apifetch_preload_paths', + function ( $paths ) { + return array_merge( + $paths, + array( + '/' . REST_Routes::REST_ROOT . '/modules/thank-with-google/data/supporter-wall-prompt', + ) + ); + } + ); + + add_filter( + 'rest_pre_dispatch', + function( $result, $server, $request ) { + $needle = sprintf( 'widget-types/%s/render', Supporter_Wall_Widget::WIDGET_ID ); + if ( stripos( $request->get_route(), $needle ) > 0 ) { + $this->register_tag(); + } + return $result; + }, + 10, + 3 + ); + } + + /** + * Checks whether the module is connected. + * + * A module being connected means that all steps required as part of its activation are completed. + * + * @since 1.78.0 + * + * @return bool True if module is connected, false otherwise. + */ + public function is_connected() { + $settings = $this->get_settings()->get(); + + if ( ! $settings ) { + return false; + } + + if ( ! $settings['publicationID'] ) { + return false; + } + + if ( ! $settings['colorTheme'] ) { + return false; + } + + if ( ! $settings['ctaPlacement'] ) { + return false; + } + + if ( ! $settings['ctaPostTypes'] ) { + return false; + } + + return parent::is_connected(); + } + + /** + * Cleans up when the module is deactivated. + * + * @since 1.78.0 + */ + public function on_deactivation() { + $this->get_settings()->delete(); + } + + /** + * Gets required Google OAuth scopes for the module. + * + * @since 1.81.0 + * + * @return array List of Google OAuth scopes. + */ + public function get_scopes() { + return array( + 'https://www.googleapis.com/auth/subscribewithgoogle.publications.readonly', + ); + } + + /** + * Sets up information about the module. + * + * @since 1.78.0 + * + * @return array Associative array of module info. + */ + protected function setup_info() { + return array( + 'slug' => 'thank-with-google', + 'name' => _x( 'Thank with Google', 'Service name', 'google-site-kit' ), + 'description' => __( 'Let your supporters show appreciation of your work through virtual stickers and personal messages', 'google-site-kit' ), + 'order' => 7, + 'homepage' => __( 'https://publishercenter.google.com/', 'google-site-kit' ), + ); + } + + /** + * Sets up the module's settings instance. + * + * @since 1.78.0 + * + * @return Module_Settings + */ + protected function setup_settings() { + return new Settings( $this->options ); + } + + /** + * Sets up the module's assets to register. + * + * @since 1.78.0 + * + * @return Asset[] List of Asset objects. + */ + protected function setup_assets() { + $base_url = $this->context->url( 'dist/assets/' ); + + return array( + new Script( + 'googlesitekit-modules-thank-with-google', + array( + 'src' => $base_url . 'js/googlesitekit-modules-thank-with-google.js', + 'dependencies' => array( + 'googlesitekit-api', + 'googlesitekit-data', + 'googlesitekit-datastore-site', + 'googlesitekit-modules', + 'googlesitekit-vendor', + 'googlesitekit-components', + ), + ) + ), + ); + } + + /** + * Gets the supporter wall sidebars. + * + * @since 1.85.0 + * + * @return array list of supporter wall sidebars, otherwise an empty list. + */ + protected function get_supporter_wall_sidebars() { + $sidebars = array(); + $all_sidebars = wp_get_sidebars_widgets(); + $block_widgets = get_option( 'widget_block' ); + + $pattern = sprintf( '/^%s[0-9]+$/i', preg_quote( Supporter_Wall_Widget::WIDGET_ID . '-', '/' ) ); + $substr = sprintf( '"idBase":"%s"', Supporter_Wall_Widget::WIDGET_ID ); + + $actual_sidebars_count = 0; + foreach ( $all_sidebars as $sidebar_id => $widgets ) { + // Skip the inactive widgets sidebar because it is not an actual sidebar. + if ( 'wp_inactive_widgets' === $sidebar_id ) { + continue; + } + + $actual_sidebars_count++; + + $sidebar = BC_Functions::wp_get_sidebar( $sidebar_id ); + foreach ( $widgets as $widget ) { + $block_match = array(); + if ( preg_match( $pattern, $widget ) ) { + $sidebars[ $sidebar_id ] = $sidebar['name']; + break; + } elseif ( + preg_match( '/block-(\d+)/', $widget, $block_match ) && + stripos( $block_widgets[ $block_match[1] ]['content'], $substr ) > 0 + ) { + $sidebars[ $sidebar_id ] = ucfirst( $sidebar['name'] ); + break; + } + } + } + + if ( + // Only show the "All sidebars" text if there is more + // than one sidebar. + $actual_sidebars_count > 1 && + count( $sidebars ) === $actual_sidebars_count + ) { + return array( __( 'All sidebars', 'google-site-kit' ) ); + } + + return array_values( $sidebars ); + + } + + /** + * Gets map of datapoint to definition data for each. + * + * @since 1.79.0 + * @return array Map of datapoints to their definitions. + */ + protected function get_datapoint_definitions() { + return array( + 'GET:publications' => array( 'service' => 'subscribewithgoogle' ), + 'GET:supporter-wall-sidebars' => array( 'service' => '' ), + 'GET:supporter-wall-prompt' => array( 'service' => '' ), + ); + } + + /** + * Creates a request object for the given datapoint. + * + * @since 1.79.0 + * + * @param Data_Request $data Data request object. + * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure. + * + * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist. + */ + protected function create_data_request( Data_Request $data ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:publications': + $service = $this->get_service( 'subscribewithgoogle' ); + /* @var $service Google_Service_SubscribewithGoogle phpcs:ignore Squiz.PHP.CommentedOutCode.Found */ + + $sc_settings = $this->options->get( Search_Console_Settings::OPTION ); + $sc_property_id = $sc_settings['propertyID']; + $raw_url = str_replace( + array( 'sc-domain:', 'https://', 'http://', 'www.' ), + '', + $sc_property_id + ); + + if ( 0 === strpos( $sc_property_id, 'sc-domain:' ) ) { // Domain property. + $filter = join( + ' OR ', + array_map( + function ( $host ) { + return sprintf( 'domain = "%s"', $host ); + }, + $this->permute_site_hosts( $raw_url ) + ) + ); + } else { // URL property. + $filter = join( + ' OR ', + array_map( + function ( $host ) { + return sprintf( 'site_url = "%s"', $host ); + }, + $this->permute_site_url( $raw_url ) + ) + ); + } + + return $service->publications->listPublications( + array( 'filter' => $filter ) + ); + case 'GET:supporter-wall-sidebars': + return function() { + return $this->get_supporter_wall_sidebars(); + }; + case 'GET:supporter-wall-prompt': + return function() { + $supporter_wall_sidebars = $this->get_supporter_wall_sidebars(); + $setup_transient = $this->transients->get( self::TRANSIENT_SETUP_TIMER ); + if ( empty( $supporter_wall_sidebars ) && ! $setup_transient ) { + return array( 'supporterWallPrompt' => true ); + } + return array( 'supporterWallPrompt' => false ); + }; + } + + return parent::create_data_request( $data ); + } + + /** + * Parses a response for the given datapoint. + * + * @since 1.81.0 + * + * @param Data_Request $data Data request object. + * @param mixed $response Request response. + * @return mixed Parsed response data on success, or WP_Error on failure. + */ + protected function parse_data_response( Data_Request $data, $response ) { + switch ( "{$data->method}:{$data->datapoint}" ) { + case 'GET:publications': + /* @var $response Google_Service_SubscribewithGoogle_ListPublicationsResponse phpcs:ignore Squiz.PHP.CommentedOutCode.Found */ + $publications = array_filter( + (array) $response->getPublications(), + function ( Google_Service_SubscribewithGoogle_Publication $publication ) { + // Require only TwG-enabled publications. + if ( empty( $publication['paymentOptions']['thankStickers'] ) ) { + return false; + } + // If onboarding isn't completed, other criteria won't be available. + if ( 'ONBOARDING_COMPLETE' !== $publication->getOnboardingState() ) { + return true; + } + + // This is left as array access as it is not guaranteed to be set. + return ! empty( $publication['publicationPredicates']['businessPredicates']['supportsSiteKit'] ); + } + ); + return array_values( $publications ); + } + + return parent::parse_data_response( $data, $response ); + } + + /** + * Sets up the Google services the module should use. + * + * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested + * for the first time. + * + * @since 1.81.0 + * + * @param Google_Site_Kit_Client $client Google client instance. + * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an + * instance of Google_Service. + */ + protected function setup_services( Google_Site_Kit_Client $client ) { + return array( + 'subscribewithgoogle' => new Google_Service_SubscribewithGoogle( $client ), + ); + } + + /** + * Registers the Thank with Google tag. + * + * @since 1.80.0 + */ + private function register_tag() { + if ( $this->context->is_amp() ) { + return; + } + + $settings = $this->get_settings()->get(); + + $tag = new Web_Tag( $settings['publicationID'], self::MODULE_SLUG ); + if ( $tag->is_tag_blocked() ) { + return; + } + + $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) ); + $tag->use_guard( new Tag_Environment_Type_Guard() ); + + if ( $tag->can_register() ) { + $tag->set_cta_placement( $settings['ctaPlacement'] ); + $tag->set_cta_post_types( $settings['ctaPostTypes'] ); + $tag->set_color_theme( $settings['colorTheme'] ); + + $tag->register(); + } + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Settings.php new file mode 100644 index 000000000..d5968b9c6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Settings.php @@ -0,0 +1,187 @@ +register_owned_keys(); + } + + /** + * Returns keys for owned settings. + * + * @since 1.78.0 + * + * @return array An array of keys for owned settings. + */ + public function get_owned_keys() { + return array( + 'publicationID', + ); + } + + /** + * Gets the default value. + * + * @since 1.78.0 + * + * @return array + */ + protected function get_default() { + return array( + 'ownerID' => '', + 'publicationID' => '', + 'colorTheme' => '', + 'ctaPlacement' => '', + 'ctaPostTypes' => array( 'post' ), + ); + } + + /** + * Gets the setting value. + * + * @since 1.80.0 + * + * @return array + */ + public function get() { + $option = parent::get(); + + if ( is_array( $option ) ) { + if ( isset( $option['ctaPostTypes'] ) ) { + $option['ctaPostTypes'] = $this->sanitize_cta_post_types( $option['ctaPostTypes'] ); + } + } + + return $option; + } + + /** + * Gets the callback for sanitizing the setting's value before saving. + * + * @since 1.80.0 + * + * @return callable|null + */ + protected function get_sanitize_callback() { + return function( $option ) { + if ( is_array( $option ) ) { + if ( isset( $option['colorTheme'] ) ) { + $option['colorTheme'] = $this->sanitize_color_theme( $option['colorTheme'] ); + } + if ( isset( $option['ctaPlacement'] ) ) { + $option['ctaPlacement'] = $this->sanitize_cta_placement( $option['ctaPlacement'] ); + } + if ( isset( $option['ctaPostTypes'] ) ) { + $option['ctaPostTypes'] = $this->sanitize_cta_post_types( $option['ctaPostTypes'] ); + } + } + return $option; + }; + } + + /** + * Sanitizes the value of color theme. + * + * @since 1.80.0 + * + * @param string $color_theme The value to sanitize. + * @return string The sanitized value. + */ + private function sanitize_color_theme( $color_theme ) { + $allowed_colors = array( + 'blue', + 'cyan', + 'green', + 'purple', + 'pink', + 'orange', + 'brown', + 'black', + ); + + if ( in_array( $color_theme, $allowed_colors, true ) ) { + return $color_theme; + } + return ''; + } + + /** + * Sanitizes the value of CTA placement. + * + * @since 1.80.0 + * + * @param string $cta_placement The value to sanitize. + * @return string The sanitized value. + */ + private function sanitize_cta_placement( $cta_placement ) { + if ( in_array( + $cta_placement, + array( + Web_Tag::PLACEMENT_DYNAMIC_LOW, + Web_Tag::PLACEMENT_DYNAMIC_HIGH, + Web_Tag::PLACEMENT_STATIC_AUTO, + Web_Tag::PLACEMENT_STATIC_ABOVE_CONTENT, + Web_Tag::PLACEMENT_STATIC_BELOW_CONTENT, + Web_Tag::PLACEMENT_STATIC_BELOW_FIRST_P, + ), + true + ) ) { + return $cta_placement; + } + return ''; + } + + /** + * Sanitizes the value of CTA post types. + * + * @since 1.80.0 + * + * @param array $cta_post_types The value to sanitize. + * @return array The sanitized value. + */ + private function sanitize_cta_post_types( $cta_post_types ) { + if ( ! is_array( $cta_post_types ) ) { + return array(); + } + return array_intersect( + $cta_post_types, + array_filter( + get_post_types(), + function( $post_type ) { + return is_post_type_viewable( $post_type ); + } + ) + ); + } +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Supporter_Wall_Widget.php b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Supporter_Wall_Widget.php new file mode 100644 index 000000000..2c51a74df --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Supporter_Wall_Widget.php @@ -0,0 +1,116 @@ + __( 'Thank with Google Supporters', 'google-site-kit' ), + ) + ); + + $title = $instance['title']; + $title_id = $this->get_field_id( 'title' ); + + ?> +

+ + +

+

+ +

+ '; + + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Web_Tag.php new file mode 100644 index 000000000..146ec9866 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Web_Tag.php @@ -0,0 +1,258 @@ +cta_placement = $cta_placement; + } + + /** + * Sets the current CTA post types. + * + * @since 1.80.0 + * + * @param string[] $cta_post_types CTA post types. + */ + public function set_cta_post_types( $cta_post_types ) { + $this->cta_post_types = $cta_post_types; + } + + /** + * Sets the color theme. + * + * @since 1.82.0 + * + * @param string $color_theme Color theme. + */ + public function set_color_theme( $color_theme ) { + $this->color_theme = $color_theme; + } + + /** + * Registers tag hooks. + * + * @since 1.80.0 + */ + public function register() { + add_action( 'wp_enqueue_scripts', $this->get_method_proxy( 'enqueue_twg_script' ) ); + add_filter( 'the_content', $this->get_method_proxy( 'update_the_content' ) ); + add_filter( + 'wp_resource_hints', + $this->get_dns_prefetch_hints_callback( '//news.google.com' ), + 10, + 2 + ); + + $this->do_init_tag_action(); + } + + /** + * This method is intended a web tag, but it does nothing in this module as the tag is enqueued. + * + * @since 1.80.0 + */ + protected function render() { + // Do nothing, Thank with Google script is enqueued. + } + + /** + * Enqueues the "Thanks with Google" script. + * + * @since 1.80.0 + */ + protected function enqueue_twg_script() { + $is_singular = $this->is_singular_cta_post_type_entity(); + $is_static = $this->has_static_cta_placement(); + + $subscription = array( + 'type' => 'Blog', + 'isPartOfType' => array( 'Blog', 'Product' ), + 'isPartOfProductId' => $this->tag_id . ':default', + 'postTitle' => $is_singular ? get_the_title() : '', + 'permalink' => $is_singular ? get_permalink() : '', + 'pluginVersion' => GOOGLESITEKIT_VERSION, + 'colorTheme' => $this->color_theme, + 'promptSettings' => array( + 'style' => $is_static ? 'inline' : 'floating', + ), + ); + + if ( self::PLACEMENT_DYNAMIC_LOW === $this->cta_placement ) { + $subscription['promptSettings']['floatingPromptProminence'] = 'low'; + } elseif ( self::PLACEMENT_DYNAMIC_HIGH === $this->cta_placement ) { + $subscription['promptSettings']['floatingPromptProminence'] = 'high'; + } + + $json_encoded_subscription = wp_json_encode( $subscription ); + if ( ! $json_encoded_subscription ) { + $json_encoded_subscription = 'null'; + } + $twg_inline_script = sprintf( + '(self.SWG_BASIC=self.SWG_BASIC||[]).push(function(subscriptions){subscriptions.init(%s);});', + $json_encoded_subscription + ); + + // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion + wp_register_script( 'google_thankjs', 'https://news.google.com/thank/js/v1/thank.js', array(), null, true ); + wp_add_inline_script( 'google_thankjs', $twg_inline_script, 'before' ); + + $filter_google_thankjs = function ( $tag, $handle ) { + if ( 'google_thankjs' !== $handle ) { + return $tag; + } + + return $this->add_snippet_comments( $tag ); + }; + + add_filter( 'script_loader_tag', $filter_google_thankjs, 10, 2 ); + + if ( $is_singular ) { + wp_enqueue_script( 'google_thankjs' ); + } + } + + /** + * Updates the content of the post. + * + * @since 1.80.0 + * + * @param string $content Content of the post. + * @return string Content of the post. + */ + protected function update_the_content( $content ) { + if ( ! $this->is_singular_cta_post_type_entity() ) { + return $content; + } + + $cta_placeholder = $this->add_snippet_comments( + '
' + ); + + $counter_placeholder = $this->add_snippet_comments( + '
' + ); + + if ( empty( $content ) ) { + return $cta_placeholder . $counter_placeholder; + } + + if ( $this->has_static_cta_placement() ) { + // Treat auto placement as above the content. + if ( in_array( $this->cta_placement, array( self::PLACEMENT_STATIC_AUTO, self::PLACEMENT_STATIC_ABOVE_CONTENT ), true ) ) { + // If CTA placement is above the content, the counter is placed below the content. + $content = $cta_placeholder . $content . $counter_placeholder; + } elseif ( self::PLACEMENT_STATIC_BELOW_CONTENT === $this->cta_placement ) { + // If CTA placement is below the content, the counter is not displayed. + $content = $content . $cta_placeholder; + } elseif ( self::PLACEMENT_STATIC_BELOW_FIRST_P === $this->cta_placement ) { + // If CTA placement is below first paragraph, the counter is placed below the content. + $content = substr_replace( $content, $cta_placeholder, strpos( $content, '

' ) + 4, 0 ) // strlen( '

' ) is 4. + . $counter_placeholder; + } + } else { + // If CTA placement is dynamic, the counter is placed below the content. + // Note that the CTA placeholder is not added here because it is added by the script. + $content = $content . $counter_placeholder; + } + + return $content; + } + + /** + * Checks if the current CTA placement is static. + * + * @since 1.80.0 + * + * @return bool True if the current CTA placement is static. + */ + private function has_static_cta_placement() { + return esc_js( substr( $this->cta_placement, 0, 7 ) === 'static_' ); // strlen( 'static_' ) is 7. + } + + /** + * Determine if the current page is a singular CTA post type entry. + * + * @since 1.80.0 + * + * @return bool True if the current page is a singular CTA post type entry. False otherwise. + */ + private function is_singular_cta_post_type_entity() { + return is_singular( $this->cta_post_types ); + } + + /** + * Add snippet comments around the tag. + * + * @since 1.80.0 + * + * @param string $code The tag code. + * @return string The tag code with snippet comments. + */ + private function add_snippet_comments( $code ) { + $before = sprintf( "\n\n", esc_html__( 'Thank with Google snippet added by Site Kit', 'google-site-kit' ) ); + $after = sprintf( "\n\n", esc_html__( 'End Thank with Google snippet added by Site Kit', 'google-site-kit' ) ); + return $before . $code . $after; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/Plugin.php b/wp-content/plugins/google-site-kit/includes/Plugin.php new file mode 100644 index 000000000..9998fed81 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/Plugin.php @@ -0,0 +1,280 @@ +context = new Context( $main_file ); + } + + /** + * Retrieves the plugin context object. + * + * @since 1.0.0 + * + * @return Context Plugin context. + */ + public function context() { + return $this->context; + } + + /** + * Registers the plugin with WordPress. + * + * @since 1.0.0 + */ + public function register() { + if ( $this->context->is_network_mode() ) { + add_action( + 'network_admin_notices', + function() { + ?> +
+

+ not yet offer a network mode, but we’re actively working on that.', 'google-site-kit' ), + array( + 'strong' => array(), + ) + ); + ?> +

+
+ \WP_REST_Server::EDITABLE, + 'callback' => function( \WP_REST_Request $request ) { + $token = wp_generate_uuid4(); + set_transient( 'googlesitekit_setup_token', $token, 5 * MINUTE_IN_SECONDS ); + + return new \WP_REST_Response( array( 'token' => $token ) ); + }, + 'permission_callback' => $can_setup, + ), + ) + ); + return $routes; + } + ); + + // Output temporary tag if set. + add_action( + 'wp_head', + function () { + $token = get_transient( 'googlesitekit_setup_token' ); + + if ( $token ) { + printf( '', esc_attr( $token ) ); + } + } + ); + + $display_site_kit_meta = function() { + echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + 'googlesitekit_generator', + sprintf( '', esc_attr( GOOGLESITEKIT_VERSION ) ) + ); + }; + add_action( 'wp_head', $display_site_kit_meta ); + add_action( 'login_head', $display_site_kit_meta ); + + $options = new Core\Storage\Options( $this->context ); + + // Register activation flag logic outside of 'init' since it hooks into + // plugin activation. + $activation_flag = new Core\Util\Activation_Flag( $this->context, $options ); + $activation_flag->register(); + + // Register uninstallation logic outside of 'init' since it hooks into + // plugin uninstallation. + $uninstallation = new Core\Util\Uninstallation( $this->context, $options ); + $uninstallation->register(); + + // Initiate the plugin on 'init' for relying on current user being set. + add_action( + 'init', + function() use ( $options, $activation_flag ) { + $transients = new Core\Storage\Transients( $this->context ); + $user_options = new Core\Storage\User_Options( $this->context, get_current_user_id() ); + $assets = new Core\Assets\Assets( $this->context ); + + $authentication = new Core\Authentication\Authentication( $this->context, $options, $user_options, $transients ); + $authentication->register(); + + $modules = new Core\Modules\Modules( $this->context, $options, $user_options, $authentication, $assets ); + $modules->register(); + + $dismissals = new Core\Dismissals\Dismissals( $this->context, $user_options ); + $dismissals->register(); + + $dismissed_items = $dismissals->get_dismissed_items(); + + $permissions = new Core\Permissions\Permissions( $this->context, $authentication, $modules, $user_options, $dismissed_items ); + $permissions->register(); + + // Assets must be registered after Modules instance is registered. + $assets->register(); + + $screens = new Core\Admin\Screens( $this->context, $assets, $modules, $authentication ); + $screens->register(); + + $user_surveys = new Core\User_Surveys\User_Surveys( $authentication, $user_options ); + $user_surveys->register(); + + ( new Core\Authentication\Setup( $this->context, $user_options, $authentication ) )->register(); + + ( new Core\Util\Reset( $this->context ) )->register(); + ( new Core\Util\Reset_Persistent( $this->context ) )->register(); + ( new Core\Util\Developer_Plugin_Installer( $this->context ) )->register(); + ( new Core\Tracking\Tracking( $this->context, $user_options, $screens ) )->register(); + ( new Core\REST_API\REST_Routes( $this->context, $authentication, $modules ) )->register(); + ( new Core\Util\REST_Entity_Search_Controller( $this->context ) )->register(); + ( new Core\Admin_Bar\Admin_Bar( $this->context, $assets, $modules ) )->register(); + ( new Core\Admin\Available_Tools() )->register(); + ( new Core\Admin\Notices() )->register(); + ( new Core\Admin\Pointers() )->register(); + ( new Core\Admin\Dashboard( $this->context, $assets, $modules ) )->register(); + ( new Core\Notifications\Notifications( $this->context, $options, $authentication ) )->register(); + ( new Core\Util\Debug_Data( $this->context, $options, $user_options, $authentication, $modules, $permissions ) )->register(); + ( new Core\Util\Health_Checks( $authentication ) )->register(); + ( new Core\Admin\Standalone( $this->context ) )->register(); + ( new Core\Util\Activation_Notice( $this->context, $activation_flag, $assets ) )->register(); + ( new Core\Feature_Tours\Feature_Tours( $this->context, $user_options ) )->register(); + ( new Core\Util\Migration_1_3_0( $this->context, $options, $user_options ) )->register(); + ( new Core\Util\Migration_1_8_1( $this->context, $options, $user_options, $authentication ) )->register(); + ( new Core\Dashboard_Sharing\Dashboard_Sharing( $this->context, $user_options ) )->register(); + + // If a login is happening (runs after 'init'), update current user in dependency chain. + add_action( + 'wp_login', + function( $username, $user ) use ( $user_options ) { + $user_options->switch_user( $user->ID ); + }, + -999, + 2 + ); + + /** + * Fires when Site Kit has fully initialized. + * + * @since 1.0.0 + */ + do_action( 'googlesitekit_init' ); + }, + -999 + ); + + // Register _gl parameter to be removed from the URL. + add_filter( + 'removable_query_args', + function ( $args ) { + $args[] = '_gl'; + return $args; + } + ); + + // WP CLI Commands. + if ( defined( 'WP_CLI' ) && WP_CLI ) { + ( new Core\CLI\CLI_Commands( $this->context ) )->register(); + } + + // Add Plugin Row Meta. + ( new Core\Admin\Plugin_Row_Meta() )->register(); + + // Add Plugin Action Links. + ( new Core\Admin\Plugin_Action_Links( $this->context ) )->register(); + } + + /** + * Retrieves the main instance of the plugin. + * + * @since 1.0.0 + * + * @return Plugin Plugin main instance. + */ + public static function instance() { + return static::$instance; + } + + /** + * Loads the plugin main instance and initializes it. + * + * @since 1.0.0 + * + * @param string $main_file Absolute path to the plugin main file. + * @return bool True if the plugin main instance could be loaded, false otherwise. + */ + public static function load( $main_file ) { + if ( null !== static::$instance ) { + return false; + } + + if ( file_exists( GOOGLESITEKIT_PLUGIN_DIR_PATH . 'dist/config.php' ) ) { + $config = include GOOGLESITEKIT_PLUGIN_DIR_PATH . 'dist/config.php'; + Build_Mode::set_mode( $config['buildMode'] ); + Feature_Flags::set_features( (array) $config['features'] ); + } + + static::$instance = new static( $main_file ); + static::$instance->register(); + + return true; + } + +} diff --git a/wp-content/plugins/google-site-kit/includes/loader.php b/wp-content/plugins/google-site-kit/includes/loader.php new file mode 100644 index 000000000..52fcd4574 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/loader.php @@ -0,0 +1,59 @@ + $file ) { + require_once $file; + } +} +autoload_vendor_files(); + +// Initialize the plugin. +Plugin::load( GOOGLESITEKIT_PLUGIN_MAIN_FILE ); diff --git a/wp-content/plugins/google-site-kit/includes/vendor/composer/autoload_classmap.php b/wp-content/plugins/google-site-kit/includes/vendor/composer/autoload_classmap.php new file mode 100644 index 000000000..72bde30b1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/includes/vendor/composer/autoload_classmap.php @@ -0,0 +1,219 @@ + $vendorDir . '/composer/InstalledVersions.php', + 'Google\\Site_Kit\\Context' => $baseDir . '/Context.php', + 'Google\\Site_Kit\\Core\\Admin\\Available_Tools' => $baseDir . '/Core/Admin/Available_Tools.php', + 'Google\\Site_Kit\\Core\\Admin\\Dashboard' => $baseDir . '/Core/Admin/Dashboard.php', + 'Google\\Site_Kit\\Core\\Admin\\Notice' => $baseDir . '/Core/Admin/Notice.php', + 'Google\\Site_Kit\\Core\\Admin\\Notices' => $baseDir . '/Core/Admin/Notices.php', + 'Google\\Site_Kit\\Core\\Admin\\Plugin_Action_Links' => $baseDir . '/Core/Admin/Plugin_Action_Links.php', + 'Google\\Site_Kit\\Core\\Admin\\Plugin_Row_Meta' => $baseDir . '/Core/Admin/Plugin_Row_Meta.php', + 'Google\\Site_Kit\\Core\\Admin\\Pointer' => $baseDir . '/Core/Admin/Pointer.php', + 'Google\\Site_Kit\\Core\\Admin\\Pointers' => $baseDir . '/Core/Admin/Pointers.php', + 'Google\\Site_Kit\\Core\\Admin\\Screen' => $baseDir . '/Core/Admin/Screen.php', + 'Google\\Site_Kit\\Core\\Admin\\Screens' => $baseDir . '/Core/Admin/Screens.php', + 'Google\\Site_Kit\\Core\\Admin\\Standalone' => $baseDir . '/Core/Admin/Standalone.php', + 'Google\\Site_Kit\\Core\\Admin_Bar\\Admin_Bar' => $baseDir . '/Core/Admin_Bar/Admin_Bar.php', + 'Google\\Site_Kit\\Core\\Admin_Bar\\Admin_Bar_Enabled' => $baseDir . '/Core/Admin_Bar/Admin_Bar_Enabled.php', + 'Google\\Site_Kit\\Core\\Assets\\Asset' => $baseDir . '/Core/Assets/Asset.php', + 'Google\\Site_Kit\\Core\\Assets\\Assets' => $baseDir . '/Core/Assets/Assets.php', + 'Google\\Site_Kit\\Core\\Assets\\Manifest' => $baseDir . '/Core/Assets/Manifest.php', + 'Google\\Site_Kit\\Core\\Assets\\Script' => $baseDir . '/Core/Assets/Script.php', + 'Google\\Site_Kit\\Core\\Assets\\Script_Data' => $baseDir . '/Core/Assets/Script_Data.php', + 'Google\\Site_Kit\\Core\\Assets\\Stylesheet' => $baseDir . '/Core/Assets/Stylesheet.php', + 'Google\\Site_Kit\\Core\\Authentication\\Authentication' => $baseDir . '/Core/Authentication/Authentication.php', + 'Google\\Site_Kit\\Core\\Authentication\\Clients\\Client_Factory' => $baseDir . '/Core/Authentication/Clients/Client_Factory.php', + 'Google\\Site_Kit\\Core\\Authentication\\Clients\\Google_Site_Kit_Client' => $baseDir . '/Core/Authentication/Clients/Google_Site_Kit_Client.php', + 'Google\\Site_Kit\\Core\\Authentication\\Clients\\Google_Site_Kit_Proxy_Client' => $baseDir . '/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php', + 'Google\\Site_Kit\\Core\\Authentication\\Clients\\OAuth2' => $baseDir . '/Core/Authentication/Clients/OAuth2.php', + 'Google\\Site_Kit\\Core\\Authentication\\Clients\\OAuth_Client' => $baseDir . '/Core/Authentication/Clients/OAuth_Client.php', + 'Google\\Site_Kit\\Core\\Authentication\\Clients\\OAuth_Client_Base' => $baseDir . '/Core/Authentication/Clients/OAuth_Client_Base.php', + 'Google\\Site_Kit\\Core\\Authentication\\Connected_Proxy_URL' => $baseDir . '/Core/Authentication/Connected_Proxy_URL.php', + 'Google\\Site_Kit\\Core\\Authentication\\Credentials' => $baseDir . '/Core/Authentication/Credentials.php', + 'Google\\Site_Kit\\Core\\Authentication\\Disconnected_Reason' => $baseDir . '/Core/Authentication/Disconnected_Reason.php', + 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Exchange_Site_Code_Exception' => $baseDir . '/Core/Authentication/Exception/Exchange_Site_Code_Exception.php', + 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Google_OAuth_Exception' => $baseDir . '/Core/Authentication/Exception/Google_OAuth_Exception.php', + 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Google_Proxy_Code_Exception' => $baseDir . '/Core/Authentication/Exception/Google_Proxy_Code_Exception.php', + 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Insufficient_Scopes_Exception' => $baseDir . '/Core/Authentication/Exception/Insufficient_Scopes_Exception.php', + 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Missing_Verification_Exception' => $baseDir . '/Core/Authentication/Exception/Missing_Verification_Exception.php', + 'Google\\Site_Kit\\Core\\Authentication\\Google_Proxy' => $baseDir . '/Core/Authentication/Google_Proxy.php', + 'Google\\Site_Kit\\Core\\Authentication\\Has_Connected_Admins' => $baseDir . '/Core/Authentication/Has_Connected_Admins.php', + 'Google\\Site_Kit\\Core\\Authentication\\Has_Multiple_Admins' => $baseDir . '/Core/Authentication/Has_Multiple_Admins.php', + 'Google\\Site_Kit\\Core\\Authentication\\Initial_Version' => $baseDir . '/Core/Authentication/Initial_Version.php', + 'Google\\Site_Kit\\Core\\Authentication\\Owner_ID' => $baseDir . '/Core/Authentication/Owner_ID.php', + 'Google\\Site_Kit\\Core\\Authentication\\Profile' => $baseDir . '/Core/Authentication/Profile.php', + 'Google\\Site_Kit\\Core\\Authentication\\Setup' => $baseDir . '/Core/Authentication/Setup.php', + 'Google\\Site_Kit\\Core\\Authentication\\Token' => $baseDir . '/Core/Authentication/Token.php', + 'Google\\Site_Kit\\Core\\Authentication\\User_Input_State' => $baseDir . '/Core/Authentication/User_Input_State.php', + 'Google\\Site_Kit\\Core\\Authentication\\Verification' => $baseDir . '/Core/Authentication/Verification.php', + 'Google\\Site_Kit\\Core\\Authentication\\Verification_File' => $baseDir . '/Core/Authentication/Verification_File.php', + 'Google\\Site_Kit\\Core\\Authentication\\Verification_Meta' => $baseDir . '/Core/Authentication/Verification_Meta.php', + 'Google\\Site_Kit\\Core\\CLI\\Authentication_CLI_Command' => $baseDir . '/Core/CLI/Authentication_CLI_Command.php', + 'Google\\Site_Kit\\Core\\CLI\\CLI_Command' => $baseDir . '/Core/CLI/CLI_Command.php', + 'Google\\Site_Kit\\Core\\CLI\\CLI_Commands' => $baseDir . '/Core/CLI/CLI_Commands.php', + 'Google\\Site_Kit\\Core\\CLI\\Reset_CLI_Command' => $baseDir . '/Core/CLI/Reset_CLI_Command.php', + 'Google\\Site_Kit\\Core\\Contracts\\WP_Errorable' => $baseDir . '/Core/Contracts/WP_Errorable.php', + 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\Activity_Metrics\\Active_Consumers' => $baseDir . '/Core/Dashboard_Sharing/Activity_Metrics/Active_Consumers.php', + 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\Activity_Metrics\\Activity_Metrics' => $baseDir . '/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php', + 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\Dashboard_Sharing' => $baseDir . '/Core/Dashboard_Sharing/Dashboard_Sharing.php', + 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\View_Only_Pointer' => $baseDir . '/Core/Dashboard_Sharing/View_Only_Pointer.php', + 'Google\\Site_Kit\\Core\\Dismissals\\Dismissals' => $baseDir . '/Core/Dismissals/Dismissals.php', + 'Google\\Site_Kit\\Core\\Dismissals\\Dismissed_Items' => $baseDir . '/Core/Dismissals/Dismissed_Items.php', + 'Google\\Site_Kit\\Core\\Dismissals\\REST_Dismissals_Controller' => $baseDir . '/Core/Dismissals/REST_Dismissals_Controller.php', + 'Google\\Site_Kit\\Core\\Feature_Tours\\Dismissed_Tours' => $baseDir . '/Core/Feature_Tours/Dismissed_Tours.php', + 'Google\\Site_Kit\\Core\\Feature_Tours\\Feature_Tours' => $baseDir . '/Core/Feature_Tours/Feature_Tours.php', + 'Google\\Site_Kit\\Core\\Feature_Tours\\REST_Feature_Tours_Controller' => $baseDir . '/Core/Feature_Tours/REST_Feature_Tours_Controller.php', + 'Google\\Site_Kit\\Core\\Guards\\Guard_Interface' => $baseDir . '/Core/Guards/Guard_Interface.php', + 'Google\\Site_Kit\\Core\\Modules\\Datapoint' => $baseDir . '/Core/Modules/Datapoint.php', + 'Google\\Site_Kit\\Core\\Modules\\Module' => $baseDir . '/Core/Modules/Module.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_Registry' => $baseDir . '/Core/Modules/Module_Registry.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_Settings' => $baseDir . '/Core/Modules/Module_Settings.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_Sharing_Settings' => $baseDir . '/Core/Modules/Module_Sharing_Settings.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Activation' => $baseDir . '/Core/Modules/Module_With_Activation.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Assets' => $baseDir . '/Core/Modules/Module_With_Assets.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Assets_Trait' => $baseDir . '/Core/Modules/Module_With_Assets_Trait.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Deactivation' => $baseDir . '/Core/Modules/Module_With_Deactivation.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Debug_Fields' => $baseDir . '/Core/Modules/Module_With_Debug_Fields.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Owner' => $baseDir . '/Core/Modules/Module_With_Owner.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Owner_Trait' => $baseDir . '/Core/Modules/Module_With_Owner_Trait.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Persistent_Registration' => $baseDir . '/Core/Modules/Module_With_Persistent_Registration.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Scopes' => $baseDir . '/Core/Modules/Module_With_Scopes.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Scopes_Trait' => $baseDir . '/Core/Modules/Module_With_Scopes_Trait.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Service_Entity' => $baseDir . '/Core/Modules/Module_With_Service_Entity.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Settings' => $baseDir . '/Core/Modules/Module_With_Settings.php', + 'Google\\Site_Kit\\Core\\Modules\\Module_With_Settings_Trait' => $baseDir . '/Core/Modules/Module_With_Settings_Trait.php', + 'Google\\Site_Kit\\Core\\Modules\\Modules' => $baseDir . '/Core/Modules/Modules.php', + 'Google\\Site_Kit\\Core\\Modules\\REST_Dashboard_Sharing_Controller' => $baseDir . '/Core/Modules/REST_Dashboard_Sharing_Controller.php', + 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_AMP_Tag' => $baseDir . '/Core/Modules/Tags/Module_AMP_Tag.php', + 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_Tag' => $baseDir . '/Core/Modules/Tags/Module_Tag.php', + 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_Tag_Guard' => $baseDir . '/Core/Modules/Tags/Module_Tag_Guard.php', + 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_Web_Tag' => $baseDir . '/Core/Modules/Tags/Module_Web_Tag.php', + 'Google\\Site_Kit\\Core\\Notifications\\Notification' => $baseDir . '/Core/Notifications/Notification.php', + 'Google\\Site_Kit\\Core\\Notifications\\Notifications' => $baseDir . '/Core/Notifications/Notifications.php', + 'Google\\Site_Kit\\Core\\Permissions\\Permissions' => $baseDir . '/Core/Permissions/Permissions.php', + 'Google\\Site_Kit\\Core\\REST_API\\Data_Request' => $baseDir . '/Core/REST_API/Data_Request.php', + 'Google\\Site_Kit\\Core\\REST_API\\Exception\\Invalid_Datapoint_Exception' => $baseDir . '/Core/REST_API/Exception/Invalid_Datapoint_Exception.php', + 'Google\\Site_Kit\\Core\\REST_API\\REST_Route' => $baseDir . '/Core/REST_API/REST_Route.php', + 'Google\\Site_Kit\\Core\\REST_API\\REST_Routes' => $baseDir . '/Core/REST_API/REST_Routes.php', + 'Google\\Site_Kit\\Core\\Storage\\Cache' => $baseDir . '/Core/Storage/Cache.php', + 'Google\\Site_Kit\\Core\\Storage\\Data_Encryption' => $baseDir . '/Core/Storage/Data_Encryption.php', + 'Google\\Site_Kit\\Core\\Storage\\Encrypted_Options' => $baseDir . '/Core/Storage/Encrypted_Options.php', + 'Google\\Site_Kit\\Core\\Storage\\Encrypted_User_Options' => $baseDir . '/Core/Storage/Encrypted_User_Options.php', + 'Google\\Site_Kit\\Core\\Storage\\Options' => $baseDir . '/Core/Storage/Options.php', + 'Google\\Site_Kit\\Core\\Storage\\Options_Interface' => $baseDir . '/Core/Storage/Options_Interface.php', + 'Google\\Site_Kit\\Core\\Storage\\Post_Meta' => $baseDir . '/Core/Storage/Post_Meta.php', + 'Google\\Site_Kit\\Core\\Storage\\Post_Meta_Interface' => $baseDir . '/Core/Storage/Post_Meta_Interface.php', + 'Google\\Site_Kit\\Core\\Storage\\Post_Meta_Setting' => $baseDir . '/Core/Storage/Post_Meta_Setting.php', + 'Google\\Site_Kit\\Core\\Storage\\Setting' => $baseDir . '/Core/Storage/Setting.php', + 'Google\\Site_Kit\\Core\\Storage\\Setting_With_Legacy_Keys_Trait' => $baseDir . '/Core/Storage/Setting_With_Legacy_Keys_Trait.php', + 'Google\\Site_Kit\\Core\\Storage\\Setting_With_Owned_Keys_Interface' => $baseDir . '/Core/Storage/Setting_With_Owned_Keys_Interface.php', + 'Google\\Site_Kit\\Core\\Storage\\Setting_With_Owned_Keys_Trait' => $baseDir . '/Core/Storage/Setting_With_Owned_Keys_Trait.php', + 'Google\\Site_Kit\\Core\\Storage\\Transients' => $baseDir . '/Core/Storage/Transients.php', + 'Google\\Site_Kit\\Core\\Storage\\User_Aware_Interface' => $baseDir . '/Core/Storage/User_Aware_Interface.php', + 'Google\\Site_Kit\\Core\\Storage\\User_Aware_Trait' => $baseDir . '/Core/Storage/User_Aware_Trait.php', + 'Google\\Site_Kit\\Core\\Storage\\User_Options' => $baseDir . '/Core/Storage/User_Options.php', + 'Google\\Site_Kit\\Core\\Storage\\User_Options_Interface' => $baseDir . '/Core/Storage/User_Options_Interface.php', + 'Google\\Site_Kit\\Core\\Storage\\User_Setting' => $baseDir . '/Core/Storage/User_Setting.php', + 'Google\\Site_Kit\\Core\\Storage\\User_Transients' => $baseDir . '/Core/Storage/User_Transients.php', + 'Google\\Site_Kit\\Core\\Tags\\Blockable_Tag_Interface' => $baseDir . '/Core/Tags/Blockable_Tag_Interface.php', + 'Google\\Site_Kit\\Core\\Tags\\Guards\\Tag_Environment_Type_Guard' => $baseDir . '/Core/Tags/Guards/Tag_Environment_Type_Guard.php', + 'Google\\Site_Kit\\Core\\Tags\\Guards\\Tag_Verify_Guard' => $baseDir . '/Core/Tags/Guards/Tag_Verify_Guard.php', + 'Google\\Site_Kit\\Core\\Tags\\Tag' => $baseDir . '/Core/Tags/Tag.php', + 'Google\\Site_Kit\\Core\\Tags\\Tag_Interface' => $baseDir . '/Core/Tags/Tag_Interface.php', + 'Google\\Site_Kit\\Core\\Tags\\Tag_With_DNS_Prefetch_Trait' => $baseDir . '/Core/Tags/Tag_With_DNS_Prefetch_Trait.php', + 'Google\\Site_Kit\\Core\\Tracking\\REST_Tracking_Consent_Controller' => $baseDir . '/Core/Tracking/REST_Tracking_Consent_Controller.php', + 'Google\\Site_Kit\\Core\\Tracking\\Tracking' => $baseDir . '/Core/Tracking/Tracking.php', + 'Google\\Site_Kit\\Core\\Tracking\\Tracking_Consent' => $baseDir . '/Core/Tracking/Tracking_Consent.php', + 'Google\\Site_Kit\\Core\\User_Surveys\\REST_User_Surveys_Controller' => $baseDir . '/Core/User_Surveys/REST_User_Surveys_Controller.php', + 'Google\\Site_Kit\\Core\\User_Surveys\\Survey_Timeouts' => $baseDir . '/Core/User_Surveys/Survey_Timeouts.php', + 'Google\\Site_Kit\\Core\\User_Surveys\\User_Surveys' => $baseDir . '/Core/User_Surveys/User_Surveys.php', + 'Google\\Site_Kit\\Core\\Util\\Activation_Flag' => $baseDir . '/Core/Util/Activation_Flag.php', + 'Google\\Site_Kit\\Core\\Util\\Activation_Notice' => $baseDir . '/Core/Util/Activation_Notice.php', + 'Google\\Site_Kit\\Core\\Util\\BC_Functions' => $baseDir . '/Core/Util/BC_Functions.php', + 'Google\\Site_Kit\\Core\\Util\\Build_Mode' => $baseDir . '/Core/Util/Build_Mode.php', + 'Google\\Site_Kit\\Core\\Util\\Collection_Key_Cap_Filter' => $baseDir . '/Core/Util/Collection_Key_Cap_Filter.php', + 'Google\\Site_Kit\\Core\\Util\\Debug_Data' => $baseDir . '/Core/Util/Debug_Data.php', + 'Google\\Site_Kit\\Core\\Util\\Developer_Plugin_Installer' => $baseDir . '/Core/Util/Developer_Plugin_Installer.php', + 'Google\\Site_Kit\\Core\\Util\\Entity' => $baseDir . '/Core/Util/Entity.php', + 'Google\\Site_Kit\\Core\\Util\\Entity_Factory' => $baseDir . '/Core/Util/Entity_Factory.php', + 'Google\\Site_Kit\\Core\\Util\\Exit_Handler' => $baseDir . '/Core/Util/Exit_Handler.php', + 'Google\\Site_Kit\\Core\\Util\\Feature_Flags' => $baseDir . '/Core/Util/Feature_Flags.php', + 'Google\\Site_Kit\\Core\\Util\\Google_Icon' => $baseDir . '/Core/Util/Google_Icon.php', + 'Google\\Site_Kit\\Core\\Util\\Google_URL_Matcher_Trait' => $baseDir . '/Core/Util/Google_URL_Matcher_Trait.php', + 'Google\\Site_Kit\\Core\\Util\\Google_URL_Normalizer' => $baseDir . '/Core/Util/Google_URL_Normalizer.php', + 'Google\\Site_Kit\\Core\\Util\\Health_Checks' => $baseDir . '/Core/Util/Health_Checks.php', + 'Google\\Site_Kit\\Core\\Util\\Input' => $baseDir . '/Core/Util/Input.php', + 'Google\\Site_Kit\\Core\\Util\\Method_Proxy_Trait' => $baseDir . '/Core/Util/Method_Proxy_Trait.php', + 'Google\\Site_Kit\\Core\\Util\\Migrate_Legacy_Keys' => $baseDir . '/Core/Util/Migrate_Legacy_Keys.php', + 'Google\\Site_Kit\\Core\\Util\\Migration_1_3_0' => $baseDir . '/Core/Util/Migration_1_3_0.php', + 'Google\\Site_Kit\\Core\\Util\\Migration_1_8_1' => $baseDir . '/Core/Util/Migration_1_8_1.php', + 'Google\\Site_Kit\\Core\\Util\\REST_Entity_Search_Controller' => $baseDir . '/Core/Util/REST_Entity_Search_Controller.php', + 'Google\\Site_Kit\\Core\\Util\\Requires_Javascript_Trait' => $baseDir . '/Core/Util/Requires_Javascript_Trait.php', + 'Google\\Site_Kit\\Core\\Util\\Reset' => $baseDir . '/Core/Util/Reset.php', + 'Google\\Site_Kit\\Core\\Util\\Reset_Persistent' => $baseDir . '/Core/Util/Reset_Persistent.php', + 'Google\\Site_Kit\\Core\\Util\\Scopes' => $baseDir . '/Core/Util/Scopes.php', + 'Google\\Site_Kit\\Core\\Util\\Synthetic_WP_Query' => $baseDir . '/Core/Util/Synthetic_WP_Query.php', + 'Google\\Site_Kit\\Core\\Util\\URL' => $baseDir . '/Core/Util/URL.php', + 'Google\\Site_Kit\\Core\\Util\\Uninstallation' => $baseDir . '/Core/Util/Uninstallation.php', + 'Google\\Site_Kit\\Core\\Util\\User_Input_Settings' => $baseDir . '/Core/Util/User_Input_Settings.php', + 'Google\\Site_Kit\\Core\\Util\\WP_Context_Switcher_Trait' => $baseDir . '/Core/Util/WP_Context_Switcher_Trait.php', + 'Google\\Site_Kit\\Core\\Util\\WP_Query_Factory' => $baseDir . '/Core/Util/WP_Query_Factory.php', + 'Google\\Site_Kit\\Core\\Validation\\Exception\\Invalid_Report_Dimensions_Exception' => $baseDir . '/Core/Validation/Exception/Invalid_Report_Dimensions_Exception.php', + 'Google\\Site_Kit\\Core\\Validation\\Exception\\Invalid_Report_Metrics_Exception' => $baseDir . '/Core/Validation/Exception/Invalid_Report_Metrics_Exception.php', + 'Google\\Site_Kit\\Modules\\AdSense' => $baseDir . '/Modules/AdSense.php', + 'Google\\Site_Kit\\Modules\\AdSense\\AMP_Tag' => $baseDir . '/Modules/AdSense/AMP_Tag.php', + 'Google\\Site_Kit\\Modules\\AdSense\\Auto_Ad_Guard' => $baseDir . '/Modules/AdSense/Auto_Ad_Guard.php', + 'Google\\Site_Kit\\Modules\\AdSense\\Settings' => $baseDir . '/Modules/AdSense/Settings.php', + 'Google\\Site_Kit\\Modules\\AdSense\\Tag_Guard' => $baseDir . '/Modules/AdSense/Tag_Guard.php', + 'Google\\Site_Kit\\Modules\\AdSense\\Web_Tag' => $baseDir . '/Modules/AdSense/Web_Tag.php', + 'Google\\Site_Kit\\Modules\\Analytics' => $baseDir . '/Modules/Analytics.php', + 'Google\\Site_Kit\\Modules\\Analytics\\AMP_Tag' => $baseDir . '/Modules/Analytics/AMP_Tag.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking' => $baseDir . '/Modules/Analytics/Advanced_Tracking.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\AMP_Config_Injector' => $baseDir . '/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Event' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Event.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Event_List' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Event_List.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Event_List_Registry' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Script_Injector' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Script_Injector.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Google_Service_AnalyticsProvisioning' => $baseDir . '/Modules/Analytics/Google_Service_AnalyticsProvisioning.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Proxy_AccountTicket' => $baseDir . '/Modules/Analytics/Proxy_Account_Ticket.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Proxy_Provisioning' => $baseDir . '/Modules/Analytics/Proxy_Provisioning.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Settings' => $baseDir . '/Modules/Analytics/Settings.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Tag_Guard' => $baseDir . '/Modules/Analytics/Tag_Guard.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Tag_Interface' => $baseDir . '/Modules/Analytics/Tag_Interface.php', + 'Google\\Site_Kit\\Modules\\Analytics\\Web_Tag' => $baseDir . '/Modules/Analytics/Web_Tag.php', + 'Google\\Site_Kit\\Modules\\Analytics_4' => $baseDir . '/Modules/Analytics_4.php', + 'Google\\Site_Kit\\Modules\\Analytics_4\\Settings' => $baseDir . '/Modules/Analytics_4/Settings.php', + 'Google\\Site_Kit\\Modules\\Analytics_4\\Tag_Guard' => $baseDir . '/Modules/Analytics_4/Tag_Guard.php', + 'Google\\Site_Kit\\Modules\\Analytics_4\\Web_Tag' => $baseDir . '/Modules/Analytics_4/Web_Tag.php', + 'Google\\Site_Kit\\Modules\\Idea_Hub' => $baseDir . '/Modules/Idea_Hub.php', + 'Google\\Site_Kit\\Modules\\Idea_Hub\\Idea_Interaction_Count' => $baseDir . '/Modules/Idea_Hub/Idea_Interaction_Count.php', + 'Google\\Site_Kit\\Modules\\Idea_Hub\\Post_Idea_Name' => $baseDir . '/Modules/Idea_Hub/Post_Idea_Name.php', + 'Google\\Site_Kit\\Modules\\Idea_Hub\\Post_Idea_Text' => $baseDir . '/Modules/Idea_Hub/Post_Idea_Text.php', + 'Google\\Site_Kit\\Modules\\Idea_Hub\\Post_Idea_Topics' => $baseDir . '/Modules/Idea_Hub/Post_Idea_Topics.php', + 'Google\\Site_Kit\\Modules\\Idea_Hub\\Settings' => $baseDir . '/Modules/Idea_Hub/Settings.php', + 'Google\\Site_Kit\\Modules\\Optimize' => $baseDir . '/Modules/Optimize.php', + 'Google\\Site_Kit\\Modules\\Optimize\\Settings' => $baseDir . '/Modules/Optimize/Settings.php', + 'Google\\Site_Kit\\Modules\\Optimize\\Tag_Guard' => $baseDir . '/Modules/Optimize/Tag_Guard.php', + 'Google\\Site_Kit\\Modules\\Optimize\\Web_Tag' => $baseDir . '/Modules/Optimize/Web_Tag.php', + 'Google\\Site_Kit\\Modules\\PageSpeed_Insights' => $baseDir . '/Modules/PageSpeed_Insights.php', + 'Google\\Site_Kit\\Modules\\PageSpeed_Insights\\Settings' => $baseDir . '/Modules/PageSpeed_Insights/Settings.php', + 'Google\\Site_Kit\\Modules\\Search_Console' => $baseDir . '/Modules/Search_Console.php', + 'Google\\Site_Kit\\Modules\\Search_Console\\Settings' => $baseDir . '/Modules/Search_Console/Settings.php', + 'Google\\Site_Kit\\Modules\\Site_Verification' => $baseDir . '/Modules/Site_Verification.php', + 'Google\\Site_Kit\\Modules\\Tag_Manager' => $baseDir . '/Modules/Tag_Manager.php', + 'Google\\Site_Kit\\Modules\\Tag_Manager\\AMP_Tag' => $baseDir . '/Modules/Tag_Manager/AMP_Tag.php', + 'Google\\Site_Kit\\Modules\\Tag_Manager\\Settings' => $baseDir . '/Modules/Tag_Manager/Settings.php', + 'Google\\Site_Kit\\Modules\\Tag_Manager\\Tag_Guard' => $baseDir . '/Modules/Tag_Manager/Tag_Guard.php', + 'Google\\Site_Kit\\Modules\\Tag_Manager\\Web_Tag' => $baseDir . '/Modules/Tag_Manager/Web_Tag.php', + 'Google\\Site_Kit\\Modules\\Thank_With_Google' => $baseDir . '/Modules/Thank_With_Google.php', + 'Google\\Site_Kit\\Modules\\Thank_With_Google\\Settings' => $baseDir . '/Modules/Thank_With_Google/Settings.php', + 'Google\\Site_Kit\\Modules\\Thank_With_Google\\Supporter_Wall_Widget' => $baseDir . '/Modules/Thank_With_Google/Supporter_Wall_Widget.php', + 'Google\\Site_Kit\\Modules\\Thank_With_Google\\Web_Tag' => $baseDir . '/Modules/Thank_With_Google/Web_Tag.php', + 'Google\\Site_Kit\\Plugin' => $baseDir . '/Plugin.php', +); diff --git a/wp-content/plugins/google-site-kit/readme.txt b/wp-content/plugins/google-site-kit/readme.txt new file mode 100644 index 000000000..7e7654a82 --- /dev/null +++ b/wp-content/plugins/google-site-kit/readme.txt @@ -0,0 +1,2227 @@ +=== Site Kit by Google - Analytics, Search Console, AdSense, Speed === + +Contributors: google +Requires at least: 5.2 +Tested up to: 6.1 +Requires PHP: 5.6 +Stable tag: 1.89.0 +License: Apache License 2.0 +License URI: https://www.apache.org/licenses/LICENSE-2.0 +Tags: google, search-console, analytics, adsense, pagespeed-insights, optimize, tag-manager, site-kit + +Site Kit is a one-stop solution for WordPress users to use everything Google has to offer to make them successful on the web. + +== Description == + +Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free. + += Bringing the best of Google tools to WordPress = + +Site Kit includes powerful features that make using these Google products seamless and flexible: + +* Easy-to-understand stats directly on your WordPress dashboard +* Official stats from multiple Google tools, all in one dashboard +* Quick setup for multiple Google tools without having to edit the source code of your site +* Metrics for your entire site and for individual posts +* Easy-to-manage, granular permissions across WordPress and different Google products + += Supported Google tools = + +Site Kit shows key metrics and insights from different Google products: + +* **Search Console:** Understand how Google Search discovers and displays your pages in Google Search. Track how many people saw your site in Search results, and what query they used to search for your site. +* **Analytics:** Explore how users navigate your site and track goals you've set up for your users to complete. +* **AdSense:** Keep track of how much your site is earning you. +* **PageSpeed Insights:** See how your pages perform compared to other real-world sites. Improve performance with actionable tips from PageSpeed Insights. +* **Tag Manager:** Use Site Kit to easily set up Tag Manager- no code editing required. Then, manage your tags in Tag Manager. +* **Optimize:** Use Site Kit to easily set up Optimize- no code editing required. Then, set up A/B tests in Optimize. + +== Installation == +**Note**: Make sure that your website is live. If your website isn't live yet, Site Kit can't show you any data. +However, if you have a staging environment in addition to your production site, Site Kit can display data from your production site in the staging environment. Learn how to use [Site Kit with a staging environment](https://sitekit.withgoogle.com/documentation/using-site-kit/staging/). + += Installation from within WordPress = + +1. Visit **Plugins > Add New**. +2. Search for **Site Kit by Google**. +3. Install and activate the Site Kit by Google plugin. +4. Connect Site Kit to your Google account. If there are multiple WordPress admins, keep in mind that each admin must connect their own Google account in order to access the plugin. + + += Manual installation = + +1. Upload the entire `google-site-kit` folder to the `/wp-content/plugins/` directory. +2. Visit **Plugins**. +3. Activate the Site Kit by Google plugin. +4. Connect Site Kit to your Google account. If there are multiple WordPress admins, keep in mind that each admin must connect their own Google account in order to access the plugin. + += After activation = + +1. Visit the new **Site Kit** menu. +2. Follow the instructions in the setup flow. +3. Go to the main Site Kit dashboard which already displays key metrics from Search Console. +4. Connect additional Google tools under **Site Kit > Settings**. Learn more about [which tools are right for you](https://sitekit.withgoogle.com/documentation/getting-started/connecting-services/). + +== Frequently Asked Questions == + +For more information, visit the [official Site Kit website](https://sitekit.withgoogle.com/documentation/). + += Is Site Kit free? = + +The Site Kit plugin is free and open source, and will remain so. Individual Google products included in Site Kit are subject to standard terms and fees (if any) for those products. + += What are the minimum requirements for Site Kit? = + +In order to successfully install and use Site Kit, your site must meet the following requirements: + +* WordPress version 5.2+ +* PHP version 5.6+ +* Modern browser – Internet Explorer is not supported +* Is publicly accessible – it isn’t in maintenance mode, accessible only via password, or otherwise blocked +* REST API is available – Site Kit must be able to communicate via REST API with Google services. To ensure that the REST API is available for your site, go to Tools > Site Health. + += Why is my dashboard showing “gathering data†and none of my service data? = + +It can take a few days after connecting Site Kit to a Google service for data to begin to display in your dashboard. The “gathering data†message typically appears when you’ve recently set up a Google service (i.e. just created a new Analytics account) and/or your site is new, and data is not yet available for display. + +If you are still seeing this message after a few days, feel free to get in touch with us on the [support forum](https://wordpress.org/support/plugin/google-site-kit/). + += Why aren’t any ads appearing on my site after I connected AdSense? = + +If you’re new to AdSense when you connect via Site Kit, your new AdSense account and your site will need to be manually reviewed and approved for ads by the AdSense team. Ads will not display until your account and site have been approved. [Check out this guide for more information about the approval process and timeline.](https://support.google.com/adsense/answer/76228) + +You can check your approval status in Site Kit by going to **Settings > Connected Services > AdSense** and clicking **Check your site status**. This link will direct you to AdSense. If you see “Ready,†your account and site have been approved and should be displaying ads. If you see “Getting ready…,†your account and site are still under review and your site will not display ads until they have been approved. + +If Site Kit has successfully added the AdSense snippet to your site and your account and site have been approved, but your site is still not showing ads, [contact the AdSense Help Center for assistance](https://support.google.com/adsense/#topic=3373519). + +You can find more information on how Site Kit works with AdSense in our [Managing AdSense guide](https://sitekit.withgoogle.com/documentation/using-site-kit/managing-adsense/). + += Is Site Kit GDPR compliant? = + +When using Site Kit, site owners are responsible for managing notice and consent requirements – including GDPR requirements – as described in [Google’s Terms of Service](https://policies.google.com/terms). + +By default, Site Kit does anonymize IP addresses upon activation of the Google Analytics module. In addition, Site Kit provides a mechanism in the form of a simple API for cookie consent plugins to integrate with Site Kit and prevent Site Kit's Google service snippets from being rendered on a page if the user has not granted consent. More information about how this API works is available in [this GitHub issue](https://github.com/google/site-kit-wp/issues/2087). + += Where can I get additional support? = + +Please create a new topic on our [WordPress.org support forum](https://wordpress.org/support/plugin/google-site-kit/). Be sure to follow the [support forum guidelines](https://wordpress.org/support/guidelines/) when posting. + +== Changelog == + += 1.89.0 = + +**Enhanced** + +* Update AdSense tag to include Site Kit platform host ID. See [#6132](https://github.com/google/site-kit-wp/issues/6132). +* Update Google API PHP client services library for new Tag Manager endpoints. See [#6076](https://github.com/google/site-kit-wp/issues/6076). +* Update link style within error notices. See [#5975](https://github.com/google/site-kit-wp/issues/5975). +* Implement new design for User Input questions. See [#5890](https://github.com/google/site-kit-wp/issues/5890). +* Update User Input survey questions for v2. See [#5888](https://github.com/google/site-kit-wp/issues/5888). +* Prevent users from changing the Google Analytics 4 configuration when they don't have access to the currently configured Universal Analytics property. See [#5886](https://github.com/google/site-kit-wp/issues/5886). +* Include a link to "Edit in Tag Manager" when viewing the Tag Manager module settings. See [#5174](https://github.com/google/site-kit-wp/issues/5174). +* Improve instructions in Optimize setup and settings. See [#4064](https://github.com/google/site-kit-wp/issues/4064). + +**Fixed** + +* Fix Google Analytics 4 settings toggle behaviour when GA4 is not connected. See [#6271](https://github.com/google/site-kit-wp/issues/6271). + += 1.88.0 = + +**Enhanced** + +* Render one-off tooltips in a portal. See [#6049](https://github.com/google/site-kit-wp/issues/6049). +* Update code integrating with Gutenberg to use React hooks instead, following the new WordPress version requirement of 5.2. See [#5876](https://github.com/google/site-kit-wp/issues/5876). +* Remove now unnecessary polyfills for WordPress versions older than 5.2, according to new version requirement. See [#5875](https://github.com/google/site-kit-wp/issues/5875). +* Raise minimum WordPress version requirement from 4.7 to 5.2. See [#5874](https://github.com/google/site-kit-wp/issues/5874). +* Show Measurement ID instead of Property ID in Analytics 4 Property Select Dropdown when there is an existing GA4 Tag. See [#5145](https://github.com/google/site-kit-wp/issues/5145). +* Link the Site Kit logo on the entity dashboard to the main dashboard. See [#4793](https://github.com/google/site-kit-wp/issues/4793). + +**Fixed** + +* Avoid using _n() as a shortcut for singular/plural without using a number. See [#6069](https://github.com/google/site-kit-wp/issues/6069). +* Update Tooltip styles to match GM2+ designs. See [#6059](https://github.com/google/site-kit-wp/issues/6059). +* Fix bug where the GA4 reminder tooltip in Analytics Settings was not appearing properly. See [#6045](https://github.com/google/site-kit-wp/issues/6045). +* Fix console error when viewing CoreSiteBannerNotifications stories. See [#5978](https://github.com/google/site-kit-wp/issues/5978). +* Increase size of banner icons in setup notification. See [#5934](https://github.com/google/site-kit-wp/issues/5934). +* Prevent dashboard from crashing when async SVG fails to load. See [#5605](https://github.com/google/site-kit-wp/issues/5605). + += 1.87.0 = + +**This version marks the 100th release of Site Kit 🎉** + +**Enhanced** + +* Implement custom Analytics events for the GA4 Activation Banner. See [#6042](https://github.com/google/site-kit-wp/issues/6042). +* Update the `ReportError` component to add the module slug to the insufficient error codes. See [#5987](https://github.com/google/site-kit-wp/issues/5987). +* Ensure Banner Notifications stay visible and display a spinner when navigating to links via the CTA. See [#5974](https://github.com/google/site-kit-wp/issues/5974). +* Enhance the BannerNotification component to better support a description which is a React element. See [#5972](https://github.com/google/site-kit-wp/issues/5972). +* Add a `googlesitekit.components` global and entrypoint with Material 2 components. See [#5958](https://github.com/google/site-kit-wp/issues/5958). +* Send active consumers data alongside the request to refresh an access token. See [#5569](https://github.com/google/site-kit-wp/issues/5569). +* Update shared user metadata when accessing shared dashboard. See [#5568](https://github.com/google/site-kit-wp/issues/5568). +* Dismiss main dashboard sharing tour if sharing settings tour is shown first. See [#5520](https://github.com/google/site-kit-wp/issues/5520). +* Add multi-module support to module recovery API endpoint. See [#5298](https://github.com/google/site-kit-wp/issues/5298). +* Update PageSpeed Insights widget to avoid layout shifts between loading and loaded states. See [#4878](https://github.com/google/site-kit-wp/issues/4878). + +**Changed** + +* Update and simplify GitHub workflows to use v3 version of `setup-node` action. See [#5786](https://github.com/google/site-kit-wp/issues/5786). + +**Fixed** + +* Fix bug that could cause a notification view event to be sent even when the notification doesn't appear. See [#6023](https://github.com/google/site-kit-wp/issues/6023). +* Fix bug that caused AdSense graphics in CTA banner to be loaded when not needed. See [#6006](https://github.com/google/site-kit-wp/issues/6006). +* Update the error boundary component styling to provide appropriate spacing between the main CTA button and the link to "Report this problem". See [#6005](https://github.com/google/site-kit-wp/issues/6005). +* Fix module settings open/close issue when any key is pressed. See [#5915](https://github.com/google/site-kit-wp/issues/5915). +* Fix bug that caused errors to appear in Analytics module when Tag Manager module is not available. See [#5074](https://github.com/google/site-kit-wp/issues/5074). + += 1.86.0 = + +**Enhanced** + +* Measure interactions with Thank with Google supporter wall banner notification. See [#6014](https://github.com/google/site-kit-wp/issues/6014). +* Measure interactions when changing Thank with Google configuration. See [#6013](https://github.com/google/site-kit-wp/issues/6013). +* Measure interactions related to publication setup for Thank with Google. See [#6012](https://github.com/google/site-kit-wp/issues/6012). +* Update Thank with Google copy in settings and setup screens. See [#5963](https://github.com/google/site-kit-wp/issues/5963). +* Adjust copy in GA4 banner to exclude full-stops/periods. See [#5927](https://github.com/google/site-kit-wp/issues/5927). +* Update "translators" placeholder comments when there is only one placeholder in a localization string. See [#5924](https://github.com/google/site-kit-wp/issues/5924). +* Hide help tooltip in GA4 settings screen after a property is selected. See [#5921](https://github.com/google/site-kit-wp/issues/5921). +* Fix bug that could cause user without Analytics access to see incorrect Analytics update UI in GA4 activation banner. See [#5912](https://github.com/google/site-kit-wp/issues/5912). +* Only request Analytics edit scopes in the GA4 Activation banner when required to create a new property. See [#5882](https://github.com/google/site-kit-wp/issues/5882). +* Allow WordPress Multisite network activation of Site Kit (currently only for per-site use). See [#5871](https://github.com/google/site-kit-wp/issues/5871). +* Add default title to the Supporter Wall widget for Thank with Google. See [#5785](https://github.com/google/site-kit-wp/issues/5785). +* Add more context to the "Supporter Wall" setting in Thank with Google settings. See [#5756](https://github.com/google/site-kit-wp/issues/5756). +* Show user account info in user menu. See [#5724](https://github.com/google/site-kit-wp/issues/5724). +* Add user account email to "Details" link to improve deep-link user experience. See [#5642](https://github.com/google/site-kit-wp/issues/5642). +* Add a "Retry" button for most errors in the plugin, except for some auth and other select errors. See [#5494](https://github.com/google/site-kit-wp/issues/5494). + +**Fixed** + +* Require modules to be active when making API requests against them. See [#5970](https://github.com/google/site-kit-wp/issues/5970). +* Fix bug that could cause GA4 Success banner after activation not to appear. See [#5945](https://github.com/google/site-kit-wp/issues/5945). +* Fix bug in GA4 activation banner setup that could cause a loading screen to remain when a network error is encountered. See [#5928](https://github.com/google/site-kit-wp/issues/5928). + += 1.85.0 = + +**Enhanced** + +* Prevent loading plugin core if minimum WordPress version is not met. See [#5926](https://github.com/google/site-kit-wp/issues/5926). +* Show banner notification to sites using a WordPress version older than 5.2 to inform about upcoming version requirement change. See [#5873](https://github.com/google/site-kit-wp/issues/5873). +* Hide the "Reset sharing permissions" button when settings are already using the default settings. See [#5840](https://github.com/google/site-kit-wp/issues/5840). +* Improve reliability of the check for SSL when determining Thank with Google module availability. See [#5806](https://github.com/google/site-kit-wp/issues/5806). +* Include an option to "Edit in Publisher Center" in the Thank with Google settings view. See [#5755](https://github.com/google/site-kit-wp/issues/5755). +* Update Thank with Google settings view to display without delay for consistency with other modules. See [#5750](https://github.com/google/site-kit-wp/issues/5750). +* Add conditional reminder to set up the Supporter Wall widget for Thank with Google. See [#5538](https://github.com/google/site-kit-wp/issues/5538). +* Add check for Site Kit service connectivity to pre-setup checks. See [#4628](https://github.com/google/site-kit-wp/issues/4628). + +**Fixed** + +* Add an external link indicator to the "Learn more about GA4" link in the GA4 Activation Banner. See [#5930](https://github.com/google/site-kit-wp/issues/5930). +* Ensure the GA4 Activation Banner does not appear on the Entity Dashboard when in view only mode. See [#5870](https://github.com/google/site-kit-wp/issues/5870). +* Skip Search Console requests on view-only dashboard when not shared with the user. See [#5815](https://github.com/google/site-kit-wp/issues/5815). +* Update Thank with Google setup and settings views for consistency with other modules and major browsers. See [#5689](https://github.com/google/site-kit-wp/issues/5689). +* Ensure the AdSense Linked status is correctly available in the Top Earning Pages widget when in view-only mode. See [#5493](https://github.com/google/site-kit-wp/issues/5493). +* Ensure the user role select always displays properly based on current shareable roles. See [#5435](https://github.com/google/site-kit-wp/issues/5435). +* Decouple core and modules from Analytics module availability. See [#5071](https://github.com/google/site-kit-wp/issues/5071). + += 1.84.0 = + +**Enhanced** + +* Show an informative message on the GA4 Activation Banner for the variants of the Setup Banner where a GA4 property does exist, when "Set up a new property" is selected while the edit scope is missing. See [#5805](https://github.com/google/site-kit-wp/issues/5805). +* Add default values for Thank with Google settings on the customization screen. See [#5757](https://github.com/google/site-kit-wp/issues/5757). +* Fix layout for module names when displayed with badges on the Settings page in mobile viewports. See [#5749](https://github.com/google/site-kit-wp/issues/5749). +* Improve layout of services badges in mobile viewport. See [#5746](https://github.com/google/site-kit-wp/issues/5746). +* Show button to complete Google Analytics 4 setup in settings. See [#5621](https://github.com/google/site-kit-wp/issues/5621). +* Add selector to retrieve meta-data for a given error. See [#5618](https://github.com/google/site-kit-wp/issues/5618). +* Finalize Thank with Google links to the Publisher Center. See [#5537](https://github.com/google/site-kit-wp/issues/5537). +* Remove legacy widget area constants. See [#5476](https://github.com/google/site-kit-wp/issues/5476). +* Add a button to reset Dashboard Sharing permissions. See [#5445](https://github.com/google/site-kit-wp/issues/5445). +* Update the icon on the button for exiting the "Edit roles" UI on the Dashboard Sharing modal. See [#5437](https://github.com/google/site-kit-wp/issues/5437). +* Improve recoverable modules list handling in Dashboard Sharing. See [#5287](https://github.com/google/site-kit-wp/issues/5287). +* Automatically continue creating/connecting a GA4 property on the GA4 Activation Banner upon return from the OAuth flow. See [#5282](https://github.com/google/site-kit-wp/issues/5282). +* Redirect to the OAuth flow from the GA4 Activation Banner to provide the Analytics edit scope when needed. See [#5278](https://github.com/google/site-kit-wp/issues/5278). +* Add a GA4 upgrade reminder notification for users who have not connected Google Analytics 4. See [#5273](https://github.com/google/site-kit-wp/issues/5273). +* Add `createReducer` utility that uses Immer. See [#4864](https://github.com/google/site-kit-wp/issues/4864). + +**Changed** + +* Update the design of the "chip" components in the Thank with Google settings. See [#5754](https://github.com/google/site-kit-wp/issues/5754). +* In the Analytics set up, change the wording when an existing Analytics property was found via GTM. See [#5648](https://github.com/google/site-kit-wp/issues/5648). +* Remove unused `ModulesList` and `ModulesListItem`, and their related Storybook stories. Props GP391018. See [#5471](https://github.com/google/site-kit-wp/issues/5471). + +**Fixed** + +* Ensure GA4 activation banner is displayed when returning from granting additional scopes after setting up GA4 instead of generic success banner. See [#5837](https://github.com/google/site-kit-wp/issues/5837). +* Move the GA4 Activation Banner above the Zero State Banners in the list of banner notifications so that it shows up with higher priority. See [#5823](https://github.com/google/site-kit-wp/issues/5823). +* Fix issue with buttons in Thank with Google settings on very small screens. See [#5752](https://github.com/google/site-kit-wp/issues/5752). +* Fix color selection outline in Thank with Google settings. See [#5751](https://github.com/google/site-kit-wp/issues/5751). +* Fix React `StrictMode` warning when using Material button tooltips in development mode. See [#5378](https://github.com/google/site-kit-wp/issues/5378). +* Fix issues in permutation site URLs with multi-byte UTF-8 IDN domains. See [#4776](https://github.com/google/site-kit-wp/issues/4776). + += 1.83.0 = + +**Enhanced** + +* Fix Thank with Google button and counter margins. See [#5744](https://github.com/google/site-kit-wp/issues/5744). +* Add wrapping element to inline Thank With Google CTA button and counter. See [#5743](https://github.com/google/site-kit-wp/issues/5743). +* Correct the size of the Thank with Google setup graphic. See [#5740](https://github.com/google/site-kit-wp/issues/5740). +* Update the wording on the Thank with Google "setup publication" screen. See [#5738](https://github.com/google/site-kit-wp/issues/5738). +* Add the Thank with Google Supporter Wall Widget to settings. See [#5736](https://github.com/google/site-kit-wp/issues/5736). +* Update Thank with Google links to lead to appropriate publication center pages. See [#5722](https://github.com/google/site-kit-wp/issues/5722). +* Limit shared requests for AdSense reports to metrics and dimensions used by the Site Kit dashboard. See [#5712](https://github.com/google/site-kit-wp/issues/5712). +* Require SSL for Thank with Google to be enabled. See [#5710](https://github.com/google/site-kit-wp/issues/5710). +* Fix inconsistencies with strings which are intended to be the same. See [#5659](https://github.com/google/site-kit-wp/issues/5659). +* On the modules headers in the Settings > Connected Services tab, update the status text and show a CTA for continuing the module setup. See [#5620](https://github.com/google/site-kit-wp/issues/5620). +* Use Google Account chooser URLs for external service/report URLs. See [#5548](https://github.com/google/site-kit-wp/issues/5548). +* Add WP admin pointer for view-only dashboard access "Site Kit" menu item. See [#5486](https://github.com/google/site-kit-wp/issues/5486). +* Disable AdSense "Check your site status" link while settings are loading to prevent unexpected behavior. See [#5410](https://github.com/google/site-kit-wp/issues/5410). +* Add "Request access" button to permission error messages for modules where their service supports it. See [#5308](https://github.com/google/site-kit-wp/issues/5308). +* Show a tooltip to acknowledge dismissing the GA4 Activation Banner. See [#5279](https://github.com/google/site-kit-wp/issues/5279). +* Enable the GA4 Activation Banner create/connect a property and measurement ID. See [#5277](https://github.com/google/site-kit-wp/issues/5277). +* Add a dropdown/toggle to GA4 activation banner when there is an existing GA4 property. See [#5276](https://github.com/google/site-kit-wp/issues/5276). +* Remove zeroDataStates feature flag and unused code. See [#5148](https://github.com/google/site-kit-wp/issues/5148). + +**Changed** + +* Update copy on the Thank with Google "No account" setup step. See [#5739](https://github.com/google/site-kit-wp/issues/5739). +* Update Prettier dependency and update automated source code formatting. See [#5541](https://github.com/google/site-kit-wp/issues/5541). +* Update Visual Regression test code to run on ARM-based Macs. See [#4619](https://github.com/google/site-kit-wp/issues/4619). + +**Fixed** + +* Prevent updating Banner Notification component state when unmounted. See [#5760](https://github.com/google/site-kit-wp/issues/5760). +* Fix placement label issue on the Thank with Google settings page. See [#5737](https://github.com/google/site-kit-wp/issues/5737). +* Prefix all `keyframes` names to avoid global namespace conflict. See [#5662](https://github.com/google/site-kit-wp/issues/5662). +* Fix propType warnings in the `ImageRadio` component. See [#5639](https://github.com/google/site-kit-wp/issues/5639). +* Update the `ZeroDataStateNotifications` component to not attempt data requests for recoverable modules in view-only context. See [#5505](https://github.com/google/site-kit-wp/issues/5505). +* Fix duplicate error-related messaging in Analytics settings when admin does not have access. See [#5429](https://github.com/google/site-kit-wp/issues/5429). + += 1.82.0 = + +**Added** + +* Add the Google Analytics 4 Activation Banner to the Entity Dashboard. See [#5673](https://github.com/google/site-kit-wp/issues/5673). +* Implement the design for the Success component from the Analytics-4 module. See [#5274](https://github.com/google/site-kit-wp/issues/5274). +* Add logic for GA4 Activation banner timing. See [#5272](https://github.com/google/site-kit-wp/issues/5272). +* Add a "button with spinner" component. See [#5271](https://github.com/google/site-kit-wp/issues/5271). + +**Enhanced** + +* Limit shared requests for Analytics reports to metrics and dimensions used by the Site Kit dashboard. See [#5711](https://github.com/google/site-kit-wp/issues/5711). +* Flatten Thank with Google placement options in settings. See [#5683](https://github.com/google/site-kit-wp/issues/5683). +* Show a list of features on the Thank with Google disconnection modal. See [#5661](https://github.com/google/site-kit-wp/issues/5661). +* Ensure Thank with Google API results are filtered properly. See [#5653](https://github.com/google/site-kit-wp/issues/5653). +* Update Thank with Google JS snippet parameters to reflect API updates. See [#5535](https://github.com/google/site-kit-wp/issues/5535). +* Truncate long usernames in Dashboard Sharing. See [#5500](https://github.com/google/site-kit-wp/issues/5500). +* Only allow users with Tag Manager access to edit Tag Manager settings in the UI. See [#5495](https://github.com/google/site-kit-wp/issues/5495). +* Add the "Get Help" link to the compatibility error notice. See [#5483](https://github.com/google/site-kit-wp/issues/5483). +* Update tooltip styles. See [#5444](https://github.com/google/site-kit-wp/issues/5444). +* Refresh user permissions on module recovery. See [#5416](https://github.com/google/site-kit-wp/issues/5416). + +**Fixed** + +* Fix js errors in the storybook stories. See [#5585](https://github.com/google/site-kit-wp/issues/5585). + += 1.81.0 = + +**Enhanced** + +* Update the Thank with Google logo. See [#5655](https://github.com/google/site-kit-wp/issues/5655). +* Add Thank with Google PHP client library. See [#5650](https://github.com/google/site-kit-wp/issues/5650). +* Add a help link to sign in screen when Dashboard Sharing has been enabled by another admin. See [#5559](https://github.com/google/site-kit-wp/issues/5559). +* Add a "Get help" link to Ad Blocker warning for AdSense module. See [#5558](https://github.com/google/site-kit-wp/issues/5558). +* Add Thank with Google API functionality and scopes. See [#5534](https://github.com/google/site-kit-wp/issues/5534). +* Implement UI for the Thank with Google settings. See [#5531](https://github.com/google/site-kit-wp/issues/5531). +* Add the Thank with Google Setup UI. See [#5529](https://github.com/google/site-kit-wp/issues/5529). +* Add "get help" links to error messages. See [#5507](https://github.com/google/site-kit-wp/issues/5507). +* Update support documentation links to use the new URL structure. See [#5485](https://github.com/google/site-kit-wp/issues/5485). +* Add a "get help" link to the message that appears when a request to the authentication proxy fails. See [#5484](https://github.com/google/site-kit-wp/issues/5484). +* Add the "get help" link to the error message displayed when an invalid nonce is provided. See [#5482](https://github.com/google/site-kit-wp/issues/5482). +* Add a help link to the "site URL has changed" notice when Site Kit detects your site URL has changed. See [#5481](https://github.com/google/site-kit-wp/issues/5481). +* Determine and show whether and where the Thank with Google supporter wall widget is placed. See [#5462](https://github.com/google/site-kit-wp/issues/5462). +* Implement Thank with Google settings view UI. See [#5456](https://github.com/google/site-kit-wp/issues/5456). +* Add new "Thank with Google: Supporter Wall" WordPress widget. See [#5451](https://github.com/google/site-kit-wp/issues/5451). +* Improve keyboard accessibility/behaviour when selecting user roles in Dashboard Sharing modal. See [#5440](https://github.com/google/site-kit-wp/issues/5440). + +**Fixed** + +* Remove radio button from top-level Thank with Google "Manual" position control. See [#5623](https://github.com/google/site-kit-wp/issues/5623). + += 1.80.0 = + +**Enhanced** + +* Update the open text survey question entry field to allow multiline text input. See [#5612](https://github.com/google/site-kit-wp/issues/5612). +* Update the Thank with Google module's owned settings. See [#5587](https://github.com/google/site-kit-wp/issues/5587). +* Include specific copy for Thank with Google on the setup success banner. See [#5536](https://github.com/google/site-kit-wp/issues/5536). +* Add automatic status updates to Thank with Google setup screen. See [#5532](https://github.com/google/site-kit-wp/issues/5532). +* Implement the Thank with Google setup UI for the no publication scenario. See [#5528](https://github.com/google/site-kit-wp/issues/5528). +* Implement the Thank with Google setup UI for the publication in review scenario. See [#5527](https://github.com/google/site-kit-wp/issues/5527). +* Implement the Thank with Google setup UI. See [#5526](https://github.com/google/site-kit-wp/issues/5526). +* Implement Thank with Google setup UI for the publication setup completed scenario. See [#5525](https://github.com/google/site-kit-wp/issues/5525). +* Show selected Thank with Google color in settings view. See [#5524](https://github.com/google/site-kit-wp/issues/5524). +* Update the AdSense settings to display the site status when available. See [#5503](https://github.com/google/site-kit-wp/issues/5503). +* Improve notice UX/sizing when adjusting Dashboard Sharing settings "view access" setting. See [#5489](https://github.com/google/site-kit-wp/issues/5489). +* When setup fails with an error from the proxy, show a "get help" link that leads to the relevant support page for the given error code. See [#5479](https://github.com/google/site-kit-wp/issues/5479). +* Improve validation for Thank with Google settings. See [#5461](https://github.com/google/site-kit-wp/issues/5461). +* Add a new enhanced radio button component that allows for using graphics for choices. See [#5459](https://github.com/google/site-kit-wp/issues/5459). +* Add "US only" label to Thank with Google module. See [#5457](https://github.com/google/site-kit-wp/issues/5457). +* Scaffold Thank with Google module setup flow logic for different scenarios. See [#5455](https://github.com/google/site-kit-wp/issues/5455). +* Add new selector `getAccountChooserURL` to the `core/user` store. See [#5453](https://github.com/google/site-kit-wp/issues/5453). +* Implement Thank with Google tag placement infrastructure. See [#5450](https://github.com/google/site-kit-wp/issues/5450). +* Update module recovery notification to display feedback for errors. See [#5318](https://github.com/google/site-kit-wp/issues/5318). + +**Fixed** + +* Update location of module recovery alert to be grouped with normal notifications. See [#5550](https://github.com/google/site-kit-wp/issues/5550). +* Prevent error from appearing when sharing data exists for a non-existent module. See [#5488](https://github.com/google/site-kit-wp/issues/5488). +* Avoid tracking Google Analytics events for Dashboard Sharing settings when no change is made. See [#5487](https://github.com/google/site-kit-wp/issues/5487). +* Fix permissions modal issue on non Site Kit pages. See [#5424](https://github.com/google/site-kit-wp/issues/5424). + += 1.79.1 = + +**Fixed** + +* Fix an issue that could cause Site Kit's dashboard to crash when a theme/plugin loads the Google Web Font Loader JS on Site Kit screens. See [#5572](https://github.com/google/site-kit-wp/issues/5572). + += 1.79.0 = + +**Enhanced** + +* Show "Recoverable Modules" component for Analytics section of the Search Funnel widget, when on the view-only Dashboard and the Analytics module is in a recoverable state. See [#5470](https://github.com/google/site-kit-wp/issues/5470). +* Add "experimental" label to Thank with Google module. See [#5452](https://github.com/google/site-kit-wp/issues/5452). +* Refine the _Escape_ keyboard shortcut in the Dashboard Sharing modal to exit the "Edit Roles" view when its active, rather than closing the modal. See [#5442](https://github.com/google/site-kit-wp/issues/5442). +* Update the text on the view-only splash screen. See [#5441](https://github.com/google/site-kit-wp/issues/5441). +* Extend the Dashboard Sharing feature tour to include steps for the settings interface. See [#5382](https://github.com/google/site-kit-wp/issues/5382). +* Update design of the dashboard CTA for connecting AdSense. See [#5260](https://github.com/google/site-kit-wp/issues/5260). +* Update the plugin styling in line with Google Material 3. See [#5254](https://github.com/google/site-kit-wp/issues/5254). + +**Fixed** + +* Improve "View only" menu icon alignment when viewing shared dashboard. See [#5446](https://github.com/google/site-kit-wp/issues/5446). + += 1.78.0 = + +**Added** + +* Add a "retry" button for HTTP requests that encountered an error on the dashboard. See [#5236](https://github.com/google/site-kit-wp/issues/5236). + +**Enhanced** + +* Show the zero-data view of the AdSense Overview widget when the `adsenseSetupV2` feature flag is enabled and there is no data. See [#5385](https://github.com/google/site-kit-wp/issues/5385). +* Update view-only dashboard to use a new placeholder for widgets that rely on recoverable modules. See [#5376](https://github.com/google/site-kit-wp/issues/5376). +* Clarify "All admins" wording in Dashboard Sharing settings. See [#5374](https://github.com/google/site-kit-wp/issues/5374). +* Rollback any unsaved changes to dashboard sharing settings when closing the dialog. See [#5372](https://github.com/google/site-kit-wp/issues/5372). +* Update the warning notice that appears on the Dashboard Sharing modal when changing settings. See [#5371](https://github.com/google/site-kit-wp/issues/5371). +* Add foundation for Thank with Google settings. See [#5366](https://github.com/google/site-kit-wp/issues/5366). +* Add foundation for new Thank with Google feature (JS). See [#5365](https://github.com/google/site-kit-wp/issues/5365). +* Add foundation for new Thank with Google feature (PHP). See [#5364](https://github.com/google/site-kit-wp/issues/5364). +* Display a message with tooltip instead of disabled Dashboard Sharing view management dropdown. See [#5352](https://github.com/google/site-kit-wp/issues/5352). +* Improve the notice first shown to non administrators on the initial splash screen. See [#5347](https://github.com/google/site-kit-wp/issues/5347). +* Add a feature tour for the dashboard sharing. See [#5328](https://github.com/google/site-kit-wp/issues/5328). +* Move tracking related data into its own global `_googlesitekitTrackingData` variable. See [#5117](https://github.com/google/site-kit-wp/issues/5117). +* Update tag placement functionality to allow using tags in non-production environments. See [#4774](https://github.com/google/site-kit-wp/issues/4774). +* Add Dashboard Sharing's Active Modules and Sharable Modules to Site Health. See [#4534](https://github.com/google/site-kit-wp/issues/4534). + +**Fixed** + +* Fix default Dashboard Navigation section for the view-only Dashboard. See [#5388](https://github.com/google/site-kit-wp/issues/5388). +* Do not attempt to make requests for module data where the module is shared and also recoverable. See [#5383](https://github.com/google/site-kit-wp/issues/5383). +* Fix service information alignment in the view-only menu. See [#5381](https://github.com/google/site-kit-wp/issues/5381). +* Remove "view limited dashboard" sign-in option when only one admin exists on the site. See [#5380](https://github.com/google/site-kit-wp/issues/5380). +* Prevent data requests on shared dashboard for connected but non-shared modules. See [#5379](https://github.com/google/site-kit-wp/issues/5379). +* Fix conditions for showing the notice in the bottom of the Dashboard Sharing modal when sharing settings are changed. See [#5375](https://github.com/google/site-kit-wp/issues/5375). +* Fix the overlapping of some items in the plugin header in small viewports when dashboard sharing is enabled. See [#5373](https://github.com/google/site-kit-wp/issues/5373). +* Update the tooltip for the "Managed by..." info icon on the Dashboard Sharing modal, when the module management has been set to "Only me". See [#5370](https://github.com/google/site-kit-wp/issues/5370). +* Fix bug where a secondary admin would always take ownership of Search Console when connecting Site Kit. See [#5363](https://github.com/google/site-kit-wp/issues/5363). +* Fix dashboard sharing menu footer visibility issue on iPhone. See [#5360](https://github.com/google/site-kit-wp/issues/5360). +* Fix Dashboard Sharing modal position on small screens. See [#5358](https://github.com/google/site-kit-wp/issues/5358). +* Do not show "Create Goals" widget on shared dashboard. See [#5351](https://github.com/google/site-kit-wp/issues/5351). +* Don't show the "Link Analytics and AdSense" CTA on the view-only Dashboard. See [#5346](https://github.com/google/site-kit-wp/issues/5346). +* Prevent errors on the view-only dashboard from requesting module settings unnecessarily. See [#5310](https://github.com/google/site-kit-wp/issues/5310). +* Prevent "Can't access necessary data" notice flicker when activating Analytics via GTM setup. See [#5244](https://github.com/google/site-kit-wp/issues/5244). +* Fix date range selector sometimes remaining open but hidden after selection. See [#4735](https://github.com/google/site-kit-wp/issues/4735). + += 1.77.0 = + +**Enhanced** + +* Ensure only Search Console data appears in widgets when Analytics data is not shared. See [#5296](https://github.com/google/site-kit-wp/issues/5296). +* Add module recovery alert to the dashboard. See [#5256](https://github.com/google/site-kit-wp/issues/5256). +* Require `storeName` parameter for `createErrorStore` function, to provide it as context for errors. See [#5235](https://github.com/google/site-kit-wp/issues/5235). +* Update the `getErrorForSelector` selector to include selector details in the returning error. See [#5234](https://github.com/google/site-kit-wp/issues/5234). +* Ensure only users with the `DELEGATE_MODULE_SHARING_MANAGEMENT` permission can modify the `management` value for a module's sharing settings. See [#5229](https://github.com/google/site-kit-wp/issues/5229). +* Introduce new permissions for viewing Site Kit on the WordPress Dashboard, and in the Admin Bar. See [#5202](https://github.com/google/site-kit-wp/issues/5202). +* Update asset bootstrapping for non-admins. See [#5189](https://github.com/google/site-kit-wp/issues/5189). +* Limit widget areas and contexts displayed on the shared dashboard to modules which are shared with the user. See [#5161](https://github.com/google/site-kit-wp/issues/5161). +* Expose owned module settings to client. See [#5121](https://github.com/google/site-kit-wp/issues/5121). +* Enhance `PreviewBlock` for compatibility with `prefers-reduced-motion`. See [#5055](https://github.com/google/site-kit-wp/issues/5055). +* Update the setup error screen to include an error message returned from the proxy server. See [#5038](https://github.com/google/site-kit-wp/issues/5038). +* Fix styles issue for report tables when they are in the gathering state. See [#4981](https://github.com/google/site-kit-wp/issues/4981). +* Restrict editing module entity settings to users who have access, either by being the module owner or by having the module shared with them. See [#4825](https://github.com/google/site-kit-wp/issues/4825). +* Implement module recovery alert notification. See [#4823](https://github.com/google/site-kit-wp/issues/4823). +* Add settings modal to allow admins to configure Dashboard Sharing. See [#4822](https://github.com/google/site-kit-wp/issues/4822). +* Add a new component that allows selecting user roles. See [#4821](https://github.com/google/site-kit-wp/issues/4821). +* Implement new selectors for sharing settings. See [#4795](https://github.com/google/site-kit-wp/issues/4795). +* Implement new actions for sharing settings. See [#4794](https://github.com/google/site-kit-wp/issues/4794). +* Implement new selector for shared ownership modules. See [#4791](https://github.com/google/site-kit-wp/issues/4791). +* Fix single-page dashboard header background colour when using a non-default WordPress admin color scheme. See [#4769](https://github.com/google/site-kit-wp/issues/4769). +* Update admin notice messages to have `Site Kit by Google:` prefixes. Props carolinan. See [#4721](https://github.com/google/site-kit-wp/issues/4721). +* Fix alignment issue of data block metric labels on small viewports. See [#4582](https://github.com/google/site-kit-wp/issues/4582). +* Allow view-only users to make data requests for shared modules with owners. See [#4532](https://github.com/google/site-kit-wp/issues/4532). +* Redirect from the splash screen to the dashboard for users who are able to view the shared dashboard. See [#4525](https://github.com/google/site-kit-wp/issues/4525). +* Update styles of the PageSpeed Insights plugin to show footer correctly on mobile. See [#4497](https://github.com/google/site-kit-wp/issues/4497). +* Redirect back to Site Kit when an error occurs during Google sign-in instead of the WordPress dashboard. See [#3160](https://github.com/google/site-kit-wp/issues/3160). + +**Changed** + +* Rename AdSense REST data point `GET:earnings` to `GET:report`. See [#4914](https://github.com/google/site-kit-wp/issues/4914). + +**Fixed** + +* Fix bug that could cause Analytics properties not to be pre-selected properly during setup. See [#5356](https://github.com/google/site-kit-wp/issues/5356). +* Show widget area headings/subheadings regardless of number of widgets. See [#5332](https://github.com/google/site-kit-wp/issues/5332). +* Fix a bug where a shared ownership module's owner was not updated if changed when saving the sharing settings for the first time. See [#5307](https://github.com/google/site-kit-wp/issues/5307). +* Allow users with shared dashboard access to load assets and access REST endpoints. See [#5299](https://github.com/google/site-kit-wp/issues/5299). +* Prevent admin-related notifications from appearing on view-only dashboard. See [#5295](https://github.com/google/site-kit-wp/issues/5295). +* Make view-only menu visible on Shared Dashboard. See [#5255](https://github.com/google/site-kit-wp/issues/5255). +* Update wording for the Analytics tracking exclusions switch. See [#5243](https://github.com/google/site-kit-wp/issues/5243). + += 1.75.0 = + +**Enhanced** + +* Add new experimental Interaction to Next Paint field metric to PageSpeed dashboard widget. See [#5207](https://github.com/google/site-kit-wp/issues/5207). +* Update the "Skip to view-only dashboard" button text. See [#5176](https://github.com/google/site-kit-wp/issues/5176). +* Ensure that snippet toggle in Analytics and Tag Manager correctly inform about existing tags. See [#5143](https://github.com/google/site-kit-wp/issues/5143). +* Update Analytics snippet toggle behavior to be disabled when the same property is set in the Tag Manager container. See [#5141](https://github.com/google/site-kit-wp/issues/5141). +* Update Tag Manager container dropdowns to also include the container ID. See [#5108](https://github.com/google/site-kit-wp/issues/5108). +* Update the Tag Manager `useExistingTagEffect` hook to use AMP container ID when in the primary AMP mode. See [#5044](https://github.com/google/site-kit-wp/issues/5044). +* Ensure that the snippet toggle in Analytics settings only changes following the user modifying the selected property. See [#4974](https://github.com/google/site-kit-wp/issues/4974). +* Include snippet toggle in Tag Manager setup flow whenever there is an existing tag. See [#4934](https://github.com/google/site-kit-wp/issues/4934). +* Include snippet toggle in Analytics setup flow whenever there is an existing tag. See [#4913](https://github.com/google/site-kit-wp/issues/4913). +* Update info in plugin header for users viewing a shared dashboard. See [#4826](https://github.com/google/site-kit-wp/issues/4826). +* Limit widgets displayed on the shared dashboard to those which the user has access to. See [#4813](https://github.com/google/site-kit-wp/issues/4813). +* Add UI for new AdSense setup flow. See [#4763](https://github.com/google/site-kit-wp/issues/4763). +* Ensure that Tag Manager containers are no longer force-selected based on existing tags. See [#4713](https://github.com/google/site-kit-wp/issues/4713). +* Remove functionality related to checking for existing Tag Manager tag permission. See [#4709](https://github.com/google/site-kit-wp/issues/4709). +* Ensure that Analytics properties are no longer force-selected based on existing tags. See [#4703](https://github.com/google/site-kit-wp/issues/4703). +* Remove functionality related to checking for existing Analytics tag permission. See [#4702](https://github.com/google/site-kit-wp/issues/4702). +* Remove functionality related to checking for existing AdSense tag permission. See [#4627](https://github.com/google/site-kit-wp/issues/4627). +* Allow dashboard sharing users to use REST routes when using dashboard sharing view mode. See [#4529](https://github.com/google/site-kit-wp/issues/4529). +* Add new REST endpoint for updating dashboard sharing settings. See [#4481](https://github.com/google/site-kit-wp/issues/4481). + +**Fixed** + +* Ensure AdSense account ID and client ID are always set based on API response during setup. See [#5183](https://github.com/google/site-kit-wp/issues/5183). +* Fix AdSense error message when user does not have an AdSense account. See [#5180](https://github.com/google/site-kit-wp/issues/5180). +* Fix AdSense logo and progress bar placement in new setup flow. See [#5159](https://github.com/google/site-kit-wp/issues/5159). + += 1.74.0 = + +**Enhanced** + +* Remove color from disabled tab in Search Console widget on dashboard when Search Console is gathering data. See [#5056](https://github.com/google/site-kit-wp/issues/5056). +* Add `useViewContext` hook for retrieving the current view context. See [#5011](https://github.com/google/site-kit-wp/issues/5011). +* Update internal event tracking to include user authentication state. See [#4846](https://github.com/google/site-kit-wp/issues/4846). +* Add the new DashboardSharingSettingsButton component. See [#4820](https://github.com/google/site-kit-wp/issues/4820). +* Hide Analytics goals CTA in view-only context. See [#4817](https://github.com/google/site-kit-wp/issues/4817). +* Add a dropdown menu for users using the "view-only" dashboard sharing mode. See [#4812](https://github.com/google/site-kit-wp/issues/4812). +* Allow users with shared dashboard access to navigate directly to the shared dashboard from the splash page. See [#4811](https://github.com/google/site-kit-wp/issues/4811). +* Implement the view only splash screen. See [#4810](https://github.com/google/site-kit-wp/issues/4810). +* Add an action to recover a module and a selector to get recoverable modules. See [#4803](https://github.com/google/site-kit-wp/issues/4803). +* Implement UI for new AdSense setup site components. See [#4764](https://github.com/google/site-kit-wp/issues/4764). + +**Fixed** + +* Update the AdSense SetupMain component to show existing errors. See [#5107](https://github.com/google/site-kit-wp/issues/5107). +* Avoid an unnecessary network request for Analytics settings on the Site Kit dashboard when Analytics is not active. See [#5091](https://github.com/google/site-kit-wp/issues/5091). +* Add required versions of PHP and WP to plugin header. See [#5076](https://github.com/google/site-kit-wp/issues/5076). +* Fix infinite loading state for components relying on gathering or zero data reports. See [#4542](https://github.com/google/site-kit-wp/issues/4542). + += 1.73.0 = + +**Enhanced** + +* Update Google API client services library for latest AdSense API enhancements. See [#5092](https://github.com/google/site-kit-wp/issues/5092). +* Update the `Learn More` link to point to the new documentation page. Props smamun19. See [#5077](https://github.com/google/site-kit-wp/issues/5077). +* Update AdSense V2 state detection logic with new API return values. See [#5052](https://github.com/google/site-kit-wp/issues/5052). +* Update AdSense V2 code constants to use new API capabilities. See [#5051](https://github.com/google/site-kit-wp/issues/5051). +* Improve logic for handling timeouts for user surveys on the dashboard. See [#4925](https://github.com/google/site-kit-wp/issues/4925). +* Update widget registration to declare associated modules. See [#4849](https://github.com/google/site-kit-wp/issues/4849). +* Ensure permissions modal only appears for authenticated users. See [#4819](https://github.com/google/site-kit-wp/issues/4819). +* Hide Idea Hub action buttons when viewing dashboard in view-only mode. See [#4816](https://github.com/google/site-kit-wp/issues/4816). +* Update source links to hide on the view only dashboard. See [#4815](https://github.com/google/site-kit-wp/issues/4815). +* Add UI for new AdSense components. See [#4762](https://github.com/google/site-kit-wp/issues/4762). +* Extend and update custom capabilities for viewing dashboard and splash screens with logic for dashboard sharing. See [#4599](https://github.com/google/site-kit-wp/issues/4599). +* Add REST endpoint for module recovery. See [#4533](https://github.com/google/site-kit-wp/issues/4533). + +**Fixed** + +* Ensure closed AdSense accounts are not considered for the AdSense account to use with the module. Props sancodes. See [#5050](https://github.com/google/site-kit-wp/issues/5050). +* Remove lines below "gathering data" text on chart metric selection buttons. See [#5010](https://github.com/google/site-kit-wp/issues/5010). +* Fix bug that could cause the incorrect notification to briefly appear when Analytics or Search Console is gathering data. See [#5008](https://github.com/google/site-kit-wp/issues/5008). +* Add "gathering data" overlay to the All Traffic widget when Analytics is gathering data. See [#5006](https://github.com/google/site-kit-wp/issues/5006). +* Fix zero data state message formatting issues. See [#5001](https://github.com/google/site-kit-wp/issues/5001). +* Add "gathering data" and "zero data" headers to single URL ("entity") dashboard pages. See [#4983](https://github.com/google/site-kit-wp/issues/4983). +* Update complete Analytics activation CTA for consistency with new zero data states activation CTA. See [#4966](https://github.com/google/site-kit-wp/issues/4966). +* Fix authentication issue with WordPress security plugins/other plugins that modify/obscure the WordPress version number. See [#4963](https://github.com/google/site-kit-wp/issues/4963). +* Fix Google chart labels to no longer be truncated due to lack of space. See [#4944](https://github.com/google/site-kit-wp/issues/4944). + += 1.72.0 = + +**Enhanced** + +* Update documentation URLs. See [#4935](https://github.com/google/site-kit-wp/issues/4935). +* Use alternate `viewContext` for non-authenticated users. See [#4814](https://github.com/google/site-kit-wp/issues/4814). +* Implement modified snippet toggle component for enhanced AdSense setup flow. See [#4761](https://github.com/google/site-kit-wp/issues/4761). + +**Fixed** + +* Fix bug where user surveys would not trigger when viewing the dashboard. See [#5073](https://github.com/google/site-kit-wp/issues/5073). +* When Analytics is gathering data, ensure "gathering data" is shown under All Users in the All Traffic widget. See [#5007](https://github.com/google/site-kit-wp/issues/5007). +* Ensure WordPress dashboard notices appear in Site Kit. See [#4998](https://github.com/google/site-kit-wp/issues/4998). +* Don't show the "gathering data" blue box CTA on the Admin Bar. See [#4986](https://github.com/google/site-kit-wp/issues/4986). +* Fix styling issues with table view on mobile when no results are available. See [#4982](https://github.com/google/site-kit-wp/issues/4982). +* Prevent selection of metrics in the Search Traffic widget when gathering data. See [#4967](https://github.com/google/site-kit-wp/issues/4967). +* Disable All Traffic pie chart tabs when in gathering or zero data state. See [#4961](https://github.com/google/site-kit-wp/issues/4961). +* Ensure consistent alignment of content in data blocks. See [#4946](https://github.com/google/site-kit-wp/issues/4946). +* Fix gathering data message appearing too early on chart components. See [#4945](https://github.com/google/site-kit-wp/issues/4945). +* Fix display of special characters used in the site title. See [#4852](https://github.com/google/site-kit-wp/issues/4852). + += 1.71.0 = + +**Enhanced** + +* Update gathering data UI in WordPress Dashboard widget. See [#4908](https://github.com/google/site-kit-wp/issues/4908). +* Update the Analytics Signup CTA on the WordPress Dashboard. See [#4868](https://github.com/google/site-kit-wp/issues/4868). +* Store remote features as a persistent option, ensuring features remain enabled when Site Kit is disconnected or reset. See [#4861](https://github.com/google/site-kit-wp/issues/4861). +* Add additional context to remote feature request. See [#4858](https://github.com/google/site-kit-wp/issues/4858). +* Prevent surveys from triggering for non-authenticated users on a shared dashboard. See [#4806](https://github.com/google/site-kit-wp/issues/4806). +* Add notifications to site header when Analytics and/or Search Console are still gathering data. See [#4698](https://github.com/google/site-kit-wp/issues/4698). +* Update widgets to pass gathering data state to components. See [#4697](https://github.com/google/site-kit-wp/issues/4697). +* Update CTA placement for the Search Funnel widget on mobile. See [#4695](https://github.com/google/site-kit-wp/issues/4695). +* Improve the zero state design in the All Traffic Widget. See [#4675](https://github.com/google/site-kit-wp/issues/4675). + +**Fixed** + +* Ensure request for remote features is made on site connection. See [#4957](https://github.com/google/site-kit-wp/issues/4957). + += 1.70.0 = + +**Enhanced** + +* Change remote-controlled features request to be cron-based, running twice daily. See [#4856](https://github.com/google/site-kit-wp/issues/4856). +* Enable client to check meta-capabilities for Dashboard Sharing permissions. See [#4804](https://github.com/google/site-kit-wp/issues/4804). +* Add the `hasModuleAccess` selector to the `core/modules` datastore. See [#4802](https://github.com/google/site-kit-wp/issues/4802). +* Add `sharedOwnershipModules` to Site Kit module sharing data. See [#4790](https://github.com/google/site-kit-wp/issues/4790). +* Update the WordPress Dashboard and Admin Bar with new "gathering data" UI for new sites. See [#4711](https://github.com/google/site-kit-wp/issues/4711). +* Add the gathering data state to the `ReportTable` component. See [#4700](https://github.com/google/site-kit-wp/issues/4700). +* Add the gathering data state to the GoogleChart component. See [#4696](https://github.com/google/site-kit-wp/issues/4696). +* Update the CTA notices in the Search Funnel widget. See [#4694](https://github.com/google/site-kit-wp/issues/4694). +* Add a notification for zero data to the Site Kit dashboard. See [#4693](https://github.com/google/site-kit-wp/issues/4693). +* Update DataBlock component to display the new gathering state. See [#4692](https://github.com/google/site-kit-wp/issues/4692). +* Extend some modules with service entity awareness and access checks. See [#4579](https://github.com/google/site-kit-wp/issues/4579). +* Proactively refresh tokens for shared modules when Dashboard Sharing is enabled. See [#4524](https://github.com/google/site-kit-wp/issues/4524). +* Provide client with Dashboard Sharing permissions when Dashboard Sharing is enabled. See [#4523](https://github.com/google/site-kit-wp/issues/4523). +* Add `check-access` endpoint to modules for Dashboard Sharing. See [#4478](https://github.com/google/site-kit-wp/issues/4478). +* Update the `View draft` button on the Idea Hub widget to display an icon instead of the text. See [#4266](https://github.com/google/site-kit-wp/issues/4266). + +**Fixed** + +* Fix OAuth setup loop when creating a new Analytics account. See [#4874](https://github.com/google/site-kit-wp/issues/4874). +* Show only one notification at a time on the Site Kit dashboard. See [#4689](https://github.com/google/site-kit-wp/issues/4689). +* Show error message when landing on module setup URL when the module is not active, or for an invalid module. See [#4654](https://github.com/google/site-kit-wp/issues/4654). +* Update errors handling to correctly process `Forbidden` errors. See [#4543](https://github.com/google/site-kit-wp/issues/4543). + += 1.69.0 = + +**Enhanced** + +* Persist `serviceSetupV2` feature flag also on reset, and redirect legacy module page URLs to the dashboard when the `unifiedDashboard` feature is active. See [#4865](https://github.com/google/site-kit-wp/issues/4865). +* Remove legacy Analytics event for AdSense users. See [#4766](https://github.com/google/site-kit-wp/issues/4766). +* Add AdSense site status to Site Kit's Site Health output. See [#4757](https://github.com/google/site-kit-wp/issues/4757). +* Add a new datapoint to the AdSense module that returns information about sites associated with the current accountID. See [#4754](https://github.com/google/site-kit-wp/issues/4754). +* Enhance lazy loading of sections on the unified dashboard to reduce layout shifts. See [#4641](https://github.com/google/site-kit-wp/issues/4641). +* Update Idea Hub prompt banner notification with new design. See [#4514](https://github.com/google/site-kit-wp/issues/4514). +* Simplify success banner notification for the unified dashboard. See [#1148](https://github.com/google/site-kit-wp/issues/1148). + += 1.68.0 = + +**Enhanced** + +* Update plugin version to align with the current sprint. See [#4778](https://github.com/google/site-kit-wp/issues/4778). +* Remove Module sharing settings on module disconnect. See [#4526](https://github.com/google/site-kit-wp/issues/4526). +* Update sizing of input helper text to be consistent with Material styles. See [#4510](https://github.com/google/site-kit-wp/issues/4510). +* Include all relevant query parameters in OAuth authentication URL. See [#2045](https://github.com/google/site-kit-wp/issues/2045). +* Register site on the proxy before redirecting to it, in support for V2 setup flow. See [#2044](https://github.com/google/site-kit-wp/issues/2044). +* Add support for paginated content to entity detection. See [#1911](https://github.com/google/site-kit-wp/issues/1911). +* Support pages that don't resolve to a specific post on the Dashboard Search. See [#1592](https://github.com/google/site-kit-wp/issues/1592). + +**Fixed** + +* Fix scroll position when using header links on the Entity Dashboard page. See [#4741](https://github.com/google/site-kit-wp/issues/4741). + += 1.50.0 = + +**Enhanced** + +* Improve post search autocomplete behaviour when typing during autocomplete API requests. See [#4665](https://github.com/google/site-kit-wp/issues/4665). +* Update wording for AdSense CTA dismissal button. See [#4647](https://github.com/google/site-kit-wp/issues/4647). +* Expose recoverable modules information to clients. See [#4527](https://github.com/google/site-kit-wp/issues/4527). +* Update module classes to be sharing-aware. See [#4521](https://github.com/google/site-kit-wp/issues/4521). +* Add support for automatically configuring Analytics with data from the service. See [#4208](https://github.com/google/site-kit-wp/issues/4208). +* Add a new feature tour for the unified dashboard. See [#3947](https://github.com/google/site-kit-wp/issues/3947). +* Update the cancel button on the module setup form to have a `Back` label when the setup process can't proceed. See [#1045](https://github.com/google/site-kit-wp/issues/1045). + +**Fixed** + +* Fix potential fatal error on PHP 8 with Idea Hub integration. See [#4738](https://github.com/google/site-kit-wp/issues/4738). +* Fix a javascript error on the Analytics Unique Visitors tab of the Search Funnel widget. See [#4660](https://github.com/google/site-kit-wp/issues/4660). +* Update the URL search input box to work correctly when HOME or END keys are pressed. See [#4584](https://github.com/google/site-kit-wp/issues/4584). +* Update plugin header to avoid obstructing feature tours. See [#4453](https://github.com/google/site-kit-wp/issues/4453). + += 1.49.1 = + +**Fixed** + +* Update Google Analytics 4 integration to use new `dataStreams` endpoint after breaking change in alpha API. See [#4677](https://github.com/google/site-kit-wp/issues/4677). + += 1.49.0 = + +**Enhanced** + +* Update source links on unified dashboard widgets to be consistent across all widgets. See [#4570](https://github.com/google/site-kit-wp/issues/4570). +* Annotate module endpoints which can be used with dashboard sharing. See [#4474](https://github.com/google/site-kit-wp/issues/4474). +* Add `_googlesitekitDashboardSharingData` global data. See [#4473](https://github.com/google/site-kit-wp/issues/4473). +* Update styling of items in the Site Kit header for consistency. See [#4457](https://github.com/google/site-kit-wp/issues/4457). +* Implement new UI for entity dashboard header containing title and URL. See [#4428](https://github.com/google/site-kit-wp/issues/4428). +* Update entity search field to only show a valid result when unfocused. See [#4427](https://github.com/google/site-kit-wp/issues/4427). +* Update the help menu to include the AdSense help menu item in all places when the AdSense module is active. See [#4423](https://github.com/google/site-kit-wp/issues/4423). +* Update Tag Manager setup and settings edit views with loading indicator while tags are being checked. See [#4311](https://github.com/google/site-kit-wp/issues/4311). +* Update widgets to use the `useInViewSelect` hook to fetch reports. See [#4121](https://github.com/google/site-kit-wp/issues/4121). +* Use only WordPress core's bundled dependencies instead of Site Kit's when integrating with the block editor. See [#4107](https://github.com/google/site-kit-wp/issues/4107). +* Add the ability to programmatically disable modules using the `googlesitekit_available_modules` filter. Props henrywright. See [#3993](https://github.com/google/site-kit-wp/issues/3993). +* Update the Idea Hub widget to display a spinner when saving, unsaving or dismissing an idea. See [#3907](https://github.com/google/site-kit-wp/issues/3907). + +**Fixed** + +* Fix potential off-screen widget rendering error when using `useInViewSelect`. See [#4642](https://github.com/google/site-kit-wp/issues/4642). +* Fix incorrect URL search states when selecting an item from the autocomplete list. See [#4562](https://github.com/google/site-kit-wp/issues/4562). +* Fix styling on "No results found" autocomplete message in Unified Dashboard. See [#4503](https://github.com/google/site-kit-wp/issues/4503). +* Improve the spacing between section titles/subtitles in the Unified Dashboard. See [#4501](https://github.com/google/site-kit-wp/issues/4501). +* Update the Overview widget to display Goals CTA when no goals are set yet. See [#4489](https://github.com/google/site-kit-wp/issues/4489). +* Update unified dashboard to update the active navigation chip on scroll. See [#4488](https://github.com/google/site-kit-wp/issues/4488). +* Update the PageSpeed widget to display the currently loaded data and the progress bar when the user clicks on the `Run test again` button. See [#4467](https://github.com/google/site-kit-wp/issues/4467). +* Update jump links in the setup success banner notification to scroll to the appropriate location instead of jumping to it using the hash. See [#4410](https://github.com/google/site-kit-wp/issues/4410). + += 1.48.1 = + +**Fixed** + +* Revert fix to prevent minification of already minified JS files by other plugins as it caused JS translations to no longer be delivered by wordpress.org. Props kebbet. See [#4592](https://github.com/google/site-kit-wp/issues/4592). + += 1.48.0 = + +**Enhanced** + +* Add title to the overall page metrics widget. See [#4454](https://github.com/google/site-kit-wp/issues/4454). +* Add icons to Unified Dashboard navigation. See [#4438](https://github.com/google/site-kit-wp/issues/4438). +* Update production assets to include a `.min` suffix in the filename. See [#4436](https://github.com/google/site-kit-wp/issues/4436). +* Update the URL search component to display the current entity title by default. See [#4426](https://github.com/google/site-kit-wp/issues/4426). +* Update the plugin activation banner to be a simple CTA link instead of replicating the splash screen. See [#4403](https://github.com/google/site-kit-wp/issues/4403). +* Update the behaviour of the PageSpeed's `visit the dashboard` link to scroll to the PSI widget when the user lands on the dashboard page. See [#4380](https://github.com/google/site-kit-wp/issues/4380). +* Include query parameter for custom Analytics step in the service setup flow URLs. See [#4342](https://github.com/google/site-kit-wp/issues/4342). +* Fix issue when AdSense module in the Connect More Services list briefly flashed grey. See [#4257](https://github.com/google/site-kit-wp/issues/4257). +* Fix the incorrect difference for chart values when the current and the previous values equal zero. See [#4255](https://github.com/google/site-kit-wp/issues/4255). +* Add information about old and new site URLs to the splash screen when URL mismatch is detected. See [#4247](https://github.com/google/site-kit-wp/issues/4247). +* Add dismissible AdSense CTA widget for monetization section in the unified dashboard. See [#4145](https://github.com/google/site-kit-wp/issues/4145). +* Update the IdeaHub widget to not display "Draft created" message on the draft tab. See [#3902](https://github.com/google/site-kit-wp/issues/3902). + +**Fixed** + +* Fix browser console errors related to Idea Hub on the Appearance > Widgets page in the WordPress Admin. See [#4466](https://github.com/google/site-kit-wp/issues/4466). +* Fix visual gap on AdSense dashboard added by adblocker warning widget when no adblocker is detected. See [#4407](https://github.com/google/site-kit-wp/issues/4407). +* Update the URL search to abort the current search request when the user changes the query. See [#4402](https://github.com/google/site-kit-wp/issues/4402). +* Update the PageSpeed Insights links to go to the `pagespeed.web.dev` domain. See [#4381](https://github.com/google/site-kit-wp/issues/4381). +* Fix the incorrect CSS class issue in the widget area renderer component. Props shayannosrat. See [#4329](https://github.com/google/site-kit-wp/issues/4329). +* Update the "Learn More" links of Analytics and AdSense CTAs to open in a new window. See [#4286](https://github.com/google/site-kit-wp/issues/4286). +* Fix missing unit characters issue on zero data widgets. See [#4238](https://github.com/google/site-kit-wp/issues/4238). +* Add full stops to the insufficient permissions error description. See [#4160](https://github.com/google/site-kit-wp/issues/4160). +* Fix styles for errors on Optimize setup and settings forms. See [#4028](https://github.com/google/site-kit-wp/issues/4028). +* Fix bug where error for an Analytics property in Tag Manager without access would not show up. See [#3948](https://github.com/google/site-kit-wp/issues/3948). + += 1.47.0 = + +**Added** + +* Add a new `useInViewSelect` hook that allows to call a specific selector only when in view. See [#4096](https://github.com/google/site-kit-wp/issues/4096). + +**Enhanced** + +* Remove chevron from date range select dropdown button in the header. See [#4377](https://github.com/google/site-kit-wp/issues/4377). +* Show Idea Hub surveys after fewer Idea Hub interactions. See [#4368](https://github.com/google/site-kit-wp/issues/4368). +* Update Unified Dashboard navigation chips to scroll to an area instead of relying on anchor targets. See [#4367](https://github.com/google/site-kit-wp/issues/4367). +* Implement splash UI for activating Analytics as part of the initial setup flow. See [#4341](https://github.com/google/site-kit-wp/issues/4341). +* Add title and subtitle to Widget Contexts for Unified Dashboard pages. See [#4340](https://github.com/google/site-kit-wp/issues/4340). +* Update dashboard navigation to hide navigation chips for empty areas. See [#4289](https://github.com/google/site-kit-wp/issues/4289). +* Add an error message for unknown pages to the Unified Dashboard. See [#4287](https://github.com/google/site-kit-wp/issues/4287). +* Add a link to the Idea Hub CTA to jump to the Idea Hub widget. See [#4275](https://github.com/google/site-kit-wp/issues/4275). +* Add entity header content area to the Unified Dashboard. See [#4146](https://github.com/google/site-kit-wp/issues/4146). +* Update dashboard layout to hide sections that have no widgets. See [#4136](https://github.com/google/site-kit-wp/issues/4136). +* Revise wording when no entity can be determined based on the given URL in the entity dashboard. See [#4097](https://github.com/google/site-kit-wp/issues/4097). +* Implement Unified Dashboard tab bar with chip/pill links to widget areas. See [#4053](https://github.com/google/site-kit-wp/issues/4053). + +**Changed** + +* Remove HTML tags from report errors. Props oscarssanchez. See [#4169](https://github.com/google/site-kit-wp/issues/4169). + +**Fixed** + +* Update the frontend AdSense code to load asynchronously. See [#4398](https://github.com/google/site-kit-wp/issues/4398). +* Fix missing monetization widgets on the Unified Dashboard issue. See [#4348](https://github.com/google/site-kit-wp/issues/4348). +* Add unit characters to the Overall Page Metrics widget in the Unified Dashboard. See [#4312](https://github.com/google/site-kit-wp/issues/4312). +* Fix missing Unique Visitors From Search sparkline issue for zero data state. See [#4237](https://github.com/google/site-kit-wp/issues/4237). +* Update Tag Manager to pre-select account and containers only when the user has just one account. See [#4209](https://github.com/google/site-kit-wp/issues/4209). + += 1.46.0 = + +**Enhanced** + +* Update WordPress dashboard widget and admin bar stats to display zero states for Search Console/Analytics only when the respective service is gathering data. See [#4270](https://github.com/google/site-kit-wp/issues/4270). +* Update the Idea Hub widget to clear errors when switching tabs. See [#4207](https://github.com/google/site-kit-wp/issues/4207). +* Hide individual module pages when the `unifiedDashboard` flag is enabled. See [#4134](https://github.com/google/site-kit-wp/issues/4134). +* Update PageSpeed Insights to be active by default for new installs and remove CTAs. See [#4133](https://github.com/google/site-kit-wp/issues/4133). +* Improve loading state for GA4 Analytics dropdown in settings. See [#4106](https://github.com/google/site-kit-wp/issues/4106). +* Add a generic content area for the Header in the Unified Dashboard. See [#4050](https://github.com/google/site-kit-wp/issues/4050). +* Add Entity search to Unified Dashboard Header. See [#4049](https://github.com/google/site-kit-wp/issues/4049). +* Add the Optimize snippet notice to settings and setup forms. See [#3822](https://github.com/google/site-kit-wp/issues/3822). +* Introduce a new filter that allows for persistent data to be deleted during reset. See [#3201](https://github.com/google/site-kit-wp/issues/3201). + +**Changed** + +* Implement the new `useInView` hook. See [#4120](https://github.com/google/site-kit-wp/issues/4120). + +**Fixed** + +* Fix issue with the Idea Hub notification banner that was blocked by the setup success banner. See [#4274](https://github.com/google/site-kit-wp/issues/4274). +* Fix a potential conflict with `google` global when loading Google charts. See [#4074](https://github.com/google/site-kit-wp/issues/4074). +* Fix extra padding around Search Console widgets. See [#4023](https://github.com/google/site-kit-wp/issues/4023). +* Fix a bug that could cause the wrong module to show that it's being connected during module setup. See [#2796](https://github.com/google/site-kit-wp/issues/2796). + += 1.45.0 = + +**Enhanced** + +* Add revenue setting to Subscribe with Google module. See [#4230](https://github.com/google/site-kit-wp/issues/4230). +* Update Analytics events for User Surveys. See [#4213](https://github.com/google/site-kit-wp/issues/4213). +* Refactor legacy notification components. See [#4153](https://github.com/google/site-kit-wp/issues/4153). +* Update notifications for Unified Dashboard. See [#4152](https://github.com/google/site-kit-wp/issues/4152). +* Add "Session Duration" to Unified Dashboard Most Popular Content Widget. See [#4124](https://github.com/google/site-kit-wp/issues/4124). +* Add the new Search Funnel Widget to the Unified Dashboard. See [#4123](https://github.com/google/site-kit-wp/issues/4123). +* Add the new Overall Page Metrics widget to unified dashboards. See [#4122](https://github.com/google/site-kit-wp/issues/4122). +* Add support for enabling GA4 for existing UA-only Analytics users. See [#3807](https://github.com/google/site-kit-wp/issues/3807). + +**Changed** + +* Remove a few legacy client side filters. See [#4172](https://github.com/google/site-kit-wp/issues/4172). +* Remove legacy `googlesitekit.SetupWinNotification-${ slug }` filter. See [#4171](https://github.com/google/site-kit-wp/issues/4171). + +**Fixed** + +* Use "boxed" layout style for the unified dashboard's "content" widget area. Props NaotoNakamura. See [#4268](https://github.com/google/site-kit-wp/issues/4268). +* Fix a bug that could cause the page title in the "Most Popular Content" table to appear in an unexpected language. See [#4165](https://github.com/google/site-kit-wp/issues/4165). + += 1.44.0 = + +**Enhanced** + +* Update AdSense signup URL to point to the latest UI. See [#4239](https://github.com/google/site-kit-wp/issues/4239). +* Implement replacement UI in certain areas to inform users of no data being available when applicable. See [#4226](https://github.com/google/site-kit-wp/issues/4226). +* Update built asset filenames to avoid potentially triggering aggressive WAF rule. See [#4181](https://github.com/google/site-kit-wp/issues/4181). +* Improve Idea Hub widget styles and padding. See [#4092](https://github.com/google/site-kit-wp/issues/4092). +* Update Analytics widgets to display zero state only when the Analytics account is gathering data. See [#4086](https://github.com/google/site-kit-wp/issues/4086). +* Improve Search Console "gathering data" heuristics; prevents users with limited/no traffic from seeing "Gathering data" message. See [#4085](https://github.com/google/site-kit-wp/issues/4085). +* Add PageSpeed widget to Unified Dashboard. See [#4079](https://github.com/google/site-kit-wp/issues/4079). +* Add Content Area widgets to Unified Dashboard. See [#4078](https://github.com/google/site-kit-wp/issues/4078). +* Update plugin setup tracking events for users who have opted-in to tracking. See [#4054](https://github.com/google/site-kit-wp/issues/4054). +* Implement new Unified Dashboard header design/UI. See [#4048](https://github.com/google/site-kit-wp/issues/4048). +* Enhance on-demand loading of anonymous usage tracking snippet. See [#3972](https://github.com/google/site-kit-wp/issues/3972). +* Update handling of OAuth error with clarified language and the URL used for retry. See [#3970](https://github.com/google/site-kit-wp/issues/3970). + +**Fixed** + +* Restore AdBlocker warning on AdSense module dashboard. See [#4178](https://github.com/google/site-kit-wp/issues/4178). +* Don't show duplicate errors when loading deleted Analytics accounts in the settings. See [#3569](https://github.com/google/site-kit-wp/issues/3569). + += 1.43.0 = + +**Enhanced** + +* Update proactive token refreshing to be limited to main Site Kit and WordPress dashboards. See [#4182](https://github.com/google/site-kit-wp/issues/4182). +* Register all traffic widget in traffic sections of the unified dashboard. See [#4149](https://github.com/google/site-kit-wp/issues/4149). +* Add AdSense summary and top-earning pages widgets to the monetization area. See [#4080](https://github.com/google/site-kit-wp/issues/4080). +* Update Google HTTP client to use same ca bundle as WordPress. See [#4017](https://github.com/google/site-kit-wp/issues/4017). +* Update the Analytics settings view panel to display "Use Snippet" settings below the appropriate property blocks. See [#3996](https://github.com/google/site-kit-wp/issues/3996). +* Improve text on AdSense and Analytics setting toggles. See [#3850](https://github.com/google/site-kit-wp/issues/3850). +* Add AdSense for Platforms meta tag. See [#3688](https://github.com/google/site-kit-wp/issues/3688). +* Abort saving Analytics settings when required extra permissions are declined for creating a new GA4 property or measurement ID. See [#3546](https://github.com/google/site-kit-wp/issues/3546). +* Enhance some checkboxes with a spinner when its value is being loaded. See [#3304](https://github.com/google/site-kit-wp/issues/3304). +* Fix wording of ad blocker warning to always reflect the current state of the AdSense module. See [#3208](https://github.com/google/site-kit-wp/issues/3208). +* Update CSS files to be built with unique file names for production builds. See [#2806](https://github.com/google/site-kit-wp/issues/2806). +* Improve validation for domains used for Site Kit during setup. See [#1884](https://github.com/google/site-kit-wp/issues/1884). + +**Fixed** + +* Update the AdSense snippet to no longer include deprecated attributes. See [#4180](https://github.com/google/site-kit-wp/issues/4180). +* Fix permissions dialog issue on the WP dashboard page caused by Idea Hub CTA. See [#4125](https://github.com/google/site-kit-wp/issues/4125). +* Update admin settings for consistency and introduce optional loading state for checkboxes. See [#4038](https://github.com/google/site-kit-wp/issues/4038). +* Update the modules list banner not to disable connected modules. See [#4014](https://github.com/google/site-kit-wp/issues/4014). +* Improve the "Re-authentication needed" error messages and redirects. See [#3931](https://github.com/google/site-kit-wp/issues/3931). +* Hide the `Impressions` column of the AdSense `Top Earning Pages` widget on mobile screens. See [#3781](https://github.com/google/site-kit-wp/issues/3781). +* Update Optimize module settings to avoid the flash of use snippet instructions when Analytics settings are being resolved. See [#3720](https://github.com/google/site-kit-wp/issues/3720). + += 1.42.0 = + +**Enhanced** + +* Update focus of Idea Hub module feature tour to highlight entire widget. See [#4076](https://github.com/google/site-kit-wp/issues/4076). +* Add survey trigger for Idea Hub widget interactions. See [#4052](https://github.com/google/site-kit-wp/issues/4052). +* Add new conditional follow-up questions to user surveys. See [#4051](https://github.com/google/site-kit-wp/issues/4051). +* Show Idea Hub tabs even when no ideas are available. See [#4013](https://github.com/google/site-kit-wp/issues/4013). +* Use Idea Hub activities endpoint when drafting, publishing or deleting a post. See [#3938](https://github.com/google/site-kit-wp/issues/3938). +* Update Idea Hub API to use v1 beta. See [#3916](https://github.com/google/site-kit-wp/issues/3916). +* Update Idea Hub widget pagination to scroll to widget top on page change if out of view. See [#3841](https://github.com/google/site-kit-wp/issues/3841). +* Prevent feature tours from appearing during module setup. See [#3187](https://github.com/google/site-kit-wp/issues/3187). +* Improve wording of "Invalid nonce" errors. See [#3098](https://github.com/google/site-kit-wp/issues/3098). + +**Changed** + +* Avoid potentially simultaneous token refresh requests by proactively refreshing soon-to-expire tokens. See [#3477](https://github.com/google/site-kit-wp/issues/3477). + +**Fixed** + +* Fix various JS errors due to problems with the Google Charts library. See [#4074](https://github.com/google/site-kit-wp/issues/4074). +* Remove leftover use of `helpVisibility` feature flag. See [#4069](https://github.com/google/site-kit-wp/issues/4069). +* Fix validation for Subscribe with Google publication ID so that it allows non-domain input. See [#4025](https://github.com/google/site-kit-wp/issues/4025). +* Fix font problems in the Idea Hub widget. See [#4012](https://github.com/google/site-kit-wp/issues/4012). +* Fix positioning of the Site Kit header at the breakpoint between mobile and tablet viewports. See [#3986](https://github.com/google/site-kit-wp/issues/3986). +* Update the post state for Idea Hub posts and enable it for posts of all statuses. See [#3909](https://github.com/google/site-kit-wp/issues/3909). +* Use query params instead of hash URLs in Idea Hub tabs. See [#3886](https://github.com/google/site-kit-wp/issues/3886). +* Improve Idea Hub tab behaviour when using browser navigation. See [#3860](https://github.com/google/site-kit-wp/issues/3860). +* Prevent Idea Hub tab navigation from adding to the browser's history. See [#3796](https://github.com/google/site-kit-wp/issues/3796). +* Update the Detailed Page Stats page to display AMP traffic for an AMP version of a page. See [#3080](https://github.com/google/site-kit-wp/issues/3080). +* Fix Analytics queries for URL lists to ignore titles for the metrics, while still showing the title for each URL. See [#3070](https://github.com/google/site-kit-wp/issues/3070). + += 1.41.0 = + +**Enhanced** + +* Update the `Idea_Hub` class to invalidate cached ideas when an idea is modified or a new post is created. See [#3922](https://github.com/google/site-kit-wp/issues/3922). +* Update the Idea Hub notification text. See [#3912](https://github.com/google/site-kit-wp/issues/3912). +* Update WP dashboard Idea Hub CTA design and language. See [#3911](https://github.com/google/site-kit-wp/issues/3911). +* Update descriptions for Idea Hub module and widget. See [#3908](https://github.com/google/site-kit-wp/issues/3908). +* Add tooltips for action buttons in the Idea Hub dashboard widget. See [#3906](https://github.com/google/site-kit-wp/issues/3906). +* Improve pagination behaviour in Idea Hub. See [#3859](https://github.com/google/site-kit-wp/issues/3859). +* Add "Experimental" badge to Idea Hub UI. See [#3810](https://github.com/google/site-kit-wp/issues/3810). +* Scaffold Subscribe with Google module. See [#3808](https://github.com/google/site-kit-wp/issues/3808). +* Update AdSense tag code to improve Ad performance. See [#3783](https://github.com/google/site-kit-wp/issues/3783). +* Improve AdSense graphs on mobile screens. See [#3317](https://github.com/google/site-kit-wp/issues/3317). +* Update GA measurement opt-out mechanism for logged-in users to be property-specific. See [#3294](https://github.com/google/site-kit-wp/issues/3294). +* Improve UX to close tooltips within charts. See [#2659](https://github.com/google/site-kit-wp/issues/2659). +* Add surrounding comments to all HTML tags output by Site Kit modules. See [#1504](https://github.com/google/site-kit-wp/issues/1504). +* Add link to Settings page in plugin action links on plugins page. See [#1194](https://github.com/google/site-kit-wp/issues/1194). + +**Fixed** + +* Fix counts on Idea Hub widget tab labels to only show up if greater than zero. See [#3964](https://github.com/google/site-kit-wp/issues/3964). +* Always load Google fonts using purely CSS rather than relying on a JavaScript snippet. See [#3932](https://github.com/google/site-kit-wp/issues/3932). +* Fix Dashboard Search Widget zero state bug. See [#3880](https://github.com/google/site-kit-wp/issues/3880). +* Fix Admin Bar Analytics link when using Twenty Twenty-One theme. See [#3849](https://github.com/google/site-kit-wp/issues/3849). +* Ensure the icon buttons in the Idea Hub widget do not overlap idea labels. See [#3839](https://github.com/google/site-kit-wp/issues/3839). +* Fix "Connected" messages to avoid duplicate words for screen reader. See [#3763](https://github.com/google/site-kit-wp/issues/3763). +* Fix a potential error due to report data associated with an invalid URL. See [#3752](https://github.com/google/site-kit-wp/issues/3752). +* Update the AdSense setup CTA in the activation success banner to be disabled when an ad-blocker is detected. See [#3721](https://github.com/google/site-kit-wp/issues/3721). +* Update Analytics goals widget CTA link to open in a new window. See [#3683](https://github.com/google/site-kit-wp/issues/3683). +* Fix UI bugs in User Input's fifth question. See [#3682](https://github.com/google/site-kit-wp/issues/3682). +* Fix potential error in older browsers that don't support IntersectionObserver. See [#3278](https://github.com/google/site-kit-wp/issues/3278). + += 1.40.0 = + +**Enhanced** + +* Show correct footer information based on Idea Hub tab. See [#3865](https://github.com/google/site-kit-wp/issues/3865). +* Update styles of the topic idea element to have a light-blue background. See [#3857](https://github.com/google/site-kit-wp/issues/3857). +* Update position of action buttons for ideas in Idea Hub dashboard widget in mobile. See [#3855](https://github.com/google/site-kit-wp/issues/3855). +* Update CTA language for WP post list notifications. See [#3852](https://github.com/google/site-kit-wp/issues/3852). +* Update the number of ideas shown per page on the Idea Hub dashboard widget. See [#3843](https://github.com/google/site-kit-wp/issues/3843). +* Update language in Idea Hub feature tour to use en-US locale for consistency. See [#3834](https://github.com/google/site-kit-wp/issues/3834). +* Update the IdeaHub widget to display the "Updated every 2-3 days" message only for the new ideas tab. See [#3832](https://github.com/google/site-kit-wp/issues/3832). +* Add an open text type to user surveys. See [#3762](https://github.com/google/site-kit-wp/issues/3762). +* Add multiple choice selection questions to User Input surveys. See [#3761](https://github.com/google/site-kit-wp/issues/3761). +* Add a new "single select" option to User Input Surveys. See [#3760](https://github.com/google/site-kit-wp/issues/3760). +* Implement functionality for saving and dismissing an Idea Hub idea. See [#3747](https://github.com/google/site-kit-wp/issues/3747). +* Remove unused legacy JS code after removal of legacy components and data API. See [#3646](https://github.com/google/site-kit-wp/issues/3646). +* Add feature tour for Idea Hub drafts to the post list table in WP admin. See [#3625](https://github.com/google/site-kit-wp/issues/3625). +* Update Idea Hub to use the production API. See [#3518](https://github.com/google/site-kit-wp/issues/3518). +* Update viewport icons used in PageSpeed Insights widget. See [#3162](https://github.com/google/site-kit-wp/issues/3162). +* Add a notice to Optimize users warning them that Analytics requests are not being tracked for signed-in users. See [#3000](https://github.com/google/site-kit-wp/issues/3000). +* Add Tag Manager AMP tag support for Web Stories. See [#2070](https://github.com/google/site-kit-wp/issues/2070). + +**Fixed** + +* Fix Idea Hub tab localization text. See [#3899](https://github.com/google/site-kit-wp/issues/3899). +* Fix pagination in the Idea Hub dashboard widget to disable next button on last page. See [#3866](https://github.com/google/site-kit-wp/issues/3866). +* Fix Idea Hub CTA for saved ideas on the WordPress dashboard to only show if the user has any saved ideas. See [#3845](https://github.com/google/site-kit-wp/issues/3845). +* Update Sidekick zero state graphics with proper files. See [#3840](https://github.com/google/site-kit-wp/issues/3840). +* Fix Idea Hub dashboard widget pagination controls from stacking in small viewports. See [#3838](https://github.com/google/site-kit-wp/issues/3838). +* Fix Idea Hub Tour Activation bug. See [#3836](https://github.com/google/site-kit-wp/issues/3836). +* Update Idea Hub new, saved, and draft ideas requests to invalidate the cache when a post created for an idea changes its status. See [#3757](https://github.com/google/site-kit-wp/issues/3757). +* Fix a bug where Site Kit did not disable Tag Manager tag when an existing tag was detected. See [#3338](https://github.com/google/site-kit-wp/issues/3338). + += 1.39.0 = + +**Enhanced** + +* Update the Idea Hub widget to display its footer in the `Widget.Footer` prop. See [#3773](https://github.com/google/site-kit-wp/issues/3773). +* Add and update deep links on Analytics settings view to edit the UA property view and GA4 measurement ID. See [#3702](https://github.com/google/site-kit-wp/issues/3702). +* Decouple Google API client creation logic from main OAuth client tied to the current WordPress user. See [#3658](https://github.com/google/site-kit-wp/issues/3658). +* Remove server-side REST batch data infrastructure. See [#3644](https://github.com/google/site-kit-wp/issues/3644). +* Add option to insert the Anti Flicker snippet when connecting Optimize. See [#3013](https://github.com/google/site-kit-wp/issues/3013). +* Add method for disabling auto-ads for logged-in users. See [#2681](https://github.com/google/site-kit-wp/issues/2681). +* Remove legacy data API code. See [#2258](https://github.com/google/site-kit-wp/issues/2258). +* Update Google fonts loaded by Site Kit to be filterable. Props lkraav. See [#1703](https://github.com/google/site-kit-wp/issues/1703). +* Add a toggle to enable/disable the Site Kit admin bar feature. See [#990](https://github.com/google/site-kit-wp/issues/990). +* Add filters to allow modifications on the AdSense code. Props Fu-San. See [#336](https://github.com/google/site-kit-wp/issues/336). + +**Fixed** + +* Consolidate blue colors in notice text. See [#3716](https://github.com/google/site-kit-wp/issues/3716). +* Improve module disconnect screen when a module doesn't have listed features. See [#3691](https://github.com/google/site-kit-wp/issues/3691). +* Fix potential "Cannot read property 'slug' of undefined" error on Site Kit screens. See [#3618](https://github.com/google/site-kit-wp/issues/3618). + += 1.38.1 = + +**Fixed** + +* Fix fatal error that could be triggered by other plugins or themes using an unprefixed version of Composer. See [#3830](https://github.com/google/site-kit-wp/issues/3830). + += 1.38.0 = + +**Enhanced** + +* Improve the tab-switching UX in the Idea Hub dashboard widget. See [#3723](https://github.com/google/site-kit-wp/issues/3723). +* Add feature description to Idea Hub module. See [#3692](https://github.com/google/site-kit-wp/issues/3692). +* Ensure Idea Hub draft posts are properly labelled even when Idea Hub is disconnected. See [#3639](https://github.com/google/site-kit-wp/issues/3639). +* Update Google PHP client services library to latest version. See [#3628](https://github.com/google/site-kit-wp/issues/3628). +* Update language on initial setup screen. See [#3581](https://github.com/google/site-kit-wp/issues/3581). +* Add a new feature tour for the Idea Hub widget. See [#3524](https://github.com/google/site-kit-wp/issues/3524). +* Add Idea Hub dashboard notification to inform users about new Idea Hub module. See [#3523](https://github.com/google/site-kit-wp/issues/3523). +* Add the Idea Hub notice to the posts list table. See [#3359](https://github.com/google/site-kit-wp/issues/3359). +* Enhance Google API client with user-specific quota token to differentiate quota usage between users. See [#2217](https://github.com/google/site-kit-wp/issues/2217). +* Remove weekday alignment functionality for previous period from Analytics module and Site Kit entirely. See [#2122](https://github.com/google/site-kit-wp/issues/2122). +* Update module page dashboards to use Widget API unconditionally and remove legacy implementations. See [#2077](https://github.com/google/site-kit-wp/issues/2077). +* Add a new tag guard that prevents rendering tags for non-production environments. Props lukecav. See [#2054](https://github.com/google/site-kit-wp/issues/2054). +* Update dashboard and details page to display widgets only. See [#1997](https://github.com/google/site-kit-wp/issues/1997). +* Improve WordPress dashboard widget UX so that only one CTA per module is displayed when the module has no data or needs to be activated. See [#1147](https://github.com/google/site-kit-wp/issues/1147). +* Update copy in AdSense disconnect modal. See [#683](https://github.com/google/site-kit-wp/issues/683). + +**Fixed** + +* Fix possible JavaScript error related to certain Google charts not rendering properly in Safari. See [#3784](https://github.com/google/site-kit-wp/issues/3784). +* Fix bug in Idea Hub dashboard widget that caused drafts not to refresh. See [#3733](https://github.com/google/site-kit-wp/issues/3733). +* Ensure the "Edit" mode for modules without a dedicated "Edit" UI for their settings can still be exited, and fall back to showing the regular "View" UI in those cases. See [#3727](https://github.com/google/site-kit-wp/issues/3727). +* Improve Widget layout when dismissing the Idea Hub call-to-action. See [#3722](https://github.com/google/site-kit-wp/issues/3722). +* Fix Idea Hub draft post links ampersand output. See [#3708](https://github.com/google/site-kit-wp/issues/3708). +* Update stats graphs not to duplicate dates when 7 days period is selected. See [#3643](https://github.com/google/site-kit-wp/issues/3643). +* Add a timeout to delay caching the survey by 30 seconds. See [#3633](https://github.com/google/site-kit-wp/issues/3633). +* Fix bug where the filter behavior used for Analytics and AdSense report data was not working for sites with a unicode or punycode domain. Props HFigarella. See [#3606](https://github.com/google/site-kit-wp/issues/3606). +* Fix a bug in Analytics setup where a matching secondary property would not be automatically selected when the primary property was changed. See [#3549](https://github.com/google/site-kit-wp/issues/3549). +* Improve display of long names in select dropdowns. See [#3497](https://github.com/google/site-kit-wp/issues/3497). +* Update settings to redirect back to the settings page after disconnecting a module. See [#3393](https://github.com/google/site-kit-wp/issues/3393). +* Prevent rendering errors when the Admin Menu has been customized. See [#3263](https://github.com/google/site-kit-wp/issues/3263). +* Fix admin bar styles conflict with W3 Total Cache Minify functionality. See [#1427](https://github.com/google/site-kit-wp/issues/1427). + += 1.37.0 = + +**Enhanced** + +* Update wording in permissions modal when GA4 needs to create a web data stream for the selected property. See [#3622](https://github.com/google/site-kit-wp/issues/3622). +* Add a new "Verification Status" row to the Site Health information for Site Kit. See [#3621](https://github.com/google/site-kit-wp/issues/3621). +* Show information notice about associated UA / GA4 property only once a property has been selected. See [#3614](https://github.com/google/site-kit-wp/issues/3614). +* Update styles of controls in the GA4 notice box on the settings page. See [#3541](https://github.com/google/site-kit-wp/issues/3541). +* Add selected state of 300ms to user feedback survey. See [#3531](https://github.com/google/site-kit-wp/issues/3531). +* Add Idea Hub setup UI. See [#3522](https://github.com/google/site-kit-wp/issues/3522). +* Implement Idea Hub widget functionality for saving and unsaving an idea. See [#3519](https://github.com/google/site-kit-wp/issues/3519). +* Add loading indicator to the Idea Hub widget when a new draft is being created. See [#3387](https://github.com/google/site-kit-wp/issues/3387). +* Allow Idea Hub CTA to be dismissed. See [#3360](https://github.com/google/site-kit-wp/issues/3360). +* Add the Idea Hub notification to the WordPress block editor. See [#3272](https://github.com/google/site-kit-wp/issues/3272). +* Refactor settings tabs with React Router and update URL hashes with more user-friendly names. See [#2514](https://github.com/google/site-kit-wp/issues/2514). + +**Fixed** + +* Fix bug in new React Router-based Settings Screen. See [#3707](https://github.com/google/site-kit-wp/issues/3707). +* Fix potential `Uncaught (in promise) TypeError: Cannot read property 'replace' of undefined` related to GA4 property matching logic. See [#3706](https://github.com/google/site-kit-wp/issues/3706). +* Fix message for AdSense account with no data in new widget-based screen. See [#3667](https://github.com/google/site-kit-wp/issues/3667). +* Fix a bug in Idea Hub where the most recent draft idea posts were not shown after creating a new draft from idea. See [#3660](https://github.com/google/site-kit-wp/issues/3660). +* Add a configurable timeout to User Survey components. See [#3655](https://github.com/google/site-kit-wp/issues/3655). +* Fix issue with Google Charts showing negative labels in some charts. See [#3564](https://github.com/google/site-kit-wp/issues/3564). +* Improve User Input tag creation on Mobile Safari. See [#3420](https://github.com/google/site-kit-wp/issues/3420). +* Fix global storybook padding issues. See [#3174](https://github.com/google/site-kit-wp/issues/3174). + += 1.36.0 = + +**Enhanced** + +* Enhance experience for sites with UA Analytics already configured before GA4 is enabled. See [#3586](https://github.com/google/site-kit-wp/issues/3586). +* Implement Idea Hub datastore infrastructure for saving and dismissing an idea. See [#3556](https://github.com/google/site-kit-wp/issues/3556). +* Display measurement ID for Google Analytics 4 property in Settings. See [#3545](https://github.com/google/site-kit-wp/issues/3545). +* Update text in some Google Analytics 4 notices. See [#3544](https://github.com/google/site-kit-wp/issues/3544). +* Show separate UA and GA4 snippet toggles in Analytics Settings. See [#3542](https://github.com/google/site-kit-wp/issues/3542). +* Improve Google Analytics 4 notices. See [#3540](https://github.com/google/site-kit-wp/issues/3540). +* Improve user survey styling on mobile viewports. See [#3530](https://github.com/google/site-kit-wp/issues/3530). +* Show Terms of Service and Privacy Policy in User Feedback survey if the user hasn't opted-in to tracking. See [#3528](https://github.com/google/site-kit-wp/issues/3528). +* Implement a minimal settings panel for the Idea Hub module. See [#3521](https://github.com/google/site-kit-wp/issues/3521). +* Update API client library and AdSense integration to use the new version 2 of their API. See [#3517](https://github.com/google/site-kit-wp/issues/3517). +* Improve button tooltips across plugin. See [#3516](https://github.com/google/site-kit-wp/issues/3516). +* Update button links to show "opens in new tab" ARIA help text, and open all User Feedback links in a new tab. See [#3510](https://github.com/google/site-kit-wp/issues/3510). +* Don't show notifications if a user survey has already been displayed. See [#3508](https://github.com/google/site-kit-wp/issues/3508). +* Display date range for data in the Admin Bar. See [#3202](https://github.com/google/site-kit-wp/issues/3202). +* Remove the option to include/exclude logged-in users when the Analytics snippet is not placed via Site Kit. See [#2910](https://github.com/google/site-kit-wp/issues/2910). +* Update error message shown to AMP users when connecting Tag Manager after Analytics. See [#2292](https://github.com/google/site-kit-wp/issues/2292). + +**Fixed** + +* Fix potential React error when using Google Translate and then changing the date range in a Site Kit admin screen. See [#3636](https://github.com/google/site-kit-wp/issues/3636). +* Fix a bug where GA4 settings were not cleared when deactivating Analytics. See [#3616](https://github.com/google/site-kit-wp/issues/3616). +* Fix AMP validation error caused by the GA opt-out snippet conditionally placed by Site Kit. See [#3572](https://github.com/google/site-kit-wp/issues/3572). +* Ensure account and property are preselected during setup when user has a matching GA4 property only. See [#3543](https://github.com/google/site-kit-wp/issues/3543). +* Update Analytics account creation to ensure a GA4 property is always created when GA4 is enabled. See [#3539](https://github.com/google/site-kit-wp/issues/3539). +* Fix an infinite loading state when attempting to create a new Analytics account with GA4. See [#3537](https://github.com/google/site-kit-wp/issues/3537). +* Only show a GA4 creation notice once an account is selected in Analytics setup. See [#3536](https://github.com/google/site-kit-wp/issues/3536). +* Allow posts with Idea Hub drafts to be trashed. See [#3514](https://github.com/google/site-kit-wp/issues/3514). +* Enhance user survey display with added animation on enter and exit. See [#3509](https://github.com/google/site-kit-wp/issues/3509). +* Fix a bug related to localized number formatting for browsers that have limited support for formatting options. See [#3255](https://github.com/google/site-kit-wp/issues/3255). +* Improve table views on mobile screens. See [#3138](https://github.com/google/site-kit-wp/issues/3138). +* Fix bug where AMP mode detection would not consider the AMP plugin's template mode setting when the Web Stories plugin is active. See [#2998](https://github.com/google/site-kit-wp/issues/2998). + += 1.35.0 = + +**Enhanced** + +* Update shadow used by user surveys to enhance contrast and improve visibility. See [#3529](https://github.com/google/site-kit-wp/issues/3529). +* Make text casing in User Feedback and Idea Hub buttons consistent with the rest of the plugin. See [#3507](https://github.com/google/site-kit-wp/issues/3507). +* Add React components for rendering and managing user surveys. See [#3380](https://github.com/google/site-kit-wp/issues/3380). +* Add React components for rendering user survey UI. See [#3379](https://github.com/google/site-kit-wp/issues/3379). +* Add React component for triggering a user survey on view. See [#3376](https://github.com/google/site-kit-wp/issues/3376). +* Implement a component to render the current survey. See [#3375](https://github.com/google/site-kit-wp/issues/3375). +* Add REST routes for user survey endpoints. See [#3374](https://github.com/google/site-kit-wp/issues/3374). +* Add Idea Hub widget support for creating idea draft posts. See [#3357](https://github.com/google/site-kit-wp/issues/3357). +* Add support for Google Analytics 4 tags in the notices for existing Google Analytics tags in the Analytics setup. See [#3289](https://github.com/google/site-kit-wp/issues/3289). +* Added GA4 script tag detection. See [#3288](https://github.com/google/site-kit-wp/issues/3288). +* Add a module activation CTA for Idea Hub to the Site Kit dashboard. See [#3275](https://github.com/google/site-kit-wp/issues/3275). +* Show GA4 property in Analytics Settings when available. See [#3254](https://github.com/google/site-kit-wp/issues/3254). +* Update Analytics account provisioning screen to inform about GA4 property creation. See [#3253](https://github.com/google/site-kit-wp/issues/3253). +* Update Analytics account provisioning to create a corresponding GA4 property as well. See [#3252](https://github.com/google/site-kit-wp/issues/3252). +* Added a UI to manage Analytics Accounts with both Universal Analytics and GA4 properties. See [#3250](https://github.com/google/site-kit-wp/issues/3250). +* Add setup variant for Analytics accounts with only GA4 properties. See [#3249](https://github.com/google/site-kit-wp/issues/3249). +* Fix a bug where Google API requests would be made when necessary scopes were not granted. See [#3227](https://github.com/google/site-kit-wp/issues/3227). +* Improve the AdSense AdBlocker check. See [#2749](https://github.com/google/site-kit-wp/issues/2749). +* Enable Prefetch DNS Requests on external Google services used by Site Kit. Props glanglois. See [#2203](https://github.com/google/site-kit-wp/issues/2203). + +**Changed** + +* Limit effective values for Google proxy base URL. See [#3217](https://github.com/google/site-kit-wp/issues/3217). + +**Fixed** + +* Fix a React console error when viewing widget-based module screens. See [#3559](https://github.com/google/site-kit-wp/issues/3559). +* Fix a problem where GA4 property selection is not preserved after granting additional scopes. See [#3550](https://github.com/google/site-kit-wp/issues/3550). +* Fix a problem where Analytics settings cannot be saved when selected account has UA and GA4 properties with different URLs. See [#3538](https://github.com/google/site-kit-wp/issues/3538). +* Update All Traffic widget legend slice labels to use title case. See [#3327](https://github.com/google/site-kit-wp/issues/3327). +* Improve behaviour of the "confirm changes" button in Search Console settings on load. See [#3318](https://github.com/google/site-kit-wp/issues/3318). +* Fix output of AdSense snippet in AMP Reader mode. See [#3218](https://github.com/google/site-kit-wp/issues/3218). +* Update charts to use consistent styles between modules. See [#3083](https://github.com/google/site-kit-wp/issues/3083). + += 1.34.1 = + +**Fixed** + +* Fix a problem for some hosts where requests for Analytics account creation or other on-demand permissions were blocked. See [#3532](https://github.com/google/site-kit-wp/issues/3532). + += 1.34.0 = + +**Enhanced** + +* Add Idea Hub notice to the WP dashboard widget. See [#3358](https://github.com/google/site-kit-wp/issues/3358). +* Add initial actions and selectors to `core/user` data store for handling user surveys. See [#3355](https://github.com/google/site-kit-wp/issues/3355). +* Enhance default Analytics property selection when selecting an Analytics account. See [#3291](https://github.com/google/site-kit-wp/issues/3291). +* Update success notification for the Analytics module when GA4 support is activated. See [#3290](https://github.com/google/site-kit-wp/issues/3290). +* Update Analytics setup to pre-select the GA4 property based on current site URL. See [#3286](https://github.com/google/site-kit-wp/issues/3286). +* Implement idea list tabs and basic interaction in Idea Hub widget. See [#3276](https://github.com/google/site-kit-wp/issues/3276). +* Add Idea Hub context for draft posts generated by Idea Hub. See [#3271](https://github.com/google/site-kit-wp/issues/3271). +* Add selectors to get draft and published posts created using Idea Hub ideas. See [#3270](https://github.com/google/site-kit-wp/issues/3270). +* Add Idea Hub draft post support. See [#3269](https://github.com/google/site-kit-wp/issues/3269). +* Add Analytics property select component for showing all UA and GA4 properties. See [#3246](https://github.com/google/site-kit-wp/issues/3246). +* Only show Google Analytics property and profile selection if the parent (account/property) is valid. See [#3243](https://github.com/google/site-kit-wp/issues/3243). +* Add upper boundary for how long manual user input responses can be. See [#3229](https://github.com/google/site-kit-wp/issues/3229). +* Enhance widgets to combine into one widget if all widgets in an area have the same special state. See [#3225](https://github.com/google/site-kit-wp/issues/3225). +* Update the wording used for the anonymous usage tracking checkbox label. See [#1238](https://github.com/google/site-kit-wp/issues/1238). + +**Fixed** + +* Fix regression where widget-based single URL screen would show up completely empty for content not found in the WordPress site. See [#3493](https://github.com/google/site-kit-wp/issues/3493). +* Fix potential `dateRangeLength must be a positive integer.` error for Search Console reports with missing dates. See [#3418](https://github.com/google/site-kit-wp/issues/3418). + += 1.33.0 = + +**Enhanced** + +* Update `amp-analytics` tag to include configuration for an ads conversion ID when provided. See [#3282](https://github.com/google/site-kit-wp/issues/3282). +* Add an initial widget for the Idea Hub ideas. See [#3274](https://github.com/google/site-kit-wp/issues/3274). +* Add Idea Hub JS module (only active with the Idea Hub feature flag). See [#3273](https://github.com/google/site-kit-wp/issues/3273). +* Update Analytics setup form UI to support different variants of setup flows. See [#3247](https://github.com/google/site-kit-wp/issues/3247). +* Update Analytics data store settings `submitChanges` infrastructure to include GA4 when enabled. See [#3245](https://github.com/google/site-kit-wp/issues/3245). +* Add change validation logic to Google Analytics 4 data store. See [#3244](https://github.com/google/site-kit-wp/issues/3244). +* Add selectors to check which Google Analytics UI should be active. See [#3170](https://github.com/google/site-kit-wp/issues/3170). +* Add selectors to select a GA4 property from webdata stream contents. See [#3168](https://github.com/google/site-kit-wp/issues/3168). +* Add Idea Hub saved idea selectors and actions. See [#3156](https://github.com/google/site-kit-wp/issues/3156). +* Introduce PHP classes for modeling post metadata in Site Kit. See [#3154](https://github.com/google/site-kit-wp/issues/3154). +* Migrate all components to use the new version of the GoogleChart component. See [#2887](https://github.com/google/site-kit-wp/issues/2887). +* Clarify explanation of user input responses' potential effects on other users of the site. See [#2853](https://github.com/google/site-kit-wp/issues/2853). +* Add the ability to exclude users who can write posts from being tracked by Google Analytics. Props scottshefler. See [#1891](https://github.com/google/site-kit-wp/issues/1891). + +**Fixed** + +* Fix potential `Cannot read property 'clicks' of undefined` JS error that could occur when an uneven number of Search Console report rows was returned. See [#3348](https://github.com/google/site-kit-wp/issues/3348). +* Fix a bug where Analytics report data was incomplete for the 90-day date range when also requesting data for the previous period affecting the widget-based module dashboard. See [#3232](https://github.com/google/site-kit-wp/issues/3232). +* Standardize punctuation and formatting of various sentences and phrases throughout the plugin. See [#2597](https://github.com/google/site-kit-wp/issues/2597). + += 1.32.0 = + +**Enhanced** + +* Update Analytics property select options to display property IDs in addition to names. See [#3164](https://github.com/google/site-kit-wp/issues/3164). +* Allow administrators to paste Google Ads conversion ID in Analytics settings so that it is integrated into the Site Kit-placed Analytics snippet. See [#3161](https://github.com/google/site-kit-wp/issues/3161). +* Scaffold new `modules/idea-hub` data store in JS. See [#3152](https://github.com/google/site-kit-wp/issues/3152). +* Scaffold new `Idea_Hub` PHP class. See [#3150](https://github.com/google/site-kit-wp/issues/3150). +* Add a selector to the `core/site` datastore for checking whether or not a given URL matches the site's reference URL. See [#3105](https://github.com/google/site-kit-wp/issues/3105). +* Implement a data store selector for selecting GA4 web data streams for multiple property IDs at once. See [#3104](https://github.com/google/site-kit-wp/issues/3104). +* Add data store selector and matching REST datapoint to the GA4 module to retrieve account summaries. See [#3103](https://github.com/google/site-kit-wp/issues/3103). +* Update AdSense summary dashboard widget to show change values for each metric relative to the previous period. See [#3091](https://github.com/google/site-kit-wp/issues/3091). +* Update the background color of open menu buttons in the Site Kit header. See [#3069](https://github.com/google/site-kit-wp/issues/3069). +* Allow programmatic modification of the Site Kit generator meta tag. See [#938](https://github.com/google/site-kit-wp/issues/938). +* Clarify some AdSense labels and format the monetary values in top earning pages tables with the relevant currency. See [#656](https://github.com/google/site-kit-wp/issues/656). +* Update popular pages list tables on the Analytics module dashboard to be consistent with the same components on the main Site Kit and WordPress dashboards. See [#98](https://github.com/google/site-kit-wp/issues/98). + +**Fixed** + +* Fix regression where jump link to PageSpeed Insights widget in success notification no longer worked. See [#3310](https://github.com/google/site-kit-wp/issues/3310). +* Update AdSense "Performance by page over the last X days" deep links to include date range. See [#2951](https://github.com/google/site-kit-wp/issues/2951). +* Fix a bug that could cause the first profile to be selected in Analytics Settings when an existing tag was detected. See [#2888](https://github.com/google/site-kit-wp/issues/2888). +* Fix User Input Settings flow accessibility issues. See [#2851](https://github.com/google/site-kit-wp/issues/2851). +* Resolved analytics URL linking issue in subfolder based installs. See [#2821](https://github.com/google/site-kit-wp/issues/2821). +* Redirect users from the splash screen to the dashboard if they are already authenticated. See [#2529](https://github.com/google/site-kit-wp/issues/2529). +* Resolved language issue on AdSense dashboard for certain Site Languages. See [#2105](https://github.com/google/site-kit-wp/issues/2105). + += 1.31.0 = + +**Enhanced** + +* Add method to get list of all base capabilities used by Site Kit. Props JoryHogeveen. See [#3130](https://github.com/google/site-kit-wp/issues/3130). +* Update widget header styles to use grid mechanics instead of static margins. See [#3119](https://github.com/google/site-kit-wp/issues/3119). +* Implement the technical infrastructure for rendering GA4 snippets in the frontend, including support for double tagging integrating with a UA snippet. See [#3106](https://github.com/google/site-kit-wp/issues/3106). +* Implement REST data point and JS data store selector to look up a single GA4 property by ID. See [#3102](https://github.com/google/site-kit-wp/issues/3102). +* Rename "Popularity" / "Top Queries" section to "Acquisition" for new widget-based UI. See [#3065](https://github.com/google/site-kit-wp/issues/3065). +* Improve styling for Site Kit header, especially on mobile devices. See [#3058](https://github.com/google/site-kit-wp/issues/3058). +* Update remaining external links in widgets on module pages to include correct date range parameters. See [#3042](https://github.com/google/site-kit-wp/issues/3042). +* Improve speed and reliability of Analytics property matching. See [#3012](https://github.com/google/site-kit-wp/issues/3012). +* Add placeholder to all "Other" text input fields in user input flow. See [#2993](https://github.com/google/site-kit-wp/issues/2993). +* Implement data store selector to detect whether a GA4 property has a web data stream that matches the current site. See [#2981](https://github.com/google/site-kit-wp/issues/2981). +* Update the `modules/analytics-4` store with actions and selectors for creating and querying web data streams. See [#2980](https://github.com/google/site-kit-wp/issues/2980). +* Implement JS data store infrastructure to query and create GA4 properties. See [#2979](https://github.com/google/site-kit-wp/issues/2979). +* Introduce new JS asset for upcoming GA4 integration. See [#2977](https://github.com/google/site-kit-wp/issues/2977). +* Introduce JS data store `modules/analytics-4` as infrastructure for upcoming GA4 integration. See [#2976](https://github.com/google/site-kit-wp/issues/2976). +* Allow modifying the active Search Console property in the module's settings panel, relevant for example when a site has multiple applicable properties. See [#2937](https://github.com/google/site-kit-wp/issues/2937). +* Fix accessibility problem where it wasn't possible to delete user input search terms using the keyboard. See [#2900](https://github.com/google/site-kit-wp/issues/2900). +* Update user input styles to fix visual issues on small devices. See [#2886](https://github.com/google/site-kit-wp/issues/2886). +* Migrate AdSense module page "Top earning pages" widget to use Widget API. See [#2066](https://github.com/google/site-kit-wp/issues/2066). + +**Fixed** + +* Update Unique Visitors widget to display the actual number of users coming from search. See [#3064](https://github.com/google/site-kit-wp/issues/3064). +* Fix visual spacing problems with widget-based dashboard due to empty containers disrupting grid layout. See [#3062](https://github.com/google/site-kit-wp/issues/3062). +* Update Site Kit widgets to always return their content wrapped in a `Widget`. See [#3060](https://github.com/google/site-kit-wp/issues/3060). +* Update AdSense dashboard widgets to render ad blocker warning. See [#3011](https://github.com/google/site-kit-wp/issues/3011). +* Fix broken alignment of data block elements when there is one with zero data. See [#2992](https://github.com/google/site-kit-wp/issues/2992). +* Fix UI issues on the pie chart of the All Traffic widget when there is just a single slice. See [#2991](https://github.com/google/site-kit-wp/issues/2991). +* Fix Analytics links in new widgets on the Analytics module page to take into account selected days. See [#2983](https://github.com/google/site-kit-wp/issues/2983). +* Fix a bug where select menu components could be partially covered by the Site Kit header making some items unclickable. See [#2885](https://github.com/google/site-kit-wp/issues/2885). +* Improve performance of potentially slow database query to migrate user data from an older version of Site Kit. See [#2870](https://github.com/google/site-kit-wp/issues/2870). +* Fix issue with AdSense existing site detection when using camelcase URLs in WordPress settings. See [#2695](https://github.com/google/site-kit-wp/issues/2695). +* Fix javascript issues that appear when admin pages have been translated with Google Translate. See [#2280](https://github.com/google/site-kit-wp/issues/2280). + += 1.30.0 = + +**Enhanced** + +* Add tracking events for help visibility menu links. See [#3027](https://github.com/google/site-kit-wp/issues/3027). +* Scaffold `analytics-4` module PHP class. See [#2974](https://github.com/google/site-kit-wp/issues/2974). +* Clarify wording of warning message when disabling the AdSense snippet. See [#2962](https://github.com/google/site-kit-wp/issues/2962). +* Introduce hidden labels for search term fields of the User Input Settings flow. See [#2901](https://github.com/google/site-kit-wp/issues/2901). +* Fix low-contrast color for keyword bubbles in the user input flow. See [#2896](https://github.com/google/site-kit-wp/issues/2896). +* Ensure that the user is not sent to the user input flow when granting additional scopes after being already authenticated, even if submitting the user input response is still required. See [#2874](https://github.com/google/site-kit-wp/issues/2874). +* Update assets across the plugin with new side kick-based branding illustrations. See [#2616](https://github.com/google/site-kit-wp/issues/2616). +* Include button to reset Site Kit under "Available Tools" in WordPress, as a way to reset the plugin data e.g. when currently not being connected. See [#2384](https://github.com/google/site-kit-wp/issues/2384). +* Update modules settings to use separate components for active and inactive modules. See [#2184](https://github.com/google/site-kit-wp/issues/2184). +* Improve the pre-setup compatibility checks to properly warn if the REST API is disabled instead of failing with an unexpected error. See [#2101](https://github.com/google/site-kit-wp/issues/2101). +* Migrate Analytics module page Top Acquisition Channels widget to use Widget API. See [#2069](https://github.com/google/site-kit-wp/issues/2069). +* Migrate Analytics module page popular pages widget to use Widget API. See [#2068](https://github.com/google/site-kit-wp/issues/2068). +* Migrate Analytics module page overview widget to use Widget API. See [#2067](https://github.com/google/site-kit-wp/issues/2067). +* Migrate AdSense module page overview widget to use Widget API. See [#2065](https://github.com/google/site-kit-wp/issues/2065). +* Migrate Search Console module page popular keywords widget to use Widget API. See [#2064](https://github.com/google/site-kit-wp/issues/2064). +* Migrate Search Console module page overview widget to use Widget API. See [#2063](https://github.com/google/site-kit-wp/issues/2063). + +**Fixed** + +* Fix critical JS error due to a new version of the Google charts library being released, by locking to a specific version. See [#3132](https://github.com/google/site-kit-wp/issues/3132). +* Fix regression where modules may be sorted incorrectly on the plugin's settings screen. See [#3093](https://github.com/google/site-kit-wp/issues/3093). +* Fix bug with help visibility icon in header where clicking it wouldn't trigger the menu to open in some scenarios, and also address some visual design problems with it. See [#3026](https://github.com/google/site-kit-wp/issues/3026). +* Fix Ad Blocker detection issue which occurred on sites with GoDaddy CDN enabled. See [#3018](https://github.com/google/site-kit-wp/issues/3018). +* Ensure changing the site URL between HTTP and HTTPS or `www.` and non-`www.` does not impact the results displayed in Analytics and AdSense widgets. See [#3005](https://github.com/google/site-kit-wp/issues/3005). +* Fix bug where Analytics snippet could still be placed when an existing snippet was already present in the frontend. See [#2909](https://github.com/google/site-kit-wp/issues/2909). +* Ensure that the AdSense snippet is not included on 404 pages in the frontend. See [#2784](https://github.com/google/site-kit-wp/issues/2784). + += 1.29.0 = + +**Enhanced** + +* Only show notice about a user input question affecting other users of the site if there is more than one authorized user on the site overall. See [#2852](https://github.com/google/site-kit-wp/issues/2852). +* Introduce new contextual help menu in Site Kit header bar and on the authentication service. See [#2846](https://github.com/google/site-kit-wp/issues/2846). +* Introduce tooltip tour guiding the user through the new version of the All Traffic widget. See [#2739](https://github.com/google/site-kit-wp/issues/2739). +* Enhance `PreviewBlock` JS component to support breakpoint-specific sizes via props. See [#2727](https://github.com/google/site-kit-wp/issues/2727). +* Implement persistent dismissal of feature tours, stored in the database. See [#2650](https://github.com/google/site-kit-wp/issues/2650). +* Introduce `ReportTable` component for displaying reusable data tables. See [#2249](https://github.com/google/site-kit-wp/issues/2249). + +**Fixed** + +* Fix vertical axis labels for Session Duration graph on Search Console module page to not mix minutes and hours. See [#2967](https://github.com/google/site-kit-wp/issues/2967). +* Fix problem where OAuth callback login would be triggered before WordPress's login redirect mechanism, immediately failing instead of redirecting as expected. See [#2935](https://github.com/google/site-kit-wp/issues/2935). +* Ensure entering a text is required when choosing the "Other" option for a question in the user input flow. See [#2907](https://github.com/google/site-kit-wp/issues/2907). +* Fix refactored Analytics goals widget behavior to match legacy version. See [#2858](https://github.com/google/site-kit-wp/issues/2858). +* Fix bug where switching between questions in the user input flow did not scroll the question into view. See [#2848](https://github.com/google/site-kit-wp/issues/2848). +* Cache user input responses temporarily in browser until it is submitted while the user is going through the flow, to prevent accidentally losing entered data. See [#2844](https://github.com/google/site-kit-wp/issues/2844). +* Clarify wording in last user input question about search terms. See [#2843](https://github.com/google/site-kit-wp/issues/2843). +* Fix some bugs in the behavior when checking or unchecking an "Other" option for one of the questions in the user input flow. See [#2828](https://github.com/google/site-kit-wp/issues/2828). + += 1.28.0 = + +**Added** + +* Implement React components for rendering tooltip tours. See [#2626](https://github.com/google/site-kit-wp/issues/2626). + +**Enhanced** + +* Automatically focus the "Other" text input upon selecting the "Other" option in a list of radio buttons or checkboxes. See [#2897](https://github.com/google/site-kit-wp/issues/2897). +* Update copy to clarify multiple choice behavior in user input flow. See [#2857](https://github.com/google/site-kit-wp/issues/2857). +* Update links on new version of AdSense dashboard summary widget to deep link to the respective area in the AdSense frontend. See [#2774](https://github.com/google/site-kit-wp/issues/2774). +* Include site URL in AdSense report deep links to point to the appropriate report. See [#2773](https://github.com/google/site-kit-wp/issues/2773). +* Add support for PHP 8 and ensure its maintenance via CI. Props TorbenLundsgaard. See [#2724](https://github.com/google/site-kit-wp/issues/2724). +* The `googlesitekit_authorize_user` and `googlesitekit_reauthorize_user` actions are now also fired when not using the authentication service flow. See [#2693](https://github.com/google/site-kit-wp/issues/2693). +* Implement infrastructure for rendering widgets in Site Kit module screens. See [#2653](https://github.com/google/site-kit-wp/issues/2653). +* Use reliable and React-friendly approach for detecting whether a widget is inactive and should not be rendered. See [#2612](https://github.com/google/site-kit-wp/issues/2612). +* Enhance localization of duration formatting. See [#2588](https://github.com/google/site-kit-wp/issues/2588). +* Filter all Analytics API requests to only include results for the current domain. See [#2554](https://github.com/google/site-kit-wp/issues/2554). +* Rely exclusively on SVGs for graphics and remove other image support. See [#2468](https://github.com/google/site-kit-wp/issues/2468). + +**Fixed** + +* Improve UX around entering search terms in the user input flow. See [#2842](https://github.com/google/site-kit-wp/issues/2842). +* Fix various visual glitches in the user input flow summary view and trim free text content entered for any "Other" choice. See [#2837](https://github.com/google/site-kit-wp/issues/2837). +* Change to preview / next button behaviour in User Input flow. See [#2829](https://github.com/google/site-kit-wp/issues/2829). +* Fix AdSense bug where `Ad Client not found` error would be displayed in certain cases where an account is still pending. See [#2812](https://github.com/google/site-kit-wp/issues/2812). +* Fix bug where AdGuard and uBlock ad blockers were no longer being recognized by Site Kit by implementing a more holistic solution for ad blocker detection relying on the `just-detect-adblock` library. See [#2794](https://github.com/google/site-kit-wp/issues/2794). +* Update link on AdSense module page to point to Analytics which is more accurate due to the source of the data. See [#2772](https://github.com/google/site-kit-wp/issues/2772). +* Fix Search Console x-axis labels on 90 day charts. See [#2747](https://github.com/google/site-kit-wp/issues/2747). +* Fix text issue with All Traffic pie chart. See [#2660](https://github.com/google/site-kit-wp/issues/2660). +* Fix problem where Analytics snippet placement would not be re-instated after disconnecting Tag Manager module when it was previously taking care of the Analytics tag. See [#2579](https://github.com/google/site-kit-wp/issues/2579). +* Fix bug where tracking opt-in was not working for multisite administrators when not being a member of the site. See [#2103](https://github.com/google/site-kit-wp/issues/2103). + += 1.27.0 = + +**Added** + +* Add support for AdSense auto ads to Web Stories, allowing to choose an AdSense ad unit to use which will then result in an `amp-story-auto-ads` element being injected. See [#2602](https://github.com/google/site-kit-wp/issues/2602). + +**Enhanced** + +* Improve wording for the confirmation notification after submitting user input settings. See [#2790](https://github.com/google/site-kit-wp/issues/2790). +* Allow resetting persistent Site Kit options via WP-CLI. See [#2748](https://github.com/google/site-kit-wp/issues/2748). +* Display All Traffic widget dimension tabs as a dropdown on narrow viewports. See [#2743](https://github.com/google/site-kit-wp/issues/2743). +* Include current dates in AdSense deep links so that the service frontend shows the same time period as Site Kit. See [#2689](https://github.com/google/site-kit-wp/issues/2689). +* Update Google API client library and remove custom configuration to retry failed API requests as it is now covered in the library itself. See [#2688](https://github.com/google/site-kit-wp/issues/2688). +* Introduce `WidgetReportError` component, which should be used by widgets to display an overall error state. See [#2670](https://github.com/google/site-kit-wp/issues/2670). +* Implement REST datapoints and JS datastore infrastructure for getting and dismissing tooltip tours. See [#2648](https://github.com/google/site-kit-wp/issues/2648). +* Prepare Widget API-based version of the dashboard for launch, rendering the entire page content including header and footer. See [#2646](https://github.com/google/site-kit-wp/issues/2646). +* Add ability to remotely control enabled feature flags. See [#2533](https://github.com/google/site-kit-wp/issues/2533). +* Introduce `core/ui` datastore for centrally storing UI state in JS. See [#2456](https://github.com/google/site-kit-wp/issues/2456). +* Include current dates in Analytics deep links so that the service frontend shows the same time period as Site Kit. See [#2287](https://github.com/google/site-kit-wp/issues/2287). +* Remove legacy version of the WP Dashboard widget and replace it with Site Kit widget-based refactored version. See [#2240](https://github.com/google/site-kit-wp/issues/2240). + +**Fixed** + +* Fix bug where the old All Traffic widget was still displaying in the dashboard for a single URL. See [#2856](https://github.com/google/site-kit-wp/issues/2856). +* Fix PHP 8 notice for deprecated `uasort()` usage. Props oguilleux. See [#2797](https://github.com/google/site-kit-wp/issues/2797). +* Reset link hidden while compatibility checks are in progress. See [#2756](https://github.com/google/site-kit-wp/issues/2756). +* Show All Traffic pie chart tooltips persistently when a slice is selected to allow interaction with the tooltip, which would not be possible when hovering. See [#2737](https://github.com/google/site-kit-wp/issues/2737). +* Fix AdSense dashboard summary widget to include data for the current date range in its sparklines rather than only data from the 1st of the current month. See [#2734](https://github.com/google/site-kit-wp/issues/2734). +* Fix visual bug where in the AdSense flow the toggle element could be overlapped by a checkmark icon. See [#2722](https://github.com/google/site-kit-wp/issues/2722). +* Fix bug with Search Console module page graph where overlapping legends would be displayed when selecting more than 2 metrics. See [#2721](https://github.com/google/site-kit-wp/issues/2721). +* Fix various bugs around the All Traffic pie chart (e.g. incorrect slices being selected when changing date range, correct behavior of not allowing "Others" to be selected) by introducing a new React-based charts component. See [#2714](https://github.com/google/site-kit-wp/issues/2714). +* Fix bug where in some occasions an error would be displayed when updating settings with the same values that were already stored before. See [#2513](https://github.com/google/site-kit-wp/issues/2513). +* Fix formatting of y-axis values for Bounce Rate and Session Duration on Analytics overview chart. See [#2095](https://github.com/google/site-kit-wp/issues/2095). + += 1.26.0 = + +**Enhanced** + +* Ensure that any "Others" slice in the All Traffic widget is not indicated as selectable and cannot be active. See [#2716](https://github.com/google/site-kit-wp/issues/2716). +* When viewing a specific segment of users in the All Traffic widget, make the "All Users" breadcrumb a link to go back to the overall users view. See [#2715](https://github.com/google/site-kit-wp/issues/2715). +* Enhance All Traffic widget pie chart legend by using a custom implementation so that the labels are never cut off and include a visual hover and active state. See [#2700](https://github.com/google/site-kit-wp/issues/2700). +* Show more than just two dates on the All Traffic widget's line chart. See [#2699](https://github.com/google/site-kit-wp/issues/2699). +* Include available and enabled Site Kit features in Site Health information. See [#2662](https://github.com/google/site-kit-wp/issues/2662). +* Rename the `header` and `footer` props of the `Widget` component to `Header` and `Footer` to indicate that they require a React component instead of an element. See [#2652](https://github.com/google/site-kit-wp/issues/2652). +* Simplify usage of the `Widget` component so that widget components can use a scoped version of it via props rather than manually importing it and re-specifying the widget slug. See [#2613](https://github.com/google/site-kit-wp/issues/2613). +* Migrate top content table in WP dashboard widget to functional hook-based component using the datastore. See [#2610](https://github.com/google/site-kit-wp/issues/2610). +* Decouple JS store, widget, and module registration from imports, introducing dedicated registration functions. See [#2587](https://github.com/google/site-kit-wp/issues/2587). +* Remove server-side API requests to determine whether a post has Search Console or Analytics data as it could significantly slow down WP admin response time. Props archon810. See [#2528](https://github.com/google/site-kit-wp/issues/2528). +* Always display the Site Kit admin bar menu even when there is no data for a more consistent experience, informing about the lack of data as applicable. See [#2508](https://github.com/google/site-kit-wp/issues/2508). +* Improve UX when clicking the Reset dialog button, keeping the dialog open in a loading state while completing the process. See [#2347](https://github.com/google/site-kit-wp/issues/2347). +* Include current dates in Search Console deep links so that the service frontend shows the same time period as Site Kit. See [#2286](https://github.com/google/site-kit-wp/issues/2286). +* Enhance admin bar implementation to be powered by the `googlesitekit.data` registry and its stores. See [#2241](https://github.com/google/site-kit-wp/issues/2241). + +**Fixed** + +* Ensure x-axis labels of the All Traffic line chart are correctly aligned with the pie chart legend. See [#2738](https://github.com/google/site-kit-wp/issues/2738). +* Avoid layout shift when enabling the Analytics module via the Site Kit dashboard CTA. See [#2719](https://github.com/google/site-kit-wp/issues/2719). +* Avoid content shifts in All Traffic widget due to incorrect loading UI layout. See [#2710](https://github.com/google/site-kit-wp/issues/2710). +* Only require going through the user input flow after setup if it has not been completed by the user before. See [#2603](https://github.com/google/site-kit-wp/issues/2603). + += 1.25.0 = + +**Added** + +* Launch new All Traffic widget in the Site Kit dashboard, which surfaces more detailed information about channels, includes a time-based graph, and surfaces similar metrics for countries and devices the site is accessed from. See [#2429](https://github.com/google/site-kit-wp/issues/2429). + +**Enhanced** + +* Modify pie chart tooltip behavior for new All Traffic widget so that tooltips are only shown when hovering over a pie slice. See [#2701](https://github.com/google/site-kit-wp/issues/2701). +* Store initial Site Kit version per user for more targeted messaging in the future and introduce `googlesitekit_reauthorize_user` action. See [#2692](https://github.com/google/site-kit-wp/issues/2692). +* Improve user experience of new All Traffic widget for when it is loading and for when there is no relevant data available. See [#2675](https://github.com/google/site-kit-wp/issues/2675). +* Fix layout of new All Traffic widget on mobile viewports to use a single column. See [#2663](https://github.com/google/site-kit-wp/issues/2663). +* Add contextual documentation links to new All Traffic widget to explain special dimension values "(not set)" and "(other)". See [#2642](https://github.com/google/site-kit-wp/issues/2642). +* Modify new All Traffic widget so that the line chart always uses the same color indicated by the currently selected pie slice. See [#2625](https://github.com/google/site-kit-wp/issues/2625). +* Modify font styles in the new All Traffic widget to match font styles used in Search Funnel widget and elsewhere throughout the plugin. See [#2623](https://github.com/google/site-kit-wp/issues/2623). +* Rely on new Search Console "fresh data" feature to display metrics as recent as 1 day ago, improving on the previous offset of 2 days. See [#2522](https://github.com/google/site-kit-wp/issues/2522). +* Remove various old REST datapoints in AdSense, Analytics, and Search Console modules that were only present to access specific settings and unused. See [#2507](https://github.com/google/site-kit-wp/issues/2507). +* Introduce `core/location` JS store, rely on it for redirects, and fix notification about unsatisfied scopes unnecessarily appearing before an OAuth redirect. See [#2497](https://github.com/google/site-kit-wp/issues/2497). +* Get rid of remaining usage of legacy `dateRange` argument in AdSense widgets. See [#2477](https://github.com/google/site-kit-wp/issues/2477). +* Improve JS API caching layer to cache certain error responses if they include a `cacheTTL` extra data property, allowing to avoid excessive Analytics API requests when the AdSense account is not linked. See [#2457](https://github.com/google/site-kit-wp/issues/2457). +* Introduce infrastructure for dynamically controlled feature flags via a `googlesitekit_is_feature_enabled` filter. See [#2452](https://github.com/google/site-kit-wp/issues/2452). +* Implement logic to automatically combine UI for widgets that are in special states, e.g. widgets without sufficient API response data, or widgets that require a specific module to be set up first. See [#2252](https://github.com/google/site-kit-wp/issues/2252). +* Add widget contexts and register widget areas for Site Kit module pages. See [#2062](https://github.com/google/site-kit-wp/issues/2062). + +**Fixed** + +* Fix All Traffic widget UI bug where pie chart tooltips would flicker when hovering over them. See [#2709](https://github.com/google/site-kit-wp/issues/2709). +* Ensure line chart in All Traffic is correctly aligned with the overall count and the pie chart at the bottom. See [#2708](https://github.com/google/site-kit-wp/issues/2708). +* Fix performance lag across Site Kit screens due to a problem in the `getModules` selector of the `core/modules` store. See [#2691](https://github.com/google/site-kit-wp/issues/2691). +* Fix bug where Tag Manager and Analytics snippet could be inserted twice on AMP pages. See [#2668](https://github.com/google/site-kit-wp/issues/2668). +* Fix bug with All Traffic widget where selected pie slice would no longer remain selected when changing the current date range. See [#2644](https://github.com/google/site-kit-wp/issues/2644). +* Fix graph in All Traffic widget to not cut off axis labels on viewports smaller than desktop. See [#2624](https://github.com/google/site-kit-wp/issues/2624). + += 1.24.0 = + +**Added** + +* Implement `UserDimensionsPieChart` component for new Analytics All Traffic widget. See [#2425](https://github.com/google/site-kit-wp/issues/2425). +* Implement main tabs UI for the new All Traffic widget. See [#2424](https://github.com/google/site-kit-wp/issues/2424). +* Implement `TotalUserCount` component for new Analytics All Traffic widget. See [#2423](https://github.com/google/site-kit-wp/issues/2423). +* Implement `UserCountGraph` component for new Analytics All Traffic widget. See [#2422](https://github.com/google/site-kit-wp/issues/2422). + +**Enhanced** + +* Add review and support links in the plugin's list table entry. See [#2516](https://github.com/google/site-kit-wp/issues/2516). +* Rename `icon` argument of `registerWidgetArea` to `Icon` and require it to be a `WPComponent` (e.g. an SVG). See [#2505](https://github.com/google/site-kit-wp/issues/2505). +* Improve UX for modifying user input settings, removing the requirement to click through subsequent questions when only wanting to change a specific response. See [#2499](https://github.com/google/site-kit-wp/issues/2499). +* Implement dynamic source link in the new All Traffic widget. See [#2428](https://github.com/google/site-kit-wp/issues/2428). +* Add interactivity to new All Traffic widget so that selecting a pie chart slice contextually updates the count and graph displayed. See [#2426](https://github.com/google/site-kit-wp/issues/2426). +* Add support for a `dimensionFilters` argument to the Analytics `GET:report` REST datapoint in PHP and the `getReport` selector in JS. See [#2421](https://github.com/google/site-kit-wp/issues/2421). +* Enhance `whenActive` higher-order component to accept a `FallbackComponent` as well as an `IncompleteComponent` prop. See [#2381](https://github.com/google/site-kit-wp/issues/2381). +* Remove legacy publisher win notifications. See [#2285](https://github.com/google/site-kit-wp/issues/2285). +* Add `storeName` argument to `registerModule` action of the `core/modules` store to specify the name of the JS datastore for the module. See [#2271](https://github.com/google/site-kit-wp/issues/2271). +* Move date awareness for Search Console API requests to the client, allowing for more contextual date information to be available. See [#2237](https://github.com/google/site-kit-wp/issues/2237). +* Move date awareness for Analytics API requests to the client, allowing for more contextual date information to be available. See [#2236](https://github.com/google/site-kit-wp/issues/2236). +* Introduce `getGoogleSupportURL` selector to `core/site` store in JS. See [#2221](https://github.com/google/site-kit-wp/issues/2221). +* Add support for an optional `SettingsSetupIncompleteComponent` argument to the `registerModule` action of the `core/modules` store, allowing developers to register a custom UI component for when the module is not fully connected. See [#2080](https://github.com/google/site-kit-wp/issues/2080). +* Update the plugin's admin bar menu to rely on functional hook-based components using the datastore. See [#2076](https://github.com/google/site-kit-wp/issues/2076). +* Update the plugin's WordPress dashboard widget to rely on functional hook-based components using the datastore. See [#2075](https://github.com/google/site-kit-wp/issues/2075). +* Switch `core/user/data/user-input-settings` REST endpoint to use remote authentication service API endpoint. See [#2048](https://github.com/google/site-kit-wp/issues/2048). +* Implement user input block to edit responses under `Site Kit > Settings > Admin Settings`. See [#2041](https://github.com/google/site-kit-wp/issues/2041). +* Introduce reusable infrastructure for rendering tags, relying on new `Tag_Interface` and `Guard_Interface` interfaces as well as `Tag` and `Module_Tag` classes, now being used across all modules. See [#475](https://github.com/google/site-kit-wp/issues/475). + +**Fixed** + +* Fix AdSense overview graph UI so that the available space for the total numbers expands as necessary. See [#2555](https://github.com/google/site-kit-wp/issues/2555). +* Prevent a remote notifications API request for development sites where the plugin is not using the authentication service. See [#2495](https://github.com/google/site-kit-wp/issues/2495). +* Fix JavaScript error triggered upon resetting the plugin's data. See [#2478](https://github.com/google/site-kit-wp/issues/2478). +* Update all Analytics deep links to use the `getServiceReportURL` selector for correct encoding of parameters and consistent behavior. See [#2405](https://github.com/google/site-kit-wp/issues/2405). +* Fix bug in legacy API layer dealing with errors in a batch response that could result in infinite loading states on module pages. See [#2403](https://github.com/google/site-kit-wp/issues/2403). +* Improve Analytics property matching logic so that users with many Analytics accounts do not run into user quota errors. See [#2218](https://github.com/google/site-kit-wp/issues/2218). +* Introduce `numFmt` function for centralized Site Kit-specific number formatting, localize percentage formatting, and fix various number formatting inconsistencies. See [#2200](https://github.com/google/site-kit-wp/issues/2200). + += 1.23.0 = + +**Added** + +* Scaffold components for a new version of the Analytics All Traffic widget. See [#2392](https://github.com/google/site-kit-wp/issues/2392). +* Display graph with historic AdSense data on module page, showing earnings, RPM, impressions and CTR over time. See [#1921](https://github.com/google/site-kit-wp/issues/1921). + +**Enhanced** + +* Introduce `listFormat` function to format entries in a comma-separated list. See [#2486](https://github.com/google/site-kit-wp/issues/2486). +* Rename arguments across various datastore actions requiring a `WPComponent` type to use capitalized names to better indicate a `WPComponent` (and not a `WPElement`) is required. See [#2413](https://github.com/google/site-kit-wp/issues/2413). +* Improve validation of user input submission states. See [#2323](https://github.com/google/site-kit-wp/issues/2323). +* Introduce `ActivateModuleCTA` and `CompleteModuleActivationCTA` components to centrally manage UI for those scenarios. See [#2299](https://github.com/google/site-kit-wp/issues/2299). +* Remove legacy `googlesitekit.moduleHasSetupWizard` JS filter. See [#2291](https://github.com/google/site-kit-wp/issues/2291). +* Remove legacy splash screen and the associated components. See [#2290](https://github.com/google/site-kit-wp/issues/2290). +* Allow registering module icon SVGs via the `core/modules` action `registerModule`. See [#2143](https://github.com/google/site-kit-wp/issues/2143). + +**Fixed** + +* Fix various low-level technical bugs due to duplicate module initialization by relying on a single reused Webpack runtime across entrypoints. See [#2444](https://github.com/google/site-kit-wp/issues/2444). +* Remove duplicate error message UI on top of module settings panel, since error messages are now displayed within the panel's main content already. See [#2396](https://github.com/google/site-kit-wp/issues/2396). +* Fix component-specific initialization logic of Google charts library to prevent duplicate initialization. See [#2247](https://github.com/google/site-kit-wp/issues/2247). + += 1.22.0 = + +**Added** + +* Surface WordPress-specific user experience recommendations in the PageSpeed Insights widget. See [#2390](https://github.com/google/site-kit-wp/issues/2390). +* Add support for `checkRequirements` argument to `registerModule` action of `core/modules` store, which allows to block a module from being activated until certain requirements are met. See [#2130](https://github.com/google/site-kit-wp/issues/2130). + +**Enhanced** + +* Ensure that all URIs on the authentication service are automatically refreshed as necessary when connecting as a user to an already connected site, fixing issues where sites could get stuck after updating their URLs. See [#2383](https://github.com/google/site-kit-wp/issues/2383). +* Move the date picker into the Site Kit header bar and make it sticky so that it is always visible when scrolling. See [#2331](https://github.com/google/site-kit-wp/issues/2331). +* Remove outdated dashboard notification warning vaguely about missing permissions, which is now covered with more specific widget CTAs. See [#2329](https://github.com/google/site-kit-wp/issues/2329). +* Add support for feature flags in PHP and experimentally require user input completion upon setup. See [#2316](https://github.com/google/site-kit-wp/issues/2316). +* Implement success notification displayed after completing the user input flow. See [#2283](https://github.com/google/site-kit-wp/issues/2283). +* Add support for displaying datastore-driven global error notifications in the plugin header. See [#2261](https://github.com/google/site-kit-wp/issues/2261). +* Improve logic to determine whether a Search Console API report response is "empty", via new `isZeroReport` function for Search Console. See [#2244](https://github.com/google/site-kit-wp/issues/2244). +* Improve logic to determine whether an Analytics API report response is "empty", via new `isZeroReport` function for Analytics. See [#2243](https://github.com/google/site-kit-wp/issues/2243). +* Rely on JavaScript date parsing for AdSense widgets. See [#2235](https://github.com/google/site-kit-wp/issues/2235). +* Add `core/modules` actions and selectors for managing module settings panel state. See [#2181](https://github.com/google/site-kit-wp/issues/2181). +* Implement Site Kit dashboard notification for when requesting user input to be completed. See [#2043](https://github.com/google/site-kit-wp/issues/2043). +* Implement exponential backoff to retry Google service API requests a limited amount of time if they fail with temporary errors. See [#1998](https://github.com/google/site-kit-wp/issues/1998). + +**Fixed** + +* Fix Search Console latest data threshold back to 2 days ago as that is the latest data the API provides. See [#2458](https://github.com/google/site-kit-wp/issues/2458). +* Make e2e tests pass for WordPress 5.6. See [#2455](https://github.com/google/site-kit-wp/issues/2455). +* Fix race condition where widgets could run into an error when their necessary datastore selector had not started resolving yet. See [#2436](https://github.com/google/site-kit-wp/issues/2436). +* Fix various spelling errors throughout the UI of the plugin. See [#2401](https://github.com/google/site-kit-wp/issues/2401). +* Flush browser session storage on plugin updates to prevent stale data from being served against new logic. See [#2334](https://github.com/google/site-kit-wp/issues/2334). +* Ensure that REST API preloaded data is not computed and included outside of Site Kit admin screens. See [#2315](https://github.com/google/site-kit-wp/issues/2315). +* Fix failing PHPUnit tests for compatibility with upcoming WordPress 5.6. See [#2264](https://github.com/google/site-kit-wp/issues/2264). +* Fix broken Analytics frontend deep links on AdSense module page. See [#2228](https://github.com/google/site-kit-wp/issues/2228). + += 1.21.0 = + +**Enhanced** + +* Include current user's Site Kit capabilities in Site Health report. See [#2314](https://github.com/google/site-kit-wp/issues/2314). +* Mark user input state as completed once user has submitted their information. See [#2310](https://github.com/google/site-kit-wp/issues/2310). +* Finalize copy for new `googlesitekit-user-input` screen. See [#2302](https://github.com/google/site-kit-wp/issues/2302). +* Display informational warning before setup about limited support for WordPress versions before 5.0. See [#2289](https://github.com/google/site-kit-wp/issues/2289). +* Modify Search Console API queries so that they include results up until one day ago. See [#2284](https://github.com/google/site-kit-wp/issues/2284). +* Add support for widgets to have multiple (fallback) widths via `googlesitekit.widgets.registerWidget`, laying out widget grid with as few gaps as possible. See [#2251](https://github.com/google/site-kit-wp/issues/2251). +* Modify widgets registered with `quarter` width to render for half the screen width on mobile viewports. See [#2250](https://github.com/google/site-kit-wp/issues/2250). +* Introduce `ReportError` and `ReportZero` components which should be returned by widgets that are in error state or have no data to display. See [#2246](https://github.com/google/site-kit-wp/issues/2246). +* Add JS utility functions `sumObjectListValue`, `averageObjectListValue`, and enhance capabilities of `extractForSparkline` function. See [#2245](https://github.com/google/site-kit-wp/issues/2245). +* Improve logic to determine whether an AdSense API report response is "empty", via new `isZeroReport` function for AdSense. See [#2242](https://github.com/google/site-kit-wp/issues/2242). +* Simplify adding strings only visible to screen reader users by implementing a `VisuallyHidden` component. See [#2165](https://github.com/google/site-kit-wp/issues/2165). +* Reduce complexity of implementing and registering `settingsEdit` components for a module by centrally handling setting submission. See [#2137](https://github.com/google/site-kit-wp/issues/2137). +* Modify the `createModuleStore` JavaScript function so that every module store has a `canSubmitChanges` selector and a `submitChanges` action. See [#2136](https://github.com/google/site-kit-wp/issues/2136). +* Implement UI design for `googlesitekit-user-input` screen. See [#2040](https://github.com/google/site-kit-wp/issues/2040). +* Simplify module class infrastructure and implement (internal) module registry. See [#1939](https://github.com/google/site-kit-wp/issues/1939). + +**Fixed** + +* Fix bug where Analytics widgets would fire their API requests even when the module wasn't completely set up, resulting in unnecessary error responses. See [#2358](https://github.com/google/site-kit-wp/issues/2358). +* Fix JavaScript translations that were not appearing to work correctly, given the site uses WordPress >= 5.0, which is required for support of JavaScript translations. See [#2171](https://github.com/google/site-kit-wp/issues/2171). +* Fix bug where a previous error from an action would not be cleared when trying the same action again. See [#2156](https://github.com/google/site-kit-wp/issues/2156). +* Fix a few translation strings that were concatenating date ranges, making them correctly translatable. See [#2146](https://github.com/google/site-kit-wp/issues/2146). +* Fix compatibility issue where `amp-auto-ads` element would not be present in AMP singular content when also using the Yoast SEO plugin. See [#2111](https://github.com/google/site-kit-wp/issues/2111). + += 1.20.0 = + +**Added** + +* Implement post search widget using the new Widget API. See [#2023](https://github.com/google/site-kit-wp/issues/2023). +* Allow registering a `settingsViewComponent` and `settingsEditComponent` when calling the `registerModule` action on the `core/modules` store. See [#1623](https://github.com/google/site-kit-wp/issues/1623). + +**Enhanced** + +* Unregister the site from the authentication service when the plugin is deleted. See [#2311](https://github.com/google/site-kit-wp/issues/2311). +* Add selectors `canSubmitChanges` and `isDoingSubmitChanges` and action `submitChanges` to `core/modules` datastore. See [#2182](https://github.com/google/site-kit-wp/issues/2182). +* Add selectors `getModuleDependencyNames` and `getModuleDependantNames` to `core/modules` store. See [#2180](https://github.com/google/site-kit-wp/issues/2180). +* Allow registering a `setupComponent` when calling the `registerModule` action on the `core/modules` store. See [#2074](https://github.com/google/site-kit-wp/issues/2074). +* Implement UI for new splash screen based on authentication service improvements. See [#2046](https://github.com/google/site-kit-wp/issues/2046). +* Detect and store whether each user has already answered the user input questions to customize the plugin behavior. See [#2042](https://github.com/google/site-kit-wp/issues/2042). +* Implement UI components to use in `googlesitekit-user-input` screen. See [#2039](https://github.com/google/site-kit-wp/issues/2039). +* Add Analytics tracking events for API request errors. See [#1999](https://github.com/google/site-kit-wp/issues/1999). + +**Fixed** + +* Fix bug where errors would be inconsistently keyed and not cleared as expected in certain cases. See [#2210](https://github.com/google/site-kit-wp/issues/2210). +* Fix Search Console deep links to point to correct locations in case of a domain property as well. See [#2110](https://github.com/google/site-kit-wp/issues/2110). +* Fix accessibility issue with links opening in a new tab by annotating them with screen reader text informing about it. See [#2093](https://github.com/google/site-kit-wp/issues/2093). +* Fix several UI loading state issues across module setup flows. See [#1995](https://github.com/google/site-kit-wp/issues/1995). +* Display text field to specify name when creating a new Tag Manager container, and prevent duplicate names which could have resulted in an error before. See [#1817](https://github.com/google/site-kit-wp/issues/1817). +* Remove usage of JavaScript chunk files to fix potential issues with certain server configurations. See [#1391](https://github.com/google/site-kit-wp/issues/1391). + += 1.19.0 = + +**Added** + +* Introduce `getUserInputSettings` selector and `setUserInputSettings` and `saveUserInputSettings` actions on `core/user` store. See [#2037](https://github.com/google/site-kit-wp/issues/2037). +* Introduce `core/user/data/user-input-settings` REST datapoint. See [#2036](https://github.com/google/site-kit-wp/issues/2036). + +**Enhanced** + +* Display notice about new Analytics and link to relevant support resource. See [#2219](https://github.com/google/site-kit-wp/issues/2219). +* Make `canSubmitChanges` selectors throughout different module datastores more testable and consistent. See [#2108](https://github.com/google/site-kit-wp/issues/2108). +* Enhance new widget API so that only widget areas that have active widgets are rendered. See [#2021](https://github.com/google/site-kit-wp/issues/2021). +* Provide accurate deep links for all Search Console and Analytics widgets, pointing to the corresponding location in the Google service frontend. See [#1923](https://github.com/google/site-kit-wp/issues/1923). +* Use direct SVG imports instead of an SVG sprite which can cause accessibility and testing issues. See [#1878](https://github.com/google/site-kit-wp/issues/1878). +* Make AdSense module page UI more consistent with other modules, allowing to filter information by date instead of showing at-a-glance information for different date periods. See [#317](https://github.com/google/site-kit-wp/issues/317). + +**Fixed** + +* Fix bug where some data stores would be registered multiple times in JS. See [#2145](https://github.com/google/site-kit-wp/issues/2145). +* Fix issue where admin bar would not show for URLs with unicode paths. Props kabirbd89. See [#1968](https://github.com/google/site-kit-wp/issues/1968). +* Improve error handling during module setup and editing module settings so that any API errors are displayed. See [#1859](https://github.com/google/site-kit-wp/issues/1859). +* Fix menu positioning bug that would move menu item for WP Engine and Bluehost hosting providers. See [#1541](https://github.com/google/site-kit-wp/issues/1541). + += 1.18.0 = + +**Added** + +* Introduce several filters to allow blocking rendering or execution of Google service scripts in the frontend, allowing integration with e.g. 3P cookie consent plugins. See [#2087](https://github.com/google/site-kit-wp/issues/2087). +* Introduce API layer for advanced Analytics event tracking configurations from other plugins. See [#1728](https://github.com/google/site-kit-wp/issues/1728). + +**Enhanced** + +* Introduce `googlesitekit_canonical_home_url` filter, allowing (e.g. multilingual) plugins that contextually alter the home URL to fix potential issues with Site Kit. See [#2131](https://github.com/google/site-kit-wp/issues/2131). +* Remove unused properties in module PHP classes. See [#2050](https://github.com/google/site-kit-wp/issues/2050). +* Scaffold new `googlesitekit-user-input` screen. See [#2038](https://github.com/google/site-kit-wp/issues/2038). +* Expand `Widget` component to correctly align vertically and support optional header and footer component props. See [#2022](https://github.com/google/site-kit-wp/issues/2022). +* Improve authentication service permissions link to check Site Kit permissions first while not exposing the actual URL on the client. See [#1985](https://github.com/google/site-kit-wp/issues/1985). +* Introduce `User_Transients` PHP class for storing user-specific transients. See [#1964](https://github.com/google/site-kit-wp/issues/1964). +* Introduce `getDateRangeDates()` selector to `core/user` datastore to retrieve actual date strings based on the current date range. See [#1925](https://github.com/google/site-kit-wp/issues/1925). +* Display error notification when refreshing an access token failed due to missing Site Kit authentication service requirements. See [#1848](https://github.com/google/site-kit-wp/issues/1848). +* Update the Reset Site Kit dialog message to be more clear. See [#1825](https://github.com/google/site-kit-wp/issues/1825). +* Provide guidance in Analytics setup flow when Tag Manager is already active and its container is configured to use Analytics. See [#1382](https://github.com/google/site-kit-wp/issues/1382). +* Provide guidance in Tag Manager setup flow when container is configured to use Analytics, including checks to ensure an eventual AMP container behaves correctly as well. See [#1381](https://github.com/google/site-kit-wp/issues/1381). +* Remove Analytics module as requirement for Tag Manager module, decoupling them to be individual. See [#1380](https://github.com/google/site-kit-wp/issues/1380). + +**Fixed** + +* Fix new AdSense Top Earning Pages widget displaying error instead of CTA to link AdSense and Analytics. See [#2098](https://github.com/google/site-kit-wp/issues/2098). +* Fix inconsistent loading state in Search Console Popular Keywords widget, which previously caused content shifting. See [#2013](https://github.com/google/site-kit-wp/issues/2013). +* Show an error message if the URL for the single URL detail view cannot be identified as part of the site. See [#2001](https://github.com/google/site-kit-wp/issues/2001). +* Improve support for URLs containing unicode, mixed case, and bidirectional control characters when requesting and sending data to Search Console. See [#1567](https://github.com/google/site-kit-wp/issues/1567). + += 1.17.0 = + +**Enhanced** + +* Simplify module registration in JavaScript and only allow one registration call per module. See [#2024](https://github.com/google/site-kit-wp/issues/2024). +* Improve accuracy of AdSense account status detection based on specific errors. See [#1919](https://github.com/google/site-kit-wp/issues/1919). +* Migrate AdSense Top Earning Pages widget to new Widget API. See [#1902](https://github.com/google/site-kit-wp/issues/1902). +* Migrate AdSense Summary widget to new Widget API. See [#1901](https://github.com/google/site-kit-wp/issues/1901). +* Migrate Analytics Popular Pages widget to new Widget API. See [#1900](https://github.com/google/site-kit-wp/issues/1900). +* Migrate Search Console Top Keywords widget to new Widget API. See [#1899](https://github.com/google/site-kit-wp/issues/1899). +* Migrate Analytics Unique Visitors, Bounce Rate, and Goals widgets to new Widget API. See [#1898](https://github.com/google/site-kit-wp/issues/1898). +* Store the site URL that is connected to the Site Kit authentication service and prompt users to reconnect if the site URL has changed, allowing to update the registered configuration and fix future connection issues. See [#1857](https://github.com/google/site-kit-wp/issues/1857). +* Show a button to refresh PageSpeed Insights report data in the widget. Props amirsadeghian. See [#87](https://github.com/google/site-kit-wp/issues/87). + +**Fixed** + +* Fix initial datastore state being registered incorrectly to ensure consistent initial state. See [#2083](https://github.com/google/site-kit-wp/issues/2083). +* Improve performance of datastores by avoiding unnecessary datastore updates. See [#2052](https://github.com/google/site-kit-wp/issues/2052). +* Fix various translation strings to no longer violate localization best practices. See [#2049](https://github.com/google/site-kit-wp/issues/2049). +* Fix console error when unfocusing and refocusing tab in AdSense setup flow. See [#2033](https://github.com/google/site-kit-wp/issues/2033). +* Fix Search Console deep links for specific keywords in keywords widget to point to the correct location. See [#2019](https://github.com/google/site-kit-wp/issues/2019). +* Fix tooltips for Bounce Rate and Session Duration in Analytics graph to format values correctly. See [#2008](https://github.com/google/site-kit-wp/issues/2008). +* Provide site URL as fallback default value when creating a new Analytics account if site title is empty. See [#1960](https://github.com/google/site-kit-wp/issues/1960). +* Avoid unnecessarily excessive requests to constantly check whether the active Analytics property and AdSense client are connected. See [#1858](https://github.com/google/site-kit-wp/issues/1858). +* Only select Analytics default view for the active property automatically if it still exists. See [#1691](https://github.com/google/site-kit-wp/issues/1691). + += 1.16.0 = + +**Enhanced** + +* Modify title links in Popular Pages table in Site Kit dashboard and WordPress dashboard widget to point to the details view for the relevant URL. See [#1922](https://github.com/google/site-kit-wp/issues/1922). +* Migrate Search Console Impressions and Clicks widgets to new Widget API. See [#1897](https://github.com/google/site-kit-wp/issues/1897). +* Migrate Analytics All Traffic widget to new Widget API. See [#1896](https://github.com/google/site-kit-wp/issues/1896). +* For API errors about missing Google service permissions, clarify based on module ownership who to contact for more information. See [#1824](https://github.com/google/site-kit-wp/issues/1824). +* Introduce concept of ownership for modules based on who set them up. See [#1743](https://github.com/google/site-kit-wp/issues/1743). + +**Fixed** + +* Improve entity detection so that single URL details view only works for URLs which do not result in a 404 per WordPress behavior. See [#1980](https://github.com/google/site-kit-wp/issues/1980). +* Fix bug with URL-based entity detection where home page stats in Site Kit URL details view would not show up as expected. See [#1978](https://github.com/google/site-kit-wp/issues/1978). +* Fix support for WordPress configurations using an HTTP proxy with or without authentication required. See [#1976](https://github.com/google/site-kit-wp/issues/1976). +* Provide `permission_callback` to `core/search/data/post-search` datapoint and rely on higher-level `register_rest_route` function from WordPress core. See [#1924](https://github.com/google/site-kit-wp/issues/1924). +* Fix console warning about event tracking timeout being unnecessarily raised. See [#1886](https://github.com/google/site-kit-wp/issues/1886). +* Fix Analytics reporting graph tooltip to match Analytics frontend UI and expose the same information. See [#1836](https://github.com/google/site-kit-wp/issues/1836). +* Update post search input to use a better maintained and more accessible autocomplete library. See [#1761](https://github.com/google/site-kit-wp/issues/1761). + += 1.15.0 = + +**Enhanced** + +* Introduce more granular error handling, with consistent error behavior in every store and API request errors being automatically stored. See [#1814](https://github.com/google/site-kit-wp/issues/1814). +* Enhance `getReport( options )` selector in `modules/adsense` store to allow for flexibly querying AdSense reports. See [#1776](https://github.com/google/site-kit-wp/issues/1776). +* Add `getReport( options )` selector to `modules/search-console` store for querying Search Console reports. See [#1774](https://github.com/google/site-kit-wp/issues/1774). +* Add copy-to-clipboard functionality and link to WordPress support forums to generic JavaScript error handler. See [#1184](https://github.com/google/site-kit-wp/issues/1184). +* Enable Site Kit admin bar menu and URL details view for any WordPress content beyond single posts, for example category, tag, author, or post type archives. See [#174](https://github.com/google/site-kit-wp/issues/174). + +**Fixed** + +* Fix opting out of Analytics for logged in users not working correctly for Web Stories. See [#1920](https://github.com/google/site-kit-wp/issues/1920). +* Ensure Search Console data in Site Kit only includes data for the current site even when using a domain property. See [#1917](https://github.com/google/site-kit-wp/issues/1917). +* Fix internal error handling so that invalid usages of API-based selectors result in errors being thrown as expected. See [#1801](https://github.com/google/site-kit-wp/issues/1801). +* Use hashes for all JavaScript asset file names to avoid stale versions from being served on hosts with aggressive caching. See [#1700](https://github.com/google/site-kit-wp/issues/1700). + += 1.14.0 = + +**Enhanced** + +* Add new action hooks `googlesitekit_analytics_init_tag`, `googlesitekit_analytics_init_tag_amp`, `googlesitekit_adsense_init_tag`, `googlesitekit_adsense_init_tag_amp`, `googlesitekit_tagmanager_init_tag`, `googlesitekit_tagmanager_init_tag_amp` which fire when the respective tag will be printed for the current request, but _before_ any HTML output has been generated. See [#1862](https://github.com/google/site-kit-wp/issues/1862). +* Clarify messaging on initial setup screen for secondary users who need to connect to Site Kit. Props sonjaleix. See [#1714](https://github.com/google/site-kit-wp/issues/1714). +* Detect potential problems with issuing API requests to Google services and AMP prior to setup and inform the user about it. See [#1549](https://github.com/google/site-kit-wp/issues/1549). + +**Fixed** + +* Migrate away from using `AMP_Theme_Support::get_support_mode()` which will be deprecated in the AMP plugin version 2.0.0. Props maciejmackowiak. See [#1895](https://github.com/google/site-kit-wp/issues/1895). +* Fix bug where certain React code being imported in third-party code could cause JavaScript errors. See [#1888](https://github.com/google/site-kit-wp/issues/1888). +* Link to the Manage sites screen including an `hl` query parameter for a localized experience. See [#1860](https://github.com/google/site-kit-wp/issues/1860). +* Fix bug where the displayed Analytics user count percentage change was slightly off from Analytics service frontend. See [#1681](https://github.com/google/site-kit-wp/issues/1681). +* Fix bug where deep links to the AdSense service frontend could result in blank screens there for users with a single Google account logged in. See [#1652](https://github.com/google/site-kit-wp/issues/1652). +* Consistently enhance deep links to Google services to support users logged into multiple Google accounts in their browser. See [#1456](https://github.com/google/site-kit-wp/issues/1456). +* Fix inconsistency where Analytics numbers displayed for the last 90 days were slightly off from the values in the Analytics frontend. See [#1280](https://github.com/google/site-kit-wp/issues/1280). +* Fix bug where another plugin (e.g. WP User Frontend) could mess up the post detection process within the Site Kit dashboard. See [#1253](https://github.com/google/site-kit-wp/issues/1253). +* Fix bug where state of not having sufficient data for a Site Kit widget would sometimes incorrectly persist when switching the date range. See [#184](https://github.com/google/site-kit-wp/issues/184). + += 1.13.1 = + +**Fixed** + +* Fix regression where Analytics top content wouldn't be sorted correctly by views. Props gmmedia. See [#1867](https://github.com/google/site-kit-wp/issues/1867). + += 1.13.0 = + +**Added** + +* Introduce `registerModule` action to `core/modules` store, which allows for JS module registration and will in the future enable registration of module components. See [#1622](https://github.com/google/site-kit-wp/issues/1622). + +**Enhanced** + +* Add `getReport( options )` selector to `modules/analytics` store for querying Analytics reports. See [#1775](https://github.com/google/site-kit-wp/issues/1775). +* Pass `hl` query parameter to Site Kit service for setup and authentication, for a localized experience. See [#1726](https://github.com/google/site-kit-wp/issues/1726). +* Modify `getURLChannels` selector in `modules/adsense` store to require both `accountID` and `clientID` parameters, and no longer rely on infering AdSense account ID from client ID in general. See [#1709](https://github.com/google/site-kit-wp/issues/1709). +* Implement logic and styling for managing widget areas and widgets in a dynamic grid, respective registered widget widths and aligning them properly. See [#1678](https://github.com/google/site-kit-wp/issues/1678). +* Migrate the existing date range selector component to rely on the centrally managed date range from datastore. See [#1531](https://github.com/google/site-kit-wp/issues/1531). +* Simplify detection of existing tags and combine functionality in the JS store. See [#1328](https://github.com/google/site-kit-wp/issues/1328). +* Migrate PageSpeed Insights widget to use the new Site Kit widgets API. See [#1302](https://github.com/google/site-kit-wp/issues/1302). + +**Fixed** + +* No longer cache API response errors within batch requests. See [#1800](https://github.com/google/site-kit-wp/issues/1800). +* Fix publisher win notifications regression where they would not be displayed anymore. See [#1781](https://github.com/google/site-kit-wp/issues/1781). +* Fix new JS API layer to prefer `sessionStorage` over `localStorage` for caching. See [#1780](https://github.com/google/site-kit-wp/issues/1780). +* Improve Google profile data lookup to retry periodically if it temporarily fails. See [#1731](https://github.com/google/site-kit-wp/issues/1731). +* Display correct labels for Analytics top acquisition channels by relying on `ga:channelGrouping` dimension. See [#1719](https://github.com/google/site-kit-wp/issues/1719). +* Handle error conditions more gracefully when refreshing access token fails due to e.g. the user having revoked access previously, providing the user with a link to resolve the problem. See [#1646](https://github.com/google/site-kit-wp/issues/1646). +* Fix usage of `apiFetch` with a custom middleware to only rely on preloaded data for initial requests on pageload. See [#1611](https://github.com/google/site-kit-wp/issues/1611). +* Fix notification bubble on Site Kit menu so that it only displays if there are actual notifications available. See [#1540](https://github.com/google/site-kit-wp/issues/1540). +* Fix PHP warning that could occur when retrieving REST API information via help endpoint. Props majemedia. See [#1208](https://github.com/google/site-kit-wp/issues/1208). + += 1.12.0 = + +**Added** + +* Add `getDateRange()` selector and `setDateRange( slug )` action to the `core/user` store. See [#1529](https://github.com/google/site-kit-wp/issues/1529). + +**Enhanced** + +* Introduce new `wrapWidget` setting to `core/widgets` store's `registerWidget` selector which adds the wrapping `Widget` component by default. See [#1724](https://github.com/google/site-kit-wp/issues/1724). +* Deprecate `Module::get_datapoint_services()` PHP method in favor of `Module::get_datapoint_definitions()` for more flexibility in annotating API datapoints. See [#1609](https://github.com/google/site-kit-wp/issues/1609). +* Only require the `https://www.googleapis.com/auth/tagmanager.readonly` scope by default for Tag Manager, and request write scopes only as needed for a specific action. See [#1608](https://github.com/google/site-kit-wp/issues/1608). +* Redirect users to the setup screen when trying to access the Site Kit dashboard with insufficient permissions. See [#1526](https://github.com/google/site-kit-wp/issues/1526). +* Implement widget areas using new Site Kit widgets API. See [#1392](https://github.com/google/site-kit-wp/issues/1392). +* Significantly improve stability and maintainability of Tag Manager module setup and settings. See [#1386](https://github.com/google/site-kit-wp/issues/1386). +* Update the majority of 3P dependencies to their latest versions. See [#1356](https://github.com/google/site-kit-wp/issues/1356). + +**Fixed** + +* Require `accountID` to be passed to `getProfiles` selector in `modules/analytics` store, in order to supported moved Analytics properties. See [#1707](https://github.com/google/site-kit-wp/issues/1707). +* Fix bug where placing an invalid Analytics tag through another plugin could cause the Site Kit Analytics setup UI to break. See [#1651](https://github.com/google/site-kit-wp/issues/1651). +* Fix bug where users with full Analytics access would see error message about lack of permissions, due to the property having been moved. See [#1548](https://github.com/google/site-kit-wp/issues/1548). + += 1.11.1 = + +**Fixed** + +* Fix bug where users attempting to create a new Analytics view during module setup would be blocked from proceeding. See [#1754](https://github.com/google/site-kit-wp/issues/1754). + += 1.11.0 = + +**Added** + +* Introduce base components for upcoming Site Kit Widgets API. See [#1300](https://github.com/google/site-kit-wp/issues/1300). + +**Enhanced** + +* Rename `wp google-site-kit auth revoke` to `wp google-site-kit auth disconnect` and adjust internal CLI commands infrastructure. See [#1677](https://github.com/google/site-kit-wp/issues/1677). +* Significantly improve stability and maintainability of Optimize module setup and settings, and fix bug where editing Optimize settings with AMP active could cause an error due to the `ampExperimentJSON` module setting not being stored as JSON string. See [#1621](https://github.com/google/site-kit-wp/issues/1621). +* Add `hasScope( scope )` selector to `core/user` store, which allows checking whether the user has explicitly granted access to the respective scope. See [#1610](https://github.com/google/site-kit-wp/issues/1610). +* Introduce `modules/tagmanager` datastore to enable JS-based access to Tag Manager data. See [#1385](https://github.com/google/site-kit-wp/issues/1385). +* Allow specifying Analytics view name when creating a new one, and display a deep link to modify view settings in Analytics module settings. See [#716](https://github.com/google/site-kit-wp/issues/716). + +**Fixed** + +* Fix admin tracking regression where snippet would not be loaded on the page. See [#1717](https://github.com/google/site-kit-wp/issues/1717). +* Ensure ad blocker detection is active throughout the entire AdSense module setup. See [#1666](https://github.com/google/site-kit-wp/issues/1666). +* Fix redirect to Google Analytics terms of service occasionally failing due to unnecessary extra redirect. See [#1632](https://github.com/google/site-kit-wp/issues/1632). +* Fix bug `Cannot read property 'destroy' of undefined` from AMP experiment JSON field in Optimize module. See [#1605](https://github.com/google/site-kit-wp/issues/1605). + += 1.10.0 = + +[Learn more about the new feature in this release](https://sitekit.withgoogle.com/news/understand-how-visitors-experience-your-pages-core-web-vitals-now-available-in-site-kit/) + +**Added** + +* Implement new version of PageSpeed Insights widget that focuses on core web vitals. See [#1636](https://github.com/google/site-kit-wp/issues/1636). +* Introduce `modules/optimize` JS datastore for Optimize module. See [#1620](https://github.com/google/site-kit-wp/issues/1620). + +**Enhanced** + +* Detect current URL and related data when on the Site Kit screen for single URL details. See [#1653](https://github.com/google/site-kit-wp/issues/1653). +* Implement tabbed UI for new web vitals widget separating between mobile and desktop as well as lab and field data. See [#1649](https://github.com/google/site-kit-wp/issues/1649). +* Only load Site Kit-specific Analytics script on Site Kit admin screens. See [#1648](https://github.com/google/site-kit-wp/issues/1648). +* Pass `user_roles` query parameter during setup. See [#1639](https://github.com/google/site-kit-wp/issues/1639). +* Simplify module datastore creation by including `commonStore` in the store returned `googlesitekit.modules.createModuleStore`. See [#1607](https://github.com/google/site-kit-wp/issues/1607). +* Add selectors to get module-specific admin screen URLs to every module datastore. See [#1559](https://github.com/google/site-kit-wp/issues/1559). +* Fix accessibility issues in Site Kit settings due to semantically incorrect tag usage. See [#1557](https://github.com/google/site-kit-wp/issues/1557). +* Add `getReport` selector to `modules/pagespeed-insights` datastore to get UX reports. See [#1426](https://github.com/google/site-kit-wp/issues/1426). +* Implement meta programming approach for API-based datastore selectors and actions to reduce boilerplate. See [#1288](https://github.com/google/site-kit-wp/issues/1288). +* Include anchor link in success notification after setting up PageSpeed Insights module. See [#532](https://github.com/google/site-kit-wp/issues/532). + +**Fixed** + +* Reduce bundle size of Analytics and Optimize module JS assets. See [#1661](https://github.com/google/site-kit-wp/issues/1661). +* Do not run Site Kit assets logic when not applicable for the current user, avoiding unnecessary checks e.g. on the login screen. See [#1650](https://github.com/google/site-kit-wp/issues/1650). +* Fix incompatibility with WooCommerce due to Webpack conflict. See [#1637](https://github.com/google/site-kit-wp/issues/1637). +* Fix bug with event firing when activating or deactivating a module. See [#1629](https://github.com/google/site-kit-wp/issues/1629). +* Enhance functionality of new `core/modules` store so that module activation/deactivation results in authentication data to be refreshed. See [#1507](https://github.com/google/site-kit-wp/issues/1507). +* Fix ad blocker detection failing for popular AdBlock browser extension. See [#1491](https://github.com/google/site-kit-wp/issues/1491). +* Ensure dashboard search form can only be submitted with valid content. See [#1434](https://github.com/google/site-kit-wp/issues/1434). +* Fix Analytics data displayed for Users being partially incorrect due to incorrect date parsing. See [#1394](https://github.com/google/site-kit-wp/issues/1394). +* Fix table content overflow issues in narrow viewports. Props AlexandreOrlowski. See [#1376](https://github.com/google/site-kit-wp/issues/1376). + += 1.9.0 = + +**Added** + +* Introduce `modules/pagespeed-insights` datastore in JS. See [#1500](https://github.com/google/site-kit-wp/issues/1500). +* Introduce `modules/search-console` datastore in JS. See [#1498](https://github.com/google/site-kit-wp/issues/1498). +* Implement Site Kit widgets API datastore wrapper on `googlesitekit.widgets`. See [#1301](https://github.com/google/site-kit-wp/issues/1301). +* Introduce `core/widgets` datastore for Site Kit widget registrations. See [#1298](https://github.com/google/site-kit-wp/issues/1298). +* Integrate with the Analytics Provisioning API to enable creation of Analytics accounts directly from the plugin. See [#1271](https://github.com/google/site-kit-wp/issues/1271). +* Introduce `modules/adsense` JavaScript datastore with core functionality for the AdSense module. See [#1247](https://github.com/google/site-kit-wp/issues/1247). +* Add `create-account-ticket` datapoint for `Analytics` module that creates a new Analytics account ticket using the Provisioning API. See [#1212](https://github.com/google/site-kit-wp/issues/1212). +* Add notifications functionality to `core/user` store. See [#1177](https://github.com/google/site-kit-wp/issues/1177). +* Introduce `core/user` datastore for managing user-specific data in JS. See [#1175](https://github.com/google/site-kit-wp/issues/1175). + +**Enhanced** + +* Only request readonly OAuth scopes for each module by default, and prompt for additional scopes when needed for a specific action. See [#1566](https://github.com/google/site-kit-wp/issues/1566). +* Wrap all JavaScript apps into `Root` component with essential providers, error handlers etc. See [#1530](https://github.com/google/site-kit-wp/issues/1530). +* Introduce `core/forms` datastore to manage form state. See [#1510](https://github.com/google/site-kit-wp/issues/1510). +* Render `amp-analytics` snippet for Web Stories. See [#1506](https://github.com/google/site-kit-wp/issues/1506). +* Migrate PageSpeed Insights settings to using the datastore. See [#1501](https://github.com/google/site-kit-wp/issues/1501). +* Display actual Search Console property used in settings, and migrate to using the datastore. See [#1499](https://github.com/google/site-kit-wp/issues/1499). +* Rename Analytics profiles to views consistently. See [#1486](https://github.com/google/site-kit-wp/issues/1486). +* Improve AdSense account status and site status detection logic to be more error-proof. See [#1332](https://github.com/google/site-kit-wp/issues/1332). +* Add user profile information and verification state to `core/user` datastore. See [#1176](https://github.com/google/site-kit-wp/issues/1176). +* Significantly improve stability and maintainability of AdSense module setup and settings. See [#1014](https://github.com/google/site-kit-wp/issues/1014). +* Clarify message for when user needs to reauthenticate to grant required scopes. See [#189](https://github.com/google/site-kit-wp/issues/189). + +**Fixed** + +* Ensure all module caches are cleared when modifying Analytics settings. See [#1593](https://github.com/google/site-kit-wp/issues/1593). +* Fix bugs where CTAs to link Analytics to AdSense would never show. See [#1545](https://github.com/google/site-kit-wp/issues/1545). +* Fix AdSense report URL to not include user-specific affix. See [#1516](https://github.com/google/site-kit-wp/issues/1516). +* Fix Search Console deep links to use the correct property identifier. See [#1497](https://github.com/google/site-kit-wp/issues/1497). +* Fix bug where having a graylisted AdSense account would prevent the AdSense code from being placed. See [#1494](https://github.com/google/site-kit-wp/issues/1494). + += 1.8.1 = + +**This release includes security fixes. An update is strongly recommended.** + +**Enhanced** + +* Check for users that verified through Site Kit without being authorized to do so, and disconnect them from Site Kit. See [#1573](https://github.com/google/site-kit-wp/issues/1573). +* Provide `application_name` query parameter to authentication service. See [#1571](https://github.com/google/site-kit-wp/issues/1571). + += 1.8.0 = + +**This release includes security fixes. An update is strongly recommended.** + +**Added** + +* Introduce standalone UI mode for plugin admin screens. Props EvanHerman. See [#1281](https://github.com/google/site-kit-wp/issues/1281). +* Introduce `modules/analytics` datastore for managing Analytics state in JS. See [#1224](https://github.com/google/site-kit-wp/issues/1224). +* Introduce `core/modules` datastore for managing module information and activation state. See [#1179](https://github.com/google/site-kit-wp/issues/1179). + +**Enhanced** + +* Preload REST API datapoints for `core/site` and `core/user` datastores to avoid firing these extra requests. See [#1478](https://github.com/google/site-kit-wp/issues/1478). +* Add support for new Optimize container IDs starting in `OPT-`. See [#1471](https://github.com/google/site-kit-wp/issues/1471). +* Improve alignment of dialog buttons. See [#1436](https://github.com/google/site-kit-wp/issues/1436). +* Rely on the default profile specified in an Analytics property for the profile to pre-select in the dropdown in Analytics setup/settings. See [#1404](https://github.com/google/site-kit-wp/issues/1404). +* Remove periods from single sentences in settings panel lists. See [#1401](https://github.com/google/site-kit-wp/issues/1401). +* Add `googlesitekit.data.combineStores` utility function to combine multiple datastore objects. See [#1400](https://github.com/google/site-kit-wp/issues/1400). +* Significantly improve stability and maintainability of Analytics module setup and settings. See [#1101](https://github.com/google/site-kit-wp/issues/1101). +* Update Analytics control for whether to place snippet to use a toggle instead of radio buttons for consistency. See [#1048](https://github.com/google/site-kit-wp/issues/1048). + +**Fixed** + +* Fix bug where Analytics would never request AdSense metrics even with a successful AdSense connection. See [#1524](https://github.com/google/site-kit-wp/issues/1524). +* Fix bug where `amp-auto-ads` snippet would not always be printed if the theme didn't support the `wp_body_open` action. See [#1495](https://github.com/google/site-kit-wp/issues/1495). +* Do not request remote notifications if the site is not connected to the remote. See [#1479](https://github.com/google/site-kit-wp/issues/1479). +* Update registered site name on authentication service when it is updated in WordPress. See [#1397](https://github.com/google/site-kit-wp/issues/1397). +* Display only paths instead of full URLs in Analytics tables for better visibility and consistency with Analytics frontend. See [#1116](https://github.com/google/site-kit-wp/issues/1116). +* Add missing translator comments to ease plugin localization for contributors. See [#820](https://github.com/google/site-kit-wp/issues/820). + += 1.7.1 = + +**Added** + +* Add notifications functionality to `core/site` datastore. See [#1174](https://github.com/google/site-kit-wp/issues/1174). + +**Enhanced** + +* Add `rollbackSettings` action to settings datastores and refine overall datastore infrastructure. See [#1375](https://github.com/google/site-kit-wp/issues/1375). +* Expand AdSense settings panel to expose more helpful information. See [#585](https://github.com/google/site-kit-wp/issues/585). + +**Fixed** + +* Fix bug where similar batch request to the API could occur multiple times. See [#1406](https://github.com/google/site-kit-wp/issues/1406). +* Fix bug where single post stats would display the unique visitors from Search for the overall site instead of only that post. Props phamquangbaoplus. See [#1371](https://github.com/google/site-kit-wp/issues/1371). +* Fix Analytics incorrectly triggering re-authentication notice when the user does not have any accounts. See [#1368](https://github.com/google/site-kit-wp/issues/1368). +* Fix JS datastore actions to never have an associated control and reducer at the same time. See [#1361](https://github.com/google/site-kit-wp/issues/1361). +* Place Tag Manager snippet for non-JavaScript support after opening `body` tag as commonly expected. Props ShahAaron. See [#1308](https://github.com/google/site-kit-wp/issues/1308). +* Fix layout issue in Tag Manager settings panel when no container is selected. See [#1296](https://github.com/google/site-kit-wp/issues/1296). +* Fix issue related to added `_gl` query parameter from AMP linker. Props ShahAaron. See [#1275](https://github.com/google/site-kit-wp/issues/1275). + += 1.7.0 = + +**Enhanced** + +* Allow modules to register and enqueue their own assets by implementing a `Module_With_Assets` interface. See [#1319](https://github.com/google/site-kit-wp/issues/1319). +* Decouple datastores from global registry by using `createRegistryControl` and `createRegistrySelector`. See [#1287](https://github.com/google/site-kit-wp/issues/1287). +* Update datastore resolvers to only issue API requests when lacking data. See [#1286](https://github.com/google/site-kit-wp/issues/1286). +* Add preloading middleware for REST API data and preload module settings routes on pageload. See [#1246](https://github.com/google/site-kit-wp/issues/1246). +* Add more granular selectors to the `core/site` datastore. See [#1173](https://github.com/google/site-kit-wp/issues/1173). +* Add several additional selectors for commonly used site data to the `core/site` datastore. See [#1000](https://github.com/google/site-kit-wp/issues/1000). + +**Fixed** + +* Fix bug where plugins modifying the site address during frontend requests would prevent the setup flow from being completed. See [#1357](https://github.com/google/site-kit-wp/issues/1357). +* Fix bug where `googlesitekit.api.set` would not pass through request data correctly to the API endpoints. See [#1346](https://github.com/google/site-kit-wp/issues/1346). +* Fix bug where using a WordPress locale with a third segment (e.g. formal variant) would cause JavaScript errors on some screens. See [#1309](https://github.com/google/site-kit-wp/issues/1309). +* Do not revoke token remotely when token is deleted, unless explicitly requested via disconnect. See [#1305](https://github.com/google/site-kit-wp/issues/1305). +* Fix unicode domains being displayed in punycode version in disconnect feedback message. See [#1297](https://github.com/google/site-kit-wp/issues/1297). +* Fix bug where certain numbers were rounded differently from how the respective Google service rounds them. See [#1279](https://github.com/google/site-kit-wp/issues/1279). +* Optimize JavaScript dependency loading, decreasing the chance of conflicts and reducing the plugin size. See [#1222](https://github.com/google/site-kit-wp/issues/1222). +* Ensure the total user count in the Analytics module matches the numbers displayed in the Google Analytics frontend. See [#1202](https://github.com/google/site-kit-wp/issues/1202). + += 1.6.0 = + +**Added** + +* Add support for reading and editing settings to datastores created via `googlesitekit.modules.createModuleStore`. See [#1249](https://github.com/google/site-kit-wp/issues/1249). +* Introduce `googlesitekit-modules` asset with `createModuleStore` function to create a base datastore for a Site Kit module. See [#1063](https://github.com/google/site-kit-wp/issues/1063). + +**Enhanced** + +* Ensure module settings are consistently passed from PHP to JavaScript, and fix some minor logic issues in the consuming JavaScript code. See [#1245](https://github.com/google/site-kit-wp/issues/1245). +* Automatically include a REST route to read and edit settings for every module that supports them. See [#1244](https://github.com/google/site-kit-wp/issues/1244). + +**Fixed** + +* Fix issue where users would get stuck on setup screen after seemingly successful completion of the setup flow on the authentication service. See [#1266](https://github.com/google/site-kit-wp/issues/1266). +* Provide clear error message informing the user when they did not grant the necessary permissions, instead of a generic `access_denied` error code. See [#1192](https://github.com/google/site-kit-wp/issues/1192). +* Fix JavaScript errors in AdSense screens that was a result of `Intl.NumberFormat.formatToParts` not being supported in Safari. See [#1107](https://github.com/google/site-kit-wp/issues/1107). +* Fix JavaScript error `e.replace is not a function` in AdSense screens related to formatting numbers. See [#1092](https://github.com/google/site-kit-wp/issues/1092). +* Fix problems around comparing domains with unicode characters that could result in blocking the plugin setup. See [#794](https://github.com/google/site-kit-wp/issues/794). + += 1.5.1 = + +**Fixed** + +* Ensure tracking opt-out mechanism works consistently between both Analytics and Tag Manager in AMP, and fix regression with Site Kit admin bar menu no longer expanding on AMP pages. See [#1251](https://github.com/google/site-kit-wp/issues/1251). + += 1.5.0 = + +**Added** + +* Expose `googlesitekit.data` registry and register initial `core/site` store on it. See [#999](https://github.com/google/site-kit-wp/issues/999). +* Add user-facing warnings to Site Kit areas when JavaScript is disabled. Props Shavindra. See [#177](https://github.com/google/site-kit-wp/issues/177). + +**Enhanced** + +* Standardize several REST API route names for consistency with JavaScript API. See [#1178](https://github.com/google/site-kit-wp/issues/1178). +* Fix various plugin setup issues related to inconsistent URLs by automatically updating registered URIs on the authentication service. See [#1034](https://github.com/google/site-kit-wp/issues/1034). +* Improve asset handling in PHP by introducing dedicated data-only scripts, to use as dependencies. See [#1004](https://github.com/google/site-kit-wp/issues/1004). +* Respect Analytics tracking exclusion of logged-in WordPress users also if Tag Manager is used. See [#944](https://github.com/google/site-kit-wp/issues/944). +* Integrate with WordPress Site Health feature to provide contextual Site Kit information for support and troubleshooting. See [#169](https://github.com/google/site-kit-wp/issues/169). + +**Changed** + +* Display helpful link in previously empty PageSpeed Insights settings area. See [#1129](https://github.com/google/site-kit-wp/issues/1129). +* Use latest product icon for the Optimize module. See [#969](https://github.com/google/site-kit-wp/issues/969). + +**Fixed** + +* Ensure date range selectors functionality is decoupled from localizable strings. See [#1183](https://github.com/google/site-kit-wp/issues/1183). +* Fix bugs where some untranslated strings would show despite being translated, caused by too early usage of these strings in JavaScript. See [#1163](https://github.com/google/site-kit-wp/issues/1163). +* Replace outdated AMP client ID mechanism for tracking AMP traffic with recommended AMP linker approach, and enable it by default. See [#1160](https://github.com/google/site-kit-wp/issues/1160). +* Fix compatibility error where `google.charts.load` was not called before `google.charts.setOnLoadCallback`. See [#1155](https://github.com/google/site-kit-wp/issues/1155). +* Do not show empty data table in Analytics module screen when there is no data to display. See [#464](https://github.com/google/site-kit-wp/issues/464). + += 1.4.0 = + +**Enhanced** + +* Introduce basic notifications system for information displayed in the Site Kit dashboard. See [#1110](https://github.com/google/site-kit-wp/issues/1110). +* Register all of the plugin's user options in WordPress via `register_meta()`. See [#1029](https://github.com/google/site-kit-wp/issues/1029). +* Improve JS error handling consistently across individual React apps and allow for better contextualization. See [#943](https://github.com/google/site-kit-wp/issues/943). +* Display information about lack of data instead of displaying empty top search queries box. Props Shavindra. See [#314](https://github.com/google/site-kit-wp/issues/314). +* Ensure admin bar displays when at least Search Console or Analytics have stats for the current URL. See [#167](https://github.com/google/site-kit-wp/issues/167). + +**Fixed** + +* Fix minor bug causing potentially incorrect token expiry to be recorded. See [#1158](https://github.com/google/site-kit-wp/issues/1158). +* Fix AMP violations when user is logged in and Site Kit admin bar menu is active. See [#1142](https://github.com/google/site-kit-wp/issues/1142). +* Fix incompatibility issue with Jetpack by resolving bug where the bundled `lodash` was causing a conflict. See [#1141](https://github.com/google/site-kit-wp/issues/1141). +* Fix double-rendered HTML markup on Site Kit dashboard screen. See [#1140](https://github.com/google/site-kit-wp/issues/1140). +* Fix misleading sparkline color for metrics that should use the inverted color, such as bounce rate. See [#1128](https://github.com/google/site-kit-wp/issues/1128). +* Work around [bug in ModSecurity](https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1451) by relying on only providing granted OAuth scopes in token API response. See [#1113](https://github.com/google/site-kit-wp/issues/1113). +* Make JS and CSS asset names consistent. Props Shavindra. See [#1040](https://github.com/google/site-kit-wp/issues/1040). +* Properly support paired AMP in Tag Manager module by allowing to select two different containers, one for `web` context and the other for `amp` context. Props kmwilkerson. See [#413](https://github.com/google/site-kit-wp/issues/413). +* Fix accessibility issues in dialog component with potentially duplicate IDs and invalid ARIA attributes. See [#345](https://github.com/google/site-kit-wp/issues/345). +* Fix issue where disconnecting a user from a site would disconnect that user from all their sites. + += 1.3.1 = + +**Fixed** + +* Ensure `opcache_reset()` exists before calling it. See [#1136](https://github.com/google/site-kit-wp/issues/1136). + += 1.3.0 = + +**Added** + +* Introduce `googlesitekit.data` registry for JS datastores. See [#997](https://github.com/google/site-kit-wp/issues/997). + +**Enhanced** + +* No longer delete plugin data when uninstalling and instead rely on the more explicit reset functionality. See [#1069](https://github.com/google/site-kit-wp/issues/1069). +* Remove legacy migrations that were only relevant to pre-1.0.0 users. See [#1062](https://github.com/google/site-kit-wp/issues/1062). +* Migrate stray module settings into object-like option for consistency and future scalability. See [#1030](https://github.com/google/site-kit-wp/issues/1030). +* Introduce `core/site/data/connection` REST API route for retrieving site connection info. See [#998](https://github.com/google/site-kit-wp/issues/998). +* Fully rely on Webpack for third-party dependencies and decouple from WordPress-shipped assets for more stability across all versions. See [#993](https://github.com/google/site-kit-wp/issues/993). +* Inform the site owner about potential issues with their site that will likely cause problems when setting up the plugin. See [#933](https://github.com/google/site-kit-wp/issues/933). +* Make opting in to tracking specific per user instead of per site. See [#913](https://github.com/google/site-kit-wp/issues/913). +* Bump minimum required PHP version to 5.6, rely on up-to-date linting tools and fix various PHPCS issues. See [#547](https://github.com/google/site-kit-wp/issues/547). +* Move REST route definitions into more applicable classes that handle the respective functionality. See [#166](https://github.com/google/site-kit-wp/issues/166). + +**Fixed** + +* Allow users with existing Tag Manager accounts to create additional accounts during module setup. See [#1080](https://github.com/google/site-kit-wp/issues/1080). +* Fix partly outdated PHP files being served due to OpCache issues [currently not addressed by WordPress core](https://core.trac.wordpress.org/ticket/36455). See [#1066](https://github.com/google/site-kit-wp/issues/1066). +* Prevent unexpected PageSpeed Insights API responses from breaking the dashboard. See [#1061](https://github.com/google/site-kit-wp/issues/1061). +* Standardize GA tracking snippets and inconsistent data passed in events by introducing a proper tracking API in JavaScript. See [#1055](https://github.com/google/site-kit-wp/issues/1055). +* Fix several temporary blank screen errors by loading script dependencies more reliably via Webpack. See [#1054](https://github.com/google/site-kit-wp/issues/1054). +* Ensure that the Tag Manager snippet rendered is always compatible with the current context (AMP vs non-AMP). See [#1036](https://github.com/google/site-kit-wp/issues/1036). +* Do not render `amp-auto-ads` element in AMP stories because it is invalid in that context. See [#979](https://github.com/google/site-kit-wp/issues/979). +* Ensure that Google Charts JS library is loaded as expected even when a `window.google` global already exists because of another library. See [#939](https://github.com/google/site-kit-wp/issues/939). +* Do not refetch PageSpeed Insights data when the date range selector is changed, as its data its date-unaware. See [#890](https://github.com/google/site-kit-wp/issues/890). +* Fix incorrect change arrow direction and color on "inverted" properties like bounce rate. Props WebFactoryLtd. See [#481](https://github.com/google/site-kit-wp/issues/481). +* Add missing support for Search Console domain properties and rely on the correct property when requesting Search Console data. Props IgorCode. See [#325](https://github.com/google/site-kit-wp/issues/325). + += 1.2.0 = + +**Added** + +* Introduce new `googlesitekit.api` layer for accessing Site Kit datapoints with reliable caching. See [#953](https://github.com/google/site-kit-wp/issues/953). +* Detect already existing Tag Manager snippets from other sources and inform about them in the setup flow. See [#433](https://github.com/google/site-kit-wp/issues/433). + +**Enhanced** + +* Introduce Site Kit-specific `Google_Client` implementation and use that throughout the codebase. See [#1003](https://github.com/google/site-kit-wp/issues/1003). +* Reduce maintenance by implementing dynamic activation notice in React. See [#991](https://github.com/google/site-kit-wp/issues/991). +* Include platform and plugin version information in API client requests. See [#989](https://github.com/google/site-kit-wp/issues/989). +* Ensure that all module settings are properly registered in WordPress for consistent behavior. See [#859](https://github.com/google/site-kit-wp/issues/859). +* Allow users to rely on `WP_PROXY_*` constants to use an HTTP proxy for requests issued by `Google_Client`. See [#661](https://github.com/google/site-kit-wp/issues/661). +* Allow users that have existing Google Analytics account to create a new account in module setup and settings. See [#198](https://github.com/google/site-kit-wp/issues/198). +* Remove very limited debug bar integration for now. See [#178](https://github.com/google/site-kit-wp/issues/178). + +**Fixed** + +* Fix bug and potential JavaScript error where user was able to select Analytics property before selecting an account. See [#1039](https://github.com/google/site-kit-wp/issues/1039). +* Optimize initialization of the Google API client and minimize JavaScript assets and inline data being loaded in regular requests. See [#980](https://github.com/google/site-kit-wp/issues/980). +* Fix Search Console average position graph to show the smallest value on top of the Y axis. Props connorhsm. See [#874](https://github.com/google/site-kit-wp/issues/874). +* Display warnings about insufficient scopes across all Site Kit screens instead of only the dashboard, since they are just as relevant during setup. See [#729](https://github.com/google/site-kit-wp/issues/729). +* Ensure that PageSpeed Insights module can be deactivated again once activated. See [#682](https://github.com/google/site-kit-wp/issues/682). + += 1.1.4 = + +**Enhanced** + +* Improve compatibility with WordPress VIP environment. Props moraleida. See [#901](https://github.com/google/site-kit-wp/issues/901). +* Update wording on setup screen for secondary users to clarify they need to connect their account, but not set up the plugin. See [#881](https://github.com/google/site-kit-wp/issues/881). +* Use OAuth `login_hint` parameter to indicate that the user should use the same Google account across all modules. See [#867](https://github.com/google/site-kit-wp/issues/867). +* Anonymize IP addresses by default in Google Analytics snippet, and grant the user control to modify with a new setting. Props gx10. See [#18](https://github.com/google/site-kit-wp/issues/18). + +**Fixed** + +* Fix compatibility issues with older versions of the AMP plugin. See [#975](https://github.com/google/site-kit-wp/issues/975). +* Ensure that only options and user options starting with `googlesitekit_` (including underscore) are deleted on reset or disconnect. See [#968](https://github.com/google/site-kit-wp/issues/968). +* Optimize disconnecting users by only running a single database query. See [#960](https://github.com/google/site-kit-wp/issues/960). +* Ensure Site Kit admin bar content is styled independently from the current theme. See [#888](https://github.com/google/site-kit-wp/issues/888). +* Fix bug in Analytics module setup where the user would not be informed about an existing tag before selecting a property. See [#803](https://github.com/google/site-kit-wp/issues/803). +* Fix bug where admin bar stats would not display under certain circumstances when editing a post in the backend. See [#521](https://github.com/google/site-kit-wp/issues/521). +* Display impressions before clicks in admin bar as that is the commonly expected order. See [#297](https://github.com/google/site-kit-wp/issues/297). + += 1.1.3 = + +**Fixed** + +* Fix critical AdSense issue where users were not able to place the snippet and would end up on a blank screen under certain conditions. See [#891](https://github.com/google/site-kit-wp/issues/891). + += 1.1.2 = + +**Enhanced** + +* Introduce new mechanism for a site to receive its credentials from the authentication service, replacing the previous mechanism using the REST API that was error-prone on certain environments. See [#905](https://github.com/google/site-kit-wp/issues/905). + +**Fixed** + +* Remove unnecessary logic to refresh an access token on login, since the Google API client already accounts for that. See [#903](https://github.com/google/site-kit-wp/issues/903). +* Fix too long request URLs for Google API batch requests to use `POST` instead, as the query length was problematic on certain environments. Props sksaju. See [#779](https://github.com/google/site-kit-wp/issues/779). +* Fix bug resulting in blank plugin dashboard screen under certain circumstances. Props ThomasTr. See [#767](https://github.com/google/site-kit-wp/issues/767). +* Ensure that opting in or out of tracking takes effect immediately. See [#727](https://github.com/google/site-kit-wp/issues/727). +* Fix spacing issue in Search Console step for local development setup. See [#637](https://github.com/google/site-kit-wp/issues/637). +* Fix display of the disconnect modal which could potentially appear below the "section locked" indicator in the plugin settings UI. See [#636](https://github.com/google/site-kit-wp/issues/636). + += 1.1.1 = + +**Fixed** + +* Fix reset and uninstall data removal by optimizing database queries. See [#809](https://github.com/google/site-kit-wp/issues/809). + += 1.1.0 = + +**Enhanced** + +* Update usage of G icon in admin menu, dashboard widget and screen options to align better with WordPress admin UI. See [#877](https://github.com/google/site-kit-wp/issues/877). +* Add support for site verification via file as primary method while keeping site verification via meta tag as fallback, resolving potential site verification failures. See [#836](https://github.com/google/site-kit-wp/issues/836). +* Move checkbox above submit button in setup screen and banner for better accessibility. See [#788](https://github.com/google/site-kit-wp/issues/788). +* Use more secure nonce generation mechanism for the authentication service. See [#756](https://github.com/google/site-kit-wp/issues/756). +* Show PageSpeed Insights performance stats for every individual URL in its details view, accessible from Site Kit dashboard and admin bar. See [#654](https://github.com/google/site-kit-wp/issues/654). +* Display Tag Manager container names instead of IDs in dropdowns for more user-friendly selection. See [#591](https://github.com/google/site-kit-wp/issues/591). +* Remove redundant notification title for AdSense notifications. Props OisinOConnor. See [#586](https://github.com/google/site-kit-wp/issues/586). +* Always use root domain for AdSense site because subdomains are typically not supported. Props OisinOConnor. See [#578](https://github.com/google/site-kit-wp/issues/578). +* Add support for displaying the full Site Kit admin bar menu with stats also for AMP requests, by leveraging AMP's dev mode feature. See [#438](https://github.com/google/site-kit-wp/issues/438). +* Simplify AdSense account status detection as a base for easier future enhancements and fixes. See [#427](https://github.com/google/site-kit-wp/issues/427). +* Add a checkbox to allow disabling Analytics tracking for logged-in users, and introduce a filter to adjust the behavior programmatically. Props Paras16699. See [#88](https://github.com/google/site-kit-wp/issues/88). + +**Fixed** + +* Ensure that a newly created Tag Manager container is properly saved so that the module setup is completed. See [#821](https://github.com/google/site-kit-wp/issues/821). +* Improve detection of existing AdSense snippets to cover more variants of snippets. See [#798](https://github.com/google/site-kit-wp/issues/798). +* Only display the Reset button on the setup screen if there actually is something to reset, and provide a feedback notice. See [#758](https://github.com/google/site-kit-wp/issues/758). +* Update incorrect message in development setup flow referring to site verification instead of Search Console. Props AVGP. See [#600](https://github.com/google/site-kit-wp/issues/600). +* Only show Tag Manager containers that are relevant to the site's mode, and accordingly support AMP-first by only exposing AMP containers. See [#470](https://github.com/google/site-kit-wp/issues/470). + += 1.0.4 = + +**Fixed** + +* Fix critical bug causing unnecessary requests to Google People API although no user is logged-in. See [#854](https://github.com/google/site-kit-wp/issues/854). + += 1.0.3 = + +**Fixed** + +* Fix critical issue where an invalid refresh token would not revoke the current token, resulting in recurring requests with further attempts. See [#831](https://github.com/google/site-kit-wp/issues/831). +* Fix REST request sending credentials potentially being blocked due to user agent. + += 1.0.2 = + +**Enhanced** + +* Introduce Jest for JS unit tests, migrate existing tests, and improve various related infrastructure components. See [#524](https://github.com/google/site-kit-wp/issues/524). + +**Fixed** + +* Do not disconnect user when refreshing an access token randomly fails, and ensure the user sees an error message about any errors during the process. See [#818](https://github.com/google/site-kit-wp/issues/818). +* Fix error that could occur when setting up a new Analytics profile from the module setup. See [#816](https://github.com/google/site-kit-wp/issues/816). +* Fix bug where the site verification nonce was not sent to the authentication service. See [#797](https://github.com/google/site-kit-wp/issues/797). +* Fix false positive when detecting existing Analytics tags, which previously blocked users from completing the module setup. See [#793](https://github.com/google/site-kit-wp/issues/793). +* Ensure that `google-site-kit` translation strings in JavaScript files are maintained after minification so that they can be translated on wordpress.org. See [#782](https://github.com/google/site-kit-wp/issues/782). +* Improve various translation strings by removing trailing spaces, adding a context, fixing capitalization, and more. Props pedro-mendonca. See [#769](https://github.com/google/site-kit-wp/issues/769). +* Remove irrelevant translation strings from codebase by eliminating `@wordpress/components` dependency. See [#759](https://github.com/google/site-kit-wp/issues/759). +* Improve detection of existing Analytics snippet by covering a further variant that is used e.g. by the Analytify plugin. Props ernee. See [#744](https://github.com/google/site-kit-wp/issues/744). +* Improve UX and fix performance issues with excessive re-rendering in the module settings screen. See [#742](https://github.com/google/site-kit-wp/issues/742). +* Fix style issues in various data tables which previously would break out of their parent containers on certain device widths. See [#480](https://github.com/google/site-kit-wp/issues/480). +* Fix `Unknown error (code: checking requirements failed).` by resolving quota issues on the authentication service. +* Improve stability of REST API request issued by the authentication service when setting up a new site. +* Fix `Method not allowed` error on the authentication service. + += 1.0.1 = + +**Fixed** + +* Ensure verification tokens and other plugin user data correctly get cleared when resetting the plugin before the user has authenticated. See [#771](https://github.com/google/site-kit-wp/issues/771). +* Fix bug where the verification tag sent from the service to the plugin would result in a 404 response, preventing the verification from being completed. Props theeducatedbarfly. See [#765](https://github.com/google/site-kit-wp/issues/765). +* Improve compatibility with sites that have a `http://` website address stored as `home_url`, but actually require HTTPS. Props drcrow. See [#760](https://github.com/google/site-kit-wp/issues/760). + += 1.0.0 = + +**Enhanced** + +* Display a reset button alongside the setup button so that the plugin can also be reset before completing the initial flow. See [#753](https://github.com/google/site-kit-wp/issues/753). +* Remove custom updater to instead fully rely on wordpress.org. See [#644](https://github.com/google/site-kit-wp/issues/644). + +**Fixed** + +* Correctly disconnect the user when revoking access from the proxy, and update the wording accordingly. See [#724](https://github.com/google/site-kit-wp/issues/724). +* Show error message in PageSpeed Insights widget when API response incorrectly comes back with a score of 0. See [#723](https://github.com/google/site-kit-wp/issues/723). diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/BeforeValidException.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/BeforeValidException.php new file mode 100644 index 000000000..528ea1dfc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/BeforeValidException.php @@ -0,0 +1,7 @@ + + * @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD + * @link https://github.com/firebase/php-jwt + */ +class JWK +{ + /** + * Parse a set of JWK keys + * + * @param array $jwks The JSON Web Key Set as an associative array + * + * @return array An associative array that represents the set of keys + * + * @throws InvalidArgumentException Provided JWK Set is empty + * @throws UnexpectedValueException Provided JWK Set was invalid + * @throws DomainException OpenSSL failure + * + * @uses parseKey + */ + public static function parseKeySet(array $jwks) + { + $keys = array(); + if (!isset($jwks['keys'])) { + throw new \UnexpectedValueException('"keys" member must exist in the JWK Set'); + } + if (empty($jwks['keys'])) { + throw new \InvalidArgumentException('JWK Set did not contain any keys'); + } + foreach ($jwks['keys'] as $k => $v) { + $kid = isset($v['kid']) ? $v['kid'] : $k; + if ($key = self::parseKey($v)) { + $keys[$kid] = $key; + } + } + if (0 === \count($keys)) { + throw new \UnexpectedValueException('No supported algorithms found in JWK Set'); + } + return $keys; + } + /** + * Parse a JWK key + * + * @param array $jwk An individual JWK + * + * @return resource|array An associative array that represents the key + * + * @throws InvalidArgumentException Provided JWK is empty + * @throws UnexpectedValueException Provided JWK was invalid + * @throws DomainException OpenSSL failure + * + * @uses createPemFromModulusAndExponent + */ + public static function parseKey(array $jwk) + { + if (empty($jwk)) { + throw new \InvalidArgumentException('JWK must not be empty'); + } + if (!isset($jwk['kty'])) { + throw new \UnexpectedValueException('JWK must contain a "kty" parameter'); + } + switch ($jwk['kty']) { + case 'RSA': + if (!empty($jwk['d'])) { + throw new \UnexpectedValueException('RSA private keys are not supported'); + } + if (!isset($jwk['n']) || !isset($jwk['e'])) { + throw new \UnexpectedValueException('RSA keys must contain values for both "n" and "e"'); + } + $pem = self::createPemFromModulusAndExponent($jwk['n'], $jwk['e']); + $publicKey = \openssl_pkey_get_public($pem); + if (\false === $publicKey) { + throw new \DomainException('OpenSSL error: ' . \openssl_error_string()); + } + return $publicKey; + default: + // Currently only RSA is supported + break; + } + } + /** + * Create a public key represented in PEM format from RSA modulus and exponent information + * + * @param string $n The RSA modulus encoded in Base64 + * @param string $e The RSA exponent encoded in Base64 + * + * @return string The RSA public key represented in PEM format + * + * @uses encodeLength + */ + private static function createPemFromModulusAndExponent($n, $e) + { + $modulus = \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::urlsafeB64Decode($n); + $publicExponent = \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::urlsafeB64Decode($e); + $components = array('modulus' => \pack('Ca*a*', 2, self::encodeLength(\strlen($modulus)), $modulus), 'publicExponent' => \pack('Ca*a*', 2, self::encodeLength(\strlen($publicExponent)), $publicExponent)); + $rsaPublicKey = \pack('Ca*a*a*', 48, self::encodeLength(\strlen($components['modulus']) + \strlen($components['publicExponent'])), $components['modulus'], $components['publicExponent']); + // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption. + $rsaOID = \pack('H*', '300d06092a864886f70d0101010500'); + // hex version of MA0GCSqGSIb3DQEBAQUA + $rsaPublicKey = \chr(0) . $rsaPublicKey; + $rsaPublicKey = \chr(3) . self::encodeLength(\strlen($rsaPublicKey)) . $rsaPublicKey; + $rsaPublicKey = \pack('Ca*a*', 48, self::encodeLength(\strlen($rsaOID . $rsaPublicKey)), $rsaOID . $rsaPublicKey); + $rsaPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . \chunk_split(\base64_encode($rsaPublicKey), 64) . '-----END PUBLIC KEY-----'; + return $rsaPublicKey; + } + /** + * DER-encode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information. + * + * @param int $length + * @return string + */ + private static function encodeLength($length) + { + if ($length <= 0x7f) { + return \chr($length); + } + $temp = \ltrim(\pack('N', $length), \chr(0)); + return \pack('Ca*', 0x80 | \strlen($temp), $temp); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/JWT.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/JWT.php new file mode 100644 index 000000000..83e230700 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/JWT.php @@ -0,0 +1,519 @@ + + * @author Anant Narayanan + * @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD + * @link https://github.com/firebase/php-jwt + */ +class JWT +{ + const ASN1_INTEGER = 0x2; + const ASN1_SEQUENCE = 0x10; + const ASN1_BIT_STRING = 0x3; + /** + * When checking nbf, iat or expiration times, + * we want to provide some extra leeway time to + * account for clock skew. + */ + public static $leeway = 0; + /** + * Allow the current timestamp to be specified. + * Useful for fixing a value within unit testing. + * + * Will default to PHP time() value if null. + */ + public static $timestamp = null; + public static $supported_algs = array('ES384' => array('openssl', 'SHA384'), 'ES256' => array('openssl', 'SHA256'), 'HS256' => array('hash_hmac', 'SHA256'), 'HS384' => array('hash_hmac', 'SHA384'), 'HS512' => array('hash_hmac', 'SHA512'), 'RS256' => array('openssl', 'SHA256'), 'RS384' => array('openssl', 'SHA384'), 'RS512' => array('openssl', 'SHA512'), 'EdDSA' => array('sodium_crypto', 'EdDSA')); + /** + * Decodes a JWT string into a PHP object. + * + * @param string $jwt The JWT + * @param Key|array|mixed $keyOrKeyArray The Key or array of Key objects. + * If the algorithm used is asymmetric, this is the public key + * Each Key object contains an algorithm and matching key. + * Supported algorithms are 'ES384','ES256', 'HS256', 'HS384', + * 'HS512', 'RS256', 'RS384', and 'RS512' + * @param array $allowed_algs [DEPRECATED] List of supported verification algorithms. Only + * should be used for backwards compatibility. + * + * @return object The JWT's payload as a PHP object + * + * @throws InvalidArgumentException Provided JWT was empty + * @throws UnexpectedValueException Provided JWT was invalid + * @throws SignatureInvalidException Provided JWT was invalid because the signature verification failed + * @throws BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf' + * @throws BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat' + * @throws ExpiredException Provided JWT has since expired, as defined by the 'exp' claim + * + * @uses jsonDecode + * @uses urlsafeB64Decode + */ + public static function decode($jwt, $keyOrKeyArray, array $allowed_algs = array()) + { + $timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp; + if (empty($keyOrKeyArray)) { + throw new \InvalidArgumentException('Key may not be empty'); + } + $tks = \explode('.', $jwt); + if (\count($tks) != 3) { + throw new \UnexpectedValueException('Wrong number of segments'); + } + list($headb64, $bodyb64, $cryptob64) = $tks; + if (null === ($header = static::jsonDecode(static::urlsafeB64Decode($headb64)))) { + throw new \UnexpectedValueException('Invalid header encoding'); + } + if (null === ($payload = static::jsonDecode(static::urlsafeB64Decode($bodyb64)))) { + throw new \UnexpectedValueException('Invalid claims encoding'); + } + if (\false === ($sig = static::urlsafeB64Decode($cryptob64))) { + throw new \UnexpectedValueException('Invalid signature encoding'); + } + if (empty($header->alg)) { + throw new \UnexpectedValueException('Empty algorithm'); + } + if (empty(static::$supported_algs[$header->alg])) { + throw new \UnexpectedValueException('Algorithm not supported'); + } + list($keyMaterial, $algorithm) = self::getKeyMaterialAndAlgorithm($keyOrKeyArray, empty($header->kid) ? null : $header->kid); + if (empty($algorithm)) { + // Use deprecated "allowed_algs" to determine if the algorithm is supported. + // This opens up the possibility of an attack in some implementations. + // @see https://github.com/firebase/php-jwt/issues/351 + if (!\in_array($header->alg, $allowed_algs)) { + throw new \UnexpectedValueException('Algorithm not allowed'); + } + } else { + // Check the algorithm + if (!self::constantTimeEquals($algorithm, $header->alg)) { + // See issue #351 + throw new \UnexpectedValueException('Incorrect key for this algorithm'); + } + } + if ($header->alg === 'ES256' || $header->alg === 'ES384') { + // OpenSSL expects an ASN.1 DER sequence for ES256/ES384 signatures + $sig = self::signatureToDER($sig); + } + if (!static::verify("{$headb64}.{$bodyb64}", $sig, $keyMaterial, $header->alg)) { + throw new \Google\Site_Kit_Dependencies\Firebase\JWT\SignatureInvalidException('Signature verification failed'); + } + // Check the nbf if it is defined. This is the time that the + // token can actually be used. If it's not yet that time, abort. + if (isset($payload->nbf) && $payload->nbf > $timestamp + static::$leeway) { + throw new \Google\Site_Kit_Dependencies\Firebase\JWT\BeforeValidException('Cannot handle token prior to ' . \date(\DateTime::ISO8601, $payload->nbf)); + } + // Check that this token has been created before 'now'. This prevents + // using tokens that have been created for later use (and haven't + // correctly used the nbf claim). + if (isset($payload->iat) && $payload->iat > $timestamp + static::$leeway) { + throw new \Google\Site_Kit_Dependencies\Firebase\JWT\BeforeValidException('Cannot handle token prior to ' . \date(\DateTime::ISO8601, $payload->iat)); + } + // Check if this token has expired. + if (isset($payload->exp) && $timestamp - static::$leeway >= $payload->exp) { + throw new \Google\Site_Kit_Dependencies\Firebase\JWT\ExpiredException('Expired token'); + } + return $payload; + } + /** + * Converts and signs a PHP object or array into a JWT string. + * + * @param object|array $payload PHP object or array + * @param string|resource $key The secret key. + * If the algorithm used is asymmetric, this is the private key + * @param string $alg The signing algorithm. + * Supported algorithms are 'ES384','ES256', 'HS256', 'HS384', + * 'HS512', 'RS256', 'RS384', and 'RS512' + * @param mixed $keyId + * @param array $head An array with header elements to attach + * + * @return string A signed JWT + * + * @uses jsonEncode + * @uses urlsafeB64Encode + */ + public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null) + { + $header = array('typ' => 'JWT', 'alg' => $alg); + if ($keyId !== null) { + $header['kid'] = $keyId; + } + if (isset($head) && \is_array($head)) { + $header = \array_merge($head, $header); + } + $segments = array(); + $segments[] = static::urlsafeB64Encode(static::jsonEncode($header)); + $segments[] = static::urlsafeB64Encode(static::jsonEncode($payload)); + $signing_input = \implode('.', $segments); + $signature = static::sign($signing_input, $key, $alg); + $segments[] = static::urlsafeB64Encode($signature); + return \implode('.', $segments); + } + /** + * Sign a string with a given key and algorithm. + * + * @param string $msg The message to sign + * @param string|resource $key The secret key + * @param string $alg The signing algorithm. + * Supported algorithms are 'ES384','ES256', 'HS256', 'HS384', + * 'HS512', 'RS256', 'RS384', and 'RS512' + * + * @return string An encrypted message + * + * @throws DomainException Unsupported algorithm or bad key was specified + */ + public static function sign($msg, $key, $alg = 'HS256') + { + if (empty(static::$supported_algs[$alg])) { + throw new \DomainException('Algorithm not supported'); + } + list($function, $algorithm) = static::$supported_algs[$alg]; + switch ($function) { + case 'hash_hmac': + return \hash_hmac($algorithm, $msg, $key, \true); + case 'openssl': + $signature = ''; + $success = \openssl_sign($msg, $signature, $key, $algorithm); + if (!$success) { + throw new \DomainException("OpenSSL unable to sign data"); + } + if ($alg === 'ES256') { + $signature = self::signatureFromDER($signature, 256); + } elseif ($alg === 'ES384') { + $signature = self::signatureFromDER($signature, 384); + } + return $signature; + case 'sodium_crypto': + if (!\function_exists('sodium_crypto_sign_detached')) { + throw new \DomainException('libsodium is not available'); + } + try { + // The last non-empty line is used as the key. + $lines = \array_filter(\explode("\n", $key)); + $key = \base64_decode(\end($lines)); + return \sodium_crypto_sign_detached($msg, $key); + } catch (\Exception $e) { + throw new \DomainException($e->getMessage(), 0, $e); + } + } + } + /** + * Verify a signature with the message, key and method. Not all methods + * are symmetric, so we must have a separate verify and sign method. + * + * @param string $msg The original message (header and body) + * @param string $signature The original signature + * @param string|resource $key For HS*, a string key works. for RS*, must be a resource of an openssl public key + * @param string $alg The algorithm + * + * @return bool + * + * @throws DomainException Invalid Algorithm, bad key, or OpenSSL failure + */ + private static function verify($msg, $signature, $key, $alg) + { + if (empty(static::$supported_algs[$alg])) { + throw new \DomainException('Algorithm not supported'); + } + list($function, $algorithm) = static::$supported_algs[$alg]; + switch ($function) { + case 'openssl': + $success = \openssl_verify($msg, $signature, $key, $algorithm); + if ($success === 1) { + return \true; + } elseif ($success === 0) { + return \false; + } + // returns 1 on success, 0 on failure, -1 on error. + throw new \DomainException('OpenSSL error: ' . \openssl_error_string()); + case 'sodium_crypto': + if (!\function_exists('sodium_crypto_sign_verify_detached')) { + throw new \DomainException('libsodium is not available'); + } + try { + // The last non-empty line is used as the key. + $lines = \array_filter(\explode("\n", $key)); + $key = \base64_decode(\end($lines)); + return \sodium_crypto_sign_verify_detached($signature, $msg, $key); + } catch (\Exception $e) { + throw new \DomainException($e->getMessage(), 0, $e); + } + case 'hash_hmac': + default: + $hash = \hash_hmac($algorithm, $msg, $key, \true); + return self::constantTimeEquals($signature, $hash); + } + } + /** + * Decode a JSON string into a PHP object. + * + * @param string $input JSON string + * + * @return object Object representation of JSON string + * + * @throws DomainException Provided string was invalid JSON + */ + public static function jsonDecode($input) + { + if (\version_compare(\PHP_VERSION, '5.4.0', '>=') && !(\defined('Google\\Site_Kit_Dependencies\\JSON_C_VERSION') && \PHP_INT_SIZE > 4)) { + /** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you + * to specify that large ints (like Steam Transaction IDs) should be treated as + * strings, rather than the PHP default behaviour of converting them to floats. + */ + $obj = \json_decode($input, \false, 512, \JSON_BIGINT_AS_STRING); + } else { + /** Not all servers will support that, however, so for older versions we must + * manually detect large ints in the JSON string and quote them (thus converting + *them to strings) before decoding, hence the preg_replace() call. + */ + $max_int_length = \strlen((string) \PHP_INT_MAX) - 1; + $json_without_bigints = \preg_replace('/:\\s*(-?\\d{' . $max_int_length . ',})/', ': "$1"', $input); + $obj = \json_decode($json_without_bigints); + } + if ($errno = \json_last_error()) { + static::handleJsonError($errno); + } elseif ($obj === null && $input !== 'null') { + throw new \DomainException('Null result with non-null input'); + } + return $obj; + } + /** + * Encode a PHP object into a JSON string. + * + * @param object|array $input A PHP object or array + * + * @return string JSON representation of the PHP object or array + * + * @throws DomainException Provided object could not be encoded to valid JSON + */ + public static function jsonEncode($input) + { + $json = \json_encode($input); + if ($errno = \json_last_error()) { + static::handleJsonError($errno); + } elseif ($json === 'null' && $input !== null) { + throw new \DomainException('Null result with non-null input'); + } + return $json; + } + /** + * Decode a string with URL-safe Base64. + * + * @param string $input A Base64 encoded string + * + * @return string A decoded string + */ + public static function urlsafeB64Decode($input) + { + $remainder = \strlen($input) % 4; + if ($remainder) { + $padlen = 4 - $remainder; + $input .= \str_repeat('=', $padlen); + } + return \base64_decode(\strtr($input, '-_', '+/')); + } + /** + * Encode a string with URL-safe Base64. + * + * @param string $input The string you want encoded + * + * @return string The base64 encode of what you passed in + */ + public static function urlsafeB64Encode($input) + { + return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_')); + } + /** + * Determine if an algorithm has been provided for each Key + * + * @param Key|array|mixed $keyOrKeyArray + * @param string|null $kid + * + * @throws UnexpectedValueException + * + * @return array containing the keyMaterial and algorithm + */ + private static function getKeyMaterialAndAlgorithm($keyOrKeyArray, $kid = null) + { + if (\is_string($keyOrKeyArray) || \is_resource($keyOrKeyArray) || $keyOrKeyArray instanceof \OpenSSLAsymmetricKey) { + return array($keyOrKeyArray, null); + } + if ($keyOrKeyArray instanceof \Google\Site_Kit_Dependencies\Firebase\JWT\Key) { + return array($keyOrKeyArray->getKeyMaterial(), $keyOrKeyArray->getAlgorithm()); + } + if (\is_array($keyOrKeyArray) || $keyOrKeyArray instanceof \ArrayAccess) { + if (!isset($kid)) { + throw new \UnexpectedValueException('"kid" empty, unable to lookup correct key'); + } + if (!isset($keyOrKeyArray[$kid])) { + throw new \UnexpectedValueException('"kid" invalid, unable to lookup correct key'); + } + $key = $keyOrKeyArray[$kid]; + if ($key instanceof \Google\Site_Kit_Dependencies\Firebase\JWT\Key) { + return array($key->getKeyMaterial(), $key->getAlgorithm()); + } + return array($key, null); + } + throw new \UnexpectedValueException('$keyOrKeyArray must be a string|resource key, an array of string|resource keys, ' . 'an instance of Firebase\\JWT\\Key key or an array of Firebase\\JWT\\Key keys'); + } + /** + * @param string $left + * @param string $right + * @return bool + */ + public static function constantTimeEquals($left, $right) + { + if (\function_exists('hash_equals')) { + return \hash_equals($left, $right); + } + $len = \min(static::safeStrlen($left), static::safeStrlen($right)); + $status = 0; + for ($i = 0; $i < $len; $i++) { + $status |= \ord($left[$i]) ^ \ord($right[$i]); + } + $status |= static::safeStrlen($left) ^ static::safeStrlen($right); + return $status === 0; + } + /** + * Helper method to create a JSON error. + * + * @param int $errno An error number from json_last_error() + * + * @return void + */ + private static function handleJsonError($errno) + { + $messages = array(\JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', \JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON', \JSON_ERROR_CTRL_CHAR => 'Unexpected control character found', \JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON', \JSON_ERROR_UTF8 => 'Malformed UTF-8 characters'); + throw new \DomainException(isset($messages[$errno]) ? $messages[$errno] : 'Unknown JSON error: ' . $errno); + } + /** + * Get the number of bytes in cryptographic strings. + * + * @param string $str + * + * @return int + */ + private static function safeStrlen($str) + { + if (\function_exists('mb_strlen')) { + return \mb_strlen($str, '8bit'); + } + return \strlen($str); + } + /** + * Convert an ECDSA signature to an ASN.1 DER sequence + * + * @param string $sig The ECDSA signature to convert + * @return string The encoded DER object + */ + private static function signatureToDER($sig) + { + // Separate the signature into r-value and s-value + list($r, $s) = \str_split($sig, (int) (\strlen($sig) / 2)); + // Trim leading zeros + $r = \ltrim($r, "\0"); + $s = \ltrim($s, "\0"); + // Convert r-value and s-value from unsigned big-endian integers to + // signed two's complement + if (\ord($r[0]) > 0x7f) { + $r = "\0" . $r; + } + if (\ord($s[0]) > 0x7f) { + $s = "\0" . $s; + } + return self::encodeDER(self::ASN1_SEQUENCE, self::encodeDER(self::ASN1_INTEGER, $r) . self::encodeDER(self::ASN1_INTEGER, $s)); + } + /** + * Encodes a value into a DER object. + * + * @param int $type DER tag + * @param string $value the value to encode + * @return string the encoded object + */ + private static function encodeDER($type, $value) + { + $tag_header = 0; + if ($type === self::ASN1_SEQUENCE) { + $tag_header |= 0x20; + } + // Type + $der = \chr($tag_header | $type); + // Length + $der .= \chr(\strlen($value)); + return $der . $value; + } + /** + * Encodes signature from a DER object. + * + * @param string $der binary signature in DER format + * @param int $keySize the number of bits in the key + * @return string the signature + */ + private static function signatureFromDER($der, $keySize) + { + // OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE + list($offset, $_) = self::readDER($der); + list($offset, $r) = self::readDER($der, $offset); + list($offset, $s) = self::readDER($der, $offset); + // Convert r-value and s-value from signed two's compliment to unsigned + // big-endian integers + $r = \ltrim($r, "\0"); + $s = \ltrim($s, "\0"); + // Pad out r and s so that they are $keySize bits long + $r = \str_pad($r, $keySize / 8, "\0", \STR_PAD_LEFT); + $s = \str_pad($s, $keySize / 8, "\0", \STR_PAD_LEFT); + return $r . $s; + } + /** + * Reads binary DER-encoded data and decodes into a single object + * + * @param string $der the binary data in DER format + * @param int $offset the offset of the data stream containing the object + * to decode + * @return array [$offset, $data] the new offset and the decoded object + */ + private static function readDER($der, $offset = 0) + { + $pos = $offset; + $size = \strlen($der); + $constructed = \ord($der[$pos]) >> 5 & 0x1; + $type = \ord($der[$pos++]) & 0x1f; + // Length + $len = \ord($der[$pos++]); + if ($len & 0x80) { + $n = $len & 0x1f; + $len = 0; + while ($n-- && $pos < $size) { + $len = $len << 8 | \ord($der[$pos++]); + } + } + // Value + if ($type == self::ASN1_BIT_STRING) { + $pos++; + // Skip the first contents octet (padding indicator) + $data = \substr($der, $pos, $len - 1); + $pos += $len - 1; + } elseif (!$constructed) { + $data = \substr($der, $pos, $len); + $pos += $len; + } else { + $data = null; + } + return array($pos, $data); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/Key.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/Key.php new file mode 100644 index 000000000..8c6df511a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/Key.php @@ -0,0 +1,47 @@ +keyMaterial = $keyMaterial; + $this->algorithm = $algorithm; + } + /** + * Return the algorithm valid for this key + * + * @return string + */ + public function getAlgorithm() + { + return $this->algorithm; + } + /** + * @return string|resource|OpenSSLAsymmetricKey + */ + public function getKeyMaterial() + { + return $this->keyMaterial; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/SignatureInvalidException.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/SignatureInvalidException.php new file mode 100644 index 000000000..9859c306d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/SignatureInvalidException.php @@ -0,0 +1,7 @@ + + * The Subscribe with Google Publication APIs enable a publisher to fetch + * information related to their SwG subscriptions, including the entitlement + * status of users who are requesting publisher content and the publications + * owned by the publisher.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class Google_Service_SubscribewithGoogle extends \Google\Site_Kit_Dependencies\Google_Service +{ + /** See your primary Google Account email address. */ + const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"; + public $publications; + public $publications_entitlements; + /** + * Constructs the internal representation of the SubscribewithGoogle service. + * + * @param Google_Client $client + */ + public function __construct(\Google\Site_Kit_Dependencies\Google_Client $client) + { + parent::__construct($client); + $this->rootUrl = 'https://subscribewithgoogle.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v1'; + $this->serviceName = 'subscribewithgoogle'; + $this->publications = new \Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_Publications_Resource($this, $this->serviceName, 'publications', array('methods' => array('list' => array('path' => 'v1/publications', 'httpMethod' => 'GET', 'parameters' => array('pageSize' => array('location' => 'query', 'type' => 'integer'), 'filter' => array('location' => 'query', 'type' => 'string'), 'pageToken' => array('location' => 'query', 'type' => 'string')))))); + $this->publications_entitlements = new \Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_PublicationsEntitlements_Resource($this, $this->serviceName, 'entitlements', array('methods' => array('list' => array('path' => 'v1/publications/{publicationId}/entitlements', 'httpMethod' => 'GET', 'parameters' => array('publicationId' => array('location' => 'path', 'type' => 'string', 'required' => \true), 'pageSize' => array('location' => 'query', 'type' => 'integer'), 'pageToken' => array('location' => 'query', 'type' => 'string')))))); + } +} +/** + * The "publications" collection of methods. + * Typical usage is: + * + * $subscribewithgoogleService = new Google_Service_SubscribewithGoogle(...); + * $publications = $subscribewithgoogleService->publications; + * + */ +class Google_Service_SubscribewithGoogle_Publications_Resource extends \Google\Site_Kit_Dependencies\Google_Service_Resource +{ + /** + * List all publications based on the filter, only the publications owned by the + * current user will be returned (publications.listPublications) + * + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize LINT.IfChange The maximum number of publications to + * return, the service may return fewer than this value. if unspecified, at most + * 100 publications will be returned. The maximum value is 1000; values above + * 1000 will be coerced to 1000. LINT.ThenChange(//depot/google3/java/com/google + * /subscribewithgoogle/client/opservice/ListPublicationsPromiseGraph.java) + * @opt_param string filter Filters the publications list. e.g. + * verified_domains: "xyz.com" Grammar defined as https://google.aip.dev/160. + * @opt_param string pageToken A token identifying a page of results the server + * should return. + * @return Google_Service_SubscribewithGoogle_ListPublicationsResponse + */ + public function listPublications($optParams = array()) + { + $params = array(); + $params = \array_merge($params, $optParams); + return $this->call('list', array($params), Google_Service_SubscribewithGoogle_ListPublicationsResponse::class); + } +} +/** + * The "entitlements" collection of methods. + * Typical usage is: + * + * $subscribewithgoogleService = new Google_Service_SubscribewithGoogle(...); + * $entitlements = $subscribewithgoogleService->entitlements; + * + */ +class Google_Service_SubscribewithGoogle_PublicationsEntitlements_Resource extends \Google\Site_Kit_Dependencies\Google_Service_Resource +{ + /** + * Gets a set of entitlements for the user for this publication. The publication + * can fetch entitlements on behalf of a user authenticated via OAuth2. + * (entitlements.listPublicationsEntitlements) + * + * @param string $publicationId Mapped to the URL. + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize Requested page size. If unspecified, server will pick + * an appropriate default. + * @opt_param string pageToken A token identifying a page of results the server + * should return. Typically, this is the value of + * ListEntitlementsResponse.next_page_token returned from the previous call to + * `ListEntitlements` method. + * @return Google_Service_SubscribewithGoogle_ListEntitlementsResponse + */ + public function listPublicationsEntitlements($publicationId, $optParams = array()) + { + $params = array('publicationId' => $publicationId); + $params = \array_merge($params, $optParams); + return $this->call('list', array($params), Google_Service_SubscribewithGoogle_ListEntitlementsResponse::class); + } +} +class Google_Service_SubscribewithGoogle_BusinessPredicates extends \Google\Site_Kit_Dependencies\Google_Model +{ + protected $internal_gapi_mappings = array(); + public $canSell; + public $supportsSiteKit; + public function setCanSell($canSell) + { + $this->canSell = $canSell; + } + public function getCanSell() + { + return $this->canSell; + } + public function setSupportsSiteKit($supportsSiteKit) + { + $this->supportsSiteKit = $supportsSiteKit; + } + public function getSupportsSiteKit() + { + return $this->supportsSiteKit; + } +} +class Google_Service_SubscribewithGoogle_Entitlement extends \Google\Site_Kit_Dependencies\Google_Collection +{ + protected $collection_key = 'products'; + protected $internal_gapi_mappings = array(); + public $name; + public $products; + public $source; + public $subscriptionToken; + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setProducts($products) + { + $this->products = $products; + } + public function getProducts() + { + return $this->products; + } + public function setSource($source) + { + $this->source = $source; + } + public function getSource() + { + return $this->source; + } + public function setSubscriptionToken($subscriptionToken) + { + $this->subscriptionToken = $subscriptionToken; + } + public function getSubscriptionToken() + { + return $this->subscriptionToken; + } +} +class Google_Service_SubscribewithGoogle_ListEntitlementsResponse extends \Google\Site_Kit_Dependencies\Google_Collection +{ + protected $collection_key = 'entitlements'; + protected $internal_gapi_mappings = array(); + protected $entitlementsType = Google_Service_SubscribewithGoogle_Entitlement::class; + protected $entitlementsDataType = 'array'; + public $nextPageToken; + public function setEntitlements($entitlements) + { + $this->entitlements = $entitlements; + } + public function getEntitlements() + { + return $this->entitlements; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +class Google_Service_SubscribewithGoogle_ListPublicationsResponse extends \Google\Site_Kit_Dependencies\Google_Collection +{ + protected $collection_key = 'publications'; + protected $internal_gapi_mappings = array(); + public $nextPageToken; + protected $publicationsType = Google_Service_SubscribewithGoogle_Publication::class; + protected $publicationsDataType = 'array'; + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setPublications($publications) + { + $this->publications = $publications; + } + public function getPublications() + { + return $this->publications; + } +} +class Google_Service_SubscribewithGoogle_PaymentOptions extends \Google\Site_Kit_Dependencies\Google_Model +{ + protected $internal_gapi_mappings = array(); + public $contributions; + public $subscriptions; + public $thankStickers; + public function setContributions($contributions) + { + $this->contributions = $contributions; + } + public function getContributions() + { + return $this->contributions; + } + public function setSubscriptions($subscriptions) + { + $this->subscriptions = $subscriptions; + } + public function getSubscriptions() + { + return $this->subscriptions; + } + public function setThankStickers($thankStickers) + { + $this->thankStickers = $thankStickers; + } + public function getThankStickers() + { + return $this->thankStickers; + } +} +class Google_Service_SubscribewithGoogle_Product extends \Google\Site_Kit_Dependencies\Google_Model +{ + protected $internal_gapi_mappings = array(); + public $name; + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} +class Google_Service_SubscribewithGoogle_Publication extends \Google\Site_Kit_Dependencies\Google_Collection +{ + protected $collection_key = 'verifiedDomains'; + protected $internal_gapi_mappings = array(); + public $displayName; + public $onboardingState; + protected $paymentOptionsType = Google_Service_SubscribewithGoogle_PaymentOptions::class; + protected $paymentOptionsDataType = ''; + protected $productsType = Google_Service_SubscribewithGoogle_Product::class; + protected $productsDataType = 'array'; + public $publicationId; + protected $publicationPredicatesType = Google_Service_SubscribewithGoogle_PublicationPredicates::class; + protected $publicationPredicatesDataType = ''; + public $verifiedDomains; + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setOnboardingState($onboardingState) + { + $this->onboardingState = $onboardingState; + } + public function getOnboardingState() + { + return $this->onboardingState; + } + public function setPaymentOptions(\Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_PaymentOptions $paymentOptions) + { + $this->paymentOptions = $paymentOptions; + } + public function getPaymentOptions() + { + return $this->paymentOptions; + } + public function setProducts($products) + { + $this->products = $products; + } + public function getProducts() + { + return $this->products; + } + public function setPublicationId($publicationId) + { + $this->publicationId = $publicationId; + } + public function getPublicationId() + { + return $this->publicationId; + } + public function setPublicationPredicates(\Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_PublicationPredicates $publicationPredicates) + { + $this->publicationPredicates = $publicationPredicates; + } + public function getPublicationPredicates() + { + return $this->publicationPredicates; + } + public function setVerifiedDomains($verifiedDomains) + { + $this->verifiedDomains = $verifiedDomains; + } + public function getVerifiedDomains() + { + return $this->verifiedDomains; + } +} +class Google_Service_SubscribewithGoogle_PublicationPredicates extends \Google\Site_Kit_Dependencies\Google_Model +{ + protected $internal_gapi_mappings = array(); + protected $businessPredicatesType = Google_Service_SubscribewithGoogle_BusinessPredicates::class; + protected $businessPredicatesDataType = ''; + public function setBusinessPredicates(\Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_BusinessPredicates $businessPredicates) + { + $this->businessPredicates = $businessPredicates; + } + public function getBusinessPredicates() + { + return $this->businessPredicates; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/autoload.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/autoload.php new file mode 100644 index 000000000..0ec0e34b4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/autoload.php @@ -0,0 +1,26 @@ + 'Google_Client', 'Google\\Site_Kit_Dependencies\\Google\\Service' => 'Google_Service', 'Google\\Site_Kit_Dependencies\\Google\\Service\\Resource' => 'Google_Service_Resource', 'Google\\Site_Kit_Dependencies\\Google\\Model' => 'Google_Model', 'Google\\Site_Kit_Dependencies\\Google\\Collection' => 'Google_Collection']; + foreach ($servicesClassMap as $alias => $class) { + \class_alias($class, $alias); + } + } +} +\spl_autoload_register(function ($class) { + if (0 === \strpos($class, 'Google_Service_')) { + // Autoload the new class, which will also create an alias for the + // old class by changing underscores to namespaces: + // Google_Service_Speech_Resource_Operations + // => Google\Service\Speech\Resource\Operations + $classExists = \class_exists($newClass = \str_replace('_', '\\', $class)); + if ($classExists) { + return \true; + } + } +}, \true, \true); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense.php new file mode 100644 index 000000000..18fb3b995 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense.php @@ -0,0 +1,79 @@ + + * The AdSense Management API allows publishers to access their inventory and + * run earnings and performance reports.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class Adsense extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** View and manage your AdSense data. */ + const ADSENSE = "https://www.googleapis.com/auth/adsense"; + /** View your AdSense data. */ + const ADSENSE_READONLY = "https://www.googleapis.com/auth/adsense.readonly"; + public $accounts; + public $accounts_adclients; + public $accounts_adclients_adunits; + public $accounts_adclients_customchannels; + public $accounts_adclients_urlchannels; + public $accounts_alerts; + public $accounts_payments; + public $accounts_reports; + public $accounts_reports_saved; + public $accounts_sites; + /** + * Constructs the internal representation of the Adsense service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://adsense.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v2'; + $this->serviceName = 'adsense'; + $this->accounts = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\Accounts($this, $this->serviceName, 'accounts', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAdBlockingRecoveryTag' => ['path' => 'v2/{+name}/adBlockingRecoveryTag', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/accounts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'listChildAccounts' => ['path' => 'v2/{+parent}:listChildAccounts', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_adclients = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclients($this, $this->serviceName, 'adclients', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAdcode' => ['path' => 'v2/{+name}/adcode', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/adclients', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_adclients_adunits = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsAdunits($this, $this->serviceName, 'adunits', ['methods' => ['create' => ['path' => 'v2/{+parent}/adunits', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAdcode' => ['path' => 'v2/{+name}/adcode', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/adunits', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'listLinkedCustomChannels' => ['path' => 'v2/{+parent}:listLinkedCustomChannels', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v2/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_adclients_customchannels = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsCustomchannels($this, $this->serviceName, 'customchannels', ['methods' => ['create' => ['path' => 'v2/{+parent}/customchannels', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v2/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/customchannels', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'listLinkedAdUnits' => ['path' => 'v2/{+parent}:listLinkedAdUnits', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v2/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_adclients_urlchannels = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsUrlchannels($this, $this->serviceName, 'urlchannels', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/urlchannels', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_alerts = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAlerts($this, $this->serviceName, 'alerts', ['methods' => ['list' => ['path' => 'v2/{+parent}/alerts', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'languageCode' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_payments = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsPayments($this, $this->serviceName, 'payments', ['methods' => ['list' => ['path' => 'v2/{+parent}/payments', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->accounts_reports = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReports($this, $this->serviceName, 'reports', ['methods' => ['generate' => ['path' => 'v2/{+account}/reports:generate', 'httpMethod' => 'GET', 'parameters' => ['account' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'dimensions' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'filters' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'limit' => ['location' => 'query', 'type' => 'integer'], 'metrics' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'orderBy' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'generateCsv' => ['path' => 'v2/{+account}/reports:generateCsv', 'httpMethod' => 'GET', 'parameters' => ['account' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'dimensions' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'filters' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'limit' => ['location' => 'query', 'type' => 'integer'], 'metrics' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'orderBy' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'getSaved' => ['path' => 'v2/{+name}/saved', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->accounts_reports_saved = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReportsSaved($this, $this->serviceName, 'saved', ['methods' => ['generate' => ['path' => 'v2/{+name}/saved:generate', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'generateCsv' => ['path' => 'v2/{+name}/saved:generateCsv', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'list' => ['path' => 'v2/{+parent}/reports/saved', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_sites = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsSites($this, $this->serviceName, 'sites', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/sites', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Account.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Account.php new file mode 100644 index 000000000..6121c81c2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Account.php @@ -0,0 +1,149 @@ +createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string[] + */ + public function setPendingTasks($pendingTasks) + { + $this->pendingTasks = $pendingTasks; + } + /** + * @return string[] + */ + public function getPendingTasks() + { + return $this->pendingTasks; + } + /** + * @param bool + */ + public function setPremium($premium) + { + $this->premium = $premium; + } + /** + * @return bool + */ + public function getPremium() + { + return $this->premium; + } + /** + * @param string + */ + public function setState($state) + { + $this->state = $state; + } + /** + * @return string + */ + public function getState() + { + return $this->state; + } + /** + * @param TimeZone + */ + public function setTimeZone(\Google\Site_Kit_Dependencies\Google\Service\Adsense\TimeZone $timeZone) + { + $this->timeZone = $timeZone; + } + /** + * @return TimeZone + */ + public function getTimeZone() + { + return $this->timeZone; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Account::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Account'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdBlockingRecoveryTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdBlockingRecoveryTag.php new file mode 100644 index 000000000..5729f47d0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdBlockingRecoveryTag.php @@ -0,0 +1,60 @@ +errorProtectionCode = $errorProtectionCode; + } + /** + * @return string + */ + public function getErrorProtectionCode() + { + return $this->errorProtectionCode; + } + /** + * @param string + */ + public function setTag($tag) + { + $this->tag = $tag; + } + /** + * @return string + */ + public function getTag() + { + return $this->tag; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdBlockingRecoveryTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdBlockingRecoveryTag'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClient.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClient.php new file mode 100644 index 000000000..40a136ee6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClient.php @@ -0,0 +1,96 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setProductCode($productCode) + { + $this->productCode = $productCode; + } + /** + * @return string + */ + public function getProductCode() + { + return $this->productCode; + } + /** + * @param string + */ + public function setReportingDimensionId($reportingDimensionId) + { + $this->reportingDimensionId = $reportingDimensionId; + } + /** + * @return string + */ + public function getReportingDimensionId() + { + return $this->reportingDimensionId; + } + /** + * @param string + */ + public function setState($state) + { + $this->state = $state; + } + /** + * @return string + */ + public function getState() + { + return $this->state; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClient::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdClient'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClientAdCode.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClientAdCode.php new file mode 100644 index 000000000..f420e35a5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClientAdCode.php @@ -0,0 +1,78 @@ +adCode = $adCode; + } + /** + * @return string + */ + public function getAdCode() + { + return $this->adCode; + } + /** + * @param string + */ + public function setAmpBody($ampBody) + { + $this->ampBody = $ampBody; + } + /** + * @return string + */ + public function getAmpBody() + { + return $this->ampBody; + } + /** + * @param string + */ + public function setAmpHead($ampHead) + { + $this->ampHead = $ampHead; + } + /** + * @return string + */ + public function getAmpHead() + { + return $this->ampHead; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClientAdCode::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdClientAdCode'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnit.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnit.php new file mode 100644 index 000000000..52f0f0ac3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnit.php @@ -0,0 +1,112 @@ +contentAdsSettings = $contentAdsSettings; + } + /** + * @return ContentAdsSettings + */ + public function getContentAdsSettings() + { + return $this->contentAdsSettings; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setReportingDimensionId($reportingDimensionId) + { + $this->reportingDimensionId = $reportingDimensionId; + } + /** + * @return string + */ + public function getReportingDimensionId() + { + return $this->reportingDimensionId; + } + /** + * @param string + */ + public function setState($state) + { + $this->state = $state; + } + /** + * @return string + */ + public function getState() + { + return $this->state; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdUnit'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnitAdCode.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnitAdCode.php new file mode 100644 index 000000000..00de091cd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnitAdCode.php @@ -0,0 +1,42 @@ +adCode = $adCode; + } + /** + * @return string + */ + public function getAdCode() + { + return $this->adCode; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnitAdCode::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdUnitAdCode'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdsenseEmpty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdsenseEmpty.php new file mode 100644 index 000000000..7486c0b46 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdsenseEmpty.php @@ -0,0 +1,24 @@ +message = $message; + } + /** + * @return string + */ + public function getMessage() + { + return $this->message; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setSeverity($severity) + { + $this->severity = $severity; + } + /** + * @return string + */ + public function getSeverity() + { + return $this->severity; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Alert::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Alert'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Cell.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Cell.php new file mode 100644 index 000000000..c7f403e2f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Cell.php @@ -0,0 +1,42 @@ +value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Cell::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Cell'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ContentAdsSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ContentAdsSettings.php new file mode 100644 index 000000000..8692dbac5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ContentAdsSettings.php @@ -0,0 +1,60 @@ +size = $size; + } + /** + * @return string + */ + public function getSize() + { + return $this->size; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ContentAdsSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ContentAdsSettings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/CustomChannel.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/CustomChannel.php new file mode 100644 index 000000000..a81ee7329 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/CustomChannel.php @@ -0,0 +1,96 @@ +active = $active; + } + /** + * @return bool + */ + public function getActive() + { + return $this->active; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setReportingDimensionId($reportingDimensionId) + { + $this->reportingDimensionId = $reportingDimensionId; + } + /** + * @return string + */ + public function getReportingDimensionId() + { + return $this->reportingDimensionId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_CustomChannel'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Date.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Date.php new file mode 100644 index 000000000..cb0b74d0f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Date.php @@ -0,0 +1,78 @@ +day = $day; + } + /** + * @return int + */ + public function getDay() + { + return $this->day; + } + /** + * @param int + */ + public function setMonth($month) + { + $this->month = $month; + } + /** + * @return int + */ + public function getMonth() + { + return $this->month; + } + /** + * @param int + */ + public function setYear($year) + { + $this->year = $year; + } + /** + * @return int + */ + public function getYear() + { + return $this->year; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Date'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Header.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Header.php new file mode 100644 index 000000000..a8ba3aeb0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Header.php @@ -0,0 +1,78 @@ +currencyCode = $currencyCode; + } + /** + * @return string + */ + public function getCurrencyCode() + { + return $this->currencyCode; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Header::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Header'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/HttpBody.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/HttpBody.php new file mode 100644 index 000000000..c4abbc621 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/HttpBody.php @@ -0,0 +1,79 @@ +contentType = $contentType; + } + /** + * @return string + */ + public function getContentType() + { + return $this->contentType; + } + /** + * @param string + */ + public function setData($data) + { + $this->data = $data; + } + /** + * @return string + */ + public function getData() + { + return $this->data; + } + /** + * @param array[] + */ + public function setExtensions($extensions) + { + $this->extensions = $extensions; + } + /** + * @return array[] + */ + public function getExtensions() + { + return $this->extensions; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\HttpBody::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_HttpBody'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAccountsResponse.php new file mode 100644 index 000000000..522623742 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAccountsResponse.php @@ -0,0 +1,59 @@ +accounts = $accounts; + } + /** + * @return Account[] + */ + public function getAccounts() + { + return $this->accounts; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAccountsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdClientsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdClientsResponse.php new file mode 100644 index 000000000..0eea6cd90 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdClientsResponse.php @@ -0,0 +1,59 @@ +adClients = $adClients; + } + /** + * @return AdClient[] + */ + public function getAdClients() + { + return $this->adClients; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdClientsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAdClientsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdUnitsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdUnitsResponse.php new file mode 100644 index 000000000..709d15aff --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdUnitsResponse.php @@ -0,0 +1,59 @@ +adUnits = $adUnits; + } + /** + * @return AdUnit[] + */ + public function getAdUnits() + { + return $this->adUnits; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdUnitsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAdUnitsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAlertsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAlertsResponse.php new file mode 100644 index 000000000..d23a68a8d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAlertsResponse.php @@ -0,0 +1,41 @@ +alerts = $alerts; + } + /** + * @return Alert[] + */ + public function getAlerts() + { + return $this->alerts; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAlertsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAlertsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListChildAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListChildAccountsResponse.php new file mode 100644 index 000000000..1668c3cce --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListChildAccountsResponse.php @@ -0,0 +1,59 @@ +accounts = $accounts; + } + /** + * @return Account[] + */ + public function getAccounts() + { + return $this->accounts; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListChildAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListChildAccountsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListCustomChannelsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListCustomChannelsResponse.php new file mode 100644 index 000000000..be9035dcf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListCustomChannelsResponse.php @@ -0,0 +1,59 @@ +customChannels = $customChannels; + } + /** + * @return CustomChannel[] + */ + public function getCustomChannels() + { + return $this->customChannels; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListCustomChannelsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListCustomChannelsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedAdUnitsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedAdUnitsResponse.php new file mode 100644 index 000000000..16afa8d89 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedAdUnitsResponse.php @@ -0,0 +1,59 @@ +adUnits = $adUnits; + } + /** + * @return AdUnit[] + */ + public function getAdUnits() + { + return $this->adUnits; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedAdUnitsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListLinkedAdUnitsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedCustomChannelsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedCustomChannelsResponse.php new file mode 100644 index 000000000..888ba6323 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedCustomChannelsResponse.php @@ -0,0 +1,59 @@ +customChannels = $customChannels; + } + /** + * @return CustomChannel[] + */ + public function getCustomChannels() + { + return $this->customChannels; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedCustomChannelsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListLinkedCustomChannelsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListPaymentsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListPaymentsResponse.php new file mode 100644 index 000000000..b8dc1c6a4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListPaymentsResponse.php @@ -0,0 +1,41 @@ +payments = $payments; + } + /** + * @return Payment[] + */ + public function getPayments() + { + return $this->payments; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListPaymentsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListPaymentsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSavedReportsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSavedReportsResponse.php new file mode 100644 index 000000000..22a920f43 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSavedReportsResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param SavedReport[] + */ + public function setSavedReports($savedReports) + { + $this->savedReports = $savedReports; + } + /** + * @return SavedReport[] + */ + public function getSavedReports() + { + return $this->savedReports; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSavedReportsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListSavedReportsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSitesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSitesResponse.php new file mode 100644 index 000000000..39c170478 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSitesResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Site[] + */ + public function setSites($sites) + { + $this->sites = $sites; + } + /** + * @return Site[] + */ + public function getSites() + { + return $this->sites; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSitesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListSitesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListUrlChannelsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListUrlChannelsResponse.php new file mode 100644 index 000000000..7b17bbfff --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListUrlChannelsResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param UrlChannel[] + */ + public function setUrlChannels($urlChannels) + { + $this->urlChannels = $urlChannels; + } + /** + * @return UrlChannel[] + */ + public function getUrlChannels() + { + return $this->urlChannels; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListUrlChannelsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListUrlChannelsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Payment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Payment.php new file mode 100644 index 000000000..9705dc04c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Payment.php @@ -0,0 +1,76 @@ +amount = $amount; + } + /** + * @return string + */ + public function getAmount() + { + return $this->amount; + } + /** + * @param Date + */ + public function setDate(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date $date) + { + $this->date = $date; + } + /** + * @return Date + */ + public function getDate() + { + return $this->date; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Payment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Payment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ReportResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ReportResult.php new file mode 100644 index 000000000..fbd4fed01 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ReportResult.php @@ -0,0 +1,157 @@ +averages = $averages; + } + /** + * @return Row + */ + public function getAverages() + { + return $this->averages; + } + /** + * @param Date + */ + public function setEndDate(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date $endDate) + { + $this->endDate = $endDate; + } + /** + * @return Date + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param Header[] + */ + public function setHeaders($headers) + { + $this->headers = $headers; + } + /** + * @return Header[] + */ + public function getHeaders() + { + return $this->headers; + } + /** + * @param Row[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return Row[] + */ + public function getRows() + { + return $this->rows; + } + /** + * @param Date + */ + public function setStartDate(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date $startDate) + { + $this->startDate = $startDate; + } + /** + * @return Date + */ + public function getStartDate() + { + return $this->startDate; + } + /** + * @param string + */ + public function setTotalMatchedRows($totalMatchedRows) + { + $this->totalMatchedRows = $totalMatchedRows; + } + /** + * @return string + */ + public function getTotalMatchedRows() + { + return $this->totalMatchedRows; + } + /** + * @param Row + */ + public function setTotals(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Row $totals) + { + $this->totals = $totals; + } + /** + * @return Row + */ + public function getTotals() + { + return $this->totals; + } + /** + * @param string[] + */ + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + /** + * @return string[] + */ + public function getWarnings() + { + return $this->warnings; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ReportResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ReportResult'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/Accounts.php new file mode 100644 index 000000000..92856a86a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/Accounts.php @@ -0,0 +1,110 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $accounts = $adsenseService->accounts; + * + */ +class Accounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets information about the selected AdSense account. (accounts.get) + * + * @param string $name Required. Account to get information about. Format: + * accounts/{account} + * @param array $optParams Optional parameters. + * @return Account + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\Account::class); + } + /** + * Gets the ad blocking recovery tag of an account. + * (accounts.getAdBlockingRecoveryTag) + * + * @param string $name Required. The name of the account to get the tag for. + * Format: accounts/{account} + * @param array $optParams Optional parameters. + * @return AdBlockingRecoveryTag + */ + public function getAdBlockingRecoveryTag($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getAdBlockingRecoveryTag', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdBlockingRecoveryTag::class); + } + /** + * Lists all accounts available to this user. (accounts.listAccounts) + * + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of accounts to include in the + * response, used for paging. If unspecified, at most 10000 accounts will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListAccounts` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListAccounts` must match the + * call that provided the page token. + * @return ListAccountsResponse + */ + public function listAccounts($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAccountsResponse::class); + } + /** + * Lists all accounts directly managed by the given AdSense account. + * (accounts.listChildAccounts) + * + * @param string $parent Required. The parent account, which owns the child + * accounts. Format: accounts/{account} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of accounts to include in the + * response, used for paging. If unspecified, at most 10000 accounts will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListAccounts` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListAccounts` must match the + * call that provided the page token. + * @return ListChildAccountsResponse + */ + public function listChildAccounts($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('listChildAccounts', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListChildAccountsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_Accounts'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclients.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclients.php new file mode 100644 index 000000000..12857c30a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclients.php @@ -0,0 +1,91 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $adclients = $adsenseService->adclients; + * + */ +class AccountsAdclients extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets the ad client from the given resource name. (adclients.get) + * + * @param string $name Required. The name of the ad client to retrieve. Format: + * accounts/{account}/adclients/{adclient} + * @param array $optParams Optional parameters. + * @return AdClient + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClient::class); + } + /** + * Gets the AdSense code for a given ad client. This returns what was previously + * known as the 'auto ad code'. This is only supported for ad clients with a + * product_code of AFC. For more information, see [About the AdSense + * code](https://support.google.com/adsense/answer/9274634). + * (adclients.getAdcode) + * + * @param string $name Required. Name of the ad client for which to get the + * adcode. Format: accounts/{account}/adclients/{adclient} + * @param array $optParams Optional parameters. + * @return AdClientAdCode + */ + public function getAdcode($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getAdcode', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClientAdCode::class); + } + /** + * Lists all the ad clients available in an account. + * (adclients.listAccountsAdclients) + * + * @param string $parent Required. The account which owns the collection of ad + * clients. Format: accounts/{account} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of ad clients to include in the + * response, used for paging. If unspecified, at most 10000 ad clients will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListAdClients` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListAdClients` must match the + * call that provided the page token. + * @return ListAdClientsResponse + */ + public function listAccountsAdclients($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdClientsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclients::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclients'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsAdunits.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsAdunits.php new file mode 100644 index 000000000..214fa44e0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsAdunits.php @@ -0,0 +1,158 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $adunits = $adsenseService->adunits; + * + */ +class AccountsAdclientsAdunits extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates an ad unit. This method can only be used by projects enabled for the + * [AdSense for Platforms](https://developers.google.com/adsense/platforms/) + * product. Note that ad units can only be created for ad clients with an "AFC" + * product code. For more info see the [AdClient + * resource](/adsense/management/reference/rest/v2/accounts.adclients). For now, + * this method can only be used to create `DISPLAY` ad units. See: + * https://support.google.com/adsense/answer/9183566 (adunits.create) + * + * @param string $parent Required. Ad client to create an ad unit under. Format: + * accounts/{account}/adclients/{adclient} + * @param AdUnit $postBody + * @param array $optParams Optional parameters. + * @return AdUnit + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class); + } + /** + * Gets an ad unit from a specified account and ad client. (adunits.get) + * + * @param string $name Required. AdUnit to get information about. Format: + * accounts/{account}/adclients/{adclient}/adunits/{adunit} + * @param array $optParams Optional parameters. + * @return AdUnit + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class); + } + /** + * Gets the ad unit code for a given ad unit. For more information, see [About + * the AdSense code](https://support.google.com/adsense/answer/9274634) and + * [Where to place the ad code in your + * HTML](https://support.google.com/adsense/answer/9190028). (adunits.getAdcode) + * + * @param string $name Required. Name of the adunit for which to get the adcode. + * Format: accounts/{account}/adclients/{adclient}/adunits/{adunit} + * @param array $optParams Optional parameters. + * @return AdUnitAdCode + */ + public function getAdcode($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getAdcode', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnitAdCode::class); + } + /** + * Lists all ad units under a specified account and ad client. + * (adunits.listAccountsAdclientsAdunits) + * + * @param string $parent Required. The ad client which owns the collection of ad + * units. Format: accounts/{account}/adclients/{adclient} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of ad units to include in the + * response, used for paging. If unspecified, at most 10000 ad units will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListAdUnits` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListAdUnits` must match the + * call that provided the page token. + * @return ListAdUnitsResponse + */ + public function listAccountsAdclientsAdunits($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdUnitsResponse::class); + } + /** + * Lists all the custom channels available for an ad unit. + * (adunits.listLinkedCustomChannels) + * + * @param string $parent Required. The ad unit which owns the collection of + * custom channels. Format: + * accounts/{account}/adclients/{adclient}/adunits/{adunit} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of custom channels to include in + * the response, used for paging. If unspecified, at most 10000 custom channels + * will be returned. The maximum value is 10000; values above 10000 will be + * coerced to 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListLinkedCustomChannels` call. Provide this to retrieve the subsequent + * page. When paginating, all other parameters provided to + * `ListLinkedCustomChannels` must match the call that provided the page token. + * @return ListLinkedCustomChannelsResponse + */ + public function listLinkedCustomChannels($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('listLinkedCustomChannels', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedCustomChannelsResponse::class); + } + /** + * Updates an ad unit. This method can only be used by projects enabled for the + * [AdSense for Platforms](https://developers.google.com/adsense/platforms/) + * product. For now, this method can only be used to update `DISPLAY` ad units. + * See: https://support.google.com/adsense/answer/9183566 (adunits.patch) + * + * @param string $name Output only. Resource name of the ad unit. Format: + * accounts/{account}/adclients/{adclient}/adunits/{adunit} + * @param AdUnit $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to update. If empty, a full + * update is performed. + * @return AdUnit + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsAdunits::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclientsAdunits'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsCustomchannels.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsCustomchannels.php new file mode 100644 index 000000000..f760bbbc8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsCustomchannels.php @@ -0,0 +1,155 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $customchannels = $adsenseService->customchannels; + * + */ +class AccountsAdclientsCustomchannels extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a custom channel. This method can only be used by projects enabled + * for the [AdSense for + * Platforms](https://developers.google.com/adsense/platforms/) product. + * (customchannels.create) + * + * @param string $parent Required. The ad client to create a custom channel + * under. Format: accounts/{account}/adclients/{adclient} + * @param CustomChannel $postBody + * @param array $optParams Optional parameters. + * @return CustomChannel + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class); + } + /** + * Deletes a custom channel. This method can only be used by projects enabled + * for the [AdSense for + * Platforms](https://developers.google.com/adsense/platforms/) product. + * (customchannels.delete) + * + * @param string $name Required. Name of the custom channel to delete. Format: + * accounts/{account}/adclients/{adclient}/customchannels/{customchannel} + * @param array $optParams Optional parameters. + * @return AdsenseEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdsenseEmpty::class); + } + /** + * Gets information about the selected custom channel. (customchannels.get) + * + * @param string $name Required. Name of the custom channel. Format: + * accounts/{account}/adclients/{adclient}/customchannels/{customchannel} + * @param array $optParams Optional parameters. + * @return CustomChannel + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class); + } + /** + * Lists all the custom channels available in an ad client. + * (customchannels.listAccountsAdclientsCustomchannels) + * + * @param string $parent Required. The ad client which owns the collection of + * custom channels. Format: accounts/{account}/adclients/{adclient} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of custom channels to include in + * the response, used for paging. If unspecified, at most 10000 custom channels + * will be returned. The maximum value is 10000; values above 10000 will be + * coerced to 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListCustomChannels` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListCustomChannels` must match + * the call that provided the page token. + * @return ListCustomChannelsResponse + */ + public function listAccountsAdclientsCustomchannels($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListCustomChannelsResponse::class); + } + /** + * Lists all the ad units available for a custom channel. + * (customchannels.listLinkedAdUnits) + * + * @param string $parent Required. The custom channel which owns the collection + * of ad units. Format: + * accounts/{account}/adclients/{adclient}/customchannels/{customchannel} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of ad units to include in the + * response, used for paging. If unspecified, at most 10000 ad units will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListLinkedAdUnits` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListLinkedAdUnits` must match + * the call that provided the page token. + * @return ListLinkedAdUnitsResponse + */ + public function listLinkedAdUnits($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('listLinkedAdUnits', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedAdUnitsResponse::class); + } + /** + * Updates a custom channel. This method can only be used by projects enabled + * for the [AdSense for + * Platforms](https://developers.google.com/adsense/platforms/) product. + * (customchannels.patch) + * + * @param string $name Output only. Resource name of the custom channel. Format: + * accounts/{account}/adclients/{adclient}/customchannels/{customchannel} + * @param CustomChannel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to update. If empty, a full + * update is performed. + * @return CustomChannel + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsCustomchannels::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclientsCustomchannels'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsUrlchannels.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsUrlchannels.php new file mode 100644 index 000000000..e994450d6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsUrlchannels.php @@ -0,0 +1,71 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $urlchannels = $adsenseService->urlchannels; + * + */ +class AccountsAdclientsUrlchannels extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets information about the selected url channel. (urlchannels.get) + * + * @param string $name Required. The name of the url channel to retrieve. + * Format: accounts/{account}/adclients/{adclient}/urlchannels/{urlchannel} + * @param array $optParams Optional parameters. + * @return UrlChannel + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\UrlChannel::class); + } + /** + * Lists active url channels. (urlchannels.listAccountsAdclientsUrlchannels) + * + * @param string $parent Required. The ad client which owns the collection of + * url channels. Format: accounts/{account}/adclients/{adclient} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of url channels to include in the + * response, used for paging. If unspecified, at most 10000 url channels will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListUrlChannels` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListUrlChannels` must match the + * call that provided the page token. + * @return ListUrlChannelsResponse + */ + public function listAccountsAdclientsUrlchannels($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListUrlChannelsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsUrlchannels::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclientsUrlchannels'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAlerts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAlerts.php new file mode 100644 index 000000000..9e74e17d0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAlerts.php @@ -0,0 +1,53 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $alerts = $adsenseService->alerts; + * + */ +class AccountsAlerts extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists all the alerts available in an account. (alerts.listAccountsAlerts) + * + * @param string $parent Required. The account which owns the collection of + * alerts. Format: accounts/{account} + * @param array $optParams Optional parameters. + * + * @opt_param string languageCode The language to use for translating alert + * messages. If unspecified, this defaults to the user's display language. If + * the given language is not supported, alerts will be returned in English. The + * language is specified as an [IETF BCP-47 language + * code](https://en.wikipedia.org/wiki/IETF_language_tag). + * @return ListAlertsResponse + */ + public function listAccountsAlerts($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAlertsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAlerts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAlerts'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsPayments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsPayments.php new file mode 100644 index 000000000..615627ab0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsPayments.php @@ -0,0 +1,48 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $payments = $adsenseService->payments; + * + */ +class AccountsPayments extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists all the payments available for an account. + * (payments.listAccountsPayments) + * + * @param string $parent Required. The account which owns the collection of + * payments. Format: accounts/{account} + * @param array $optParams Optional parameters. + * @return ListPaymentsResponse + */ + public function listAccountsPayments($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListPaymentsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsPayments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsPayments'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReports.php new file mode 100644 index 000000000..bea64f657 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReports.php @@ -0,0 +1,167 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $reports = $adsenseService->reports; + * + */ +class AccountsReports extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Generates an ad hoc report. (reports.generate) + * + * @param string $account Required. The account which owns the collection of + * reports. Format: accounts/{account} + * @param array $optParams Optional parameters. + * + * @opt_param string currencyCode The [ISO-4217 currency + * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on + * monetary metrics. Defaults to the account's currency if not set. + * @opt_param string dateRange Date range of the report, if unset the range will + * be considered CUSTOM. + * @opt_param string dimensions Dimensions to base the report on. + * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for + * the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to + * specify a date without a year. + * @opt_param string filters A list of + * [filters](/adsense/management/reporting/filtering) to apply to the report. + * All provided filters must match in order for the data to be included in the + * report. + * @opt_param string languageCode The language to use for translating report + * output. If unspecified, this defaults to English ("en"). If the given + * language is not supported, report output will be returned in English. The + * language is specified as an [IETF BCP-47 language + * code](https://en.wikipedia.org/wiki/IETF_language_tag). + * @opt_param int limit The maximum number of rows of report data to return. + * Reports producing more rows than the requested limit will be truncated. If + * unset, this defaults to 100,000 rows for `Reports.GenerateReport` and + * 1,000,000 rows for `Reports.GenerateCsvReport`, which are also the maximum + * values permitted here. Report truncation can be identified (for + * `Reports.GenerateReport` only) by comparing the number of rows returned to + * the value returned in `total_matched_rows`. + * @opt_param string metrics Required. Reporting metrics. + * @opt_param string orderBy The name of a dimension or metric to sort the + * resulting report on, can be prefixed with "+" to sort ascending or "-" to + * sort descending. If no prefix is specified, the column is sorted ascending. + * @opt_param string reportingTimeZone Timezone in which to generate the report. + * If unspecified, this defaults to the account timezone. For more information, + * see [changing the time zone of your + * reports](https://support.google.com/adsense/answer/9830725). + * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid + * for the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0 + * to specify a date without a year. + * @return ReportResult + */ + public function generate($account, $optParams = []) + { + $params = ['account' => $account]; + $params = \array_merge($params, $optParams); + return $this->call('generate', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ReportResult::class); + } + /** + * Generates a csv formatted ad hoc report. (reports.generateCsv) + * + * @param string $account Required. The account which owns the collection of + * reports. Format: accounts/{account} + * @param array $optParams Optional parameters. + * + * @opt_param string currencyCode The [ISO-4217 currency + * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on + * monetary metrics. Defaults to the account's currency if not set. + * @opt_param string dateRange Date range of the report, if unset the range will + * be considered CUSTOM. + * @opt_param string dimensions Dimensions to base the report on. + * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for + * the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to + * specify a date without a year. + * @opt_param string filters A list of + * [filters](/adsense/management/reporting/filtering) to apply to the report. + * All provided filters must match in order for the data to be included in the + * report. + * @opt_param string languageCode The language to use for translating report + * output. If unspecified, this defaults to English ("en"). If the given + * language is not supported, report output will be returned in English. The + * language is specified as an [IETF BCP-47 language + * code](https://en.wikipedia.org/wiki/IETF_language_tag). + * @opt_param int limit The maximum number of rows of report data to return. + * Reports producing more rows than the requested limit will be truncated. If + * unset, this defaults to 100,000 rows for `Reports.GenerateReport` and + * 1,000,000 rows for `Reports.GenerateCsvReport`, which are also the maximum + * values permitted here. Report truncation can be identified (for + * `Reports.GenerateReport` only) by comparing the number of rows returned to + * the value returned in `total_matched_rows`. + * @opt_param string metrics Required. Reporting metrics. + * @opt_param string orderBy The name of a dimension or metric to sort the + * resulting report on, can be prefixed with "+" to sort ascending or "-" to + * sort descending. If no prefix is specified, the column is sorted ascending. + * @opt_param string reportingTimeZone Timezone in which to generate the report. + * If unspecified, this defaults to the account timezone. For more information, + * see [changing the time zone of your + * reports](https://support.google.com/adsense/answer/9830725). + * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid + * for the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0 + * to specify a date without a year. + * @return HttpBody + */ + public function generateCsv($account, $optParams = []) + { + $params = ['account' => $account]; + $params = \array_merge($params, $optParams); + return $this->call('generateCsv', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\HttpBody::class); + } + /** + * Gets the saved report from the given resource name. (reports.getSaved) + * + * @param string $name Required. The name of the saved report to retrieve. + * Format: accounts/{account}/reports/{report} + * @param array $optParams Optional parameters. + * @return SavedReport + */ + public function getSaved($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getSaved', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\SavedReport::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsReports'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReportsSaved.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReportsSaved.php new file mode 100644 index 000000000..578906084 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReportsSaved.php @@ -0,0 +1,144 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $saved = $adsenseService->saved; + * + */ +class AccountsReportsSaved extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Generates a saved report. (saved.generate) + * + * @param string $name Required. Name of the saved report. Format: + * accounts/{account}/reports/{report} + * @param array $optParams Optional parameters. + * + * @opt_param string currencyCode The [ISO-4217 currency + * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on + * monetary metrics. Defaults to the account's currency if not set. + * @opt_param string dateRange Date range of the report, if unset the range will + * be considered CUSTOM. + * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for + * the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to + * specify a date without a year. + * @opt_param string languageCode The language to use for translating report + * output. If unspecified, this defaults to English ("en"). If the given + * language is not supported, report output will be returned in English. The + * language is specified as an [IETF BCP-47 language + * code](https://en.wikipedia.org/wiki/IETF_language_tag). + * @opt_param string reportingTimeZone Timezone in which to generate the report. + * If unspecified, this defaults to the account timezone. For more information, + * see [changing the time zone of your + * reports](https://support.google.com/adsense/answer/9830725). + * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid + * for the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0 + * to specify a date without a year. + * @return ReportResult + */ + public function generate($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('generate', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ReportResult::class); + } + /** + * Generates a csv formatted saved report. (saved.generateCsv) + * + * @param string $name Required. Name of the saved report. Format: + * accounts/{account}/reports/{report} + * @param array $optParams Optional parameters. + * + * @opt_param string currencyCode The [ISO-4217 currency + * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on + * monetary metrics. Defaults to the account's currency if not set. + * @opt_param string dateRange Date range of the report, if unset the range will + * be considered CUSTOM. + * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for + * the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to + * specify a date without a year. + * @opt_param string languageCode The language to use for translating report + * output. If unspecified, this defaults to English ("en"). If the given + * language is not supported, report output will be returned in English. The + * language is specified as an [IETF BCP-47 language + * code](https://en.wikipedia.org/wiki/IETF_language_tag). + * @opt_param string reportingTimeZone Timezone in which to generate the report. + * If unspecified, this defaults to the account timezone. For more information, + * see [changing the time zone of your + * reports](https://support.google.com/adsense/answer/9830725). + * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid + * for the year and month, or 0 to specify a year by itself or a year and month + * where the day isn't significant. + * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to + * specify a year without a month and day. + * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0 + * to specify a date without a year. + * @return HttpBody + */ + public function generateCsv($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('generateCsv', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\HttpBody::class); + } + /** + * Lists saved reports. (saved.listAccountsReportsSaved) + * + * @param string $parent Required. The account which owns the collection of + * reports. Format: accounts/{account} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of reports to include in the + * response, used for paging. If unspecified, at most 10000 reports will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListPayments` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListPayments` must match the + * call that provided the page token. + * @return ListSavedReportsResponse + */ + public function listAccountsReportsSaved($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSavedReportsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReportsSaved::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsReportsSaved'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsSites.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsSites.php new file mode 100644 index 000000000..ebf87cd6b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsSites.php @@ -0,0 +1,71 @@ + + * $adsenseService = new Google\Service\Adsense(...); + * $sites = $adsenseService->sites; + * + */ +class AccountsSites extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets information about the selected site. (sites.get) + * + * @param string $name Required. Name of the site. Format: + * accounts/{account}/sites/{site} + * @param array $optParams Optional parameters. + * @return Site + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\Site::class); + } + /** + * Lists all the sites available in an account. (sites.listAccountsSites) + * + * @param string $parent Required. The account which owns the collection of + * sites. Format: accounts/{account} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of sites to include in the + * response, used for paging. If unspecified, at most 10000 sites will be + * returned. The maximum value is 10000; values above 10000 will be coerced to + * 10000. + * @opt_param string pageToken A page token, received from a previous + * `ListSites` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListSites` must match the call + * that provided the page token. + * @return ListSitesResponse + */ + public function listAccountsSites($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSitesResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsSites::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsSites'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Row.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Row.php new file mode 100644 index 000000000..3a53cd01f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Row.php @@ -0,0 +1,41 @@ +cells = $cells; + } + /** + * @return Cell[] + */ + public function getCells() + { + return $this->cells; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Row::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Row'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/SavedReport.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/SavedReport.php new file mode 100644 index 000000000..ea3ac0347 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/SavedReport.php @@ -0,0 +1,60 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setTitle($title) + { + $this->title = $title; + } + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\SavedReport::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_SavedReport'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Site.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Site.php new file mode 100644 index 000000000..57ea69a44 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Site.php @@ -0,0 +1,114 @@ +autoAdsEnabled = $autoAdsEnabled; + } + /** + * @return bool + */ + public function getAutoAdsEnabled() + { + return $this->autoAdsEnabled; + } + /** + * @param string + */ + public function setDomain($domain) + { + $this->domain = $domain; + } + /** + * @return string + */ + public function getDomain() + { + return $this->domain; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setReportingDimensionId($reportingDimensionId) + { + $this->reportingDimensionId = $reportingDimensionId; + } + /** + * @return string + */ + public function getReportingDimensionId() + { + return $this->reportingDimensionId; + } + /** + * @param string + */ + public function setState($state) + { + $this->state = $state; + } + /** + * @return string + */ + public function getState() + { + return $this->state; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Site::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Site'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/TimeZone.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/TimeZone.php new file mode 100644 index 000000000..28505839c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/TimeZone.php @@ -0,0 +1,60 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setVersion($version) + { + $this->version = $version; + } + /** + * @return string + */ + public function getVersion() + { + return $this->version; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\TimeZone::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_TimeZone'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/UrlChannel.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/UrlChannel.php new file mode 100644 index 000000000..9de12badc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/UrlChannel.php @@ -0,0 +1,78 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setReportingDimensionId($reportingDimensionId) + { + $this->reportingDimensionId = $reportingDimensionId; + } + /** + * @return string + */ + public function getReportingDimensionId() + { + return $this->reportingDimensionId; + } + /** + * @param string + */ + public function setUriPattern($uriPattern) + { + $this->uriPattern = $uriPattern; + } + /** + * @return string + */ + public function getUriPattern() + { + return $this->uriPattern; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\UrlChannel::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_UrlChannel'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics.php new file mode 100644 index 000000000..ed47f5d07 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics.php @@ -0,0 +1,120 @@ + + * Views and manages your Google Analytics data.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class Analytics extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** View and manage your Google Analytics data. */ + const ANALYTICS = "https://www.googleapis.com/auth/analytics"; + /** Edit Google Analytics management entities. */ + const ANALYTICS_EDIT = "https://www.googleapis.com/auth/analytics.edit"; + /** Manage Google Analytics Account users by email address. */ + const ANALYTICS_MANAGE_USERS = "https://www.googleapis.com/auth/analytics.manage.users"; + /** View Google Analytics user permissions. */ + const ANALYTICS_MANAGE_USERS_READONLY = "https://www.googleapis.com/auth/analytics.manage.users.readonly"; + /** Create a new Google Analytics account along with its default property and view. */ + const ANALYTICS_PROVISION = "https://www.googleapis.com/auth/analytics.provision"; + /** View your Google Analytics data. */ + const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly"; + /** Manage Google Analytics user deletion requests. */ + const ANALYTICS_USER_DELETION = "https://www.googleapis.com/auth/analytics.user.deletion"; + public $data_ga; + public $data_mcf; + public $data_realtime; + public $management_accountSummaries; + public $management_accountUserLinks; + public $management_accounts; + public $management_clientId; + public $management_customDataSources; + public $management_customDimensions; + public $management_customMetrics; + public $management_experiments; + public $management_filters; + public $management_goals; + public $management_profileFilterLinks; + public $management_profileUserLinks; + public $management_profiles; + public $management_remarketingAudience; + public $management_segments; + public $management_unsampledReports; + public $management_uploads; + public $management_webPropertyAdWordsLinks; + public $management_webproperties; + public $management_webpropertyUserLinks; + public $metadata_columns; + public $provisioning; + public $userDeletion_userDeletionRequest; + /** + * Constructs the internal representation of the Analytics service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://analytics.googleapis.com/'; + $this->servicePath = 'analytics/v3/'; + $this->batchPath = 'batch/analytics/v3'; + $this->version = 'v3'; + $this->serviceName = 'analytics'; + $this->data_ga = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataGa($this, $this->serviceName, 'ga', ['methods' => ['get' => ['path' => 'data/ga', 'httpMethod' => 'GET', 'parameters' => ['ids' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'start-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'end-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'metrics' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'dimensions' => ['location' => 'query', 'type' => 'string'], 'filters' => ['location' => 'query', 'type' => 'string'], 'include-empty-rows' => ['location' => 'query', 'type' => 'boolean'], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'output' => ['location' => 'query', 'type' => 'string'], 'samplingLevel' => ['location' => 'query', 'type' => 'string'], 'segment' => ['location' => 'query', 'type' => 'string'], 'sort' => ['location' => 'query', 'type' => 'string'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]); + $this->data_mcf = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataMcf($this, $this->serviceName, 'mcf', ['methods' => ['get' => ['path' => 'data/mcf', 'httpMethod' => 'GET', 'parameters' => ['ids' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'start-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'end-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'metrics' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'dimensions' => ['location' => 'query', 'type' => 'string'], 'filters' => ['location' => 'query', 'type' => 'string'], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'samplingLevel' => ['location' => 'query', 'type' => 'string'], 'sort' => ['location' => 'query', 'type' => 'string'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]); + $this->data_realtime = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataRealtime($this, $this->serviceName, 'realtime', ['methods' => ['get' => ['path' => 'data/realtime', 'httpMethod' => 'GET', 'parameters' => ['ids' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'metrics' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'dimensions' => ['location' => 'query', 'type' => 'string'], 'filters' => ['location' => 'query', 'type' => 'string'], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'sort' => ['location' => 'query', 'type' => 'string']]]]]); + $this->management_accountSummaries = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountSummaries($this, $this->serviceName, 'accountSummaries', ['methods' => ['list' => ['path' => 'management/accountSummaries', 'httpMethod' => 'GET', 'parameters' => ['max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]); + $this->management_accountUserLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountUserLinks($this, $this->serviceName, 'accountUserLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/entityUserLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/entityUserLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'update' => ['path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_accounts = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccounts($this, $this->serviceName, 'accounts', ['methods' => ['list' => ['path' => 'management/accounts', 'httpMethod' => 'GET', 'parameters' => ['max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]); + $this->management_clientId = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementClientId($this, $this->serviceName, 'clientId', ['methods' => ['hashClientId' => ['path' => 'management/clientId:hashClientId', 'httpMethod' => 'POST', 'parameters' => []]]]); + $this->management_customDataSources = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDataSources($this, $this->serviceName, 'customDataSources', ['methods' => ['list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]); + $this->management_customDimensions = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDimensions($this, $this->serviceName, 'customDimensions', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions/{customDimensionId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDimensionId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions/{customDimensionId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDimensionId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions/{customDimensionId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDimensionId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]]]]); + $this->management_customMetrics = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomMetrics($this, $this->serviceName, 'customMetrics', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics/{customMetricId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customMetricId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics/{customMetricId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customMetricId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics/{customMetricId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customMetricId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]]]]); + $this->management_experiments = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementExperiments($this, $this->serviceName, 'experiments', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_filters = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementFilters($this, $this->serviceName, 'filters', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/filters', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/filters', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_goals = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementGoals($this, $this->serviceName, 'goals', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'goalId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'goalId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'goalId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_profileFilterLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileFilterLinks($this, $this->serviceName, 'profileFilterLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_profileUserLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileUserLinks($this, $this->serviceName, 'profileUserLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_profiles = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfiles($this, $this->serviceName, 'profiles', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_remarketingAudience = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementRemarketingAudience($this, $this->serviceName, 'remarketingAudience', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer'], 'type' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_segments = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementSegments($this, $this->serviceName, 'segments', ['methods' => ['list' => ['path' => 'management/segments', 'httpMethod' => 'GET', 'parameters' => ['max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]); + $this->management_unsampledReports = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUnsampledReports($this, $this->serviceName, 'unsampledReports', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports/{unsampledReportId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'unsampledReportId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports/{unsampledReportId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'unsampledReportId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]); + $this->management_uploads = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUploads($this, $this->serviceName, 'uploads', ['methods' => ['deleteUploadData' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/deleteUploadData', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads/{uploadId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'uploadId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'uploadData' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_webPropertyAdWordsLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebPropertyAdWordsLinks($this, $this->serviceName, 'webPropertyAdWordsLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_webproperties = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebproperties($this, $this->serviceName, 'webproperties', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->management_webpropertyUserLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebpropertyUserLinks($this, $this->serviceName, 'webpropertyUserLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->metadata_columns = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\MetadataColumns($this, $this->serviceName, 'columns', ['methods' => ['list' => ['path' => 'metadata/{reportType}/columns', 'httpMethod' => 'GET', 'parameters' => ['reportType' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->provisioning = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Provisioning($this, $this->serviceName, 'provisioning', ['methods' => ['createAccountTicket' => ['path' => 'provisioning/createAccountTicket', 'httpMethod' => 'POST', 'parameters' => []], 'createAccountTree' => ['path' => 'provisioning/createAccountTree', 'httpMethod' => 'POST', 'parameters' => []]]]); + $this->userDeletion_userDeletionRequest = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\UserDeletionUserDeletionRequest($this, $this->serviceName, 'userDeletionRequest', ['methods' => ['upsert' => ['path' => 'userDeletion/userDeletionRequests:upsert', 'httpMethod' => 'POST', 'parameters' => []]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Account.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Account.php new file mode 100644 index 000000000..0f7ce20be --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Account.php @@ -0,0 +1,182 @@ +childLink = $childLink; + } + /** + * @return AccountChildLink + */ + public function getChildLink() + { + return $this->childLink; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param AccountPermissions + */ + public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountPermissions $permissions) + { + $this->permissions = $permissions; + } + /** + * @return AccountPermissions + */ + public function getPermissions() + { + return $this->permissions; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param bool + */ + public function setStarred($starred) + { + $this->starred = $starred; + } + /** + * @return bool + */ + public function getStarred() + { + return $this->starred; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Account::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Account'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountChildLink.php new file mode 100644 index 000000000..73c6dbbeb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountChildLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountChildLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountPermissions.php new file mode 100644 index 000000000..e25c0bb70 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountPermissions.php @@ -0,0 +1,43 @@ +effective = $effective; + } + /** + * @return string[] + */ + public function getEffective() + { + return $this->effective; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountPermissions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountRef.php new file mode 100644 index 000000000..a1871c2d9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountRef.php @@ -0,0 +1,96 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountRef'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummaries.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummaries.php new file mode 100644 index 000000000..8dd37b197 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummaries.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return AccountSummary[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountSummaries::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountSummaries'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummary.php new file mode 100644 index 000000000..0a5efdb52 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummary.php @@ -0,0 +1,113 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param bool + */ + public function setStarred($starred) + { + $this->starred = $starred; + } + /** + * @return bool + */ + public function getStarred() + { + return $this->starred; + } + /** + * @param WebPropertySummary[] + */ + public function setWebProperties($webProperties) + { + $this->webProperties = $webProperties; + } + /** + * @return WebPropertySummary[] + */ + public function getWebProperties() + { + return $this->webProperties; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountSummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountSummary'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTicket.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTicket.php new file mode 100644 index 000000000..7542b242b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTicket.php @@ -0,0 +1,126 @@ +account = $account; + } + /** + * @return Account + */ + public function getAccount() + { + return $this->account; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param Profile + */ + public function setProfile(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $profile) + { + $this->profile = $profile; + } + /** + * @return Profile + */ + public function getProfile() + { + return $this->profile; + } + /** + * @param string + */ + public function setRedirectUri($redirectUri) + { + $this->redirectUri = $redirectUri; + } + /** + * @return string + */ + public function getRedirectUri() + { + return $this->redirectUri; + } + /** + * @param Webproperty + */ + public function setWebproperty(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $webproperty) + { + $this->webproperty = $webproperty; + } + /** + * @return Webproperty + */ + public function getWebproperty() + { + return $this->webproperty; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTicket::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountTicket'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeRequest.php new file mode 100644 index 000000000..7cfd83b5e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeRequest.php @@ -0,0 +1,132 @@ +accountName = $accountName; + } + /** + * @return string + */ + public function getAccountName() + { + return $this->accountName; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setProfileName($profileName) + { + $this->profileName = $profileName; + } + /** + * @return string + */ + public function getProfileName() + { + return $this->profileName; + } + /** + * @param string + */ + public function setTimezone($timezone) + { + $this->timezone = $timezone; + } + /** + * @return string + */ + public function getTimezone() + { + return $this->timezone; + } + /** + * @param string + */ + public function setWebpropertyName($webpropertyName) + { + $this->webpropertyName = $webpropertyName; + } + /** + * @return string + */ + public function getWebpropertyName() + { + return $this->webpropertyName; + } + /** + * @param string + */ + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + /** + * @return string + */ + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountTreeRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeResponse.php new file mode 100644 index 000000000..91fc9cd48 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeResponse.php @@ -0,0 +1,90 @@ +account = $account; + } + /** + * @return Account + */ + public function getAccount() + { + return $this->account; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param Profile + */ + public function setProfile(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $profile) + { + $this->profile = $profile; + } + /** + * @return Profile + */ + public function getProfile() + { + return $this->profile; + } + /** + * @param Webproperty + */ + public function setWebproperty(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $webproperty) + { + $this->webproperty = $webproperty; + } + /** + * @return Webproperty + */ + public function getWebproperty() + { + return $this->webproperty; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountTreeResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Accounts.php new file mode 100644 index 000000000..1d6933c88 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Accounts.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return Account[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Accounts'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AdWordsAccount.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AdWordsAccount.php new file mode 100644 index 000000000..4107c43f4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AdWordsAccount.php @@ -0,0 +1,78 @@ +autoTaggingEnabled = $autoTaggingEnabled; + } + /** + * @return bool + */ + public function getAutoTaggingEnabled() + { + return $this->autoTaggingEnabled; + } + /** + * @param string + */ + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + /** + * @return string + */ + public function getCustomerId() + { + return $this->customerId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AdWordsAccount::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AdWordsAccount'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AnalyticsDataimportDeleteUploadDataRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AnalyticsDataimportDeleteUploadDataRequest.php new file mode 100644 index 000000000..248d304d1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AnalyticsDataimportDeleteUploadDataRequest.php @@ -0,0 +1,43 @@ +customDataImportUids = $customDataImportUids; + } + /** + * @return string[] + */ + public function getCustomDataImportUids() + { + return $this->customDataImportUids; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AnalyticsDataimportDeleteUploadDataRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AnalyticsDataimportDeleteUploadDataRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Column.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Column.php new file mode 100644 index 000000000..2ad966e66 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Column.php @@ -0,0 +1,78 @@ +attributes = $attributes; + } + /** + * @return string[] + */ + public function getAttributes() + { + return $this->attributes; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Column::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Column'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Columns.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Columns.php new file mode 100644 index 000000000..e324981cd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Columns.php @@ -0,0 +1,113 @@ +attributeNames = $attributeNames; + } + /** + * @return string[] + */ + public function getAttributeNames() + { + return $this->attributeNames; + } + /** + * @param string + */ + public function setEtag($etag) + { + $this->etag = $etag; + } + /** + * @return string + */ + public function getEtag() + { + return $this->etag; + } + /** + * @param Column[] + */ + public function setItems($items) + { + $this->items = $items; + } + /** + * @return Column[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Columns::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Columns'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSource.php new file mode 100644 index 000000000..de1241945 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSource.php @@ -0,0 +1,309 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param CustomDataSourceChildLink + */ + public function setChildLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceChildLink $childLink) + { + $this->childLink = $childLink; + } + /** + * @return CustomDataSourceChildLink + */ + public function getChildLink() + { + return $this->childLink; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setImportBehavior($importBehavior) + { + $this->importBehavior = $importBehavior; + } + /** + * @return string + */ + public function getImportBehavior() + { + return $this->importBehavior; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param CustomDataSourceParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return CustomDataSourceParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param string[] + */ + public function setProfilesLinked($profilesLinked) + { + $this->profilesLinked = $profilesLinked; + } + /** + * @return string[] + */ + public function getProfilesLinked() + { + return $this->profilesLinked; + } + /** + * @param string[] + */ + public function setSchema($schema) + { + $this->schema = $schema; + } + /** + * @return string[] + */ + public function getSchema() + { + return $this->schema; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param string + */ + public function setUploadType($uploadType) + { + $this->uploadType = $uploadType; + } + /** + * @return string + */ + public function getUploadType() + { + return $this->uploadType; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSource'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceChildLink.php new file mode 100644 index 000000000..5f65d269a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceChildLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSourceChildLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceParentLink.php new file mode 100644 index 000000000..e0272a177 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSourceParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSources.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSources.php new file mode 100644 index 000000000..a20078cc2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSources.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return CustomDataSource[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSources::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSources'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimension.php new file mode 100644 index 000000000..52e4d3b70 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimension.php @@ -0,0 +1,238 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param bool + */ + public function setActive($active) + { + $this->active = $active; + } + /** + * @return bool + */ + public function getActive() + { + return $this->active; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param int + */ + public function setIndex($index) + { + $this->index = $index; + } + /** + * @return int + */ + public function getIndex() + { + return $this->index; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param CustomDimensionParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensionParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return CustomDimensionParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param string + */ + public function setScope($scope) + { + $this->scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDimension'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensionParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensionParentLink.php new file mode 100644 index 000000000..2bce1ffc9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensionParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensionParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDimensionParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensions.php new file mode 100644 index 000000000..b94f9a6c6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensions.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return CustomDimension[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDimensions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetric.php new file mode 100644 index 000000000..146386e00 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetric.php @@ -0,0 +1,293 @@ + "max_value", "minValue" => "min_value"]; + /** + * @var string + */ + public $accountId; + /** + * @var bool + */ + public $active; + /** + * @var string + */ + public $created; + /** + * @var string + */ + public $id; + /** + * @var int + */ + public $index; + /** + * @var string + */ + public $kind; + /** + * @var string + */ + public $maxValue; + /** + * @var string + */ + public $minValue; + /** + * @var string + */ + public $name; + protected $parentLinkType = \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetricParentLink::class; + protected $parentLinkDataType = ''; + /** + * @var string + */ + public $scope; + /** + * @var string + */ + public $selfLink; + /** + * @var string + */ + public $type; + /** + * @var string + */ + public $updated; + /** + * @var string + */ + public $webPropertyId; + /** + * @param string + */ + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param bool + */ + public function setActive($active) + { + $this->active = $active; + } + /** + * @return bool + */ + public function getActive() + { + return $this->active; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param int + */ + public function setIndex($index) + { + $this->index = $index; + } + /** + * @return int + */ + public function getIndex() + { + return $this->index; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setMaxValue($maxValue) + { + $this->maxValue = $maxValue; + } + /** + * @return string + */ + public function getMaxValue() + { + return $this->maxValue; + } + /** + * @param string + */ + public function setMinValue($minValue) + { + $this->minValue = $minValue; + } + /** + * @return string + */ + public function getMinValue() + { + return $this->minValue; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param CustomMetricParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetricParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return CustomMetricParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param string + */ + public function setScope($scope) + { + $this->scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomMetric'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetricParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetricParentLink.php new file mode 100644 index 000000000..2fecbf869 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetricParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetricParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomMetricParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetrics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetrics.php new file mode 100644 index 000000000..f7e0777c0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetrics.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return CustomMetric[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetrics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomMetrics'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLink.php new file mode 100644 index 000000000..43c5a81c2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLink.php @@ -0,0 +1,147 @@ +adWordsAccounts = $adWordsAccounts; + } + /** + * @return AdWordsAccount[] + */ + public function getAdWordsAccounts() + { + return $this->adWordsAccounts; + } + /** + * @param EntityAdWordsLinkEntity + */ + public function setEntity(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinkEntity $entity) + { + $this->entity = $entity; + } + /** + * @return EntityAdWordsLinkEntity + */ + public function getEntity() + { + return $this->entity; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string[] + */ + public function setProfileIds($profileIds) + { + $this->profileIds = $profileIds; + } + /** + * @return string[] + */ + public function getProfileIds() + { + return $this->profileIds; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityAdWordsLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinkEntity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinkEntity.php new file mode 100644 index 000000000..db70ce1c4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinkEntity.php @@ -0,0 +1,40 @@ +webPropertyRef = $webPropertyRef; + } + /** + * @return WebPropertyRef + */ + public function getWebPropertyRef() + { + return $this->webPropertyRef; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinkEntity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityAdWordsLinkEntity'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinks.php new file mode 100644 index 000000000..437e3a2a1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinks.php @@ -0,0 +1,149 @@ +items = $items; + } + /** + * @return EntityAdWordsLink[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityAdWordsLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLink.php new file mode 100644 index 000000000..bae296871 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLink.php @@ -0,0 +1,126 @@ +entity = $entity; + } + /** + * @return EntityUserLinkEntity + */ + public function getEntity() + { + return $this->entity; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param EntityUserLinkPermissions + */ + public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinkPermissions $permissions) + { + $this->permissions = $permissions; + } + /** + * @return EntityUserLinkPermissions + */ + public function getPermissions() + { + return $this->permissions; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param UserRef + */ + public function setUserRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserRef $userRef) + { + $this->userRef = $userRef; + } + /** + * @return UserRef + */ + public function getUserRef() + { + return $this->userRef; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkEntity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkEntity.php new file mode 100644 index 000000000..bccc7a98d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkEntity.php @@ -0,0 +1,72 @@ +accountRef = $accountRef; + } + /** + * @return AccountRef + */ + public function getAccountRef() + { + return $this->accountRef; + } + /** + * @param ProfileRef + */ + public function setProfileRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileRef $profileRef) + { + $this->profileRef = $profileRef; + } + /** + * @return ProfileRef + */ + public function getProfileRef() + { + return $this->profileRef; + } + /** + * @param WebPropertyRef + */ + public function setWebPropertyRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebPropertyRef $webPropertyRef) + { + $this->webPropertyRef = $webPropertyRef; + } + /** + * @return WebPropertyRef + */ + public function getWebPropertyRef() + { + return $this->webPropertyRef; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinkEntity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLinkEntity'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkPermissions.php new file mode 100644 index 000000000..d4d11c678 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkPermissions.php @@ -0,0 +1,61 @@ +effective = $effective; + } + /** + * @return string[] + */ + public function getEffective() + { + return $this->effective; + } + /** + * @param string[] + */ + public function setLocal($local) + { + $this->local = $local; + } + /** + * @return string[] + */ + public function getLocal() + { + return $this->local; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinkPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLinkPermissions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinks.php new file mode 100644 index 000000000..38fa41d73 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinks.php @@ -0,0 +1,149 @@ +items = $items; + } + /** + * @return EntityUserLink[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiment.php new file mode 100644 index 000000000..7007e8740 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiment.php @@ -0,0 +1,507 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param bool + */ + public function setEditableInGaUi($editableInGaUi) + { + $this->editableInGaUi = $editableInGaUi; + } + /** + * @return bool + */ + public function getEditableInGaUi() + { + return $this->editableInGaUi; + } + /** + * @param string + */ + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + /** + * @return string + */ + public function getEndTime() + { + return $this->endTime; + } + /** + * @param bool + */ + public function setEqualWeighting($equalWeighting) + { + $this->equalWeighting = $equalWeighting; + } + /** + * @return bool + */ + public function getEqualWeighting() + { + return $this->equalWeighting; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param int + */ + public function setMinimumExperimentLengthInDays($minimumExperimentLengthInDays) + { + $this->minimumExperimentLengthInDays = $minimumExperimentLengthInDays; + } + /** + * @return int + */ + public function getMinimumExperimentLengthInDays() + { + return $this->minimumExperimentLengthInDays; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setObjectiveMetric($objectiveMetric) + { + $this->objectiveMetric = $objectiveMetric; + } + /** + * @return string + */ + public function getObjectiveMetric() + { + return $this->objectiveMetric; + } + /** + * @param string + */ + public function setOptimizationType($optimizationType) + { + $this->optimizationType = $optimizationType; + } + /** + * @return string + */ + public function getOptimizationType() + { + return $this->optimizationType; + } + /** + * @param ExperimentParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ExperimentParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return ExperimentParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param string + */ + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + /** + * @return string + */ + public function getProfileId() + { + return $this->profileId; + } + /** + * @param string + */ + public function setReasonExperimentEnded($reasonExperimentEnded) + { + $this->reasonExperimentEnded = $reasonExperimentEnded; + } + /** + * @return string + */ + public function getReasonExperimentEnded() + { + return $this->reasonExperimentEnded; + } + /** + * @param bool + */ + public function setRewriteVariationUrlsAsOriginal($rewriteVariationUrlsAsOriginal) + { + $this->rewriteVariationUrlsAsOriginal = $rewriteVariationUrlsAsOriginal; + } + /** + * @return bool + */ + public function getRewriteVariationUrlsAsOriginal() + { + return $this->rewriteVariationUrlsAsOriginal; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setServingFramework($servingFramework) + { + $this->servingFramework = $servingFramework; + } + /** + * @return string + */ + public function getServingFramework() + { + return $this->servingFramework; + } + /** + * @param string + */ + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + /** + * @return string + */ + public function getSnippet() + { + return $this->snippet; + } + /** + * @param string + */ + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + /** + * @return string + */ + public function getStartTime() + { + return $this->startTime; + } + /** + * @param string + */ + public function setStatus($status) + { + $this->status = $status; + } + /** + * @return string + */ + public function getStatus() + { + return $this->status; + } + public function setTrafficCoverage($trafficCoverage) + { + $this->trafficCoverage = $trafficCoverage; + } + public function getTrafficCoverage() + { + return $this->trafficCoverage; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param ExperimentVariations[] + */ + public function setVariations($variations) + { + $this->variations = $variations; + } + /** + * @return ExperimentVariations[] + */ + public function getVariations() + { + return $this->variations; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } + public function setWinnerConfidenceLevel($winnerConfidenceLevel) + { + $this->winnerConfidenceLevel = $winnerConfidenceLevel; + } + public function getWinnerConfidenceLevel() + { + return $this->winnerConfidenceLevel; + } + /** + * @param bool + */ + public function setWinnerFound($winnerFound) + { + $this->winnerFound = $winnerFound; + } + /** + * @return bool + */ + public function getWinnerFound() + { + return $this->winnerFound; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Experiment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentParentLink.php new file mode 100644 index 000000000..2a4cd4b7f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ExperimentParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ExperimentParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentVariations.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentVariations.php new file mode 100644 index 000000000..ff74f27ae --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentVariations.php @@ -0,0 +1,105 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setStatus($status) + { + $this->status = $status; + } + /** + * @return string + */ + public function getStatus() + { + return $this->status; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } + public function setWeight($weight) + { + $this->weight = $weight; + } + public function getWeight() + { + return $this->weight; + } + /** + * @param bool + */ + public function setWon($won) + { + $this->won = $won; + } + /** + * @return bool + */ + public function getWon() + { + return $this->won; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ExperimentVariations::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ExperimentVariations'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiments.php new file mode 100644 index 000000000..7c93f29de --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiments.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return Experiment[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Experiments'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filter.php new file mode 100644 index 000000000..cd9986180 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filter.php @@ -0,0 +1,280 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param FilterAdvancedDetails + */ + public function setAdvancedDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterAdvancedDetails $advancedDetails) + { + $this->advancedDetails = $advancedDetails; + } + /** + * @return FilterAdvancedDetails + */ + public function getAdvancedDetails() + { + return $this->advancedDetails; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param FilterExpression + */ + public function setExcludeDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterExpression $excludeDetails) + { + $this->excludeDetails = $excludeDetails; + } + /** + * @return FilterExpression + */ + public function getExcludeDetails() + { + return $this->excludeDetails; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param FilterExpression + */ + public function setIncludeDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterExpression $includeDetails) + { + $this->includeDetails = $includeDetails; + } + /** + * @return FilterExpression + */ + public function getIncludeDetails() + { + return $this->includeDetails; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param FilterLowercaseDetails + */ + public function setLowercaseDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterLowercaseDetails $lowercaseDetails) + { + $this->lowercaseDetails = $lowercaseDetails; + } + /** + * @return FilterLowercaseDetails + */ + public function getLowercaseDetails() + { + return $this->lowercaseDetails; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param FilterParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return FilterParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param FilterSearchAndReplaceDetails + */ + public function setSearchAndReplaceDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterSearchAndReplaceDetails $searchAndReplaceDetails) + { + $this->searchAndReplaceDetails = $searchAndReplaceDetails; + } + /** + * @return FilterSearchAndReplaceDetails + */ + public function getSearchAndReplaceDetails() + { + return $this->searchAndReplaceDetails; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param FilterUppercaseDetails + */ + public function setUppercaseDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterUppercaseDetails $uppercaseDetails) + { + $this->uppercaseDetails = $uppercaseDetails; + } + /** + * @return FilterUppercaseDetails + */ + public function getUppercaseDetails() + { + return $this->uppercaseDetails; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Filter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterAdvancedDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterAdvancedDetails.php new file mode 100644 index 000000000..966d5363c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterAdvancedDetails.php @@ -0,0 +1,258 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setExtractA($extractA) + { + $this->extractA = $extractA; + } + /** + * @return string + */ + public function getExtractA() + { + return $this->extractA; + } + /** + * @param string + */ + public function setExtractB($extractB) + { + $this->extractB = $extractB; + } + /** + * @return string + */ + public function getExtractB() + { + return $this->extractB; + } + /** + * @param string + */ + public function setFieldA($fieldA) + { + $this->fieldA = $fieldA; + } + /** + * @return string + */ + public function getFieldA() + { + return $this->fieldA; + } + /** + * @param int + */ + public function setFieldAIndex($fieldAIndex) + { + $this->fieldAIndex = $fieldAIndex; + } + /** + * @return int + */ + public function getFieldAIndex() + { + return $this->fieldAIndex; + } + /** + * @param bool + */ + public function setFieldARequired($fieldARequired) + { + $this->fieldARequired = $fieldARequired; + } + /** + * @return bool + */ + public function getFieldARequired() + { + return $this->fieldARequired; + } + /** + * @param string + */ + public function setFieldB($fieldB) + { + $this->fieldB = $fieldB; + } + /** + * @return string + */ + public function getFieldB() + { + return $this->fieldB; + } + /** + * @param int + */ + public function setFieldBIndex($fieldBIndex) + { + $this->fieldBIndex = $fieldBIndex; + } + /** + * @return int + */ + public function getFieldBIndex() + { + return $this->fieldBIndex; + } + /** + * @param bool + */ + public function setFieldBRequired($fieldBRequired) + { + $this->fieldBRequired = $fieldBRequired; + } + /** + * @return bool + */ + public function getFieldBRequired() + { + return $this->fieldBRequired; + } + /** + * @param string + */ + public function setOutputConstructor($outputConstructor) + { + $this->outputConstructor = $outputConstructor; + } + /** + * @return string + */ + public function getOutputConstructor() + { + return $this->outputConstructor; + } + /** + * @param string + */ + public function setOutputToField($outputToField) + { + $this->outputToField = $outputToField; + } + /** + * @return string + */ + public function getOutputToField() + { + return $this->outputToField; + } + /** + * @param int + */ + public function setOutputToFieldIndex($outputToFieldIndex) + { + $this->outputToFieldIndex = $outputToFieldIndex; + } + /** + * @return int + */ + public function getOutputToFieldIndex() + { + return $this->outputToFieldIndex; + } + /** + * @param bool + */ + public function setOverrideOutputField($overrideOutputField) + { + $this->overrideOutputField = $overrideOutputField; + } + /** + * @return bool + */ + public function getOverrideOutputField() + { + return $this->overrideOutputField; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterAdvancedDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterAdvancedDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterExpression.php new file mode 100644 index 000000000..0fb1a1e14 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterExpression.php @@ -0,0 +1,132 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setExpressionValue($expressionValue) + { + $this->expressionValue = $expressionValue; + } + /** + * @return string + */ + public function getExpressionValue() + { + return $this->expressionValue; + } + /** + * @param string + */ + public function setField($field) + { + $this->field = $field; + } + /** + * @return string + */ + public function getField() + { + return $this->field; + } + /** + * @param int + */ + public function setFieldIndex($fieldIndex) + { + $this->fieldIndex = $fieldIndex; + } + /** + * @return int + */ + public function getFieldIndex() + { + return $this->fieldIndex; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + /** + * @return string + */ + public function getMatchType() + { + return $this->matchType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterExpression'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterLowercaseDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterLowercaseDetails.php new file mode 100644 index 000000000..1000f7355 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterLowercaseDetails.php @@ -0,0 +1,60 @@ +field = $field; + } + /** + * @return string + */ + public function getField() + { + return $this->field; + } + /** + * @param int + */ + public function setFieldIndex($fieldIndex) + { + $this->fieldIndex = $fieldIndex; + } + /** + * @return int + */ + public function getFieldIndex() + { + return $this->fieldIndex; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterLowercaseDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterLowercaseDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterParentLink.php new file mode 100644 index 000000000..b0a18519e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterRef.php new file mode 100644 index 000000000..7a25bf6d1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterRef.php @@ -0,0 +1,114 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setHref($href) + { + $this->href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterRef'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterSearchAndReplaceDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterSearchAndReplaceDetails.php new file mode 100644 index 000000000..1fb437fa0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterSearchAndReplaceDetails.php @@ -0,0 +1,114 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setField($field) + { + $this->field = $field; + } + /** + * @return string + */ + public function getField() + { + return $this->field; + } + /** + * @param int + */ + public function setFieldIndex($fieldIndex) + { + $this->fieldIndex = $fieldIndex; + } + /** + * @return int + */ + public function getFieldIndex() + { + return $this->fieldIndex; + } + /** + * @param string + */ + public function setReplaceString($replaceString) + { + $this->replaceString = $replaceString; + } + /** + * @return string + */ + public function getReplaceString() + { + return $this->replaceString; + } + /** + * @param string + */ + public function setSearchString($searchString) + { + $this->searchString = $searchString; + } + /** + * @return string + */ + public function getSearchString() + { + return $this->searchString; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterSearchAndReplaceDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterSearchAndReplaceDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterUppercaseDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterUppercaseDetails.php new file mode 100644 index 000000000..88870bc2d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterUppercaseDetails.php @@ -0,0 +1,60 @@ +field = $field; + } + /** + * @return string + */ + public function getField() + { + return $this->field; + } + /** + * @param int + */ + public function setFieldIndex($fieldIndex) + { + $this->fieldIndex = $fieldIndex; + } + /** + * @return int + */ + public function getFieldIndex() + { + return $this->fieldIndex; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterUppercaseDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterUppercaseDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filters.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filters.php new file mode 100644 index 000000000..7e38448ea --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filters.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return Filter[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Filters::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Filters'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaData.php new file mode 100644 index 000000000..3adad19f3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaData.php @@ -0,0 +1,323 @@ +columnHeaders = $columnHeaders; + } + /** + * @return GaDataColumnHeaders[] + */ + public function getColumnHeaders() + { + return $this->columnHeaders; + } + /** + * @param bool + */ + public function setContainsSampledData($containsSampledData) + { + $this->containsSampledData = $containsSampledData; + } + /** + * @return bool + */ + public function getContainsSampledData() + { + return $this->containsSampledData; + } + /** + * @param string + */ + public function setDataLastRefreshed($dataLastRefreshed) + { + $this->dataLastRefreshed = $dataLastRefreshed; + } + /** + * @return string + */ + public function getDataLastRefreshed() + { + return $this->dataLastRefreshed; + } + /** + * @param GaDataDataTable + */ + public function setDataTable(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTable $dataTable) + { + $this->dataTable = $dataTable; + } + /** + * @return GaDataDataTable + */ + public function getDataTable() + { + return $this->dataTable; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param GaDataProfileInfo + */ + public function setProfileInfo(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataProfileInfo $profileInfo) + { + $this->profileInfo = $profileInfo; + } + /** + * @return GaDataProfileInfo + */ + public function getProfileInfo() + { + return $this->profileInfo; + } + /** + * @param GaDataQuery + */ + public function setQuery(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataQuery $query) + { + $this->query = $query; + } + /** + * @return GaDataQuery + */ + public function getQuery() + { + return $this->query; + } + /** + * @param string[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return string[] + */ + public function getRows() + { + return $this->rows; + } + /** + * @param string + */ + public function setSampleSize($sampleSize) + { + $this->sampleSize = $sampleSize; + } + /** + * @return string + */ + public function getSampleSize() + { + return $this->sampleSize; + } + /** + * @param string + */ + public function setSampleSpace($sampleSpace) + { + $this->sampleSpace = $sampleSpace; + } + /** + * @return string + */ + public function getSampleSpace() + { + return $this->sampleSpace; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string[] + */ + public function setTotalsForAllResults($totalsForAllResults) + { + $this->totalsForAllResults = $totalsForAllResults; + } + /** + * @return string[] + */ + public function getTotalsForAllResults() + { + return $this->totalsForAllResults; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataColumnHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataColumnHeaders.php new file mode 100644 index 000000000..2535bc831 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataColumnHeaders.php @@ -0,0 +1,78 @@ +columnType = $columnType; + } + /** + * @return string + */ + public function getColumnType() + { + return $this->columnType; + } + /** + * @param string + */ + public function setDataType($dataType) + { + $this->dataType = $dataType; + } + /** + * @return string + */ + public function getDataType() + { + return $this->dataType; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataColumnHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataColumnHeaders'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTable.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTable.php new file mode 100644 index 000000000..1ecb3cce0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTable.php @@ -0,0 +1,57 @@ +cols = $cols; + } + /** + * @return GaDataDataTableCols[] + */ + public function getCols() + { + return $this->cols; + } + /** + * @param GaDataDataTableRows[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return GaDataDataTableRows[] + */ + public function getRows() + { + return $this->rows; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTable::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTable'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableCols.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableCols.php new file mode 100644 index 000000000..f9d519a21 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableCols.php @@ -0,0 +1,78 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setLabel($label) + { + $this->label = $label; + } + /** + * @return string + */ + public function getLabel() + { + return $this->label; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTableCols::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTableCols'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRows.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRows.php new file mode 100644 index 000000000..04b30fe95 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRows.php @@ -0,0 +1,41 @@ +c = $c; + } + /** + * @return GaDataDataTableRowsC[] + */ + public function getC() + { + return $this->c; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTableRows::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTableRows'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRowsC.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRowsC.php new file mode 100644 index 000000000..6d6b989e2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRowsC.php @@ -0,0 +1,42 @@ +v = $v; + } + /** + * @return string + */ + public function getV() + { + return $this->v; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTableRowsC::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTableRowsC'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataProfileInfo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataProfileInfo.php new file mode 100644 index 000000000..08f71ed85 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataProfileInfo.php @@ -0,0 +1,132 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + /** + * @return string + */ + public function getProfileId() + { + return $this->profileId; + } + /** + * @param string + */ + public function setProfileName($profileName) + { + $this->profileName = $profileName; + } + /** + * @return string + */ + public function getProfileName() + { + return $this->profileName; + } + /** + * @param string + */ + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + /** + * @return string + */ + public function getTableId() + { + return $this->tableId; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataProfileInfo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataProfileInfo'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataQuery.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataQuery.php new file mode 100644 index 000000000..92c679f51 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataQuery.php @@ -0,0 +1,224 @@ + "end-date", "maxResults" => "max-results", "startDate" => "start-date", "startIndex" => "start-index"]; + /** + * @var string + */ + public $dimensions; + /** + * @var string + */ + public $endDate; + /** + * @var string + */ + public $filters; + /** + * @var string + */ + public $ids; + /** + * @var int + */ + public $maxResults; + /** + * @var string[] + */ + public $metrics; + /** + * @var string + */ + public $samplingLevel; + /** + * @var string + */ + public $segment; + /** + * @var string[] + */ + public $sort; + /** + * @var string + */ + public $startDate; + /** + * @var int + */ + public $startIndex; + /** + * @param string + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return string + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param string + */ + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + /** + * @return string + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param string + */ + public function setFilters($filters) + { + $this->filters = $filters; + } + /** + * @return string + */ + public function getFilters() + { + return $this->filters; + } + /** + * @param string + */ + public function setIds($ids) + { + $this->ids = $ids; + } + /** + * @return string + */ + public function getIds() + { + return $this->ids; + } + /** + * @param int + */ + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + /** + * @return int + */ + public function getMaxResults() + { + return $this->maxResults; + } + /** + * @param string[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return string[] + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param string + */ + public function setSamplingLevel($samplingLevel) + { + $this->samplingLevel = $samplingLevel; + } + /** + * @return string + */ + public function getSamplingLevel() + { + return $this->samplingLevel; + } + /** + * @param string + */ + public function setSegment($segment) + { + $this->segment = $segment; + } + /** + * @return string + */ + public function getSegment() + { + return $this->segment; + } + /** + * @param string[] + */ + public function setSort($sort) + { + $this->sort = $sort; + } + /** + * @return string[] + */ + public function getSort() + { + return $this->sort; + } + /** + * @param string + */ + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + /** + * @return string + */ + public function getStartDate() + { + return $this->startDate; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataQuery::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataQuery'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goal.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goal.php new file mode 100644 index 000000000..8964f2732 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goal.php @@ -0,0 +1,338 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param bool + */ + public function setActive($active) + { + $this->active = $active; + } + /** + * @return bool + */ + public function getActive() + { + return $this->active; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param GoalEventDetails + */ + public function setEventDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalEventDetails $eventDetails) + { + $this->eventDetails = $eventDetails; + } + /** + * @return GoalEventDetails + */ + public function getEventDetails() + { + return $this->eventDetails; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param GoalParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return GoalParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param string + */ + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + /** + * @return string + */ + public function getProfileId() + { + return $this->profileId; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param GoalUrlDestinationDetails + */ + public function setUrlDestinationDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalUrlDestinationDetails $urlDestinationDetails) + { + $this->urlDestinationDetails = $urlDestinationDetails; + } + /** + * @return GoalUrlDestinationDetails + */ + public function getUrlDestinationDetails() + { + return $this->urlDestinationDetails; + } + /** + * @param float + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return float + */ + public function getValue() + { + return $this->value; + } + /** + * @param GoalVisitNumPagesDetails + */ + public function setVisitNumPagesDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitNumPagesDetails $visitNumPagesDetails) + { + $this->visitNumPagesDetails = $visitNumPagesDetails; + } + /** + * @return GoalVisitNumPagesDetails + */ + public function getVisitNumPagesDetails() + { + return $this->visitNumPagesDetails; + } + /** + * @param GoalVisitTimeOnSiteDetails + */ + public function setVisitTimeOnSiteDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitTimeOnSiteDetails $visitTimeOnSiteDetails) + { + $this->visitTimeOnSiteDetails = $visitTimeOnSiteDetails; + } + /** + * @return GoalVisitTimeOnSiteDetails + */ + public function getVisitTimeOnSiteDetails() + { + return $this->visitTimeOnSiteDetails; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Goal'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetails.php new file mode 100644 index 000000000..545f520d2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetails.php @@ -0,0 +1,59 @@ +eventConditions = $eventConditions; + } + /** + * @return GoalEventDetailsEventConditions[] + */ + public function getEventConditions() + { + return $this->eventConditions; + } + /** + * @param bool + */ + public function setUseEventValue($useEventValue) + { + $this->useEventValue = $useEventValue; + } + /** + * @return bool + */ + public function getUseEventValue() + { + return $this->useEventValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalEventDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalEventDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetailsEventConditions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetailsEventConditions.php new file mode 100644 index 000000000..be454caa0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetailsEventConditions.php @@ -0,0 +1,114 @@ +comparisonType = $comparisonType; + } + /** + * @return string + */ + public function getComparisonType() + { + return $this->comparisonType; + } + /** + * @param string + */ + public function setComparisonValue($comparisonValue) + { + $this->comparisonValue = $comparisonValue; + } + /** + * @return string + */ + public function getComparisonValue() + { + return $this->comparisonValue; + } + /** + * @param string + */ + public function setExpression($expression) + { + $this->expression = $expression; + } + /** + * @return string + */ + public function getExpression() + { + return $this->expression; + } + /** + * @param string + */ + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + /** + * @return string + */ + public function getMatchType() + { + return $this->matchType; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalEventDetailsEventConditions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalEventDetailsEventConditions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalParentLink.php new file mode 100644 index 000000000..5338b65e0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetails.php new file mode 100644 index 000000000..8a180f5cf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetails.php @@ -0,0 +1,113 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param bool + */ + public function setFirstStepRequired($firstStepRequired) + { + $this->firstStepRequired = $firstStepRequired; + } + /** + * @return bool + */ + public function getFirstStepRequired() + { + return $this->firstStepRequired; + } + /** + * @param string + */ + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + /** + * @return string + */ + public function getMatchType() + { + return $this->matchType; + } + /** + * @param GoalUrlDestinationDetailsSteps[] + */ + public function setSteps($steps) + { + $this->steps = $steps; + } + /** + * @return GoalUrlDestinationDetailsSteps[] + */ + public function getSteps() + { + return $this->steps; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalUrlDestinationDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalUrlDestinationDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetailsSteps.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetailsSteps.php new file mode 100644 index 000000000..07052c368 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetailsSteps.php @@ -0,0 +1,78 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param int + */ + public function setNumber($number) + { + $this->number = $number; + } + /** + * @return int + */ + public function getNumber() + { + return $this->number; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalUrlDestinationDetailsSteps::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalUrlDestinationDetailsSteps'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitNumPagesDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitNumPagesDetails.php new file mode 100644 index 000000000..60d45baa8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitNumPagesDetails.php @@ -0,0 +1,60 @@ +comparisonType = $comparisonType; + } + /** + * @return string + */ + public function getComparisonType() + { + return $this->comparisonType; + } + /** + * @param string + */ + public function setComparisonValue($comparisonValue) + { + $this->comparisonValue = $comparisonValue; + } + /** + * @return string + */ + public function getComparisonValue() + { + return $this->comparisonValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitNumPagesDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalVisitNumPagesDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitTimeOnSiteDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitTimeOnSiteDetails.php new file mode 100644 index 000000000..f57e80e41 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitTimeOnSiteDetails.php @@ -0,0 +1,60 @@ +comparisonType = $comparisonType; + } + /** + * @return string + */ + public function getComparisonType() + { + return $this->comparisonType; + } + /** + * @param string + */ + public function setComparisonValue($comparisonValue) + { + $this->comparisonValue = $comparisonValue; + } + /** + * @return string + */ + public function getComparisonValue() + { + return $this->comparisonValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitTimeOnSiteDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalVisitTimeOnSiteDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goals.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goals.php new file mode 100644 index 000000000..c2f40f585 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goals.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return Goal[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Goals::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Goals'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdRequest.php new file mode 100644 index 000000000..1c2a52864 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdRequest.php @@ -0,0 +1,78 @@ +clientId = $clientId; + } + /** + * @return string + */ + public function getClientId() + { + return $this->clientId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_HashClientIdRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdResponse.php new file mode 100644 index 000000000..a6024ec3d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdResponse.php @@ -0,0 +1,96 @@ +clientId = $clientId; + } + /** + * @return string + */ + public function getClientId() + { + return $this->clientId; + } + /** + * @param string + */ + public function setHashedClientId($hashedClientId) + { + $this->hashedClientId = $hashedClientId; + } + /** + * @return string + */ + public function getHashedClientId() + { + return $this->hashedClientId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_HashClientIdResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/IncludeConditions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/IncludeConditions.php new file mode 100644 index 000000000..232828918 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/IncludeConditions.php @@ -0,0 +1,114 @@ +daysToLookBack = $daysToLookBack; + } + /** + * @return int + */ + public function getDaysToLookBack() + { + return $this->daysToLookBack; + } + /** + * @param bool + */ + public function setIsSmartList($isSmartList) + { + $this->isSmartList = $isSmartList; + } + /** + * @return bool + */ + public function getIsSmartList() + { + return $this->isSmartList; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param int + */ + public function setMembershipDurationDays($membershipDurationDays) + { + $this->membershipDurationDays = $membershipDurationDays; + } + /** + * @return int + */ + public function getMembershipDurationDays() + { + return $this->membershipDurationDays; + } + /** + * @param string + */ + public function setSegment($segment) + { + $this->segment = $segment; + } + /** + * @return string + */ + public function getSegment() + { + return $this->segment; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\IncludeConditions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_IncludeConditions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/LinkedForeignAccount.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/LinkedForeignAccount.php new file mode 100644 index 000000000..418c90451 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/LinkedForeignAccount.php @@ -0,0 +1,204 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param bool + */ + public function setEligibleForSearch($eligibleForSearch) + { + $this->eligibleForSearch = $eligibleForSearch; + } + /** + * @return bool + */ + public function getEligibleForSearch() + { + return $this->eligibleForSearch; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setLinkedAccountId($linkedAccountId) + { + $this->linkedAccountId = $linkedAccountId; + } + /** + * @return string + */ + public function getLinkedAccountId() + { + return $this->linkedAccountId; + } + /** + * @param string + */ + public function setRemarketingAudienceId($remarketingAudienceId) + { + $this->remarketingAudienceId = $remarketingAudienceId; + } + /** + * @return string + */ + public function getRemarketingAudienceId() + { + return $this->remarketingAudienceId; + } + /** + * @param string + */ + public function setStatus($status) + { + $this->status = $status; + } + /** + * @return string + */ + public function getStatus() + { + return $this->status; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\LinkedForeignAccount::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_LinkedForeignAccount'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfData.php new file mode 100644 index 000000000..be9d07168 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfData.php @@ -0,0 +1,287 @@ +columnHeaders = $columnHeaders; + } + /** + * @return McfDataColumnHeaders[] + */ + public function getColumnHeaders() + { + return $this->columnHeaders; + } + /** + * @param bool + */ + public function setContainsSampledData($containsSampledData) + { + $this->containsSampledData = $containsSampledData; + } + /** + * @return bool + */ + public function getContainsSampledData() + { + return $this->containsSampledData; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param McfDataProfileInfo + */ + public function setProfileInfo(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataProfileInfo $profileInfo) + { + $this->profileInfo = $profileInfo; + } + /** + * @return McfDataProfileInfo + */ + public function getProfileInfo() + { + return $this->profileInfo; + } + /** + * @param McfDataQuery + */ + public function setQuery(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataQuery $query) + { + $this->query = $query; + } + /** + * @return McfDataQuery + */ + public function getQuery() + { + return $this->query; + } + /** + * @param McfDataRows[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return McfDataRows[] + */ + public function getRows() + { + return $this->rows; + } + /** + * @param string + */ + public function setSampleSize($sampleSize) + { + $this->sampleSize = $sampleSize; + } + /** + * @return string + */ + public function getSampleSize() + { + return $this->sampleSize; + } + /** + * @param string + */ + public function setSampleSpace($sampleSpace) + { + $this->sampleSpace = $sampleSpace; + } + /** + * @return string + */ + public function getSampleSpace() + { + return $this->sampleSpace; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string[] + */ + public function setTotalsForAllResults($totalsForAllResults) + { + $this->totalsForAllResults = $totalsForAllResults; + } + /** + * @return string[] + */ + public function getTotalsForAllResults() + { + return $this->totalsForAllResults; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataColumnHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataColumnHeaders.php new file mode 100644 index 000000000..76741e993 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataColumnHeaders.php @@ -0,0 +1,78 @@ +columnType = $columnType; + } + /** + * @return string + */ + public function getColumnType() + { + return $this->columnType; + } + /** + * @param string + */ + public function setDataType($dataType) + { + $this->dataType = $dataType; + } + /** + * @return string + */ + public function getDataType() + { + return $this->dataType; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataColumnHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataColumnHeaders'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataProfileInfo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataProfileInfo.php new file mode 100644 index 000000000..05c609878 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataProfileInfo.php @@ -0,0 +1,132 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + /** + * @return string + */ + public function getProfileId() + { + return $this->profileId; + } + /** + * @param string + */ + public function setProfileName($profileName) + { + $this->profileName = $profileName; + } + /** + * @return string + */ + public function getProfileName() + { + return $this->profileName; + } + /** + * @param string + */ + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + /** + * @return string + */ + public function getTableId() + { + return $this->tableId; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataProfileInfo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataProfileInfo'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataQuery.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataQuery.php new file mode 100644 index 000000000..e4e870cb9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataQuery.php @@ -0,0 +1,224 @@ + "end-date", "maxResults" => "max-results", "startDate" => "start-date", "startIndex" => "start-index"]; + /** + * @var string + */ + public $dimensions; + /** + * @var string + */ + public $endDate; + /** + * @var string + */ + public $filters; + /** + * @var string + */ + public $ids; + /** + * @var int + */ + public $maxResults; + /** + * @var string[] + */ + public $metrics; + /** + * @var string + */ + public $samplingLevel; + /** + * @var string + */ + public $segment; + /** + * @var string[] + */ + public $sort; + /** + * @var string + */ + public $startDate; + /** + * @var int + */ + public $startIndex; + /** + * @param string + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return string + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param string + */ + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + /** + * @return string + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param string + */ + public function setFilters($filters) + { + $this->filters = $filters; + } + /** + * @return string + */ + public function getFilters() + { + return $this->filters; + } + /** + * @param string + */ + public function setIds($ids) + { + $this->ids = $ids; + } + /** + * @return string + */ + public function getIds() + { + return $this->ids; + } + /** + * @param int + */ + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + /** + * @return int + */ + public function getMaxResults() + { + return $this->maxResults; + } + /** + * @param string[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return string[] + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param string + */ + public function setSamplingLevel($samplingLevel) + { + $this->samplingLevel = $samplingLevel; + } + /** + * @return string + */ + public function getSamplingLevel() + { + return $this->samplingLevel; + } + /** + * @param string + */ + public function setSegment($segment) + { + $this->segment = $segment; + } + /** + * @return string + */ + public function getSegment() + { + return $this->segment; + } + /** + * @param string[] + */ + public function setSort($sort) + { + $this->sort = $sort; + } + /** + * @return string[] + */ + public function getSort() + { + return $this->sort; + } + /** + * @param string + */ + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + /** + * @return string + */ + public function getStartDate() + { + return $this->startDate; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataQuery::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataQuery'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRows.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRows.php new file mode 100644 index 000000000..bc3833360 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRows.php @@ -0,0 +1,59 @@ +conversionPathValue = $conversionPathValue; + } + /** + * @return McfDataRowsConversionPathValue[] + */ + public function getConversionPathValue() + { + return $this->conversionPathValue; + } + /** + * @param string + */ + public function setPrimitiveValue($primitiveValue) + { + $this->primitiveValue = $primitiveValue; + } + /** + * @return string + */ + public function getPrimitiveValue() + { + return $this->primitiveValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataRows::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataRows'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRowsConversionPathValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRowsConversionPathValue.php new file mode 100644 index 000000000..93d9af54f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRowsConversionPathValue.php @@ -0,0 +1,60 @@ +interactionType = $interactionType; + } + /** + * @return string + */ + public function getInteractionType() + { + return $this->interactionType; + } + /** + * @param string + */ + public function setNodeValue($nodeValue) + { + $this->nodeValue = $nodeValue; + } + /** + * @return string + */ + public function getNodeValue() + { + return $this->nodeValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataRowsConversionPathValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataRowsConversionPathValue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profile.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profile.php new file mode 100644 index 000000000..f60a018d8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profile.php @@ -0,0 +1,486 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param bool + */ + public function setBotFilteringEnabled($botFilteringEnabled) + { + $this->botFilteringEnabled = $botFilteringEnabled; + } + /** + * @return bool + */ + public function getBotFilteringEnabled() + { + return $this->botFilteringEnabled; + } + /** + * @param ProfileChildLink + */ + public function setChildLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileChildLink $childLink) + { + $this->childLink = $childLink; + } + /** + * @return ProfileChildLink + */ + public function getChildLink() + { + return $this->childLink; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setCurrency($currency) + { + $this->currency = $currency; + } + /** + * @return string + */ + public function getCurrency() + { + return $this->currency; + } + /** + * @param string + */ + public function setDefaultPage($defaultPage) + { + $this->defaultPage = $defaultPage; + } + /** + * @return string + */ + public function getDefaultPage() + { + return $this->defaultPage; + } + /** + * @param bool + */ + public function setECommerceTracking($eCommerceTracking) + { + $this->eCommerceTracking = $eCommerceTracking; + } + /** + * @return bool + */ + public function getECommerceTracking() + { + return $this->eCommerceTracking; + } + /** + * @param bool + */ + public function setEnhancedECommerceTracking($enhancedECommerceTracking) + { + $this->enhancedECommerceTracking = $enhancedECommerceTracking; + } + /** + * @return bool + */ + public function getEnhancedECommerceTracking() + { + return $this->enhancedECommerceTracking; + } + /** + * @param string + */ + public function setExcludeQueryParameters($excludeQueryParameters) + { + $this->excludeQueryParameters = $excludeQueryParameters; + } + /** + * @return string + */ + public function getExcludeQueryParameters() + { + return $this->excludeQueryParameters; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param ProfileParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return ProfileParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param ProfilePermissions + */ + public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfilePermissions $permissions) + { + $this->permissions = $permissions; + } + /** + * @return ProfilePermissions + */ + public function getPermissions() + { + return $this->permissions; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setSiteSearchCategoryParameters($siteSearchCategoryParameters) + { + $this->siteSearchCategoryParameters = $siteSearchCategoryParameters; + } + /** + * @return string + */ + public function getSiteSearchCategoryParameters() + { + return $this->siteSearchCategoryParameters; + } + /** + * @param string + */ + public function setSiteSearchQueryParameters($siteSearchQueryParameters) + { + $this->siteSearchQueryParameters = $siteSearchQueryParameters; + } + /** + * @return string + */ + public function getSiteSearchQueryParameters() + { + return $this->siteSearchQueryParameters; + } + /** + * @param bool + */ + public function setStarred($starred) + { + $this->starred = $starred; + } + /** + * @return bool + */ + public function getStarred() + { + return $this->starred; + } + /** + * @param bool + */ + public function setStripSiteSearchCategoryParameters($stripSiteSearchCategoryParameters) + { + $this->stripSiteSearchCategoryParameters = $stripSiteSearchCategoryParameters; + } + /** + * @return bool + */ + public function getStripSiteSearchCategoryParameters() + { + return $this->stripSiteSearchCategoryParameters; + } + /** + * @param bool + */ + public function setStripSiteSearchQueryParameters($stripSiteSearchQueryParameters) + { + $this->stripSiteSearchQueryParameters = $stripSiteSearchQueryParameters; + } + /** + * @return bool + */ + public function getStripSiteSearchQueryParameters() + { + return $this->stripSiteSearchQueryParameters; + } + /** + * @param string + */ + public function setTimezone($timezone) + { + $this->timezone = $timezone; + } + /** + * @return string + */ + public function getTimezone() + { + return $this->timezone; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } + /** + * @param string + */ + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + /** + * @return string + */ + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Profile'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileChildLink.php new file mode 100644 index 000000000..9d01ef0d5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileChildLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileChildLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLink.php new file mode 100644 index 000000000..06b772b26 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLink.php @@ -0,0 +1,128 @@ +filterRef = $filterRef; + } + /** + * @return FilterRef + */ + public function getFilterRef() + { + return $this->filterRef; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param ProfileRef + */ + public function setProfileRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileRef $profileRef) + { + $this->profileRef = $profileRef; + } + /** + * @return ProfileRef + */ + public function getProfileRef() + { + return $this->profileRef; + } + /** + * @param int + */ + public function setRank($rank) + { + $this->rank = $rank; + } + /** + * @return int + */ + public function getRank() + { + return $this->rank; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileFilterLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLinks.php new file mode 100644 index 000000000..da7d44b1f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLinks.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return ProfileFilterLink[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileFilterLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileParentLink.php new file mode 100644 index 000000000..849289632 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfilePermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfilePermissions.php new file mode 100644 index 000000000..a0ff859b2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfilePermissions.php @@ -0,0 +1,43 @@ +effective = $effective; + } + /** + * @return string[] + */ + public function getEffective() + { + return $this->effective; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfilePermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfilePermissions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileRef.php new file mode 100644 index 000000000..8575bb0b3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileRef.php @@ -0,0 +1,150 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setHref($href) + { + $this->href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileRef'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileSummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileSummary.php new file mode 100644 index 000000000..afdddeb0e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileSummary.php @@ -0,0 +1,114 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param bool + */ + public function setStarred($starred) + { + $this->starred = $starred; + } + /** + * @return bool + */ + public function getStarred() + { + return $this->starred; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileSummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileSummary'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profiles.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profiles.php new file mode 100644 index 000000000..6f24f0c41 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profiles.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return Profile[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profiles::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Profiles'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeData.php new file mode 100644 index 000000000..2c1f5781d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeData.php @@ -0,0 +1,181 @@ +columnHeaders = $columnHeaders; + } + /** + * @return RealtimeDataColumnHeaders[] + */ + public function getColumnHeaders() + { + return $this->columnHeaders; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param RealtimeDataProfileInfo + */ + public function setProfileInfo(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataProfileInfo $profileInfo) + { + $this->profileInfo = $profileInfo; + } + /** + * @return RealtimeDataProfileInfo + */ + public function getProfileInfo() + { + return $this->profileInfo; + } + /** + * @param RealtimeDataQuery + */ + public function setQuery(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataQuery $query) + { + $this->query = $query; + } + /** + * @return RealtimeDataQuery + */ + public function getQuery() + { + return $this->query; + } + /** + * @param string[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return string[] + */ + public function getRows() + { + return $this->rows; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string[] + */ + public function setTotalsForAllResults($totalsForAllResults) + { + $this->totalsForAllResults = $totalsForAllResults; + } + /** + * @return string[] + */ + public function getTotalsForAllResults() + { + return $this->totalsForAllResults; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataColumnHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataColumnHeaders.php new file mode 100644 index 000000000..481d139ea --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataColumnHeaders.php @@ -0,0 +1,78 @@ +columnType = $columnType; + } + /** + * @return string + */ + public function getColumnType() + { + return $this->columnType; + } + /** + * @param string + */ + public function setDataType($dataType) + { + $this->dataType = $dataType; + } + /** + * @return string + */ + public function getDataType() + { + return $this->dataType; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataColumnHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeDataColumnHeaders'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataProfileInfo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataProfileInfo.php new file mode 100644 index 000000000..d673b30da --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataProfileInfo.php @@ -0,0 +1,132 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + /** + * @return string + */ + public function getProfileId() + { + return $this->profileId; + } + /** + * @param string + */ + public function setProfileName($profileName) + { + $this->profileName = $profileName; + } + /** + * @return string + */ + public function getProfileName() + { + return $this->profileName; + } + /** + * @param string + */ + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + /** + * @return string + */ + public function getTableId() + { + return $this->tableId; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataProfileInfo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeDataProfileInfo'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataQuery.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataQuery.php new file mode 100644 index 000000000..2007bdc9c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataQuery.php @@ -0,0 +1,134 @@ + "max-results"]; + /** + * @var string + */ + public $dimensions; + /** + * @var string + */ + public $filters; + /** + * @var string + */ + public $ids; + /** + * @var int + */ + public $maxResults; + /** + * @var string[] + */ + public $metrics; + /** + * @var string[] + */ + public $sort; + /** + * @param string + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return string + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param string + */ + public function setFilters($filters) + { + $this->filters = $filters; + } + /** + * @return string + */ + public function getFilters() + { + return $this->filters; + } + /** + * @param string + */ + public function setIds($ids) + { + $this->ids = $ids; + } + /** + * @return string + */ + public function getIds() + { + return $this->ids; + } + /** + * @param int + */ + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + /** + * @return int + */ + public function getMaxResults() + { + return $this->maxResults; + } + /** + * @param string[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return string[] + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param string[] + */ + public function setSort($sort) + { + $this->sort = $sort; + } + /** + * @return string[] + */ + public function getSort() + { + return $this->sort; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataQuery::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeDataQuery'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudience.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudience.php new file mode 100644 index 000000000..80cefd063 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudience.php @@ -0,0 +1,271 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param RemarketingAudienceAudienceDefinition + */ + public function setAudienceDefinition(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceAudienceDefinition $audienceDefinition) + { + $this->audienceDefinition = $audienceDefinition; + } + /** + * @return RemarketingAudienceAudienceDefinition + */ + public function getAudienceDefinition() + { + return $this->audienceDefinition; + } + /** + * @param string + */ + public function setAudienceType($audienceType) + { + $this->audienceType = $audienceType; + } + /** + * @return string + */ + public function getAudienceType() + { + return $this->audienceType; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param LinkedForeignAccount[] + */ + public function setLinkedAdAccounts($linkedAdAccounts) + { + $this->linkedAdAccounts = $linkedAdAccounts; + } + /** + * @return LinkedForeignAccount[] + */ + public function getLinkedAdAccounts() + { + return $this->linkedAdAccounts; + } + /** + * @param string[] + */ + public function setLinkedViews($linkedViews) + { + $this->linkedViews = $linkedViews; + } + /** + * @return string[] + */ + public function getLinkedViews() + { + return $this->linkedViews; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param RemarketingAudienceStateBasedAudienceDefinition + */ + public function setStateBasedAudienceDefinition(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceStateBasedAudienceDefinition $stateBasedAudienceDefinition) + { + $this->stateBasedAudienceDefinition = $stateBasedAudienceDefinition; + } + /** + * @return RemarketingAudienceStateBasedAudienceDefinition + */ + public function getStateBasedAudienceDefinition() + { + return $this->stateBasedAudienceDefinition; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudience'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceAudienceDefinition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceAudienceDefinition.php new file mode 100644 index 000000000..00b66cc83 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceAudienceDefinition.php @@ -0,0 +1,40 @@ +includeConditions = $includeConditions; + } + /** + * @return IncludeConditions + */ + public function getIncludeConditions() + { + return $this->includeConditions; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceAudienceDefinition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudienceAudienceDefinition'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinition.php new file mode 100644 index 000000000..f936b5aa9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinition.php @@ -0,0 +1,56 @@ +excludeConditions = $excludeConditions; + } + /** + * @return RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions + */ + public function getExcludeConditions() + { + return $this->excludeConditions; + } + /** + * @param IncludeConditions + */ + public function setIncludeConditions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\IncludeConditions $includeConditions) + { + $this->includeConditions = $includeConditions; + } + /** + * @return IncludeConditions + */ + public function getIncludeConditions() + { + return $this->includeConditions; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceStateBasedAudienceDefinition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudienceStateBasedAudienceDefinition'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions.php new file mode 100644 index 000000000..c9238a6ba --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions.php @@ -0,0 +1,60 @@ +exclusionDuration = $exclusionDuration; + } + /** + * @return string + */ + public function getExclusionDuration() + { + return $this->exclusionDuration; + } + /** + * @param string + */ + public function setSegment($segment) + { + $this->segment = $segment; + } + /** + * @return string + */ + public function getSegment() + { + return $this->segment; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudiences.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudiences.php new file mode 100644 index 000000000..83bcf993f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudiences.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return RemarketingAudience[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudiences::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudiences'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Data.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Data.php new file mode 100644 index 000000000..447e5aa3f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Data.php @@ -0,0 +1,32 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $data = $analyticsService->data; + * + */ +class Data extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Data::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Data'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataGa.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataGa.php new file mode 100644 index 000000000..b796c05a4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataGa.php @@ -0,0 +1,72 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $ga = $analyticsService->ga; + * + */ +class DataGa extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Returns Analytics data for a view (profile). (ga.get) + * + * @param string $ids Unique table ID for retrieving Analytics data. Table ID is + * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID. + * @param string $startDate Start date for fetching Analytics data. Requests can + * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g., + * today, yesterday, or 7daysAgo). The default value is 7daysAgo. + * @param string $endDate End date for fetching Analytics data. Request can + * should specify an end date formatted as YYYY-MM-DD, or as a relative date + * (e.g., today, yesterday, or 7daysAgo). The default value is yesterday. + * @param string $metrics A comma-separated list of Analytics metrics. E.g., + * 'ga:sessions,ga:pageviews'. At least one metric must be specified. + * @param array $optParams Optional parameters. + * + * @opt_param string dimensions A comma-separated list of Analytics dimensions. + * E.g., 'ga:browser,ga:city'. + * @opt_param string filters A comma-separated list of dimension or metric + * filters to be applied to Analytics data. + * @opt_param bool include-empty-rows The response will include empty rows if + * this parameter is set to true, the default is true + * @opt_param int max-results The maximum number of entries to include in this + * feed. + * @opt_param string output The selected format for the response. Default format + * is JSON. + * @opt_param string samplingLevel The desired sampling level. + * @opt_param string segment An Analytics segment to be applied to data. + * @opt_param string sort A comma-separated list of dimensions or metrics that + * determine the sort order for Analytics data. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return GaData + */ + public function get($ids, $startDate, $endDate, $metrics, $optParams = []) + { + $params = ['ids' => $ids, 'start-date' => $startDate, 'end-date' => $endDate, 'metrics' => $metrics]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\GaData::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataGa::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_DataGa'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataMcf.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataMcf.php new file mode 100644 index 000000000..195efa433 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataMcf.php @@ -0,0 +1,68 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $mcf = $analyticsService->mcf; + * + */ +class DataMcf extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Returns Analytics Multi-Channel Funnels data for a view (profile). (mcf.get) + * + * @param string $ids Unique table ID for retrieving Analytics data. Table ID is + * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID. + * @param string $startDate Start date for fetching Analytics data. Requests can + * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g., + * today, yesterday, or 7daysAgo). The default value is 7daysAgo. + * @param string $endDate End date for fetching Analytics data. Requests can + * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g., + * today, yesterday, or 7daysAgo). The default value is 7daysAgo. + * @param string $metrics A comma-separated list of Multi-Channel Funnels + * metrics. E.g., 'mcf:totalConversions,mcf:totalConversionValue'. At least one + * metric must be specified. + * @param array $optParams Optional parameters. + * + * @opt_param string dimensions A comma-separated list of Multi-Channel Funnels + * dimensions. E.g., 'mcf:source,mcf:medium'. + * @opt_param string filters A comma-separated list of dimension or metric + * filters to be applied to the Analytics data. + * @opt_param int max-results The maximum number of entries to include in this + * feed. + * @opt_param string samplingLevel The desired sampling level. + * @opt_param string sort A comma-separated list of dimensions or metrics that + * determine the sort order for the Analytics data. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return McfData + */ + public function get($ids, $startDate, $endDate, $metrics, $optParams = []) + { + $params = ['ids' => $ids, 'start-date' => $startDate, 'end-date' => $endDate, 'metrics' => $metrics]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\McfData::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataMcf::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_DataMcf'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataRealtime.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataRealtime.php new file mode 100644 index 000000000..6c44ea45e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataRealtime.php @@ -0,0 +1,58 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $realtime = $analyticsService->realtime; + * + */ +class DataRealtime extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Returns real time data for a view (profile). (realtime.get) + * + * @param string $ids Unique table ID for retrieving real time data. Table ID is + * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID. + * @param string $metrics A comma-separated list of real time metrics. E.g., + * 'rt:activeUsers'. At least one metric must be specified. + * @param array $optParams Optional parameters. + * + * @opt_param string dimensions A comma-separated list of real time dimensions. + * E.g., 'rt:medium,rt:city'. + * @opt_param string filters A comma-separated list of dimension or metric + * filters to be applied to real time data. + * @opt_param int max-results The maximum number of entries to include in this + * feed. + * @opt_param string sort A comma-separated list of dimensions or metrics that + * determine the sort order for real time data. + * @return RealtimeData + */ + public function get($ids, $metrics, $optParams = []) + { + $params = ['ids' => $ids, 'metrics' => $metrics]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeData::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataRealtime::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_DataRealtime'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Management.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Management.php new file mode 100644 index 000000000..b694a67a3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Management.php @@ -0,0 +1,32 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $management = $analyticsService->management; + * + */ +class Management extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Management::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Management'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountSummaries.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountSummaries.php new file mode 100644 index 000000000..5ce61cdca --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountSummaries.php @@ -0,0 +1,52 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $accountSummaries = $analyticsService->accountSummaries; + * + */ +class ManagementAccountSummaries extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists account summaries (lightweight tree comprised of + * accounts/properties/profiles) to which the user has access. + * (accountSummaries.listManagementAccountSummaries) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of account summaries to include + * in this response, where the largest acceptable value is 1000. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return AccountSummaries + */ + public function listManagementAccountSummaries($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountSummaries::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountSummaries::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementAccountSummaries'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountUserLinks.php new file mode 100644 index 000000000..50ce31554 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountUserLinks.php @@ -0,0 +1,97 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $accountUserLinks = $analyticsService->accountUserLinks; + * + */ +class ManagementAccountUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Removes a user from the given account. (accountUserLinks.delete) + * + * @param string $accountId Account ID to delete the user link for. + * @param string $linkId Link ID to delete the user link for. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $linkId, $optParams = []) + { + $params = ['accountId' => $accountId, 'linkId' => $linkId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Adds a new user to the given account. (accountUserLinks.insert) + * + * @param string $accountId Account ID to create the user link for. + * @param EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return EntityUserLink + */ + public function insert($accountId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class); + } + /** + * Lists account-user links for a given account. + * (accountUserLinks.listManagementAccountUserLinks) + * + * @param string $accountId Account ID to retrieve the user links for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of account-user links to + * include in this response. + * @opt_param int start-index An index of the first account-user link to + * retrieve. Use this parameter as a pagination mechanism along with the max- + * results parameter. + * @return EntityUserLinks + */ + public function listManagementAccountUserLinks($accountId, $optParams = []) + { + $params = ['accountId' => $accountId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class); + } + /** + * Updates permissions for an existing user on the given account. + * (accountUserLinks.update) + * + * @param string $accountId Account ID to update the account-user link for. + * @param string $linkId Link ID to update the account-user link for. + * @param EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return EntityUserLink + */ + public function update($accountId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'linkId' => $linkId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementAccountUserLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccounts.php new file mode 100644 index 000000000..b98bf51ad --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccounts.php @@ -0,0 +1,52 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $accounts = $analyticsService->accounts; + * + */ +class ManagementAccounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists all accounts to which the user has access. + * (accounts.listManagementAccounts) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of accounts to include in this + * response. + * @opt_param int start-index An index of the first account to retrieve. Use + * this parameter as a pagination mechanism along with the max-results + * parameter. + * @return Accounts + */ + public function listManagementAccounts($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Accounts::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementAccounts'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementClientId.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementClientId.php new file mode 100644 index 000000000..847acd795 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementClientId.php @@ -0,0 +1,47 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $clientId = $analyticsService->clientId; + * + */ +class ManagementClientId extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Hashes the given Client ID. (clientId.hashClientId) + * + * @param HashClientIdRequest $postBody + * @param array $optParams Optional parameters. + * @return HashClientIdResponse + */ + public function hashClientId(\Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('hashClientId', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementClientId::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementClientId'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDataSources.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDataSources.php new file mode 100644 index 000000000..049445301 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDataSources.php @@ -0,0 +1,55 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $customDataSources = $analyticsService->customDataSources; + * + */ +class ManagementCustomDataSources extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * List custom data sources to which the user has access. + * (customDataSources.listManagementCustomDataSources) + * + * @param string $accountId Account Id for the custom data sources to retrieve. + * @param string $webPropertyId Web property Id for the custom data sources to + * retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of custom data sources to + * include in this response. + * @opt_param int start-index A 1-based index of the first custom data source to + * retrieve. Use this parameter as a pagination mechanism along with the max- + * results parameter. + * @return CustomDataSources + */ + public function listManagementCustomDataSources($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSources::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDataSources::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementCustomDataSources'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDimensions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDimensions.php new file mode 100644 index 000000000..787db2012 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDimensions.php @@ -0,0 +1,132 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $customDimensions = $analyticsService->customDimensions; + * + */ +class ManagementCustomDimensions extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Get a custom dimension to which the user has access. (customDimensions.get) + * + * @param string $accountId Account ID for the custom dimension to retrieve. + * @param string $webPropertyId Web property ID for the custom dimension to + * retrieve. + * @param string $customDimensionId The ID of the custom dimension to retrieve. + * @param array $optParams Optional parameters. + * @return CustomDimension + */ + public function get($accountId, $webPropertyId, $customDimensionId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDimensionId' => $customDimensionId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class); + } + /** + * Create a new custom dimension. (customDimensions.insert) + * + * @param string $accountId Account ID for the custom dimension to create. + * @param string $webPropertyId Web property ID for the custom dimension to + * create. + * @param CustomDimension $postBody + * @param array $optParams Optional parameters. + * @return CustomDimension + */ + public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class); + } + /** + * Lists custom dimensions to which the user has access. + * (customDimensions.listManagementCustomDimensions) + * + * @param string $accountId Account ID for the custom dimensions to retrieve. + * @param string $webPropertyId Web property ID for the custom dimensions to + * retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of custom dimensions to include + * in this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return CustomDimensions + */ + public function listManagementCustomDimensions($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensions::class); + } + /** + * Updates an existing custom dimension. This method supports patch semantics. + * (customDimensions.patch) + * + * @param string $accountId Account ID for the custom dimension to update. + * @param string $webPropertyId Web property ID for the custom dimension to + * update. + * @param string $customDimensionId Custom dimension ID for the custom dimension + * to update. + * @param CustomDimension $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any + * warnings related to the custom dimension being linked to a custom data source + * / data set. + * @return CustomDimension + */ + public function patch($accountId, $webPropertyId, $customDimensionId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDimensionId' => $customDimensionId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class); + } + /** + * Updates an existing custom dimension. (customDimensions.update) + * + * @param string $accountId Account ID for the custom dimension to update. + * @param string $webPropertyId Web property ID for the custom dimension to + * update. + * @param string $customDimensionId Custom dimension ID for the custom dimension + * to update. + * @param CustomDimension $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any + * warnings related to the custom dimension being linked to a custom data source + * / data set. + * @return CustomDimension + */ + public function update($accountId, $webPropertyId, $customDimensionId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDimensionId' => $customDimensionId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDimensions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementCustomDimensions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomMetrics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomMetrics.php new file mode 100644 index 000000000..4ea90812f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomMetrics.php @@ -0,0 +1,130 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $customMetrics = $analyticsService->customMetrics; + * + */ +class ManagementCustomMetrics extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Get a custom metric to which the user has access. (customMetrics.get) + * + * @param string $accountId Account ID for the custom metric to retrieve. + * @param string $webPropertyId Web property ID for the custom metric to + * retrieve. + * @param string $customMetricId The ID of the custom metric to retrieve. + * @param array $optParams Optional parameters. + * @return CustomMetric + */ + public function get($accountId, $webPropertyId, $customMetricId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customMetricId' => $customMetricId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class); + } + /** + * Create a new custom metric. (customMetrics.insert) + * + * @param string $accountId Account ID for the custom metric to create. + * @param string $webPropertyId Web property ID for the custom dimension to + * create. + * @param CustomMetric $postBody + * @param array $optParams Optional parameters. + * @return CustomMetric + */ + public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class); + } + /** + * Lists custom metrics to which the user has access. + * (customMetrics.listManagementCustomMetrics) + * + * @param string $accountId Account ID for the custom metrics to retrieve. + * @param string $webPropertyId Web property ID for the custom metrics to + * retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of custom metrics to include in + * this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return CustomMetrics + */ + public function listManagementCustomMetrics($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetrics::class); + } + /** + * Updates an existing custom metric. This method supports patch semantics. + * (customMetrics.patch) + * + * @param string $accountId Account ID for the custom metric to update. + * @param string $webPropertyId Web property ID for the custom metric to update. + * @param string $customMetricId Custom metric ID for the custom metric to + * update. + * @param CustomMetric $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any + * warnings related to the custom metric being linked to a custom data source / + * data set. + * @return CustomMetric + */ + public function patch($accountId, $webPropertyId, $customMetricId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customMetricId' => $customMetricId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class); + } + /** + * Updates an existing custom metric. (customMetrics.update) + * + * @param string $accountId Account ID for the custom metric to update. + * @param string $webPropertyId Web property ID for the custom metric to update. + * @param string $customMetricId Custom metric ID for the custom metric to + * update. + * @param CustomMetric $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any + * warnings related to the custom metric being linked to a custom data source / + * data set. + * @return CustomMetric + */ + public function update($accountId, $webPropertyId, $customMetricId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customMetricId' => $customMetricId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomMetrics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementCustomMetrics'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementExperiments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementExperiments.php new file mode 100644 index 000000000..9d58d92c2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementExperiments.php @@ -0,0 +1,138 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $experiments = $analyticsService->experiments; + * + */ +class ManagementExperiments extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Delete an experiment. (experiments.delete) + * + * @param string $accountId Account ID to which the experiment belongs + * @param string $webPropertyId Web property ID to which the experiment belongs + * @param string $profileId View (Profile) ID to which the experiment belongs + * @param string $experimentId ID of the experiment to delete + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $experimentId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Returns an experiment to which the user has access. (experiments.get) + * + * @param string $accountId Account ID to retrieve the experiment for. + * @param string $webPropertyId Web property ID to retrieve the experiment for. + * @param string $profileId View (Profile) ID to retrieve the experiment for. + * @param string $experimentId Experiment ID to retrieve the experiment for. + * @param array $optParams Optional parameters. + * @return Experiment + */ + public function get($accountId, $webPropertyId, $profileId, $experimentId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class); + } + /** + * Create a new experiment. (experiments.insert) + * + * @param string $accountId Account ID to create the experiment for. + * @param string $webPropertyId Web property ID to create the experiment for. + * @param string $profileId View (Profile) ID to create the experiment for. + * @param Experiment $postBody + * @param array $optParams Optional parameters. + * @return Experiment + */ + public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class); + } + /** + * Lists experiments to which the user has access. + * (experiments.listManagementExperiments) + * + * @param string $accountId Account ID to retrieve experiments for. + * @param string $webPropertyId Web property ID to retrieve experiments for. + * @param string $profileId View (Profile) ID to retrieve experiments for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of experiments to include in + * this response. + * @opt_param int start-index An index of the first experiment to retrieve. Use + * this parameter as a pagination mechanism along with the max-results + * parameter. + * @return Experiments + */ + public function listManagementExperiments($accountId, $webPropertyId, $profileId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiments::class); + } + /** + * Update an existing experiment. This method supports patch semantics. + * (experiments.patch) + * + * @param string $accountId Account ID of the experiment to update. + * @param string $webPropertyId Web property ID of the experiment to update. + * @param string $profileId View (Profile) ID of the experiment to update. + * @param string $experimentId Experiment ID of the experiment to update. + * @param Experiment $postBody + * @param array $optParams Optional parameters. + * @return Experiment + */ + public function patch($accountId, $webPropertyId, $profileId, $experimentId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class); + } + /** + * Update an existing experiment. (experiments.update) + * + * @param string $accountId Account ID of the experiment to update. + * @param string $webPropertyId Web property ID of the experiment to update. + * @param string $profileId View (Profile) ID of the experiment to update. + * @param string $experimentId Experiment ID of the experiment to update. + * @param Experiment $postBody + * @param array $optParams Optional parameters. + * @return Experiment + */ + public function update($accountId, $webPropertyId, $profileId, $experimentId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementExperiments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementExperiments'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementFilters.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementFilters.php new file mode 100644 index 000000000..f4ed9ecb8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementFilters.php @@ -0,0 +1,125 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $filters = $analyticsService->filters; + * + */ +class ManagementFilters extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Delete a filter. (filters.delete) + * + * @param string $accountId Account ID to delete the filter for. + * @param string $filterId ID of the filter to be deleted. + * @param array $optParams Optional parameters. + * @return Filter + */ + public function delete($accountId, $filterId, $optParams = []) + { + $params = ['accountId' => $accountId, 'filterId' => $filterId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class); + } + /** + * Returns filters to which the user has access. (filters.get) + * + * @param string $accountId Account ID to retrieve filters for. + * @param string $filterId Filter ID to retrieve filters for. + * @param array $optParams Optional parameters. + * @return Filter + */ + public function get($accountId, $filterId, $optParams = []) + { + $params = ['accountId' => $accountId, 'filterId' => $filterId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class); + } + /** + * Create a new filter. (filters.insert) + * + * @param string $accountId Account ID to create filter for. + * @param Filter $postBody + * @param array $optParams Optional parameters. + * @return Filter + */ + public function insert($accountId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class); + } + /** + * Lists all filters for an account (filters.listManagementFilters) + * + * @param string $accountId Account ID to retrieve filters for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of filters to include in this + * response. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return Filters + */ + public function listManagementFilters($accountId, $optParams = []) + { + $params = ['accountId' => $accountId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filters::class); + } + /** + * Updates an existing filter. This method supports patch semantics. + * (filters.patch) + * + * @param string $accountId Account ID to which the filter belongs. + * @param string $filterId ID of the filter to be updated. + * @param Filter $postBody + * @param array $optParams Optional parameters. + * @return Filter + */ + public function patch($accountId, $filterId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'filterId' => $filterId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class); + } + /** + * Updates an existing filter. (filters.update) + * + * @param string $accountId Account ID to which the filter belongs. + * @param string $filterId ID of the filter to be updated. + * @param Filter $postBody + * @param array $optParams Optional parameters. + * @return Filter + */ + public function update($accountId, $filterId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'filterId' => $filterId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementFilters::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementFilters'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementGoals.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementGoals.php new file mode 100644 index 000000000..d98341f31 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementGoals.php @@ -0,0 +1,126 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $goals = $analyticsService->goals; + * + */ +class ManagementGoals extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets a goal to which the user has access. (goals.get) + * + * @param string $accountId Account ID to retrieve the goal for. + * @param string $webPropertyId Web property ID to retrieve the goal for. + * @param string $profileId View (Profile) ID to retrieve the goal for. + * @param string $goalId Goal ID to retrieve the goal for. + * @param array $optParams Optional parameters. + * @return Goal + */ + public function get($accountId, $webPropertyId, $profileId, $goalId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class); + } + /** + * Create a new goal. (goals.insert) + * + * @param string $accountId Account ID to create the goal for. + * @param string $webPropertyId Web property ID to create the goal for. + * @param string $profileId View (Profile) ID to create the goal for. + * @param Goal $postBody + * @param array $optParams Optional parameters. + * @return Goal + */ + public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class); + } + /** + * Lists goals to which the user has access. (goals.listManagementGoals) + * + * @param string $accountId Account ID to retrieve goals for. Can either be a + * specific account ID or '~all', which refers to all the accounts that user has + * access to. + * @param string $webPropertyId Web property ID to retrieve goals for. Can + * either be a specific web property ID or '~all', which refers to all the web + * properties that user has access to. + * @param string $profileId View (Profile) ID to retrieve goals for. Can either + * be a specific view (profile) ID or '~all', which refers to all the views + * (profiles) that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of goals to include in this + * response. + * @opt_param int start-index An index of the first goal to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return Goals + */ + public function listManagementGoals($accountId, $webPropertyId, $profileId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goals::class); + } + /** + * Updates an existing goal. This method supports patch semantics. (goals.patch) + * + * @param string $accountId Account ID to update the goal. + * @param string $webPropertyId Web property ID to update the goal. + * @param string $profileId View (Profile) ID to update the goal. + * @param string $goalId Index of the goal to be updated. + * @param Goal $postBody + * @param array $optParams Optional parameters. + * @return Goal + */ + public function patch($accountId, $webPropertyId, $profileId, $goalId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class); + } + /** + * Updates an existing goal. (goals.update) + * + * @param string $accountId Account ID to update the goal. + * @param string $webPropertyId Web property ID to update the goal. + * @param string $profileId View (Profile) ID to update the goal. + * @param string $goalId Index of the goal to be updated. + * @param Goal $postBody + * @param array $optParams Optional parameters. + * @return Goal + */ + public function update($accountId, $webPropertyId, $profileId, $goalId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementGoals::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementGoals'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileFilterLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileFilterLinks.php new file mode 100644 index 000000000..3d359354d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileFilterLinks.php @@ -0,0 +1,146 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $profileFilterLinks = $analyticsService->profileFilterLinks; + * + */ +class ManagementProfileFilterLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Delete a profile filter link. (profileFilterLinks.delete) + * + * @param string $accountId Account ID to which the profile filter link belongs. + * @param string $webPropertyId Web property Id to which the profile filter link + * belongs. + * @param string $profileId Profile ID to which the filter link belongs. + * @param string $linkId ID of the profile filter link to delete. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Returns a single profile filter link. (profileFilterLinks.get) + * + * @param string $accountId Account ID to retrieve profile filter link for. + * @param string $webPropertyId Web property Id to retrieve profile filter link + * for. + * @param string $profileId Profile ID to retrieve filter link for. + * @param string $linkId ID of the profile filter link. + * @param array $optParams Optional parameters. + * @return ProfileFilterLink + */ + public function get($accountId, $webPropertyId, $profileId, $linkId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class); + } + /** + * Create a new profile filter link. (profileFilterLinks.insert) + * + * @param string $accountId Account ID to create profile filter link for. + * @param string $webPropertyId Web property Id to create profile filter link + * for. + * @param string $profileId Profile ID to create filter link for. + * @param ProfileFilterLink $postBody + * @param array $optParams Optional parameters. + * @return ProfileFilterLink + */ + public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class); + } + /** + * Lists all profile filter links for a profile. + * (profileFilterLinks.listManagementProfileFilterLinks) + * + * @param string $accountId Account ID to retrieve profile filter links for. + * @param string $webPropertyId Web property Id for profile filter links for. + * Can either be a specific web property ID or '~all', which refers to all the + * web properties that user has access to. + * @param string $profileId Profile ID to retrieve filter links for. Can either + * be a specific profile ID or '~all', which refers to all the profiles that + * user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of profile filter links to + * include in this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return ProfileFilterLinks + */ + public function listManagementProfileFilterLinks($accountId, $webPropertyId, $profileId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLinks::class); + } + /** + * Update an existing profile filter link. This method supports patch semantics. + * (profileFilterLinks.patch) + * + * @param string $accountId Account ID to which profile filter link belongs. + * @param string $webPropertyId Web property Id to which profile filter link + * belongs + * @param string $profileId Profile ID to which filter link belongs + * @param string $linkId ID of the profile filter link to be updated. + * @param ProfileFilterLink $postBody + * @param array $optParams Optional parameters. + * @return ProfileFilterLink + */ + public function patch($accountId, $webPropertyId, $profileId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class); + } + /** + * Update an existing profile filter link. (profileFilterLinks.update) + * + * @param string $accountId Account ID to which profile filter link belongs. + * @param string $webPropertyId Web property Id to which profile filter link + * belongs + * @param string $profileId Profile ID to which filter link belongs + * @param string $linkId ID of the profile filter link to be updated. + * @param ProfileFilterLink $postBody + * @param array $optParams Optional parameters. + * @return ProfileFilterLink + */ + public function update($accountId, $webPropertyId, $profileId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileFilterLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementProfileFilterLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileUserLinks.php new file mode 100644 index 000000000..816761a34 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileUserLinks.php @@ -0,0 +1,110 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $profileUserLinks = $analyticsService->profileUserLinks; + * + */ +class ManagementProfileUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Removes a user from the given view (profile). (profileUserLinks.delete) + * + * @param string $accountId Account ID to delete the user link for. + * @param string $webPropertyId Web Property ID to delete the user link for. + * @param string $profileId View (Profile) ID to delete the user link for. + * @param string $linkId Link ID to delete the user link for. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Adds a new user to the given view (profile). (profileUserLinks.insert) + * + * @param string $accountId Account ID to create the user link for. + * @param string $webPropertyId Web Property ID to create the user link for. + * @param string $profileId View (Profile) ID to create the user link for. + * @param EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return EntityUserLink + */ + public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class); + } + /** + * Lists profile-user links for a given view (profile). + * (profileUserLinks.listManagementProfileUserLinks) + * + * @param string $accountId Account ID which the given view (profile) belongs + * to. + * @param string $webPropertyId Web Property ID which the given view (profile) + * belongs to. Can either be a specific web property ID or '~all', which refers + * to all the web properties that user has access to. + * @param string $profileId View (Profile) ID to retrieve the profile-user links + * for. Can either be a specific profile ID or '~all', which refers to all the + * profiles that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of profile-user links to + * include in this response. + * @opt_param int start-index An index of the first profile-user link to + * retrieve. Use this parameter as a pagination mechanism along with the max- + * results parameter. + * @return EntityUserLinks + */ + public function listManagementProfileUserLinks($accountId, $webPropertyId, $profileId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class); + } + /** + * Updates permissions for an existing user on the given view (profile). + * (profileUserLinks.update) + * + * @param string $accountId Account ID to update the user link for. + * @param string $webPropertyId Web Property ID to update the user link for. + * @param string $profileId View (Profile ID) to update the user link for. + * @param string $linkId Link ID to update the user link for. + * @param EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return EntityUserLink + */ + public function update($accountId, $webPropertyId, $profileId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementProfileUserLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfiles.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfiles.php new file mode 100644 index 000000000..4e1f07217 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfiles.php @@ -0,0 +1,141 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $profiles = $analyticsService->profiles; + * + */ +class ManagementProfiles extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Deletes a view (profile). (profiles.delete) + * + * @param string $accountId Account ID to delete the view (profile) for. + * @param string $webPropertyId Web property ID to delete the view (profile) + * for. + * @param string $profileId ID of the view (profile) to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a view (profile) to which the user has access. (profiles.get) + * + * @param string $accountId Account ID to retrieve the view (profile) for. + * @param string $webPropertyId Web property ID to retrieve the view (profile) + * for. + * @param string $profileId View (Profile) ID to retrieve the view (profile) + * for. + * @param array $optParams Optional parameters. + * @return Profile + */ + public function get($accountId, $webPropertyId, $profileId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class); + } + /** + * Create a new view (profile). (profiles.insert) + * + * @param string $accountId Account ID to create the view (profile) for. + * @param string $webPropertyId Web property ID to create the view (profile) + * for. + * @param Profile $postBody + * @param array $optParams Optional parameters. + * @return Profile + */ + public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class); + } + /** + * Lists views (profiles) to which the user has access. + * (profiles.listManagementProfiles) + * + * @param string $accountId Account ID for the view (profiles) to retrieve. Can + * either be a specific account ID or '~all', which refers to all the accounts + * to which the user has access. + * @param string $webPropertyId Web property ID for the views (profiles) to + * retrieve. Can either be a specific web property ID or '~all', which refers to + * all the web properties to which the user has access. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of views (profiles) to include + * in this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return Profiles + */ + public function listManagementProfiles($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profiles::class); + } + /** + * Updates an existing view (profile). This method supports patch semantics. + * (profiles.patch) + * + * @param string $accountId Account ID to which the view (profile) belongs + * @param string $webPropertyId Web property ID to which the view (profile) + * belongs + * @param string $profileId ID of the view (profile) to be updated. + * @param Profile $postBody + * @param array $optParams Optional parameters. + * @return Profile + */ + public function patch($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class); + } + /** + * Updates an existing view (profile). (profiles.update) + * + * @param string $accountId Account ID to which the view (profile) belongs + * @param string $webPropertyId Web property ID to which the view (profile) + * belongs + * @param string $profileId ID of the view (profile) to be updated. + * @param Profile $postBody + * @param array $optParams Optional parameters. + * @return Profile + */ + public function update($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfiles::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementProfiles'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementRemarketingAudience.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementRemarketingAudience.php new file mode 100644 index 000000000..b326f42fe --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementRemarketingAudience.php @@ -0,0 +1,149 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $remarketingAudience = $analyticsService->remarketingAudience; + * + */ +class ManagementRemarketingAudience extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Delete a remarketing audience. (remarketingAudience.delete) + * + * @param string $accountId Account ID to which the remarketing audience + * belongs. + * @param string $webPropertyId Web property ID to which the remarketing + * audience belongs. + * @param string $remarketingAudienceId The ID of the remarketing audience to + * delete. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $remarketingAudienceId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a remarketing audience to which the user has access. + * (remarketingAudience.get) + * + * @param string $accountId The account ID of the remarketing audience to + * retrieve. + * @param string $webPropertyId The web property ID of the remarketing audience + * to retrieve. + * @param string $remarketingAudienceId The ID of the remarketing audience to + * retrieve. + * @param array $optParams Optional parameters. + * @return RemarketingAudience + */ + public function get($accountId, $webPropertyId, $remarketingAudienceId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class); + } + /** + * Creates a new remarketing audience. (remarketingAudience.insert) + * + * @param string $accountId The account ID for which to create the remarketing + * audience. + * @param string $webPropertyId Web property ID for which to create the + * remarketing audience. + * @param RemarketingAudience $postBody + * @param array $optParams Optional parameters. + * @return RemarketingAudience + */ + public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class); + } + /** + * Lists remarketing audiences to which the user has access. + * (remarketingAudience.listManagementRemarketingAudience) + * + * @param string $accountId The account ID of the remarketing audiences to + * retrieve. + * @param string $webPropertyId The web property ID of the remarketing audiences + * to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of remarketing audiences to + * include in this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @opt_param string type + * @return RemarketingAudiences + */ + public function listManagementRemarketingAudience($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudiences::class); + } + /** + * Updates an existing remarketing audience. This method supports patch + * semantics. (remarketingAudience.patch) + * + * @param string $accountId The account ID of the remarketing audience to + * update. + * @param string $webPropertyId The web property ID of the remarketing audience + * to update. + * @param string $remarketingAudienceId The ID of the remarketing audience to + * update. + * @param RemarketingAudience $postBody + * @param array $optParams Optional parameters. + * @return RemarketingAudience + */ + public function patch($accountId, $webPropertyId, $remarketingAudienceId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class); + } + /** + * Updates an existing remarketing audience. (remarketingAudience.update) + * + * @param string $accountId The account ID of the remarketing audience to + * update. + * @param string $webPropertyId The web property ID of the remarketing audience + * to update. + * @param string $remarketingAudienceId The ID of the remarketing audience to + * update. + * @param RemarketingAudience $postBody + * @param array $optParams Optional parameters. + * @return RemarketingAudience + */ + public function update($accountId, $webPropertyId, $remarketingAudienceId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementRemarketingAudience::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementRemarketingAudience'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementSegments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementSegments.php new file mode 100644 index 000000000..f4d526bcf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementSegments.php @@ -0,0 +1,52 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $segments = $analyticsService->segments; + * + */ +class ManagementSegments extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists segments to which the user has access. + * (segments.listManagementSegments) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of segments to include in this + * response. + * @opt_param int start-index An index of the first segment to retrieve. Use + * this parameter as a pagination mechanism along with the max-results + * parameter. + * @return Segments + */ + public function listManagementSegments($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Segments::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementSegments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementSegments'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUnsampledReports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUnsampledReports.php new file mode 100644 index 000000000..d2f4149fd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUnsampledReports.php @@ -0,0 +1,111 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $unsampledReports = $analyticsService->unsampledReports; + * + */ +class ManagementUnsampledReports extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Deletes an unsampled report. (unsampledReports.delete) + * + * @param string $accountId Account ID to delete the unsampled report for. + * @param string $webPropertyId Web property ID to delete the unsampled reports + * for. + * @param string $profileId View (Profile) ID to delete the unsampled report + * for. + * @param string $unsampledReportId ID of the unsampled report to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $unsampledReportId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'unsampledReportId' => $unsampledReportId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Returns a single unsampled report. (unsampledReports.get) + * + * @param string $accountId Account ID to retrieve unsampled report for. + * @param string $webPropertyId Web property ID to retrieve unsampled reports + * for. + * @param string $profileId View (Profile) ID to retrieve unsampled report for. + * @param string $unsampledReportId ID of the unsampled report to retrieve. + * @param array $optParams Optional parameters. + * @return UnsampledReport + */ + public function get($accountId, $webPropertyId, $profileId, $unsampledReportId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'unsampledReportId' => $unsampledReportId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport::class); + } + /** + * Create a new unsampled report. (unsampledReports.insert) + * + * @param string $accountId Account ID to create the unsampled report for. + * @param string $webPropertyId Web property ID to create the unsampled report + * for. + * @param string $profileId View (Profile) ID to create the unsampled report + * for. + * @param UnsampledReport $postBody + * @param array $optParams Optional parameters. + * @return UnsampledReport + */ + public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport::class); + } + /** + * Lists unsampled reports to which the user has access. + * (unsampledReports.listManagementUnsampledReports) + * + * @param string $accountId Account ID to retrieve unsampled reports for. Must + * be a specific account ID, ~all is not supported. + * @param string $webPropertyId Web property ID to retrieve unsampled reports + * for. Must be a specific web property ID, ~all is not supported. + * @param string $profileId View (Profile) ID to retrieve unsampled reports for. + * Must be a specific view (profile) ID, ~all is not supported. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of unsampled reports to include + * in this response. + * @opt_param int start-index An index of the first unsampled report to + * retrieve. Use this parameter as a pagination mechanism along with the max- + * results parameter. + * @return UnsampledReports + */ + public function listManagementUnsampledReports($accountId, $webPropertyId, $profileId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReports::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUnsampledReports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementUnsampledReports'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUploads.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUploads.php new file mode 100644 index 000000000..f4ddd6306 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUploads.php @@ -0,0 +1,107 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $uploads = $analyticsService->uploads; + * + */ +class ManagementUploads extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Delete data associated with a previous upload. (uploads.deleteUploadData) + * + * @param string $accountId Account Id for the uploads to be deleted. + * @param string $webPropertyId Web property Id for the uploads to be deleted. + * @param string $customDataSourceId Custom data source Id for the uploads to be + * deleted. + * @param AnalyticsDataimportDeleteUploadDataRequest $postBody + * @param array $optParams Optional parameters. + */ + public function deleteUploadData($accountId, $webPropertyId, $customDataSourceId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\AnalyticsDataimportDeleteUploadDataRequest $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('deleteUploadData', [$params]); + } + /** + * List uploads to which the user has access. (uploads.get) + * + * @param string $accountId Account Id for the upload to retrieve. + * @param string $webPropertyId Web property Id for the upload to retrieve. + * @param string $customDataSourceId Custom data source Id for upload to + * retrieve. + * @param string $uploadId Upload Id to retrieve. + * @param array $optParams Optional parameters. + * @return Upload + */ + public function get($accountId, $webPropertyId, $customDataSourceId, $uploadId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'uploadId' => $uploadId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Upload::class); + } + /** + * List uploads to which the user has access. (uploads.listManagementUploads) + * + * @param string $accountId Account Id for the uploads to retrieve. + * @param string $webPropertyId Web property Id for the uploads to retrieve. + * @param string $customDataSourceId Custom data source Id for uploads to + * retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of uploads to include in this + * response. + * @opt_param int start-index A 1-based index of the first upload to retrieve. + * Use this parameter as a pagination mechanism along with the max-results + * parameter. + * @return Uploads + */ + public function listManagementUploads($accountId, $webPropertyId, $customDataSourceId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Uploads::class); + } + /** + * Upload data for a custom data source. (uploads.uploadData) + * + * @param string $accountId Account Id associated with the upload. + * @param string $webPropertyId Web property UA-string associated with the + * upload. + * @param string $customDataSourceId Custom data source Id to which the data + * being uploaded belongs. + * @param array $optParams Optional parameters. + * @return Upload + */ + public function uploadData($accountId, $webPropertyId, $customDataSourceId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId]; + $params = \array_merge($params, $optParams); + return $this->call('uploadData', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Upload::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUploads::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementUploads'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebPropertyAdWordsLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebPropertyAdWordsLinks.php new file mode 100644 index 000000000..1d12d1c94 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebPropertyAdWordsLinks.php @@ -0,0 +1,145 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $webPropertyAdWordsLinks = $analyticsService->webPropertyAdWordsLinks; + * + */ +class ManagementWebPropertyAdWordsLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Deletes a web property-Google Ads link. (webPropertyAdWordsLinks.delete) + * + * @param string $accountId ID of the account which the given web property + * belongs to. + * @param string $webPropertyId Web property ID to delete the Google Ads link + * for. + * @param string $webPropertyAdWordsLinkId Web property Google Ads link ID. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Returns a web property-Google Ads link to which the user has access. + * (webPropertyAdWordsLinks.get) + * + * @param string $accountId ID of the account which the given web property + * belongs to. + * @param string $webPropertyId Web property ID to retrieve the Google Ads link + * for. + * @param string $webPropertyAdWordsLinkId Web property-Google Ads link ID. + * @param array $optParams Optional parameters. + * @return EntityAdWordsLink + */ + public function get($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class); + } + /** + * Creates a webProperty-Google Ads link. (webPropertyAdWordsLinks.insert) + * + * @param string $accountId ID of the Google Analytics account to create the + * link for. + * @param string $webPropertyId Web property ID to create the link for. + * @param EntityAdWordsLink $postBody + * @param array $optParams Optional parameters. + * @return EntityAdWordsLink + */ + public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class); + } + /** + * Lists webProperty-Google Ads links for a given web property. + * (webPropertyAdWordsLinks.listManagementWebPropertyAdWordsLinks) + * + * @param string $accountId ID of the account which the given web property + * belongs to. + * @param string $webPropertyId Web property ID to retrieve the Google Ads links + * for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of webProperty-Google Ads links + * to include in this response. + * @opt_param int start-index An index of the first webProperty-Google Ads link + * to retrieve. Use this parameter as a pagination mechanism along with the max- + * results parameter. + * @return EntityAdWordsLinks + */ + public function listManagementWebPropertyAdWordsLinks($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinks::class); + } + /** + * Updates an existing webProperty-Google Ads link. This method supports patch + * semantics. (webPropertyAdWordsLinks.patch) + * + * @param string $accountId ID of the account which the given web property + * belongs to. + * @param string $webPropertyId Web property ID to retrieve the Google Ads link + * for. + * @param string $webPropertyAdWordsLinkId Web property-Google Ads link ID. + * @param EntityAdWordsLink $postBody + * @param array $optParams Optional parameters. + * @return EntityAdWordsLink + */ + public function patch($accountId, $webPropertyId, $webPropertyAdWordsLinkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class); + } + /** + * Updates an existing webProperty-Google Ads link. + * (webPropertyAdWordsLinks.update) + * + * @param string $accountId ID of the account which the given web property + * belongs to. + * @param string $webPropertyId Web property ID to retrieve the Google Ads link + * for. + * @param string $webPropertyAdWordsLinkId Web property-Google Ads link ID. + * @param EntityAdWordsLink $postBody + * @param array $optParams Optional parameters. + * @return EntityAdWordsLink + */ + public function update($accountId, $webPropertyId, $webPropertyAdWordsLinkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebPropertyAdWordsLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementWebPropertyAdWordsLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebproperties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebproperties.php new file mode 100644 index 000000000..159d529bc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebproperties.php @@ -0,0 +1,116 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $webproperties = $analyticsService->webproperties; + * + */ +class ManagementWebproperties extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets a web property to which the user has access. (webproperties.get) + * + * @param string $accountId Account ID to retrieve the web property for. + * @param string $webPropertyId ID to retrieve the web property for. + * @param array $optParams Optional parameters. + * @return Webproperty + */ + public function get($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class); + } + /** + * Create a new property if the account has fewer than 20 properties. Web + * properties are visible in the Google Analytics interface only if they have at + * least one profile. (webproperties.insert) + * + * @param string $accountId Account ID to create the web property for. + * @param Webproperty $postBody + * @param array $optParams Optional parameters. + * @return Webproperty + */ + public function insert($accountId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class); + } + /** + * Lists web properties to which the user has access. + * (webproperties.listManagementWebproperties) + * + * @param string $accountId Account ID to retrieve web properties for. Can + * either be a specific account ID or '~all', which refers to all the accounts + * that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of web properties to include in + * this response. + * @opt_param int start-index An index of the first entity to retrieve. Use this + * parameter as a pagination mechanism along with the max-results parameter. + * @return Webproperties + */ + public function listManagementWebproperties($accountId, $optParams = []) + { + $params = ['accountId' => $accountId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperties::class); + } + /** + * Updates an existing web property. This method supports patch semantics. + * (webproperties.patch) + * + * @param string $accountId Account ID to which the web property belongs + * @param string $webPropertyId Web property ID + * @param Webproperty $postBody + * @param array $optParams Optional parameters. + * @return Webproperty + */ + public function patch($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class); + } + /** + * Updates an existing web property. (webproperties.update) + * + * @param string $accountId Account ID to which the web property belongs + * @param string $webPropertyId Web property ID + * @param Webproperty $postBody + * @param array $optParams Optional parameters. + * @return Webproperty + */ + public function update($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebproperties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementWebproperties'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebpropertyUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebpropertyUserLinks.php new file mode 100644 index 000000000..efca0ab3d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebpropertyUserLinks.php @@ -0,0 +1,104 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $webpropertyUserLinks = $analyticsService->webpropertyUserLinks; + * + */ +class ManagementWebpropertyUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Removes a user from the given web property. (webpropertyUserLinks.delete) + * + * @param string $accountId Account ID to delete the user link for. + * @param string $webPropertyId Web Property ID to delete the user link for. + * @param string $linkId Link ID to delete the user link for. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $linkId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'linkId' => $linkId]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Adds a new user to the given web property. (webpropertyUserLinks.insert) + * + * @param string $accountId Account ID to create the user link for. + * @param string $webPropertyId Web Property ID to create the user link for. + * @param EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return EntityUserLink + */ + public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class); + } + /** + * Lists webProperty-user links for a given web property. + * (webpropertyUserLinks.listManagementWebpropertyUserLinks) + * + * @param string $accountId Account ID which the given web property belongs to. + * @param string $webPropertyId Web Property ID for the webProperty-user links + * to retrieve. Can either be a specific web property ID or '~all', which refers + * to all the web properties that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results The maximum number of webProperty-user Links to + * include in this response. + * @opt_param int start-index An index of the first webProperty-user link to + * retrieve. Use this parameter as a pagination mechanism along with the max- + * results parameter. + * @return EntityUserLinks + */ + public function listManagementWebpropertyUserLinks($accountId, $webPropertyId, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class); + } + /** + * Updates permissions for an existing user on the given web property. + * (webpropertyUserLinks.update) + * + * @param string $accountId Account ID to update the account-user link for. + * @param string $webPropertyId Web property ID to update the account-user link + * for. + * @param string $linkId Link ID to update the account-user link for. + * @param EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return EntityUserLink + */ + public function update($accountId, $webPropertyId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = []) + { + $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'linkId' => $linkId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebpropertyUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementWebpropertyUserLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Metadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Metadata.php new file mode 100644 index 000000000..5fbdc1675 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Metadata.php @@ -0,0 +1,32 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $metadata = $analyticsService->metadata; + * + */ +class Metadata extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Metadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Metadata'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/MetadataColumns.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/MetadataColumns.php new file mode 100644 index 000000000..b153d8025 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/MetadataColumns.php @@ -0,0 +1,47 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $columns = $analyticsService->columns; + * + */ +class MetadataColumns extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists all columns for a report type (columns.listMetadataColumns) + * + * @param string $reportType Report type. Allowed Values: 'ga'. Where 'ga' + * corresponds to the Core Reporting API + * @param array $optParams Optional parameters. + * @return Columns + */ + public function listMetadataColumns($reportType, $optParams = []) + { + $params = ['reportType' => $reportType]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Columns::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\MetadataColumns::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_MetadataColumns'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Provisioning.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Provisioning.php new file mode 100644 index 000000000..4fee15b6c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Provisioning.php @@ -0,0 +1,61 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $provisioning = $analyticsService->provisioning; + * + */ +class Provisioning extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates an account ticket. (provisioning.createAccountTicket) + * + * @param AccountTicket $postBody + * @param array $optParams Optional parameters. + * @return AccountTicket + */ + public function createAccountTicket(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTicket $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('createAccountTicket', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTicket::class); + } + /** + * Provision account. (provisioning.createAccountTree) + * + * @param AccountTreeRequest $postBody + * @param array $optParams Optional parameters. + * @return AccountTreeResponse + */ + public function createAccountTree(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('createAccountTree', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Provisioning::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Provisioning'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletion.php new file mode 100644 index 000000000..f2ee5ccfa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletion.php @@ -0,0 +1,32 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $userDeletion = $analyticsService->userDeletion; + * + */ +class UserDeletion extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\UserDeletion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_UserDeletion'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletionUserDeletionRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletionUserDeletionRequest.php new file mode 100644 index 000000000..eb1f33c95 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletionUserDeletionRequest.php @@ -0,0 +1,46 @@ + + * $analyticsService = new Google\Service\Analytics(...); + * $userDeletionRequest = $analyticsService->userDeletionRequest; + * + */ +class UserDeletionUserDeletionRequest extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Insert or update a user deletion requests. (userDeletionRequest.upsert) + * + * @param UserDeletionRequest $postBody + * @param array $optParams Optional parameters. + * @return UserDeletionRequest + */ + public function upsert(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('upsert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequest::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\UserDeletionUserDeletionRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_UserDeletionUserDeletionRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segment.php new file mode 100644 index 000000000..485f89222 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segment.php @@ -0,0 +1,186 @@ +created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setDefinition($definition) + { + $this->definition = $definition; + } + /** + * @return string + */ + public function getDefinition() + { + return $this->definition; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setSegmentId($segmentId) + { + $this->segmentId = $segmentId; + } + /** + * @return string + */ + public function getSegmentId() + { + return $this->segmentId; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Segment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Segment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segments.php new file mode 100644 index 000000000..6ee29076d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segments.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return Segment[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Segments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Segments'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReport.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReport.php new file mode 100644 index 000000000..d9c002229 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReport.php @@ -0,0 +1,363 @@ + "end-date", "startDate" => "start-date"]; + /** + * @var string + */ + public $accountId; + protected $cloudStorageDownloadDetailsType = \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportCloudStorageDownloadDetails::class; + protected $cloudStorageDownloadDetailsDataType = ''; + /** + * @var string + */ + public $created; + /** + * @var string + */ + public $dimensions; + /** + * @var string + */ + public $downloadType; + protected $driveDownloadDetailsType = \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportDriveDownloadDetails::class; + protected $driveDownloadDetailsDataType = ''; + /** + * @var string + */ + public $endDate; + /** + * @var string + */ + public $filters; + /** + * @var string + */ + public $id; + /** + * @var string + */ + public $kind; + /** + * @var string + */ + public $metrics; + /** + * @var string + */ + public $profileId; + /** + * @var string + */ + public $segment; + /** + * @var string + */ + public $selfLink; + /** + * @var string + */ + public $startDate; + /** + * @var string + */ + public $status; + /** + * @var string + */ + public $title; + /** + * @var string + */ + public $updated; + /** + * @var string + */ + public $webPropertyId; + /** + * @param string + */ + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param UnsampledReportCloudStorageDownloadDetails + */ + public function setCloudStorageDownloadDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportCloudStorageDownloadDetails $cloudStorageDownloadDetails) + { + $this->cloudStorageDownloadDetails = $cloudStorageDownloadDetails; + } + /** + * @return UnsampledReportCloudStorageDownloadDetails + */ + public function getCloudStorageDownloadDetails() + { + return $this->cloudStorageDownloadDetails; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param string + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return string + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param string + */ + public function setDownloadType($downloadType) + { + $this->downloadType = $downloadType; + } + /** + * @return string + */ + public function getDownloadType() + { + return $this->downloadType; + } + /** + * @param UnsampledReportDriveDownloadDetails + */ + public function setDriveDownloadDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportDriveDownloadDetails $driveDownloadDetails) + { + $this->driveDownloadDetails = $driveDownloadDetails; + } + /** + * @return UnsampledReportDriveDownloadDetails + */ + public function getDriveDownloadDetails() + { + return $this->driveDownloadDetails; + } + /** + * @param string + */ + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + /** + * @return string + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param string + */ + public function setFilters($filters) + { + $this->filters = $filters; + } + /** + * @return string + */ + public function getFilters() + { + return $this->filters; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return string + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param string + */ + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + /** + * @return string + */ + public function getProfileId() + { + return $this->profileId; + } + /** + * @param string + */ + public function setSegment($segment) + { + $this->segment = $segment; + } + /** + * @return string + */ + public function getSegment() + { + return $this->segment; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param string + */ + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + /** + * @return string + */ + public function getStartDate() + { + return $this->startDate; + } + /** + * @param string + */ + public function setStatus($status) + { + $this->status = $status; + } + /** + * @return string + */ + public function getStatus() + { + return $this->status; + } + /** + * @param string + */ + public function setTitle($title) + { + $this->title = $title; + } + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReport'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportCloudStorageDownloadDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportCloudStorageDownloadDetails.php new file mode 100644 index 000000000..2bfc28724 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportCloudStorageDownloadDetails.php @@ -0,0 +1,60 @@ +bucketId = $bucketId; + } + /** + * @return string + */ + public function getBucketId() + { + return $this->bucketId; + } + /** + * @param string + */ + public function setObjectId($objectId) + { + $this->objectId = $objectId; + } + /** + * @return string + */ + public function getObjectId() + { + return $this->objectId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportCloudStorageDownloadDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportDriveDownloadDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportDriveDownloadDetails.php new file mode 100644 index 000000000..07f35cf89 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportDriveDownloadDetails.php @@ -0,0 +1,42 @@ +documentId = $documentId; + } + /** + * @return string + */ + public function getDocumentId() + { + return $this->documentId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportDriveDownloadDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReportDriveDownloadDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReports.php new file mode 100644 index 000000000..5a1464242 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReports.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return UnsampledReport[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReports'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Upload.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Upload.php new file mode 100644 index 000000000..9fa6e5cd8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Upload.php @@ -0,0 +1,151 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setCustomDataSourceId($customDataSourceId) + { + $this->customDataSourceId = $customDataSourceId; + } + /** + * @return string + */ + public function getCustomDataSourceId() + { + return $this->customDataSourceId; + } + /** + * @param string[] + */ + public function setErrors($errors) + { + $this->errors = $errors; + } + /** + * @return string[] + */ + public function getErrors() + { + return $this->errors; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setStatus($status) + { + $this->status = $status; + } + /** + * @return string + */ + public function getStatus() + { + return $this->status; + } + /** + * @param string + */ + public function setUploadTime($uploadTime) + { + $this->uploadTime = $uploadTime; + } + /** + * @return string + */ + public function getUploadTime() + { + return $this->uploadTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Upload::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Upload'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Uploads.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Uploads.php new file mode 100644 index 000000000..e6c81e72b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Uploads.php @@ -0,0 +1,149 @@ +items = $items; + } + /** + * @return Upload[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Uploads::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Uploads'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequest.php new file mode 100644 index 000000000..42e860a7b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequest.php @@ -0,0 +1,130 @@ +deletionRequestTime = $deletionRequestTime; + } + /** + * @return string + */ + public function getDeletionRequestTime() + { + return $this->deletionRequestTime; + } + /** + * @param string + */ + public function setFirebaseProjectId($firebaseProjectId) + { + $this->firebaseProjectId = $firebaseProjectId; + } + /** + * @return string + */ + public function getFirebaseProjectId() + { + return $this->firebaseProjectId; + } + /** + * @param UserDeletionRequestId + */ + public function setId(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequestId $id) + { + $this->id = $id; + } + /** + * @return UserDeletionRequestId + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setPropertyId($propertyId) + { + $this->propertyId = $propertyId; + } + /** + * @return string + */ + public function getPropertyId() + { + return $this->propertyId; + } + /** + * @param string + */ + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + /** + * @return string + */ + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UserDeletionRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequestId.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequestId.php new file mode 100644 index 000000000..d988b5f65 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequestId.php @@ -0,0 +1,60 @@ +type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUserId($userId) + { + $this->userId = $userId; + } + /** + * @return string + */ + public function getUserId() + { + return $this->userId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequestId::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UserDeletionRequestId'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserRef.php new file mode 100644 index 000000000..3324fa791 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserRef.php @@ -0,0 +1,78 @@ +email = $email; + } + /** + * @return string + */ + public function getEmail() + { + return $this->email; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UserRef'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertyRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertyRef.php new file mode 100644 index 000000000..4e7202f02 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertyRef.php @@ -0,0 +1,132 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setHref($href) + { + $this->href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebPropertyRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebPropertyRef'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertySummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertySummary.php new file mode 100644 index 000000000..febe39c64 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertySummary.php @@ -0,0 +1,167 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setLevel($level) + { + $this->level = $level; + } + /** + * @return string + */ + public function getLevel() + { + return $this->level; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param ProfileSummary[] + */ + public function setProfiles($profiles) + { + $this->profiles = $profiles; + } + /** + * @return ProfileSummary[] + */ + public function getProfiles() + { + return $this->profiles; + } + /** + * @param bool + */ + public function setStarred($starred) + { + $this->starred = $starred; + } + /** + * @return bool + */ + public function getStarred() + { + return $this->starred; + } + /** + * @param string + */ + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + /** + * @return string + */ + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebPropertySummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebPropertySummary'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperties.php new file mode 100644 index 000000000..aa686e39b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperties.php @@ -0,0 +1,167 @@ +items = $items; + } + /** + * @return Webproperty[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param int + */ + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + /** + * @return int + */ + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + /** + * @return string + */ + public function getNextLink() + { + return $this->nextLink; + } + /** + * @param string + */ + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + /** + * @return string + */ + public function getPreviousLink() + { + return $this->previousLink; + } + /** + * @param int + */ + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + /** + * @return int + */ + public function getStartIndex() + { + return $this->startIndex; + } + /** + * @param int + */ + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + /** + * @return int + */ + public function getTotalResults() + { + return $this->totalResults; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Webproperties'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperty.php new file mode 100644 index 000000000..6f31102a2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperty.php @@ -0,0 +1,360 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param WebpropertyChildLink + */ + public function setChildLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyChildLink $childLink) + { + $this->childLink = $childLink; + } + /** + * @return WebpropertyChildLink + */ + public function getChildLink() + { + return $this->childLink; + } + /** + * @param string + */ + public function setCreated($created) + { + $this->created = $created; + } + /** + * @return string + */ + public function getCreated() + { + return $this->created; + } + /** + * @param bool + */ + public function setDataRetentionResetOnNewActivity($dataRetentionResetOnNewActivity) + { + $this->dataRetentionResetOnNewActivity = $dataRetentionResetOnNewActivity; + } + /** + * @return bool + */ + public function getDataRetentionResetOnNewActivity() + { + return $this->dataRetentionResetOnNewActivity; + } + /** + * @param string + */ + public function setDataRetentionTtl($dataRetentionTtl) + { + $this->dataRetentionTtl = $dataRetentionTtl; + } + /** + * @return string + */ + public function getDataRetentionTtl() + { + return $this->dataRetentionTtl; + } + /** + * @param string + */ + public function setDefaultProfileId($defaultProfileId) + { + $this->defaultProfileId = $defaultProfileId; + } + /** + * @return string + */ + public function getDefaultProfileId() + { + return $this->defaultProfileId; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setIndustryVertical($industryVertical) + { + $this->industryVertical = $industryVertical; + } + /** + * @return string + */ + public function getIndustryVertical() + { + return $this->industryVertical; + } + /** + * @param string + */ + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + /** + * @return string + */ + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param string + */ + public function setLevel($level) + { + $this->level = $level; + } + /** + * @return string + */ + public function getLevel() + { + return $this->level; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param WebpropertyParentLink + */ + public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + /** + * @return WebpropertyParentLink + */ + public function getParentLink() + { + return $this->parentLink; + } + /** + * @param WebpropertyPermissions + */ + public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyPermissions $permissions) + { + $this->permissions = $permissions; + } + /** + * @return WebpropertyPermissions + */ + public function getPermissions() + { + return $this->permissions; + } + /** + * @param int + */ + public function setProfileCount($profileCount) + { + $this->profileCount = $profileCount; + } + /** + * @return int + */ + public function getProfileCount() + { + return $this->profileCount; + } + /** + * @param string + */ + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + /** + * @return string + */ + public function getSelfLink() + { + return $this->selfLink; + } + /** + * @param bool + */ + public function setStarred($starred) + { + $this->starred = $starred; + } + /** + * @return bool + */ + public function getStarred() + { + return $this->starred; + } + /** + * @param string + */ + public function setUpdated($updated) + { + $this->updated = $updated; + } + /** + * @return string + */ + public function getUpdated() + { + return $this->updated; + } + /** + * @param string + */ + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + /** + * @return string + */ + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Webproperty'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyChildLink.php new file mode 100644 index 000000000..f0d9dbd1e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyChildLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebpropertyChildLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyParentLink.php new file mode 100644 index 000000000..1d3e4aeb6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyParentLink.php @@ -0,0 +1,60 @@ +href = $href; + } + /** + * @return string + */ + public function getHref() + { + return $this->href; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebpropertyParentLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyPermissions.php new file mode 100644 index 000000000..6904b5896 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyPermissions.php @@ -0,0 +1,43 @@ +effective = $effective; + } + /** + * @return string[] + */ + public function getEffective() + { + return $this->effective; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebpropertyPermissions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting.php new file mode 100644 index 000000000..366b3f72a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting.php @@ -0,0 +1,62 @@ + + * Accesses Analytics report data.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class AnalyticsReporting extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** View and manage your Google Analytics data. */ + const ANALYTICS = "https://www.googleapis.com/auth/analytics"; + /** See and download your Google Analytics data. */ + const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly"; + public $reports; + public $userActivity; + /** + * Constructs the internal representation of the AnalyticsReporting service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://analyticsreporting.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v4'; + $this->serviceName = 'analyticsreporting'; + $this->reports = new \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\Reports($this, $this->serviceName, 'reports', ['methods' => ['batchGet' => ['path' => 'v4/reports:batchGet', 'httpMethod' => 'POST', 'parameters' => []]]]); + $this->userActivity = new \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\UserActivity($this, $this->serviceName, 'userActivity', ['methods' => ['search' => ['path' => 'v4/userActivity:search', 'httpMethod' => 'POST', 'parameters' => []]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Activity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Activity.php new file mode 100644 index 000000000..af027e3cd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Activity.php @@ -0,0 +1,283 @@ +activityTime = $activityTime; + } + /** + * @return string + */ + public function getActivityTime() + { + return $this->activityTime; + } + /** + * @param string + */ + public function setActivityType($activityType) + { + $this->activityType = $activityType; + } + /** + * @return string + */ + public function getActivityType() + { + return $this->activityType; + } + /** + * @param ScreenviewData + */ + public function setAppview(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ScreenviewData $appview) + { + $this->appview = $appview; + } + /** + * @return ScreenviewData + */ + public function getAppview() + { + return $this->appview; + } + /** + * @param string + */ + public function setCampaign($campaign) + { + $this->campaign = $campaign; + } + /** + * @return string + */ + public function getCampaign() + { + return $this->campaign; + } + /** + * @param string + */ + public function setChannelGrouping($channelGrouping) + { + $this->channelGrouping = $channelGrouping; + } + /** + * @return string + */ + public function getChannelGrouping() + { + return $this->channelGrouping; + } + /** + * @param CustomDimension[] + */ + public function setCustomDimension($customDimension) + { + $this->customDimension = $customDimension; + } + /** + * @return CustomDimension[] + */ + public function getCustomDimension() + { + return $this->customDimension; + } + /** + * @param EcommerceData + */ + public function setEcommerce(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EcommerceData $ecommerce) + { + $this->ecommerce = $ecommerce; + } + /** + * @return EcommerceData + */ + public function getEcommerce() + { + return $this->ecommerce; + } + /** + * @param EventData + */ + public function setEvent(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EventData $event) + { + $this->event = $event; + } + /** + * @return EventData + */ + public function getEvent() + { + return $this->event; + } + /** + * @param GoalSetData + */ + public function setGoals(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GoalSetData $goals) + { + $this->goals = $goals; + } + /** + * @return GoalSetData + */ + public function getGoals() + { + return $this->goals; + } + /** + * @param string + */ + public function setHostname($hostname) + { + $this->hostname = $hostname; + } + /** + * @return string + */ + public function getHostname() + { + return $this->hostname; + } + /** + * @param string + */ + public function setKeyword($keyword) + { + $this->keyword = $keyword; + } + /** + * @return string + */ + public function getKeyword() + { + return $this->keyword; + } + /** + * @param string + */ + public function setLandingPagePath($landingPagePath) + { + $this->landingPagePath = $landingPagePath; + } + /** + * @return string + */ + public function getLandingPagePath() + { + return $this->landingPagePath; + } + /** + * @param string + */ + public function setMedium($medium) + { + $this->medium = $medium; + } + /** + * @return string + */ + public function getMedium() + { + return $this->medium; + } + /** + * @param PageviewData + */ + public function setPageview(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PageviewData $pageview) + { + $this->pageview = $pageview; + } + /** + * @return PageviewData + */ + public function getPageview() + { + return $this->pageview; + } + /** + * @param string + */ + public function setSource($source) + { + $this->source = $source; + } + /** + * @return string + */ + public function getSource() + { + return $this->source; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Activity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Activity'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Cohort.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Cohort.php new file mode 100644 index 000000000..18a86e7a0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Cohort.php @@ -0,0 +1,76 @@ +dateRange = $dateRange; + } + /** + * @return DateRange + */ + public function getDateRange() + { + return $this->dateRange; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Cohort::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Cohort'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CohortGroup.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CohortGroup.php new file mode 100644 index 000000000..9c889dff6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CohortGroup.php @@ -0,0 +1,59 @@ +cohorts = $cohorts; + } + /** + * @return Cohort[] + */ + public function getCohorts() + { + return $this->cohorts; + } + /** + * @param bool + */ + public function setLifetimeValue($lifetimeValue) + { + $this->lifetimeValue = $lifetimeValue; + } + /** + * @return bool + */ + public function getLifetimeValue() + { + return $this->lifetimeValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\CohortGroup::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_CohortGroup'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ColumnHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ColumnHeader.php new file mode 100644 index 000000000..06deb4bec --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ColumnHeader.php @@ -0,0 +1,59 @@ +dimensions = $dimensions; + } + /** + * @return string[] + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param MetricHeader + */ + public function setMetricHeader(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeader $metricHeader) + { + $this->metricHeader = $metricHeader; + } + /** + * @return MetricHeader + */ + public function getMetricHeader() + { + return $this->metricHeader; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ColumnHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ColumnHeader'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CustomDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CustomDimension.php new file mode 100644 index 000000000..30f007b90 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CustomDimension.php @@ -0,0 +1,60 @@ +index = $index; + } + /** + * @return int + */ + public function getIndex() + { + return $this->index; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\CustomDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_CustomDimension'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRange.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRange.php new file mode 100644 index 000000000..14f2e5ab1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRange.php @@ -0,0 +1,60 @@ +endDate = $endDate; + } + /** + * @return string + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param string + */ + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + /** + * @return string + */ + public function getStartDate() + { + return $this->startDate; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DateRange::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DateRange'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRangeValues.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRangeValues.php new file mode 100644 index 000000000..5a0d4a1fa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRangeValues.php @@ -0,0 +1,59 @@ +pivotValueRegions = $pivotValueRegions; + } + /** + * @return PivotValueRegion[] + */ + public function getPivotValueRegions() + { + return $this->pivotValueRegions; + } + /** + * @param string[] + */ + public function setValues($values) + { + $this->values = $values; + } + /** + * @return string[] + */ + public function getValues() + { + return $this->values; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DateRangeValues::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DateRangeValues'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Dimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Dimension.php new file mode 100644 index 000000000..682c40e1a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Dimension.php @@ -0,0 +1,61 @@ +histogramBuckets = $histogramBuckets; + } + /** + * @return string[] + */ + public function getHistogramBuckets() + { + return $this->histogramBuckets; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Dimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Dimension'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilter.php new file mode 100644 index 000000000..c8b255cb8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilter.php @@ -0,0 +1,115 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setDimensionName($dimensionName) + { + $this->dimensionName = $dimensionName; + } + /** + * @return string + */ + public function getDimensionName() + { + return $this->dimensionName; + } + /** + * @param string[] + */ + public function setExpressions($expressions) + { + $this->expressions = $expressions; + } + /** + * @return string[] + */ + public function getExpressions() + { + return $this->expressions; + } + /** + * @param bool + */ + public function setNot($not) + { + $this->not = $not; + } + /** + * @return bool + */ + public function getNot() + { + return $this->not; + } + /** + * @param string + */ + public function setOperator($operator) + { + $this->operator = $operator; + } + /** + * @return string + */ + public function getOperator() + { + return $this->operator; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DimensionFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DimensionFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilterClause.php new file mode 100644 index 000000000..c331705ff --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilterClause.php @@ -0,0 +1,59 @@ +filters = $filters; + } + /** + * @return DimensionFilter[] + */ + public function getFilters() + { + return $this->filters; + } + /** + * @param string + */ + public function setOperator($operator) + { + $this->operator = $operator; + } + /** + * @return string + */ + public function getOperator() + { + return $this->operator; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DimensionFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DimensionFilterClause'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DynamicSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DynamicSegment.php new file mode 100644 index 000000000..06b6a9cf7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DynamicSegment.php @@ -0,0 +1,74 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param SegmentDefinition + */ + public function setSessionSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDefinition $sessionSegment) + { + $this->sessionSegment = $sessionSegment; + } + /** + * @return SegmentDefinition + */ + public function getSessionSegment() + { + return $this->sessionSegment; + } + /** + * @param SegmentDefinition + */ + public function setUserSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDefinition $userSegment) + { + $this->userSegment = $userSegment; + } + /** + * @return SegmentDefinition + */ + public function getUserSegment() + { + return $this->userSegment; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DynamicSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DynamicSegment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EcommerceData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EcommerceData.php new file mode 100644 index 000000000..ca16b3b61 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EcommerceData.php @@ -0,0 +1,93 @@ +actionType = $actionType; + } + /** + * @return string + */ + public function getActionType() + { + return $this->actionType; + } + /** + * @param string + */ + public function setEcommerceType($ecommerceType) + { + $this->ecommerceType = $ecommerceType; + } + /** + * @return string + */ + public function getEcommerceType() + { + return $this->ecommerceType; + } + /** + * @param ProductData[] + */ + public function setProducts($products) + { + $this->products = $products; + } + /** + * @return ProductData[] + */ + public function getProducts() + { + return $this->products; + } + /** + * @param TransactionData + */ + public function setTransaction(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\TransactionData $transaction) + { + $this->transaction = $transaction; + } + /** + * @return TransactionData + */ + public function getTransaction() + { + return $this->transaction; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EcommerceData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_EcommerceData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EventData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EventData.php new file mode 100644 index 000000000..a9e933c76 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EventData.php @@ -0,0 +1,114 @@ +eventAction = $eventAction; + } + /** + * @return string + */ + public function getEventAction() + { + return $this->eventAction; + } + /** + * @param string + */ + public function setEventCategory($eventCategory) + { + $this->eventCategory = $eventCategory; + } + /** + * @return string + */ + public function getEventCategory() + { + return $this->eventCategory; + } + /** + * @param string + */ + public function setEventCount($eventCount) + { + $this->eventCount = $eventCount; + } + /** + * @return string + */ + public function getEventCount() + { + return $this->eventCount; + } + /** + * @param string + */ + public function setEventLabel($eventLabel) + { + $this->eventLabel = $eventLabel; + } + /** + * @return string + */ + public function getEventLabel() + { + return $this->eventLabel; + } + /** + * @param string + */ + public function setEventValue($eventValue) + { + $this->eventValue = $eventValue; + } + /** + * @return string + */ + public function getEventValue() + { + return $this->eventValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EventData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_EventData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsRequest.php new file mode 100644 index 000000000..8daae7794 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsRequest.php @@ -0,0 +1,59 @@ +reportRequests = $reportRequests; + } + /** + * @return ReportRequest[] + */ + public function getReportRequests() + { + return $this->reportRequests; + } + /** + * @param bool + */ + public function setUseResourceQuotas($useResourceQuotas) + { + $this->useResourceQuotas = $useResourceQuotas; + } + /** + * @return bool + */ + public function getUseResourceQuotas() + { + return $this->useResourceQuotas; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GetReportsRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsResponse.php new file mode 100644 index 000000000..4e67179d3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsResponse.php @@ -0,0 +1,75 @@ +queryCost = $queryCost; + } + /** + * @return int + */ + public function getQueryCost() + { + return $this->queryCost; + } + /** + * @param Report[] + */ + public function setReports($reports) + { + $this->reports = $reports; + } + /** + * @return Report[] + */ + public function getReports() + { + return $this->reports; + } + /** + * @param ResourceQuotasRemaining + */ + public function setResourceQuotasRemaining(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ResourceQuotasRemaining $resourceQuotasRemaining) + { + $this->resourceQuotasRemaining = $resourceQuotasRemaining; + } + /** + * @return ResourceQuotasRemaining + */ + public function getResourceQuotasRemaining() + { + return $this->resourceQuotasRemaining; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GetReportsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalData.php new file mode 100644 index 000000000..8d6b08daa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalData.php @@ -0,0 +1,159 @@ +goalCompletionLocation = $goalCompletionLocation; + } + /** + * @return string + */ + public function getGoalCompletionLocation() + { + return $this->goalCompletionLocation; + } + /** + * @param string + */ + public function setGoalCompletions($goalCompletions) + { + $this->goalCompletions = $goalCompletions; + } + /** + * @return string + */ + public function getGoalCompletions() + { + return $this->goalCompletions; + } + /** + * @param int + */ + public function setGoalIndex($goalIndex) + { + $this->goalIndex = $goalIndex; + } + /** + * @return int + */ + public function getGoalIndex() + { + return $this->goalIndex; + } + /** + * @param string + */ + public function setGoalName($goalName) + { + $this->goalName = $goalName; + } + /** + * @return string + */ + public function getGoalName() + { + return $this->goalName; + } + /** + * @param string + */ + public function setGoalPreviousStep1($goalPreviousStep1) + { + $this->goalPreviousStep1 = $goalPreviousStep1; + } + /** + * @return string + */ + public function getGoalPreviousStep1() + { + return $this->goalPreviousStep1; + } + /** + * @param string + */ + public function setGoalPreviousStep2($goalPreviousStep2) + { + $this->goalPreviousStep2 = $goalPreviousStep2; + } + /** + * @return string + */ + public function getGoalPreviousStep2() + { + return $this->goalPreviousStep2; + } + /** + * @param string + */ + public function setGoalPreviousStep3($goalPreviousStep3) + { + $this->goalPreviousStep3 = $goalPreviousStep3; + } + /** + * @return string + */ + public function getGoalPreviousStep3() + { + return $this->goalPreviousStep3; + } + public function setGoalValue($goalValue) + { + $this->goalValue = $goalValue; + } + public function getGoalValue() + { + return $this->goalValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GoalData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GoalData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalSetData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalSetData.php new file mode 100644 index 000000000..9e98a9a0f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalSetData.php @@ -0,0 +1,41 @@ +goals = $goals; + } + /** + * @return GoalData[] + */ + public function getGoals() + { + return $this->goals; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GoalSetData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GoalSetData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Metric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Metric.php new file mode 100644 index 000000000..df5bbbda1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Metric.php @@ -0,0 +1,78 @@ +alias = $alias; + } + /** + * @return string + */ + public function getAlias() + { + return $this->alias; + } + /** + * @param string + */ + public function setExpression($expression) + { + $this->expression = $expression; + } + /** + * @return string + */ + public function getExpression() + { + return $this->expression; + } + /** + * @param string + */ + public function setFormattingType($formattingType) + { + $this->formattingType = $formattingType; + } + /** + * @return string + */ + public function getFormattingType() + { + return $this->formattingType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Metric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Metric'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilter.php new file mode 100644 index 000000000..1faf4bc7a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilter.php @@ -0,0 +1,96 @@ +comparisonValue = $comparisonValue; + } + /** + * @return string + */ + public function getComparisonValue() + { + return $this->comparisonValue; + } + /** + * @param string + */ + public function setMetricName($metricName) + { + $this->metricName = $metricName; + } + /** + * @return string + */ + public function getMetricName() + { + return $this->metricName; + } + /** + * @param bool + */ + public function setNot($not) + { + $this->not = $not; + } + /** + * @return bool + */ + public function getNot() + { + return $this->not; + } + /** + * @param string + */ + public function setOperator($operator) + { + $this->operator = $operator; + } + /** + * @return string + */ + public function getOperator() + { + return $this->operator; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilterClause.php new file mode 100644 index 000000000..ef3dc4b59 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilterClause.php @@ -0,0 +1,59 @@ +filters = $filters; + } + /** + * @return MetricFilter[] + */ + public function getFilters() + { + return $this->filters; + } + /** + * @param string + */ + public function setOperator($operator) + { + $this->operator = $operator; + } + /** + * @return string + */ + public function getOperator() + { + return $this->operator; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricFilterClause'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeader.php new file mode 100644 index 000000000..c83e5e1cc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeader.php @@ -0,0 +1,57 @@ +metricHeaderEntries = $metricHeaderEntries; + } + /** + * @return MetricHeaderEntry[] + */ + public function getMetricHeaderEntries() + { + return $this->metricHeaderEntries; + } + /** + * @param PivotHeader[] + */ + public function setPivotHeaders($pivotHeaders) + { + $this->pivotHeaders = $pivotHeaders; + } + /** + * @return PivotHeader[] + */ + public function getPivotHeaders() + { + return $this->pivotHeaders; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricHeader'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeaderEntry.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeaderEntry.php new file mode 100644 index 000000000..669cae389 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeaderEntry.php @@ -0,0 +1,60 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeaderEntry::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricHeaderEntry'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrFiltersForSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrFiltersForSegment.php new file mode 100644 index 000000000..bb83099e1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrFiltersForSegment.php @@ -0,0 +1,41 @@ +segmentFilterClauses = $segmentFilterClauses; + } + /** + * @return SegmentFilterClause[] + */ + public function getSegmentFilterClauses() + { + return $this->segmentFilterClauses; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\OrFiltersForSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_OrFiltersForSegment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrderBy.php new file mode 100644 index 000000000..0758f95d4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrderBy.php @@ -0,0 +1,78 @@ +fieldName = $fieldName; + } + /** + * @return string + */ + public function getFieldName() + { + return $this->fieldName; + } + /** + * @param string + */ + public function setOrderType($orderType) + { + $this->orderType = $orderType; + } + /** + * @return string + */ + public function getOrderType() + { + return $this->orderType; + } + /** + * @param string + */ + public function setSortOrder($sortOrder) + { + $this->sortOrder = $sortOrder; + } + /** + * @return string + */ + public function getSortOrder() + { + return $this->sortOrder; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\OrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_OrderBy'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PageviewData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PageviewData.php new file mode 100644 index 000000000..87edde277 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PageviewData.php @@ -0,0 +1,60 @@ +pagePath = $pagePath; + } + /** + * @return string + */ + public function getPagePath() + { + return $this->pagePath; + } + /** + * @param string + */ + public function setPageTitle($pageTitle) + { + $this->pageTitle = $pageTitle; + } + /** + * @return string + */ + public function getPageTitle() + { + return $this->pageTitle; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PageviewData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PageviewData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Pivot.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Pivot.php new file mode 100644 index 000000000..8c98ca4f7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Pivot.php @@ -0,0 +1,109 @@ +dimensionFilterClauses = $dimensionFilterClauses; + } + /** + * @return DimensionFilterClause[] + */ + public function getDimensionFilterClauses() + { + return $this->dimensionFilterClauses; + } + /** + * @param Dimension[] + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return Dimension[] + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param int + */ + public function setMaxGroupCount($maxGroupCount) + { + $this->maxGroupCount = $maxGroupCount; + } + /** + * @return int + */ + public function getMaxGroupCount() + { + return $this->maxGroupCount; + } + /** + * @param Metric[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return Metric[] + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param int + */ + public function setStartGroup($startGroup) + { + $this->startGroup = $startGroup; + } + /** + * @return int + */ + public function getStartGroup() + { + return $this->startGroup; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Pivot::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Pivot'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeader.php new file mode 100644 index 000000000..cf2141a87 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeader.php @@ -0,0 +1,59 @@ +pivotHeaderEntries = $pivotHeaderEntries; + } + /** + * @return PivotHeaderEntry[] + */ + public function getPivotHeaderEntries() + { + return $this->pivotHeaderEntries; + } + /** + * @param int + */ + public function setTotalPivotGroupsCount($totalPivotGroupsCount) + { + $this->totalPivotGroupsCount = $totalPivotGroupsCount; + } + /** + * @return int + */ + public function getTotalPivotGroupsCount() + { + return $this->totalPivotGroupsCount; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PivotHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PivotHeader'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeaderEntry.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeaderEntry.php new file mode 100644 index 000000000..a30b2043d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeaderEntry.php @@ -0,0 +1,77 @@ +dimensionNames = $dimensionNames; + } + /** + * @return string[] + */ + public function getDimensionNames() + { + return $this->dimensionNames; + } + /** + * @param string[] + */ + public function setDimensionValues($dimensionValues) + { + $this->dimensionValues = $dimensionValues; + } + /** + * @return string[] + */ + public function getDimensionValues() + { + return $this->dimensionValues; + } + /** + * @param MetricHeaderEntry + */ + public function setMetric(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeaderEntry $metric) + { + $this->metric = $metric; + } + /** + * @return MetricHeaderEntry + */ + public function getMetric() + { + return $this->metric; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PivotHeaderEntry::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PivotHeaderEntry'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotValueRegion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotValueRegion.php new file mode 100644 index 000000000..c4e6febd4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotValueRegion.php @@ -0,0 +1,43 @@ +values = $values; + } + /** + * @return string[] + */ + public function getValues() + { + return $this->values; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PivotValueRegion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PivotValueRegion'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ProductData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ProductData.php new file mode 100644 index 000000000..643a585dd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ProductData.php @@ -0,0 +1,87 @@ +itemRevenue = $itemRevenue; + } + public function getItemRevenue() + { + return $this->itemRevenue; + } + /** + * @param string + */ + public function setProductName($productName) + { + $this->productName = $productName; + } + /** + * @return string + */ + public function getProductName() + { + return $this->productName; + } + /** + * @param string + */ + public function setProductQuantity($productQuantity) + { + $this->productQuantity = $productQuantity; + } + /** + * @return string + */ + public function getProductQuantity() + { + return $this->productQuantity; + } + /** + * @param string + */ + public function setProductSku($productSku) + { + $this->productSku = $productSku; + } + /** + * @return string + */ + public function getProductSku() + { + return $this->productSku; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ProductData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ProductData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Report.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Report.php new file mode 100644 index 000000000..2a56e7a5d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Report.php @@ -0,0 +1,74 @@ +columnHeader = $columnHeader; + } + /** + * @return ColumnHeader + */ + public function getColumnHeader() + { + return $this->columnHeader; + } + /** + * @param ReportData + */ + public function setData(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportData $data) + { + $this->data = $data; + } + /** + * @return ReportData + */ + public function getData() + { + return $this->data; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Report::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Report'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportData.php new file mode 100644 index 000000000..f22f77cc0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportData.php @@ -0,0 +1,197 @@ +dataLastRefreshed = $dataLastRefreshed; + } + /** + * @return string + */ + public function getDataLastRefreshed() + { + return $this->dataLastRefreshed; + } + /** + * @param string + */ + public function setEmptyReason($emptyReason) + { + $this->emptyReason = $emptyReason; + } + /** + * @return string + */ + public function getEmptyReason() + { + return $this->emptyReason; + } + /** + * @param bool + */ + public function setIsDataGolden($isDataGolden) + { + $this->isDataGolden = $isDataGolden; + } + /** + * @return bool + */ + public function getIsDataGolden() + { + return $this->isDataGolden; + } + /** + * @param DateRangeValues[] + */ + public function setMaximums($maximums) + { + $this->maximums = $maximums; + } + /** + * @return DateRangeValues[] + */ + public function getMaximums() + { + return $this->maximums; + } + /** + * @param DateRangeValues[] + */ + public function setMinimums($minimums) + { + $this->minimums = $minimums; + } + /** + * @return DateRangeValues[] + */ + public function getMinimums() + { + return $this->minimums; + } + /** + * @param int + */ + public function setRowCount($rowCount) + { + $this->rowCount = $rowCount; + } + /** + * @return int + */ + public function getRowCount() + { + return $this->rowCount; + } + /** + * @param ReportRow[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return ReportRow[] + */ + public function getRows() + { + return $this->rows; + } + /** + * @param string[] + */ + public function setSamplesReadCounts($samplesReadCounts) + { + $this->samplesReadCounts = $samplesReadCounts; + } + /** + * @return string[] + */ + public function getSamplesReadCounts() + { + return $this->samplesReadCounts; + } + /** + * @param string[] + */ + public function setSamplingSpaceSizes($samplingSpaceSizes) + { + $this->samplingSpaceSizes = $samplingSpaceSizes; + } + /** + * @return string[] + */ + public function getSamplingSpaceSizes() + { + return $this->samplingSpaceSizes; + } + /** + * @param DateRangeValues[] + */ + public function setTotals($totals) + { + $this->totals = $totals; + } + /** + * @return DateRangeValues[] + */ + public function getTotals() + { + return $this->totals; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ReportData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRequest.php new file mode 100644 index 000000000..84e129cc8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRequest.php @@ -0,0 +1,313 @@ +cohortGroup = $cohortGroup; + } + /** + * @return CohortGroup + */ + public function getCohortGroup() + { + return $this->cohortGroup; + } + /** + * @param DateRange[] + */ + public function setDateRanges($dateRanges) + { + $this->dateRanges = $dateRanges; + } + /** + * @return DateRange[] + */ + public function getDateRanges() + { + return $this->dateRanges; + } + /** + * @param DimensionFilterClause[] + */ + public function setDimensionFilterClauses($dimensionFilterClauses) + { + $this->dimensionFilterClauses = $dimensionFilterClauses; + } + /** + * @return DimensionFilterClause[] + */ + public function getDimensionFilterClauses() + { + return $this->dimensionFilterClauses; + } + /** + * @param Dimension[] + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return Dimension[] + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param string + */ + public function setFiltersExpression($filtersExpression) + { + $this->filtersExpression = $filtersExpression; + } + /** + * @return string + */ + public function getFiltersExpression() + { + return $this->filtersExpression; + } + /** + * @param bool + */ + public function setHideTotals($hideTotals) + { + $this->hideTotals = $hideTotals; + } + /** + * @return bool + */ + public function getHideTotals() + { + return $this->hideTotals; + } + /** + * @param bool + */ + public function setHideValueRanges($hideValueRanges) + { + $this->hideValueRanges = $hideValueRanges; + } + /** + * @return bool + */ + public function getHideValueRanges() + { + return $this->hideValueRanges; + } + /** + * @param bool + */ + public function setIncludeEmptyRows($includeEmptyRows) + { + $this->includeEmptyRows = $includeEmptyRows; + } + /** + * @return bool + */ + public function getIncludeEmptyRows() + { + return $this->includeEmptyRows; + } + /** + * @param MetricFilterClause[] + */ + public function setMetricFilterClauses($metricFilterClauses) + { + $this->metricFilterClauses = $metricFilterClauses; + } + /** + * @return MetricFilterClause[] + */ + public function getMetricFilterClauses() + { + return $this->metricFilterClauses; + } + /** + * @param Metric[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return Metric[] + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param OrderBy[] + */ + public function setOrderBys($orderBys) + { + $this->orderBys = $orderBys; + } + /** + * @return OrderBy[] + */ + public function getOrderBys() + { + return $this->orderBys; + } + /** + * @param int + */ + public function setPageSize($pageSize) + { + $this->pageSize = $pageSize; + } + /** + * @return int + */ + public function getPageSize() + { + return $this->pageSize; + } + /** + * @param string + */ + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + /** + * @return string + */ + public function getPageToken() + { + return $this->pageToken; + } + /** + * @param Pivot[] + */ + public function setPivots($pivots) + { + $this->pivots = $pivots; + } + /** + * @return Pivot[] + */ + public function getPivots() + { + return $this->pivots; + } + /** + * @param string + */ + public function setSamplingLevel($samplingLevel) + { + $this->samplingLevel = $samplingLevel; + } + /** + * @return string + */ + public function getSamplingLevel() + { + return $this->samplingLevel; + } + /** + * @param Segment[] + */ + public function setSegments($segments) + { + $this->segments = $segments; + } + /** + * @return Segment[] + */ + public function getSegments() + { + return $this->segments; + } + /** + * @param string + */ + public function setViewId($viewId) + { + $this->viewId = $viewId; + } + /** + * @return string + */ + public function getViewId() + { + return $this->viewId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ReportRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRow.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRow.php new file mode 100644 index 000000000..c0a8a7bbe --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRow.php @@ -0,0 +1,59 @@ +dimensions = $dimensions; + } + /** + * @return string[] + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param DateRangeValues[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return DateRangeValues[] + */ + public function getMetrics() + { + return $this->metrics; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportRow::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ReportRow'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/Reports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/Reports.php new file mode 100644 index 000000000..995aaaed3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/Reports.php @@ -0,0 +1,47 @@ + + * $analyticsreportingService = new Google\Service\AnalyticsReporting(...); + * $reports = $analyticsreportingService->reports; + * + */ +class Reports extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Returns the Analytics data. (reports.batchGet) + * + * @param GetReportsRequest $postBody + * @param array $optParams Optional parameters. + * @return GetReportsResponse + */ + public function batchGet(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\Reports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Resource_Reports'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/UserActivity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/UserActivity.php new file mode 100644 index 000000000..2a2ffec7e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/UserActivity.php @@ -0,0 +1,47 @@ + + * $analyticsreportingService = new Google\Service\AnalyticsReporting(...); + * $userActivity = $analyticsreportingService->userActivity; + * + */ +class UserActivity extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Returns User Activity data. (userActivity.search) + * + * @param SearchUserActivityRequest $postBody + * @param array $optParams Optional parameters. + * @return SearchUserActivityResponse + */ + public function search(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('search', [$params], \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\UserActivity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Resource_UserActivity'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ResourceQuotasRemaining.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ResourceQuotasRemaining.php new file mode 100644 index 000000000..61b452381 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ResourceQuotasRemaining.php @@ -0,0 +1,60 @@ +dailyQuotaTokensRemaining = $dailyQuotaTokensRemaining; + } + /** + * @return int + */ + public function getDailyQuotaTokensRemaining() + { + return $this->dailyQuotaTokensRemaining; + } + /** + * @param int + */ + public function setHourlyQuotaTokensRemaining($hourlyQuotaTokensRemaining) + { + $this->hourlyQuotaTokensRemaining = $hourlyQuotaTokensRemaining; + } + /** + * @return int + */ + public function getHourlyQuotaTokensRemaining() + { + return $this->hourlyQuotaTokensRemaining; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ResourceQuotasRemaining::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ResourceQuotasRemaining'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ScreenviewData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ScreenviewData.php new file mode 100644 index 000000000..0bde93c35 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ScreenviewData.php @@ -0,0 +1,96 @@ +appName = $appName; + } + /** + * @return string + */ + public function getAppName() + { + return $this->appName; + } + /** + * @param string + */ + public function setMobileDeviceBranding($mobileDeviceBranding) + { + $this->mobileDeviceBranding = $mobileDeviceBranding; + } + /** + * @return string + */ + public function getMobileDeviceBranding() + { + return $this->mobileDeviceBranding; + } + /** + * @param string + */ + public function setMobileDeviceModel($mobileDeviceModel) + { + $this->mobileDeviceModel = $mobileDeviceModel; + } + /** + * @return string + */ + public function getMobileDeviceModel() + { + return $this->mobileDeviceModel; + } + /** + * @param string + */ + public function setScreenName($screenName) + { + $this->screenName = $screenName; + } + /** + * @return string + */ + public function getScreenName() + { + return $this->screenName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ScreenviewData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ScreenviewData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityRequest.php new file mode 100644 index 000000000..36e0816f0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityRequest.php @@ -0,0 +1,129 @@ +activityTypes = $activityTypes; + } + /** + * @return string[] + */ + public function getActivityTypes() + { + return $this->activityTypes; + } + /** + * @param DateRange + */ + public function setDateRange(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + /** + * @return DateRange + */ + public function getDateRange() + { + return $this->dateRange; + } + /** + * @param int + */ + public function setPageSize($pageSize) + { + $this->pageSize = $pageSize; + } + /** + * @return int + */ + public function getPageSize() + { + return $this->pageSize; + } + /** + * @param string + */ + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + /** + * @return string + */ + public function getPageToken() + { + return $this->pageToken; + } + /** + * @param User + */ + public function setUser(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\User $user) + { + $this->user = $user; + } + /** + * @return User + */ + public function getUser() + { + return $this->user; + } + /** + * @param string + */ + public function setViewId($viewId) + { + $this->viewId = $viewId; + } + /** + * @return string + */ + public function getViewId() + { + return $this->viewId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SearchUserActivityRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityResponse.php new file mode 100644 index 000000000..bd0fae461 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityResponse.php @@ -0,0 +1,86 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSampleRate($sampleRate) + { + $this->sampleRate = $sampleRate; + } + public function getSampleRate() + { + return $this->sampleRate; + } + /** + * @param UserActivitySession[] + */ + public function setSessions($sessions) + { + $this->sessions = $sessions; + } + /** + * @return UserActivitySession[] + */ + public function getSessions() + { + return $this->sessions; + } + /** + * @param int + */ + public function setTotalRows($totalRows) + { + $this->totalRows = $totalRows; + } + /** + * @return int + */ + public function getTotalRows() + { + return $this->totalRows; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SearchUserActivityResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Segment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Segment.php new file mode 100644 index 000000000..e6f28d703 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Segment.php @@ -0,0 +1,58 @@ +dynamicSegment = $dynamicSegment; + } + /** + * @return DynamicSegment + */ + public function getDynamicSegment() + { + return $this->dynamicSegment; + } + /** + * @param string + */ + public function setSegmentId($segmentId) + { + $this->segmentId = $segmentId; + } + /** + * @return string + */ + public function getSegmentId() + { + return $this->segmentId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Segment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Segment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDefinition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDefinition.php new file mode 100644 index 000000000..918d47a39 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDefinition.php @@ -0,0 +1,41 @@ +segmentFilters = $segmentFilters; + } + /** + * @return SegmentFilter[] + */ + public function getSegmentFilters() + { + return $this->segmentFilters; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDefinition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentDefinition'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDimensionFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDimensionFilter.php new file mode 100644 index 000000000..c45102f10 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDimensionFilter.php @@ -0,0 +1,133 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setDimensionName($dimensionName) + { + $this->dimensionName = $dimensionName; + } + /** + * @return string + */ + public function getDimensionName() + { + return $this->dimensionName; + } + /** + * @param string[] + */ + public function setExpressions($expressions) + { + $this->expressions = $expressions; + } + /** + * @return string[] + */ + public function getExpressions() + { + return $this->expressions; + } + /** + * @param string + */ + public function setMaxComparisonValue($maxComparisonValue) + { + $this->maxComparisonValue = $maxComparisonValue; + } + /** + * @return string + */ + public function getMaxComparisonValue() + { + return $this->maxComparisonValue; + } + /** + * @param string + */ + public function setMinComparisonValue($minComparisonValue) + { + $this->minComparisonValue = $minComparisonValue; + } + /** + * @return string + */ + public function getMinComparisonValue() + { + return $this->minComparisonValue; + } + /** + * @param string + */ + public function setOperator($operator) + { + $this->operator = $operator; + } + /** + * @return string + */ + public function getOperator() + { + return $this->operator; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDimensionFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentDimensionFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilter.php new file mode 100644 index 000000000..8b3ea0277 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilter.php @@ -0,0 +1,74 @@ +not = $not; + } + /** + * @return bool + */ + public function getNot() + { + return $this->not; + } + /** + * @param SequenceSegment + */ + public function setSequenceSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SequenceSegment $sequenceSegment) + { + $this->sequenceSegment = $sequenceSegment; + } + /** + * @return SequenceSegment + */ + public function getSequenceSegment() + { + return $this->sequenceSegment; + } + /** + * @param SimpleSegment + */ + public function setSimpleSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SimpleSegment $simpleSegment) + { + $this->simpleSegment = $simpleSegment; + } + /** + * @return SimpleSegment + */ + public function getSimpleSegment() + { + return $this->simpleSegment; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilterClause.php new file mode 100644 index 000000000..fb83f01bf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilterClause.php @@ -0,0 +1,74 @@ +dimensionFilter = $dimensionFilter; + } + /** + * @return SegmentDimensionFilter + */ + public function getDimensionFilter() + { + return $this->dimensionFilter; + } + /** + * @param SegmentMetricFilter + */ + public function setMetricFilter(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentMetricFilter $metricFilter) + { + $this->metricFilter = $metricFilter; + } + /** + * @return SegmentMetricFilter + */ + public function getMetricFilter() + { + return $this->metricFilter; + } + /** + * @param bool + */ + public function setNot($not) + { + $this->not = $not; + } + /** + * @return bool + */ + public function getNot() + { + return $this->not; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentFilterClause'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentMetricFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentMetricFilter.php new file mode 100644 index 000000000..acc6cbc1f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentMetricFilter.php @@ -0,0 +1,114 @@ +comparisonValue = $comparisonValue; + } + /** + * @return string + */ + public function getComparisonValue() + { + return $this->comparisonValue; + } + /** + * @param string + */ + public function setMaxComparisonValue($maxComparisonValue) + { + $this->maxComparisonValue = $maxComparisonValue; + } + /** + * @return string + */ + public function getMaxComparisonValue() + { + return $this->maxComparisonValue; + } + /** + * @param string + */ + public function setMetricName($metricName) + { + $this->metricName = $metricName; + } + /** + * @return string + */ + public function getMetricName() + { + return $this->metricName; + } + /** + * @param string + */ + public function setOperator($operator) + { + $this->operator = $operator; + } + /** + * @return string + */ + public function getOperator() + { + return $this->operator; + } + /** + * @param string + */ + public function setScope($scope) + { + $this->scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentMetricFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentMetricFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentSequenceStep.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentSequenceStep.php new file mode 100644 index 000000000..acb964cf8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentSequenceStep.php @@ -0,0 +1,59 @@ +matchType = $matchType; + } + /** + * @return string + */ + public function getMatchType() + { + return $this->matchType; + } + /** + * @param OrFiltersForSegment[] + */ + public function setOrFiltersForSegment($orFiltersForSegment) + { + $this->orFiltersForSegment = $orFiltersForSegment; + } + /** + * @return OrFiltersForSegment[] + */ + public function getOrFiltersForSegment() + { + return $this->orFiltersForSegment; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentSequenceStep::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentSequenceStep'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SequenceSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SequenceSegment.php new file mode 100644 index 000000000..47437b774 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SequenceSegment.php @@ -0,0 +1,59 @@ +firstStepShouldMatchFirstHit = $firstStepShouldMatchFirstHit; + } + /** + * @return bool + */ + public function getFirstStepShouldMatchFirstHit() + { + return $this->firstStepShouldMatchFirstHit; + } + /** + * @param SegmentSequenceStep[] + */ + public function setSegmentSequenceSteps($segmentSequenceSteps) + { + $this->segmentSequenceSteps = $segmentSequenceSteps; + } + /** + * @return SegmentSequenceStep[] + */ + public function getSegmentSequenceSteps() + { + return $this->segmentSequenceSteps; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SequenceSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SequenceSegment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SimpleSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SimpleSegment.php new file mode 100644 index 000000000..878a70118 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SimpleSegment.php @@ -0,0 +1,41 @@ +orFiltersForSegment = $orFiltersForSegment; + } + /** + * @return OrFiltersForSegment[] + */ + public function getOrFiltersForSegment() + { + return $this->orFiltersForSegment; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SimpleSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SimpleSegment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/TransactionData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/TransactionData.php new file mode 100644 index 000000000..b23c22839 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/TransactionData.php @@ -0,0 +1,69 @@ +transactionId = $transactionId; + } + /** + * @return string + */ + public function getTransactionId() + { + return $this->transactionId; + } + public function setTransactionRevenue($transactionRevenue) + { + $this->transactionRevenue = $transactionRevenue; + } + public function getTransactionRevenue() + { + return $this->transactionRevenue; + } + public function setTransactionShipping($transactionShipping) + { + $this->transactionShipping = $transactionShipping; + } + public function getTransactionShipping() + { + return $this->transactionShipping; + } + public function setTransactionTax($transactionTax) + { + $this->transactionTax = $transactionTax; + } + public function getTransactionTax() + { + return $this->transactionTax; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\TransactionData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_TransactionData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/User.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/User.php new file mode 100644 index 000000000..1b6d54c1c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/User.php @@ -0,0 +1,60 @@ +type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUserId($userId) + { + $this->userId = $userId; + } + /** + * @return string + */ + public function getUserId() + { + return $this->userId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\User::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_User'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/UserActivitySession.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/UserActivitySession.php new file mode 100644 index 000000000..5c6e8fab8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/UserActivitySession.php @@ -0,0 +1,131 @@ +activities = $activities; + } + /** + * @return Activity[] + */ + public function getActivities() + { + return $this->activities; + } + /** + * @param string + */ + public function setDataSource($dataSource) + { + $this->dataSource = $dataSource; + } + /** + * @return string + */ + public function getDataSource() + { + return $this->dataSource; + } + /** + * @param string + */ + public function setDeviceCategory($deviceCategory) + { + $this->deviceCategory = $deviceCategory; + } + /** + * @return string + */ + public function getDeviceCategory() + { + return $this->deviceCategory; + } + /** + * @param string + */ + public function setPlatform($platform) + { + $this->platform = $platform; + } + /** + * @return string + */ + public function getPlatform() + { + return $this->platform; + } + /** + * @param string + */ + public function setSessionDate($sessionDate) + { + $this->sessionDate = $sessionDate; + } + /** + * @return string + */ + public function getSessionDate() + { + return $this->sessionDate; + } + /** + * @param string + */ + public function setSessionId($sessionId) + { + $this->sessionId = $sessionId; + } + /** + * @return string + */ + public function getSessionId() + { + return $this->sessionId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\UserActivitySession::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_UserActivitySession'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin.php new file mode 100644 index 000000000..f955bac36 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin.php @@ -0,0 +1,94 @@ + +

+* +*

+* For more information about this service, see the API +* Documentation +*

+* +* @author Google, Inc. +*/ +class GoogleAnalyticsAdmin extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** Edit Google Analytics management entities. */ + const ANALYTICS_EDIT = "https://www.googleapis.com/auth/analytics.edit"; + /** Manage Google Analytics Account users by email address. */ + const ANALYTICS_MANAGE_USERS = "https://www.googleapis.com/auth/analytics.manage.users"; + /** View Google Analytics user permissions. */ + const ANALYTICS_MANAGE_USERS_READONLY = "https://www.googleapis.com/auth/analytics.manage.users.readonly"; + /** See and download your Google Analytics data. */ + const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly"; + public $accountSummaries; + public $accounts; + public $accounts_userLinks; + public $properties; + public $properties_audiences; + public $properties_conversionEvents; + public $properties_customDimensions; + public $properties_customMetrics; + public $properties_dataStreams; + public $properties_dataStreams_measurementProtocolSecrets; + public $properties_displayVideo360AdvertiserLinkProposals; + public $properties_displayVideo360AdvertiserLinks; + public $properties_firebaseLinks; + public $properties_googleAdsLinks; + public $properties_searchAds360Links; + public $properties_userLinks; + /** + * Constructs the internal representation of the GoogleAnalyticsAdmin service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://analyticsadmin.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v1alpha'; + $this->serviceName = 'analyticsadmin'; + $this->accountSummaries = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountSummaries($this, $this->serviceName, 'accountSummaries', ['methods' => ['list' => ['path' => 'v1alpha/accountSummaries', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Accounts($this, $this->serviceName, 'accounts', ['methods' => ['delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getDataSharingSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/accounts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'showDeleted' => ['location' => 'query', 'type' => 'boolean']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'provisionAccountTicket' => ['path' => 'v1alpha/accounts:provisionAccountTicket', 'httpMethod' => 'POST', 'parameters' => []], 'searchChangeHistoryEvents' => ['path' => 'v1alpha/{+account}:searchChangeHistoryEvents', 'httpMethod' => 'POST', 'parameters' => ['account' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->accounts_userLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountsUserLinks($this, $this->serviceName, 'userLinks', ['methods' => ['audit' => ['path' => 'v1alpha/{+parent}/userLinks:audit', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchCreate' => ['path' => 'v1alpha/{+parent}/userLinks:batchCreate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchDelete' => ['path' => 'v1alpha/{+parent}/userLinks:batchDelete', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchGet' => ['path' => 'v1alpha/{+parent}/userLinks:batchGet', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'names' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'batchUpdate' => ['path' => 'v1alpha/{+parent}/userLinks:batchUpdate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'notifyNewUser' => ['location' => 'query', 'type' => 'boolean']]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->properties = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Properties($this, $this->serviceName, 'properties', ['methods' => ['acknowledgeUserDataCollection' => ['path' => 'v1alpha/{+property}:acknowledgeUserDataCollection', 'httpMethod' => 'POST', 'parameters' => ['property' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/properties', 'httpMethod' => 'POST', 'parameters' => []], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAttributionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getDataRetentionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getGoogleSignalsSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/properties', 'httpMethod' => 'GET', 'parameters' => ['filter' => ['location' => 'query', 'type' => 'string'], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'showDeleted' => ['location' => 'query', 'type' => 'boolean']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'runAccessReport' => ['path' => 'v1alpha/{+entity}:runAccessReport', 'httpMethod' => 'POST', 'parameters' => ['entity' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'updateAttributionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'updateDataRetentionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'updateGoogleSignalsSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_audiences = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAudiences($this, $this->serviceName, 'audiences', ['methods' => ['archive' => ['path' => 'v1alpha/{+name}:archive', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/audiences', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/audiences', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_conversionEvents = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesConversionEvents($this, $this->serviceName, 'conversionEvents', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/conversionEvents', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/conversionEvents', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_customDimensions = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomDimensions($this, $this->serviceName, 'customDimensions', ['methods' => ['archive' => ['path' => 'v1alpha/{+name}:archive', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/customDimensions', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/customDimensions', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_customMetrics = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomMetrics($this, $this->serviceName, 'customMetrics', ['methods' => ['archive' => ['path' => 'v1alpha/{+name}:archive', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/customMetrics', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/customMetrics', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_dataStreams = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreams($this, $this->serviceName, 'dataStreams', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/dataStreams', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getGlobalSiteTag' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/dataStreams', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_dataStreams_measurementProtocolSecrets = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreamsMeasurementProtocolSecrets($this, $this->serviceName, 'measurementProtocolSecrets', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/measurementProtocolSecrets', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/measurementProtocolSecrets', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_displayVideo360AdvertiserLinkProposals = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinkProposals($this, $this->serviceName, 'displayVideo360AdvertiserLinkProposals', ['methods' => ['approve' => ['path' => 'v1alpha/{+name}:approve', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'cancel' => ['path' => 'v1alpha/{+name}:cancel', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinkProposals', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinkProposals', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_displayVideo360AdvertiserLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinks($this, $this->serviceName, 'displayVideo360AdvertiserLinks', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_firebaseLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesFirebaseLinks($this, $this->serviceName, 'firebaseLinks', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/firebaseLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/firebaseLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_googleAdsLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesGoogleAdsLinks($this, $this->serviceName, 'googleAdsLinks', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/googleAdsLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/googleAdsLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_searchAds360Links = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesSearchAds360Links($this, $this->serviceName, 'searchAds360Links', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/searchAds360Links', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/searchAds360Links', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->properties_userLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesUserLinks($this, $this->serviceName, 'userLinks', ['methods' => ['audit' => ['path' => 'v1alpha/{+parent}/userLinks:audit', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchCreate' => ['path' => 'v1alpha/{+parent}/userLinks:batchCreate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchDelete' => ['path' => 'v1alpha/{+parent}/userLinks:batchDelete', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchGet' => ['path' => 'v1alpha/{+parent}/userLinks:batchGet', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'names' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'batchUpdate' => ['path' => 'v1alpha/{+parent}/userLinks:batchUpdate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'notifyNewUser' => ['location' => 'query', 'type' => 'boolean']]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessBetweenFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessBetweenFilter.php new file mode 100644 index 000000000..41d95b975 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessBetweenFilter.php @@ -0,0 +1,56 @@ +fromValue = $fromValue; + } + /** + * @return GoogleAnalyticsAdminV1alphaNumericValue + */ + public function getFromValue() + { + return $this->fromValue; + } + /** + * @param GoogleAnalyticsAdminV1alphaNumericValue + */ + public function setToValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaNumericValue $toValue) + { + $this->toValue = $toValue; + } + /** + * @return GoogleAnalyticsAdminV1alphaNumericValue + */ + public function getToValue() + { + return $this->toValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessBetweenFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessBetweenFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDateRange.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDateRange.php new file mode 100644 index 000000000..83a104383 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDateRange.php @@ -0,0 +1,60 @@ +endDate = $endDate; + } + /** + * @return string + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param string + */ + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + /** + * @return string + */ + public function getStartDate() + { + return $this->startDate; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDateRange::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDateRange'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimension.php new file mode 100644 index 000000000..db85ad871 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimension.php @@ -0,0 +1,42 @@ +dimensionName = $dimensionName; + } + /** + * @return string + */ + public function getDimensionName() + { + return $this->dimensionName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDimension'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionHeader.php new file mode 100644 index 000000000..be2b2d72f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionHeader.php @@ -0,0 +1,42 @@ +dimensionName = $dimensionName; + } + /** + * @return string + */ + public function getDimensionName() + { + return $this->dimensionName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDimensionHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDimensionHeader'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionValue.php new file mode 100644 index 000000000..134344b5b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionValue.php @@ -0,0 +1,42 @@ +value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDimensionValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDimensionValue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilter.php new file mode 100644 index 000000000..51ce51670 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilter.php @@ -0,0 +1,106 @@ +betweenFilter = $betweenFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessBetweenFilter + */ + public function getBetweenFilter() + { + return $this->betweenFilter; + } + /** + * @param string + */ + public function setFieldName($fieldName) + { + $this->fieldName = $fieldName; + } + /** + * @return string + */ + public function getFieldName() + { + return $this->fieldName; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessInListFilter + */ + public function setInListFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessInListFilter $inListFilter) + { + $this->inListFilter = $inListFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessInListFilter + */ + public function getInListFilter() + { + return $this->inListFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessNumericFilter + */ + public function setNumericFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessNumericFilter $numericFilter) + { + $this->numericFilter = $numericFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessNumericFilter + */ + public function getNumericFilter() + { + return $this->numericFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessStringFilter + */ + public function setStringFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessStringFilter $stringFilter) + { + $this->stringFilter = $stringFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessStringFilter + */ + public function getStringFilter() + { + return $this->stringFilter; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpression.php new file mode 100644 index 000000000..678e296f9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpression.php @@ -0,0 +1,88 @@ +accessFilter = $accessFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessFilter + */ + public function getAccessFilter() + { + return $this->accessFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessFilterExpressionList + */ + public function setAndGroup(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpressionList $andGroup) + { + $this->andGroup = $andGroup; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessFilterExpressionList + */ + public function getAndGroup() + { + return $this->andGroup; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessFilterExpression + */ + public function setNotExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression $notExpression) + { + $this->notExpression = $notExpression; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression + */ + public function getNotExpression() + { + return $this->notExpression; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessFilterExpressionList + */ + public function setOrGroup(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpressionList $orGroup) + { + $this->orGroup = $orGroup; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessFilterExpressionList + */ + public function getOrGroup() + { + return $this->orGroup; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessFilterExpression'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpressionList.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpressionList.php new file mode 100644 index 000000000..601a8e622 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpressionList.php @@ -0,0 +1,41 @@ +expressions = $expressions; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression[] + */ + public function getExpressions() + { + return $this->expressions; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpressionList::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessFilterExpressionList'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessInListFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessInListFilter.php new file mode 100644 index 000000000..2f2a5789c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessInListFilter.php @@ -0,0 +1,61 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string[] + */ + public function setValues($values) + { + $this->values = $values; + } + /** + * @return string[] + */ + public function getValues() + { + return $this->values; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessInListFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessInListFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetric.php new file mode 100644 index 000000000..acb5467ff --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetric.php @@ -0,0 +1,42 @@ +metricName = $metricName; + } + /** + * @return string + */ + public function getMetricName() + { + return $this->metricName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessMetric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessMetric'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricHeader.php new file mode 100644 index 000000000..7f9ea1ce6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricHeader.php @@ -0,0 +1,42 @@ +metricName = $metricName; + } + /** + * @return string + */ + public function getMetricName() + { + return $this->metricName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessMetricHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessMetricHeader'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricValue.php new file mode 100644 index 000000000..e7ffc347a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricValue.php @@ -0,0 +1,42 @@ +value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessMetricValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessMetricValue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessNumericFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessNumericFilter.php new file mode 100644 index 000000000..37828c179 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessNumericFilter.php @@ -0,0 +1,58 @@ +operation = $operation; + } + /** + * @return string + */ + public function getOperation() + { + return $this->operation; + } + /** + * @param GoogleAnalyticsAdminV1alphaNumericValue + */ + public function setValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaNumericValue $value) + { + $this->value = $value; + } + /** + * @return GoogleAnalyticsAdminV1alphaNumericValue + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessNumericFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessNumericFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderBy.php new file mode 100644 index 000000000..a34757900 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderBy.php @@ -0,0 +1,74 @@ +desc = $desc; + } + /** + * @return bool + */ + public function getDesc() + { + return $this->desc; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy + */ + public function setDimension(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy $dimension) + { + $this->dimension = $dimension; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy + */ + public function getDimension() + { + return $this->dimension; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy + */ + public function setMetric(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy $metric) + { + $this->metric = $metric; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy + */ + public function getMetric() + { + return $this->metric; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessOrderBy'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy.php new file mode 100644 index 000000000..fa5450752 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy.php @@ -0,0 +1,60 @@ +dimensionName = $dimensionName; + } + /** + * @return string + */ + public function getDimensionName() + { + return $this->dimensionName; + } + /** + * @param string + */ + public function setOrderType($orderType) + { + $this->orderType = $orderType; + } + /** + * @return string + */ + public function getOrderType() + { + return $this->orderType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy.php new file mode 100644 index 000000000..27c807cfb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy.php @@ -0,0 +1,42 @@ +metricName = $metricName; + } + /** + * @return string + */ + public function getMetricName() + { + return $this->metricName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuota.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuota.php new file mode 100644 index 000000000..46fac1cfe --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuota.php @@ -0,0 +1,104 @@ +concurrentRequests = $concurrentRequests; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function getConcurrentRequests() + { + return $this->concurrentRequests; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function setServerErrorsPerProjectPerHour(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $serverErrorsPerProjectPerHour) + { + $this->serverErrorsPerProjectPerHour = $serverErrorsPerProjectPerHour; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function getServerErrorsPerProjectPerHour() + { + return $this->serverErrorsPerProjectPerHour; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function setTokensPerDay(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $tokensPerDay) + { + $this->tokensPerDay = $tokensPerDay; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function getTokensPerDay() + { + return $this->tokensPerDay; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function setTokensPerHour(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $tokensPerHour) + { + $this->tokensPerHour = $tokensPerHour; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function getTokensPerHour() + { + return $this->tokensPerHour; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function setTokensPerProjectPerHour(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $tokensPerProjectPerHour) + { + $this->tokensPerProjectPerHour = $tokensPerProjectPerHour; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus + */ + public function getTokensPerProjectPerHour() + { + return $this->tokensPerProjectPerHour; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuota::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessQuota'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuotaStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuotaStatus.php new file mode 100644 index 000000000..eb6f73dc4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuotaStatus.php @@ -0,0 +1,60 @@ +consumed = $consumed; + } + /** + * @return int + */ + public function getConsumed() + { + return $this->consumed; + } + /** + * @param int + */ + public function setRemaining($remaining) + { + $this->remaining = $remaining; + } + /** + * @return int + */ + public function getRemaining() + { + return $this->remaining; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessQuotaStatus'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessRow.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessRow.php new file mode 100644 index 000000000..56aa22a2e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessRow.php @@ -0,0 +1,57 @@ +dimensionValues = $dimensionValues; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessDimensionValue[] + */ + public function getDimensionValues() + { + return $this->dimensionValues; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessMetricValue[] + */ + public function setMetricValues($metricValues) + { + $this->metricValues = $metricValues; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessMetricValue[] + */ + public function getMetricValues() + { + return $this->metricValues; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessRow::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessRow'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessStringFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessStringFilter.php new file mode 100644 index 000000000..26a3f77a0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessStringFilter.php @@ -0,0 +1,78 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + /** + * @return string + */ + public function getMatchType() + { + return $this->matchType; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessStringFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessStringFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccount.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccount.php new file mode 100644 index 000000000..02ccadf7a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccount.php @@ -0,0 +1,132 @@ +createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param bool + */ + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + /** + * @return bool + */ + public function getDeleted() + { + return $this->deleted; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setRegionCode($regionCode) + { + $this->regionCode = $regionCode; + } + /** + * @return string + */ + public function getRegionCode() + { + return $this->regionCode; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccount'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccountSummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccountSummary.php new file mode 100644 index 000000000..a7fdad345 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccountSummary.php @@ -0,0 +1,95 @@ +account = $account; + } + /** + * @return string + */ + public function getAccount() + { + return $this->account; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param GoogleAnalyticsAdminV1alphaPropertySummary[] + */ + public function setPropertySummaries($propertySummaries) + { + $this->propertySummaries = $propertySummaries; + } + /** + * @return GoogleAnalyticsAdminV1alphaPropertySummary[] + */ + public function getPropertySummaries() + { + return $this->propertySummaries; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccountSummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccountSummary'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest.php new file mode 100644 index 000000000..c8ba6e399 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest.php @@ -0,0 +1,42 @@ +acknowledgement = $acknowledgement; + } + /** + * @return string + */ + public function getAcknowledgement() + { + return $this->acknowledgement; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse.php new file mode 100644 index 000000000..3538b8577 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse.php @@ -0,0 +1,24 @@ +createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setFirebaseAppId($firebaseAppId) + { + $this->firebaseAppId = $firebaseAppId; + } + /** + * @return string + */ + public function getFirebaseAppId() + { + return $this->firebaseAppId; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPackageName($packageName) + { + $this->packageName = $packageName; + } + /** + * @return string + */ + public function getPackageName() + { + return $this->packageName; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAndroidAppDataStream'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest.php new file mode 100644 index 000000000..bc8913c7f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest.php @@ -0,0 +1,24 @@ +displayVideo360AdvertiserLink = $displayVideo360AdvertiserLink; + } + /** + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink + */ + public function getDisplayVideo360AdvertiserLink() + { + return $this->displayVideo360AdvertiserLink; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveAudienceRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveAudienceRequest.php new file mode 100644 index 000000000..3800b4e60 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveAudienceRequest.php @@ -0,0 +1,24 @@ +acquisitionConversionEventLookbackWindow = $acquisitionConversionEventLookbackWindow; + } + /** + * @return string + */ + public function getAcquisitionConversionEventLookbackWindow() + { + return $this->acquisitionConversionEventLookbackWindow; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setOtherConversionEventLookbackWindow($otherConversionEventLookbackWindow) + { + $this->otherConversionEventLookbackWindow = $otherConversionEventLookbackWindow; + } + /** + * @return string + */ + public function getOtherConversionEventLookbackWindow() + { + return $this->otherConversionEventLookbackWindow; + } + /** + * @param string + */ + public function setReportingAttributionModel($reportingAttributionModel) + { + $this->reportingAttributionModel = $reportingAttributionModel; + } + /** + * @return string + */ + public function getReportingAttributionModel() + { + return $this->reportingAttributionModel; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAttributionSettings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudience.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudience.php new file mode 100644 index 000000000..a905e3c76 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudience.php @@ -0,0 +1,165 @@ +adsPersonalizationEnabled = $adsPersonalizationEnabled; + } + /** + * @return bool + */ + public function getAdsPersonalizationEnabled() + { + return $this->adsPersonalizationEnabled; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceEventTrigger + */ + public function setEventTrigger(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventTrigger $eventTrigger) + { + $this->eventTrigger = $eventTrigger; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceEventTrigger + */ + public function getEventTrigger() + { + return $this->eventTrigger; + } + /** + * @param string + */ + public function setExclusionDurationMode($exclusionDurationMode) + { + $this->exclusionDurationMode = $exclusionDurationMode; + } + /** + * @return string + */ + public function getExclusionDurationMode() + { + return $this->exclusionDurationMode; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceFilterClause[] + */ + public function setFilterClauses($filterClauses) + { + $this->filterClauses = $filterClauses; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterClause[] + */ + public function getFilterClauses() + { + return $this->filterClauses; + } + /** + * @param int + */ + public function setMembershipDurationDays($membershipDurationDays) + { + $this->membershipDurationDays = $membershipDurationDays; + } + /** + * @return int + */ + public function getMembershipDurationDays() + { + return $this->membershipDurationDays; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudience'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter.php new file mode 100644 index 000000000..1a096b04d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter.php @@ -0,0 +1,142 @@ +atAnyPointInTime = $atAnyPointInTime; + } + /** + * @return bool + */ + public function getAtAnyPointInTime() + { + return $this->atAnyPointInTime; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter + */ + public function setBetweenFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter $betweenFilter) + { + $this->betweenFilter = $betweenFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter + */ + public function getBetweenFilter() + { + return $this->betweenFilter; + } + /** + * @param string + */ + public function setFieldName($fieldName) + { + $this->fieldName = $fieldName; + } + /** + * @return string + */ + public function getFieldName() + { + return $this->fieldName; + } + /** + * @param int + */ + public function setInAnyNDayPeriod($inAnyNDayPeriod) + { + $this->inAnyNDayPeriod = $inAnyNDayPeriod; + } + /** + * @return int + */ + public function getInAnyNDayPeriod() + { + return $this->inAnyNDayPeriod; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter + */ + public function setInListFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter $inListFilter) + { + $this->inListFilter = $inListFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter + */ + public function getInListFilter() + { + return $this->inListFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter + */ + public function setNumericFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter $numericFilter) + { + $this->numericFilter = $numericFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter + */ + public function getNumericFilter() + { + return $this->numericFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter + */ + public function setStringFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter $stringFilter) + { + $this->stringFilter = $stringFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter + */ + public function getStringFilter() + { + return $this->stringFilter; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter.php new file mode 100644 index 000000000..3c728de8d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter.php @@ -0,0 +1,56 @@ +fromValue = $fromValue; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue + */ + public function getFromValue() + { + return $this->fromValue; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue + */ + public function setToValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue $toValue) + { + $this->toValue = $toValue; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue + */ + public function getToValue() + { + return $this->toValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter.php new file mode 100644 index 000000000..a191cf220 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter.php @@ -0,0 +1,61 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string[] + */ + public function setValues($values) + { + $this->values = $values; + } + /** + * @return string[] + */ + public function getValues() + { + return $this->values; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter.php new file mode 100644 index 000000000..e99fdebb5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter.php @@ -0,0 +1,58 @@ +operation = $operation; + } + /** + * @return string + */ + public function getOperation() + { + return $this->operation; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue + */ + public function setValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue $value) + { + $this->value = $value; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue.php new file mode 100644 index 000000000..671d90b3d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue.php @@ -0,0 +1,51 @@ +doubleValue = $doubleValue; + } + public function getDoubleValue() + { + return $this->doubleValue; + } + /** + * @param string + */ + public function setInt64Value($int64Value) + { + $this->int64Value = $int64Value; + } + /** + * @return string + */ + public function getInt64Value() + { + return $this->int64Value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter.php new file mode 100644 index 000000000..69683c6b5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter.php @@ -0,0 +1,78 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + /** + * @return string + */ + public function getMatchType() + { + return $this->matchType; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventFilter.php new file mode 100644 index 000000000..a62647c7c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventFilter.php @@ -0,0 +1,58 @@ +eventName = $eventName; + } + /** + * @return string + */ + public function getEventName() + { + return $this->eventName; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpression + */ + public function setEventParameterFilterExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression $eventParameterFilterExpression) + { + $this->eventParameterFilterExpression = $eventParameterFilterExpression; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression + */ + public function getEventParameterFilterExpression() + { + return $this->eventParameterFilterExpression; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceEventFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventTrigger.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventTrigger.php new file mode 100644 index 000000000..543709143 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventTrigger.php @@ -0,0 +1,60 @@ +eventName = $eventName; + } + /** + * @return string + */ + public function getEventName() + { + return $this->eventName; + } + /** + * @param string + */ + public function setLogCondition($logCondition) + { + $this->logCondition = $logCondition; + } + /** + * @return string + */ + public function getLogCondition() + { + return $this->logCondition; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventTrigger::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceEventTrigger'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterClause.php new file mode 100644 index 000000000..38838e8fe --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterClause.php @@ -0,0 +1,74 @@ +clauseType = $clauseType; + } + /** + * @return string + */ + public function getClauseType() + { + return $this->clauseType; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceSequenceFilter + */ + public function setSequenceFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSequenceFilter $sequenceFilter) + { + $this->sequenceFilter = $sequenceFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceSequenceFilter + */ + public function getSequenceFilter() + { + return $this->sequenceFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceSimpleFilter + */ + public function setSimpleFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSimpleFilter $simpleFilter) + { + $this->simpleFilter = $simpleFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceSimpleFilter + */ + public function getSimpleFilter() + { + return $this->simpleFilter; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceFilterClause'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpression.php new file mode 100644 index 000000000..069fce229 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpression.php @@ -0,0 +1,104 @@ +andGroup = $andGroup; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList + */ + public function getAndGroup() + { + return $this->andGroup; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter + */ + public function setDimensionOrMetricFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter $dimensionOrMetricFilter) + { + $this->dimensionOrMetricFilter = $dimensionOrMetricFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter + */ + public function getDimensionOrMetricFilter() + { + return $this->dimensionOrMetricFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceEventFilter + */ + public function setEventFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventFilter $eventFilter) + { + $this->eventFilter = $eventFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceEventFilter + */ + public function getEventFilter() + { + return $this->eventFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpression + */ + public function setNotExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression $notExpression) + { + $this->notExpression = $notExpression; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression + */ + public function getNotExpression() + { + return $this->notExpression; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList + */ + public function setOrGroup(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList $orGroup) + { + $this->orGroup = $orGroup; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList + */ + public function getOrGroup() + { + return $this->orGroup; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceFilterExpression'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList.php new file mode 100644 index 000000000..ce487e01a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList.php @@ -0,0 +1,41 @@ +filterExpressions = $filterExpressions; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression[] + */ + public function getFilterExpressions() + { + return $this->filterExpressions; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilter.php new file mode 100644 index 000000000..33f42fb1e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilter.php @@ -0,0 +1,77 @@ +scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } + /** + * @param string + */ + public function setSequenceMaximumDuration($sequenceMaximumDuration) + { + $this->sequenceMaximumDuration = $sequenceMaximumDuration; + } + /** + * @return string + */ + public function getSequenceMaximumDuration() + { + return $this->sequenceMaximumDuration; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep[] + */ + public function setSequenceSteps($sequenceSteps) + { + $this->sequenceSteps = $sequenceSteps; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep[] + */ + public function getSequenceSteps() + { + return $this->sequenceSteps; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSequenceFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceSequenceFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep.php new file mode 100644 index 000000000..9e1ad8411 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep.php @@ -0,0 +1,94 @@ +constraintDuration = $constraintDuration; + } + /** + * @return string + */ + public function getConstraintDuration() + { + return $this->constraintDuration; + } + /** + * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpression + */ + public function setFilterExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression $filterExpression) + { + $this->filterExpression = $filterExpression; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression + */ + public function getFilterExpression() + { + return $this->filterExpression; + } + /** + * @param bool + */ + public function setImmediatelyFollows($immediatelyFollows) + { + $this->immediatelyFollows = $immediatelyFollows; + } + /** + * @return bool + */ + public function getImmediatelyFollows() + { + return $this->immediatelyFollows; + } + /** + * @param string + */ + public function setScope($scope) + { + $this->scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSimpleFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSimpleFilter.php new file mode 100644 index 000000000..f73b1f363 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSimpleFilter.php @@ -0,0 +1,58 @@ +filterExpression = $filterExpression; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression + */ + public function getFilterExpression() + { + return $this->filterExpression; + } + /** + * @param string + */ + public function setScope($scope) + { + $this->scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSimpleFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceSimpleFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLink.php new file mode 100644 index 000000000..a1ffdbe29 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLink.php @@ -0,0 +1,97 @@ +directRoles = $directRoles; + } + /** + * @return string[] + */ + public function getDirectRoles() + { + return $this->directRoles; + } + /** + * @param string[] + */ + public function setEffectiveRoles($effectiveRoles) + { + $this->effectiveRoles = $effectiveRoles; + } + /** + * @return string[] + */ + public function getEffectiveRoles() + { + return $this->effectiveRoles; + } + /** + * @param string + */ + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + /** + * @return string + */ + public function getEmailAddress() + { + return $this->emailAddress; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAuditUserLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksRequest.php new file mode 100644 index 000000000..28dde57de --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksRequest.php @@ -0,0 +1,60 @@ +pageSize = $pageSize; + } + /** + * @return int + */ + public function getPageSize() + { + return $this->pageSize; + } + /** + * @param string + */ + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + /** + * @return string + */ + public function getPageToken() + { + return $this->pageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAuditUserLinksRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksResponse.php new file mode 100644 index 000000000..3e97939f8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param GoogleAnalyticsAdminV1alphaAuditUserLink[] + */ + public function setUserLinks($userLinks) + { + $this->userLinks = $userLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaAuditUserLink[] + */ + public function getUserLinks() + { + return $this->userLinks; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAuditUserLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest.php new file mode 100644 index 000000000..1d6d25b85 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest.php @@ -0,0 +1,59 @@ +notifyNewUsers = $notifyNewUsers; + } + /** + * @return bool + */ + public function getNotifyNewUsers() + { + return $this->notifyNewUsers; + } + /** + * @param GoogleAnalyticsAdminV1alphaCreateUserLinkRequest[] + */ + public function setRequests($requests) + { + $this->requests = $requests; + } + /** + * @return GoogleAnalyticsAdminV1alphaCreateUserLinkRequest[] + */ + public function getRequests() + { + return $this->requests; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse.php new file mode 100644 index 000000000..1745ad3a0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse.php @@ -0,0 +1,41 @@ +userLinks = $userLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaUserLink[] + */ + public function getUserLinks() + { + return $this->userLinks; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest.php new file mode 100644 index 000000000..8d045f29d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest.php @@ -0,0 +1,41 @@ +requests = $requests; + } + /** + * @return GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest[] + */ + public function getRequests() + { + return $this->requests; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse.php new file mode 100644 index 000000000..f012dbe90 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse.php @@ -0,0 +1,41 @@ +userLinks = $userLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaUserLink[] + */ + public function getUserLinks() + { + return $this->userLinks; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest.php new file mode 100644 index 000000000..bade60186 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest.php @@ -0,0 +1,41 @@ +requests = $requests; + } + /** + * @return GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest[] + */ + public function getRequests() + { + return $this->requests; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse.php new file mode 100644 index 000000000..ffef5780b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse.php @@ -0,0 +1,41 @@ +userLinks = $userLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaUserLink[] + */ + public function getUserLinks() + { + return $this->userLinks; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest.php new file mode 100644 index 000000000..45a09b2b2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest.php @@ -0,0 +1,24 @@ +action = $action; + } + /** + * @return string + */ + public function getAction() + { + return $this->action; + } + /** + * @param string + */ + public function setResource($resource) + { + $this->resource = $resource; + } + /** + * @return string + */ + public function getResource() + { + return $this->resource; + } + /** + * @param GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource + */ + public function setResourceAfterChange(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource $resourceAfterChange) + { + $this->resourceAfterChange = $resourceAfterChange; + } + /** + * @return GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource + */ + public function getResourceAfterChange() + { + return $this->resourceAfterChange; + } + /** + * @param GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource + */ + public function setResourceBeforeChange(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource $resourceBeforeChange) + { + $this->resourceBeforeChange = $resourceBeforeChange; + } + /** + * @return GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource + */ + public function getResourceBeforeChange() + { + return $this->resourceBeforeChange; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChange::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaChangeHistoryChange'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource.php new file mode 100644 index 000000000..b1aa4122a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource.php @@ -0,0 +1,280 @@ +account = $account; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccount + */ + public function getAccount() + { + return $this->account; + } + /** + * @param GoogleAnalyticsAdminV1alphaAttributionSettings + */ + public function setAttributionSettings(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings $attributionSettings) + { + $this->attributionSettings = $attributionSettings; + } + /** + * @return GoogleAnalyticsAdminV1alphaAttributionSettings + */ + public function getAttributionSettings() + { + return $this->attributionSettings; + } + /** + * @param GoogleAnalyticsAdminV1alphaConversionEvent + */ + public function setConversionEvent(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent $conversionEvent) + { + $this->conversionEvent = $conversionEvent; + } + /** + * @return GoogleAnalyticsAdminV1alphaConversionEvent + */ + public function getConversionEvent() + { + return $this->conversionEvent; + } + /** + * @param GoogleAnalyticsAdminV1alphaCustomDimension + */ + public function setCustomDimension(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension $customDimension) + { + $this->customDimension = $customDimension; + } + /** + * @return GoogleAnalyticsAdminV1alphaCustomDimension + */ + public function getCustomDimension() + { + return $this->customDimension; + } + /** + * @param GoogleAnalyticsAdminV1alphaCustomMetric + */ + public function setCustomMetric(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric $customMetric) + { + $this->customMetric = $customMetric; + } + /** + * @return GoogleAnalyticsAdminV1alphaCustomMetric + */ + public function getCustomMetric() + { + return $this->customMetric; + } + /** + * @param GoogleAnalyticsAdminV1alphaDataRetentionSettings + */ + public function setDataRetentionSettings(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings $dataRetentionSettings) + { + $this->dataRetentionSettings = $dataRetentionSettings; + } + /** + * @return GoogleAnalyticsAdminV1alphaDataRetentionSettings + */ + public function getDataRetentionSettings() + { + return $this->dataRetentionSettings; + } + /** + * @param GoogleAnalyticsAdminV1alphaDataStream + */ + public function setDataStream(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream $dataStream) + { + $this->dataStream = $dataStream; + } + /** + * @return GoogleAnalyticsAdminV1alphaDataStream + */ + public function getDataStream() + { + return $this->dataStream; + } + /** + * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink + */ + public function setDisplayVideo360AdvertiserLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $displayVideo360AdvertiserLink) + { + $this->displayVideo360AdvertiserLink = $displayVideo360AdvertiserLink; + } + /** + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink + */ + public function getDisplayVideo360AdvertiserLink() + { + return $this->displayVideo360AdvertiserLink; + } + /** + * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal + */ + public function setDisplayVideo360AdvertiserLinkProposal(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal $displayVideo360AdvertiserLinkProposal) + { + $this->displayVideo360AdvertiserLinkProposal = $displayVideo360AdvertiserLinkProposal; + } + /** + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal + */ + public function getDisplayVideo360AdvertiserLinkProposal() + { + return $this->displayVideo360AdvertiserLinkProposal; + } + /** + * @param GoogleAnalyticsAdminV1alphaExpandedDataSet + */ + public function setExpandedDataSet(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSet $expandedDataSet) + { + $this->expandedDataSet = $expandedDataSet; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSet + */ + public function getExpandedDataSet() + { + return $this->expandedDataSet; + } + /** + * @param GoogleAnalyticsAdminV1alphaFirebaseLink + */ + public function setFirebaseLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink $firebaseLink) + { + $this->firebaseLink = $firebaseLink; + } + /** + * @return GoogleAnalyticsAdminV1alphaFirebaseLink + */ + public function getFirebaseLink() + { + return $this->firebaseLink; + } + /** + * @param GoogleAnalyticsAdminV1alphaGoogleAdsLink + */ + public function setGoogleAdsLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink $googleAdsLink) + { + $this->googleAdsLink = $googleAdsLink; + } + /** + * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink + */ + public function getGoogleAdsLink() + { + return $this->googleAdsLink; + } + /** + * @param GoogleAnalyticsAdminV1alphaGoogleSignalsSettings + */ + public function setGoogleSignalsSettings(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings $googleSignalsSettings) + { + $this->googleSignalsSettings = $googleSignalsSettings; + } + /** + * @return GoogleAnalyticsAdminV1alphaGoogleSignalsSettings + */ + public function getGoogleSignalsSettings() + { + return $this->googleSignalsSettings; + } + /** + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function setMeasurementProtocolSecret(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $measurementProtocolSecret) + { + $this->measurementProtocolSecret = $measurementProtocolSecret; + } + /** + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function getMeasurementProtocolSecret() + { + return $this->measurementProtocolSecret; + } + /** + * @param GoogleAnalyticsAdminV1alphaProperty + */ + public function setProperty(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty $property) + { + $this->property = $property; + } + /** + * @return GoogleAnalyticsAdminV1alphaProperty + */ + public function getProperty() + { + return $this->property; + } + /** + * @param GoogleAnalyticsAdminV1alphaSearchAds360Link + */ + public function setSearchAds360Link(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link $searchAds360Link) + { + $this->searchAds360Link = $searchAds360Link; + } + /** + * @return GoogleAnalyticsAdminV1alphaSearchAds360Link + */ + public function getSearchAds360Link() + { + return $this->searchAds360Link; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryEvent.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryEvent.php new file mode 100644 index 000000000..78d9cee95 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryEvent.php @@ -0,0 +1,131 @@ +actorType = $actorType; + } + /** + * @return string + */ + public function getActorType() + { + return $this->actorType; + } + /** + * @param string + */ + public function setChangeTime($changeTime) + { + $this->changeTime = $changeTime; + } + /** + * @return string + */ + public function getChangeTime() + { + return $this->changeTime; + } + /** + * @param GoogleAnalyticsAdminV1alphaChangeHistoryChange[] + */ + public function setChanges($changes) + { + $this->changes = $changes; + } + /** + * @return GoogleAnalyticsAdminV1alphaChangeHistoryChange[] + */ + public function getChanges() + { + return $this->changes; + } + /** + * @param bool + */ + public function setChangesFiltered($changesFiltered) + { + $this->changesFiltered = $changesFiltered; + } + /** + * @return bool + */ + public function getChangesFiltered() + { + return $this->changesFiltered; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setUserActorEmail($userActorEmail) + { + $this->userActorEmail = $userActorEmail; + } + /** + * @return string + */ + public function getUserActorEmail() + { + return $this->userActorEmail; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryEvent::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaChangeHistoryEvent'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaConversionEvent.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaConversionEvent.php new file mode 100644 index 000000000..1467ecf50 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaConversionEvent.php @@ -0,0 +1,114 @@ +createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param bool + */ + public function setCustom($custom) + { + $this->custom = $custom; + } + /** + * @return bool + */ + public function getCustom() + { + return $this->custom; + } + /** + * @param bool + */ + public function setDeletable($deletable) + { + $this->deletable = $deletable; + } + /** + * @return bool + */ + public function getDeletable() + { + return $this->deletable; + } + /** + * @param string + */ + public function setEventName($eventName) + { + $this->eventName = $eventName; + } + /** + * @return string + */ + public function getEventName() + { + return $this->eventName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaConversionEvent'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCreateUserLinkRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCreateUserLinkRequest.php new file mode 100644 index 000000000..714537cfd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCreateUserLinkRequest.php @@ -0,0 +1,76 @@ +notifyNewUser = $notifyNewUser; + } + /** + * @return bool + */ + public function getNotifyNewUser() + { + return $this->notifyNewUser; + } + /** + * @param string + */ + public function setParent($parent) + { + $this->parent = $parent; + } + /** + * @return string + */ + public function getParent() + { + return $this->parent; + } + /** + * @param GoogleAnalyticsAdminV1alphaUserLink + */ + public function setUserLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $userLink) + { + $this->userLink = $userLink; + } + /** + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function getUserLink() + { + return $this->userLink; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCreateUserLinkRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaCreateUserLinkRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomDimension.php new file mode 100644 index 000000000..68298165d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomDimension.php @@ -0,0 +1,132 @@ +description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param bool + */ + public function setDisallowAdsPersonalization($disallowAdsPersonalization) + { + $this->disallowAdsPersonalization = $disallowAdsPersonalization; + } + /** + * @return bool + */ + public function getDisallowAdsPersonalization() + { + return $this->disallowAdsPersonalization; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setParameterName($parameterName) + { + $this->parameterName = $parameterName; + } + /** + * @return string + */ + public function getParameterName() + { + return $this->parameterName; + } + /** + * @param string + */ + public function setScope($scope) + { + $this->scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaCustomDimension'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomMetric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomMetric.php new file mode 100644 index 000000000..97445a9d7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomMetric.php @@ -0,0 +1,151 @@ +description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setMeasurementUnit($measurementUnit) + { + $this->measurementUnit = $measurementUnit; + } + /** + * @return string + */ + public function getMeasurementUnit() + { + return $this->measurementUnit; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setParameterName($parameterName) + { + $this->parameterName = $parameterName; + } + /** + * @return string + */ + public function getParameterName() + { + return $this->parameterName; + } + /** + * @param string[] + */ + public function setRestrictedMetricType($restrictedMetricType) + { + $this->restrictedMetricType = $restrictedMetricType; + } + /** + * @return string[] + */ + public function getRestrictedMetricType() + { + return $this->restrictedMetricType; + } + /** + * @param string + */ + public function setScope($scope) + { + $this->scope = $scope; + } + /** + * @return string + */ + public function getScope() + { + return $this->scope; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaCustomMetric'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataRetentionSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataRetentionSettings.php new file mode 100644 index 000000000..9e30733aa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataRetentionSettings.php @@ -0,0 +1,78 @@ +eventDataRetention = $eventDataRetention; + } + /** + * @return string + */ + public function getEventDataRetention() + { + return $this->eventDataRetention; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param bool + */ + public function setResetUserDataOnNewActivity($resetUserDataOnNewActivity) + { + $this->resetUserDataOnNewActivity = $resetUserDataOnNewActivity; + } + /** + * @return bool + */ + public function getResetUserDataOnNewActivity() + { + return $this->resetUserDataOnNewActivity; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataRetentionSettings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataSharingSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataSharingSettings.php new file mode 100644 index 000000000..86e231437 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataSharingSettings.php @@ -0,0 +1,132 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param bool + */ + public function setSharingWithGoogleAnySalesEnabled($sharingWithGoogleAnySalesEnabled) + { + $this->sharingWithGoogleAnySalesEnabled = $sharingWithGoogleAnySalesEnabled; + } + /** + * @return bool + */ + public function getSharingWithGoogleAnySalesEnabled() + { + return $this->sharingWithGoogleAnySalesEnabled; + } + /** + * @param bool + */ + public function setSharingWithGoogleAssignedSalesEnabled($sharingWithGoogleAssignedSalesEnabled) + { + $this->sharingWithGoogleAssignedSalesEnabled = $sharingWithGoogleAssignedSalesEnabled; + } + /** + * @return bool + */ + public function getSharingWithGoogleAssignedSalesEnabled() + { + return $this->sharingWithGoogleAssignedSalesEnabled; + } + /** + * @param bool + */ + public function setSharingWithGoogleProductsEnabled($sharingWithGoogleProductsEnabled) + { + $this->sharingWithGoogleProductsEnabled = $sharingWithGoogleProductsEnabled; + } + /** + * @return bool + */ + public function getSharingWithGoogleProductsEnabled() + { + return $this->sharingWithGoogleProductsEnabled; + } + /** + * @param bool + */ + public function setSharingWithGoogleSupportEnabled($sharingWithGoogleSupportEnabled) + { + $this->sharingWithGoogleSupportEnabled = $sharingWithGoogleSupportEnabled; + } + /** + * @return bool + */ + public function getSharingWithGoogleSupportEnabled() + { + return $this->sharingWithGoogleSupportEnabled; + } + /** + * @param bool + */ + public function setSharingWithOthersEnabled($sharingWithOthersEnabled) + { + $this->sharingWithOthersEnabled = $sharingWithOthersEnabled; + } + /** + * @return bool + */ + public function getSharingWithOthersEnabled() + { + return $this->sharingWithOthersEnabled; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataSharingSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataSharingSettings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStream.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStream.php new file mode 100644 index 000000000..024229ce6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStream.php @@ -0,0 +1,162 @@ +androidAppStreamData = $androidAppStreamData; + } + /** + * @return GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData + */ + public function getAndroidAppStreamData() + { + return $this->androidAppStreamData; + } + /** + * @param string + */ + public function setCreateTime($createTime) + { + $this->createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData + */ + public function setIosAppStreamData(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData $iosAppStreamData) + { + $this->iosAppStreamData = $iosAppStreamData; + } + /** + * @return GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData + */ + public function getIosAppStreamData() + { + return $this->iosAppStreamData; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } + /** + * @param GoogleAnalyticsAdminV1alphaDataStreamWebStreamData + */ + public function setWebStreamData(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamWebStreamData $webStreamData) + { + $this->webStreamData = $webStreamData; + } + /** + * @return GoogleAnalyticsAdminV1alphaDataStreamWebStreamData + */ + public function getWebStreamData() + { + return $this->webStreamData; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStream'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData.php new file mode 100644 index 000000000..38bcdfbcc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData.php @@ -0,0 +1,60 @@ +firebaseAppId = $firebaseAppId; + } + /** + * @return string + */ + public function getFirebaseAppId() + { + return $this->firebaseAppId; + } + /** + * @param string + */ + public function setPackageName($packageName) + { + $this->packageName = $packageName; + } + /** + * @return string + */ + public function getPackageName() + { + return $this->packageName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData.php new file mode 100644 index 000000000..33262a1d6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData.php @@ -0,0 +1,60 @@ +bundleId = $bundleId; + } + /** + * @return string + */ + public function getBundleId() + { + return $this->bundleId; + } + /** + * @param string + */ + public function setFirebaseAppId($firebaseAppId) + { + $this->firebaseAppId = $firebaseAppId; + } + /** + * @return string + */ + public function getFirebaseAppId() + { + return $this->firebaseAppId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamWebStreamData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamWebStreamData.php new file mode 100644 index 000000000..3a7884399 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamWebStreamData.php @@ -0,0 +1,78 @@ +defaultUri = $defaultUri; + } + /** + * @return string + */ + public function getDefaultUri() + { + return $this->defaultUri; + } + /** + * @param string + */ + public function setFirebaseAppId($firebaseAppId) + { + $this->firebaseAppId = $firebaseAppId; + } + /** + * @return string + */ + public function getFirebaseAppId() + { + return $this->firebaseAppId; + } + /** + * @param string + */ + public function setMeasurementId($measurementId) + { + $this->measurementId = $measurementId; + } + /** + * @return string + */ + public function getMeasurementId() + { + return $this->measurementId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamWebStreamData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStreamWebStreamData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest.php new file mode 100644 index 000000000..7ab1d5d66 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest.php @@ -0,0 +1,42 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink.php new file mode 100644 index 000000000..66d3a4b2a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink.php @@ -0,0 +1,132 @@ +adsPersonalizationEnabled = $adsPersonalizationEnabled; + } + /** + * @return bool + */ + public function getAdsPersonalizationEnabled() + { + return $this->adsPersonalizationEnabled; + } + /** + * @param string + */ + public function setAdvertiserDisplayName($advertiserDisplayName) + { + $this->advertiserDisplayName = $advertiserDisplayName; + } + /** + * @return string + */ + public function getAdvertiserDisplayName() + { + return $this->advertiserDisplayName; + } + /** + * @param string + */ + public function setAdvertiserId($advertiserId) + { + $this->advertiserId = $advertiserId; + } + /** + * @return string + */ + public function getAdvertiserId() + { + return $this->advertiserId; + } + /** + * @param bool + */ + public function setCampaignDataSharingEnabled($campaignDataSharingEnabled) + { + $this->campaignDataSharingEnabled = $campaignDataSharingEnabled; + } + /** + * @return bool + */ + public function getCampaignDataSharingEnabled() + { + return $this->campaignDataSharingEnabled; + } + /** + * @param bool + */ + public function setCostDataSharingEnabled($costDataSharingEnabled) + { + $this->costDataSharingEnabled = $costDataSharingEnabled; + } + /** + * @return bool + */ + public function getCostDataSharingEnabled() + { + return $this->costDataSharingEnabled; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.php new file mode 100644 index 000000000..adf60955f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.php @@ -0,0 +1,166 @@ +adsPersonalizationEnabled = $adsPersonalizationEnabled; + } + /** + * @return bool + */ + public function getAdsPersonalizationEnabled() + { + return $this->adsPersonalizationEnabled; + } + /** + * @param string + */ + public function setAdvertiserDisplayName($advertiserDisplayName) + { + $this->advertiserDisplayName = $advertiserDisplayName; + } + /** + * @return string + */ + public function getAdvertiserDisplayName() + { + return $this->advertiserDisplayName; + } + /** + * @param string + */ + public function setAdvertiserId($advertiserId) + { + $this->advertiserId = $advertiserId; + } + /** + * @return string + */ + public function getAdvertiserId() + { + return $this->advertiserId; + } + /** + * @param bool + */ + public function setCampaignDataSharingEnabled($campaignDataSharingEnabled) + { + $this->campaignDataSharingEnabled = $campaignDataSharingEnabled; + } + /** + * @return bool + */ + public function getCampaignDataSharingEnabled() + { + return $this->campaignDataSharingEnabled; + } + /** + * @param bool + */ + public function setCostDataSharingEnabled($costDataSharingEnabled) + { + $this->costDataSharingEnabled = $costDataSharingEnabled; + } + /** + * @return bool + */ + public function getCostDataSharingEnabled() + { + return $this->costDataSharingEnabled; + } + /** + * @param GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails + */ + public function setLinkProposalStatusDetails(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails $linkProposalStatusDetails) + { + $this->linkProposalStatusDetails = $linkProposalStatusDetails; + } + /** + * @return GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails + */ + public function getLinkProposalStatusDetails() + { + return $this->linkProposalStatusDetails; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setValidationEmail($validationEmail) + { + $this->validationEmail = $validationEmail; + } + /** + * @return string + */ + public function getValidationEmail() + { + return $this->validationEmail; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings.php new file mode 100644 index 000000000..7a3d368fd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings.php @@ -0,0 +1,132 @@ +fileDownloadsEnabled = $fileDownloadsEnabled; + } + public function getFileDownloadsEnabled() + { + return $this->fileDownloadsEnabled; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setOutboundClicksEnabled($outboundClicksEnabled) + { + $this->outboundClicksEnabled = $outboundClicksEnabled; + } + public function getOutboundClicksEnabled() + { + return $this->outboundClicksEnabled; + } + public function setPageChangesEnabled($pageChangesEnabled) + { + $this->pageChangesEnabled = $pageChangesEnabled; + } + public function getPageChangesEnabled() + { + return $this->pageChangesEnabled; + } + public function setPageLoadsEnabled($pageLoadsEnabled) + { + $this->pageLoadsEnabled = $pageLoadsEnabled; + } + public function getPageLoadsEnabled() + { + return $this->pageLoadsEnabled; + } + public function setPageViewsEnabled($pageViewsEnabled) + { + $this->pageViewsEnabled = $pageViewsEnabled; + } + public function getPageViewsEnabled() + { + return $this->pageViewsEnabled; + } + public function setScrollsEnabled($scrollsEnabled) + { + $this->scrollsEnabled = $scrollsEnabled; + } + public function getScrollsEnabled() + { + return $this->scrollsEnabled; + } + public function setSearchQueryParameter($searchQueryParameter) + { + $this->searchQueryParameter = $searchQueryParameter; + } + public function getSearchQueryParameter() + { + return $this->searchQueryParameter; + } + public function setSiteSearchEnabled($siteSearchEnabled) + { + $this->siteSearchEnabled = $siteSearchEnabled; + } + public function getSiteSearchEnabled() + { + return $this->siteSearchEnabled; + } + public function setStreamEnabled($streamEnabled) + { + $this->streamEnabled = $streamEnabled; + } + public function getStreamEnabled() + { + return $this->streamEnabled; + } + public function setUriQueryParameter($uriQueryParameter) + { + $this->uriQueryParameter = $uriQueryParameter; + } + public function getUriQueryParameter() + { + return $this->uriQueryParameter; + } + public function setVideoEngagementEnabled($videoEngagementEnabled) + { + $this->videoEngagementEnabled = $videoEngagementEnabled; + } + public function getVideoEngagementEnabled() + { + return $this->videoEngagementEnabled; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSet.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSet.php new file mode 100644 index 000000000..a2688ca1e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSet.php @@ -0,0 +1,149 @@ +dataCollectionStartTime = $dataCollectionStartTime; + } + /** + * @return string + */ + public function getDataCollectionStartTime() + { + return $this->dataCollectionStartTime; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression + */ + public function setDimensionFilterExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression $dimensionFilterExpression) + { + $this->dimensionFilterExpression = $dimensionFilterExpression; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression + */ + public function getDimensionFilterExpression() + { + return $this->dimensionFilterExpression; + } + /** + * @param string[] + */ + public function setDimensionNames($dimensionNames) + { + $this->dimensionNames = $dimensionNames; + } + /** + * @return string[] + */ + public function getDimensionNames() + { + return $this->dimensionNames; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string[] + */ + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + /** + * @return string[] + */ + public function getMetricNames() + { + return $this->metricNames; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSet::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSet'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilter.php new file mode 100644 index 000000000..e71fa3095 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilter.php @@ -0,0 +1,74 @@ +fieldName = $fieldName; + } + /** + * @return string + */ + public function getFieldName() + { + return $this->fieldName; + } + /** + * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter + */ + public function setInListFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter $inListFilter) + { + $this->inListFilter = $inListFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter + */ + public function getInListFilter() + { + return $this->inListFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter + */ + public function setStringFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter $stringFilter) + { + $this->stringFilter = $stringFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter + */ + public function getStringFilter() + { + return $this->stringFilter; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression.php new file mode 100644 index 000000000..62820861e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression.php @@ -0,0 +1,72 @@ +andGroup = $andGroup; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList + */ + public function getAndGroup() + { + return $this->andGroup; + } + /** + * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilter + */ + public function setFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilter $filter) + { + $this->filter = $filter; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilter + */ + public function getFilter() + { + return $this->filter; + } + /** + * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression + */ + public function setNotExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression $notExpression) + { + $this->notExpression = $notExpression; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression + */ + public function getNotExpression() + { + return $this->notExpression; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList.php new file mode 100644 index 000000000..743fd95a0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList.php @@ -0,0 +1,41 @@ +filterExpressions = $filterExpressions; + } + /** + * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression[] + */ + public function getFilterExpressions() + { + return $this->filterExpressions; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter.php new file mode 100644 index 000000000..7a761ca47 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter.php @@ -0,0 +1,61 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string[] + */ + public function setValues($values) + { + $this->values = $values; + } + /** + * @return string[] + */ + public function getValues() + { + return $this->values; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter.php new file mode 100644 index 000000000..5e80fd3a3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter.php @@ -0,0 +1,78 @@ +caseSensitive = $caseSensitive; + } + /** + * @return bool + */ + public function getCaseSensitive() + { + return $this->caseSensitive; + } + /** + * @param string + */ + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + /** + * @return string + */ + public function getMatchType() + { + return $this->matchType; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaFirebaseLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaFirebaseLink.php new file mode 100644 index 000000000..e58a1719a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaFirebaseLink.php @@ -0,0 +1,78 @@ +createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setProject($project) + { + $this->project = $project; + } + /** + * @return string + */ + public function getProject() + { + return $this->project; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaFirebaseLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGlobalSiteTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGlobalSiteTag.php new file mode 100644 index 000000000..e48af48c6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGlobalSiteTag.php @@ -0,0 +1,60 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + /** + * @return string + */ + public function getSnippet() + { + return $this->snippet; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGlobalSiteTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaGlobalSiteTag'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleAdsLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleAdsLink.php new file mode 100644 index 000000000..8c4a86644 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleAdsLink.php @@ -0,0 +1,150 @@ +adsPersonalizationEnabled = $adsPersonalizationEnabled; + } + /** + * @return bool + */ + public function getAdsPersonalizationEnabled() + { + return $this->adsPersonalizationEnabled; + } + /** + * @param bool + */ + public function setCanManageClients($canManageClients) + { + $this->canManageClients = $canManageClients; + } + /** + * @return bool + */ + public function getCanManageClients() + { + return $this->canManageClients; + } + /** + * @param string + */ + public function setCreateTime($createTime) + { + $this->createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setCreatorEmailAddress($creatorEmailAddress) + { + $this->creatorEmailAddress = $creatorEmailAddress; + } + /** + * @return string + */ + public function getCreatorEmailAddress() + { + return $this->creatorEmailAddress; + } + /** + * @param string + */ + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + /** + * @return string + */ + public function getCustomerId() + { + return $this->customerId; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaGoogleAdsLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleSignalsSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleSignalsSettings.php new file mode 100644 index 000000000..393e6a11e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleSignalsSettings.php @@ -0,0 +1,78 @@ +consent = $consent; + } + /** + * @return string + */ + public function getConsent() + { + return $this->consent; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setState($state) + { + $this->state = $state; + } + /** + * @return string + */ + public function getState() + { + return $this->state; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaGoogleSignalsSettings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaIosAppDataStream.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaIosAppDataStream.php new file mode 100644 index 000000000..5a0c9cae6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaIosAppDataStream.php @@ -0,0 +1,132 @@ +bundleId = $bundleId; + } + /** + * @return string + */ + public function getBundleId() + { + return $this->bundleId; + } + /** + * @param string + */ + public function setCreateTime($createTime) + { + $this->createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setFirebaseAppId($firebaseAppId) + { + $this->firebaseAppId = $firebaseAppId; + } + /** + * @return string + */ + public function getFirebaseAppId() + { + return $this->firebaseAppId; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaIosAppDataStream'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.php new file mode 100644 index 000000000..71b598042 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.php @@ -0,0 +1,78 @@ +linkProposalInitiatingProduct = $linkProposalInitiatingProduct; + } + /** + * @return string + */ + public function getLinkProposalInitiatingProduct() + { + return $this->linkProposalInitiatingProduct; + } + /** + * @param string + */ + public function setLinkProposalState($linkProposalState) + { + $this->linkProposalState = $linkProposalState; + } + /** + * @return string + */ + public function getLinkProposalState() + { + return $this->linkProposalState; + } + /** + * @param string + */ + public function setRequestorEmail($requestorEmail) + { + $this->requestorEmail = $requestorEmail; + } + /** + * @return string + */ + public function getRequestorEmail() + { + return $this->requestorEmail; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountSummariesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountSummariesResponse.php new file mode 100644 index 000000000..2468c428a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountSummariesResponse.php @@ -0,0 +1,59 @@ +accountSummaries = $accountSummaries; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccountSummary[] + */ + public function getAccountSummaries() + { + return $this->accountSummaries; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountSummariesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAccountSummariesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountsResponse.php new file mode 100644 index 000000000..1c1ba9978 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountsResponse.php @@ -0,0 +1,59 @@ +accounts = $accounts; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccount[] + */ + public function getAccounts() + { + return $this->accounts; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAccountsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse.php new file mode 100644 index 000000000..15444cb8b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse.php @@ -0,0 +1,59 @@ +androidAppDataStreams = $androidAppDataStreams; + } + /** + * @return GoogleAnalyticsAdminV1alphaAndroidAppDataStream[] + */ + public function getAndroidAppDataStreams() + { + return $this->androidAppDataStreams; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAudiencesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAudiencesResponse.php new file mode 100644 index 000000000..64d4b8a0d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAudiencesResponse.php @@ -0,0 +1,59 @@ +audiences = $audiences; + } + /** + * @return GoogleAnalyticsAdminV1alphaAudience[] + */ + public function getAudiences() + { + return $this->audiences; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAudiencesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAudiencesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListConversionEventsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListConversionEventsResponse.php new file mode 100644 index 000000000..a7fd982d6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListConversionEventsResponse.php @@ -0,0 +1,59 @@ +conversionEvents = $conversionEvents; + } + /** + * @return GoogleAnalyticsAdminV1alphaConversionEvent[] + */ + public function getConversionEvents() + { + return $this->conversionEvents; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListConversionEventsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListConversionEventsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse.php new file mode 100644 index 000000000..7fc5b08df --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse.php @@ -0,0 +1,59 @@ +customDimensions = $customDimensions; + } + /** + * @return GoogleAnalyticsAdminV1alphaCustomDimension[] + */ + public function getCustomDimensions() + { + return $this->customDimensions; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomMetricsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomMetricsResponse.php new file mode 100644 index 000000000..99c4bec12 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomMetricsResponse.php @@ -0,0 +1,59 @@ +customMetrics = $customMetrics; + } + /** + * @return GoogleAnalyticsAdminV1alphaCustomMetric[] + */ + public function getCustomMetrics() + { + return $this->customMetrics; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomMetricsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListCustomMetricsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDataStreamsResponse.php new file mode 100644 index 000000000..956d75412 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDataStreamsResponse.php @@ -0,0 +1,59 @@ +dataStreams = $dataStreams; + } + /** + * @return GoogleAnalyticsAdminV1alphaDataStream[] + */ + public function getDataStreams() + { + return $this->dataStreams; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListDataStreamsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse.php new file mode 100644 index 000000000..3f39b02f7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse.php @@ -0,0 +1,59 @@ +displayVideo360AdvertiserLinkProposals = $displayVideo360AdvertiserLinkProposals; + } + /** + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal[] + */ + public function getDisplayVideo360AdvertiserLinkProposals() + { + return $this->displayVideo360AdvertiserLinkProposals; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse.php new file mode 100644 index 000000000..8cdf5fcf7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse.php @@ -0,0 +1,59 @@ +displayVideo360AdvertiserLinks = $displayVideo360AdvertiserLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink[] + */ + public function getDisplayVideo360AdvertiserLinks() + { + return $this->displayVideo360AdvertiserLinks; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse.php new file mode 100644 index 000000000..a52c9fafa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse.php @@ -0,0 +1,59 @@ +firebaseLinks = $firebaseLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaFirebaseLink[] + */ + public function getFirebaseLinks() + { + return $this->firebaseLinks; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse.php new file mode 100644 index 000000000..873513162 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse.php @@ -0,0 +1,59 @@ +googleAdsLinks = $googleAdsLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink[] + */ + public function getGoogleAdsLinks() + { + return $this->googleAdsLinks; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse.php new file mode 100644 index 000000000..55d4e4796 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse.php @@ -0,0 +1,59 @@ +iosAppDataStreams = $iosAppDataStreams; + } + /** + * @return GoogleAnalyticsAdminV1alphaIosAppDataStream[] + */ + public function getIosAppDataStreams() + { + return $this->iosAppDataStreams; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse.php new file mode 100644 index 000000000..bf02f2c68 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse.php @@ -0,0 +1,59 @@ +measurementProtocolSecrets = $measurementProtocolSecrets; + } + /** + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret[] + */ + public function getMeasurementProtocolSecrets() + { + return $this->measurementProtocolSecrets; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListPropertiesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListPropertiesResponse.php new file mode 100644 index 000000000..769abc00e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListPropertiesResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param GoogleAnalyticsAdminV1alphaProperty[] + */ + public function setProperties($properties) + { + $this->properties = $properties; + } + /** + * @return GoogleAnalyticsAdminV1alphaProperty[] + */ + public function getProperties() + { + return $this->properties; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListPropertiesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListPropertiesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.php new file mode 100644 index 000000000..4b4a1c22d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param GoogleAnalyticsAdminV1alphaSearchAds360Link[] + */ + public function setSearchAds360Links($searchAds360Links) + { + $this->searchAds360Links = $searchAds360Links; + } + /** + * @return GoogleAnalyticsAdminV1alphaSearchAds360Link[] + */ + public function getSearchAds360Links() + { + return $this->searchAds360Links; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListUserLinksResponse.php new file mode 100644 index 000000000..6200d3ac6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListUserLinksResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param GoogleAnalyticsAdminV1alphaUserLink[] + */ + public function setUserLinks($userLinks) + { + $this->userLinks = $userLinks; + } + /** + * @return GoogleAnalyticsAdminV1alphaUserLink[] + */ + public function getUserLinks() + { + return $this->userLinks; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListUserLinksResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse.php new file mode 100644 index 000000000..2939bd67c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param GoogleAnalyticsAdminV1alphaWebDataStream[] + */ + public function setWebDataStreams($webDataStreams) + { + $this->webDataStreams = $webDataStreams; + } + /** + * @return GoogleAnalyticsAdminV1alphaWebDataStream[] + */ + public function getWebDataStreams() + { + return $this->webDataStreams; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret.php new file mode 100644 index 000000000..291b52673 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret.php @@ -0,0 +1,78 @@ +displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setSecretValue($secretValue) + { + $this->secretValue = $secretValue; + } + /** + * @return string + */ + public function getSecretValue() + { + return $this->secretValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaNumericValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaNumericValue.php new file mode 100644 index 000000000..b579a02ad --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaNumericValue.php @@ -0,0 +1,51 @@ +doubleValue = $doubleValue; + } + public function getDoubleValue() + { + return $this->doubleValue; + } + /** + * @param string + */ + public function setInt64Value($int64Value) + { + $this->int64Value = $int64Value; + } + /** + * @return string + */ + public function getInt64Value() + { + return $this->int64Value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaNumericValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaNumericValue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProperty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProperty.php new file mode 100644 index 000000000..b9599fdc1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProperty.php @@ -0,0 +1,258 @@ +account = $account; + } + /** + * @return string + */ + public function getAccount() + { + return $this->account; + } + /** + * @param string + */ + public function setCreateTime($createTime) + { + $this->createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + /** + * @return string + */ + public function getCurrencyCode() + { + return $this->currencyCode; + } + /** + * @param string + */ + public function setDeleteTime($deleteTime) + { + $this->deleteTime = $deleteTime; + } + /** + * @return string + */ + public function getDeleteTime() + { + return $this->deleteTime; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setExpireTime($expireTime) + { + $this->expireTime = $expireTime; + } + /** + * @return string + */ + public function getExpireTime() + { + return $this->expireTime; + } + /** + * @param string + */ + public function setIndustryCategory($industryCategory) + { + $this->industryCategory = $industryCategory; + } + /** + * @return string + */ + public function getIndustryCategory() + { + return $this->industryCategory; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setParent($parent) + { + $this->parent = $parent; + } + /** + * @return string + */ + public function getParent() + { + return $this->parent; + } + /** + * @param string + */ + public function setPropertyType($propertyType) + { + $this->propertyType = $propertyType; + } + /** + * @return string + */ + public function getPropertyType() + { + return $this->propertyType; + } + /** + * @param string + */ + public function setServiceLevel($serviceLevel) + { + $this->serviceLevel = $serviceLevel; + } + /** + * @return string + */ + public function getServiceLevel() + { + return $this->serviceLevel; + } + /** + * @param string + */ + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + /** + * @return string + */ + public function getTimeZone() + { + return $this->timeZone; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaProperty'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaPropertySummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaPropertySummary.php new file mode 100644 index 000000000..c81a624ff --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaPropertySummary.php @@ -0,0 +1,96 @@ +displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setParent($parent) + { + $this->parent = $parent; + } + /** + * @return string + */ + public function getParent() + { + return $this->parent; + } + /** + * @param string + */ + public function setProperty($property) + { + $this->property = $property; + } + /** + * @return string + */ + public function getProperty() + { + return $this->property; + } + /** + * @param string + */ + public function setPropertyType($propertyType) + { + $this->propertyType = $propertyType; + } + /** + * @return string + */ + public function getPropertyType() + { + return $this->propertyType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaPropertySummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaPropertySummary'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest.php new file mode 100644 index 000000000..fd37ac923 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest.php @@ -0,0 +1,58 @@ +account = $account; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccount + */ + public function getAccount() + { + return $this->account; + } + /** + * @param string + */ + public function setRedirectUri($redirectUri) + { + $this->redirectUri = $redirectUri; + } + /** + * @return string + */ + public function getRedirectUri() + { + return $this->redirectUri; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse.php new file mode 100644 index 000000000..c5d929412 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse.php @@ -0,0 +1,42 @@ +accountTicketId = $accountTicketId; + } + /** + * @return string + */ + public function getAccountTicketId() + { + return $this->accountTicketId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportRequest.php new file mode 100644 index 000000000..b60b9e8bf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportRequest.php @@ -0,0 +1,193 @@ +dateRanges = $dateRanges; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessDateRange[] + */ + public function getDateRanges() + { + return $this->dateRanges; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessFilterExpression + */ + public function setDimensionFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression $dimensionFilter) + { + $this->dimensionFilter = $dimensionFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression + */ + public function getDimensionFilter() + { + return $this->dimensionFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessDimension[] + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessDimension[] + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param string + */ + public function setLimit($limit) + { + $this->limit = $limit; + } + /** + * @return string + */ + public function getLimit() + { + return $this->limit; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessFilterExpression + */ + public function setMetricFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression $metricFilter) + { + $this->metricFilter = $metricFilter; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression + */ + public function getMetricFilter() + { + return $this->metricFilter; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessMetric[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessMetric[] + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param string + */ + public function setOffset($offset) + { + $this->offset = $offset; + } + /** + * @return string + */ + public function getOffset() + { + return $this->offset; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessOrderBy[] + */ + public function setOrderBys($orderBys) + { + $this->orderBys = $orderBys; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessOrderBy[] + */ + public function getOrderBys() + { + return $this->orderBys; + } + /** + * @param bool + */ + public function setReturnEntityQuota($returnEntityQuota) + { + $this->returnEntityQuota = $returnEntityQuota; + } + /** + * @return bool + */ + public function getReturnEntityQuota() + { + return $this->returnEntityQuota; + } + /** + * @param string + */ + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + /** + * @return string + */ + public function getTimeZone() + { + return $this->timeZone; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaRunAccessReportRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportResponse.php new file mode 100644 index 000000000..a2e68e776 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportResponse.php @@ -0,0 +1,107 @@ +dimensionHeaders = $dimensionHeaders; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessDimensionHeader[] + */ + public function getDimensionHeaders() + { + return $this->dimensionHeaders; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessMetricHeader[] + */ + public function setMetricHeaders($metricHeaders) + { + $this->metricHeaders = $metricHeaders; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessMetricHeader[] + */ + public function getMetricHeaders() + { + return $this->metricHeaders; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessQuota + */ + public function setQuota(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuota $quota) + { + $this->quota = $quota; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessQuota + */ + public function getQuota() + { + return $this->quota; + } + /** + * @param int + */ + public function setRowCount($rowCount) + { + $this->rowCount = $rowCount; + } + /** + * @return int + */ + public function getRowCount() + { + return $this->rowCount; + } + /** + * @param GoogleAnalyticsAdminV1alphaAccessRow[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return GoogleAnalyticsAdminV1alphaAccessRow[] + */ + public function getRows() + { + return $this->rows; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaRunAccessReportResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchAds360Link.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchAds360Link.php new file mode 100644 index 000000000..66e16ae21 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchAds360Link.php @@ -0,0 +1,150 @@ +adsPersonalizationEnabled = $adsPersonalizationEnabled; + } + /** + * @return bool + */ + public function getAdsPersonalizationEnabled() + { + return $this->adsPersonalizationEnabled; + } + /** + * @param string + */ + public function setAdvertiserDisplayName($advertiserDisplayName) + { + $this->advertiserDisplayName = $advertiserDisplayName; + } + /** + * @return string + */ + public function getAdvertiserDisplayName() + { + return $this->advertiserDisplayName; + } + /** + * @param string + */ + public function setAdvertiserId($advertiserId) + { + $this->advertiserId = $advertiserId; + } + /** + * @return string + */ + public function getAdvertiserId() + { + return $this->advertiserId; + } + /** + * @param bool + */ + public function setCampaignDataSharingEnabled($campaignDataSharingEnabled) + { + $this->campaignDataSharingEnabled = $campaignDataSharingEnabled; + } + /** + * @return bool + */ + public function getCampaignDataSharingEnabled() + { + return $this->campaignDataSharingEnabled; + } + /** + * @param bool + */ + public function setCostDataSharingEnabled($costDataSharingEnabled) + { + $this->costDataSharingEnabled = $costDataSharingEnabled; + } + /** + * @return bool + */ + public function getCostDataSharingEnabled() + { + return $this->costDataSharingEnabled; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param bool + */ + public function setSiteStatsSharingEnabled($siteStatsSharingEnabled) + { + $this->siteStatsSharingEnabled = $siteStatsSharingEnabled; + } + /** + * @return bool + */ + public function getSiteStatsSharingEnabled() + { + return $this->siteStatsSharingEnabled; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaSearchAds360Link'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest.php new file mode 100644 index 000000000..d434286b8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest.php @@ -0,0 +1,169 @@ +action = $action; + } + /** + * @return string[] + */ + public function getAction() + { + return $this->action; + } + /** + * @param string[] + */ + public function setActorEmail($actorEmail) + { + $this->actorEmail = $actorEmail; + } + /** + * @return string[] + */ + public function getActorEmail() + { + return $this->actorEmail; + } + /** + * @param string + */ + public function setEarliestChangeTime($earliestChangeTime) + { + $this->earliestChangeTime = $earliestChangeTime; + } + /** + * @return string + */ + public function getEarliestChangeTime() + { + return $this->earliestChangeTime; + } + /** + * @param string + */ + public function setLatestChangeTime($latestChangeTime) + { + $this->latestChangeTime = $latestChangeTime; + } + /** + * @return string + */ + public function getLatestChangeTime() + { + return $this->latestChangeTime; + } + /** + * @param int + */ + public function setPageSize($pageSize) + { + $this->pageSize = $pageSize; + } + /** + * @return int + */ + public function getPageSize() + { + return $this->pageSize; + } + /** + * @param string + */ + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + /** + * @return string + */ + public function getPageToken() + { + return $this->pageToken; + } + /** + * @param string + */ + public function setProperty($property) + { + $this->property = $property; + } + /** + * @return string + */ + public function getProperty() + { + return $this->property; + } + /** + * @param string[] + */ + public function setResourceType($resourceType) + { + $this->resourceType = $resourceType; + } + /** + * @return string[] + */ + public function getResourceType() + { + return $this->resourceType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse.php new file mode 100644 index 000000000..d736495fa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse.php @@ -0,0 +1,59 @@ +changeHistoryEvents = $changeHistoryEvents; + } + /** + * @return GoogleAnalyticsAdminV1alphaChangeHistoryEvent[] + */ + public function getChangeHistoryEvents() + { + return $this->changeHistoryEvents; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest.php new file mode 100644 index 000000000..7d4ba8ed7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest.php @@ -0,0 +1,40 @@ +userLink = $userLink; + } + /** + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function getUserLink() + { + return $this->userLink; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUserLink.php new file mode 100644 index 000000000..9195966a8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUserLink.php @@ -0,0 +1,79 @@ +directRoles = $directRoles; + } + /** + * @return string[] + */ + public function getDirectRoles() + { + return $this->directRoles; + } + /** + * @param string + */ + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + /** + * @return string + */ + public function getEmailAddress() + { + return $this->emailAddress; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaUserLink'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaWebDataStream.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaWebDataStream.php new file mode 100644 index 000000000..fb2b65919 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaWebDataStream.php @@ -0,0 +1,150 @@ +createTime = $createTime; + } + /** + * @return string + */ + public function getCreateTime() + { + return $this->createTime; + } + /** + * @param string + */ + public function setDefaultUri($defaultUri) + { + $this->defaultUri = $defaultUri; + } + /** + * @return string + */ + public function getDefaultUri() + { + return $this->defaultUri; + } + /** + * @param string + */ + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setFirebaseAppId($firebaseAppId) + { + $this->firebaseAppId = $firebaseAppId; + } + /** + * @return string + */ + public function getFirebaseAppId() + { + return $this->firebaseAppId; + } + /** + * @param string + */ + public function setMeasurementId($measurementId) + { + $this->measurementId = $measurementId; + } + /** + * @return string + */ + public function getMeasurementId() + { + return $this->measurementId; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaWebDataStream'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleProtobufEmpty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleProtobufEmpty.php new file mode 100644 index 000000000..5e21cc8a8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleProtobufEmpty.php @@ -0,0 +1,24 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $accountSummaries = $analyticsadminService->accountSummaries; + * + */ +class AccountSummaries extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Returns summaries of all accounts accessible by the caller. + * (accountSummaries.listAccountSummaries) + * + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of AccountSummary resources to + * return. The service may return fewer than this value, even if there are + * additional pages. If unspecified, at most 50 resources will be returned. The + * maximum value is 200; (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous + * `ListAccountSummaries` call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `ListAccountSummaries` must + * match the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListAccountSummariesResponse + */ + public function listAccountSummaries($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountSummariesResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountSummaries::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_AccountSummaries'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Accounts.php new file mode 100644 index 000000000..c7585bce2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Accounts.php @@ -0,0 +1,166 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $accounts = $analyticsadminService->accounts; + * + */ +class Accounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Marks target Account as soft-deleted (ie: "trashed") and returns it. This API + * does not have a method to restore soft-deleted accounts. However, they can be + * restored using the Trash Can UI. If the accounts are not restored before the + * expiration time, the account and all child resources (eg: Properties, + * GoogleAdsLinks, Streams, UserLinks) will be permanently purged. + * https://support.google.com/analytics/answer/6154772 Returns an error if the + * target is not found. (accounts.delete) + * + * @param string $name Required. The name of the Account to soft-delete. Format: + * accounts/{account} Example: "accounts/100" + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single Account. (accounts.get) + * + * @param string $name Required. The name of the account to lookup. Format: + * accounts/{account} Example: "accounts/100" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAccount + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount::class); + } + /** + * Get data sharing settings on an account. Data sharing settings are + * singletons. (accounts.getDataSharingSettings) + * + * @param string $name Required. The name of the settings to lookup. Format: + * accounts/{account}/dataSharingSettings Example: + * "accounts/1000/dataSharingSettings" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDataSharingSettings + */ + public function getDataSharingSettings($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getDataSharingSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataSharingSettings::class); + } + /** + * Returns all accounts accessible by the caller. Note that these accounts might + * not currently have GA4 properties. Soft-deleted (ie: "trashed") accounts are + * excluded by default. Returns an empty list if no relevant accounts are found. + * (accounts.listAccounts) + * + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. The + * service may return fewer than this value, even if there are additional pages. + * If unspecified, at most 50 resources will be returned. The maximum value is + * 200; (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous + * `ListAccounts` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListAccounts` must match the + * call that provided the page token. + * @opt_param bool showDeleted Whether to include soft-deleted (ie: "trashed") + * Accounts in the results. Accounts can be inspected to determine whether they + * are deleted or not. + * @return GoogleAnalyticsAdminV1alphaListAccountsResponse + */ + public function listAccounts($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountsResponse::class); + } + /** + * Updates an account. (accounts.patch) + * + * @param string $name Output only. Resource name of this account. Format: + * accounts/{account} Example: "accounts/100" + * @param GoogleAnalyticsAdminV1alphaAccount $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaAccount + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount::class); + } + /** + * Requests a ticket for creating an account. (accounts.provisionAccountTicket) + * + * @param GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse + */ + public function provisionAccountTicket(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('provisionAccountTicket', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse::class); + } + /** + * Searches through all changes to an account or its children given the + * specified set of filters. (accounts.searchChangeHistoryEvents) + * + * @param string $account Required. The account resource for which to return + * change history resources. + * @param GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse + */ + public function searchChangeHistoryEvents($account, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest $postBody, $optParams = []) + { + $params = ['account' => $account, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('searchChangeHistoryEvents', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_Accounts'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountsUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountsUserLinks.php new file mode 100644 index 000000000..6974e6ec8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountsUserLinks.php @@ -0,0 +1,222 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $userLinks = $analyticsadminService->userLinks; + * + */ +class AccountsUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists all user links on an account or property, including implicit ones that + * come from effective permissions granted by groups or organization admin + * roles. If a returned user link does not have direct permissions, they cannot + * be removed from the account or property directly with the DeleteUserLink + * command. They have to be removed from the group/etc that gives them + * permissions, which is currently only usable/discoverable in the GA or GMP + * UIs. (userLinks.audit) + * + * @param string $parent Required. Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAuditUserLinksResponse + */ + public function audit($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('audit', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksResponse::class); + } + /** + * Creates information about multiple users' links to an account or property. + * This method is transactional. If any UserLink cannot be created, none of the + * UserLinks will be created. (userLinks.batchCreate) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. This field is required. The parent field in the + * CreateUserLinkRequest messages must either be empty or match this field. + * Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse + */ + public function batchCreate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchCreate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse::class); + } + /** + * Deletes information about multiple users' links to an account or property. + * (userLinks.batchDelete) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. The parent of all values for user link names to + * delete must match this field. Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function batchDelete($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchDelete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Gets information about multiple users' links to an account or property. + * (userLinks.batchGet) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. The parent of all provided values for the 'names' + * field must match this field. Example format: accounts/1234 + * @param array $optParams Optional parameters. + * + * @opt_param string names Required. The names of the user links to retrieve. A + * maximum of 1000 user links can be retrieved in a batch. Format: + * accounts/{accountId}/userLinks/{userLinkId} + * @return GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse + */ + public function batchGet($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse::class); + } + /** + * Updates information about multiple users' links to an account or property. + * (userLinks.batchUpdate) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. The parent field in the UpdateUserLinkRequest + * messages must either be empty or match this field. Example format: + * accounts/1234 + * @param GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse + */ + public function batchUpdate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchUpdate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse::class); + } + /** + * Creates a user link on an account or property. If the user with the specified + * email already has permissions on the account or property, then the user's + * existing permissions will be unioned with the permissions specified in the + * new UserLink. (userLinks.create) + * + * @param string $parent Required. Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaUserLink $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool notifyNewUser Optional. If set, then email the new user + * notifying them that they've been granted permissions to the resource. + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class); + } + /** + * Deletes a user link on an account or property. (userLinks.delete) + * + * @param string $name Required. Example format: accounts/1234/userLinks/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Gets information about a user's link to an account or property. + * (userLinks.get) + * + * @param string $name Required. Example format: accounts/1234/userLinks/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class); + } + /** + * Lists all user links on an account or property. + * (userLinks.listAccountsUserLinks) + * + * @param string $parent Required. Example format: accounts/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of user links to return. The + * service may return fewer than this value. If unspecified, at most 200 user + * links will be returned. The maximum value is 500; values above 500 will be + * coerced to 500. + * @opt_param string pageToken A page token, received from a previous + * `ListUserLinks` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListUserLinks` must match the + * call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListUserLinksResponse + */ + public function listAccountsUserLinks($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListUserLinksResponse::class); + } + /** + * Updates a user link on an account or property. (userLinks.patch) + * + * @param string $name Output only. Example format: + * properties/1234/userLinks/5678 + * @param GoogleAnalyticsAdminV1alphaUserLink $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountsUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_AccountsUserLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Properties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Properties.php new file mode 100644 index 000000000..5d46936ce --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Properties.php @@ -0,0 +1,304 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $properties = $analyticsadminService->properties; + * + */ +class Properties extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Acknowledges the terms of user data collection for the specified property. + * This acknowledgement must be completed (either in the Google Analytics UI or + * via this API) before MeasurementProtocolSecret resources may be created. + * (properties.acknowledgeUserDataCollection) + * + * @param string $property Required. The property for which to acknowledge user + * data collection. + * @param GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse + */ + public function acknowledgeUserDataCollection($property, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest $postBody, $optParams = []) + { + $params = ['property' => $property, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('acknowledgeUserDataCollection', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse::class); + } + /** + * Creates an "GA4" property with the specified location and attributes. + * (properties.create) + * + * @param GoogleAnalyticsAdminV1alphaProperty $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaProperty + */ + public function create(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class); + } + /** + * Marks target Property as soft-deleted (ie: "trashed") and returns it. This + * API does not have a method to restore soft-deleted properties. However, they + * can be restored using the Trash Can UI. If the properties are not restored + * before the expiration time, the Property and all child resources (eg: + * GoogleAdsLinks, Streams, UserLinks) will be permanently purged. + * https://support.google.com/analytics/answer/6154772 Returns an error if the + * target is not found, or is not a GA4 Property. (properties.delete) + * + * @param string $name Required. The name of the Property to soft-delete. + * Format: properties/{property_id} Example: "properties/1000" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaProperty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class); + } + /** + * Lookup for a single "GA4" Property. (properties.get) + * + * @param string $name Required. The name of the property to lookup. Format: + * properties/{property_id} Example: "properties/1000" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaProperty + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class); + } + /** + * Lookup for a AttributionSettings singleton. + * (properties.getAttributionSettings) + * + * @param string $name Required. The name of the attribution settings to + * retrieve. Format: properties/{property}/attributionSettings + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAttributionSettings + */ + public function getAttributionSettings($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getAttributionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings::class); + } + /** + * Returns the singleton data retention settings for this property. + * (properties.getDataRetentionSettings) + * + * @param string $name Required. The name of the settings to lookup. Format: + * properties/{property}/dataRetentionSettings Example: + * "properties/1000/dataRetentionSettings" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDataRetentionSettings + */ + public function getDataRetentionSettings($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getDataRetentionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings::class); + } + /** + * Lookup for Google Signals settings for a property. + * (properties.getGoogleSignalsSettings) + * + * @param string $name Required. The name of the google signals settings to + * retrieve. Format: properties/{property}/googleSignalsSettings + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaGoogleSignalsSettings + */ + public function getGoogleSignalsSettings($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getGoogleSignalsSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings::class); + } + /** + * Returns child Properties under the specified parent Account. Only "GA4" + * properties will be returned. Properties will be excluded if the caller does + * not have access. Soft-deleted (ie: "trashed") properties are excluded by + * default. Returns an empty list if no relevant properties are found. + * (properties.listProperties) + * + * @param array $optParams Optional parameters. + * + * @opt_param string filter Required. An expression for filtering the results of + * the request. Fields eligible for filtering are: `parent:`(The resource name + * of the parent account/property) or `ancestor:`(The resource name of the + * parent account) or `firebase_project:`(The id or number of the linked + * firebase project). Some examples of filters: ``` | Filter | Description | + * |-----------------------------|-------------------------------------------| | + * parent:accounts/123 | The account with account id: 123. | | + * parent:properties/123 | The property with property id: 123. | | + * ancestor:accounts/123 | The account with account id: 123. | | + * firebase_project:project-id | The firebase project with id: project-id. | | + * firebase_project:123 | The firebase project with number: 123. | ``` + * @opt_param int pageSize The maximum number of resources to return. The + * service may return fewer than this value, even if there are additional pages. + * If unspecified, at most 50 resources will be returned. The maximum value is + * 200; (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous + * `ListProperties` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListProperties` must match the + * call that provided the page token. + * @opt_param bool showDeleted Whether to include soft-deleted (ie: "trashed") + * Properties in the results. Properties can be inspected to determine whether + * they are deleted or not. + * @return GoogleAnalyticsAdminV1alphaListPropertiesResponse + */ + public function listProperties($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListPropertiesResponse::class); + } + /** + * Updates a property. (properties.patch) + * + * @param string $name Output only. Resource name of this property. Format: + * properties/{property_id} Example: "properties/1000" + * @param GoogleAnalyticsAdminV1alphaProperty $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaProperty + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class); + } + /** + * Returns a customized report of data access records. The report provides + * records of each time a user reads Google Analytics reporting data. Access + * records are retained for up to 2 years. Data Access Reports can be requested + * for a property. The property must be in Google Analytics 360. This method is + * only available to Administrators. These data access records include GA4 UI + * Reporting, GA4 UI Explorations, GA4 Data API, and other products like + * Firebase & Admob that can retrieve data from Google Analytics through a + * linkage. These records don't include property configuration changes like + * adding a stream or changing a property's time zone. For configuration change + * history, see [searchChangeHistoryEvents](https://developers.google.com/analyt + * ics/devguides/config/admin/v1/rest/v1alpha/accounts/searchChangeHistoryEvents + * ). (properties.runAccessReport) + * + * @param string $entity The Data Access Report is requested for this property. + * For example if "123" is your GA4 property ID, then entity should be + * "properties/123". + * @param GoogleAnalyticsAdminV1alphaRunAccessReportRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaRunAccessReportResponse + */ + public function runAccessReport($entity, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportRequest $postBody, $optParams = []) + { + $params = ['entity' => $entity, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('runAccessReport', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportResponse::class); + } + /** + * Updates attribution settings on a property. + * (properties.updateAttributionSettings) + * + * @param string $name Output only. Resource name of this attribution settings + * resource. Format: properties/{property_id}/attributionSettings Example: + * "properties/1000/attributionSettings" + * @param GoogleAnalyticsAdminV1alphaAttributionSettings $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaAttributionSettings + */ + public function updateAttributionSettings($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateAttributionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings::class); + } + /** + * Updates the singleton data retention settings for this property. + * (properties.updateDataRetentionSettings) + * + * @param string $name Output only. Resource name for this DataRetentionSetting + * resource. Format: properties/{property}/dataRetentionSettings + * @param GoogleAnalyticsAdminV1alphaDataRetentionSettings $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaDataRetentionSettings + */ + public function updateDataRetentionSettings($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateDataRetentionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings::class); + } + /** + * Updates Google Signals settings for a property. + * (properties.updateGoogleSignalsSettings) + * + * @param string $name Output only. Resource name of this setting. Format: + * properties/{property_id}/googleSignalsSettings Example: + * "properties/1000/googleSignalsSettings" + * @param GoogleAnalyticsAdminV1alphaGoogleSignalsSettings $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaGoogleSignalsSettings + */ + public function updateGoogleSignalsSettings($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateGoogleSignalsSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Properties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_Properties'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreams.php new file mode 100644 index 000000000..4fd7d7aec --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreams.php @@ -0,0 +1,112 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $androidAppDataStreams = $analyticsadminService->androidAppDataStreams; + * + */ +class PropertiesAndroidAppDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Deletes an android app stream on a property. (androidAppDataStreams.delete) + * + * @param string $name Required. The name of the android app data stream to + * delete. Format: properties/{property_id}/androidAppDataStreams/{stream_id} + * Example: "properties/123/androidAppDataStreams/456" + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single AndroidAppDataStream (androidAppDataStreams.get) + * + * @param string $name Required. The name of the android app data stream to + * lookup. Format: properties/{property_id}/androidAppDataStreams/{stream_id} + * Example: "properties/123/androidAppDataStreams/456" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAndroidAppDataStream + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream::class); + } + /** + * Returns child android app streams under the specified parent property. + * Android app streams will be excluded if the caller does not have access. + * Returns an empty list if no relevant android app streams are found. + * (androidAppDataStreams.listPropertiesAndroidAppDataStreams) + * + * @param string $parent Required. The name of the parent property. For example, + * to limit results to app streams under the property with Id 123: + * "properties/123" + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200; + * (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous call. + * Provide this to retrieve the subsequent page. When paginating, all other + * parameters provided to `ListAndroidAppDataStreams` must match the call that + * provided the page token. + * @return GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse + */ + public function listPropertiesAndroidAppDataStreams($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse::class); + } + /** + * Updates an android app stream on a property. (androidAppDataStreams.patch) + * + * @param string $name Output only. Resource name of this Data Stream. Format: + * properties/{property_id}/androidAppDataStreams/{stream_id} Example: + * "properties/1000/androidAppDataStreams/2000" + * @param GoogleAnalyticsAdminV1alphaAndroidAppDataStream $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaAndroidAppDataStream + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAndroidAppDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesAndroidAppDataStreams'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets.php new file mode 100644 index 000000000..deffd8e01 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets.php @@ -0,0 +1,131 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets; + * + */ +class PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a measurement protocol secret. (measurementProtocolSecrets.create) + * + * @param string $parent Required. The parent resource where this secret will be + * created. Any type of stream (WebDataStream, IosAppDataStream, + * AndroidAppDataStream) may be a parent. Format: + * properties/{property}/webDataStreams/{webDataStream} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete) + * + * @param string $name Required. The name of the MeasurementProtocolSecret to + * delete. Format: properties/{property}/webDataStreams/{webDataStream}/measurem + * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream + * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent. + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single "GA4" MeasurementProtocolSecret. + * (measurementProtocolSecrets.get) + * + * @param string $name Required. The name of the measurement protocol secret to + * lookup. Format: properties/{property}/webDataStreams/{webDataStream}/measurem + * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream + * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent. + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Returns child MeasurementProtocolSecrets under the specified parent Property. + * (measurementProtocolSecrets.listPropertiesAndroidAppDataStreamsMeasurementPro + * tocolSecrets) + * + * @param string $parent Required. The resource name of the parent stream. Any + * type of stream (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be + * a parent. Format: properties/{property}/webDataStreams/{webDataStream}/measur + * ementProtocolSecrets + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 10 resources will be returned. The maximum value is 10. + * Higher values will be coerced to the maximum. + * @opt_param string pageToken A page token, received from a previous + * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the + * subsequent page. When paginating, all other parameters provided to + * `ListMeasurementProtocolSecrets` must match the call that provided the page + * token. + * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse + */ + public function listPropertiesAndroidAppDataStreamsMeasurementProtocolSecrets($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class); + } + /** + * Updates a measurement protocol secret. (measurementProtocolSecrets.patch) + * + * @param string $name Output only. Resource name of this secret. This secret + * may be a child of any type of stream. Format: properties/{property}/webDataSt + * reams/{webDataStream}/measurementProtocolSecrets/{measurementProtocolSecret} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to be updated. Omitted fields + * will not be updated. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAudiences.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAudiences.php new file mode 100644 index 000000000..fed2f2209 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAudiences.php @@ -0,0 +1,123 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $audiences = $analyticsadminService->audiences; + * + */ +class PropertiesAudiences extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Archives an Audience on a property. (audiences.archive) + * + * @param string $name Required. Example format: properties/1234/audiences/5678 + * @param GoogleAnalyticsAdminV1alphaArchiveAudienceRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function archive($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaArchiveAudienceRequest $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('archive', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Creates an Audience. (audiences.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaAudience $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAudience + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class); + } + /** + * Lookup for a single Audience. Audiences created before 2020 may not be + * supported. Default audiences will not show filter definitions. + * (audiences.get) + * + * @param string $name Required. The name of the Audience to get. Example + * format: properties/1234/audiences/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAudience + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class); + } + /** + * Lists Audiences on a property. Audiences created before 2020 may not be + * supported. Default audiences will not show filter definitions. + * (audiences.listPropertiesAudiences) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListAudiences` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListAudiences` must match the + * call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListAudiencesResponse + */ + public function listPropertiesAudiences($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAudiencesResponse::class); + } + /** + * Updates an Audience on a property. (audiences.patch) + * + * @param string $name Output only. The resource name for this Audience + * resource. Format: properties/{propertyId}/audiences/{audienceId} + * @param GoogleAnalyticsAdminV1alphaAudience $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaAudience + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAudiences::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesAudiences'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesConversionEvents.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesConversionEvents.php new file mode 100644 index 000000000..d78a1bdd7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesConversionEvents.php @@ -0,0 +1,105 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $conversionEvents = $analyticsadminService->conversionEvents; + * + */ +class PropertiesConversionEvents extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a conversion event with the specified attributes. + * (conversionEvents.create) + * + * @param string $parent Required. The resource name of the parent property + * where this conversion event will be created. Format: properties/123 + * @param GoogleAnalyticsAdminV1alphaConversionEvent $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaConversionEvent + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent::class); + } + /** + * Deletes a conversion event in a property. (conversionEvents.delete) + * + * @param string $name Required. The resource name of the conversion event to + * delete. Format: properties/{property}/conversionEvents/{conversion_event} + * Example: "properties/123/conversionEvents/456" + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Retrieve a single conversion event. (conversionEvents.get) + * + * @param string $name Required. The resource name of the conversion event to + * retrieve. Format: properties/{property}/conversionEvents/{conversion_event} + * Example: "properties/123/conversionEvents/456" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaConversionEvent + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent::class); + } + /** + * Returns a list of conversion events in the specified parent property. Returns + * an empty list if no conversion events are found. + * (conversionEvents.listPropertiesConversionEvents) + * + * @param string $parent Required. The resource name of the parent property. + * Example: 'properties/123' + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200; + * (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous + * `ListConversionEvents` call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `ListConversionEvents` must + * match the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListConversionEventsResponse + */ + public function listPropertiesConversionEvents($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListConversionEventsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesConversionEvents::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesConversionEvents'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomDimensions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomDimensions.php new file mode 100644 index 000000000..ce3d7c3c6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomDimensions.php @@ -0,0 +1,120 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $customDimensions = $analyticsadminService->customDimensions; + * + */ +class PropertiesCustomDimensions extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Archives a CustomDimension on a property. (customDimensions.archive) + * + * @param string $name Required. The name of the CustomDimension to archive. + * Example format: properties/1234/customDimensions/5678 + * @param GoogleAnalyticsAdminV1alphaArchiveCustomDimensionRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function archive($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaArchiveCustomDimensionRequest $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('archive', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Creates a CustomDimension. (customDimensions.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaCustomDimension $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaCustomDimension + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class); + } + /** + * Lookup for a single CustomDimension. (customDimensions.get) + * + * @param string $name Required. The name of the CustomDimension to get. Example + * format: properties/1234/customDimensions/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaCustomDimension + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class); + } + /** + * Lists CustomDimensions on a property. + * (customDimensions.listPropertiesCustomDimensions) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListCustomDimensions` call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `ListCustomDimensions` must + * match the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse + */ + public function listPropertiesCustomDimensions($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse::class); + } + /** + * Updates a CustomDimension on a property. (customDimensions.patch) + * + * @param string $name Output only. Resource name for this CustomDimension + * resource. Format: properties/{property}/customDimensions/{customDimension} + * @param GoogleAnalyticsAdminV1alphaCustomDimension $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Omitted fields will not be updated. To replace the entire entity, use one + * path with the string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaCustomDimension + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomDimensions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesCustomDimensions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomMetrics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomMetrics.php new file mode 100644 index 000000000..2db1af193 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomMetrics.php @@ -0,0 +1,120 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $customMetrics = $analyticsadminService->customMetrics; + * + */ +class PropertiesCustomMetrics extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Archives a CustomMetric on a property. (customMetrics.archive) + * + * @param string $name Required. The name of the CustomMetric to archive. + * Example format: properties/1234/customMetrics/5678 + * @param GoogleAnalyticsAdminV1alphaArchiveCustomMetricRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function archive($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaArchiveCustomMetricRequest $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('archive', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Creates a CustomMetric. (customMetrics.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaCustomMetric $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaCustomMetric + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class); + } + /** + * Lookup for a single CustomMetric. (customMetrics.get) + * + * @param string $name Required. The name of the CustomMetric to get. Example + * format: properties/1234/customMetrics/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaCustomMetric + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class); + } + /** + * Lists CustomMetrics on a property. + * (customMetrics.listPropertiesCustomMetrics) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListCustomMetrics` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListCustomMetrics` must match + * the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListCustomMetricsResponse + */ + public function listPropertiesCustomMetrics($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomMetricsResponse::class); + } + /** + * Updates a CustomMetric on a property. (customMetrics.patch) + * + * @param string $name Output only. Resource name for this CustomMetric + * resource. Format: properties/{property}/customMetrics/{customMetric} + * @param GoogleAnalyticsAdminV1alphaCustomMetric $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Omitted fields will not be updated. To replace the entire entity, use one + * path with the string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaCustomMetric + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomMetrics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesCustomMetrics'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreams.php new file mode 100644 index 000000000..0ec2ff66c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreams.php @@ -0,0 +1,136 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $dataStreams = $analyticsadminService->dataStreams; + * + */ +class PropertiesDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a DataStream. (dataStreams.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaDataStream $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDataStream + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class); + } + /** + * Deletes a DataStream on a property. (dataStreams.delete) + * + * @param string $name Required. The name of the DataStream to delete. Example + * format: properties/1234/dataStreams/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single DataStream. (dataStreams.get) + * + * @param string $name Required. The name of the DataStream to get. Example + * format: properties/1234/dataStreams/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDataStream + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class); + } + /** + * Returns the Site Tag for the specified web stream. Site Tags are immutable + * singletons. (dataStreams.getGlobalSiteTag) + * + * @param string $name Required. The name of the site tag to lookup. Note that + * site tags are singletons and do not have unique IDs. Format: + * properties/{property_id}/dataStreams/{stream_id}/globalSiteTag Example: + * "properties/123/dataStreams/456/globalSiteTag" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaGlobalSiteTag + */ + public function getGlobalSiteTag($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('getGlobalSiteTag', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGlobalSiteTag::class); + } + /** + * Lists DataStreams on a property. (dataStreams.listPropertiesDataStreams) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListDataStreams` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListDataStreams` must match the + * call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListDataStreamsResponse + */ + public function listPropertiesDataStreams($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDataStreamsResponse::class); + } + /** + * Updates a DataStream on a property. (dataStreams.patch) + * + * @param string $name Output only. Resource name of this Data Stream. Format: + * properties/{property_id}/dataStreams/{stream_id} Example: + * "properties/1000/dataStreams/2000" + * @param GoogleAnalyticsAdminV1alphaDataStream $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Omitted fields will not be updated. To replace the entire entity, use one + * path with the string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaDataStream + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDataStreams'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreamsMeasurementProtocolSecrets.php new file mode 100644 index 000000000..9618986cb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreamsMeasurementProtocolSecrets.php @@ -0,0 +1,126 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets; + * + */ +class PropertiesDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a measurement protocol secret. (measurementProtocolSecrets.create) + * + * @param string $parent Required. The parent resource where this secret will be + * created. Format: properties/{property}/dataStreams/{dataStream} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete) + * + * @param string $name Required. The name of the MeasurementProtocolSecret to + * delete. Format: properties/{property}/dataStreams/{dataStream}/measurementPro + * tocolSecrets/{measurementProtocolSecret} + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single "GA4" MeasurementProtocolSecret. + * (measurementProtocolSecrets.get) + * + * @param string $name Required. The name of the measurement protocol secret to + * lookup. Format: properties/{property}/dataStreams/{dataStream}/measurementPro + * tocolSecrets/{measurementProtocolSecret} + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Returns child MeasurementProtocolSecrets under the specified parent Property. + * (measurementProtocolSecrets.listPropertiesDataStreamsMeasurementProtocolSecre + * ts) + * + * @param string $parent Required. The resource name of the parent stream. + * Format: + * properties/{property}/dataStreams/{dataStream}/measurementProtocolSecrets + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 10 resources will be returned. The maximum value is 10. + * Higher values will be coerced to the maximum. + * @opt_param string pageToken A page token, received from a previous + * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the + * subsequent page. When paginating, all other parameters provided to + * `ListMeasurementProtocolSecrets` must match the call that provided the page + * token. + * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse + */ + public function listPropertiesDataStreamsMeasurementProtocolSecrets($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class); + } + /** + * Updates a measurement protocol secret. (measurementProtocolSecrets.patch) + * + * @param string $name Output only. Resource name of this secret. This secret + * may be a child of any type of stream. Format: properties/{property}/dataStrea + * ms/{dataStream}/measurementProtocolSecrets/{measurementProtocolSecret} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to be updated. Omitted fields + * will not be updated. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDataStreamsMeasurementProtocolSecrets'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinkProposals.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinkProposals.php new file mode 100644 index 000000000..ed040ea27 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinkProposals.php @@ -0,0 +1,148 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $displayVideo360AdvertiserLinkProposals = $analyticsadminService->displayVideo360AdvertiserLinkProposals; + * + */ +class PropertiesDisplayVideo360AdvertiserLinkProposals extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Approves a DisplayVideo360AdvertiserLinkProposal. The + * DisplayVideo360AdvertiserLinkProposal will be deleted and a new + * DisplayVideo360AdvertiserLink will be created. + * (displayVideo360AdvertiserLinkProposals.approve) + * + * @param string $name Required. The name of the + * DisplayVideo360AdvertiserLinkProposal to approve. Example format: + * properties/1234/displayVideo360AdvertiserLinkProposals/5678 + * @param GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse + */ + public function approve($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('approve', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse::class); + } + /** + * Cancels a DisplayVideo360AdvertiserLinkProposal. Cancelling can mean either: + * - Declining a proposal initiated from Display & Video 360 - Withdrawing a + * proposal initiated from Google Analytics After being cancelled, a proposal + * will eventually be deleted automatically. + * (displayVideo360AdvertiserLinkProposals.cancel) + * + * @param string $name Required. The name of the + * DisplayVideo360AdvertiserLinkProposal to cancel. Example format: + * properties/1234/displayVideo360AdvertiserLinkProposals/5678 + * @param GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal + */ + public function cancel($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('cancel', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class); + } + /** + * Creates a DisplayVideo360AdvertiserLinkProposal. + * (displayVideo360AdvertiserLinkProposals.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class); + } + /** + * Deletes a DisplayVideo360AdvertiserLinkProposal on a property. This can only + * be used on cancelled proposals. + * (displayVideo360AdvertiserLinkProposals.delete) + * + * @param string $name Required. The name of the + * DisplayVideo360AdvertiserLinkProposal to delete. Example format: + * properties/1234/displayVideo360AdvertiserLinkProposals/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single DisplayVideo360AdvertiserLinkProposal. + * (displayVideo360AdvertiserLinkProposals.get) + * + * @param string $name Required. The name of the + * DisplayVideo360AdvertiserLinkProposal to get. Example format: + * properties/1234/displayVideo360AdvertiserLinkProposals/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class); + } + /** + * Lists DisplayVideo360AdvertiserLinkProposals on a property. (displayVideo360A + * dvertiserLinkProposals.listPropertiesDisplayVideo360AdvertiserLinkProposals) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListDisplayVideo360AdvertiserLinkProposals` call. Provide this to retrieve + * the subsequent page. When paginating, all other parameters provided to + * `ListDisplayVideo360AdvertiserLinkProposals` must match the call that + * provided the page token. + * @return GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse + */ + public function listPropertiesDisplayVideo360AdvertiserLinkProposals($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinkProposals::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDisplayVideo360AdvertiserLinkProposals'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinks.php new file mode 100644 index 000000000..37601f884 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinks.php @@ -0,0 +1,129 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $displayVideo360AdvertiserLinks = $analyticsadminService->displayVideo360AdvertiserLinks; + * + */ +class PropertiesDisplayVideo360AdvertiserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a DisplayVideo360AdvertiserLink. This can only be utilized by users + * who have proper authorization both on the Google Analytics property and on + * the Display & Video 360 advertiser. Users who do not have access to the + * Display & Video 360 advertiser should instead seek to create a + * DisplayVideo360LinkProposal. (displayVideo360AdvertiserLinks.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class); + } + /** + * Deletes a DisplayVideo360AdvertiserLink on a property. + * (displayVideo360AdvertiserLinks.delete) + * + * @param string $name Required. The name of the DisplayVideo360AdvertiserLink + * to delete. Example format: + * properties/1234/displayVideo360AdvertiserLinks/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Look up a single DisplayVideo360AdvertiserLink + * (displayVideo360AdvertiserLinks.get) + * + * @param string $name Required. The name of the DisplayVideo360AdvertiserLink + * to get. Example format: properties/1234/displayVideo360AdvertiserLink/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class); + } + /** + * Lists all DisplayVideo360AdvertiserLinks on a property. + * (displayVideo360AdvertiserLinks.listPropertiesDisplayVideo360AdvertiserLinks) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListDisplayVideo360AdvertiserLinks` call. Provide this to retrieve the + * subsequent page. When paginating, all other parameters provided to + * `ListDisplayVideo360AdvertiserLinks` must match the call that provided the + * page token. + * @return GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse + */ + public function listPropertiesDisplayVideo360AdvertiserLinks($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse::class); + } + /** + * Updates a DisplayVideo360AdvertiserLink on a property. + * (displayVideo360AdvertiserLinks.patch) + * + * @param string $name Output only. The resource name for this + * DisplayVideo360AdvertiserLink resource. Format: + * properties/{propertyId}/displayVideo360AdvertiserLinks/{linkId} Note: linkId + * is not the Display & Video 360 Advertiser ID + * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Omitted fields will not be updated. To replace the entire entity, use one + * path with the string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDisplayVideo360AdvertiserLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesFirebaseLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesFirebaseLinks.php new file mode 100644 index 000000000..0c6ffe356 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesFirebaseLinks.php @@ -0,0 +1,90 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $firebaseLinks = $analyticsadminService->firebaseLinks; + * + */ +class PropertiesFirebaseLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a FirebaseLink. Properties can have at most one FirebaseLink. + * (firebaseLinks.create) + * + * @param string $parent Required. Format: properties/{property_id} Example: + * properties/1234 + * @param GoogleAnalyticsAdminV1alphaFirebaseLink $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaFirebaseLink + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink::class); + } + /** + * Deletes a FirebaseLink on a property (firebaseLinks.delete) + * + * @param string $name Required. Format: + * properties/{property_id}/firebaseLinks/{firebase_link_id} Example: + * properties/1234/firebaseLinks/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lists FirebaseLinks on a property. Properties can have at most one + * FirebaseLink. (firebaseLinks.listPropertiesFirebaseLinks) + * + * @param string $parent Required. Format: properties/{property_id} Example: + * properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. The + * service may return fewer than this value, even if there are additional pages. + * If unspecified, at most 50 resources will be returned. The maximum value is + * 200; (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous + * `ListFirebaseLinks` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListProperties` must match the + * call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse + */ + public function listPropertiesFirebaseLinks($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesFirebaseLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesFirebaseLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesGoogleAdsLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesGoogleAdsLinks.php new file mode 100644 index 000000000..c203e6cba --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesGoogleAdsLinks.php @@ -0,0 +1,106 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $googleAdsLinks = $analyticsadminService->googleAdsLinks; + * + */ +class PropertiesGoogleAdsLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GoogleAdsLink. (googleAdsLinks.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink::class); + } + /** + * Deletes a GoogleAdsLink on a property (googleAdsLinks.delete) + * + * @param string $name Required. Example format: + * properties/1234/googleAdsLinks/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lists GoogleAdsLinks on a property. + * (googleAdsLinks.listPropertiesGoogleAdsLinks) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListGoogleAdsLinks` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListGoogleAdsLinks` must match + * the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse + */ + public function listPropertiesGoogleAdsLinks($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse::class); + } + /** + * Updates a GoogleAdsLink on a property (googleAdsLinks.patch) + * + * @param string $name Output only. Format: + * properties/{propertyId}/googleAdsLinks/{googleAdsLinkId} Note: + * googleAdsLinkId is not the Google Ads customer ID. + * @param GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesGoogleAdsLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesGoogleAdsLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreams.php new file mode 100644 index 000000000..37ed73a8c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreams.php @@ -0,0 +1,112 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $iosAppDataStreams = $analyticsadminService->iosAppDataStreams; + * + */ +class PropertiesIosAppDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Deletes an iOS app stream on a property. (iosAppDataStreams.delete) + * + * @param string $name Required. The name of the iOS app data stream to delete. + * Format: properties/{property_id}/iosAppDataStreams/{stream_id} Example: + * "properties/123/iosAppDataStreams/456" + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single IosAppDataStream (iosAppDataStreams.get) + * + * @param string $name Required. The name of the iOS app data stream to lookup. + * Format: properties/{property_id}/iosAppDataStreams/{stream_id} Example: + * "properties/123/iosAppDataStreams/456" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaIosAppDataStream + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream::class); + } + /** + * Returns child iOS app data streams under the specified parent property. iOS + * app data streams will be excluded if the caller does not have access. Returns + * an empty list if no relevant iOS app data streams are found. + * (iosAppDataStreams.listPropertiesIosAppDataStreams) + * + * @param string $parent Required. The name of the parent property. For example, + * to list results of app streams under the property with Id 123: + * "properties/123" + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200; + * (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous + * `ListIosAppDataStreams` call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `ListIosAppDataStreams` + * must match the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse + */ + public function listPropertiesIosAppDataStreams($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse::class); + } + /** + * Updates an iOS app stream on a property. (iosAppDataStreams.patch) + * + * @param string $name Output only. Resource name of this Data Stream. Format: + * properties/{property_id}/iosAppDataStreams/{stream_id} Example: + * "properties/1000/iosAppDataStreams/2000" + * @param GoogleAnalyticsAdminV1alphaIosAppDataStream $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaIosAppDataStream + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesIosAppDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesIosAppDataStreams'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreamsMeasurementProtocolSecrets.php new file mode 100644 index 000000000..7c0147dfa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreamsMeasurementProtocolSecrets.php @@ -0,0 +1,131 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets; + * + */ +class PropertiesIosAppDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a measurement protocol secret. (measurementProtocolSecrets.create) + * + * @param string $parent Required. The parent resource where this secret will be + * created. Any type of stream (WebDataStream, IosAppDataStream, + * AndroidAppDataStream) may be a parent. Format: + * properties/{property}/webDataStreams/{webDataStream} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete) + * + * @param string $name Required. The name of the MeasurementProtocolSecret to + * delete. Format: properties/{property}/webDataStreams/{webDataStream}/measurem + * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream + * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent. + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single "GA4" MeasurementProtocolSecret. + * (measurementProtocolSecrets.get) + * + * @param string $name Required. The name of the measurement protocol secret to + * lookup. Format: properties/{property}/webDataStreams/{webDataStream}/measurem + * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream + * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent. + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Returns child MeasurementProtocolSecrets under the specified parent Property. + * (measurementProtocolSecrets.listPropertiesIosAppDataStreamsMeasurementProtoco + * lSecrets) + * + * @param string $parent Required. The resource name of the parent stream. Any + * type of stream (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be + * a parent. Format: properties/{property}/webDataStreams/{webDataStream}/measur + * ementProtocolSecrets + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 10 resources will be returned. The maximum value is 10. + * Higher values will be coerced to the maximum. + * @opt_param string pageToken A page token, received from a previous + * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the + * subsequent page. When paginating, all other parameters provided to + * `ListMeasurementProtocolSecrets` must match the call that provided the page + * token. + * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse + */ + public function listPropertiesIosAppDataStreamsMeasurementProtocolSecrets($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class); + } + /** + * Updates a measurement protocol secret. (measurementProtocolSecrets.patch) + * + * @param string $name Output only. Resource name of this secret. This secret + * may be a child of any type of stream. Format: properties/{property}/webDataSt + * reams/{webDataStream}/measurementProtocolSecrets/{measurementProtocolSecret} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to be updated. Omitted fields + * will not be updated. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesIosAppDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesIosAppDataStreamsMeasurementProtocolSecrets'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesSearchAds360Links.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesSearchAds360Links.php new file mode 100644 index 000000000..1feffcfd7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesSearchAds360Links.php @@ -0,0 +1,119 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $searchAds360Links = $analyticsadminService->searchAds360Links; + * + */ +class PropertiesSearchAds360Links extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a SearchAds360Link. (searchAds360Links.create) + * + * @param string $parent Required. Example format: properties/1234 + * @param GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaSearchAds360Link + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class); + } + /** + * Deletes a SearchAds360Link on a property. (searchAds360Links.delete) + * + * @param string $name Required. The name of the SearchAds360Link to delete. + * Example format: properties/1234/SearchAds360Links/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Look up a single SearchAds360Link (searchAds360Links.get) + * + * @param string $name Required. The name of the SearchAds360Link to get. + * Example format: properties/1234/SearchAds360Link/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaSearchAds360Link + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class); + } + /** + * Lists all SearchAds360Links on a property. + * (searchAds360Links.listPropertiesSearchAds360Links) + * + * @param string $parent Required. Example format: properties/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200 + * (higher values will be coerced to the maximum). + * @opt_param string pageToken A page token, received from a previous + * `ListSearchAds360Links` call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `ListSearchAds360Links` + * must match the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse + */ + public function listPropertiesSearchAds360Links($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse::class); + } + /** + * Updates a SearchAds360Link on a property. (searchAds360Links.patch) + * + * @param string $name Output only. The resource name for this SearchAds360Link + * resource. Format: properties/{propertyId}/searchAds360Links/{linkId} Note: + * linkId is not the Search Ads 360 advertiser ID + * @param GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Omitted fields will not be updated. To replace the entire entity, use one + * path with the string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaSearchAds360Link + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesSearchAds360Links::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesSearchAds360Links'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesUserLinks.php new file mode 100644 index 000000000..8bb59a716 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesUserLinks.php @@ -0,0 +1,222 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $userLinks = $analyticsadminService->userLinks; + * + */ +class PropertiesUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Lists all user links on an account or property, including implicit ones that + * come from effective permissions granted by groups or organization admin + * roles. If a returned user link does not have direct permissions, they cannot + * be removed from the account or property directly with the DeleteUserLink + * command. They have to be removed from the group/etc that gives them + * permissions, which is currently only usable/discoverable in the GA or GMP + * UIs. (userLinks.audit) + * + * @param string $parent Required. Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaAuditUserLinksResponse + */ + public function audit($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('audit', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksResponse::class); + } + /** + * Creates information about multiple users' links to an account or property. + * This method is transactional. If any UserLink cannot be created, none of the + * UserLinks will be created. (userLinks.batchCreate) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. This field is required. The parent field in the + * CreateUserLinkRequest messages must either be empty or match this field. + * Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse + */ + public function batchCreate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchCreate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse::class); + } + /** + * Deletes information about multiple users' links to an account or property. + * (userLinks.batchDelete) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. The parent of all values for user link names to + * delete must match this field. Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function batchDelete($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchDelete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Gets information about multiple users' links to an account or property. + * (userLinks.batchGet) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. The parent of all provided values for the 'names' + * field must match this field. Example format: accounts/1234 + * @param array $optParams Optional parameters. + * + * @opt_param string names Required. The names of the user links to retrieve. A + * maximum of 1000 user links can be retrieved in a batch. Format: + * accounts/{accountId}/userLinks/{userLinkId} + * @return GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse + */ + public function batchGet($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse::class); + } + /** + * Updates information about multiple users' links to an account or property. + * (userLinks.batchUpdate) + * + * @param string $parent Required. The account or property that all user links + * in the request are for. The parent field in the UpdateUserLinkRequest + * messages must either be empty or match this field. Example format: + * accounts/1234 + * @param GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse + */ + public function batchUpdate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchUpdate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse::class); + } + /** + * Creates a user link on an account or property. If the user with the specified + * email already has permissions on the account or property, then the user's + * existing permissions will be unioned with the permissions specified in the + * new UserLink. (userLinks.create) + * + * @param string $parent Required. Example format: accounts/1234 + * @param GoogleAnalyticsAdminV1alphaUserLink $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool notifyNewUser Optional. If set, then email the new user + * notifying them that they've been granted permissions to the resource. + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class); + } + /** + * Deletes a user link on an account or property. (userLinks.delete) + * + * @param string $name Required. Example format: accounts/1234/userLinks/5678 + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Gets information about a user's link to an account or property. + * (userLinks.get) + * + * @param string $name Required. Example format: accounts/1234/userLinks/5678 + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class); + } + /** + * Lists all user links on an account or property. + * (userLinks.listPropertiesUserLinks) + * + * @param string $parent Required. Example format: accounts/1234 + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of user links to return. The + * service may return fewer than this value. If unspecified, at most 200 user + * links will be returned. The maximum value is 500; values above 500 will be + * coerced to 500. + * @opt_param string pageToken A page token, received from a previous + * `ListUserLinks` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListUserLinks` must match the + * call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListUserLinksResponse + */ + public function listPropertiesUserLinks($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListUserLinksResponse::class); + } + /** + * Updates a user link on an account or property. (userLinks.patch) + * + * @param string $name Output only. Example format: + * properties/1234/userLinks/5678 + * @param GoogleAnalyticsAdminV1alphaUserLink $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaUserLink + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesUserLinks'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreams.php new file mode 100644 index 000000000..a4cf22954 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreams.php @@ -0,0 +1,128 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $webDataStreams = $analyticsadminService->webDataStreams; + * + */ +class PropertiesWebDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a web stream with the specified location and attributes. + * (webDataStreams.create) + * + * @param string $parent Required. The parent resource where this web data + * stream will be created. Format: properties/123 + * @param GoogleAnalyticsAdminV1alphaWebDataStream $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaWebDataStream + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class); + } + /** + * Deletes a web stream on a property. (webDataStreams.delete) + * + * @param string $name Required. The name of the web data stream to delete. + * Format: properties/{property_id}/webDataStreams/{stream_id} Example: + * "properties/123/webDataStreams/456" + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single WebDataStream (webDataStreams.get) + * + * @param string $name Required. The name of the web data stream to lookup. + * Format: properties/{property_id}/webDataStreams/{stream_id} Example: + * "properties/123/webDataStreams/456" + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaWebDataStream + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class); + } + /** + * Returns child web data streams under the specified parent property. Web data + * streams will be excluded if the caller does not have access. Returns an empty + * list if no relevant web data streams are found. + * (webDataStreams.listPropertiesWebDataStreams) + * + * @param string $parent Required. The name of the parent property. For example, + * to list results of web streams under the property with Id 123: + * "properties/123" + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 50 resources will be returned. The maximum value is 200; + * (higher values will be coerced to the maximum) + * @opt_param string pageToken A page token, received from a previous + * `ListWebDataStreams` call. Provide this to retrieve the subsequent page. When + * paginating, all other parameters provided to `ListWebDataStreams` must match + * the call that provided the page token. + * @return GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse + */ + public function listPropertiesWebDataStreams($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse::class); + } + /** + * Updates a web stream on a property. (webDataStreams.patch) + * + * @param string $name Output only. Resource name of this Data Stream. Format: + * properties/{property_id}/webDataStreams/{stream_id} Example: + * "properties/1000/webDataStreams/2000" + * @param GoogleAnalyticsAdminV1alphaWebDataStream $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask Required. The list of fields to be updated. + * Field names must be in snake case (e.g., "field_to_update"). Omitted fields + * will not be updated. To replace the entire entity, use one path with the + * string "*" to match all fields. + * @return GoogleAnalyticsAdminV1alphaWebDataStream + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesWebDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesWebDataStreams'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreamsMeasurementProtocolSecrets.php new file mode 100644 index 000000000..d9dc6675e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreamsMeasurementProtocolSecrets.php @@ -0,0 +1,131 @@ + + * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...); + * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets; + * + */ +class PropertiesWebDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a measurement protocol secret. (measurementProtocolSecrets.create) + * + * @param string $parent Required. The parent resource where this secret will be + * created. Any type of stream (WebDataStream, IosAppDataStream, + * AndroidAppDataStream) may be a parent. Format: + * properties/{property}/webDataStreams/{webDataStream} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete) + * + * @param string $name Required. The name of the MeasurementProtocolSecret to + * delete. Format: properties/{property}/webDataStreams/{webDataStream}/measurem + * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream + * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent. + * @param array $optParams Optional parameters. + * @return GoogleProtobufEmpty + */ + public function delete($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class); + } + /** + * Lookup for a single "GA4" MeasurementProtocolSecret. + * (measurementProtocolSecrets.get) + * + * @param string $name Required. The name of the measurement protocol secret to + * lookup. Format: properties/{property}/webDataStreams/{webDataStream}/measurem + * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream + * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent. + * @param array $optParams Optional parameters. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function get($name, $optParams = []) + { + $params = ['name' => $name]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } + /** + * Returns child MeasurementProtocolSecrets under the specified parent Property. + * (measurementProtocolSecrets.listPropertiesWebDataStreamsMeasurementProtocolSe + * crets) + * + * @param string $parent Required. The resource name of the parent stream. Any + * type of stream (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be + * a parent. Format: properties/{property}/webDataStreams/{webDataStream}/measur + * ementProtocolSecrets + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of resources to return. If + * unspecified, at most 10 resources will be returned. The maximum value is 10. + * Higher values will be coerced to the maximum. + * @opt_param string pageToken A page token, received from a previous + * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the + * subsequent page. When paginating, all other parameters provided to + * `ListMeasurementProtocolSecrets` must match the call that provided the page + * token. + * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse + */ + public function listPropertiesWebDataStreamsMeasurementProtocolSecrets($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class); + } + /** + * Updates a measurement protocol secret. (measurementProtocolSecrets.patch) + * + * @param string $name Output only. Resource name of this secret. This secret + * may be a child of any type of stream. Format: properties/{property}/webDataSt + * reams/{webDataStream}/measurementProtocolSecrets/{measurementProtocolSecret} + * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to be updated. Omitted fields + * will not be updated. + * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesWebDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesWebDataStreamsMeasurementProtocolSecrets'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub.php new file mode 100644 index 000000000..93867189e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub.php @@ -0,0 +1,64 @@ + + * This is an invitation-only API.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class Ideahub extends \Google\Site_Kit_Dependencies\Google\Service +{ + public $platforms_properties_ideaActivities; + public $platforms_properties_ideaStates; + public $platforms_properties_ideas; + public $platforms_properties_locales; + public $platforms_properties_topicStates; + /** + * Constructs the internal representation of the Ideahub service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://ideahub.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v1beta'; + $this->serviceName = 'ideahub'; + $this->platforms_properties_ideaActivities = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaActivities($this, $this->serviceName, 'ideaActivities', ['methods' => ['create' => ['path' => 'v1beta/{+parent}/ideaActivities', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->platforms_properties_ideaStates = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaStates($this, $this->serviceName, 'ideaStates', ['methods' => ['patch' => ['path' => 'v1beta/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->platforms_properties_ideas = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeas($this, $this->serviceName, 'ideas', ['methods' => ['list' => ['path' => 'v1beta/{+parent}/ideas', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filter' => ['location' => 'query', 'type' => 'string'], 'orderBy' => ['location' => 'query', 'type' => 'string'], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->platforms_properties_locales = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesLocales($this, $this->serviceName, 'locales', ['methods' => ['list' => ['path' => 'v1beta/{+parent}/locales', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->platforms_properties_topicStates = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesTopicStates($this, $this->serviceName, 'topicStates', ['methods' => ['patch' => ['path' => 'v1beta/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaAvailableLocale.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaAvailableLocale.php new file mode 100644 index 000000000..dd6eedb4e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaAvailableLocale.php @@ -0,0 +1,42 @@ +locale = $locale; + } + public function getLocale() + { + return $this->locale; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaAvailableLocale::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaAvailableLocale'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdea.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdea.php new file mode 100644 index 000000000..3f7811bac --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdea.php @@ -0,0 +1,59 @@ +name = $name; + } + public function getName() + { + return $this->name; + } + public function setText($text) + { + $this->text = $text; + } + public function getText() + { + return $this->text; + } + /** + * @param GoogleSearchIdeahubV1alphaTopic[] + */ + public function setTopics($topics) + { + $this->topics = $topics; + } + /** + * @return GoogleSearchIdeahubV1alphaTopic[] + */ + public function getTopics() + { + return $this->topics; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaIdea::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaIdea'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaActivity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaActivity.php new file mode 100644 index 000000000..4f9d66396 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaActivity.php @@ -0,0 +1,70 @@ +ideas = $ideas; + } + public function getIdeas() + { + return $this->ideas; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setTopics($topics) + { + $this->topics = $topics; + } + public function getTopics() + { + return $this->topics; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setUri($uri) + { + $this->uri = $uri; + } + public function getUri() + { + return $this->uri; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaIdeaActivity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaIdeaActivity'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaState.php new file mode 100644 index 000000000..ebf84c274 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaState.php @@ -0,0 +1,51 @@ +dismissed = $dismissed; + } + public function getDismissed() + { + return $this->dismissed; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setSaved($saved) + { + $this->saved = $saved; + } + public function getSaved() + { + return $this->saved; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaIdeaState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaIdeaState'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListAvailableLocalesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListAvailableLocalesResponse.php new file mode 100644 index 000000000..586f46596 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListAvailableLocalesResponse.php @@ -0,0 +1,50 @@ +availableLocales = $availableLocales; + } + /** + * @return GoogleSearchIdeahubV1alphaAvailableLocale[] + */ + public function getAvailableLocales() + { + return $this->availableLocales; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaListAvailableLocalesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaListAvailableLocalesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListIdeasResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListIdeasResponse.php new file mode 100644 index 000000000..60a77e8ee --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListIdeasResponse.php @@ -0,0 +1,50 @@ +ideas = $ideas; + } + /** + * @return GoogleSearchIdeahubV1alphaIdea[] + */ + public function getIdeas() + { + return $this->ideas; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaListIdeasResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaListIdeasResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopic.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopic.php new file mode 100644 index 000000000..b9a16d7b7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopic.php @@ -0,0 +1,51 @@ +displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setMid($mid) + { + $this->mid = $mid; + } + public function getMid() + { + return $this->mid; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaTopic::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaTopic'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopicState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopicState.php new file mode 100644 index 000000000..45883bad8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopicState.php @@ -0,0 +1,51 @@ +dismissed = $dismissed; + } + public function getDismissed() + { + return $this->dismissed; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setSaved($saved) + { + $this->saved = $saved; + } + public function getSaved() + { + return $this->saved; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaTopicState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaTopicState'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaAvailableLocale.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaAvailableLocale.php new file mode 100644 index 000000000..9548d3729 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaAvailableLocale.php @@ -0,0 +1,60 @@ +locale = $locale; + } + /** + * @return string + */ + public function getLocale() + { + return $this->locale; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaAvailableLocale::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaAvailableLocale'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdea.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdea.php new file mode 100644 index 000000000..597c195ed --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdea.php @@ -0,0 +1,77 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setText($text) + { + $this->text = $text; + } + /** + * @return string + */ + public function getText() + { + return $this->text; + } + /** + * @param GoogleSearchIdeahubV1betaTopic[] + */ + public function setTopics($topics) + { + $this->topics = $topics; + } + /** + * @return GoogleSearchIdeahubV1betaTopic[] + */ + public function getTopics() + { + return $this->topics; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdea::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaIdea'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaActivity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaActivity.php new file mode 100644 index 000000000..693880e10 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaActivity.php @@ -0,0 +1,115 @@ +ideas = $ideas; + } + /** + * @return string[] + */ + public function getIdeas() + { + return $this->ideas; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string[] + */ + public function setTopics($topics) + { + $this->topics = $topics; + } + /** + * @return string[] + */ + public function getTopics() + { + return $this->topics; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUri($uri) + { + $this->uri = $uri; + } + /** + * @return string + */ + public function getUri() + { + return $this->uri; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaActivity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaIdeaActivity'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaState.php new file mode 100644 index 000000000..6e60c12a7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaState.php @@ -0,0 +1,78 @@ +dismissed = $dismissed; + } + /** + * @return bool + */ + public function getDismissed() + { + return $this->dismissed; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param bool + */ + public function setSaved($saved) + { + $this->saved = $saved; + } + /** + * @return bool + */ + public function getSaved() + { + return $this->saved; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaIdeaState'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListAvailableLocalesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListAvailableLocalesResponse.php new file mode 100644 index 000000000..b569d69f7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListAvailableLocalesResponse.php @@ -0,0 +1,59 @@ +availableLocales = $availableLocales; + } + /** + * @return GoogleSearchIdeahubV1betaAvailableLocale[] + */ + public function getAvailableLocales() + { + return $this->availableLocales; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListAvailableLocalesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaListAvailableLocalesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListIdeasResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListIdeasResponse.php new file mode 100644 index 000000000..b055b4db5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListIdeasResponse.php @@ -0,0 +1,59 @@ +ideas = $ideas; + } + /** + * @return GoogleSearchIdeahubV1betaIdea[] + */ + public function getIdeas() + { + return $this->ideas; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListIdeasResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaListIdeasResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopic.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopic.php new file mode 100644 index 000000000..cb1b7af23 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopic.php @@ -0,0 +1,78 @@ +displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setMid($mid) + { + $this->mid = $mid; + } + /** + * @return string + */ + public function getMid() + { + return $this->mid; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopic::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaTopic'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopicState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopicState.php new file mode 100644 index 000000000..e874a85ad --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopicState.php @@ -0,0 +1,78 @@ +dismissed = $dismissed; + } + /** + * @return bool + */ + public function getDismissed() + { + return $this->dismissed; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param bool + */ + public function setSaved($saved) + { + $this->saved = $saved; + } + /** + * @return bool + */ + public function getSaved() + { + return $this->saved; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopicState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaTopicState'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Ideas.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Ideas.php new file mode 100644 index 000000000..0d5fad0b7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Ideas.php @@ -0,0 +1,63 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $ideas = $ideahubService->ideas; + * + */ +class Ideas extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * List ideas for a given Creator and filter and sort options. (ideas.listIdeas) + * + * @param array $optParams Optional parameters. + * + * @opt_param string filter Allows filtering. Supported syntax: * Filter + * expressions are made up of one or more restrictions. * Restrictions are + * implicitly combined, as if the `AND` operator was always used. The `OR` + * operator is currently unsupported. * Supported functions: - `saved(bool)`: If + * set to true, fetches only saved ideas. If set to false, fetches all except + * saved ideas. Can't be simultaneously used with `dismissed(bool)`. - + * `dismissed(bool)`: If set to true, fetches only dismissed ideas. Can't be + * simultaneously used with `saved(bool)`. The `false` value is currently + * unsupported. Examples: * `saved(true)` * `saved(false)` * `dismissed(true)` + * The length of this field should be no more than 500 characters. + * @opt_param string orderBy Order semantics described below. + * @opt_param int pageSize The maximum number of ideas per page. If unspecified, + * at most 10 ideas will be returned. The maximum value is 2000; values above + * 2000 will be coerced to 2000. + * @opt_param string pageToken Used to fetch next page. + * @opt_param string parent If defined, specifies the creator for which to + * filter by. Format: publishers/{publisher}/properties/{property} + * @return GoogleSearchIdeahubV1alphaListIdeasResponse + */ + public function listIdeas($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaListIdeasResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\Ideas::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_Ideas'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Platforms.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Platforms.php new file mode 100644 index 000000000..e12f1fe13 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Platforms.php @@ -0,0 +1,32 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $platforms = $ideahubService->platforms; + * + */ +class Platforms extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\Platforms::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_Platforms'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsProperties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsProperties.php new file mode 100644 index 000000000..05ffed9f1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsProperties.php @@ -0,0 +1,32 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $properties = $ideahubService->properties; + * + */ +class PlatformsProperties extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsProperties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsProperties'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaActivities.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaActivities.php new file mode 100644 index 000000000..1af93f7de --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaActivities.php @@ -0,0 +1,48 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $ideaActivities = $ideahubService->ideaActivities; + * + */ +class PlatformsPropertiesIdeaActivities extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates an idea activity entry. (ideaActivities.create) + * + * @param string $parent Required. The parent resource where this idea activity + * will be created. Format: platforms/{platform}/property/{property} + * @param GoogleSearchIdeahubV1betaIdeaActivity $postBody + * @param array $optParams Optional parameters. + * @return GoogleSearchIdeahubV1betaIdeaActivity + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaActivity $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaActivity::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaActivities::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesIdeaActivities'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaStates.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaStates.php new file mode 100644 index 000000000..d439c63e2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaStates.php @@ -0,0 +1,50 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $ideaStates = $ideahubService->ideaStates; + * + */ +class PlatformsPropertiesIdeaStates extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Update an idea state resource. (ideaStates.patch) + * + * @param string $name Unique identifier for the idea state. Format: + * platforms/{platform}/properties/{property}/ideaStates/{idea_state} + * @param GoogleSearchIdeahubV1betaIdeaState $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to be updated. + * @return GoogleSearchIdeahubV1betaIdeaState + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaState $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaState::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaStates::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesIdeaStates'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeas.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeas.php new file mode 100644 index 000000000..80d3778c2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeas.php @@ -0,0 +1,64 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $ideas = $ideahubService->ideas; + * + */ +class PlatformsPropertiesIdeas extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * List ideas for a given Creator and filter and sort options. + * (ideas.listPlatformsPropertiesIdeas) + * + * @param string $parent Required. If defined, specifies the creator for which + * to filter by. Format: publishers/{publisher}/properties/{property} + * @param array $optParams Optional parameters. + * + * @opt_param string filter Allows filtering. Supported syntax: * Filter + * expressions are made up of one or more restrictions. * Restrictions are + * implicitly combined, as if the `AND` operator was always used. The `OR` + * operator is currently unsupported. * Supported functions: - `saved(bool)`: If + * set to true, fetches only saved ideas. If set to false, fetches all except + * saved ideas. Can't be simultaneously used with `dismissed(bool)`. - + * `dismissed(bool)`: If set to true, fetches only dismissed ideas. Can't be + * simultaneously used with `saved(bool)`. The `false` value is currently + * unsupported. Examples: * `saved(true)` * `saved(false)` * `dismissed(true)` + * The length of this field should be no more than 500 characters. + * @opt_param string orderBy Order semantics described below. + * @opt_param int pageSize The maximum number of ideas per page. If unspecified, + * at most 10 ideas will be returned. The maximum value is 2000; values above + * 2000 will be coerced to 2000. + * @opt_param string pageToken Used to fetch next page. + * @return GoogleSearchIdeahubV1betaListIdeasResponse + */ + public function listPlatformsPropertiesIdeas($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListIdeasResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeas::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesIdeas'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesLocales.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesLocales.php new file mode 100644 index 000000000..39b23140d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesLocales.php @@ -0,0 +1,56 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $locales = $ideahubService->locales; + * + */ +class PlatformsPropertiesLocales extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Returns which locales ideas are available in for a given Creator. + * (locales.listPlatformsPropertiesLocales) + * + * @param string $parent Required. The web property to check idea availability + * for Format: platforms/{platform}/property/{property} + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The maximum number of locales to return. The service + * may return fewer than this value. If unspecified, at most 100 locales will be + * returned. The maximum value is 100; values above 100 will be coerced to 100. + * @opt_param string pageToken A page token, received from a previous + * `ListAvailableLocales` call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `ListAvailableLocales` must + * match the call that provided the page token. + * @return GoogleSearchIdeahubV1betaListAvailableLocalesResponse + */ + public function listPlatformsPropertiesLocales($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListAvailableLocalesResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesLocales::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesLocales'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesTopicStates.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesTopicStates.php new file mode 100644 index 000000000..ca1751ff9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesTopicStates.php @@ -0,0 +1,50 @@ + + * $ideahubService = new Google\Service\Ideahub(...); + * $topicStates = $ideahubService->topicStates; + * + */ +class PlatformsPropertiesTopicStates extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Update a topic state resource. (topicStates.patch) + * + * @param string $name Unique identifier for the topic state. Format: + * platforms/{platform}/properties/{property}/topicStates/{topic_state} + * @param GoogleSearchIdeahubV1betaTopicState $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string updateMask The list of fields to be updated. + * @return GoogleSearchIdeahubV1betaTopicState + */ + public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopicState $postBody, $optParams = []) + { + $params = ['name' => $name, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopicState::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesTopicStates::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesTopicStates'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights.php new file mode 100644 index 000000000..25137379a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights.php @@ -0,0 +1,61 @@ + + * The PageSpeed Insights API lets you analyze the performance of your website + * with a simple API. It offers tailored suggestions for how you can optimize + * your site, and lets you easily integrate PageSpeed Insights analysis into + * your development tools and workflow.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class PagespeedInsights extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** Associate you with your personal info on Google. */ + const OPENID = "openid"; + public $pagespeedapi; + /** + * Constructs the internal representation of the PagespeedInsights service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://pagespeedonline.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v5'; + $this->serviceName = 'pagespeedonline'; + $this->pagespeedapi = new \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Resource\Pagespeedapi($this, $this->serviceName, 'pagespeedapi', ['methods' => ['runpagespeed' => ['path' => 'pagespeedonline/v5/runPagespeed', 'httpMethod' => 'GET', 'parameters' => ['url' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'captchaToken' => ['location' => 'query', 'type' => 'string'], 'category' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'locale' => ['location' => 'query', 'type' => 'string'], 'strategy' => ['location' => 'query', 'type' => 'string'], 'utm_campaign' => ['location' => 'query', 'type' => 'string'], 'utm_source' => ['location' => 'query', 'type' => 'string']]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/AuditRefs.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/AuditRefs.php new file mode 100644 index 000000000..15595874e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/AuditRefs.php @@ -0,0 +1,106 @@ +acronym = $acronym; + } + /** + * @return string + */ + public function getAcronym() + { + return $this->acronym; + } + /** + * @param string + */ + public function setGroup($group) + { + $this->group = $group; + } + /** + * @return string + */ + public function getGroup() + { + return $this->group; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string[] + */ + public function setRelevantAudits($relevantAudits) + { + $this->relevantAudits = $relevantAudits; + } + /** + * @return string[] + */ + public function getRelevantAudits() + { + return $this->relevantAudits; + } + public function setWeight($weight) + { + $this->weight = $weight; + } + public function getWeight() + { + return $this->weight; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\AuditRefs::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_AuditRefs'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Bucket.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Bucket.php new file mode 100644 index 000000000..6d1051823 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Bucket.php @@ -0,0 +1,69 @@ +max = $max; + } + /** + * @return int + */ + public function getMax() + { + return $this->max; + } + /** + * @param int + */ + public function setMin($min) + { + $this->min = $min; + } + /** + * @return int + */ + public function getMin() + { + return $this->min; + } + public function setProportion($proportion) + { + $this->proportion = $proportion; + } + public function getProportion() + { + return $this->proportion; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Bucket::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Bucket'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Categories.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Categories.php new file mode 100644 index 000000000..7f4f42a05 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Categories.php @@ -0,0 +1,105 @@ + "best-practices"]; + protected $accessibilityType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class; + protected $accessibilityDataType = ''; + protected $bestPracticesType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class; + protected $bestPracticesDataType = ''; + protected $performanceType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class; + protected $performanceDataType = ''; + protected $pwaType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class; + protected $pwaDataType = ''; + protected $seoType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class; + protected $seoDataType = ''; + /** + * @param LighthouseCategoryV5 + */ + public function setAccessibility(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $accessibility) + { + $this->accessibility = $accessibility; + } + /** + * @return LighthouseCategoryV5 + */ + public function getAccessibility() + { + return $this->accessibility; + } + /** + * @param LighthouseCategoryV5 + */ + public function setBestPractices(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $bestPractices) + { + $this->bestPractices = $bestPractices; + } + /** + * @return LighthouseCategoryV5 + */ + public function getBestPractices() + { + return $this->bestPractices; + } + /** + * @param LighthouseCategoryV5 + */ + public function setPerformance(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $performance) + { + $this->performance = $performance; + } + /** + * @return LighthouseCategoryV5 + */ + public function getPerformance() + { + return $this->performance; + } + /** + * @param LighthouseCategoryV5 + */ + public function setPwa(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $pwa) + { + $this->pwa = $pwa; + } + /** + * @return LighthouseCategoryV5 + */ + public function getPwa() + { + return $this->pwa; + } + /** + * @param LighthouseCategoryV5 + */ + public function setSeo(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $seo) + { + $this->seo = $seo; + } + /** + * @return LighthouseCategoryV5 + */ + public function getSeo() + { + return $this->seo; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Categories::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Categories'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/CategoryGroupV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/CategoryGroupV5.php new file mode 100644 index 000000000..6ff62e306 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/CategoryGroupV5.php @@ -0,0 +1,60 @@ +description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setTitle($title) + { + $this->title = $title; + } + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\CategoryGroupV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_CategoryGroupV5'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/ConfigSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/ConfigSettings.php new file mode 100644 index 000000000..1e7937092 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/ConfigSettings.php @@ -0,0 +1,114 @@ +channel = $channel; + } + /** + * @return string + */ + public function getChannel() + { + return $this->channel; + } + /** + * @param string + */ + public function setEmulatedFormFactor($emulatedFormFactor) + { + $this->emulatedFormFactor = $emulatedFormFactor; + } + /** + * @return string + */ + public function getEmulatedFormFactor() + { + return $this->emulatedFormFactor; + } + /** + * @param string + */ + public function setFormFactor($formFactor) + { + $this->formFactor = $formFactor; + } + /** + * @return string + */ + public function getFormFactor() + { + return $this->formFactor; + } + /** + * @param string + */ + public function setLocale($locale) + { + $this->locale = $locale; + } + /** + * @return string + */ + public function getLocale() + { + return $this->locale; + } + /** + * @param array + */ + public function setOnlyCategories($onlyCategories) + { + $this->onlyCategories = $onlyCategories; + } + /** + * @return array + */ + public function getOnlyCategories() + { + return $this->onlyCategories; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\ConfigSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_ConfigSettings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Environment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Environment.php new file mode 100644 index 000000000..b16cd9e34 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Environment.php @@ -0,0 +1,69 @@ +benchmarkIndex = $benchmarkIndex; + } + public function getBenchmarkIndex() + { + return $this->benchmarkIndex; + } + /** + * @param string + */ + public function setHostUserAgent($hostUserAgent) + { + $this->hostUserAgent = $hostUserAgent; + } + /** + * @return string + */ + public function getHostUserAgent() + { + return $this->hostUserAgent; + } + /** + * @param string + */ + public function setNetworkUserAgent($networkUserAgent) + { + $this->networkUserAgent = $networkUserAgent; + } + /** + * @return string + */ + public function getNetworkUserAgent() + { + return $this->networkUserAgent; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Environment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Environment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/I18n.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/I18n.php new file mode 100644 index 000000000..a5ac2ae06 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/I18n.php @@ -0,0 +1,40 @@ +rendererFormattedStrings = $rendererFormattedStrings; + } + /** + * @return RendererFormattedStrings + */ + public function getRendererFormattedStrings() + { + return $this->rendererFormattedStrings; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\I18n::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_I18n'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseAuditResultV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseAuditResultV5.php new file mode 100644 index 000000000..b7123eec7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseAuditResultV5.php @@ -0,0 +1,231 @@ +description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param array[] + */ + public function setDetails($details) + { + $this->details = $details; + } + /** + * @return array[] + */ + public function getDetails() + { + return $this->details; + } + /** + * @param string + */ + public function setDisplayValue($displayValue) + { + $this->displayValue = $displayValue; + } + /** + * @return string + */ + public function getDisplayValue() + { + return $this->displayValue; + } + /** + * @param string + */ + public function setErrorMessage($errorMessage) + { + $this->errorMessage = $errorMessage; + } + /** + * @return string + */ + public function getErrorMessage() + { + return $this->errorMessage; + } + /** + * @param string + */ + public function setExplanation($explanation) + { + $this->explanation = $explanation; + } + /** + * @return string + */ + public function getExplanation() + { + return $this->explanation; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setNumericUnit($numericUnit) + { + $this->numericUnit = $numericUnit; + } + /** + * @return string + */ + public function getNumericUnit() + { + return $this->numericUnit; + } + public function setNumericValue($numericValue) + { + $this->numericValue = $numericValue; + } + public function getNumericValue() + { + return $this->numericValue; + } + /** + * @param array + */ + public function setScore($score) + { + $this->score = $score; + } + /** + * @return array + */ + public function getScore() + { + return $this->score; + } + /** + * @param string + */ + public function setScoreDisplayMode($scoreDisplayMode) + { + $this->scoreDisplayMode = $scoreDisplayMode; + } + /** + * @return string + */ + public function getScoreDisplayMode() + { + return $this->scoreDisplayMode; + } + /** + * @param string + */ + public function setTitle($title) + { + $this->title = $title; + } + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } + /** + * @param array + */ + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + /** + * @return array + */ + public function getWarnings() + { + return $this->warnings; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseAuditResultV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_LighthouseAuditResultV5'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseCategoryV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseCategoryV5.php new file mode 100644 index 000000000..aa8dbdc76 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseCategoryV5.php @@ -0,0 +1,131 @@ +auditRefs = $auditRefs; + } + /** + * @return AuditRefs[] + */ + public function getAuditRefs() + { + return $this->auditRefs; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setManualDescription($manualDescription) + { + $this->manualDescription = $manualDescription; + } + /** + * @return string + */ + public function getManualDescription() + { + return $this->manualDescription; + } + /** + * @param array + */ + public function setScore($score) + { + $this->score = $score; + } + /** + * @return array + */ + public function getScore() + { + return $this->score; + } + /** + * @param string + */ + public function setTitle($title) + { + $this->title = $title; + } + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_LighthouseCategoryV5'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseResultV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseResultV5.php new file mode 100644 index 000000000..8c56696c4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseResultV5.php @@ -0,0 +1,277 @@ +audits = $audits; + } + /** + * @return LighthouseAuditResultV5[] + */ + public function getAudits() + { + return $this->audits; + } + /** + * @param Categories + */ + public function setCategories(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Categories $categories) + { + $this->categories = $categories; + } + /** + * @return Categories + */ + public function getCategories() + { + return $this->categories; + } + /** + * @param CategoryGroupV5[] + */ + public function setCategoryGroups($categoryGroups) + { + $this->categoryGroups = $categoryGroups; + } + /** + * @return CategoryGroupV5[] + */ + public function getCategoryGroups() + { + return $this->categoryGroups; + } + /** + * @param ConfigSettings + */ + public function setConfigSettings(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\ConfigSettings $configSettings) + { + $this->configSettings = $configSettings; + } + /** + * @return ConfigSettings + */ + public function getConfigSettings() + { + return $this->configSettings; + } + /** + * @param Environment + */ + public function setEnvironment(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Environment $environment) + { + $this->environment = $environment; + } + /** + * @return Environment + */ + public function getEnvironment() + { + return $this->environment; + } + /** + * @param string + */ + public function setFetchTime($fetchTime) + { + $this->fetchTime = $fetchTime; + } + /** + * @return string + */ + public function getFetchTime() + { + return $this->fetchTime; + } + /** + * @param string + */ + public function setFinalUrl($finalUrl) + { + $this->finalUrl = $finalUrl; + } + /** + * @return string + */ + public function getFinalUrl() + { + return $this->finalUrl; + } + /** + * @param I18n + */ + public function setI18n(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\I18n $i18n) + { + $this->i18n = $i18n; + } + /** + * @return I18n + */ + public function getI18n() + { + return $this->i18n; + } + /** + * @param string + */ + public function setLighthouseVersion($lighthouseVersion) + { + $this->lighthouseVersion = $lighthouseVersion; + } + /** + * @return string + */ + public function getLighthouseVersion() + { + return $this->lighthouseVersion; + } + /** + * @param string + */ + public function setRequestedUrl($requestedUrl) + { + $this->requestedUrl = $requestedUrl; + } + /** + * @return string + */ + public function getRequestedUrl() + { + return $this->requestedUrl; + } + /** + * @param array[] + */ + public function setRunWarnings($runWarnings) + { + $this->runWarnings = $runWarnings; + } + /** + * @return array[] + */ + public function getRunWarnings() + { + return $this->runWarnings; + } + /** + * @param RuntimeError + */ + public function setRuntimeError(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\RuntimeError $runtimeError) + { + $this->runtimeError = $runtimeError; + } + /** + * @return RuntimeError + */ + public function getRuntimeError() + { + return $this->runtimeError; + } + /** + * @param StackPack[] + */ + public function setStackPacks($stackPacks) + { + $this->stackPacks = $stackPacks; + } + /** + * @return StackPack[] + */ + public function getStackPacks() + { + return $this->stackPacks; + } + /** + * @param Timing + */ + public function setTiming(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Timing $timing) + { + $this->timing = $timing; + } + /** + * @return Timing + */ + public function getTiming() + { + return $this->timing; + } + /** + * @param string + */ + public function setUserAgent($userAgent) + { + $this->userAgent = $userAgent; + } + /** + * @return string + */ + public function getUserAgent() + { + return $this->userAgent; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseResultV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_LighthouseResultV5'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiLoadingExperienceV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiLoadingExperienceV5.php new file mode 100644 index 000000000..63b54ff6c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiLoadingExperienceV5.php @@ -0,0 +1,113 @@ + "initial_url", "originFallback" => "origin_fallback", "overallCategory" => "overall_category"]; + /** + * @var string + */ + public $id; + /** + * @var string + */ + public $initialUrl; + protected $metricsType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\UserPageLoadMetricV5::class; + protected $metricsDataType = 'map'; + /** + * @var bool + */ + public $originFallback; + /** + * @var string + */ + public $overallCategory; + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInitialUrl($initialUrl) + { + $this->initialUrl = $initialUrl; + } + /** + * @return string + */ + public function getInitialUrl() + { + return $this->initialUrl; + } + /** + * @param UserPageLoadMetricV5[] + */ + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + /** + * @return UserPageLoadMetricV5[] + */ + public function getMetrics() + { + return $this->metrics; + } + /** + * @param bool + */ + public function setOriginFallback($originFallback) + { + $this->originFallback = $originFallback; + } + /** + * @return bool + */ + public function getOriginFallback() + { + return $this->originFallback; + } + /** + * @param string + */ + public function setOverallCategory($overallCategory) + { + $this->overallCategory = $overallCategory; + } + /** + * @return string + */ + public function getOverallCategory() + { + return $this->overallCategory; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiLoadingExperienceV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_PagespeedApiLoadingExperienceV5'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiPagespeedResponseV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiPagespeedResponseV5.php new file mode 100644 index 000000000..5260bc000 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiPagespeedResponseV5.php @@ -0,0 +1,160 @@ +analysisUTCTimestamp = $analysisUTCTimestamp; + } + /** + * @return string + */ + public function getAnalysisUTCTimestamp() + { + return $this->analysisUTCTimestamp; + } + /** + * @param string + */ + public function setCaptchaResult($captchaResult) + { + $this->captchaResult = $captchaResult; + } + /** + * @return string + */ + public function getCaptchaResult() + { + return $this->captchaResult; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setKind($kind) + { + $this->kind = $kind; + } + /** + * @return string + */ + public function getKind() + { + return $this->kind; + } + /** + * @param LighthouseResultV5 + */ + public function setLighthouseResult(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseResultV5 $lighthouseResult) + { + $this->lighthouseResult = $lighthouseResult; + } + /** + * @return LighthouseResultV5 + */ + public function getLighthouseResult() + { + return $this->lighthouseResult; + } + /** + * @param PagespeedApiLoadingExperienceV5 + */ + public function setLoadingExperience(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiLoadingExperienceV5 $loadingExperience) + { + $this->loadingExperience = $loadingExperience; + } + /** + * @return PagespeedApiLoadingExperienceV5 + */ + public function getLoadingExperience() + { + return $this->loadingExperience; + } + /** + * @param PagespeedApiLoadingExperienceV5 + */ + public function setOriginLoadingExperience(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiLoadingExperienceV5 $originLoadingExperience) + { + $this->originLoadingExperience = $originLoadingExperience; + } + /** + * @return PagespeedApiLoadingExperienceV5 + */ + public function getOriginLoadingExperience() + { + return $this->originLoadingExperience; + } + /** + * @param PagespeedVersion + */ + public function setVersion(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedVersion $version) + { + $this->version = $version; + } + /** + * @return PagespeedVersion + */ + public function getVersion() + { + return $this->version; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiPagespeedResponseV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_PagespeedApiPagespeedResponseV5'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedVersion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedVersion.php new file mode 100644 index 000000000..2b7a7a853 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedVersion.php @@ -0,0 +1,60 @@ +major = $major; + } + /** + * @return string + */ + public function getMajor() + { + return $this->major; + } + /** + * @param string + */ + public function setMinor($minor) + { + $this->minor = $minor; + } + /** + * @return string + */ + public function getMinor() + { + return $this->minor; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedVersion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_PagespeedVersion'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RendererFormattedStrings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RendererFormattedStrings.php new file mode 100644 index 000000000..8a5bb8ed5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RendererFormattedStrings.php @@ -0,0 +1,888 @@ +auditGroupExpandTooltip = $auditGroupExpandTooltip; + } + /** + * @return string + */ + public function getAuditGroupExpandTooltip() + { + return $this->auditGroupExpandTooltip; + } + /** + * @param string + */ + public function setCalculatorLink($calculatorLink) + { + $this->calculatorLink = $calculatorLink; + } + /** + * @return string + */ + public function getCalculatorLink() + { + return $this->calculatorLink; + } + /** + * @param string + */ + public function setCrcInitialNavigation($crcInitialNavigation) + { + $this->crcInitialNavigation = $crcInitialNavigation; + } + /** + * @return string + */ + public function getCrcInitialNavigation() + { + return $this->crcInitialNavigation; + } + /** + * @param string + */ + public function setCrcLongestDurationLabel($crcLongestDurationLabel) + { + $this->crcLongestDurationLabel = $crcLongestDurationLabel; + } + /** + * @return string + */ + public function getCrcLongestDurationLabel() + { + return $this->crcLongestDurationLabel; + } + /** + * @param string + */ + public function setDropdownCopyJSON($dropdownCopyJSON) + { + $this->dropdownCopyJSON = $dropdownCopyJSON; + } + /** + * @return string + */ + public function getDropdownCopyJSON() + { + return $this->dropdownCopyJSON; + } + /** + * @param string + */ + public function setDropdownDarkTheme($dropdownDarkTheme) + { + $this->dropdownDarkTheme = $dropdownDarkTheme; + } + /** + * @return string + */ + public function getDropdownDarkTheme() + { + return $this->dropdownDarkTheme; + } + /** + * @param string + */ + public function setDropdownPrintExpanded($dropdownPrintExpanded) + { + $this->dropdownPrintExpanded = $dropdownPrintExpanded; + } + /** + * @return string + */ + public function getDropdownPrintExpanded() + { + return $this->dropdownPrintExpanded; + } + /** + * @param string + */ + public function setDropdownPrintSummary($dropdownPrintSummary) + { + $this->dropdownPrintSummary = $dropdownPrintSummary; + } + /** + * @return string + */ + public function getDropdownPrintSummary() + { + return $this->dropdownPrintSummary; + } + /** + * @param string + */ + public function setDropdownSaveGist($dropdownSaveGist) + { + $this->dropdownSaveGist = $dropdownSaveGist; + } + /** + * @return string + */ + public function getDropdownSaveGist() + { + return $this->dropdownSaveGist; + } + /** + * @param string + */ + public function setDropdownSaveHTML($dropdownSaveHTML) + { + $this->dropdownSaveHTML = $dropdownSaveHTML; + } + /** + * @return string + */ + public function getDropdownSaveHTML() + { + return $this->dropdownSaveHTML; + } + /** + * @param string + */ + public function setDropdownSaveJSON($dropdownSaveJSON) + { + $this->dropdownSaveJSON = $dropdownSaveJSON; + } + /** + * @return string + */ + public function getDropdownSaveJSON() + { + return $this->dropdownSaveJSON; + } + /** + * @param string + */ + public function setDropdownViewer($dropdownViewer) + { + $this->dropdownViewer = $dropdownViewer; + } + /** + * @return string + */ + public function getDropdownViewer() + { + return $this->dropdownViewer; + } + /** + * @param string + */ + public function setErrorLabel($errorLabel) + { + $this->errorLabel = $errorLabel; + } + /** + * @return string + */ + public function getErrorLabel() + { + return $this->errorLabel; + } + /** + * @param string + */ + public function setErrorMissingAuditInfo($errorMissingAuditInfo) + { + $this->errorMissingAuditInfo = $errorMissingAuditInfo; + } + /** + * @return string + */ + public function getErrorMissingAuditInfo() + { + return $this->errorMissingAuditInfo; + } + /** + * @param string + */ + public function setFooterIssue($footerIssue) + { + $this->footerIssue = $footerIssue; + } + /** + * @return string + */ + public function getFooterIssue() + { + return $this->footerIssue; + } + /** + * @param string + */ + public function setLabDataTitle($labDataTitle) + { + $this->labDataTitle = $labDataTitle; + } + /** + * @return string + */ + public function getLabDataTitle() + { + return $this->labDataTitle; + } + /** + * @param string + */ + public function setLsPerformanceCategoryDescription($lsPerformanceCategoryDescription) + { + $this->lsPerformanceCategoryDescription = $lsPerformanceCategoryDescription; + } + /** + * @return string + */ + public function getLsPerformanceCategoryDescription() + { + return $this->lsPerformanceCategoryDescription; + } + /** + * @param string + */ + public function setManualAuditsGroupTitle($manualAuditsGroupTitle) + { + $this->manualAuditsGroupTitle = $manualAuditsGroupTitle; + } + /** + * @return string + */ + public function getManualAuditsGroupTitle() + { + return $this->manualAuditsGroupTitle; + } + /** + * @param string + */ + public function setNotApplicableAuditsGroupTitle($notApplicableAuditsGroupTitle) + { + $this->notApplicableAuditsGroupTitle = $notApplicableAuditsGroupTitle; + } + /** + * @return string + */ + public function getNotApplicableAuditsGroupTitle() + { + return $this->notApplicableAuditsGroupTitle; + } + /** + * @param string + */ + public function setOpportunityResourceColumnLabel($opportunityResourceColumnLabel) + { + $this->opportunityResourceColumnLabel = $opportunityResourceColumnLabel; + } + /** + * @return string + */ + public function getOpportunityResourceColumnLabel() + { + return $this->opportunityResourceColumnLabel; + } + /** + * @param string + */ + public function setOpportunitySavingsColumnLabel($opportunitySavingsColumnLabel) + { + $this->opportunitySavingsColumnLabel = $opportunitySavingsColumnLabel; + } + /** + * @return string + */ + public function getOpportunitySavingsColumnLabel() + { + return $this->opportunitySavingsColumnLabel; + } + /** + * @param string + */ + public function setPassedAuditsGroupTitle($passedAuditsGroupTitle) + { + $this->passedAuditsGroupTitle = $passedAuditsGroupTitle; + } + /** + * @return string + */ + public function getPassedAuditsGroupTitle() + { + return $this->passedAuditsGroupTitle; + } + /** + * @param string + */ + public function setRuntimeDesktopEmulation($runtimeDesktopEmulation) + { + $this->runtimeDesktopEmulation = $runtimeDesktopEmulation; + } + /** + * @return string + */ + public function getRuntimeDesktopEmulation() + { + return $this->runtimeDesktopEmulation; + } + /** + * @param string + */ + public function setRuntimeMobileEmulation($runtimeMobileEmulation) + { + $this->runtimeMobileEmulation = $runtimeMobileEmulation; + } + /** + * @return string + */ + public function getRuntimeMobileEmulation() + { + return $this->runtimeMobileEmulation; + } + /** + * @param string + */ + public function setRuntimeNoEmulation($runtimeNoEmulation) + { + $this->runtimeNoEmulation = $runtimeNoEmulation; + } + /** + * @return string + */ + public function getRuntimeNoEmulation() + { + return $this->runtimeNoEmulation; + } + /** + * @param string + */ + public function setRuntimeSettingsAxeVersion($runtimeSettingsAxeVersion) + { + $this->runtimeSettingsAxeVersion = $runtimeSettingsAxeVersion; + } + /** + * @return string + */ + public function getRuntimeSettingsAxeVersion() + { + return $this->runtimeSettingsAxeVersion; + } + /** + * @param string + */ + public function setRuntimeSettingsBenchmark($runtimeSettingsBenchmark) + { + $this->runtimeSettingsBenchmark = $runtimeSettingsBenchmark; + } + /** + * @return string + */ + public function getRuntimeSettingsBenchmark() + { + return $this->runtimeSettingsBenchmark; + } + /** + * @param string + */ + public function setRuntimeSettingsCPUThrottling($runtimeSettingsCPUThrottling) + { + $this->runtimeSettingsCPUThrottling = $runtimeSettingsCPUThrottling; + } + /** + * @return string + */ + public function getRuntimeSettingsCPUThrottling() + { + return $this->runtimeSettingsCPUThrottling; + } + /** + * @param string + */ + public function setRuntimeSettingsChannel($runtimeSettingsChannel) + { + $this->runtimeSettingsChannel = $runtimeSettingsChannel; + } + /** + * @return string + */ + public function getRuntimeSettingsChannel() + { + return $this->runtimeSettingsChannel; + } + /** + * @param string + */ + public function setRuntimeSettingsDevice($runtimeSettingsDevice) + { + $this->runtimeSettingsDevice = $runtimeSettingsDevice; + } + /** + * @return string + */ + public function getRuntimeSettingsDevice() + { + return $this->runtimeSettingsDevice; + } + /** + * @param string + */ + public function setRuntimeSettingsFetchTime($runtimeSettingsFetchTime) + { + $this->runtimeSettingsFetchTime = $runtimeSettingsFetchTime; + } + /** + * @return string + */ + public function getRuntimeSettingsFetchTime() + { + return $this->runtimeSettingsFetchTime; + } + /** + * @param string + */ + public function setRuntimeSettingsNetworkThrottling($runtimeSettingsNetworkThrottling) + { + $this->runtimeSettingsNetworkThrottling = $runtimeSettingsNetworkThrottling; + } + /** + * @return string + */ + public function getRuntimeSettingsNetworkThrottling() + { + return $this->runtimeSettingsNetworkThrottling; + } + /** + * @param string + */ + public function setRuntimeSettingsTitle($runtimeSettingsTitle) + { + $this->runtimeSettingsTitle = $runtimeSettingsTitle; + } + /** + * @return string + */ + public function getRuntimeSettingsTitle() + { + return $this->runtimeSettingsTitle; + } + /** + * @param string + */ + public function setRuntimeSettingsUA($runtimeSettingsUA) + { + $this->runtimeSettingsUA = $runtimeSettingsUA; + } + /** + * @return string + */ + public function getRuntimeSettingsUA() + { + return $this->runtimeSettingsUA; + } + /** + * @param string + */ + public function setRuntimeSettingsUANetwork($runtimeSettingsUANetwork) + { + $this->runtimeSettingsUANetwork = $runtimeSettingsUANetwork; + } + /** + * @return string + */ + public function getRuntimeSettingsUANetwork() + { + return $this->runtimeSettingsUANetwork; + } + /** + * @param string + */ + public function setRuntimeSettingsUrl($runtimeSettingsUrl) + { + $this->runtimeSettingsUrl = $runtimeSettingsUrl; + } + /** + * @return string + */ + public function getRuntimeSettingsUrl() + { + return $this->runtimeSettingsUrl; + } + /** + * @param string + */ + public function setRuntimeUnknown($runtimeUnknown) + { + $this->runtimeUnknown = $runtimeUnknown; + } + /** + * @return string + */ + public function getRuntimeUnknown() + { + return $this->runtimeUnknown; + } + /** + * @param string + */ + public function setScorescaleLabel($scorescaleLabel) + { + $this->scorescaleLabel = $scorescaleLabel; + } + /** + * @return string + */ + public function getScorescaleLabel() + { + return $this->scorescaleLabel; + } + /** + * @param string + */ + public function setShowRelevantAudits($showRelevantAudits) + { + $this->showRelevantAudits = $showRelevantAudits; + } + /** + * @return string + */ + public function getShowRelevantAudits() + { + return $this->showRelevantAudits; + } + /** + * @param string + */ + public function setSnippetCollapseButtonLabel($snippetCollapseButtonLabel) + { + $this->snippetCollapseButtonLabel = $snippetCollapseButtonLabel; + } + /** + * @return string + */ + public function getSnippetCollapseButtonLabel() + { + return $this->snippetCollapseButtonLabel; + } + /** + * @param string + */ + public function setSnippetExpandButtonLabel($snippetExpandButtonLabel) + { + $this->snippetExpandButtonLabel = $snippetExpandButtonLabel; + } + /** + * @return string + */ + public function getSnippetExpandButtonLabel() + { + return $this->snippetExpandButtonLabel; + } + /** + * @param string + */ + public function setThirdPartyResourcesLabel($thirdPartyResourcesLabel) + { + $this->thirdPartyResourcesLabel = $thirdPartyResourcesLabel; + } + /** + * @return string + */ + public function getThirdPartyResourcesLabel() + { + return $this->thirdPartyResourcesLabel; + } + /** + * @param string + */ + public function setThrottlingProvided($throttlingProvided) + { + $this->throttlingProvided = $throttlingProvided; + } + /** + * @return string + */ + public function getThrottlingProvided() + { + return $this->throttlingProvided; + } + /** + * @param string + */ + public function setToplevelWarningsMessage($toplevelWarningsMessage) + { + $this->toplevelWarningsMessage = $toplevelWarningsMessage; + } + /** + * @return string + */ + public function getToplevelWarningsMessage() + { + return $this->toplevelWarningsMessage; + } + /** + * @param string + */ + public function setVarianceDisclaimer($varianceDisclaimer) + { + $this->varianceDisclaimer = $varianceDisclaimer; + } + /** + * @return string + */ + public function getVarianceDisclaimer() + { + return $this->varianceDisclaimer; + } + /** + * @param string + */ + public function setViewTreemapLabel($viewTreemapLabel) + { + $this->viewTreemapLabel = $viewTreemapLabel; + } + /** + * @return string + */ + public function getViewTreemapLabel() + { + return $this->viewTreemapLabel; + } + /** + * @param string + */ + public function setWarningAuditsGroupTitle($warningAuditsGroupTitle) + { + $this->warningAuditsGroupTitle = $warningAuditsGroupTitle; + } + /** + * @return string + */ + public function getWarningAuditsGroupTitle() + { + return $this->warningAuditsGroupTitle; + } + /** + * @param string + */ + public function setWarningHeader($warningHeader) + { + $this->warningHeader = $warningHeader; + } + /** + * @return string + */ + public function getWarningHeader() + { + return $this->warningHeader; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\RendererFormattedStrings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_RendererFormattedStrings'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Resource/Pagespeedapi.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Resource/Pagespeedapi.php new file mode 100644 index 000000000..a228c5353 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Resource/Pagespeedapi.php @@ -0,0 +1,58 @@ + + * $pagespeedonlineService = new Google\Service\PagespeedInsights(...); + * $pagespeedapi = $pagespeedonlineService->pagespeedapi; + * + */ +class Pagespeedapi extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Runs PageSpeed analysis on the page at the specified URL, and returns + * PageSpeed scores, a list of suggestions to make that page faster, and other + * information. (pagespeedapi.runpagespeed) + * + * @param string $url Required. The URL to fetch and analyze + * @param array $optParams Optional parameters. + * + * @opt_param string captchaToken The captcha token passed when filling out a + * captcha. + * @opt_param string category A Lighthouse category to run; if none are given, + * only Performance category will be run + * @opt_param string locale The locale used to localize formatted results + * @opt_param string strategy The analysis strategy (desktop or mobile) to use, + * and desktop is the default + * @opt_param string utm_campaign Campaign name for analytics. + * @opt_param string utm_source Campaign source for analytics. + * @return PagespeedApiPagespeedResponseV5 + */ + public function runpagespeed($url, $optParams = []) + { + $params = ['url' => $url]; + $params = \array_merge($params, $optParams); + return $this->call('runpagespeed', [$params], \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiPagespeedResponseV5::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Resource\Pagespeedapi::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Resource_Pagespeedapi'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RuntimeError.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RuntimeError.php new file mode 100644 index 000000000..568a2342b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RuntimeError.php @@ -0,0 +1,60 @@ +code = $code; + } + /** + * @return string + */ + public function getCode() + { + return $this->code; + } + /** + * @param string + */ + public function setMessage($message) + { + $this->message = $message; + } + /** + * @return string + */ + public function getMessage() + { + return $this->message; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\RuntimeError::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_RuntimeError'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/StackPack.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/StackPack.php new file mode 100644 index 000000000..75febb7db --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/StackPack.php @@ -0,0 +1,96 @@ +descriptions = $descriptions; + } + /** + * @return string[] + */ + public function getDescriptions() + { + return $this->descriptions; + } + /** + * @param string + */ + public function setIconDataURL($iconDataURL) + { + $this->iconDataURL = $iconDataURL; + } + /** + * @return string + */ + public function getIconDataURL() + { + return $this->iconDataURL; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setTitle($title) + { + $this->title = $title; + } + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\StackPack::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_StackPack'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Timing.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Timing.php new file mode 100644 index 000000000..3b9c37faf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Timing.php @@ -0,0 +1,33 @@ +total = $total; + } + public function getTotal() + { + return $this->total; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Timing::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Timing'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/UserPageLoadMetricV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/UserPageLoadMetricV5.php new file mode 100644 index 000000000..2b4a95f95 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/UserPageLoadMetricV5.php @@ -0,0 +1,131 @@ +category = $category; + } + /** + * @return string + */ + public function getCategory() + { + return $this->category; + } + /** + * @param Bucket[] + */ + public function setDistributions($distributions) + { + $this->distributions = $distributions; + } + /** + * @return Bucket[] + */ + public function getDistributions() + { + return $this->distributions; + } + /** + * @param string + */ + public function setFormFactor($formFactor) + { + $this->formFactor = $formFactor; + } + /** + * @return string + */ + public function getFormFactor() + { + return $this->formFactor; + } + /** + * @param int + */ + public function setMedian($median) + { + $this->median = $median; + } + /** + * @return int + */ + public function getMedian() + { + return $this->median; + } + /** + * @param string + */ + public function setMetricId($metricId) + { + $this->metricId = $metricId; + } + /** + * @return string + */ + public function getMetricId() + { + return $this->metricId; + } + /** + * @param int + */ + public function setPercentile($percentile) + { + $this->percentile = $percentile; + } + /** + * @return int + */ + public function getPercentile() + { + return $this->percentile; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\UserPageLoadMetricV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_UserPageLoadMetricV5'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService.php new file mode 100644 index 000000000..6cc6e8e90 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService.php @@ -0,0 +1,88 @@ + + * Provides access to information about profiles and contacts.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class PeopleService extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** See, edit, download, and permanently delete your contacts. */ + const CONTACTS = "https://www.googleapis.com/auth/contacts"; + /** See and download contact info automatically saved in your "Other contacts". */ + const CONTACTS_OTHER_READONLY = "https://www.googleapis.com/auth/contacts.other.readonly"; + /** See and download your contacts. */ + const CONTACTS_READONLY = "https://www.googleapis.com/auth/contacts.readonly"; + /** See and download your organization's GSuite directory. */ + const DIRECTORY_READONLY = "https://www.googleapis.com/auth/directory.readonly"; + /** View your street addresses. */ + const USER_ADDRESSES_READ = "https://www.googleapis.com/auth/user.addresses.read"; + /** See and download your exact date of birth. */ + const USER_BIRTHDAY_READ = "https://www.googleapis.com/auth/user.birthday.read"; + /** See and download all of your Google Account email addresses. */ + const USER_EMAILS_READ = "https://www.googleapis.com/auth/user.emails.read"; + /** See your gender. */ + const USER_GENDER_READ = "https://www.googleapis.com/auth/user.gender.read"; + /** See your education, work history and org info. */ + const USER_ORGANIZATION_READ = "https://www.googleapis.com/auth/user.organization.read"; + /** See and download your personal phone numbers. */ + const USER_PHONENUMBERS_READ = "https://www.googleapis.com/auth/user.phonenumbers.read"; + /** See your primary Google Account email address. */ + const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"; + /** See your personal info, including any personal info you've made publicly available. */ + const USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile"; + public $contactGroups; + public $contactGroups_members; + public $otherContacts; + public $people; + public $people_connections; + /** + * Constructs the internal representation of the PeopleService service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://people.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v1'; + $this->serviceName = 'people'; + $this->contactGroups = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroups($this, $this->serviceName, 'contactGroups', ['methods' => ['batchGet' => ['path' => 'v1/contactGroups:batchGet', 'httpMethod' => 'GET', 'parameters' => ['groupFields' => ['location' => 'query', 'type' => 'string'], 'maxMembers' => ['location' => 'query', 'type' => 'integer'], 'resourceNames' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'create' => ['path' => 'v1/contactGroups', 'httpMethod' => 'POST', 'parameters' => []], 'delete' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'DELETE', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'deleteContacts' => ['location' => 'query', 'type' => 'boolean']]], 'get' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'GET', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'groupFields' => ['location' => 'query', 'type' => 'string'], 'maxMembers' => ['location' => 'query', 'type' => 'integer']]], 'list' => ['path' => 'v1/contactGroups', 'httpMethod' => 'GET', 'parameters' => ['groupFields' => ['location' => 'query', 'type' => 'string'], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'syncToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'PUT', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->contactGroups_members = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroupsMembers($this, $this->serviceName, 'members', ['methods' => ['modify' => ['path' => 'v1/{+resourceName}/members:modify', 'httpMethod' => 'POST', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->otherContacts = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\OtherContacts($this, $this->serviceName, 'otherContacts', ['methods' => ['copyOtherContactToMyContactsGroup' => ['path' => 'v1/{+resourceName}:copyOtherContactToMyContactsGroup', 'httpMethod' => 'POST', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1/otherContacts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'requestSyncToken' => ['location' => 'query', 'type' => 'boolean'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'syncToken' => ['location' => 'query', 'type' => 'string']]], 'search' => ['path' => 'v1/otherContacts:search', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'query' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string']]]]]); + $this->people = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\People($this, $this->serviceName, 'people', ['methods' => ['batchCreateContacts' => ['path' => 'v1/people:batchCreateContacts', 'httpMethod' => 'POST', 'parameters' => []], 'batchDeleteContacts' => ['path' => 'v1/people:batchDeleteContacts', 'httpMethod' => 'POST', 'parameters' => []], 'batchUpdateContacts' => ['path' => 'v1/people:batchUpdateContacts', 'httpMethod' => 'POST', 'parameters' => []], 'createContact' => ['path' => 'v1/people:createContact', 'httpMethod' => 'POST', 'parameters' => ['personFields' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'deleteContact' => ['path' => 'v1/{+resourceName}:deleteContact', 'httpMethod' => 'DELETE', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'deleteContactPhoto' => ['path' => 'v1/{+resourceName}:deleteContactPhoto', 'httpMethod' => 'DELETE', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'personFields' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'get' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'GET', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'personFields' => ['location' => 'query', 'type' => 'string'], 'requestMask.includeField' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'getBatchGet' => ['path' => 'v1/people:batchGet', 'httpMethod' => 'GET', 'parameters' => ['personFields' => ['location' => 'query', 'type' => 'string'], 'requestMask.includeField' => ['location' => 'query', 'type' => 'string'], 'resourceNames' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'listDirectoryPeople' => ['path' => 'v1/people:listDirectoryPeople', 'httpMethod' => 'GET', 'parameters' => ['mergeSources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'requestSyncToken' => ['location' => 'query', 'type' => 'boolean'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'syncToken' => ['location' => 'query', 'type' => 'string']]], 'searchContacts' => ['path' => 'v1/people:searchContacts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'query' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'searchDirectoryPeople' => ['path' => 'v1/people:searchDirectoryPeople', 'httpMethod' => 'GET', 'parameters' => ['mergeSources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'query' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'updateContact' => ['path' => 'v1/{+resourceName}:updateContact', 'httpMethod' => 'PATCH', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'personFields' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'updatePersonFields' => ['location' => 'query', 'type' => 'string']]], 'updateContactPhoto' => ['path' => 'v1/{+resourceName}:updateContactPhoto', 'httpMethod' => 'PATCH', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->people_connections = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\PeopleConnections($this, $this->serviceName, 'connections', ['methods' => ['list' => ['path' => 'v1/{+resourceName}/connections', 'httpMethod' => 'GET', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'personFields' => ['location' => 'query', 'type' => 'string'], 'requestMask.includeField' => ['location' => 'query', 'type' => 'string'], 'requestSyncToken' => ['location' => 'query', 'type' => 'boolean'], 'sortOrder' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'syncToken' => ['location' => 'query', 'type' => 'string']]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Address.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Address.php new file mode 100644 index 000000000..e1a970a27 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Address.php @@ -0,0 +1,238 @@ +city = $city; + } + /** + * @return string + */ + public function getCity() + { + return $this->city; + } + /** + * @param string + */ + public function setCountry($country) + { + $this->country = $country; + } + /** + * @return string + */ + public function getCountry() + { + return $this->country; + } + /** + * @param string + */ + public function setCountryCode($countryCode) + { + $this->countryCode = $countryCode; + } + /** + * @return string + */ + public function getCountryCode() + { + return $this->countryCode; + } + /** + * @param string + */ + public function setExtendedAddress($extendedAddress) + { + $this->extendedAddress = $extendedAddress; + } + /** + * @return string + */ + public function getExtendedAddress() + { + return $this->extendedAddress; + } + /** + * @param string + */ + public function setFormattedType($formattedType) + { + $this->formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param string + */ + public function setFormattedValue($formattedValue) + { + $this->formattedValue = $formattedValue; + } + /** + * @return string + */ + public function getFormattedValue() + { + return $this->formattedValue; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setPoBox($poBox) + { + $this->poBox = $poBox; + } + /** + * @return string + */ + public function getPoBox() + { + return $this->poBox; + } + /** + * @param string + */ + public function setPostalCode($postalCode) + { + $this->postalCode = $postalCode; + } + /** + * @return string + */ + public function getPostalCode() + { + return $this->postalCode; + } + /** + * @param string + */ + public function setRegion($region) + { + $this->region = $region; + } + /** + * @return string + */ + public function getRegion() + { + return $this->region; + } + /** + * @param string + */ + public function setStreetAddress($streetAddress) + { + $this->streetAddress = $streetAddress; + } + /** + * @return string + */ + public function getStreetAddress() + { + return $this->streetAddress; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Address::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Address'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/AgeRangeType.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/AgeRangeType.php new file mode 100644 index 000000000..ea65b493b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/AgeRangeType.php @@ -0,0 +1,58 @@ +ageRange = $ageRange; + } + /** + * @return string + */ + public function getAgeRange() + { + return $this->ageRange; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\AgeRangeType::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_AgeRangeType'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsRequest.php new file mode 100644 index 000000000..036c49b8a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsRequest.php @@ -0,0 +1,77 @@ +contacts = $contacts; + } + /** + * @return ContactToCreate[] + */ + public function getContacts() + { + return $this->contacts; + } + /** + * @param string + */ + public function setReadMask($readMask) + { + $this->readMask = $readMask; + } + /** + * @return string + */ + public function getReadMask() + { + return $this->readMask; + } + /** + * @param string[] + */ + public function setSources($sources) + { + $this->sources = $sources; + } + /** + * @return string[] + */ + public function getSources() + { + return $this->sources; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchCreateContactsRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsResponse.php new file mode 100644 index 000000000..d772f1556 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsResponse.php @@ -0,0 +1,41 @@ +createdPeople = $createdPeople; + } + /** + * @return PersonResponse[] + */ + public function getCreatedPeople() + { + return $this->createdPeople; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchCreateContactsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchDeleteContactsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchDeleteContactsRequest.php new file mode 100644 index 000000000..e7cb3de38 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchDeleteContactsRequest.php @@ -0,0 +1,43 @@ +resourceNames = $resourceNames; + } + /** + * @return string[] + */ + public function getResourceNames() + { + return $this->resourceNames; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchDeleteContactsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchDeleteContactsRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchGetContactGroupsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchGetContactGroupsResponse.php new file mode 100644 index 000000000..4db2b24bf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchGetContactGroupsResponse.php @@ -0,0 +1,41 @@ +responses = $responses; + } + /** + * @return ContactGroupResponse[] + */ + public function getResponses() + { + return $this->responses; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchGetContactGroupsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchGetContactGroupsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsRequest.php new file mode 100644 index 000000000..7359f1555 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsRequest.php @@ -0,0 +1,95 @@ +contacts = $contacts; + } + /** + * @return Person[] + */ + public function getContacts() + { + return $this->contacts; + } + /** + * @param string + */ + public function setReadMask($readMask) + { + $this->readMask = $readMask; + } + /** + * @return string + */ + public function getReadMask() + { + return $this->readMask; + } + /** + * @param string[] + */ + public function setSources($sources) + { + $this->sources = $sources; + } + /** + * @return string[] + */ + public function getSources() + { + return $this->sources; + } + /** + * @param string + */ + public function setUpdateMask($updateMask) + { + $this->updateMask = $updateMask; + } + /** + * @return string + */ + public function getUpdateMask() + { + return $this->updateMask; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchUpdateContactsRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsResponse.php new file mode 100644 index 000000000..6c0f1505f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsResponse.php @@ -0,0 +1,40 @@ +updateResult = $updateResult; + } + /** + * @return PersonResponse[] + */ + public function getUpdateResult() + { + return $this->updateResult; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchUpdateContactsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Biography.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Biography.php new file mode 100644 index 000000000..3fd9a4fd0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Biography.php @@ -0,0 +1,76 @@ +contentType = $contentType; + } + /** + * @return string + */ + public function getContentType() + { + return $this->contentType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Biography::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Biography'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Birthday.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Birthday.php new file mode 100644 index 000000000..dd5967b22 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Birthday.php @@ -0,0 +1,74 @@ +date = $date; + } + /** + * @return Date + */ + public function getDate() + { + return $this->date; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setText($text) + { + $this->text = $text; + } + /** + * @return string + */ + public function getText() + { + return $this->text; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Birthday::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Birthday'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BraggingRights.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BraggingRights.php new file mode 100644 index 000000000..c6d39f3af --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BraggingRights.php @@ -0,0 +1,58 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BraggingRights::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BraggingRights'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CalendarUrl.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CalendarUrl.php new file mode 100644 index 000000000..fcabdd20f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CalendarUrl.php @@ -0,0 +1,94 @@ +formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CalendarUrl::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CalendarUrl'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ClientData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ClientData.php new file mode 100644 index 000000000..a19b48c5a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ClientData.php @@ -0,0 +1,76 @@ +key = $key; + } + /** + * @return string + */ + public function getKey() + { + return $this->key; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ClientData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ClientData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroup.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroup.php new file mode 100644 index 000000000..df7c1bf29 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroup.php @@ -0,0 +1,183 @@ +clientData = $clientData; + } + /** + * @return GroupClientData[] + */ + public function getClientData() + { + return $this->clientData; + } + /** + * @param string + */ + public function setEtag($etag) + { + $this->etag = $etag; + } + /** + * @return string + */ + public function getEtag() + { + return $this->etag; + } + /** + * @param string + */ + public function setFormattedName($formattedName) + { + $this->formattedName = $formattedName; + } + /** + * @return string + */ + public function getFormattedName() + { + return $this->formattedName; + } + /** + * @param string + */ + public function setGroupType($groupType) + { + $this->groupType = $groupType; + } + /** + * @return string + */ + public function getGroupType() + { + return $this->groupType; + } + /** + * @param int + */ + public function setMemberCount($memberCount) + { + $this->memberCount = $memberCount; + } + /** + * @return int + */ + public function getMemberCount() + { + return $this->memberCount; + } + /** + * @param string[] + */ + public function setMemberResourceNames($memberResourceNames) + { + $this->memberResourceNames = $memberResourceNames; + } + /** + * @return string[] + */ + public function getMemberResourceNames() + { + return $this->memberResourceNames; + } + /** + * @param ContactGroupMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return ContactGroupMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setResourceName($resourceName) + { + $this->resourceName = $resourceName; + } + /** + * @return string + */ + public function getResourceName() + { + return $this->resourceName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroup'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMembership.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMembership.php new file mode 100644 index 000000000..ab042f8ac --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMembership.php @@ -0,0 +1,60 @@ +contactGroupId = $contactGroupId; + } + /** + * @return string + */ + public function getContactGroupId() + { + return $this->contactGroupId; + } + /** + * @param string + */ + public function setContactGroupResourceName($contactGroupResourceName) + { + $this->contactGroupResourceName = $contactGroupResourceName; + } + /** + * @return string + */ + public function getContactGroupResourceName() + { + return $this->contactGroupResourceName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupMembership::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroupMembership'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMetadata.php new file mode 100644 index 000000000..8797576c4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMetadata.php @@ -0,0 +1,60 @@ +deleted = $deleted; + } + /** + * @return bool + */ + public function getDeleted() + { + return $this->deleted; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroupMetadata'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupResponse.php new file mode 100644 index 000000000..604718922 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupResponse.php @@ -0,0 +1,74 @@ +contactGroup = $contactGroup; + } + /** + * @return ContactGroup + */ + public function getContactGroup() + { + return $this->contactGroup; + } + /** + * @param string + */ + public function setRequestedResourceName($requestedResourceName) + { + $this->requestedResourceName = $requestedResourceName; + } + /** + * @return string + */ + public function getRequestedResourceName() + { + return $this->requestedResourceName; + } + /** + * @param Status + */ + public function setStatus(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Status $status) + { + $this->status = $status; + } + /** + * @return Status + */ + public function getStatus() + { + return $this->status; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroupResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactToCreate.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactToCreate.php new file mode 100644 index 000000000..cc002c0e6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactToCreate.php @@ -0,0 +1,40 @@ +contactPerson = $contactPerson; + } + /** + * @return Person + */ + public function getContactPerson() + { + return $this->contactPerson; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactToCreate::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactToCreate'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CopyOtherContactToMyContactsGroupRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CopyOtherContactToMyContactsGroupRequest.php new file mode 100644 index 000000000..9b1f8cafa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CopyOtherContactToMyContactsGroupRequest.php @@ -0,0 +1,79 @@ +copyMask = $copyMask; + } + /** + * @return string + */ + public function getCopyMask() + { + return $this->copyMask; + } + /** + * @param string + */ + public function setReadMask($readMask) + { + $this->readMask = $readMask; + } + /** + * @return string + */ + public function getReadMask() + { + return $this->readMask; + } + /** + * @param string[] + */ + public function setSources($sources) + { + $this->sources = $sources; + } + /** + * @return string[] + */ + public function getSources() + { + return $this->sources; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CopyOtherContactToMyContactsGroupRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CopyOtherContactToMyContactsGroupRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CoverPhoto.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CoverPhoto.php new file mode 100644 index 000000000..53105acb8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CoverPhoto.php @@ -0,0 +1,76 @@ +default = $default; + } + /** + * @return bool + */ + public function getDefault() + { + return $this->default; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CoverPhoto::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CoverPhoto'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CreateContactGroupRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CreateContactGroupRequest.php new file mode 100644 index 000000000..16d78c691 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CreateContactGroupRequest.php @@ -0,0 +1,58 @@ +contactGroup = $contactGroup; + } + /** + * @return ContactGroup + */ + public function getContactGroup() + { + return $this->contactGroup; + } + /** + * @param string + */ + public function setReadGroupFields($readGroupFields) + { + $this->readGroupFields = $readGroupFields; + } + /** + * @return string + */ + public function getReadGroupFields() + { + return $this->readGroupFields; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CreateContactGroupRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CreateContactGroupRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Date.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Date.php new file mode 100644 index 000000000..440601670 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Date.php @@ -0,0 +1,78 @@ +day = $day; + } + /** + * @return int + */ + public function getDay() + { + return $this->day; + } + /** + * @param int + */ + public function setMonth($month) + { + $this->month = $month; + } + /** + * @return int + */ + public function getMonth() + { + return $this->month; + } + /** + * @param int + */ + public function setYear($year) + { + $this->year = $year; + } + /** + * @return int + */ + public function getYear() + { + return $this->year; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Date::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Date'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DeleteContactPhotoResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DeleteContactPhotoResponse.php new file mode 100644 index 000000000..ee1d03bec --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DeleteContactPhotoResponse.php @@ -0,0 +1,40 @@ +person = $person; + } + /** + * @return Person + */ + public function getPerson() + { + return $this->person; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\DeleteContactPhotoResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_DeleteContactPhotoResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DomainMembership.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DomainMembership.php new file mode 100644 index 000000000..2d4d118bb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DomainMembership.php @@ -0,0 +1,42 @@ +inViewerDomain = $inViewerDomain; + } + /** + * @return bool + */ + public function getInViewerDomain() + { + return $this->inViewerDomain; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\DomainMembership::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_DomainMembership'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/EmailAddress.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/EmailAddress.php new file mode 100644 index 000000000..692acb5cf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/EmailAddress.php @@ -0,0 +1,112 @@ +displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setFormattedType($formattedType) + { + $this->formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\EmailAddress::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_EmailAddress'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Event.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Event.php new file mode 100644 index 000000000..e1aba7051 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Event.php @@ -0,0 +1,92 @@ +date = $date; + } + /** + * @return Date + */ + public function getDate() + { + return $this->date; + } + /** + * @param string + */ + public function setFormattedType($formattedType) + { + $this->formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Event::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Event'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ExternalId.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ExternalId.php new file mode 100644 index 000000000..0e2950d61 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ExternalId.php @@ -0,0 +1,94 @@ +formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ExternalId::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ExternalId'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FieldMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FieldMetadata.php new file mode 100644 index 000000000..8551766d2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FieldMetadata.php @@ -0,0 +1,94 @@ +primary = $primary; + } + /** + * @return bool + */ + public function getPrimary() + { + return $this->primary; + } + /** + * @param Source + */ + public function setSource(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Source $source) + { + $this->source = $source; + } + /** + * @return Source + */ + public function getSource() + { + return $this->source; + } + /** + * @param bool + */ + public function setSourcePrimary($sourcePrimary) + { + $this->sourcePrimary = $sourcePrimary; + } + /** + * @return bool + */ + public function getSourcePrimary() + { + return $this->sourcePrimary; + } + /** + * @param bool + */ + public function setVerified($verified) + { + $this->verified = $verified; + } + /** + * @return bool + */ + public function getVerified() + { + return $this->verified; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_FieldMetadata'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FileAs.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FileAs.php new file mode 100644 index 000000000..7ee228fa2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FileAs.php @@ -0,0 +1,58 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FileAs::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_FileAs'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Gender.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Gender.php new file mode 100644 index 000000000..a769b888d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Gender.php @@ -0,0 +1,94 @@ +addressMeAs = $addressMeAs; + } + /** + * @return string + */ + public function getAddressMeAs() + { + return $this->addressMeAs; + } + /** + * @param string + */ + public function setFormattedValue($formattedValue) + { + $this->formattedValue = $formattedValue; + } + /** + * @return string + */ + public function getFormattedValue() + { + return $this->formattedValue; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Gender::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Gender'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GetPeopleResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GetPeopleResponse.php new file mode 100644 index 000000000..9a9dae053 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GetPeopleResponse.php @@ -0,0 +1,41 @@ +responses = $responses; + } + /** + * @return PersonResponse[] + */ + public function getResponses() + { + return $this->responses; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\GetPeopleResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_GetPeopleResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GroupClientData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GroupClientData.php new file mode 100644 index 000000000..bd49c1f9c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GroupClientData.php @@ -0,0 +1,60 @@ +key = $key; + } + /** + * @return string + */ + public function getKey() + { + return $this->key; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\GroupClientData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_GroupClientData'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ImClient.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ImClient.php new file mode 100644 index 000000000..aed0455e9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ImClient.php @@ -0,0 +1,130 @@ +formattedProtocol = $formattedProtocol; + } + /** + * @return string + */ + public function getFormattedProtocol() + { + return $this->formattedProtocol; + } + /** + * @param string + */ + public function setFormattedType($formattedType) + { + $this->formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setProtocol($protocol) + { + $this->protocol = $protocol; + } + /** + * @return string + */ + public function getProtocol() + { + return $this->protocol; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ImClient::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ImClient'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Interest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Interest.php new file mode 100644 index 000000000..7d39ab1bd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Interest.php @@ -0,0 +1,58 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Interest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Interest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListConnectionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListConnectionsResponse.php new file mode 100644 index 000000000..acbad1153 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListConnectionsResponse.php @@ -0,0 +1,113 @@ +connections = $connections; + } + /** + * @return Person[] + */ + public function getConnections() + { + return $this->connections; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param string + */ + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + /** + * @return string + */ + public function getNextSyncToken() + { + return $this->nextSyncToken; + } + /** + * @param int + */ + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + /** + * @return int + */ + public function getTotalItems() + { + return $this->totalItems; + } + /** + * @param int + */ + public function setTotalPeople($totalPeople) + { + $this->totalPeople = $totalPeople; + } + /** + * @return int + */ + public function getTotalPeople() + { + return $this->totalPeople; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListConnectionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListConnectionsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListContactGroupsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListContactGroupsResponse.php new file mode 100644 index 000000000..ee63ab745 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListContactGroupsResponse.php @@ -0,0 +1,95 @@ +contactGroups = $contactGroups; + } + /** + * @return ContactGroup[] + */ + public function getContactGroups() + { + return $this->contactGroups; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param string + */ + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + /** + * @return string + */ + public function getNextSyncToken() + { + return $this->nextSyncToken; + } + /** + * @param int + */ + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + /** + * @return int + */ + public function getTotalItems() + { + return $this->totalItems; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListContactGroupsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListContactGroupsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListDirectoryPeopleResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListDirectoryPeopleResponse.php new file mode 100644 index 000000000..420949fd9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListDirectoryPeopleResponse.php @@ -0,0 +1,77 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param string + */ + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + /** + * @return string + */ + public function getNextSyncToken() + { + return $this->nextSyncToken; + } + /** + * @param Person[] + */ + public function setPeople($people) + { + $this->people = $people; + } + /** + * @return Person[] + */ + public function getPeople() + { + return $this->people; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListDirectoryPeopleResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListDirectoryPeopleResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListOtherContactsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListOtherContactsResponse.php new file mode 100644 index 000000000..ff1ce6749 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListOtherContactsResponse.php @@ -0,0 +1,95 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param string + */ + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + /** + * @return string + */ + public function getNextSyncToken() + { + return $this->nextSyncToken; + } + /** + * @param Person[] + */ + public function setOtherContacts($otherContacts) + { + $this->otherContacts = $otherContacts; + } + /** + * @return Person[] + */ + public function getOtherContacts() + { + return $this->otherContacts; + } + /** + * @param int + */ + public function setTotalSize($totalSize) + { + $this->totalSize = $totalSize; + } + /** + * @return int + */ + public function getTotalSize() + { + return $this->totalSize; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListOtherContactsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListOtherContactsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Locale.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Locale.php new file mode 100644 index 000000000..e3df3666f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Locale.php @@ -0,0 +1,58 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Locale::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Locale'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Location.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Location.php new file mode 100644 index 000000000..65534477d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Location.php @@ -0,0 +1,166 @@ +buildingId = $buildingId; + } + /** + * @return string + */ + public function getBuildingId() + { + return $this->buildingId; + } + /** + * @param bool + */ + public function setCurrent($current) + { + $this->current = $current; + } + /** + * @return bool + */ + public function getCurrent() + { + return $this->current; + } + /** + * @param string + */ + public function setDeskCode($deskCode) + { + $this->deskCode = $deskCode; + } + /** + * @return string + */ + public function getDeskCode() + { + return $this->deskCode; + } + /** + * @param string + */ + public function setFloor($floor) + { + $this->floor = $floor; + } + /** + * @return string + */ + public function getFloor() + { + return $this->floor; + } + /** + * @param string + */ + public function setFloorSection($floorSection) + { + $this->floorSection = $floorSection; + } + /** + * @return string + */ + public function getFloorSection() + { + return $this->floorSection; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Location::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Location'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Membership.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Membership.php new file mode 100644 index 000000000..31c9a7d45 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Membership.php @@ -0,0 +1,72 @@ +contactGroupMembership = $contactGroupMembership; + } + /** + * @return ContactGroupMembership + */ + public function getContactGroupMembership() + { + return $this->contactGroupMembership; + } + /** + * @param DomainMembership + */ + public function setDomainMembership(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\DomainMembership $domainMembership) + { + $this->domainMembership = $domainMembership; + } + /** + * @return DomainMembership + */ + public function getDomainMembership() + { + return $this->domainMembership; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Membership::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Membership'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/MiscKeyword.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/MiscKeyword.php new file mode 100644 index 000000000..afd2b4134 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/MiscKeyword.php @@ -0,0 +1,94 @@ +formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\MiscKeyword::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_MiscKeyword'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersRequest.php new file mode 100644 index 000000000..a39d9b221 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersRequest.php @@ -0,0 +1,61 @@ +resourceNamesToAdd = $resourceNamesToAdd; + } + /** + * @return string[] + */ + public function getResourceNamesToAdd() + { + return $this->resourceNamesToAdd; + } + /** + * @param string[] + */ + public function setResourceNamesToRemove($resourceNamesToRemove) + { + $this->resourceNamesToRemove = $resourceNamesToRemove; + } + /** + * @return string[] + */ + public function getResourceNamesToRemove() + { + return $this->resourceNamesToRemove; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ModifyContactGroupMembersRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersResponse.php new file mode 100644 index 000000000..ea8ab76fa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersResponse.php @@ -0,0 +1,61 @@ +canNotRemoveLastContactGroupResourceNames = $canNotRemoveLastContactGroupResourceNames; + } + /** + * @return string[] + */ + public function getCanNotRemoveLastContactGroupResourceNames() + { + return $this->canNotRemoveLastContactGroupResourceNames; + } + /** + * @param string[] + */ + public function setNotFoundResourceNames($notFoundResourceNames) + { + $this->notFoundResourceNames = $notFoundResourceNames; + } + /** + * @return string[] + */ + public function getNotFoundResourceNames() + { + return $this->notFoundResourceNames; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ModifyContactGroupMembersResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Name.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Name.php new file mode 100644 index 000000000..47481cb06 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Name.php @@ -0,0 +1,292 @@ +displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param string + */ + public function setDisplayNameLastFirst($displayNameLastFirst) + { + $this->displayNameLastFirst = $displayNameLastFirst; + } + /** + * @return string + */ + public function getDisplayNameLastFirst() + { + return $this->displayNameLastFirst; + } + /** + * @param string + */ + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + /** + * @return string + */ + public function getFamilyName() + { + return $this->familyName; + } + /** + * @param string + */ + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + /** + * @return string + */ + public function getGivenName() + { + return $this->givenName; + } + /** + * @param string + */ + public function setHonorificPrefix($honorificPrefix) + { + $this->honorificPrefix = $honorificPrefix; + } + /** + * @return string + */ + public function getHonorificPrefix() + { + return $this->honorificPrefix; + } + /** + * @param string + */ + public function setHonorificSuffix($honorificSuffix) + { + $this->honorificSuffix = $honorificSuffix; + } + /** + * @return string + */ + public function getHonorificSuffix() + { + return $this->honorificSuffix; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setMiddleName($middleName) + { + $this->middleName = $middleName; + } + /** + * @return string + */ + public function getMiddleName() + { + return $this->middleName; + } + /** + * @param string + */ + public function setPhoneticFamilyName($phoneticFamilyName) + { + $this->phoneticFamilyName = $phoneticFamilyName; + } + /** + * @return string + */ + public function getPhoneticFamilyName() + { + return $this->phoneticFamilyName; + } + /** + * @param string + */ + public function setPhoneticFullName($phoneticFullName) + { + $this->phoneticFullName = $phoneticFullName; + } + /** + * @return string + */ + public function getPhoneticFullName() + { + return $this->phoneticFullName; + } + /** + * @param string + */ + public function setPhoneticGivenName($phoneticGivenName) + { + $this->phoneticGivenName = $phoneticGivenName; + } + /** + * @return string + */ + public function getPhoneticGivenName() + { + return $this->phoneticGivenName; + } + /** + * @param string + */ + public function setPhoneticHonorificPrefix($phoneticHonorificPrefix) + { + $this->phoneticHonorificPrefix = $phoneticHonorificPrefix; + } + /** + * @return string + */ + public function getPhoneticHonorificPrefix() + { + return $this->phoneticHonorificPrefix; + } + /** + * @param string + */ + public function setPhoneticHonorificSuffix($phoneticHonorificSuffix) + { + $this->phoneticHonorificSuffix = $phoneticHonorificSuffix; + } + /** + * @return string + */ + public function getPhoneticHonorificSuffix() + { + return $this->phoneticHonorificSuffix; + } + /** + * @param string + */ + public function setPhoneticMiddleName($phoneticMiddleName) + { + $this->phoneticMiddleName = $phoneticMiddleName; + } + /** + * @return string + */ + public function getPhoneticMiddleName() + { + return $this->phoneticMiddleName; + } + /** + * @param string + */ + public function setUnstructuredName($unstructuredName) + { + $this->unstructuredName = $unstructuredName; + } + /** + * @return string + */ + public function getUnstructuredName() + { + return $this->unstructuredName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Name::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Name'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Nickname.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Nickname.php new file mode 100644 index 000000000..8d9bf86fd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Nickname.php @@ -0,0 +1,76 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Nickname::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Nickname'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Occupation.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Occupation.php new file mode 100644 index 000000000..407d9b01e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Occupation.php @@ -0,0 +1,58 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Occupation::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Occupation'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Organization.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Organization.php new file mode 100644 index 000000000..8b2a9bd3e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Organization.php @@ -0,0 +1,306 @@ +costCenter = $costCenter; + } + /** + * @return string + */ + public function getCostCenter() + { + return $this->costCenter; + } + /** + * @param bool + */ + public function setCurrent($current) + { + $this->current = $current; + } + /** + * @return bool + */ + public function getCurrent() + { + return $this->current; + } + /** + * @param string + */ + public function setDepartment($department) + { + $this->department = $department; + } + /** + * @return string + */ + public function getDepartment() + { + return $this->department; + } + /** + * @param string + */ + public function setDomain($domain) + { + $this->domain = $domain; + } + /** + * @return string + */ + public function getDomain() + { + return $this->domain; + } + /** + * @param Date + */ + public function setEndDate(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Date $endDate) + { + $this->endDate = $endDate; + } + /** + * @return Date + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param string + */ + public function setFormattedType($formattedType) + { + $this->formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param int + */ + public function setFullTimeEquivalentMillipercent($fullTimeEquivalentMillipercent) + { + $this->fullTimeEquivalentMillipercent = $fullTimeEquivalentMillipercent; + } + /** + * @return int + */ + public function getFullTimeEquivalentMillipercent() + { + return $this->fullTimeEquivalentMillipercent; + } + /** + * @param string + */ + public function setJobDescription($jobDescription) + { + $this->jobDescription = $jobDescription; + } + /** + * @return string + */ + public function getJobDescription() + { + return $this->jobDescription; + } + /** + * @param string + */ + public function setLocation($location) + { + $this->location = $location; + } + /** + * @return string + */ + public function getLocation() + { + return $this->location; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPhoneticName($phoneticName) + { + $this->phoneticName = $phoneticName; + } + /** + * @return string + */ + public function getPhoneticName() + { + return $this->phoneticName; + } + /** + * @param Date + */ + public function setStartDate(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Date $startDate) + { + $this->startDate = $startDate; + } + /** + * @return Date + */ + public function getStartDate() + { + return $this->startDate; + } + /** + * @param string + */ + public function setSymbol($symbol) + { + $this->symbol = $symbol; + } + /** + * @return string + */ + public function getSymbol() + { + return $this->symbol; + } + /** + * @param string + */ + public function setTitle($title) + { + $this->title = $title; + } + /** + * @return string + */ + public function getTitle() + { + return $this->title; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Organization::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Organization'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PeopleEmpty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PeopleEmpty.php new file mode 100644 index 000000000..6edc3462e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PeopleEmpty.php @@ -0,0 +1,24 @@ +addresses = $addresses; + } + /** + * @return Address[] + */ + public function getAddresses() + { + return $this->addresses; + } + /** + * @param string + */ + public function setAgeRange($ageRange) + { + $this->ageRange = $ageRange; + } + /** + * @return string + */ + public function getAgeRange() + { + return $this->ageRange; + } + /** + * @param AgeRangeType[] + */ + public function setAgeRanges($ageRanges) + { + $this->ageRanges = $ageRanges; + } + /** + * @return AgeRangeType[] + */ + public function getAgeRanges() + { + return $this->ageRanges; + } + /** + * @param Biography[] + */ + public function setBiographies($biographies) + { + $this->biographies = $biographies; + } + /** + * @return Biography[] + */ + public function getBiographies() + { + return $this->biographies; + } + /** + * @param Birthday[] + */ + public function setBirthdays($birthdays) + { + $this->birthdays = $birthdays; + } + /** + * @return Birthday[] + */ + public function getBirthdays() + { + return $this->birthdays; + } + /** + * @param BraggingRights[] + */ + public function setBraggingRights($braggingRights) + { + $this->braggingRights = $braggingRights; + } + /** + * @return BraggingRights[] + */ + public function getBraggingRights() + { + return $this->braggingRights; + } + /** + * @param CalendarUrl[] + */ + public function setCalendarUrls($calendarUrls) + { + $this->calendarUrls = $calendarUrls; + } + /** + * @return CalendarUrl[] + */ + public function getCalendarUrls() + { + return $this->calendarUrls; + } + /** + * @param ClientData[] + */ + public function setClientData($clientData) + { + $this->clientData = $clientData; + } + /** + * @return ClientData[] + */ + public function getClientData() + { + return $this->clientData; + } + /** + * @param CoverPhoto[] + */ + public function setCoverPhotos($coverPhotos) + { + $this->coverPhotos = $coverPhotos; + } + /** + * @return CoverPhoto[] + */ + public function getCoverPhotos() + { + return $this->coverPhotos; + } + /** + * @param EmailAddress[] + */ + public function setEmailAddresses($emailAddresses) + { + $this->emailAddresses = $emailAddresses; + } + /** + * @return EmailAddress[] + */ + public function getEmailAddresses() + { + return $this->emailAddresses; + } + /** + * @param string + */ + public function setEtag($etag) + { + $this->etag = $etag; + } + /** + * @return string + */ + public function getEtag() + { + return $this->etag; + } + /** + * @param Event[] + */ + public function setEvents($events) + { + $this->events = $events; + } + /** + * @return Event[] + */ + public function getEvents() + { + return $this->events; + } + /** + * @param ExternalId[] + */ + public function setExternalIds($externalIds) + { + $this->externalIds = $externalIds; + } + /** + * @return ExternalId[] + */ + public function getExternalIds() + { + return $this->externalIds; + } + /** + * @param FileAs[] + */ + public function setFileAses($fileAses) + { + $this->fileAses = $fileAses; + } + /** + * @return FileAs[] + */ + public function getFileAses() + { + return $this->fileAses; + } + /** + * @param Gender[] + */ + public function setGenders($genders) + { + $this->genders = $genders; + } + /** + * @return Gender[] + */ + public function getGenders() + { + return $this->genders; + } + /** + * @param ImClient[] + */ + public function setImClients($imClients) + { + $this->imClients = $imClients; + } + /** + * @return ImClient[] + */ + public function getImClients() + { + return $this->imClients; + } + /** + * @param Interest[] + */ + public function setInterests($interests) + { + $this->interests = $interests; + } + /** + * @return Interest[] + */ + public function getInterests() + { + return $this->interests; + } + /** + * @param Locale[] + */ + public function setLocales($locales) + { + $this->locales = $locales; + } + /** + * @return Locale[] + */ + public function getLocales() + { + return $this->locales; + } + /** + * @param Location[] + */ + public function setLocations($locations) + { + $this->locations = $locations; + } + /** + * @return Location[] + */ + public function getLocations() + { + return $this->locations; + } + /** + * @param Membership[] + */ + public function setMemberships($memberships) + { + $this->memberships = $memberships; + } + /** + * @return Membership[] + */ + public function getMemberships() + { + return $this->memberships; + } + /** + * @param PersonMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PersonMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return PersonMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param MiscKeyword[] + */ + public function setMiscKeywords($miscKeywords) + { + $this->miscKeywords = $miscKeywords; + } + /** + * @return MiscKeyword[] + */ + public function getMiscKeywords() + { + return $this->miscKeywords; + } + /** + * @param Name[] + */ + public function setNames($names) + { + $this->names = $names; + } + /** + * @return Name[] + */ + public function getNames() + { + return $this->names; + } + /** + * @param Nickname[] + */ + public function setNicknames($nicknames) + { + $this->nicknames = $nicknames; + } + /** + * @return Nickname[] + */ + public function getNicknames() + { + return $this->nicknames; + } + /** + * @param Occupation[] + */ + public function setOccupations($occupations) + { + $this->occupations = $occupations; + } + /** + * @return Occupation[] + */ + public function getOccupations() + { + return $this->occupations; + } + /** + * @param Organization[] + */ + public function setOrganizations($organizations) + { + $this->organizations = $organizations; + } + /** + * @return Organization[] + */ + public function getOrganizations() + { + return $this->organizations; + } + /** + * @param PhoneNumber[] + */ + public function setPhoneNumbers($phoneNumbers) + { + $this->phoneNumbers = $phoneNumbers; + } + /** + * @return PhoneNumber[] + */ + public function getPhoneNumbers() + { + return $this->phoneNumbers; + } + /** + * @param Photo[] + */ + public function setPhotos($photos) + { + $this->photos = $photos; + } + /** + * @return Photo[] + */ + public function getPhotos() + { + return $this->photos; + } + /** + * @param Relation[] + */ + public function setRelations($relations) + { + $this->relations = $relations; + } + /** + * @return Relation[] + */ + public function getRelations() + { + return $this->relations; + } + /** + * @param RelationshipInterest[] + */ + public function setRelationshipInterests($relationshipInterests) + { + $this->relationshipInterests = $relationshipInterests; + } + /** + * @return RelationshipInterest[] + */ + public function getRelationshipInterests() + { + return $this->relationshipInterests; + } + /** + * @param RelationshipStatus[] + */ + public function setRelationshipStatuses($relationshipStatuses) + { + $this->relationshipStatuses = $relationshipStatuses; + } + /** + * @return RelationshipStatus[] + */ + public function getRelationshipStatuses() + { + return $this->relationshipStatuses; + } + /** + * @param Residence[] + */ + public function setResidences($residences) + { + $this->residences = $residences; + } + /** + * @return Residence[] + */ + public function getResidences() + { + return $this->residences; + } + /** + * @param string + */ + public function setResourceName($resourceName) + { + $this->resourceName = $resourceName; + } + /** + * @return string + */ + public function getResourceName() + { + return $this->resourceName; + } + /** + * @param SipAddress[] + */ + public function setSipAddresses($sipAddresses) + { + $this->sipAddresses = $sipAddresses; + } + /** + * @return SipAddress[] + */ + public function getSipAddresses() + { + return $this->sipAddresses; + } + /** + * @param Skill[] + */ + public function setSkills($skills) + { + $this->skills = $skills; + } + /** + * @return Skill[] + */ + public function getSkills() + { + return $this->skills; + } + /** + * @param Tagline[] + */ + public function setTaglines($taglines) + { + $this->taglines = $taglines; + } + /** + * @return Tagline[] + */ + public function getTaglines() + { + return $this->taglines; + } + /** + * @param Url[] + */ + public function setUrls($urls) + { + $this->urls = $urls; + } + /** + * @return Url[] + */ + public function getUrls() + { + return $this->urls; + } + /** + * @param UserDefined[] + */ + public function setUserDefined($userDefined) + { + $this->userDefined = $userDefined; + } + /** + * @return UserDefined[] + */ + public function getUserDefined() + { + return $this->userDefined; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Person'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonMetadata.php new file mode 100644 index 000000000..f10bc02e3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonMetadata.php @@ -0,0 +1,113 @@ +deleted = $deleted; + } + /** + * @return bool + */ + public function getDeleted() + { + return $this->deleted; + } + /** + * @param string[] + */ + public function setLinkedPeopleResourceNames($linkedPeopleResourceNames) + { + $this->linkedPeopleResourceNames = $linkedPeopleResourceNames; + } + /** + * @return string[] + */ + public function getLinkedPeopleResourceNames() + { + return $this->linkedPeopleResourceNames; + } + /** + * @param string + */ + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + /** + * @return string + */ + public function getObjectType() + { + return $this->objectType; + } + /** + * @param string[] + */ + public function setPreviousResourceNames($previousResourceNames) + { + $this->previousResourceNames = $previousResourceNames; + } + /** + * @return string[] + */ + public function getPreviousResourceNames() + { + return $this->previousResourceNames; + } + /** + * @param Source[] + */ + public function setSources($sources) + { + $this->sources = $sources; + } + /** + * @return Source[] + */ + public function getSources() + { + return $this->sources; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PersonMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_PersonMetadata'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonResponse.php new file mode 100644 index 000000000..b3aa43812 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonResponse.php @@ -0,0 +1,92 @@ +httpStatusCode = $httpStatusCode; + } + /** + * @return int + */ + public function getHttpStatusCode() + { + return $this->httpStatusCode; + } + /** + * @param Person + */ + public function setPerson(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person $person) + { + $this->person = $person; + } + /** + * @return Person + */ + public function getPerson() + { + return $this->person; + } + /** + * @param string + */ + public function setRequestedResourceName($requestedResourceName) + { + $this->requestedResourceName = $requestedResourceName; + } + /** + * @return string + */ + public function getRequestedResourceName() + { + return $this->requestedResourceName; + } + /** + * @param Status + */ + public function setStatus(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Status $status) + { + $this->status = $status; + } + /** + * @return Status + */ + public function getStatus() + { + return $this->status; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PersonResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_PersonResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PhoneNumber.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PhoneNumber.php new file mode 100644 index 000000000..f7dbb0a14 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PhoneNumber.php @@ -0,0 +1,112 @@ +canonicalForm = $canonicalForm; + } + /** + * @return string + */ + public function getCanonicalForm() + { + return $this->canonicalForm; + } + /** + * @param string + */ + public function setFormattedType($formattedType) + { + $this->formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PhoneNumber::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_PhoneNumber'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Photo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Photo.php new file mode 100644 index 000000000..60a1850da --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Photo.php @@ -0,0 +1,76 @@ +default = $default; + } + /** + * @return bool + */ + public function getDefault() + { + return $this->default; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Photo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Photo'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ProfileMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ProfileMetadata.php new file mode 100644 index 000000000..ddc584e8d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ProfileMetadata.php @@ -0,0 +1,61 @@ +objectType = $objectType; + } + /** + * @return string + */ + public function getObjectType() + { + return $this->objectType; + } + /** + * @param string[] + */ + public function setUserTypes($userTypes) + { + $this->userTypes = $userTypes; + } + /** + * @return string[] + */ + public function getUserTypes() + { + return $this->userTypes; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ProfileMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ProfileMetadata'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Relation.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Relation.php new file mode 100644 index 000000000..ac308c9d9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Relation.php @@ -0,0 +1,94 @@ +formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setPerson($person) + { + $this->person = $person; + } + /** + * @return string + */ + public function getPerson() + { + return $this->person; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Relation::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Relation'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipInterest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipInterest.php new file mode 100644 index 000000000..f663a8781 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipInterest.php @@ -0,0 +1,76 @@ +formattedValue = $formattedValue; + } + /** + * @return string + */ + public function getFormattedValue() + { + return $this->formattedValue; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\RelationshipInterest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_RelationshipInterest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipStatus.php new file mode 100644 index 000000000..b74fbd50f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipStatus.php @@ -0,0 +1,76 @@ +formattedValue = $formattedValue; + } + /** + * @return string + */ + public function getFormattedValue() + { + return $this->formattedValue; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\RelationshipStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_RelationshipStatus'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Residence.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Residence.php new file mode 100644 index 000000000..7740bc2f0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Residence.php @@ -0,0 +1,76 @@ +current = $current; + } + /** + * @return bool + */ + public function getCurrent() + { + return $this->current; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Residence::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Residence'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroups.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroups.php new file mode 100644 index 000000000..dba91f6b3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroups.php @@ -0,0 +1,168 @@ + + * $peopleService = new Google\Service\PeopleService(...); + * $contactGroups = $peopleService->contactGroups; + * + */ +class ContactGroups extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Get a list of contact groups owned by the authenticated user by specifying a + * list of contact group resource names. (contactGroups.batchGet) + * + * @param array $optParams Optional parameters. + * + * @opt_param string groupFields Optional. A field mask to restrict which fields + * on the group are returned. Defaults to `metadata`, `groupType`, + * `memberCount`, and `name` if not set or set to empty. Valid fields are: * + * clientData * groupType * memberCount * metadata * name + * @opt_param int maxMembers Optional. Specifies the maximum number of members + * to return for each group. Defaults to 0 if not set, which will return zero + * members. + * @opt_param string resourceNames Required. The resource names of the contact + * groups to get. There is a maximum of 200 resource names. + * @return BatchGetContactGroupsResponse + */ + public function batchGet($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchGetContactGroupsResponse::class); + } + /** + * Create a new contact group owned by the authenticated user. Created contact + * group names must be unique to the users contact groups. Attempting to create + * a group with a duplicate name will return a HTTP 409 error. Mutate requests + * for the same user should be sent sequentially to avoid increased latency and + * failures. (contactGroups.create) + * + * @param CreateContactGroupRequest $postBody + * @param array $optParams Optional parameters. + * @return ContactGroup + */ + public function create(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CreateContactGroupRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class); + } + /** + * Delete an existing contact group owned by the authenticated user by + * specifying a contact group resource name. Mutate requests for the same user + * should be sent sequentially to avoid increased latency and failures. + * (contactGroups.delete) + * + * @param string $resourceName Required. The resource name of the contact group + * to delete. + * @param array $optParams Optional parameters. + * + * @opt_param bool deleteContacts Optional. Set to true to also delete the + * contacts in the specified group. + * @return PeopleEmpty + */ + public function delete($resourceName, $optParams = []) + { + $params = ['resourceName' => $resourceName]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\PeopleEmpty::class); + } + /** + * Get a specific contact group owned by the authenticated user by specifying a + * contact group resource name. (contactGroups.get) + * + * @param string $resourceName Required. The resource name of the contact group + * to get. + * @param array $optParams Optional parameters. + * + * @opt_param string groupFields Optional. A field mask to restrict which fields + * on the group are returned. Defaults to `metadata`, `groupType`, + * `memberCount`, and `name` if not set or set to empty. Valid fields are: * + * clientData * groupType * memberCount * metadata * name + * @opt_param int maxMembers Optional. Specifies the maximum number of members + * to return. Defaults to 0 if not set, which will return zero members. + * @return ContactGroup + */ + public function get($resourceName, $optParams = []) + { + $params = ['resourceName' => $resourceName]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class); + } + /** + * List all contact groups owned by the authenticated user. Members of the + * contact groups are not populated. (contactGroups.listContactGroups) + * + * @param array $optParams Optional parameters. + * + * @opt_param string groupFields Optional. A field mask to restrict which fields + * on the group are returned. Defaults to `metadata`, `groupType`, + * `memberCount`, and `name` if not set or set to empty. Valid fields are: * + * clientData * groupType * memberCount * metadata * name + * @opt_param int pageSize Optional. The maximum number of resources to return. + * Valid values are between 1 and 1000, inclusive. Defaults to 30 if not set or + * set to 0. + * @opt_param string pageToken Optional. The next_page_token value returned from + * a previous call to + * [ListContactGroups](/people/api/rest/v1/contactgroups/list). Requests the + * next page of resources. + * @opt_param string syncToken Optional. A sync token, returned by a previous + * call to `contactgroups.list`. Only resources changed since the sync token was + * created will be returned. + * @return ListContactGroupsResponse + */ + public function listContactGroups($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListContactGroupsResponse::class); + } + /** + * Update the name of an existing contact group owned by the authenticated user. + * Updated contact group names must be unique to the users contact groups. + * Attempting to create a group with a duplicate name will return a HTTP 409 + * error. Mutate requests for the same user should be sent sequentially to avoid + * increased latency and failures. (contactGroups.update) + * + * @param string $resourceName The resource name for the contact group, assigned + * by the server. An ASCII string, in the form of + * `contactGroups/{contact_group_id}`. + * @param UpdateContactGroupRequest $postBody + * @param array $optParams Optional parameters. + * @return ContactGroup + */ + public function update($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactGroupRequest $postBody, $optParams = []) + { + $params = ['resourceName' => $resourceName, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroups::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_ContactGroups'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroupsMembers.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroupsMembers.php new file mode 100644 index 000000000..cbc15f63d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroupsMembers.php @@ -0,0 +1,52 @@ + + * $peopleService = new Google\Service\PeopleService(...); + * $members = $peopleService->members; + * + */ +class ContactGroupsMembers extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Modify the members of a contact group owned by the authenticated user. The + * only system contact groups that can have members added are + * `contactGroups/myContacts` and `contactGroups/starred`. Other system contact + * groups are deprecated and can only have contacts removed. (members.modify) + * + * @param string $resourceName Required. The resource name of the contact group + * to modify. + * @param ModifyContactGroupMembersRequest $postBody + * @param array $optParams Optional parameters. + * @return ModifyContactGroupMembersResponse + */ + public function modify($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersRequest $postBody, $optParams = []) + { + $params = ['resourceName' => $resourceName, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('modify', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroupsMembers::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_ContactGroupsMembers'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/OtherContacts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/OtherContacts.php new file mode 100644 index 000000000..a4ba506dd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/OtherContacts.php @@ -0,0 +1,147 @@ + + * $peopleService = new Google\Service\PeopleService(...); + * $otherContacts = $peopleService->otherContacts; + * + */ +class OtherContacts extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Copies an "Other contact" to a new contact in the user's "myContacts" group + * Mutate requests for the same user should be sent sequentially to avoid + * increased latency and failures. + * (otherContacts.copyOtherContactToMyContactsGroup) + * + * @param string $resourceName Required. The resource name of the "Other + * contact" to copy. + * @param CopyOtherContactToMyContactsGroupRequest $postBody + * @param array $optParams Optional parameters. + * @return Person + */ + public function copyOtherContactToMyContactsGroup($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\CopyOtherContactToMyContactsGroupRequest $postBody, $optParams = []) + { + $params = ['resourceName' => $resourceName, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('copyOtherContactToMyContactsGroup', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class); + } + /** + * List all "Other contacts", that is contacts that are not in a contact group. + * "Other contacts" are typically auto created contacts from interactions. Sync + * tokens expire 7 days after the full sync. A request with an expired sync + * token will get an error with an [google.rpc.ErrorInfo](https://cloud.google.c + * om/apis/design/errors#error_info) with reason "EXPIRED_SYNC_TOKEN". In the + * case of such an error clients should make a full sync request without a + * `sync_token`. The first page of a full sync request has an additional quota. + * If the quota is exceeded, a 429 error will be returned. This quota is fixed + * and can not be increased. When the `sync_token` is specified, resources + * deleted since the last sync will be returned as a person with + * `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` + * is specified, all other request parameters must match the first call. Writes + * may have a propagation delay of several minutes for sync requests. + * Incremental syncs are not intended for read-after-write use cases. See + * example usage at [List the user's other contacts that have + * changed](/people/v1/other- + * contacts#list_the_users_other_contacts_that_have_changed). + * (otherContacts.listOtherContacts) + * + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize Optional. The number of "Other contacts" to include + * in the response. Valid values are between 1 and 1000, inclusive. Defaults to + * 100 if not set or set to 0. + * @opt_param string pageToken Optional. A page token, received from a previous + * response `next_page_token`. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `otherContacts.list` must + * match the first call that provided the page token. + * @opt_param string readMask Required. A field mask to restrict which fields on + * each person are returned. Multiple fields can be specified by separating them + * with commas. What values are valid depend on what ReadSourceType is used. If + * READ_SOURCE_TYPE_CONTACT is used, valid values are: * emailAddresses * + * metadata * names * phoneNumbers * photos If READ_SOURCE_TYPE_PROFILE is used, + * valid values are: * addresses * ageRanges * biographies * birthdays * + * calendarUrls * clientData * coverPhotos * emailAddresses * events * + * externalIds * genders * imClients * interests * locales * locations * + * memberships * metadata * miscKeywords * names * nicknames * occupations * + * organizations * phoneNumbers * photos * relations * sipAddresses * skills * + * urls * userDefined + * @opt_param bool requestSyncToken Optional. Whether the response should return + * `next_sync_token` on the last page of results. It can be used to get + * incremental changes since the last request by setting it on the request + * `sync_token`. More details about sync behavior at `otherContacts.list`. + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_CONTACT if not set. Possible values for this + * field are: * READ_SOURCE_TYPE_CONTACT * + * READ_SOURCE_TYPE_CONTACT,READ_SOURCE_TYPE_PROFILE Specifying + * READ_SOURCE_TYPE_PROFILE without specifying READ_SOURCE_TYPE_CONTACT is not + * permitted. + * @opt_param string syncToken Optional. A sync token, received from a previous + * response `next_sync_token` Provide this to retrieve only the resources + * changed since the last request. When syncing, all other parameters provided + * to `otherContacts.list` must match the first call that provided the sync + * token. More details about sync behavior at `otherContacts.list`. + * @return ListOtherContactsResponse + */ + public function listOtherContacts($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListOtherContactsResponse::class); + } + /** + * Provides a list of contacts in the authenticated user's other contacts that + * matches the search query. The query matches on a contact's `names`, + * `emailAddresses`, and `phoneNumbers` fields that are from the OTHER_CONTACT + * source. **IMPORTANT**: Before searching, clients should send a warmup request + * with an empty query to update the cache. See + * https://developers.google.com/people/v1/other- + * contacts#search_the_users_other_contacts (otherContacts.search) + * + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize Optional. The number of results to return. Defaults + * to 10 if field is not set, or set to 0. Values greater than 30 will be capped + * to 30. + * @opt_param string query Required. The plain-text query for the request. The + * query is used to match prefix phrases of the fields on a person. For example, + * a person with name "foo name" matches queries such as "f", "fo", "foo", "foo + * n", "nam", etc., but not "oo n". + * @opt_param string readMask Required. A field mask to restrict which fields on + * each person are returned. Multiple fields can be specified by separating them + * with commas. Valid values are: * emailAddresses * metadata * names * + * phoneNumbers + * @return SearchResponse + */ + public function search($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('search', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\OtherContacts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_OtherContacts'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/People.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/People.php new file mode 100644 index 000000000..521818a85 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/People.php @@ -0,0 +1,421 @@ + + * $peopleService = new Google\Service\PeopleService(...); + * $people = $peopleService->people; + * + */ +class People extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Create a batch of new contacts and return the PersonResponses for the newly + * Mutate requests for the same user should be sent sequentially to avoid + * increased latency and failures. (people.batchCreateContacts) + * + * @param BatchCreateContactsRequest $postBody + * @param array $optParams Optional parameters. + * @return BatchCreateContactsResponse + */ + public function batchCreateContacts(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchCreateContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsResponse::class); + } + /** + * Delete a batch of contacts. Any non-contact data will not be deleted. Mutate + * requests for the same user should be sent sequentially to avoid increased + * latency and failures. (people.batchDeleteContacts) + * + * @param BatchDeleteContactsRequest $postBody + * @param array $optParams Optional parameters. + * @return PeopleEmpty + */ + public function batchDeleteContacts(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchDeleteContactsRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchDeleteContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\PeopleEmpty::class); + } + /** + * Update a batch of contacts and return a map of resource names to + * PersonResponses for the updated contacts. Mutate requests for the same user + * should be sent sequentially to avoid increased latency and failures. + * (people.batchUpdateContacts) + * + * @param BatchUpdateContactsRequest $postBody + * @param array $optParams Optional parameters. + * @return BatchUpdateContactsResponse + */ + public function batchUpdateContacts(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchUpdateContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsResponse::class); + } + /** + * Create a new contact and return the person resource for that contact. The + * request returns a 400 error if more than one field is specified on a field + * that is a singleton for contact sources: * biographies * birthdays * genders + * * names Mutate requests for the same user should be sent sequentially to + * avoid increased latency and failures. (people.createContact) + * + * @param Person $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string personFields Required. A field mask to restrict which + * fields on each person are returned. Multiple fields can be specified by + * separating them with commas. Defaults to all fields if not set. Valid values + * are: * addresses * ageRanges * biographies * birthdays * calendarUrls * + * clientData * coverPhotos * emailAddresses * events * externalIds * genders * + * imClients * interests * locales * locations * memberships * metadata * + * miscKeywords * names * nicknames * occupations * organizations * phoneNumbers + * * photos * relations * sipAddresses * skills * urls * userDefined + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set. + * @return Person + */ + public function createContact(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('createContact', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class); + } + /** + * Delete a contact person. Any non-contact data will not be deleted. Mutate + * requests for the same user should be sent sequentially to avoid increased + * latency and failures. (people.deleteContact) + * + * @param string $resourceName Required. The resource name of the contact to + * delete. + * @param array $optParams Optional parameters. + * @return PeopleEmpty + */ + public function deleteContact($resourceName, $optParams = []) + { + $params = ['resourceName' => $resourceName]; + $params = \array_merge($params, $optParams); + return $this->call('deleteContact', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\PeopleEmpty::class); + } + /** + * Delete a contact's photo. Mutate requests for the same user should be done + * sequentially to avoid // lock contention. (people.deleteContactPhoto) + * + * @param string $resourceName Required. The resource name of the contact whose + * photo will be deleted. + * @param array $optParams Optional parameters. + * + * @opt_param string personFields Optional. A field mask to restrict which + * fields on the person are returned. Multiple fields can be specified by + * separating them with commas. Defaults to empty if not set, which will skip + * the post mutate get. Valid values are: * addresses * ageRanges * biographies + * * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * + * events * externalIds * genders * imClients * interests * locales * locations + * * memberships * metadata * miscKeywords * names * nicknames * occupations * + * organizations * phoneNumbers * photos * relations * sipAddresses * skills * + * urls * userDefined + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set. + * @return DeleteContactPhotoResponse + */ + public function deleteContactPhoto($resourceName, $optParams = []) + { + $params = ['resourceName' => $resourceName]; + $params = \array_merge($params, $optParams); + return $this->call('deleteContactPhoto', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\DeleteContactPhotoResponse::class); + } + /** + * Provides information about a person by specifying a resource name. Use + * `people/me` to indicate the authenticated user. The request returns a 400 + * error if 'personFields' is not specified. (people.get) + * + * @param string $resourceName Required. The resource name of the person to + * provide information about. - To get information about the authenticated user, + * specify `people/me`. - To get information about a google account, specify + * `people/{account_id}`. - To get information about a contact, specify the + * resource name that identifies the contact as returned by + * `people.connections.list`. + * @param array $optParams Optional parameters. + * + * @opt_param string personFields Required. A field mask to restrict which + * fields on the person are returned. Multiple fields can be specified by + * separating them with commas. Valid values are: * addresses * ageRanges * + * biographies * birthdays * calendarUrls * clientData * coverPhotos * + * emailAddresses * events * externalIds * genders * imClients * interests * + * locales * locations * memberships * metadata * miscKeywords * names * + * nicknames * occupations * organizations * phoneNumbers * photos * relations * + * sipAddresses * skills * urls * userDefined + * @opt_param string requestMask.includeField Required. Comma-separated list of + * person fields to be included in the response. Each path should start with + * `person.`: for example, `person.names` or `person.photos`. + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_PROFILE and READ_SOURCE_TYPE_CONTACT if not set. + * @return Person + */ + public function get($resourceName, $optParams = []) + { + $params = ['resourceName' => $resourceName]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class); + } + /** + * Provides information about a list of specific people by specifying a list of + * requested resource names. Use `people/me` to indicate the authenticated user. + * The request returns a 400 error if 'personFields' is not specified. + * (people.getBatchGet) + * + * @param array $optParams Optional parameters. + * + * @opt_param string personFields Required. A field mask to restrict which + * fields on each person are returned. Multiple fields can be specified by + * separating them with commas. Valid values are: * addresses * ageRanges * + * biographies * birthdays * calendarUrls * clientData * coverPhotos * + * emailAddresses * events * externalIds * genders * imClients * interests * + * locales * locations * memberships * metadata * miscKeywords * names * + * nicknames * occupations * organizations * phoneNumbers * photos * relations * + * sipAddresses * skills * urls * userDefined + * @opt_param string requestMask.includeField Required. Comma-separated list of + * person fields to be included in the response. Each path should start with + * `person.`: for example, `person.names` or `person.photos`. + * @opt_param string resourceNames Required. The resource names of the people to + * provide information about. It's repeatable. The URL query parameter should be + * resourceNames==&... - To get information about the authenticated user, + * specify `people/me`. - To get information about a google account, specify + * `people/{account_id}`. - To get information about a contact, specify the + * resource name that identifies the contact as returned by + * `people.connections.list`. There is a maximum of 200 resource names. + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set. + * @return GetPeopleResponse + */ + public function getBatchGet($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('getBatchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\GetPeopleResponse::class); + } + /** + * Provides a list of domain profiles and domain contacts in the authenticated + * user's domain directory. When the `sync_token` is specified, resources + * deleted since the last sync will be returned as a person with + * `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` + * is specified, all other request parameters must match the first call. Writes + * may have a propagation delay of several minutes for sync requests. + * Incremental syncs are not intended for read-after-write use cases. See + * example usage at [List the directory people that have + * changed](/people/v1/directory#list_the_directory_people_that_have_changed). + * (people.listDirectoryPeople) + * + * @param array $optParams Optional parameters. + * + * @opt_param string mergeSources Optional. Additional data to merge into the + * directory sources if they are connected through verified join keys such as + * email addresses or phone numbers. + * @opt_param int pageSize Optional. The number of people to include in the + * response. Valid values are between 1 and 1000, inclusive. Defaults to 100 if + * not set or set to 0. + * @opt_param string pageToken Optional. A page token, received from a previous + * response `next_page_token`. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * `people.listDirectoryPeople` must match the first call that provided the page + * token. + * @opt_param string readMask Required. A field mask to restrict which fields on + * each person are returned. Multiple fields can be specified by separating them + * with commas. Valid values are: * addresses * ageRanges * biographies * + * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * events + * * externalIds * genders * imClients * interests * locales * locations * + * memberships * metadata * miscKeywords * names * nicknames * occupations * + * organizations * phoneNumbers * photos * relations * sipAddresses * skills * + * urls * userDefined + * @opt_param bool requestSyncToken Optional. Whether the response should return + * `next_sync_token`. It can be used to get incremental changes since the last + * request by setting it on the request `sync_token`. More details about sync + * behavior at `people.listDirectoryPeople`. + * @opt_param string sources Required. Directory sources to return. + * @opt_param string syncToken Optional. A sync token, received from a previous + * response `next_sync_token` Provide this to retrieve only the resources + * changed since the last request. When syncing, all other parameters provided + * to `people.listDirectoryPeople` must match the first call that provided the + * sync token. More details about sync behavior at `people.listDirectoryPeople`. + * @return ListDirectoryPeopleResponse + */ + public function listDirectoryPeople($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('listDirectoryPeople', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListDirectoryPeopleResponse::class); + } + /** + * Provides a list of contacts in the authenticated user's grouped contacts that + * matches the search query. The query matches on a contact's `names`, + * `nickNames`, `emailAddresses`, `phoneNumbers`, and `organizations` fields + * that are from the CONTACT source. **IMPORTANT**: Before searching, clients + * should send a warmup request with an empty query to update the cache. See + * https://developers.google.com/people/v1/contacts#search_the_users_contacts + * (people.searchContacts) + * + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize Optional. The number of results to return. Defaults + * to 10 if field is not set, or set to 0. Values greater than 30 will be capped + * to 30. + * @opt_param string query Required. The plain-text query for the request. The + * query is used to match prefix phrases of the fields on a person. For example, + * a person with name "foo name" matches queries such as "f", "fo", "foo", "foo + * n", "nam", etc., but not "oo n". + * @opt_param string readMask Required. A field mask to restrict which fields on + * each person are returned. Multiple fields can be specified by separating them + * with commas. Valid values are: * addresses * ageRanges * biographies * + * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * events + * * externalIds * genders * imClients * interests * locales * locations * + * memberships * metadata * miscKeywords * names * nicknames * occupations * + * organizations * phoneNumbers * photos * relations * sipAddresses * skills * + * urls * userDefined + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_CONTACT if not set. + * @return SearchResponse + */ + public function searchContacts($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('searchContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResponse::class); + } + /** + * Provides a list of domain profiles and domain contacts in the authenticated + * user's domain directory that match the search query. + * (people.searchDirectoryPeople) + * + * @param array $optParams Optional parameters. + * + * @opt_param string mergeSources Optional. Additional data to merge into the + * directory sources if they are connected through verified join keys such as + * email addresses or phone numbers. + * @opt_param int pageSize Optional. The number of people to include in the + * response. Valid values are between 1 and 500, inclusive. Defaults to 100 if + * not set or set to 0. + * @opt_param string pageToken Optional. A page token, received from a previous + * response `next_page_token`. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `SearchDirectoryPeople` + * must match the first call that provided the page token. + * @opt_param string query Required. Prefix query that matches fields in the + * person. Does NOT use the read_mask for determining what fields to match. + * @opt_param string readMask Required. A field mask to restrict which fields on + * each person are returned. Multiple fields can be specified by separating them + * with commas. Valid values are: * addresses * ageRanges * biographies * + * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * events + * * externalIds * genders * imClients * interests * locales * locations * + * memberships * metadata * miscKeywords * names * nicknames * occupations * + * organizations * phoneNumbers * photos * relations * sipAddresses * skills * + * urls * userDefined + * @opt_param string sources Required. Directory sources to return. + * @return SearchDirectoryPeopleResponse + */ + public function searchDirectoryPeople($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('searchDirectoryPeople', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchDirectoryPeopleResponse::class); + } + /** + * Update contact data for an existing contact person. Any non-contact data will + * not be modified. Any non-contact data in the person to update will be + * ignored. All fields specified in the `update_mask` will be replaced. The + * server returns a 400 error if `person.metadata.sources` is not specified for + * the contact to be updated or if there is no contact source. The server + * returns a 400 error with reason `"failedPrecondition"` if + * `person.metadata.sources.etag` is different than the contact's etag, which + * indicates the contact has changed since its data was read. Clients should get + * the latest person and merge their updates into the latest person. The server + * returns a 400 error if `memberships` are being updated and there are no + * contact group memberships specified on the person. The server returns a 400 + * error if more than one field is specified on a field that is a singleton for + * contact sources: * biographies * birthdays * genders * names Mutate requests + * for the same user should be sent sequentially to avoid increased latency and + * failures. (people.updateContact) + * + * @param string $resourceName The resource name for the person, assigned by the + * server. An ASCII string with a max length of 27 characters, in the form of + * `people/{person_id}`. + * @param Person $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string personFields Optional. A field mask to restrict which + * fields on each person are returned. Multiple fields can be specified by + * separating them with commas. Defaults to all fields if not set. Valid values + * are: * addresses * ageRanges * biographies * birthdays * calendarUrls * + * clientData * coverPhotos * emailAddresses * events * externalIds * genders * + * imClients * interests * locales * locations * memberships * metadata * + * miscKeywords * names * nicknames * occupations * organizations * phoneNumbers + * * photos * relations * sipAddresses * skills * urls * userDefined + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set. + * @opt_param string updatePersonFields Required. A field mask to restrict which + * fields on the person are updated. Multiple fields can be specified by + * separating them with commas. All updated fields will be replaced. Valid + * values are: * addresses * biographies * birthdays * calendarUrls * clientData + * * emailAddresses * events * externalIds * genders * imClients * interests * + * locales * locations * memberships * miscKeywords * names * nicknames * + * occupations * organizations * phoneNumbers * relations * sipAddresses * urls + * * userDefined + * @return Person + */ + public function updateContact($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person $postBody, $optParams = []) + { + $params = ['resourceName' => $resourceName, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateContact', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class); + } + /** + * Update a contact's photo. Mutate requests for the same user should be sent + * sequentially to avoid increased latency and failures. + * (people.updateContactPhoto) + * + * @param string $resourceName Required. Person resource name + * @param UpdateContactPhotoRequest $postBody + * @param array $optParams Optional parameters. + * @return UpdateContactPhotoResponse + */ + public function updateContactPhoto($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoRequest $postBody, $optParams = []) + { + $params = ['resourceName' => $resourceName, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateContactPhoto', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\People::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_People'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/PeopleConnections.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/PeopleConnections.php new file mode 100644 index 000000000..6cbc14167 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/PeopleConnections.php @@ -0,0 +1,94 @@ + + * $peopleService = new Google\Service\PeopleService(...); + * $connections = $peopleService->connections; + * + */ +class PeopleConnections extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Provides a list of the authenticated user's contacts. Sync tokens expire 7 + * days after the full sync. A request with an expired sync token will get an + * error with an [google.rpc.ErrorInfo](https://cloud.google.com/apis/design/err + * ors#error_info) with reason "EXPIRED_SYNC_TOKEN". In the case of such an + * error clients should make a full sync request without a `sync_token`. The + * first page of a full sync request has an additional quota. If the quota is + * exceeded, a 429 error will be returned. This quota is fixed and can not be + * increased. When the `sync_token` is specified, resources deleted since the + * last sync will be returned as a person with `PersonMetadata.deleted` set to + * true. When the `page_token` or `sync_token` is specified, all other request + * parameters must match the first call. Writes may have a propagation delay of + * several minutes for sync requests. Incremental syncs are not intended for + * read-after-write use cases. See example usage at [List the user's contacts + * that have + * changed](/people/v1/contacts#list_the_users_contacts_that_have_changed). + * (connections.listPeopleConnections) + * + * @param string $resourceName Required. The resource name to return connections + * for. Only `people/me` is valid. + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize Optional. The number of connections to include in the + * response. Valid values are between 1 and 1000, inclusive. Defaults to 100 if + * not set or set to 0. + * @opt_param string pageToken Optional. A page token, received from a previous + * response `next_page_token`. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to `people.connections.list` + * must match the first call that provided the page token. + * @opt_param string personFields Required. A field mask to restrict which + * fields on each person are returned. Multiple fields can be specified by + * separating them with commas. Valid values are: * addresses * ageRanges * + * biographies * birthdays * calendarUrls * clientData * coverPhotos * + * emailAddresses * events * externalIds * genders * imClients * interests * + * locales * locations * memberships * metadata * miscKeywords * names * + * nicknames * occupations * organizations * phoneNumbers * photos * relations * + * sipAddresses * skills * urls * userDefined + * @opt_param string requestMask.includeField Required. Comma-separated list of + * person fields to be included in the response. Each path should start with + * `person.`: for example, `person.names` or `person.photos`. + * @opt_param bool requestSyncToken Optional. Whether the response should return + * `next_sync_token` on the last page of results. It can be used to get + * incremental changes since the last request by setting it on the request + * `sync_token`. More details about sync behavior at `people.connections.list`. + * @opt_param string sortOrder Optional. The order in which the connections + * should be sorted. Defaults to `LAST_MODIFIED_ASCENDING`. + * @opt_param string sources Optional. A mask of what source types to return. + * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set. + * @opt_param string syncToken Optional. A sync token, received from a previous + * response `next_sync_token` Provide this to retrieve only the resources + * changed since the last request. When syncing, all other parameters provided + * to `people.connections.list` must match the first call that provided the sync + * token. More details about sync behavior at `people.connections.list`. + * @return ListConnectionsResponse + */ + public function listPeopleConnections($resourceName, $optParams = []) + { + $params = ['resourceName' => $resourceName]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListConnectionsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\PeopleConnections::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_PeopleConnections'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchDirectoryPeopleResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchDirectoryPeopleResponse.php new file mode 100644 index 000000000..eee0ff8ce --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchDirectoryPeopleResponse.php @@ -0,0 +1,77 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Person[] + */ + public function setPeople($people) + { + $this->people = $people; + } + /** + * @return Person[] + */ + public function getPeople() + { + return $this->people; + } + /** + * @param int + */ + public function setTotalSize($totalSize) + { + $this->totalSize = $totalSize; + } + /** + * @return int + */ + public function getTotalSize() + { + return $this->totalSize; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchDirectoryPeopleResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SearchDirectoryPeopleResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResponse.php new file mode 100644 index 000000000..166ac5cc5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResponse.php @@ -0,0 +1,41 @@ +results = $results; + } + /** + * @return SearchResult[] + */ + public function getResults() + { + return $this->results; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SearchResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResult.php new file mode 100644 index 000000000..b2bc91cbf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResult.php @@ -0,0 +1,40 @@ +person = $person; + } + /** + * @return Person + */ + public function getPerson() + { + return $this->person; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SearchResult'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SipAddress.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SipAddress.php new file mode 100644 index 000000000..4166bf0d2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SipAddress.php @@ -0,0 +1,94 @@ +formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SipAddress::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SipAddress'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Skill.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Skill.php new file mode 100644 index 000000000..c2763853f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Skill.php @@ -0,0 +1,58 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Skill::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Skill'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Source.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Source.php new file mode 100644 index 000000000..6b36dd44d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Source.php @@ -0,0 +1,112 @@ +etag = $etag; + } + /** + * @return string + */ + public function getEtag() + { + return $this->etag; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param ProfileMetadata + */ + public function setProfileMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ProfileMetadata $profileMetadata) + { + $this->profileMetadata = $profileMetadata; + } + /** + * @return ProfileMetadata + */ + public function getProfileMetadata() + { + return $this->profileMetadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUpdateTime($updateTime) + { + $this->updateTime = $updateTime; + } + /** + * @return string + */ + public function getUpdateTime() + { + return $this->updateTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Source::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Source'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Status.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Status.php new file mode 100644 index 000000000..8e35dbf2d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Status.php @@ -0,0 +1,79 @@ +code = $code; + } + /** + * @return int + */ + public function getCode() + { + return $this->code; + } + /** + * @param array[] + */ + public function setDetails($details) + { + $this->details = $details; + } + /** + * @return array[] + */ + public function getDetails() + { + return $this->details; + } + /** + * @param string + */ + public function setMessage($message) + { + $this->message = $message; + } + /** + * @return string + */ + public function getMessage() + { + return $this->message; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Status::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Status'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Tagline.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Tagline.php new file mode 100644 index 000000000..92994d4bd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Tagline.php @@ -0,0 +1,58 @@ +metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Tagline::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Tagline'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactGroupRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactGroupRequest.php new file mode 100644 index 000000000..47d060206 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactGroupRequest.php @@ -0,0 +1,76 @@ +contactGroup = $contactGroup; + } + /** + * @return ContactGroup + */ + public function getContactGroup() + { + return $this->contactGroup; + } + /** + * @param string + */ + public function setReadGroupFields($readGroupFields) + { + $this->readGroupFields = $readGroupFields; + } + /** + * @return string + */ + public function getReadGroupFields() + { + return $this->readGroupFields; + } + /** + * @param string + */ + public function setUpdateGroupFields($updateGroupFields) + { + $this->updateGroupFields = $updateGroupFields; + } + /** + * @return string + */ + public function getUpdateGroupFields() + { + return $this->updateGroupFields; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactGroupRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UpdateContactGroupRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoRequest.php new file mode 100644 index 000000000..ed9301326 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoRequest.php @@ -0,0 +1,79 @@ +personFields = $personFields; + } + /** + * @return string + */ + public function getPersonFields() + { + return $this->personFields; + } + /** + * @param string + */ + public function setPhotoBytes($photoBytes) + { + $this->photoBytes = $photoBytes; + } + /** + * @return string + */ + public function getPhotoBytes() + { + return $this->photoBytes; + } + /** + * @param string[] + */ + public function setSources($sources) + { + $this->sources = $sources; + } + /** + * @return string[] + */ + public function getSources() + { + return $this->sources; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UpdateContactPhotoRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoResponse.php new file mode 100644 index 000000000..47660b746 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoResponse.php @@ -0,0 +1,40 @@ +person = $person; + } + /** + * @return Person + */ + public function getPerson() + { + return $this->person; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UpdateContactPhotoResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Url.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Url.php new file mode 100644 index 000000000..95adbc354 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Url.php @@ -0,0 +1,94 @@ +formattedType = $formattedType; + } + /** + * @return string + */ + public function getFormattedType() + { + return $this->formattedType; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Url::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Url'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UserDefined.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UserDefined.php new file mode 100644 index 000000000..e0381aa3b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UserDefined.php @@ -0,0 +1,76 @@ +key = $key; + } + /** + * @return string + */ + public function getKey() + { + return $this->key; + } + /** + * @param FieldMetadata + */ + public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata) + { + $this->metadata = $metadata; + } + /** + * @return FieldMetadata + */ + public function getMetadata() + { + return $this->metadata; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UserDefined::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UserDefined'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole.php new file mode 100644 index 000000000..adeb8a1ae --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole.php @@ -0,0 +1,69 @@ + + * The Search Console API provides access to both Search Console data (verified + * users only) and to public information on an URL basis (anyone)

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class SearchConsole extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** View and manage Search Console data for your verified sites. */ + const WEBMASTERS = "https://www.googleapis.com/auth/webmasters"; + /** View Search Console data for your verified sites. */ + const WEBMASTERS_READONLY = "https://www.googleapis.com/auth/webmasters.readonly"; + public $searchanalytics; + public $sitemaps; + public $sites; + public $urlInspection_index; + public $urlTestingTools_mobileFriendlyTest; + /** + * Constructs the internal representation of the SearchConsole service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://searchconsole.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v1'; + $this->serviceName = 'searchconsole'; + $this->searchanalytics = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Searchanalytics($this, $this->serviceName, 'searchanalytics', ['methods' => ['query' => ['path' => 'webmasters/v3/sites/{siteUrl}/searchAnalytics/query', 'httpMethod' => 'POST', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->sitemaps = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sitemaps($this, $this->serviceName, 'sitemaps', ['methods' => ['delete' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}', 'httpMethod' => 'DELETE', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'feedpath' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}', 'httpMethod' => 'GET', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'feedpath' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps', 'httpMethod' => 'GET', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sitemapIndex' => ['location' => 'query', 'type' => 'string']]], 'submit' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}', 'httpMethod' => 'PUT', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'feedpath' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->sites = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sites($this, $this->serviceName, 'sites', ['methods' => ['add' => ['path' => 'webmasters/v3/sites/{siteUrl}', 'httpMethod' => 'PUT', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'webmasters/v3/sites/{siteUrl}', 'httpMethod' => 'DELETE', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'webmasters/v3/sites/{siteUrl}', 'httpMethod' => 'GET', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'webmasters/v3/sites', 'httpMethod' => 'GET', 'parameters' => []]]]); + $this->urlInspection_index = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlInspectionIndex($this, $this->serviceName, 'index', ['methods' => ['inspect' => ['path' => 'v1/urlInspection/index:inspect', 'httpMethod' => 'POST', 'parameters' => []]]]); + $this->urlTestingTools_mobileFriendlyTest = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlTestingToolsMobileFriendlyTest($this, $this->serviceName, 'mobileFriendlyTest', ['methods' => ['run' => ['path' => 'v1/urlTestingTools/mobileFriendlyTest:run', 'httpMethod' => 'POST', 'parameters' => []]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpInspectionResult.php new file mode 100644 index 000000000..3447e8d9d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpInspectionResult.php @@ -0,0 +1,167 @@ +ampIndexStatusVerdict = $ampIndexStatusVerdict; + } + /** + * @return string + */ + public function getAmpIndexStatusVerdict() + { + return $this->ampIndexStatusVerdict; + } + /** + * @param string + */ + public function setAmpUrl($ampUrl) + { + $this->ampUrl = $ampUrl; + } + /** + * @return string + */ + public function getAmpUrl() + { + return $this->ampUrl; + } + /** + * @param string + */ + public function setIndexingState($indexingState) + { + $this->indexingState = $indexingState; + } + /** + * @return string + */ + public function getIndexingState() + { + return $this->indexingState; + } + /** + * @param AmpIssue[] + */ + public function setIssues($issues) + { + $this->issues = $issues; + } + /** + * @return AmpIssue[] + */ + public function getIssues() + { + return $this->issues; + } + /** + * @param string + */ + public function setLastCrawlTime($lastCrawlTime) + { + $this->lastCrawlTime = $lastCrawlTime; + } + /** + * @return string + */ + public function getLastCrawlTime() + { + return $this->lastCrawlTime; + } + /** + * @param string + */ + public function setPageFetchState($pageFetchState) + { + $this->pageFetchState = $pageFetchState; + } + /** + * @return string + */ + public function getPageFetchState() + { + return $this->pageFetchState; + } + /** + * @param string + */ + public function setRobotsTxtState($robotsTxtState) + { + $this->robotsTxtState = $robotsTxtState; + } + /** + * @return string + */ + public function getRobotsTxtState() + { + return $this->robotsTxtState; + } + /** + * @param string + */ + public function setVerdict($verdict) + { + $this->verdict = $verdict; + } + /** + * @return string + */ + public function getVerdict() + { + return $this->verdict; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\AmpInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_AmpInspectionResult'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpIssue.php new file mode 100644 index 000000000..5de05509a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpIssue.php @@ -0,0 +1,60 @@ +issueMessage = $issueMessage; + } + /** + * @return string + */ + public function getIssueMessage() + { + return $this->issueMessage; + } + /** + * @param string + */ + public function setSeverity($severity) + { + $this->severity = $severity; + } + /** + * @return string + */ + public function getSeverity() + { + return $this->severity; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\AmpIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_AmpIssue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDataRow.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDataRow.php new file mode 100644 index 000000000..f7fcf026d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDataRow.php @@ -0,0 +1,79 @@ +clicks = $clicks; + } + public function getClicks() + { + return $this->clicks; + } + public function setCtr($ctr) + { + $this->ctr = $ctr; + } + public function getCtr() + { + return $this->ctr; + } + public function setImpressions($impressions) + { + $this->impressions = $impressions; + } + public function getImpressions() + { + return $this->impressions; + } + /** + * @param string[] + */ + public function setKeys($keys) + { + $this->keys = $keys; + } + /** + * @return string[] + */ + public function getKeys() + { + return $this->keys; + } + public function setPosition($position) + { + $this->position = $position; + } + public function getPosition() + { + return $this->position; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ApiDataRow::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ApiDataRow'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilter.php new file mode 100644 index 000000000..91c47092a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilter.php @@ -0,0 +1,78 @@ +dimension = $dimension; + } + /** + * @return string + */ + public function getDimension() + { + return $this->dimension; + } + /** + * @param string + */ + public function setExpression($expression) + { + $this->expression = $expression; + } + /** + * @return string + */ + public function getExpression() + { + return $this->expression; + } + /** + * @param string + */ + public function setOperator($operator) + { + $this->operator = $operator; + } + /** + * @return string + */ + public function getOperator() + { + return $this->operator; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ApiDimensionFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ApiDimensionFilter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilterGroup.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilterGroup.php new file mode 100644 index 000000000..2422e1cc1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilterGroup.php @@ -0,0 +1,59 @@ +filters = $filters; + } + /** + * @return ApiDimensionFilter[] + */ + public function getFilters() + { + return $this->filters; + } + /** + * @param string + */ + public function setGroupType($groupType) + { + $this->groupType = $groupType; + } + /** + * @return string + */ + public function getGroupType() + { + return $this->groupType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ApiDimensionFilterGroup::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ApiDimensionFilterGroup'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/BlockedResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/BlockedResource.php new file mode 100644 index 000000000..bf4bae68e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/BlockedResource.php @@ -0,0 +1,42 @@ +url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\BlockedResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_BlockedResource'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/DetectedItems.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/DetectedItems.php new file mode 100644 index 000000000..f364ee74f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/DetectedItems.php @@ -0,0 +1,59 @@ +items = $items; + } + /** + * @return Item[] + */ + public function getItems() + { + return $this->items; + } + /** + * @param string + */ + public function setRichResultType($richResultType) + { + $this->richResultType = $richResultType; + } + /** + * @return string + */ + public function getRichResultType() + { + return $this->richResultType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\DetectedItems::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_DetectedItems'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Image.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Image.php new file mode 100644 index 000000000..f77bcf5ce --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Image.php @@ -0,0 +1,60 @@ +data = $data; + } + /** + * @return string + */ + public function getData() + { + return $this->data; + } + /** + * @param string + */ + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + /** + * @return string + */ + public function getMimeType() + { + return $this->mimeType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Image::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Image'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/IndexStatusInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/IndexStatusInspectionResult.php new file mode 100644 index 000000000..e8c848ae9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/IndexStatusInspectionResult.php @@ -0,0 +1,223 @@ +coverageState = $coverageState; + } + /** + * @return string + */ + public function getCoverageState() + { + return $this->coverageState; + } + /** + * @param string + */ + public function setCrawledAs($crawledAs) + { + $this->crawledAs = $crawledAs; + } + /** + * @return string + */ + public function getCrawledAs() + { + return $this->crawledAs; + } + /** + * @param string + */ + public function setGoogleCanonical($googleCanonical) + { + $this->googleCanonical = $googleCanonical; + } + /** + * @return string + */ + public function getGoogleCanonical() + { + return $this->googleCanonical; + } + /** + * @param string + */ + public function setIndexingState($indexingState) + { + $this->indexingState = $indexingState; + } + /** + * @return string + */ + public function getIndexingState() + { + return $this->indexingState; + } + /** + * @param string + */ + public function setLastCrawlTime($lastCrawlTime) + { + $this->lastCrawlTime = $lastCrawlTime; + } + /** + * @return string + */ + public function getLastCrawlTime() + { + return $this->lastCrawlTime; + } + /** + * @param string + */ + public function setPageFetchState($pageFetchState) + { + $this->pageFetchState = $pageFetchState; + } + /** + * @return string + */ + public function getPageFetchState() + { + return $this->pageFetchState; + } + /** + * @param string[] + */ + public function setReferringUrls($referringUrls) + { + $this->referringUrls = $referringUrls; + } + /** + * @return string[] + */ + public function getReferringUrls() + { + return $this->referringUrls; + } + /** + * @param string + */ + public function setRobotsTxtState($robotsTxtState) + { + $this->robotsTxtState = $robotsTxtState; + } + /** + * @return string + */ + public function getRobotsTxtState() + { + return $this->robotsTxtState; + } + /** + * @param string[] + */ + public function setSitemap($sitemap) + { + $this->sitemap = $sitemap; + } + /** + * @return string[] + */ + public function getSitemap() + { + return $this->sitemap; + } + /** + * @param string + */ + public function setUserCanonical($userCanonical) + { + $this->userCanonical = $userCanonical; + } + /** + * @return string + */ + public function getUserCanonical() + { + return $this->userCanonical; + } + /** + * @param string + */ + public function setVerdict($verdict) + { + $this->verdict = $verdict; + } + /** + * @return string + */ + public function getVerdict() + { + return $this->verdict; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\IndexStatusInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_IndexStatusInspectionResult'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexRequest.php new file mode 100644 index 000000000..744ac6f92 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexRequest.php @@ -0,0 +1,78 @@ +inspectionUrl = $inspectionUrl; + } + /** + * @return string + */ + public function getInspectionUrl() + { + return $this->inspectionUrl; + } + /** + * @param string + */ + public function setLanguageCode($languageCode) + { + $this->languageCode = $languageCode; + } + /** + * @return string + */ + public function getLanguageCode() + { + return $this->languageCode; + } + /** + * @param string + */ + public function setSiteUrl($siteUrl) + { + $this->siteUrl = $siteUrl; + } + /** + * @return string + */ + public function getSiteUrl() + { + return $this->siteUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_InspectUrlIndexRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexResponse.php new file mode 100644 index 000000000..9bbb050a4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexResponse.php @@ -0,0 +1,40 @@ +inspectionResult = $inspectionResult; + } + /** + * @return UrlInspectionResult + */ + public function getInspectionResult() + { + return $this->inspectionResult; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_InspectUrlIndexResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Item.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Item.php new file mode 100644 index 000000000..3e9ec6c1b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Item.php @@ -0,0 +1,59 @@ +issues = $issues; + } + /** + * @return RichResultsIssue[] + */ + public function getIssues() + { + return $this->issues; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Item::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Item'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileFriendlyIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileFriendlyIssue.php new file mode 100644 index 000000000..e4e24f827 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileFriendlyIssue.php @@ -0,0 +1,42 @@ +rule = $rule; + } + /** + * @return string + */ + public function getRule() + { + return $this->rule; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileFriendlyIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_MobileFriendlyIssue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityInspectionResult.php new file mode 100644 index 000000000..a2cd34454 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityInspectionResult.php @@ -0,0 +1,59 @@ +issues = $issues; + } + /** + * @return MobileUsabilityIssue[] + */ + public function getIssues() + { + return $this->issues; + } + /** + * @param string + */ + public function setVerdict($verdict) + { + $this->verdict = $verdict; + } + /** + * @return string + */ + public function getVerdict() + { + return $this->verdict; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileUsabilityInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_MobileUsabilityInspectionResult'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityIssue.php new file mode 100644 index 000000000..6b81e464b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityIssue.php @@ -0,0 +1,78 @@ +issueType = $issueType; + } + /** + * @return string + */ + public function getIssueType() + { + return $this->issueType; + } + /** + * @param string + */ + public function setMessage($message) + { + $this->message = $message; + } + /** + * @return string + */ + public function getMessage() + { + return $this->message; + } + /** + * @param string + */ + public function setSeverity($severity) + { + $this->severity = $severity; + } + /** + * @return string + */ + public function getSeverity() + { + return $this->severity; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileUsabilityIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_MobileUsabilityIssue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Searchanalytics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Searchanalytics.php new file mode 100644 index 000000000..a5a807696 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Searchanalytics.php @@ -0,0 +1,54 @@ + + * $searchconsoleService = new Google\Service\SearchConsole(...); + * $searchanalytics = $searchconsoleService->searchanalytics; + * + */ +class Searchanalytics extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Query your data with filters and parameters that you define. Returns zero or + * more rows grouped by the row keys that you define. You must define a date + * range of one or more days. When date is one of the group by values, any days + * without data are omitted from the result list. If you need to know which days + * have data, issue a broad date range query grouped by date for any metric, and + * see which day rows are returned. (searchanalytics.query) + * + * @param string $siteUrl The site's URL, including protocol. For example: + * `http://www.example.com/`. + * @param SearchAnalyticsQueryRequest $postBody + * @param array $optParams Optional parameters. + * @return SearchAnalyticsQueryResponse + */ + public function query($siteUrl, \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryRequest $postBody, $optParams = []) + { + $params = ['siteUrl' => $siteUrl, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('query', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Searchanalytics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_Searchanalytics'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sitemaps.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sitemaps.php new file mode 100644 index 000000000..cb2be4e74 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sitemaps.php @@ -0,0 +1,101 @@ + + * $searchconsoleService = new Google\Service\SearchConsole(...); + * $sitemaps = $searchconsoleService->sitemaps; + * + */ +class Sitemaps extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Deletes a sitemap from the Sitemaps report. Does not stop Google from + * crawling this sitemap or the URLs that were previously crawled in the deleted + * sitemap. (sitemaps.delete) + * + * @param string $siteUrl The site's URL, including protocol. For example: + * `http://www.example.com/`. + * @param string $feedpath The URL of the actual sitemap. For example: + * `http://www.example.com/sitemap.xml`. + * @param array $optParams Optional parameters. + */ + public function delete($siteUrl, $feedpath, $optParams = []) + { + $params = ['siteUrl' => $siteUrl, 'feedpath' => $feedpath]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Retrieves information about a specific sitemap. (sitemaps.get) + * + * @param string $siteUrl The site's URL, including protocol. For example: + * `http://www.example.com/`. + * @param string $feedpath The URL of the actual sitemap. For example: + * `http://www.example.com/sitemap.xml`. + * @param array $optParams Optional parameters. + * @return WmxSitemap + */ + public function get($siteUrl, $feedpath, $optParams = []) + { + $params = ['siteUrl' => $siteUrl, 'feedpath' => $feedpath]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSitemap::class); + } + /** + * Lists the [sitemaps-entries](/webmaster-tools/v3/sitemaps) submitted for this + * site, or included in the sitemap index file (if `sitemapIndex` is specified + * in the request). (sitemaps.listSitemaps) + * + * @param string $siteUrl The site's URL, including protocol. For example: + * `http://www.example.com/`. + * @param array $optParams Optional parameters. + * + * @opt_param string sitemapIndex A URL of a site's sitemap index. For example: + * `http://www.example.com/sitemapindex.xml`. + * @return SitemapsListResponse + */ + public function listSitemaps($siteUrl, $optParams = []) + { + $params = ['siteUrl' => $siteUrl]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitemapsListResponse::class); + } + /** + * Submits a sitemap for a site. (sitemaps.submit) + * + * @param string $siteUrl The site's URL, including protocol. For example: + * `http://www.example.com/`. + * @param string $feedpath The URL of the actual sitemap. For example: + * `http://www.example.com/sitemap.xml`. + * @param array $optParams Optional parameters. + */ + public function submit($siteUrl, $feedpath, $optParams = []) + { + $params = ['siteUrl' => $siteUrl, 'feedpath' => $feedpath]; + $params = \array_merge($params, $optParams); + return $this->call('submit', [$params]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sitemaps::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_Sitemaps'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sites.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sites.php new file mode 100644 index 000000000..657755fc2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sites.php @@ -0,0 +1,86 @@ + + * $searchconsoleService = new Google\Service\SearchConsole(...); + * $sites = $searchconsoleService->sites; + * + */ +class Sites extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Adds a site to the set of the user's sites in Search Console. (sites.add) + * + * @param string $siteUrl The URL of the site to add. + * @param array $optParams Optional parameters. + */ + public function add($siteUrl, $optParams = []) + { + $params = ['siteUrl' => $siteUrl]; + $params = \array_merge($params, $optParams); + return $this->call('add', [$params]); + } + /** + * Removes a site from the set of the user's Search Console sites. + * (sites.delete) + * + * @param string $siteUrl The URI of the property as defined in Search Console. + * **Examples:** `http://www.example.com/` or `sc-domain:example.com`. + * @param array $optParams Optional parameters. + */ + public function delete($siteUrl, $optParams = []) + { + $params = ['siteUrl' => $siteUrl]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Retrieves information about specific site. (sites.get) + * + * @param string $siteUrl The URI of the property as defined in Search Console. + * **Examples:** `http://www.example.com/` or `sc-domain:example.com`. + * @param array $optParams Optional parameters. + * @return WmxSite + */ + public function get($siteUrl, $optParams = []) + { + $params = ['siteUrl' => $siteUrl]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSite::class); + } + /** + * Lists the user's Search Console sites. (sites.listSites) + * + * @param array $optParams Optional parameters. + * @return SitesListResponse + */ + public function listSites($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitesListResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sites::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_Sites'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspection.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspection.php new file mode 100644 index 000000000..2974fbbd3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspection.php @@ -0,0 +1,32 @@ + + * $searchconsoleService = new Google\Service\SearchConsole(...); + * $urlInspection = $searchconsoleService->urlInspection; + * + */ +class UrlInspection extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlInspection::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlInspection'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspectionIndex.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspectionIndex.php new file mode 100644 index 000000000..883be199d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspectionIndex.php @@ -0,0 +1,47 @@ + + * $searchconsoleService = new Google\Service\SearchConsole(...); + * $index = $searchconsoleService->index; + * + */ +class UrlInspectionIndex extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Index inspection. (index.inspect) + * + * @param InspectUrlIndexRequest $postBody + * @param array $optParams Optional parameters. + * @return InspectUrlIndexResponse + */ + public function inspect(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('inspect', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlInspectionIndex::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlInspectionIndex'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingTools.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingTools.php new file mode 100644 index 000000000..6984151a4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingTools.php @@ -0,0 +1,32 @@ + + * $searchconsoleService = new Google\Service\SearchConsole(...); + * $urlTestingTools = $searchconsoleService->urlTestingTools; + * + */ +class UrlTestingTools extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlTestingTools::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlTestingTools'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingToolsMobileFriendlyTest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingToolsMobileFriendlyTest.php new file mode 100644 index 000000000..2e06be643 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingToolsMobileFriendlyTest.php @@ -0,0 +1,47 @@ + + * $searchconsoleService = new Google\Service\SearchConsole(...); + * $mobileFriendlyTest = $searchconsoleService->mobileFriendlyTest; + * + */ +class UrlTestingToolsMobileFriendlyTest extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Runs Mobile-Friendly Test for a given URL. (mobileFriendlyTest.run) + * + * @param RunMobileFriendlyTestRequest $postBody + * @param array $optParams Optional parameters. + * @return RunMobileFriendlyTestResponse + */ + public function run(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('run', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlTestingToolsMobileFriendlyTest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlTestingToolsMobileFriendlyTest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ResourceIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ResourceIssue.php new file mode 100644 index 000000000..56137817b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ResourceIssue.php @@ -0,0 +1,40 @@ +blockedResource = $blockedResource; + } + /** + * @return BlockedResource + */ + public function getBlockedResource() + { + return $this->blockedResource; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ResourceIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ResourceIssue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsInspectionResult.php new file mode 100644 index 000000000..ab988883d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsInspectionResult.php @@ -0,0 +1,59 @@ +detectedItems = $detectedItems; + } + /** + * @return DetectedItems[] + */ + public function getDetectedItems() + { + return $this->detectedItems; + } + /** + * @param string + */ + public function setVerdict($verdict) + { + $this->verdict = $verdict; + } + /** + * @return string + */ + public function getVerdict() + { + return $this->verdict; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RichResultsInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RichResultsInspectionResult'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsIssue.php new file mode 100644 index 000000000..897e138d7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsIssue.php @@ -0,0 +1,60 @@ +issueMessage = $issueMessage; + } + /** + * @return string + */ + public function getIssueMessage() + { + return $this->issueMessage; + } + /** + * @param string + */ + public function setSeverity($severity) + { + $this->severity = $severity; + } + /** + * @return string + */ + public function getSeverity() + { + return $this->severity; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RichResultsIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RichResultsIssue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestRequest.php new file mode 100644 index 000000000..4f1f5b95e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestRequest.php @@ -0,0 +1,60 @@ +requestScreenshot = $requestScreenshot; + } + /** + * @return bool + */ + public function getRequestScreenshot() + { + return $this->requestScreenshot; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RunMobileFriendlyTestRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestResponse.php new file mode 100644 index 000000000..c11d7135f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestResponse.php @@ -0,0 +1,107 @@ +mobileFriendliness = $mobileFriendliness; + } + /** + * @return string + */ + public function getMobileFriendliness() + { + return $this->mobileFriendliness; + } + /** + * @param MobileFriendlyIssue[] + */ + public function setMobileFriendlyIssues($mobileFriendlyIssues) + { + $this->mobileFriendlyIssues = $mobileFriendlyIssues; + } + /** + * @return MobileFriendlyIssue[] + */ + public function getMobileFriendlyIssues() + { + return $this->mobileFriendlyIssues; + } + /** + * @param ResourceIssue[] + */ + public function setResourceIssues($resourceIssues) + { + $this->resourceIssues = $resourceIssues; + } + /** + * @return ResourceIssue[] + */ + public function getResourceIssues() + { + return $this->resourceIssues; + } + /** + * @param Image + */ + public function setScreenshot(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Image $screenshot) + { + $this->screenshot = $screenshot; + } + /** + * @return Image + */ + public function getScreenshot() + { + return $this->screenshot; + } + /** + * @param TestStatus + */ + public function setTestStatus(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\TestStatus $testStatus) + { + $this->testStatus = $testStatus; + } + /** + * @return TestStatus + */ + public function getTestStatus() + { + return $this->testStatus; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RunMobileFriendlyTestResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryRequest.php new file mode 100644 index 000000000..95e2e0bf8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryRequest.php @@ -0,0 +1,203 @@ +aggregationType = $aggregationType; + } + /** + * @return string + */ + public function getAggregationType() + { + return $this->aggregationType; + } + /** + * @param string + */ + public function setDataState($dataState) + { + $this->dataState = $dataState; + } + /** + * @return string + */ + public function getDataState() + { + return $this->dataState; + } + /** + * @param ApiDimensionFilterGroup[] + */ + public function setDimensionFilterGroups($dimensionFilterGroups) + { + $this->dimensionFilterGroups = $dimensionFilterGroups; + } + /** + * @return ApiDimensionFilterGroup[] + */ + public function getDimensionFilterGroups() + { + return $this->dimensionFilterGroups; + } + /** + * @param string[] + */ + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + /** + * @return string[] + */ + public function getDimensions() + { + return $this->dimensions; + } + /** + * @param string + */ + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + /** + * @return string + */ + public function getEndDate() + { + return $this->endDate; + } + /** + * @param int + */ + public function setRowLimit($rowLimit) + { + $this->rowLimit = $rowLimit; + } + /** + * @return int + */ + public function getRowLimit() + { + return $this->rowLimit; + } + /** + * @param string + */ + public function setSearchType($searchType) + { + $this->searchType = $searchType; + } + /** + * @return string + */ + public function getSearchType() + { + return $this->searchType; + } + /** + * @param string + */ + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + /** + * @return string + */ + public function getStartDate() + { + return $this->startDate; + } + /** + * @param int + */ + public function setStartRow($startRow) + { + $this->startRow = $startRow; + } + /** + * @return int + */ + public function getStartRow() + { + return $this->startRow; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SearchAnalyticsQueryRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryResponse.php new file mode 100644 index 000000000..f998cab05 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryResponse.php @@ -0,0 +1,59 @@ +responseAggregationType = $responseAggregationType; + } + /** + * @return string + */ + public function getResponseAggregationType() + { + return $this->responseAggregationType; + } + /** + * @param ApiDataRow[] + */ + public function setRows($rows) + { + $this->rows = $rows; + } + /** + * @return ApiDataRow[] + */ + public function getRows() + { + return $this->rows; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SearchAnalyticsQueryResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitemapsListResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitemapsListResponse.php new file mode 100644 index 000000000..d2e7904b5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitemapsListResponse.php @@ -0,0 +1,41 @@ +sitemap = $sitemap; + } + /** + * @return WmxSitemap[] + */ + public function getSitemap() + { + return $this->sitemap; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitemapsListResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SitemapsListResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitesListResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitesListResponse.php new file mode 100644 index 000000000..7c4fe412c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitesListResponse.php @@ -0,0 +1,41 @@ +siteEntry = $siteEntry; + } + /** + * @return WmxSite[] + */ + public function getSiteEntry() + { + return $this->siteEntry; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitesListResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SitesListResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/TestStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/TestStatus.php new file mode 100644 index 000000000..ad3323ba3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/TestStatus.php @@ -0,0 +1,60 @@ +details = $details; + } + /** + * @return string + */ + public function getDetails() + { + return $this->details; + } + /** + * @param string + */ + public function setStatus($status) + { + $this->status = $status; + } + /** + * @return string + */ + public function getStatus() + { + return $this->status; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\TestStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_TestStatus'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/UrlInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/UrlInspectionResult.php new file mode 100644 index 000000000..dfff7259f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/UrlInspectionResult.php @@ -0,0 +1,106 @@ +ampResult = $ampResult; + } + /** + * @return AmpInspectionResult + */ + public function getAmpResult() + { + return $this->ampResult; + } + /** + * @param IndexStatusInspectionResult + */ + public function setIndexStatusResult(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\IndexStatusInspectionResult $indexStatusResult) + { + $this->indexStatusResult = $indexStatusResult; + } + /** + * @return IndexStatusInspectionResult + */ + public function getIndexStatusResult() + { + return $this->indexStatusResult; + } + /** + * @param string + */ + public function setInspectionResultLink($inspectionResultLink) + { + $this->inspectionResultLink = $inspectionResultLink; + } + /** + * @return string + */ + public function getInspectionResultLink() + { + return $this->inspectionResultLink; + } + /** + * @param MobileUsabilityInspectionResult + */ + public function setMobileUsabilityResult(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileUsabilityInspectionResult $mobileUsabilityResult) + { + $this->mobileUsabilityResult = $mobileUsabilityResult; + } + /** + * @return MobileUsabilityInspectionResult + */ + public function getMobileUsabilityResult() + { + return $this->mobileUsabilityResult; + } + /** + * @param RichResultsInspectionResult + */ + public function setRichResultsResult(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RichResultsInspectionResult $richResultsResult) + { + $this->richResultsResult = $richResultsResult; + } + /** + * @return RichResultsInspectionResult + */ + public function getRichResultsResult() + { + return $this->richResultsResult; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\UrlInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_UrlInspectionResult'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSite.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSite.php new file mode 100644 index 000000000..dbc2de150 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSite.php @@ -0,0 +1,60 @@ +permissionLevel = $permissionLevel; + } + /** + * @return string + */ + public function getPermissionLevel() + { + return $this->permissionLevel; + } + /** + * @param string + */ + public function setSiteUrl($siteUrl) + { + $this->siteUrl = $siteUrl; + } + /** + * @return string + */ + public function getSiteUrl() + { + return $this->siteUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSite::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_WmxSite'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemap.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemap.php new file mode 100644 index 000000000..1778f055f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemap.php @@ -0,0 +1,185 @@ +contents = $contents; + } + /** + * @return WmxSitemapContent[] + */ + public function getContents() + { + return $this->contents; + } + /** + * @param string + */ + public function setErrors($errors) + { + $this->errors = $errors; + } + /** + * @return string + */ + public function getErrors() + { + return $this->errors; + } + /** + * @param bool + */ + public function setIsPending($isPending) + { + $this->isPending = $isPending; + } + /** + * @return bool + */ + public function getIsPending() + { + return $this->isPending; + } + /** + * @param bool + */ + public function setIsSitemapsIndex($isSitemapsIndex) + { + $this->isSitemapsIndex = $isSitemapsIndex; + } + /** + * @return bool + */ + public function getIsSitemapsIndex() + { + return $this->isSitemapsIndex; + } + /** + * @param string + */ + public function setLastDownloaded($lastDownloaded) + { + $this->lastDownloaded = $lastDownloaded; + } + /** + * @return string + */ + public function getLastDownloaded() + { + return $this->lastDownloaded; + } + /** + * @param string + */ + public function setLastSubmitted($lastSubmitted) + { + $this->lastSubmitted = $lastSubmitted; + } + /** + * @return string + */ + public function getLastSubmitted() + { + return $this->lastSubmitted; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + /** + * @return string + */ + public function getWarnings() + { + return $this->warnings; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSitemap::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_WmxSitemap'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemapContent.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemapContent.php new file mode 100644 index 000000000..15721ec4d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemapContent.php @@ -0,0 +1,78 @@ +indexed = $indexed; + } + /** + * @return string + */ + public function getIndexed() + { + return $this->indexed; + } + /** + * @param string + */ + public function setSubmitted($submitted) + { + $this->submitted = $submitted; + } + /** + * @return string + */ + public function getSubmitted() + { + return $this->submitted; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSitemapContent::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_WmxSitemapContent'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification.php new file mode 100644 index 000000000..82892f075 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification.php @@ -0,0 +1,60 @@ + + * Verifies ownership of websites or domains with Google.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class SiteVerification extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** Manage the list of sites and domains you control. */ + const SITEVERIFICATION = "https://www.googleapis.com/auth/siteverification"; + /** Manage your new site verifications with Google. */ + const SITEVERIFICATION_VERIFY_ONLY = "https://www.googleapis.com/auth/siteverification.verify_only"; + public $webResource; + /** + * Constructs the internal representation of the SiteVerification service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://www.googleapis.com/'; + $this->servicePath = 'siteVerification/v1/'; + $this->batchPath = 'batch/siteVerification/v1'; + $this->version = 'v1'; + $this->serviceName = 'siteVerification'; + $this->webResource = new \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\Resource\WebResource($this, $this->serviceName, 'webResource', ['methods' => ['delete' => ['path' => 'webResource/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'webResource/{id}', 'httpMethod' => 'GET', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getToken' => ['path' => 'token', 'httpMethod' => 'POST', 'parameters' => []], 'insert' => ['path' => 'webResource', 'httpMethod' => 'POST', 'parameters' => ['verificationMethod' => ['location' => 'query', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'webResource', 'httpMethod' => 'GET', 'parameters' => []], 'patch' => ['path' => 'webResource/{id}', 'httpMethod' => 'PATCH', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'webResource/{id}', 'httpMethod' => 'PUT', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/Resource/WebResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/Resource/WebResource.php new file mode 100644 index 000000000..324817bc3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/Resource/WebResource.php @@ -0,0 +1,132 @@ + + * $siteVerificationService = new Google\Service\SiteVerification(...); + * $webResource = $siteVerificationService->webResource; + * + */ +class WebResource extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Relinquish ownership of a website or domain. (webResource.delete) + * + * @param string $id The id of a verified site or domain. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = []) + { + $params = ['id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Get the most current data for a website or domain. (webResource.get) + * + * @param string $id The id of a verified site or domain. + * @param array $optParams Optional parameters. + * @return SiteVerificationWebResourceResource + */ + public function get($id, $optParams = []) + { + $params = ['id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class); + } + /** + * Get a verification token for placing on a website or domain. + * (webResource.getToken) + * + * @param SiteVerificationWebResourceGettokenRequest $postBody + * @param array $optParams Optional parameters. + * @return SiteVerificationWebResourceGettokenResponse + */ + public function getToken(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenRequest $postBody, $optParams = []) + { + $params = ['postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('getToken', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenResponse::class); + } + /** + * Attempt verification of a website or domain. (webResource.insert) + * + * @param string $verificationMethod The method to use for verifying a site or + * domain. + * @param SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return SiteVerificationWebResourceResource + */ + public function insert($verificationMethod, \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource $postBody, $optParams = []) + { + $params = ['verificationMethod' => $verificationMethod, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class); + } + /** + * Get the list of your verified websites and domains. + * (webResource.listWebResource) + * + * @param array $optParams Optional parameters. + * @return SiteVerificationWebResourceListResponse + */ + public function listWebResource($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceListResponse::class); + } + /** + * Modify the list of owners for your website or domain. This method supports + * patch semantics. (webResource.patch) + * + * @param string $id The id of a verified site or domain. + * @param SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return SiteVerificationWebResourceResource + */ + public function patch($id, \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource $postBody, $optParams = []) + { + $params = ['id' => $id, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class); + } + /** + * Modify the list of owners for your website or domain. (webResource.update) + * + * @param string $id The id of a verified site or domain. + * @param SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return SiteVerificationWebResourceResource + */ + public function update($id, \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource $postBody, $optParams = []) + { + $params = ['id' => $id, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\Resource\WebResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_Resource_WebResource'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequest.php new file mode 100644 index 000000000..ca640bbcd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequest.php @@ -0,0 +1,58 @@ +site = $site; + } + /** + * @return SiteVerificationWebResourceGettokenRequestSite + */ + public function getSite() + { + return $this->site; + } + /** + * @param string + */ + public function setVerificationMethod($verificationMethod) + { + $this->verificationMethod = $verificationMethod; + } + /** + * @return string + */ + public function getVerificationMethod() + { + return $this->verificationMethod; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequest'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequestSite.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequestSite.php new file mode 100644 index 000000000..a378dd277 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequestSite.php @@ -0,0 +1,60 @@ +identifier = $identifier; + } + /** + * @return string + */ + public function getIdentifier() + { + return $this->identifier; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenRequestSite::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenResponse.php new file mode 100644 index 000000000..fd44426e7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenResponse.php @@ -0,0 +1,60 @@ +method = $method; + } + /** + * @return string + */ + public function getMethod() + { + return $this->method; + } + /** + * @param string + */ + public function setToken($token) + { + $this->token = $token; + } + /** + * @return string + */ + public function getToken() + { + return $this->token; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceGettokenResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceListResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceListResponse.php new file mode 100644 index 000000000..a4e5c0200 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceListResponse.php @@ -0,0 +1,41 @@ +items = $items; + } + /** + * @return SiteVerificationWebResourceResource[] + */ + public function getItems() + { + return $this->items; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceListResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceListResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResource.php new file mode 100644 index 000000000..762447880 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResource.php @@ -0,0 +1,77 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string[] + */ + public function setOwners($owners) + { + $this->owners = $owners; + } + /** + * @return string[] + */ + public function getOwners() + { + return $this->owners; + } + /** + * @param SiteVerificationWebResourceResourceSite + */ + public function setSite(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResourceSite $site) + { + $this->site = $site; + } + /** + * @return SiteVerificationWebResourceResourceSite + */ + public function getSite() + { + return $this->site; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceResource'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResourceSite.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResourceSite.php new file mode 100644 index 000000000..d01fdcd1b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResourceSite.php @@ -0,0 +1,60 @@ +identifier = $identifier; + } + /** + * @return string + */ + public function getIdentifier() + { + return $this->identifier; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResourceSite::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager.php new file mode 100644 index 000000000..f14ad909a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager.php @@ -0,0 +1,102 @@ + + * This API allows clients to access and modify container and tag configuration.

+ * + *

+ * For more information about this service, see the API + * Documentation + *

+ * + * @author Google, Inc. + */ +class TagManager extends \Google\Site_Kit_Dependencies\Google\Service +{ + /** Delete your Google Tag Manager containers. */ + const TAGMANAGER_DELETE_CONTAINERS = "https://www.googleapis.com/auth/tagmanager.delete.containers"; + /** Manage your Google Tag Manager container and its subcomponents, excluding versioning and publishing. */ + const TAGMANAGER_EDIT_CONTAINERS = "https://www.googleapis.com/auth/tagmanager.edit.containers"; + /** Manage your Google Tag Manager container versions. */ + const TAGMANAGER_EDIT_CONTAINERVERSIONS = "https://www.googleapis.com/auth/tagmanager.edit.containerversions"; + /** View and manage your Google Tag Manager accounts. */ + const TAGMANAGER_MANAGE_ACCOUNTS = "https://www.googleapis.com/auth/tagmanager.manage.accounts"; + /** Manage user permissions of your Google Tag Manager account and container. */ + const TAGMANAGER_MANAGE_USERS = "https://www.googleapis.com/auth/tagmanager.manage.users"; + /** Publish your Google Tag Manager container versions. */ + const TAGMANAGER_PUBLISH = "https://www.googleapis.com/auth/tagmanager.publish"; + /** View your Google Tag Manager container and its subcomponents. */ + const TAGMANAGER_READONLY = "https://www.googleapis.com/auth/tagmanager.readonly"; + public $accounts; + public $accounts_containers; + public $accounts_containers_destinations; + public $accounts_containers_environments; + public $accounts_containers_version_headers; + public $accounts_containers_versions; + public $accounts_containers_workspaces; + public $accounts_containers_workspaces_built_in_variables; + public $accounts_containers_workspaces_clients; + public $accounts_containers_workspaces_folders; + public $accounts_containers_workspaces_gtag_config; + public $accounts_containers_workspaces_tags; + public $accounts_containers_workspaces_templates; + public $accounts_containers_workspaces_triggers; + public $accounts_containers_workspaces_variables; + public $accounts_containers_workspaces_zones; + public $accounts_user_permissions; + /** + * Constructs the internal representation of the TagManager service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://tagmanager.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v2'; + $this->serviceName = 'tagmanager'; + $this->accounts = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\Accounts($this, $this->serviceName, 'accounts', ['methods' => ['get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/accounts', 'httpMethod' => 'GET', 'parameters' => ['includeGoogleTags' => ['location' => 'query', 'type' => 'boolean'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainers($this, $this->serviceName, 'containers', ['methods' => ['combine' => ['path' => 'tagmanager/v2/{+path}:combine', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'allowUserPermissionFeatureUpdate' => ['location' => 'query', 'type' => 'boolean'], 'containerId' => ['location' => 'query', 'type' => 'string'], 'settingSource' => ['location' => 'query', 'type' => 'string']]], 'create' => ['path' => 'tagmanager/v2/{+parent}/containers', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/containers', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'lookup' => ['path' => 'tagmanager/v2/accounts/containers:lookup', 'httpMethod' => 'GET', 'parameters' => ['destinationId' => ['location' => 'query', 'type' => 'string']]], 'move_tag_id' => ['path' => 'tagmanager/v2/{+path}:move_tag_id', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'allowUserPermissionFeatureUpdate' => ['location' => 'query', 'type' => 'boolean'], 'copySettings' => ['location' => 'query', 'type' => 'boolean'], 'copyTermsOfService' => ['location' => 'query', 'type' => 'boolean'], 'copyUsers' => ['location' => 'query', 'type' => 'boolean'], 'tagId' => ['location' => 'query', 'type' => 'string'], 'tagName' => ['location' => 'query', 'type' => 'string']]], 'snippet' => ['path' => 'tagmanager/v2/{+path}:snippet', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_destinations = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersDestinations($this, $this->serviceName, 'destinations', ['methods' => ['get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'link' => ['path' => 'tagmanager/v2/{+parent}/destinations:link', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'allowUserPermissionFeatureUpdate' => ['location' => 'query', 'type' => 'boolean'], 'destinationId' => ['location' => 'query', 'type' => 'string']]], 'list' => ['path' => 'tagmanager/v2/{+parent}/destinations', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->accounts_containers_environments = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersEnvironments($this, $this->serviceName, 'environments', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/environments', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/environments', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'reauthorize' => ['path' => 'tagmanager/v2/{+path}:reauthorize', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_version_headers = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersionHeaders($this, $this->serviceName, 'version_headers', ['methods' => ['latest' => ['path' => 'tagmanager/v2/{+parent}/version_headers:latest', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/version_headers', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'includeDeleted' => ['location' => 'query', 'type' => 'boolean'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_versions = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersions($this, $this->serviceName, 'versions', ['methods' => ['delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'containerVersionId' => ['location' => 'query', 'type' => 'string']]], 'live' => ['path' => 'tagmanager/v2/{+parent}/versions:live', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'publish' => ['path' => 'tagmanager/v2/{+path}:publish', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'set_latest' => ['path' => 'tagmanager/v2/{+path}:set_latest', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'undelete' => ['path' => 'tagmanager/v2/{+path}:undelete', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspaces($this, $this->serviceName, 'workspaces', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/workspaces', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create_version' => ['path' => 'tagmanager/v2/{+path}:create_version', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getStatus' => ['path' => 'tagmanager/v2/{+path}/status', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/workspaces', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'quick_preview' => ['path' => 'tagmanager/v2/{+path}:quick_preview', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'resolve_conflict' => ['path' => 'tagmanager/v2/{+path}:resolve_conflict', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'sync' => ['path' => 'tagmanager/v2/{+path}:sync', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_built_in_variables = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesBuiltInVariables($this, $this->serviceName, 'built_in_variables', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/built_in_variables', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'type' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'type' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/built_in_variables', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}/built_in_variables:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'type' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_clients = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesClients($this, $this->serviceName, 'clients', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/clients', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/clients', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_folders = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesFolders($this, $this->serviceName, 'folders', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/folders', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'entities' => ['path' => 'tagmanager/v2/{+path}:entities', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/folders', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'move_entities_to_folder' => ['path' => 'tagmanager/v2/{+path}:move_entities_to_folder', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'tagId' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'triggerId' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'variableId' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_gtag_config = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesGtagConfig($this, $this->serviceName, 'gtag_config', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/gtag_config', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/gtag_config', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_tags = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTags($this, $this->serviceName, 'tags', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/tags', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/tags', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_templates = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTemplates($this, $this->serviceName, 'templates', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/templates', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/templates', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_triggers = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTriggers($this, $this->serviceName, 'triggers', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/triggers', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/triggers', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_variables = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesVariables($this, $this->serviceName, 'variables', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/variables', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/variables', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_containers_workspaces_zones = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesZones($this, $this->serviceName, 'zones', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/zones', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/zones', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]); + $this->accounts_user_permissions = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsUserPermissions($this, $this->serviceName, 'user_permissions', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/user_permissions', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/user_permissions', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Account.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Account.php new file mode 100644 index 000000000..a5b48c214 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Account.php @@ -0,0 +1,148 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param AccountFeatures + */ + public function setFeatures(\Google\Site_Kit_Dependencies\Google\Service\TagManager\AccountFeatures $features) + { + $this->features = $features; + } + /** + * @return AccountFeatures + */ + public function getFeatures() + { + return $this->features; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param bool + */ + public function setShareData($shareData) + { + $this->shareData = $shareData; + } + /** + * @return bool + */ + public function getShareData() + { + return $this->shareData; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Account::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Account'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountAccess.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountAccess.php new file mode 100644 index 000000000..81c5e08d9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountAccess.php @@ -0,0 +1,42 @@ +permission = $permission; + } + /** + * @return string + */ + public function getPermission() + { + return $this->permission; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\AccountAccess::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_AccountAccess'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountFeatures.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountFeatures.php new file mode 100644 index 000000000..ebf0a3615 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountFeatures.php @@ -0,0 +1,60 @@ +supportMultipleContainers = $supportMultipleContainers; + } + /** + * @return bool + */ + public function getSupportMultipleContainers() + { + return $this->supportMultipleContainers; + } + /** + * @param bool + */ + public function setSupportUserPermissions($supportUserPermissions) + { + $this->supportUserPermissions = $supportUserPermissions; + } + /** + * @return bool + */ + public function getSupportUserPermissions() + { + return $this->supportUserPermissions; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\AccountFeatures::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_AccountFeatures'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/BuiltInVariable.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/BuiltInVariable.php new file mode 100644 index 000000000..c34536b6a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/BuiltInVariable.php @@ -0,0 +1,132 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\BuiltInVariable::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_BuiltInVariable'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Client.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Client.php new file mode 100644 index 000000000..10197868e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Client.php @@ -0,0 +1,257 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setClientId($clientId) + { + $this->clientId = $clientId; + } + /** + * @return string + */ + public function getClientId() + { + return $this->clientId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } + /** + * @param Parameter[] + */ + public function setParameter($parameter) + { + $this->parameter = $parameter; + } + /** + * @return Parameter[] + */ + public function getParameter() + { + return $this->parameter; + } + /** + * @param string + */ + public function setParentFolderId($parentFolderId) + { + $this->parentFolderId = $parentFolderId; + } + /** + * @return string + */ + public function getParentFolderId() + { + return $this->parentFolderId; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param int + */ + public function setPriority($priority) + { + $this->priority = $priority; + } + /** + * @return int + */ + public function getPriority() + { + return $this->priority; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Client'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Condition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Condition.php new file mode 100644 index 000000000..693463aae --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Condition.php @@ -0,0 +1,59 @@ +parameter = $parameter; + } + /** + * @return Parameter[] + */ + public function getParameter() + { + return $this->parameter; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Condition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Condition'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Container.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Container.php new file mode 100644 index 000000000..e10b13369 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Container.php @@ -0,0 +1,257 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string[] + */ + public function setDomainName($domainName) + { + $this->domainName = $domainName; + } + /** + * @return string[] + */ + public function getDomainName() + { + return $this->domainName; + } + /** + * @param ContainerFeatures + */ + public function setFeatures(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerFeatures $features) + { + $this->features = $features; + } + /** + * @return ContainerFeatures + */ + public function getFeatures() + { + return $this->features; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setPublicId($publicId) + { + $this->publicId = $publicId; + } + /** + * @return string + */ + public function getPublicId() + { + return $this->publicId; + } + /** + * @param string[] + */ + public function setTagIds($tagIds) + { + $this->tagIds = $tagIds; + } + /** + * @return string[] + */ + public function getTagIds() + { + return $this->tagIds; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string[] + */ + public function setTaggingServerUrls($taggingServerUrls) + { + $this->taggingServerUrls = $taggingServerUrls; + } + /** + * @return string[] + */ + public function getTaggingServerUrls() + { + return $this->taggingServerUrls; + } + /** + * @param string[] + */ + public function setUsageContext($usageContext) + { + $this->usageContext = $usageContext; + } + /** + * @return string[] + */ + public function getUsageContext() + { + return $this->usageContext; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Container'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerAccess.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerAccess.php new file mode 100644 index 000000000..503e60487 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerAccess.php @@ -0,0 +1,60 @@ +containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setPermission($permission) + { + $this->permission = $permission; + } + /** + * @return string + */ + public function getPermission() + { + return $this->permission; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerAccess::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerAccess'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerFeatures.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerFeatures.php new file mode 100644 index 000000000..831e01017 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerFeatures.php @@ -0,0 +1,258 @@ +supportBuiltInVariables = $supportBuiltInVariables; + } + /** + * @return bool + */ + public function getSupportBuiltInVariables() + { + return $this->supportBuiltInVariables; + } + /** + * @param bool + */ + public function setSupportClients($supportClients) + { + $this->supportClients = $supportClients; + } + /** + * @return bool + */ + public function getSupportClients() + { + return $this->supportClients; + } + /** + * @param bool + */ + public function setSupportEnvironments($supportEnvironments) + { + $this->supportEnvironments = $supportEnvironments; + } + /** + * @return bool + */ + public function getSupportEnvironments() + { + return $this->supportEnvironments; + } + /** + * @param bool + */ + public function setSupportFolders($supportFolders) + { + $this->supportFolders = $supportFolders; + } + /** + * @return bool + */ + public function getSupportFolders() + { + return $this->supportFolders; + } + /** + * @param bool + */ + public function setSupportGtagConfigs($supportGtagConfigs) + { + $this->supportGtagConfigs = $supportGtagConfigs; + } + /** + * @return bool + */ + public function getSupportGtagConfigs() + { + return $this->supportGtagConfigs; + } + /** + * @param bool + */ + public function setSupportTags($supportTags) + { + $this->supportTags = $supportTags; + } + /** + * @return bool + */ + public function getSupportTags() + { + return $this->supportTags; + } + /** + * @param bool + */ + public function setSupportTemplates($supportTemplates) + { + $this->supportTemplates = $supportTemplates; + } + /** + * @return bool + */ + public function getSupportTemplates() + { + return $this->supportTemplates; + } + /** + * @param bool + */ + public function setSupportTriggers($supportTriggers) + { + $this->supportTriggers = $supportTriggers; + } + /** + * @return bool + */ + public function getSupportTriggers() + { + return $this->supportTriggers; + } + /** + * @param bool + */ + public function setSupportUserPermissions($supportUserPermissions) + { + $this->supportUserPermissions = $supportUserPermissions; + } + /** + * @return bool + */ + public function getSupportUserPermissions() + { + return $this->supportUserPermissions; + } + /** + * @param bool + */ + public function setSupportVariables($supportVariables) + { + $this->supportVariables = $supportVariables; + } + /** + * @return bool + */ + public function getSupportVariables() + { + return $this->supportVariables; + } + /** + * @param bool + */ + public function setSupportVersions($supportVersions) + { + $this->supportVersions = $supportVersions; + } + /** + * @return bool + */ + public function getSupportVersions() + { + return $this->supportVersions; + } + /** + * @param bool + */ + public function setSupportWorkspaces($supportWorkspaces) + { + $this->supportWorkspaces = $supportWorkspaces; + } + /** + * @return bool + */ + public function getSupportWorkspaces() + { + return $this->supportWorkspaces; + } + /** + * @param bool + */ + public function setSupportZones($supportZones) + { + $this->supportZones = $supportZones; + } + /** + * @return bool + */ + public function getSupportZones() + { + return $this->supportZones; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerFeatures::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerFeatures'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersion.php new file mode 100644 index 000000000..243d8be70 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersion.php @@ -0,0 +1,347 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param BuiltInVariable[] + */ + public function setBuiltInVariable($builtInVariable) + { + $this->builtInVariable = $builtInVariable; + } + /** + * @return BuiltInVariable[] + */ + public function getBuiltInVariable() + { + return $this->builtInVariable; + } + /** + * @param Client[] + */ + public function setClient($client) + { + $this->client = $client; + } + /** + * @return Client[] + */ + public function getClient() + { + return $this->client; + } + /** + * @param Container + */ + public function setContainer(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Container $container) + { + $this->container = $container; + } + /** + * @return Container + */ + public function getContainer() + { + return $this->container; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setContainerVersionId($containerVersionId) + { + $this->containerVersionId = $containerVersionId; + } + /** + * @return string + */ + public function getContainerVersionId() + { + return $this->containerVersionId; + } + /** + * @param CustomTemplate[] + */ + public function setCustomTemplate($customTemplate) + { + $this->customTemplate = $customTemplate; + } + /** + * @return CustomTemplate[] + */ + public function getCustomTemplate() + { + return $this->customTemplate; + } + /** + * @param bool + */ + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + /** + * @return bool + */ + public function getDeleted() + { + return $this->deleted; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param Folder[] + */ + public function setFolder($folder) + { + $this->folder = $folder; + } + /** + * @return Folder[] + */ + public function getFolder() + { + return $this->folder; + } + /** + * @param GtagConfig[] + */ + public function setGtagConfig($gtagConfig) + { + $this->gtagConfig = $gtagConfig; + } + /** + * @return GtagConfig[] + */ + public function getGtagConfig() + { + return $this->gtagConfig; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param Tag[] + */ + public function setTag($tag) + { + $this->tag = $tag; + } + /** + * @return Tag[] + */ + public function getTag() + { + return $this->tag; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param Trigger[] + */ + public function setTrigger($trigger) + { + $this->trigger = $trigger; + } + /** + * @return Trigger[] + */ + public function getTrigger() + { + return $this->trigger; + } + /** + * @param Variable[] + */ + public function setVariable($variable) + { + $this->variable = $variable; + } + /** + * @return Variable[] + */ + public function getVariable() + { + return $this->variable; + } + /** + * @param Zone[] + */ + public function setZone($zone) + { + $this->zone = $zone; + } + /** + * @return Zone[] + */ + public function getZone() + { + return $this->zone; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerVersion'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersionHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersionHeader.php new file mode 100644 index 000000000..50af02c35 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersionHeader.php @@ -0,0 +1,294 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setContainerVersionId($containerVersionId) + { + $this->containerVersionId = $containerVersionId; + } + /** + * @return string + */ + public function getContainerVersionId() + { + return $this->containerVersionId; + } + /** + * @param bool + */ + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + /** + * @return bool + */ + public function getDeleted() + { + return $this->deleted; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNumClients($numClients) + { + $this->numClients = $numClients; + } + /** + * @return string + */ + public function getNumClients() + { + return $this->numClients; + } + /** + * @param string + */ + public function setNumCustomTemplates($numCustomTemplates) + { + $this->numCustomTemplates = $numCustomTemplates; + } + /** + * @return string + */ + public function getNumCustomTemplates() + { + return $this->numCustomTemplates; + } + /** + * @param string + */ + public function setNumGtagConfigs($numGtagConfigs) + { + $this->numGtagConfigs = $numGtagConfigs; + } + /** + * @return string + */ + public function getNumGtagConfigs() + { + return $this->numGtagConfigs; + } + /** + * @param string + */ + public function setNumMacros($numMacros) + { + $this->numMacros = $numMacros; + } + /** + * @return string + */ + public function getNumMacros() + { + return $this->numMacros; + } + /** + * @param string + */ + public function setNumRules($numRules) + { + $this->numRules = $numRules; + } + /** + * @return string + */ + public function getNumRules() + { + return $this->numRules; + } + /** + * @param string + */ + public function setNumTags($numTags) + { + $this->numTags = $numTags; + } + /** + * @return string + */ + public function getNumTags() + { + return $this->numTags; + } + /** + * @param string + */ + public function setNumTriggers($numTriggers) + { + $this->numTriggers = $numTriggers; + } + /** + * @return string + */ + public function getNumTriggers() + { + return $this->numTriggers; + } + /** + * @param string + */ + public function setNumVariables($numVariables) + { + $this->numVariables = $numVariables; + } + /** + * @return string + */ + public function getNumVariables() + { + return $this->numVariables; + } + /** + * @param string + */ + public function setNumZones($numZones) + { + $this->numZones = $numZones; + } + /** + * @return string + */ + public function getNumZones() + { + return $this->numZones; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersionHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerVersionHeader'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateBuiltInVariableResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateBuiltInVariableResponse.php new file mode 100644 index 000000000..75db30d4f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateBuiltInVariableResponse.php @@ -0,0 +1,41 @@ +builtInVariable = $builtInVariable; + } + /** + * @return BuiltInVariable[] + */ + public function getBuiltInVariable() + { + return $this->builtInVariable; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateBuiltInVariableResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CreateBuiltInVariableResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionRequestVersionOptions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionRequestVersionOptions.php new file mode 100644 index 000000000..2445e46be --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionRequestVersionOptions.php @@ -0,0 +1,60 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionRequestVersionOptions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CreateContainerVersionRequestVersionOptions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionResponse.php new file mode 100644 index 000000000..f9f7e2584 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionResponse.php @@ -0,0 +1,92 @@ +compilerError = $compilerError; + } + /** + * @return bool + */ + public function getCompilerError() + { + return $this->compilerError; + } + /** + * @param ContainerVersion + */ + public function setContainerVersion(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $containerVersion) + { + $this->containerVersion = $containerVersion; + } + /** + * @return ContainerVersion + */ + public function getContainerVersion() + { + return $this->containerVersion; + } + /** + * @param string + */ + public function setNewWorkspacePath($newWorkspacePath) + { + $this->newWorkspacePath = $newWorkspacePath; + } + /** + * @return string + */ + public function getNewWorkspacePath() + { + return $this->newWorkspacePath; + } + /** + * @param SyncStatus + */ + public function setSyncStatus(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus $syncStatus) + { + $this->syncStatus = $syncStatus; + } + /** + * @return SyncStatus + */ + public function getSyncStatus() + { + return $this->syncStatus; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CreateContainerVersionResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CustomTemplate.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CustomTemplate.php new file mode 100644 index 000000000..2b2ced0cb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CustomTemplate.php @@ -0,0 +1,202 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param GalleryReference + */ + public function setGalleryReference(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GalleryReference $galleryReference) + { + $this->galleryReference = $galleryReference; + } + /** + * @return GalleryReference + */ + public function getGalleryReference() + { + return $this->galleryReference; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string + */ + public function setTemplateData($templateData) + { + $this->templateData = $templateData; + } + /** + * @return string + */ + public function getTemplateData() + { + return $this->templateData; + } + /** + * @param string + */ + public function setTemplateId($templateId) + { + $this->templateId = $templateId; + } + /** + * @return string + */ + public function getTemplateId() + { + return $this->templateId; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CustomTemplate'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Destination.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Destination.php new file mode 100644 index 000000000..9d4a9ca8c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Destination.php @@ -0,0 +1,168 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setDestinationId($destinationId) + { + $this->destinationId = $destinationId; + } + /** + * @return string + */ + public function getDestinationId() + { + return $this->destinationId; + } + /** + * @param string + */ + public function setDestinationLinkId($destinationLinkId) + { + $this->destinationLinkId = $destinationLinkId; + } + /** + * @return string + */ + public function getDestinationLinkId() + { + return $this->destinationLinkId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Destination::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Destination'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Entity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Entity.php new file mode 100644 index 000000000..502bb7f0e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Entity.php @@ -0,0 +1,122 @@ +changeStatus = $changeStatus; + } + /** + * @return string + */ + public function getChangeStatus() + { + return $this->changeStatus; + } + /** + * @param Client + */ + public function setClient(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Client $client) + { + $this->client = $client; + } + /** + * @return Client + */ + public function getClient() + { + return $this->client; + } + /** + * @param Folder + */ + public function setFolder(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $folder) + { + $this->folder = $folder; + } + /** + * @return Folder + */ + public function getFolder() + { + return $this->folder; + } + /** + * @param Tag + */ + public function setTag(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag $tag) + { + $this->tag = $tag; + } + /** + * @return Tag + */ + public function getTag() + { + return $this->tag; + } + /** + * @param Trigger + */ + public function setTrigger(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger $trigger) + { + $this->trigger = $trigger; + } + /** + * @return Trigger + */ + public function getTrigger() + { + return $this->trigger; + } + /** + * @param Variable + */ + public function setVariable(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable $variable) + { + $this->variable = $variable; + } + /** + * @return Variable + */ + public function getVariable() + { + return $this->variable; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Entity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Entity'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Environment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Environment.php new file mode 100644 index 000000000..1440a0c61 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Environment.php @@ -0,0 +1,294 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setAuthorizationCode($authorizationCode) + { + $this->authorizationCode = $authorizationCode; + } + /** + * @return string + */ + public function getAuthorizationCode() + { + return $this->authorizationCode; + } + /** + * @param string + */ + public function setAuthorizationTimestamp($authorizationTimestamp) + { + $this->authorizationTimestamp = $authorizationTimestamp; + } + /** + * @return string + */ + public function getAuthorizationTimestamp() + { + return $this->authorizationTimestamp; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setContainerVersionId($containerVersionId) + { + $this->containerVersionId = $containerVersionId; + } + /** + * @return string + */ + public function getContainerVersionId() + { + return $this->containerVersionId; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param bool + */ + public function setEnableDebug($enableDebug) + { + $this->enableDebug = $enableDebug; + } + /** + * @return bool + */ + public function getEnableDebug() + { + return $this->enableDebug; + } + /** + * @param string + */ + public function setEnvironmentId($environmentId) + { + $this->environmentId = $environmentId; + } + /** + * @return string + */ + public function getEnvironmentId() + { + return $this->environmentId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setUrl($url) + { + $this->url = $url; + } + /** + * @return string + */ + public function getUrl() + { + return $this->url; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Environment'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Folder.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Folder.php new file mode 100644 index 000000000..54c531b5f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Folder.php @@ -0,0 +1,186 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setFolderId($folderId) + { + $this->folderId = $folderId; + } + /** + * @return string + */ + public function getFolderId() + { + return $this->folderId; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Folder'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/FolderEntities.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/FolderEntities.php new file mode 100644 index 000000000..9319fa3f1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/FolderEntities.php @@ -0,0 +1,91 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Tag[] + */ + public function setTag($tag) + { + $this->tag = $tag; + } + /** + * @return Tag[] + */ + public function getTag() + { + return $this->tag; + } + /** + * @param Trigger[] + */ + public function setTrigger($trigger) + { + $this->trigger = $trigger; + } + /** + * @return Trigger[] + */ + public function getTrigger() + { + return $this->trigger; + } + /** + * @param Variable[] + */ + public function setVariable($variable) + { + $this->variable = $variable; + } + /** + * @return Variable[] + */ + public function getVariable() + { + return $this->variable; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\FolderEntities::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_FolderEntities'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GalleryReference.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GalleryReference.php new file mode 100644 index 000000000..4a0527b32 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GalleryReference.php @@ -0,0 +1,132 @@ +host = $host; + } + /** + * @return string + */ + public function getHost() + { + return $this->host; + } + /** + * @param bool + */ + public function setIsModified($isModified) + { + $this->isModified = $isModified; + } + /** + * @return bool + */ + public function getIsModified() + { + return $this->isModified; + } + /** + * @param string + */ + public function setOwner($owner) + { + $this->owner = $owner; + } + /** + * @return string + */ + public function getOwner() + { + return $this->owner; + } + /** + * @param string + */ + public function setRepository($repository) + { + $this->repository = $repository; + } + /** + * @return string + */ + public function getRepository() + { + return $this->repository; + } + /** + * @param string + */ + public function setSignature($signature) + { + $this->signature = $signature; + } + /** + * @return string + */ + public function getSignature() + { + return $this->signature; + } + /** + * @param string + */ + public function setVersion($version) + { + $this->version = $version; + } + /** + * @return string + */ + public function getVersion() + { + return $this->version; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GalleryReference::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GalleryReference'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetContainerSnippetResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetContainerSnippetResponse.php new file mode 100644 index 000000000..acf0bc688 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetContainerSnippetResponse.php @@ -0,0 +1,42 @@ +snippet = $snippet; + } + /** + * @return string + */ + public function getSnippet() + { + return $this->snippet; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GetContainerSnippetResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GetContainerSnippetResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetWorkspaceStatusResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetWorkspaceStatusResponse.php new file mode 100644 index 000000000..512389bf5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetWorkspaceStatusResponse.php @@ -0,0 +1,57 @@ +mergeConflict = $mergeConflict; + } + /** + * @return MergeConflict[] + */ + public function getMergeConflict() + { + return $this->mergeConflict; + } + /** + * @param Entity[] + */ + public function setWorkspaceChange($workspaceChange) + { + $this->workspaceChange = $workspaceChange; + } + /** + * @return Entity[] + */ + public function getWorkspaceChange() + { + return $this->workspaceChange; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GetWorkspaceStatusResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GetWorkspaceStatusResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GtagConfig.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GtagConfig.php new file mode 100644 index 000000000..182b859ad --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GtagConfig.php @@ -0,0 +1,185 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setGtagConfigId($gtagConfigId) + { + $this->gtagConfigId = $gtagConfigId; + } + /** + * @return string + */ + public function getGtagConfigId() + { + return $this->gtagConfigId; + } + /** + * @param Parameter[] + */ + public function setParameter($parameter) + { + $this->parameter = $parameter; + } + /** + * @return Parameter[] + */ + public function getParameter() + { + return $this->parameter; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GtagConfig'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListAccountsResponse.php new file mode 100644 index 000000000..73c53ddef --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListAccountsResponse.php @@ -0,0 +1,59 @@ +account = $account; + } + /** + * @return Account[] + */ + public function getAccount() + { + return $this->account; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListAccountsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListClientsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListClientsResponse.php new file mode 100644 index 000000000..defccbaef --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListClientsResponse.php @@ -0,0 +1,59 @@ +client = $client; + } + /** + * @return Client[] + */ + public function getClient() + { + return $this->client; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListClientsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListClientsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainerVersionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainerVersionsResponse.php new file mode 100644 index 000000000..fc16cd5ca --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainerVersionsResponse.php @@ -0,0 +1,59 @@ +containerVersionHeader = $containerVersionHeader; + } + /** + * @return ContainerVersionHeader[] + */ + public function getContainerVersionHeader() + { + return $this->containerVersionHeader; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainerVersionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListContainerVersionsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainersResponse.php new file mode 100644 index 000000000..f05b8da29 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainersResponse.php @@ -0,0 +1,59 @@ +container = $container; + } + /** + * @return Container[] + */ + public function getContainer() + { + return $this->container; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListContainersResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListDestinationsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListDestinationsResponse.php new file mode 100644 index 000000000..fec587cba --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListDestinationsResponse.php @@ -0,0 +1,59 @@ +destination = $destination; + } + /** + * @return Destination[] + */ + public function getDestination() + { + return $this->destination; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListDestinationsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListDestinationsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnabledBuiltInVariablesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnabledBuiltInVariablesResponse.php new file mode 100644 index 000000000..dabf83560 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnabledBuiltInVariablesResponse.php @@ -0,0 +1,59 @@ +builtInVariable = $builtInVariable; + } + /** + * @return BuiltInVariable[] + */ + public function getBuiltInVariable() + { + return $this->builtInVariable; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnabledBuiltInVariablesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListEnabledBuiltInVariablesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnvironmentsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnvironmentsResponse.php new file mode 100644 index 000000000..f0be37597 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnvironmentsResponse.php @@ -0,0 +1,59 @@ +environment = $environment; + } + /** + * @return Environment[] + */ + public function getEnvironment() + { + return $this->environment; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnvironmentsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListEnvironmentsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListFoldersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListFoldersResponse.php new file mode 100644 index 000000000..076694ea5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListFoldersResponse.php @@ -0,0 +1,59 @@ +folder = $folder; + } + /** + * @return Folder[] + */ + public function getFolder() + { + return $this->folder; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListFoldersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListFoldersResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListGtagConfigResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListGtagConfigResponse.php new file mode 100644 index 000000000..4f8ce5857 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListGtagConfigResponse.php @@ -0,0 +1,59 @@ +gtagConfig = $gtagConfig; + } + /** + * @return GtagConfig[] + */ + public function getGtagConfig() + { + return $this->gtagConfig; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListGtagConfigResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListGtagConfigResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTagsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTagsResponse.php new file mode 100644 index 000000000..496822700 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTagsResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Tag[] + */ + public function setTag($tag) + { + $this->tag = $tag; + } + /** + * @return Tag[] + */ + public function getTag() + { + return $this->tag; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTagsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListTagsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTemplatesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTemplatesResponse.php new file mode 100644 index 000000000..4a1c03095 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTemplatesResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param CustomTemplate[] + */ + public function setTemplate($template) + { + $this->template = $template; + } + /** + * @return CustomTemplate[] + */ + public function getTemplate() + { + return $this->template; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTemplatesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListTemplatesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTriggersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTriggersResponse.php new file mode 100644 index 000000000..e2b3b6418 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTriggersResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Trigger[] + */ + public function setTrigger($trigger) + { + $this->trigger = $trigger; + } + /** + * @return Trigger[] + */ + public function getTrigger() + { + return $this->trigger; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTriggersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListTriggersResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListUserPermissionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListUserPermissionsResponse.php new file mode 100644 index 000000000..9d4be8c09 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListUserPermissionsResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param UserPermission[] + */ + public function setUserPermission($userPermission) + { + $this->userPermission = $userPermission; + } + /** + * @return UserPermission[] + */ + public function getUserPermission() + { + return $this->userPermission; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListUserPermissionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListUserPermissionsResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListVariablesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListVariablesResponse.php new file mode 100644 index 000000000..64a82c381 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListVariablesResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Variable[] + */ + public function setVariable($variable) + { + $this->variable = $variable; + } + /** + * @return Variable[] + */ + public function getVariable() + { + return $this->variable; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListVariablesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListVariablesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListWorkspacesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListWorkspacesResponse.php new file mode 100644 index 000000000..cf85a6d10 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListWorkspacesResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Workspace[] + */ + public function setWorkspace($workspace) + { + $this->workspace = $workspace; + } + /** + * @return Workspace[] + */ + public function getWorkspace() + { + return $this->workspace; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListWorkspacesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListWorkspacesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListZonesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListZonesResponse.php new file mode 100644 index 000000000..4644f094d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListZonesResponse.php @@ -0,0 +1,59 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param Zone[] + */ + public function setZone($zone) + { + $this->zone = $zone; + } + /** + * @return Zone[] + */ + public function getZone() + { + return $this->zone; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListZonesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListZonesResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/MergeConflict.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/MergeConflict.php new file mode 100644 index 000000000..ea2f21a7a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/MergeConflict.php @@ -0,0 +1,56 @@ +entityInBaseVersion = $entityInBaseVersion; + } + /** + * @return Entity + */ + public function getEntityInBaseVersion() + { + return $this->entityInBaseVersion; + } + /** + * @param Entity + */ + public function setEntityInWorkspace(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Entity $entityInWorkspace) + { + $this->entityInWorkspace = $entityInWorkspace; + } + /** + * @return Entity + */ + public function getEntityInWorkspace() + { + return $this->entityInWorkspace; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\MergeConflict::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_MergeConflict'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Parameter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Parameter.php new file mode 100644 index 000000000..12c6008d1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Parameter.php @@ -0,0 +1,111 @@ +key = $key; + } + /** + * @return string + */ + public function getKey() + { + return $this->key; + } + /** + * @param Parameter[] + */ + public function setList($list) + { + $this->list = $list; + } + /** + * @return Parameter[] + */ + public function getList() + { + return $this->list; + } + /** + * @param Parameter[] + */ + public function setMap($map) + { + $this->map = $map; + } + /** + * @return Parameter[] + */ + public function getMap() + { + return $this->map; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Parameter'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/PublishContainerVersionResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/PublishContainerVersionResponse.php new file mode 100644 index 000000000..d7be2ad4e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/PublishContainerVersionResponse.php @@ -0,0 +1,58 @@ +compilerError = $compilerError; + } + /** + * @return bool + */ + public function getCompilerError() + { + return $this->compilerError; + } + /** + * @param ContainerVersion + */ + public function setContainerVersion(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $containerVersion) + { + $this->containerVersion = $containerVersion; + } + /** + * @return ContainerVersion + */ + public function getContainerVersion() + { + return $this->containerVersion; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\PublishContainerVersionResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_PublishContainerVersionResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/QuickPreviewResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/QuickPreviewResponse.php new file mode 100644 index 000000000..aeb684c1d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/QuickPreviewResponse.php @@ -0,0 +1,74 @@ +compilerError = $compilerError; + } + /** + * @return bool + */ + public function getCompilerError() + { + return $this->compilerError; + } + /** + * @param ContainerVersion + */ + public function setContainerVersion(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $containerVersion) + { + $this->containerVersion = $containerVersion; + } + /** + * @return ContainerVersion + */ + public function getContainerVersion() + { + return $this->containerVersion; + } + /** + * @param SyncStatus + */ + public function setSyncStatus(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus $syncStatus) + { + $this->syncStatus = $syncStatus; + } + /** + * @return SyncStatus + */ + public function getSyncStatus() + { + return $this->syncStatus; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\QuickPreviewResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_QuickPreviewResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/Accounts.php new file mode 100644 index 000000000..359787050 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/Accounts.php @@ -0,0 +1,83 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $accounts = $tagmanagerService->accounts; + * + */ +class Accounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets a GTM Account. (accounts.get) + * + * @param string $path GTM Account's API relative path. Example: + * accounts/{account_id} + * @param array $optParams Optional parameters. + * @return Account + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Account::class); + } + /** + * Lists all GTM Accounts that a user has access to. (accounts.listAccounts) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeGoogleTags Also retrieve accounts associated with + * Google Tag when true. + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListAccountsResponse + */ + public function listAccounts($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListAccountsResponse::class); + } + /** + * Updates a GTM Account. (accounts.update) + * + * @param string $path GTM Account's API relative path. Example: + * accounts/{account_id} + * @param Account $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the account in storage. + * @return Account + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Account $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Account::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_Accounts'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainers.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainers.php new file mode 100644 index 000000000..d2b5b27ef --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainers.php @@ -0,0 +1,192 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $containers = $tagmanagerService->containers; + * + */ +class AccountsContainers extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Combines Containers. (containers.combine) + * + * @param string $path GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * + * @opt_param bool allowUserPermissionFeatureUpdate Must be set to true to allow + * features.user_permissions to change from false to true. If this operation + * causes an update but this bit is false, the operation will fail. + * @opt_param string containerId ID of container that will be merged into the + * current container. + * @opt_param string settingSource Specify the source of config setting after + * combine + * @return Container + */ + public function combine($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('combine', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class); + } + /** + * Creates a Container. (containers.create) + * + * @param string $parent GTM Account's API relative path. Example: + * accounts/{account_id}. + * @param Container $postBody + * @param array $optParams Optional parameters. + * @return Container + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class); + } + /** + * Deletes a Container. (containers.delete) + * + * @param string $path GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a Container. (containers.get) + * + * @param string $path GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * @return Container + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class); + } + /** + * Lists all Containers that belongs to a GTM Account. + * (containers.listAccountsContainers) + * + * @param string $parent GTM Account's API relative path. Example: + * accounts/{account_id}. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListContainersResponse + */ + public function listAccountsContainers($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainersResponse::class); + } + /** + * Looks up a Container by destination ID. (containers.lookup) + * + * @param array $optParams Optional parameters. + * + * @opt_param string destinationId Destination ID linked to a GTM Container, + * e.g. AW-123456789. Example: + * accounts/containers:lookup?destination_id={destination_id}. + * @return Container + */ + public function lookup($optParams = []) + { + $params = []; + $params = \array_merge($params, $optParams); + return $this->call('lookup', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class); + } + /** + * Move Tag ID out of a Container. (containers.move_tag_id) + * + * @param string $path GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * + * @opt_param bool allowUserPermissionFeatureUpdate Must be set to true to allow + * features.user_permissions to change from false to true. If this operation + * causes an update but this bit is false, the operation will fail. + * @opt_param bool copySettings Whether or not to copy tag settings from this + * tag to the new tag. + * @opt_param bool copyTermsOfService Must be set to true to accept all terms of + * service agreements copied from the current tag to the newly created tag. If + * this bit is false, the operation will fail. + * @opt_param bool copyUsers Whether or not to copy users from this tag to the + * new tag. + * @opt_param string tagId Tag ID to be removed from the current Container. + * @opt_param string tagName The name for the newly created tag. + * @return Container + */ + public function move_tag_id($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('move_tag_id', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class); + } + /** + * Gets the tagging snippet for a Container. (containers.snippet) + * + * @param string $path Container snippet's API relative path. Example: + * accounts/{account_id}/containers/{container_id}:snippet + * @param array $optParams Optional parameters. + * @return GetContainerSnippetResponse + */ + public function snippet($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('snippet', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GetContainerSnippetResponse::class); + } + /** + * Updates a Container. (containers.update) + * + * @param string $path GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param Container $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the container in storage. + * @return Container + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainers::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainers'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersDestinations.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersDestinations.php new file mode 100644 index 000000000..b6aa9acba --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersDestinations.php @@ -0,0 +1,85 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $destinations = $tagmanagerService->destinations; + * + */ +class AccountsContainersDestinations extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets a Destination. (destinations.get) + * + * @param string $path Google Tag Destination's API relative path. Example: acco + * unts/{account_id}/containers/{container_id}/destinations/{destination_link_id + * } + * @param array $optParams Optional parameters. + * @return Destination + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Destination::class); + } + /** + * Adds a Destination to this Container and removes it from the Container to + * which it is currently linked. (destinations.link) + * + * @param string $parent GTM parent Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * + * @opt_param bool allowUserPermissionFeatureUpdate Must be set to true to allow + * features.user_permissions to change from false to true. If this operation + * causes an update but this bit is false, the operation will fail. + * @opt_param string destinationId Destination ID to be linked to the current + * container. + * @return Destination + */ + public function link($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('link', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Destination::class); + } + /** + * Lists all Destinations linked to a GTM Container. + * (destinations.listAccountsContainersDestinations) + * + * @param string $parent GTM parent Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * @return ListDestinationsResponse + */ + public function listAccountsContainersDestinations($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListDestinationsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersDestinations::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersDestinations'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersEnvironments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersEnvironments.php new file mode 100644 index 000000000..6c149e336 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersEnvironments.php @@ -0,0 +1,128 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $environments = $tagmanagerService->environments; + * + */ +class AccountsContainersEnvironments extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Environment. (environments.create) + * + * @param string $parent GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param Environment $postBody + * @param array $optParams Optional parameters. + * @return Environment + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class); + } + /** + * Deletes a GTM Environment. (environments.delete) + * + * @param string $path GTM Environment's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/environments/{environment_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a GTM Environment. (environments.get) + * + * @param string $path GTM Environment's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/environments/{environment_id} + * @param array $optParams Optional parameters. + * @return Environment + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class); + } + /** + * Lists all GTM Environments of a GTM Container. + * (environments.listAccountsContainersEnvironments) + * + * @param string $parent GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListEnvironmentsResponse + */ + public function listAccountsContainersEnvironments($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnvironmentsResponse::class); + } + /** + * Re-generates the authorization code for a GTM Environment. + * (environments.reauthorize) + * + * @param string $path GTM Environment's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/environments/{environment_id} + * @param Environment $postBody + * @param array $optParams Optional parameters. + * @return Environment + */ + public function reauthorize($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('reauthorize', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class); + } + /** + * Updates a GTM Environment. (environments.update) + * + * @param string $path GTM Environment's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/environments/{environment_id} + * @param Environment $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the environment in storage. + * @return Environment + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersEnvironments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersEnvironments'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersionHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersionHeaders.php new file mode 100644 index 000000000..00d25bc74 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersionHeaders.php @@ -0,0 +1,68 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $version_headers = $tagmanagerService->version_headers; + * + */ +class AccountsContainersVersionHeaders extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Gets the latest container version header (version_headers.latest) + * + * @param string $parent GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * @return ContainerVersionHeader + */ + public function latest($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('latest', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersionHeader::class); + } + /** + * Lists all Container Versions of a GTM Container. + * (version_headers.listAccountsContainersVersionHeaders) + * + * @param string $parent GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * + * @opt_param bool includeDeleted Also retrieve deleted (archived) versions when + * true. + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListContainerVersionsResponse + */ + public function listAccountsContainersVersionHeaders($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainerVersionsResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersionHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersVersionHeaders'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersions.php new file mode 100644 index 000000000..c40a6140b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersions.php @@ -0,0 +1,142 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $versions = $tagmanagerService->versions; + * + */ +class AccountsContainersVersions extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Deletes a Container Version. (versions.delete) + * + * @param string $path GTM ContainerVersion's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/versions/{version_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a Container Version. (versions.get) + * + * @param string $path GTM ContainerVersion's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/versions/{version_id} + * @param array $optParams Optional parameters. + * + * @opt_param string containerVersionId The GTM ContainerVersion ID. Specify + * published to retrieve the currently published version. + * @return ContainerVersion + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class); + } + /** + * Gets the live (i.e. published) container version (versions.live) + * + * @param string $parent GTM Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * @return ContainerVersion + */ + public function live($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('live', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class); + } + /** + * Publishes a Container Version. (versions.publish) + * + * @param string $path GTM ContainerVersion's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/versions/{version_id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the container version in storage. + * @return PublishContainerVersionResponse + */ + public function publish($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('publish', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\PublishContainerVersionResponse::class); + } + /** + * Sets the latest version used for synchronization of workspaces when detecting + * conflicts and errors. (versions.set_latest) + * + * @param string $path GTM ContainerVersion's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/versions/{version_id} + * @param array $optParams Optional parameters. + * @return ContainerVersion + */ + public function set_latest($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('set_latest', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class); + } + /** + * Undeletes a Container Version. (versions.undelete) + * + * @param string $path GTM ContainerVersion's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/versions/{version_id} + * @param array $optParams Optional parameters. + * @return ContainerVersion + */ + public function undelete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('undelete', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class); + } + /** + * Updates a Container Version. (versions.update) + * + * @param string $path GTM ContainerVersion's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/versions/{version_id} + * @param ContainerVersion $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the container version in storage. + * @return ContainerVersion + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersVersions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspaces.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspaces.php new file mode 100644 index 000000000..4745f9f39 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspaces.php @@ -0,0 +1,199 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $workspaces = $tagmanagerService->workspaces; + * + */ +class AccountsContainersWorkspaces extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a Workspace. (workspaces.create) + * + * @param string $parent GTM parent Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param Workspace $postBody + * @param array $optParams Optional parameters. + * @return Workspace + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class); + } + /** + * Creates a Container Version from the entities present in the workspace, + * deletes the workspace, and sets the base container version to the newly + * created version. (workspaces.create_version) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param CreateContainerVersionRequestVersionOptions $postBody + * @param array $optParams Optional parameters. + * @return CreateContainerVersionResponse + */ + public function create_version($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionRequestVersionOptions $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create_version', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionResponse::class); + } + /** + * Deletes a Workspace. (workspaces.delete) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a Workspace. (workspaces.get) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * @return Workspace + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class); + } + /** + * Finds conflicting and modified entities in the workspace. + * (workspaces.getStatus) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * @return GetWorkspaceStatusResponse + */ + public function getStatus($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('getStatus', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GetWorkspaceStatusResponse::class); + } + /** + * Lists all Workspaces that belong to a GTM Container. + * (workspaces.listAccountsContainersWorkspaces) + * + * @param string $parent GTM parent Container's API relative path. Example: + * accounts/{account_id}/containers/{container_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListWorkspacesResponse + */ + public function listAccountsContainersWorkspaces($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListWorkspacesResponse::class); + } + /** + * Quick previews a workspace by creating a fake container version from all + * entities in the provided workspace. (workspaces.quick_preview) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * @return QuickPreviewResponse + */ + public function quick_preview($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('quick_preview', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\QuickPreviewResponse::class); + } + /** + * Resolves a merge conflict for a workspace entity by updating it to the + * resolved entity passed in the request. (workspaces.resolve_conflict) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Entity $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the entity_in_workspace in the merge conflict. + */ + public function resolve_conflict($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Entity $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('resolve_conflict', [$params]); + } + /** + * Syncs a workspace to the latest container version by updating all unmodified + * workspace entities and displaying conflicts for modified entities. + * (workspaces.sync) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * @return SyncWorkspaceResponse + */ + public function sync($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('sync', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncWorkspaceResponse::class); + } + /** + * Updates a Workspace. (workspaces.update) + * + * @param string $path GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Workspace $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the workspace in storage. + * @return Workspace + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspaces::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspaces'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesBuiltInVariables.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesBuiltInVariables.php new file mode 100644 index 000000000..f1fb0ec39 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesBuiltInVariables.php @@ -0,0 +1,103 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $built_in_variables = $tagmanagerService->built_in_variables; + * + */ +class AccountsContainersWorkspacesBuiltInVariables extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates one or more GTM Built-In Variables. (built_in_variables.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string type The types of built-in variables to enable. + * @return CreateBuiltInVariableResponse + */ + public function create($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateBuiltInVariableResponse::class); + } + /** + * Deletes one or more GTM Built-In Variables. (built_in_variables.delete) + * + * @param string $path GTM BuiltInVariable's API relative path. Example: account + * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/built_in_v + * ariables + * @param array $optParams Optional parameters. + * + * @opt_param string type The types of built-in variables to delete. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Lists all the enabled Built-In Variables of a GTM Container. + * (built_in_variables.listAccountsContainersWorkspacesBuiltInVariables) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListEnabledBuiltInVariablesResponse + */ + public function listAccountsContainersWorkspacesBuiltInVariables($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnabledBuiltInVariablesResponse::class); + } + /** + * Reverts changes to a GTM Built-In Variables in a GTM Workspace. + * (built_in_variables.revert) + * + * @param string $path GTM BuiltInVariable's API relative path. Example: account + * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/built_in_v + * ariables + * @param array $optParams Optional parameters. + * + * @opt_param string type The type of built-in variable to revert. + * @return RevertBuiltInVariableResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertBuiltInVariableResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesBuiltInVariables::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesBuiltInVariables'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesClients.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesClients.php new file mode 100644 index 000000000..edaea61f0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesClients.php @@ -0,0 +1,130 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $clients = $tagmanagerService->clients; + * + */ +class AccountsContainersWorkspacesClients extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Client. (clients.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Client $postBody + * @param array $optParams Optional parameters. + * @return Client + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class); + } + /** + * Deletes a GTM Client. (clients.delete) + * + * @param string $path GTM Client's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a GTM Client. (clients.get) + * + * @param string $path GTM Client's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id} + * @param array $optParams Optional parameters. + * @return Client + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class); + } + /** + * Lists all GTM Clients of a GTM container workspace. + * (clients.listAccountsContainersWorkspacesClients) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListClientsResponse + */ + public function listAccountsContainersWorkspacesClients($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListClientsResponse::class); + } + /** + * Reverts changes to a GTM Client in a GTM Workspace. (clients.revert) + * + * @param string $path GTM Client's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the client in storage. + * @return RevertClientResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertClientResponse::class); + } + /** + * Updates a GTM Client. (clients.update) + * + * @param string $path GTM Client's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id} + * @param Client $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the client in storage. + * @return Client + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesClients::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesClients'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesFolders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesFolders.php new file mode 100644 index 000000000..5cf2f2fc6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesFolders.php @@ -0,0 +1,166 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $folders = $tagmanagerService->folders; + * + */ +class AccountsContainersWorkspacesFolders extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Folder. (folders.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Folder $postBody + * @param array $optParams Optional parameters. + * @return Folder + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class); + } + /** + * Deletes a GTM Folder. (folders.delete) + * + * @param string $path GTM Folder's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * List all entities in a GTM Folder. (folders.entities) + * + * @param string $path GTM Folder's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return FolderEntities + */ + public function entities($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('entities', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\FolderEntities::class); + } + /** + * Gets a GTM Folder. (folders.get) + * + * @param string $path GTM Folder's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id} + * @param array $optParams Optional parameters. + * @return Folder + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class); + } + /** + * Lists all GTM Folders of a Container. + * (folders.listAccountsContainersWorkspacesFolders) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListFoldersResponse + */ + public function listAccountsContainersWorkspacesFolders($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListFoldersResponse::class); + } + /** + * Moves entities to a GTM Folder. (folders.move_entities_to_folder) + * + * @param string $path GTM Folder's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id} + * @param Folder $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string tagId The tags to be moved to the folder. + * @opt_param string triggerId The triggers to be moved to the folder. + * @opt_param string variableId The variables to be moved to the folder. + */ + public function move_entities_to_folder($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('move_entities_to_folder', [$params]); + } + /** + * Reverts changes to a GTM Folder in a GTM Workspace. (folders.revert) + * + * @param string $path GTM Folder's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the tag in storage. + * @return RevertFolderResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertFolderResponse::class); + } + /** + * Updates a GTM Folder. (folders.update) + * + * @param string $path GTM Folder's API relative path. Example: accounts/{accoun + * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id} + * @param Folder $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the folder in storage. + * @return Folder + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesFolders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesFolders'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesGtagConfig.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesGtagConfig.php new file mode 100644 index 000000000..d9c9b1061 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesGtagConfig.php @@ -0,0 +1,115 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $gtag_config = $tagmanagerService->gtag_config; + * + */ +class AccountsContainersWorkspacesGtagConfig extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a Google tag config. (gtag_config.create) + * + * @param string $parent Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param GtagConfig $postBody + * @param array $optParams Optional parameters. + * @return GtagConfig + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class); + } + /** + * Deletes a Google tag config. (gtag_config.delete) + * + * @param string $path Google tag config's API relative path. Example: accounts/ + * {account_id}/containers/{container_id}/workspaces/{workspace_id}/gtag_config/ + * {gtag_config_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a Google tag config. (gtag_config.get) + * + * @param string $path Google tag config's API relative path. Example: accounts/ + * {account_id}/containers/{container_id}/workspaces/{workspace_id}/gtag_config/ + * {gtag_config_id} + * @param array $optParams Optional parameters. + * @return GtagConfig + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class); + } + /** + * Lists all Google tag configs in a Container. + * (gtag_config.listAccountsContainersWorkspacesGtagConfig) + * + * @param string $parent Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListGtagConfigResponse + */ + public function listAccountsContainersWorkspacesGtagConfig($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListGtagConfigResponse::class); + } + /** + * Updates a Google tag config. (gtag_config.update) + * + * @param string $path Google tag config's API relative path. Example: accounts/ + * {account_id}/containers/{container_id}/workspaces/{workspace_id}/gtag_config/ + * {gtag_config_id} + * @param GtagConfig $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the config in storage. + * @return GtagConfig + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesGtagConfig::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesGtagConfig'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTags.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTags.php new file mode 100644 index 000000000..3e021c24e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTags.php @@ -0,0 +1,130 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $tags = $tagmanagerService->tags; + * + */ +class AccountsContainersWorkspacesTags extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Tag. (tags.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Tag $postBody + * @param array $optParams Optional parameters. + * @return Tag + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class); + } + /** + * Deletes a GTM Tag. (tags.delete) + * + * @param string $path GTM Tag's API relative path. Example: accounts/{account_i + * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a GTM Tag. (tags.get) + * + * @param string $path GTM Tag's API relative path. Example: accounts/{account_i + * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id} + * @param array $optParams Optional parameters. + * @return Tag + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class); + } + /** + * Lists all GTM Tags of a Container. + * (tags.listAccountsContainersWorkspacesTags) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListTagsResponse + */ + public function listAccountsContainersWorkspacesTags($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTagsResponse::class); + } + /** + * Reverts changes to a GTM Tag in a GTM Workspace. (tags.revert) + * + * @param string $path GTM Tag's API relative path. Example: accounts/{account_i + * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of thetag in storage. + * @return RevertTagResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTagResponse::class); + } + /** + * Updates a GTM Tag. (tags.update) + * + * @param string $path GTM Tag's API relative path. Example: accounts/{account_i + * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id} + * @param Tag $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the tag in storage. + * @return Tag + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTags::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesTags'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTemplates.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTemplates.php new file mode 100644 index 000000000..2764fb976 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTemplates.php @@ -0,0 +1,134 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $templates = $tagmanagerService->templates; + * + */ +class AccountsContainersWorkspacesTemplates extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Custom Template. (templates.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param CustomTemplate $postBody + * @param array $optParams Optional parameters. + * @return CustomTemplate + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class); + } + /** + * Deletes a GTM Template. (templates.delete) + * + * @param string $path GTM Custom Template's API relative path. Example: account + * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/ + * {template_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a GTM Template. (templates.get) + * + * @param string $path GTM Custom Template's API relative path. Example: account + * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/ + * {template_id} + * @param array $optParams Optional parameters. + * @return CustomTemplate + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class); + } + /** + * Lists all GTM Templates of a GTM container workspace. + * (templates.listAccountsContainersWorkspacesTemplates) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListTemplatesResponse + */ + public function listAccountsContainersWorkspacesTemplates($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTemplatesResponse::class); + } + /** + * Reverts changes to a GTM Template in a GTM Workspace. (templates.revert) + * + * @param string $path GTM Custom Template's API relative path. Example: account + * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/ + * {template_id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the template in storage. + * @return RevertTemplateResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTemplateResponse::class); + } + /** + * Updates a GTM Template. (templates.update) + * + * @param string $path GTM Custom Template's API relative path. Example: account + * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/ + * {template_id} + * @param CustomTemplate $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the templates in storage. + * @return CustomTemplate + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTemplates::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesTemplates'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTriggers.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTriggers.php new file mode 100644 index 000000000..91309710f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTriggers.php @@ -0,0 +1,134 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $triggers = $tagmanagerService->triggers; + * + */ +class AccountsContainersWorkspacesTriggers extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Trigger. (triggers.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Trigger $postBody + * @param array $optParams Optional parameters. + * @return Trigger + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class); + } + /** + * Deletes a GTM Trigger. (triggers.delete) + * + * @param string $path GTM Trigger's API relative path. Example: accounts/{accou + * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_ + * id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a GTM Trigger. (triggers.get) + * + * @param string $path GTM Trigger's API relative path. Example: accounts/{accou + * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_ + * id} + * @param array $optParams Optional parameters. + * @return Trigger + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class); + } + /** + * Lists all GTM Triggers of a Container. + * (triggers.listAccountsContainersWorkspacesTriggers) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListTriggersResponse + */ + public function listAccountsContainersWorkspacesTriggers($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTriggersResponse::class); + } + /** + * Reverts changes to a GTM Trigger in a GTM Workspace. (triggers.revert) + * + * @param string $path GTM Trigger's API relative path. Example: accounts/{accou + * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_ + * id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the trigger in storage. + * @return RevertTriggerResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTriggerResponse::class); + } + /** + * Updates a GTM Trigger. (triggers.update) + * + * @param string $path GTM Trigger's API relative path. Example: accounts/{accou + * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_ + * id} + * @param Trigger $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the trigger in storage. + * @return Trigger + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTriggers::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesTriggers'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesVariables.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesVariables.php new file mode 100644 index 000000000..f018f43bf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesVariables.php @@ -0,0 +1,134 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $variables = $tagmanagerService->variables; + * + */ +class AccountsContainersWorkspacesVariables extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Variable. (variables.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Variable $postBody + * @param array $optParams Optional parameters. + * @return Variable + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class); + } + /** + * Deletes a GTM Variable. (variables.delete) + * + * @param string $path GTM Variable's API relative path. Example: accounts/{acco + * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab + * le_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a GTM Variable. (variables.get) + * + * @param string $path GTM Variable's API relative path. Example: accounts/{acco + * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab + * le_id} + * @param array $optParams Optional parameters. + * @return Variable + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class); + } + /** + * Lists all GTM Variables of a Container. + * (variables.listAccountsContainersWorkspacesVariables) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListVariablesResponse + */ + public function listAccountsContainersWorkspacesVariables($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListVariablesResponse::class); + } + /** + * Reverts changes to a GTM Variable in a GTM Workspace. (variables.revert) + * + * @param string $path GTM Variable's API relative path. Example: accounts/{acco + * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab + * le_id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the variable in storage. + * @return RevertVariableResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertVariableResponse::class); + } + /** + * Updates a GTM Variable. (variables.update) + * + * @param string $path GTM Variable's API relative path. Example: accounts/{acco + * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab + * le_id} + * @param Variable $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the variable in storage. + * @return Variable + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesVariables::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesVariables'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesZones.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesZones.php new file mode 100644 index 000000000..26631dfdc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesZones.php @@ -0,0 +1,130 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $zones = $tagmanagerService->zones; + * + */ +class AccountsContainersWorkspacesZones extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a GTM Zone. (zones.create) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param Zone $postBody + * @param array $optParams Optional parameters. + * @return Zone + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class); + } + /** + * Deletes a GTM Zone. (zones.delete) + * + * @param string $path GTM Zone's API relative path. Example: accounts/{account_ + * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a GTM Zone. (zones.get) + * + * @param string $path GTM Zone's API relative path. Example: accounts/{account_ + * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id} + * @param array $optParams Optional parameters. + * @return Zone + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class); + } + /** + * Lists all GTM Zones of a GTM container workspace. + * (zones.listAccountsContainersWorkspacesZones) + * + * @param string $parent GTM Workspace's API relative path. Example: + * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListZonesResponse + */ + public function listAccountsContainersWorkspacesZones($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListZonesResponse::class); + } + /** + * Reverts changes to a GTM Zone in a GTM Workspace. (zones.revert) + * + * @param string $path GTM Zone's API relative path. Example: accounts/{account_ + * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id} + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the zone in storage. + * @return RevertZoneResponse + */ + public function revert($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertZoneResponse::class); + } + /** + * Updates a GTM Zone. (zones.update) + * + * @param string $path GTM Zone's API relative path. Example: accounts/{account_ + * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id} + * @param Zone $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string fingerprint When provided, this fingerprint must match the + * fingerprint of the zone in storage. + * @return Zone + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesZones::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesZones'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsUserPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsUserPermissions.php new file mode 100644 index 000000000..29a89df3b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsUserPermissions.php @@ -0,0 +1,111 @@ + + * $tagmanagerService = new Google\Service\TagManager(...); + * $user_permissions = $tagmanagerService->user_permissions; + * + */ +class AccountsUserPermissions extends \Google\Site_Kit_Dependencies\Google\Service\Resource +{ + /** + * Creates a user's Account & Container access. (user_permissions.create) + * + * @param string $parent GTM Account's API relative path. Example: + * accounts/{account_id} + * @param UserPermission $postBody + * @param array $optParams Optional parameters. + * @return UserPermission + */ + public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission $postBody, $optParams = []) + { + $params = ['parent' => $parent, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class); + } + /** + * Removes a user from the account, revoking access to it and all of its + * containers. (user_permissions.delete) + * + * @param string $path GTM UserPermission's API relative path. Example: + * accounts/{account_id}/user_permissions/{user_permission_id} + * @param array $optParams Optional parameters. + */ + public function delete($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a user's Account & Container access. (user_permissions.get) + * + * @param string $path GTM UserPermission's API relative path. Example: + * accounts/{account_id}/user_permissions/{user_permission_id} + * @param array $optParams Optional parameters. + * @return UserPermission + */ + public function get($path, $optParams = []) + { + $params = ['path' => $path]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class); + } + /** + * List all users that have access to the account along with Account and + * Container user access granted to each of them. + * (user_permissions.listAccountsUserPermissions) + * + * @param string $parent GTM Account's API relative path. Example: + * accounts/{account_id} + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Continuation token for fetching the next page of + * results. + * @return ListUserPermissionsResponse + */ + public function listAccountsUserPermissions($parent, $optParams = []) + { + $params = ['parent' => $parent]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListUserPermissionsResponse::class); + } + /** + * Updates a user's Account & Container access. (user_permissions.update) + * + * @param string $path GTM UserPermission's API relative path. Example: + * accounts/{account_id}/user_permissions/{user_permission_id} + * @param UserPermission $postBody + * @param array $optParams Optional parameters. + * @return UserPermission + */ + public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission $postBody, $optParams = []) + { + $params = ['path' => $path, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsUserPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsUserPermissions'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertBuiltInVariableResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertBuiltInVariableResponse.php new file mode 100644 index 000000000..9b13cf143 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertBuiltInVariableResponse.php @@ -0,0 +1,42 @@ +enabled = $enabled; + } + /** + * @return bool + */ + public function getEnabled() + { + return $this->enabled; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertBuiltInVariableResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertBuiltInVariableResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertClientResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertClientResponse.php new file mode 100644 index 000000000..810cf503d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertClientResponse.php @@ -0,0 +1,40 @@ +client = $client; + } + /** + * @return Client + */ + public function getClient() + { + return $this->client; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertClientResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertClientResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertFolderResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertFolderResponse.php new file mode 100644 index 000000000..ecf6e0d37 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertFolderResponse.php @@ -0,0 +1,40 @@ +folder = $folder; + } + /** + * @return Folder + */ + public function getFolder() + { + return $this->folder; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertFolderResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertFolderResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTagResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTagResponse.php new file mode 100644 index 000000000..4dfe0da6f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTagResponse.php @@ -0,0 +1,40 @@ +tag = $tag; + } + /** + * @return Tag + */ + public function getTag() + { + return $this->tag; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTagResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertTagResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTemplateResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTemplateResponse.php new file mode 100644 index 000000000..709ea4ad3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTemplateResponse.php @@ -0,0 +1,40 @@ +template = $template; + } + /** + * @return CustomTemplate + */ + public function getTemplate() + { + return $this->template; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTemplateResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertTemplateResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTriggerResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTriggerResponse.php new file mode 100644 index 000000000..24d7c08bb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTriggerResponse.php @@ -0,0 +1,40 @@ +trigger = $trigger; + } + /** + * @return Trigger + */ + public function getTrigger() + { + return $this->trigger; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTriggerResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertTriggerResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertVariableResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertVariableResponse.php new file mode 100644 index 000000000..56fb45689 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertVariableResponse.php @@ -0,0 +1,40 @@ +variable = $variable; + } + /** + * @return Variable + */ + public function getVariable() + { + return $this->variable; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertVariableResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertVariableResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertZoneResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertZoneResponse.php new file mode 100644 index 000000000..661a88574 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertZoneResponse.php @@ -0,0 +1,40 @@ +zone = $zone; + } + /** + * @return Zone + */ + public function getZone() + { + return $this->zone; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertZoneResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertZoneResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SetupTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SetupTag.php new file mode 100644 index 000000000..3b2e07352 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SetupTag.php @@ -0,0 +1,60 @@ +stopOnSetupFailure = $stopOnSetupFailure; + } + /** + * @return bool + */ + public function getStopOnSetupFailure() + { + return $this->stopOnSetupFailure; + } + /** + * @param string + */ + public function setTagName($tagName) + { + $this->tagName = $tagName; + } + /** + * @return string + */ + public function getTagName() + { + return $this->tagName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SetupTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_SetupTag'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncStatus.php new file mode 100644 index 000000000..4c35b140c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncStatus.php @@ -0,0 +1,60 @@ +mergeConflict = $mergeConflict; + } + /** + * @return bool + */ + public function getMergeConflict() + { + return $this->mergeConflict; + } + /** + * @param bool + */ + public function setSyncError($syncError) + { + $this->syncError = $syncError; + } + /** + * @return bool + */ + public function getSyncError() + { + return $this->syncError; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_SyncStatus'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncWorkspaceResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncWorkspaceResponse.php new file mode 100644 index 000000000..f6a27bfcc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncWorkspaceResponse.php @@ -0,0 +1,57 @@ +mergeConflict = $mergeConflict; + } + /** + * @return MergeConflict[] + */ + public function getMergeConflict() + { + return $this->mergeConflict; + } + /** + * @param SyncStatus + */ + public function setSyncStatus(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus $syncStatus) + { + $this->syncStatus = $syncStatus; + } + /** + * @return SyncStatus + */ + public function getSyncStatus() + { + return $this->syncStatus; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncWorkspaceResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_SyncWorkspaceResponse'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Tag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Tag.php new file mode 100644 index 000000000..0eed12701 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Tag.php @@ -0,0 +1,499 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string[] + */ + public function setBlockingRuleId($blockingRuleId) + { + $this->blockingRuleId = $blockingRuleId; + } + /** + * @return string[] + */ + public function getBlockingRuleId() + { + return $this->blockingRuleId; + } + /** + * @param string[] + */ + public function setBlockingTriggerId($blockingTriggerId) + { + $this->blockingTriggerId = $blockingTriggerId; + } + /** + * @return string[] + */ + public function getBlockingTriggerId() + { + return $this->blockingTriggerId; + } + /** + * @param TagConsentSetting + */ + public function setConsentSettings(\Google\Site_Kit_Dependencies\Google\Service\TagManager\TagConsentSetting $consentSettings) + { + $this->consentSettings = $consentSettings; + } + /** + * @return TagConsentSetting + */ + public function getConsentSettings() + { + return $this->consentSettings; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string[] + */ + public function setFiringRuleId($firingRuleId) + { + $this->firingRuleId = $firingRuleId; + } + /** + * @return string[] + */ + public function getFiringRuleId() + { + return $this->firingRuleId; + } + /** + * @param string[] + */ + public function setFiringTriggerId($firingTriggerId) + { + $this->firingTriggerId = $firingTriggerId; + } + /** + * @return string[] + */ + public function getFiringTriggerId() + { + return $this->firingTriggerId; + } + /** + * @param bool + */ + public function setLiveOnly($liveOnly) + { + $this->liveOnly = $liveOnly; + } + /** + * @return bool + */ + public function getLiveOnly() + { + return $this->liveOnly; + } + /** + * @param Parameter + */ + public function setMonitoringMetadata(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $monitoringMetadata) + { + $this->monitoringMetadata = $monitoringMetadata; + } + /** + * @return Parameter + */ + public function getMonitoringMetadata() + { + return $this->monitoringMetadata; + } + /** + * @param string + */ + public function setMonitoringMetadataTagNameKey($monitoringMetadataTagNameKey) + { + $this->monitoringMetadataTagNameKey = $monitoringMetadataTagNameKey; + } + /** + * @return string + */ + public function getMonitoringMetadataTagNameKey() + { + return $this->monitoringMetadataTagNameKey; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } + /** + * @param Parameter[] + */ + public function setParameter($parameter) + { + $this->parameter = $parameter; + } + /** + * @return Parameter[] + */ + public function getParameter() + { + return $this->parameter; + } + /** + * @param string + */ + public function setParentFolderId($parentFolderId) + { + $this->parentFolderId = $parentFolderId; + } + /** + * @return string + */ + public function getParentFolderId() + { + return $this->parentFolderId; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param bool + */ + public function setPaused($paused) + { + $this->paused = $paused; + } + /** + * @return bool + */ + public function getPaused() + { + return $this->paused; + } + /** + * @param Parameter + */ + public function setPriority(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $priority) + { + $this->priority = $priority; + } + /** + * @return Parameter + */ + public function getPriority() + { + return $this->priority; + } + /** + * @param string + */ + public function setScheduleEndMs($scheduleEndMs) + { + $this->scheduleEndMs = $scheduleEndMs; + } + /** + * @return string + */ + public function getScheduleEndMs() + { + return $this->scheduleEndMs; + } + /** + * @param string + */ + public function setScheduleStartMs($scheduleStartMs) + { + $this->scheduleStartMs = $scheduleStartMs; + } + /** + * @return string + */ + public function getScheduleStartMs() + { + return $this->scheduleStartMs; + } + /** + * @param SetupTag[] + */ + public function setSetupTag($setupTag) + { + $this->setupTag = $setupTag; + } + /** + * @return SetupTag[] + */ + public function getSetupTag() + { + return $this->setupTag; + } + /** + * @param string + */ + public function setTagFiringOption($tagFiringOption) + { + $this->tagFiringOption = $tagFiringOption; + } + /** + * @return string + */ + public function getTagFiringOption() + { + return $this->tagFiringOption; + } + /** + * @param string + */ + public function setTagId($tagId) + { + $this->tagId = $tagId; + } + /** + * @return string + */ + public function getTagId() + { + return $this->tagId; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param TeardownTag[] + */ + public function setTeardownTag($teardownTag) + { + $this->teardownTag = $teardownTag; + } + /** + * @return TeardownTag[] + */ + public function getTeardownTag() + { + return $this->teardownTag; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Tag'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TagConsentSetting.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TagConsentSetting.php new file mode 100644 index 000000000..629984bc4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TagConsentSetting.php @@ -0,0 +1,58 @@ +consentStatus = $consentStatus; + } + /** + * @return string + */ + public function getConsentStatus() + { + return $this->consentStatus; + } + /** + * @param Parameter + */ + public function setConsentType(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $consentType) + { + $this->consentType = $consentType; + } + /** + * @return Parameter + */ + public function getConsentType() + { + return $this->consentType; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\TagConsentSetting::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_TagConsentSetting'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TeardownTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TeardownTag.php new file mode 100644 index 000000000..ad5427716 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TeardownTag.php @@ -0,0 +1,60 @@ +stopTeardownOnFailure = $stopTeardownOnFailure; + } + /** + * @return bool + */ + public function getStopTeardownOnFailure() + { + return $this->stopTeardownOnFailure; + } + /** + * @param string + */ + public function setTagName($tagName) + { + $this->tagName = $tagName; + } + /** + * @return string + */ + public function getTagName() + { + return $this->tagName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\TeardownTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_TeardownTag'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Trigger.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Trigger.php new file mode 100644 index 000000000..192648509 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Trigger.php @@ -0,0 +1,559 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param Condition[] + */ + public function setAutoEventFilter($autoEventFilter) + { + $this->autoEventFilter = $autoEventFilter; + } + /** + * @return Condition[] + */ + public function getAutoEventFilter() + { + return $this->autoEventFilter; + } + /** + * @param Parameter + */ + public function setCheckValidation(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $checkValidation) + { + $this->checkValidation = $checkValidation; + } + /** + * @return Parameter + */ + public function getCheckValidation() + { + return $this->checkValidation; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param Parameter + */ + public function setContinuousTimeMinMilliseconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $continuousTimeMinMilliseconds) + { + $this->continuousTimeMinMilliseconds = $continuousTimeMinMilliseconds; + } + /** + * @return Parameter + */ + public function getContinuousTimeMinMilliseconds() + { + return $this->continuousTimeMinMilliseconds; + } + /** + * @param Condition[] + */ + public function setCustomEventFilter($customEventFilter) + { + $this->customEventFilter = $customEventFilter; + } + /** + * @return Condition[] + */ + public function getCustomEventFilter() + { + return $this->customEventFilter; + } + /** + * @param Parameter + */ + public function setEventName(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $eventName) + { + $this->eventName = $eventName; + } + /** + * @return Parameter + */ + public function getEventName() + { + return $this->eventName; + } + /** + * @param Condition[] + */ + public function setFilter($filter) + { + $this->filter = $filter; + } + /** + * @return Condition[] + */ + public function getFilter() + { + return $this->filter; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param Parameter + */ + public function setHorizontalScrollPercentageList(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $horizontalScrollPercentageList) + { + $this->horizontalScrollPercentageList = $horizontalScrollPercentageList; + } + /** + * @return Parameter + */ + public function getHorizontalScrollPercentageList() + { + return $this->horizontalScrollPercentageList; + } + /** + * @param Parameter + */ + public function setInterval(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $interval) + { + $this->interval = $interval; + } + /** + * @return Parameter + */ + public function getInterval() + { + return $this->interval; + } + /** + * @param Parameter + */ + public function setIntervalSeconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $intervalSeconds) + { + $this->intervalSeconds = $intervalSeconds; + } + /** + * @return Parameter + */ + public function getIntervalSeconds() + { + return $this->intervalSeconds; + } + /** + * @param Parameter + */ + public function setLimit(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $limit) + { + $this->limit = $limit; + } + /** + * @return Parameter + */ + public function getLimit() + { + return $this->limit; + } + /** + * @param Parameter + */ + public function setMaxTimerLengthSeconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $maxTimerLengthSeconds) + { + $this->maxTimerLengthSeconds = $maxTimerLengthSeconds; + } + /** + * @return Parameter + */ + public function getMaxTimerLengthSeconds() + { + return $this->maxTimerLengthSeconds; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } + /** + * @param Parameter[] + */ + public function setParameter($parameter) + { + $this->parameter = $parameter; + } + /** + * @return Parameter[] + */ + public function getParameter() + { + return $this->parameter; + } + /** + * @param string + */ + public function setParentFolderId($parentFolderId) + { + $this->parentFolderId = $parentFolderId; + } + /** + * @return string + */ + public function getParentFolderId() + { + return $this->parentFolderId; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param Parameter + */ + public function setSelector(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $selector) + { + $this->selector = $selector; + } + /** + * @return Parameter + */ + public function getSelector() + { + return $this->selector; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param Parameter + */ + public function setTotalTimeMinMilliseconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $totalTimeMinMilliseconds) + { + $this->totalTimeMinMilliseconds = $totalTimeMinMilliseconds; + } + /** + * @return Parameter + */ + public function getTotalTimeMinMilliseconds() + { + return $this->totalTimeMinMilliseconds; + } + /** + * @param string + */ + public function setTriggerId($triggerId) + { + $this->triggerId = $triggerId; + } + /** + * @return string + */ + public function getTriggerId() + { + return $this->triggerId; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param Parameter + */ + public function setUniqueTriggerId(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $uniqueTriggerId) + { + $this->uniqueTriggerId = $uniqueTriggerId; + } + /** + * @return Parameter + */ + public function getUniqueTriggerId() + { + return $this->uniqueTriggerId; + } + /** + * @param Parameter + */ + public function setVerticalScrollPercentageList(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $verticalScrollPercentageList) + { + $this->verticalScrollPercentageList = $verticalScrollPercentageList; + } + /** + * @return Parameter + */ + public function getVerticalScrollPercentageList() + { + return $this->verticalScrollPercentageList; + } + /** + * @param Parameter + */ + public function setVisibilitySelector(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $visibilitySelector) + { + $this->visibilitySelector = $visibilitySelector; + } + /** + * @return Parameter + */ + public function getVisibilitySelector() + { + return $this->visibilitySelector; + } + /** + * @param Parameter + */ + public function setVisiblePercentageMax(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $visiblePercentageMax) + { + $this->visiblePercentageMax = $visiblePercentageMax; + } + /** + * @return Parameter + */ + public function getVisiblePercentageMax() + { + return $this->visiblePercentageMax; + } + /** + * @param Parameter + */ + public function setVisiblePercentageMin(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $visiblePercentageMin) + { + $this->visiblePercentageMin = $visiblePercentageMin; + } + /** + * @return Parameter + */ + public function getVisiblePercentageMin() + { + return $this->visiblePercentageMin; + } + /** + * @param Parameter + */ + public function setWaitForTags(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $waitForTags) + { + $this->waitForTags = $waitForTags; + } + /** + * @return Parameter + */ + public function getWaitForTags() + { + return $this->waitForTags; + } + /** + * @param Parameter + */ + public function setWaitForTagsTimeout(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $waitForTagsTimeout) + { + $this->waitForTagsTimeout = $waitForTagsTimeout; + } + /** + * @return Parameter + */ + public function getWaitForTagsTimeout() + { + return $this->waitForTagsTimeout; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Trigger'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/UserPermission.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/UserPermission.php new file mode 100644 index 000000000..f3370db28 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/UserPermission.php @@ -0,0 +1,111 @@ +accountAccess = $accountAccess; + } + /** + * @return AccountAccess + */ + public function getAccountAccess() + { + return $this->accountAccess; + } + /** + * @param string + */ + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param ContainerAccess[] + */ + public function setContainerAccess($containerAccess) + { + $this->containerAccess = $containerAccess; + } + /** + * @return ContainerAccess[] + */ + public function getContainerAccess() + { + return $this->containerAccess; + } + /** + * @param string + */ + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + /** + * @return string + */ + public function getEmailAddress() + { + return $this->emailAddress; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_UserPermission'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Variable.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Variable.php new file mode 100644 index 000000000..f266de4ac --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Variable.php @@ -0,0 +1,327 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string[] + */ + public function setDisablingTriggerId($disablingTriggerId) + { + $this->disablingTriggerId = $disablingTriggerId; + } + /** + * @return string[] + */ + public function getDisablingTriggerId() + { + return $this->disablingTriggerId; + } + /** + * @param string[] + */ + public function setEnablingTriggerId($enablingTriggerId) + { + $this->enablingTriggerId = $enablingTriggerId; + } + /** + * @return string[] + */ + public function getEnablingTriggerId() + { + return $this->enablingTriggerId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param VariableFormatValue + */ + public function setFormatValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\VariableFormatValue $formatValue) + { + $this->formatValue = $formatValue; + } + /** + * @return VariableFormatValue + */ + public function getFormatValue() + { + return $this->formatValue; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } + /** + * @param Parameter[] + */ + public function setParameter($parameter) + { + $this->parameter = $parameter; + } + /** + * @return Parameter[] + */ + public function getParameter() + { + return $this->parameter; + } + /** + * @param string + */ + public function setParentFolderId($parentFolderId) + { + $this->parentFolderId = $parentFolderId; + } + /** + * @return string + */ + public function getParentFolderId() + { + return $this->parentFolderId; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setScheduleEndMs($scheduleEndMs) + { + $this->scheduleEndMs = $scheduleEndMs; + } + /** + * @return string + */ + public function getScheduleEndMs() + { + return $this->scheduleEndMs; + } + /** + * @param string + */ + public function setScheduleStartMs($scheduleStartMs) + { + $this->scheduleStartMs = $scheduleStartMs; + } + /** + * @return string + */ + public function getScheduleStartMs() + { + return $this->scheduleStartMs; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * @param string + */ + public function setVariableId($variableId) + { + $this->variableId = $variableId; + } + /** + * @return string + */ + public function getVariableId() + { + return $this->variableId; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Variable'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/VariableFormatValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/VariableFormatValue.php new file mode 100644 index 000000000..f67f17793 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/VariableFormatValue.php @@ -0,0 +1,106 @@ +caseConversionType = $caseConversionType; + } + /** + * @return string + */ + public function getCaseConversionType() + { + return $this->caseConversionType; + } + /** + * @param Parameter + */ + public function setConvertFalseToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertFalseToValue) + { + $this->convertFalseToValue = $convertFalseToValue; + } + /** + * @return Parameter + */ + public function getConvertFalseToValue() + { + return $this->convertFalseToValue; + } + /** + * @param Parameter + */ + public function setConvertNullToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertNullToValue) + { + $this->convertNullToValue = $convertNullToValue; + } + /** + * @return Parameter + */ + public function getConvertNullToValue() + { + return $this->convertNullToValue; + } + /** + * @param Parameter + */ + public function setConvertTrueToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertTrueToValue) + { + $this->convertTrueToValue = $convertTrueToValue; + } + /** + * @return Parameter + */ + public function getConvertTrueToValue() + { + return $this->convertTrueToValue; + } + /** + * @param Parameter + */ + public function setConvertUndefinedToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertUndefinedToValue) + { + $this->convertUndefinedToValue = $convertUndefinedToValue; + } + /** + * @return Parameter + */ + public function getConvertUndefinedToValue() + { + return $this->convertUndefinedToValue; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\VariableFormatValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_VariableFormatValue'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Workspace.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Workspace.php new file mode 100644 index 000000000..bf52cc680 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Workspace.php @@ -0,0 +1,168 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setDescription($description) + { + $this->description = $description; + } + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Workspace'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Zone.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Zone.php new file mode 100644 index 000000000..26f9cf0d6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Zone.php @@ -0,0 +1,235 @@ +accountId = $accountId; + } + /** + * @return string + */ + public function getAccountId() + { + return $this->accountId; + } + /** + * @param ZoneBoundary + */ + public function setBoundary(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneBoundary $boundary) + { + $this->boundary = $boundary; + } + /** + * @return ZoneBoundary + */ + public function getBoundary() + { + return $this->boundary; + } + /** + * @param ZoneChildContainer[] + */ + public function setChildContainer($childContainer) + { + $this->childContainer = $childContainer; + } + /** + * @return ZoneChildContainer[] + */ + public function getChildContainer() + { + return $this->childContainer; + } + /** + * @param string + */ + public function setContainerId($containerId) + { + $this->containerId = $containerId; + } + /** + * @return string + */ + public function getContainerId() + { + return $this->containerId; + } + /** + * @param string + */ + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + /** + * @return string + */ + public function getFingerprint() + { + return $this->fingerprint; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setNotes($notes) + { + $this->notes = $notes; + } + /** + * @return string + */ + public function getNotes() + { + return $this->notes; + } + /** + * @param string + */ + public function setPath($path) + { + $this->path = $path; + } + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * @param string + */ + public function setTagManagerUrl($tagManagerUrl) + { + $this->tagManagerUrl = $tagManagerUrl; + } + /** + * @return string + */ + public function getTagManagerUrl() + { + return $this->tagManagerUrl; + } + /** + * @param ZoneTypeRestriction + */ + public function setTypeRestriction(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneTypeRestriction $typeRestriction) + { + $this->typeRestriction = $typeRestriction; + } + /** + * @return ZoneTypeRestriction + */ + public function getTypeRestriction() + { + return $this->typeRestriction; + } + /** + * @param string + */ + public function setWorkspaceId($workspaceId) + { + $this->workspaceId = $workspaceId; + } + /** + * @return string + */ + public function getWorkspaceId() + { + return $this->workspaceId; + } + /** + * @param string + */ + public function setZoneId($zoneId) + { + $this->zoneId = $zoneId; + } + /** + * @return string + */ + public function getZoneId() + { + return $this->zoneId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Zone'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneBoundary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneBoundary.php new file mode 100644 index 000000000..d9c425783 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneBoundary.php @@ -0,0 +1,59 @@ +condition = $condition; + } + /** + * @return Condition[] + */ + public function getCondition() + { + return $this->condition; + } + /** + * @param string[] + */ + public function setCustomEvaluationTriggerId($customEvaluationTriggerId) + { + $this->customEvaluationTriggerId = $customEvaluationTriggerId; + } + /** + * @return string[] + */ + public function getCustomEvaluationTriggerId() + { + return $this->customEvaluationTriggerId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneBoundary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ZoneBoundary'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneChildContainer.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneChildContainer.php new file mode 100644 index 000000000..60d9d09c3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneChildContainer.php @@ -0,0 +1,60 @@ +nickname = $nickname; + } + /** + * @return string + */ + public function getNickname() + { + return $this->nickname; + } + /** + * @param string + */ + public function setPublicId($publicId) + { + $this->publicId = $publicId; + } + /** + * @return string + */ + public function getPublicId() + { + return $this->publicId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneChildContainer::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ZoneChildContainer'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneTypeRestriction.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneTypeRestriction.php new file mode 100644 index 000000000..20b98942a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneTypeRestriction.php @@ -0,0 +1,61 @@ +enable = $enable; + } + /** + * @return bool + */ + public function getEnable() + { + return $this->enable; + } + /** + * @param string[] + */ + public function setWhitelistedTypeId($whitelistedTypeId) + { + $this->whitelistedTypeId = $whitelistedTypeId; + } + /** + * @return string[] + */ + public function getWhitelistedTypeId() + { + return $this->whitelistedTypeId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneTypeRestriction::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ZoneTypeRestriction'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Revoke.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Revoke.php new file mode 100644 index 000000000..007aa2349 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Revoke.php @@ -0,0 +1,65 @@ +http = $http; + } + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * + * @param string|array $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token) + { + if (\is_array($token)) { + if (isset($token['refresh_token'])) { + $token = $token['refresh_token']; + } else { + $token = $token['access_token']; + } + } + $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\http_build_query(array('token' => $token))); + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', \Google\Site_Kit_Dependencies\Google\Client::OAUTH2_REVOKE_URI, ['Cache-Control' => 'no-store', 'Content-Type' => 'application/x-www-form-urlencoded'], $body); + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->http); + $response = $httpHandler($request); + return $response->getStatusCode() == 200; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Verify.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Verify.php new file mode 100644 index 000000000..f39c234d8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Verify.php @@ -0,0 +1,246 @@ +http = $http; + $this->cache = $cache; + $this->jwt = $jwt ?: $this->getJwtService(); + } + /** + * Verifies an id token and returns the authenticated apiLoginTicket. + * Throws an exception if the id token is not valid. + * The audience parameter can be used to control which id tokens are + * accepted. By default, the id token must have been issued to this OAuth2 client. + * + * @param string $idToken the ID token in JWT format + * @param string $audience Optional. The audience to verify against JWt "aud" + * @return array the token payload, if successful + */ + public function verifyIdToken($idToken, $audience = null) + { + if (empty($idToken)) { + throw new \LogicException('id_token cannot be null'); + } + // set phpseclib constants if applicable + $this->setPhpsecConstants(); + // Check signature + $certs = $this->getFederatedSignOnCerts(); + foreach ($certs as $cert) { + try { + $payload = $this->jwt->decode($idToken, $this->getPublicKey($cert), array('RS256')); + if (\property_exists($payload, 'aud')) { + if ($audience && $payload->aud != $audience) { + return \false; + } + } + // support HTTP and HTTPS issuers + // @see https://developers.google.com/identity/sign-in/web/backend-auth + $issuers = array(self::OAUTH2_ISSUER, self::OAUTH2_ISSUER_HTTPS); + if (!isset($payload->iss) || !\in_array($payload->iss, $issuers)) { + return \false; + } + return (array) $payload; + } catch (\Google\Site_Kit_Dependencies\ExpiredException $e) { + return \false; + } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\ExpiredException $e) { + return \false; + } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\SignatureInvalidException $e) { + // continue + } catch (\DomainException $e) { + // continue + } + } + return \false; + } + private function getCache() + { + return $this->cache; + } + /** + * Retrieve and cache a certificates file. + * + * @param $url string location + * @throws \Google\Exception + * @return array certificates + */ + private function retrieveCertsFromLocation($url) + { + // If we're retrieving a local file, just grab it. + if (0 !== \strpos($url, 'http')) { + if (!($file = \file_get_contents($url))) { + throw new \Google\Site_Kit_Dependencies\Google\Exception("Failed to retrieve verification certificates: '" . $url . "'."); + } + return \json_decode($file, \true); + } + $response = $this->http->get($url); + if ($response->getStatusCode() == 200) { + return \json_decode((string) $response->getBody(), \true); + } + throw new \Google\Site_Kit_Dependencies\Google\Exception(\sprintf('Failed to retrieve verification certificates: "%s".', $response->getBody()->getContents()), $response->getStatusCode()); + } + // Gets federated sign-on certificates to use for verifying identity tokens. + // Returns certs as array structure, where keys are key ids, and values + // are PEM encoded certificates. + private function getFederatedSignOnCerts() + { + $certs = null; + if ($cache = $this->getCache()) { + $cacheItem = $cache->getItem('federated_signon_certs_v3'); + $certs = $cacheItem->get(); + } + if (!$certs) { + $certs = $this->retrieveCertsFromLocation(self::FEDERATED_SIGNON_CERT_URL); + if ($cache) { + $cacheItem->expiresAt(new \DateTime('+1 hour')); + $cacheItem->set($certs); + $cache->save($cacheItem); + } + } + if (!isset($certs['keys'])) { + throw new \Google\Site_Kit_Dependencies\Google\AccessToken\InvalidArgumentException('federated sign-on certs expects "keys" to be set'); + } + return $certs['keys']; + } + private function getJwtService() + { + $jwtClass = 'JWT'; + if (\class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT')) { + $jwtClass = 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT'; + } + if (\property_exists($jwtClass, 'leeway') && $jwtClass::$leeway < 1) { + // Ensures JWT leeway is at least 1 + // @see https://github.com/google/google-api-php-client/issues/827 + $jwtClass::$leeway = 1; + } + return new $jwtClass(); + } + private function getPublicKey($cert) + { + $bigIntClass = $this->getBigIntClass(); + $modulus = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['n']), 256); + $exponent = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['e']), 256); + $component = array('n' => $modulus, 'e' => $exponent); + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\RSA\\PublicKey')) { + /** @var PublicKey $loader */ + $loader = \Google\Site_Kit_Dependencies\phpseclib3\Crypt\PublicKeyLoader::load($component); + return $loader->toString('PKCS8'); + } + $rsaClass = $this->getRsaClass(); + $rsa = new $rsaClass(); + $rsa->loadKey($component); + return $rsa->getPublicKey(); + } + private function getRsaClass() + { + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\RSA')) { + return 'Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\RSA'; + } + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA')) { + return 'Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA'; + } + return 'Crypt_RSA'; + } + private function getBigIntClass() + { + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger')) { + return 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger'; + } + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Math\\BigInteger')) { + return 'Google\\Site_Kit_Dependencies\\phpseclib\\Math\\BigInteger'; + } + return 'Math_BigInteger'; + } + private function getOpenSslConstant() + { + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\AES')) { + return 'phpseclib3\\Crypt\\AES::ENGINE_OPENSSL'; + } + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA')) { + return 'phpseclib\\Crypt\\RSA::MODE_OPENSSL'; + } + if (\class_exists('Google\\Site_Kit_Dependencies\\Crypt_RSA')) { + return 'CRYPT_RSA_MODE_OPENSSL'; + } + throw new \Exception('Cannot find RSA class'); + } + /** + * phpseclib calls "phpinfo" by default, which requires special + * whitelisting in the AppEngine VM environment. This function + * sets constants to bypass the need for phpseclib to check phpinfo + * + * @see phpseclib/Math/BigInteger + * @see https://github.com/GoogleCloudPlatform/getting-started-php/issues/85 + */ + private function setPhpsecConstants() + { + if (\filter_var(\getenv('GAE_VM'), \FILTER_VALIDATE_BOOLEAN)) { + if (!\defined('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED')) { + \define('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED', \true); + } + if (!\defined('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE')) { + \define('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE', \constant($this->getOpenSslConstant())); + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/AuthHandlerFactory.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/AuthHandlerFactory.php new file mode 100644 index 000000000..92f90501a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/AuthHandlerFactory.php @@ -0,0 +1,50 @@ +cache = $cache; + $this->cacheConfig = $cacheConfig; + } + public function attachCredentials(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader $credentials, callable $tokenCallback = null) + { + // use the provided cache + if ($this->cache) { + $credentials = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($credentials, $this->cacheConfig, $this->cache); + } + return $this->attachCredentialsCache($http, $credentials, $tokenCallback); + } + public function attachCredentialsCache(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache $credentials, callable $tokenCallback = null) + { + // if we end up needing to make an HTTP request to retrieve credentials, we + // can use our existing one, but we need to throw exceptions so the error + // bubbles up. + $authHttp = $this->createAuthHttp($http); + $authHttpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp); + $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\AuthTokenSubscriber($credentials, $authHttpHandler, $tokenCallback); + $http->setDefaultOption('auth', 'google_auth'); + $http->getEmitter()->attach($subscriber); + return $http; + } + public function attachToken(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, array $token, array $scopes) + { + $tokenFunc = function ($scopes) use($token) { + return $token['access_token']; + }; + $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\ScopedAccessTokenSubscriber($tokenFunc, $scopes, $this->cacheConfig, $this->cache); + $http->setDefaultOption('auth', 'scoped'); + $http->getEmitter()->attach($subscriber); + return $http; + } + public function attachKey(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, $key) + { + $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\SimpleSubscriber(['key' => $key]); + $http->setDefaultOption('auth', 'simple'); + $http->getEmitter()->attach($subscriber); + return $http; + } + private function createAuthHttp(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http) + { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(['base_url' => $http->getBaseUrl(), 'defaults' => ['exceptions' => \true, 'verify' => $http->getDefaultOption('verify'), 'proxy' => $http->getDefaultOption('proxy')]]); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php new file mode 100644 index 000000000..937f4544e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php @@ -0,0 +1,76 @@ +cache = $cache; + $this->cacheConfig = $cacheConfig; + } + public function attachCredentials(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader $credentials, callable $tokenCallback = null) + { + // use the provided cache + if ($this->cache) { + $credentials = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($credentials, $this->cacheConfig, $this->cache); + } + return $this->attachCredentialsCache($http, $credentials, $tokenCallback); + } + public function attachCredentialsCache(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache $credentials, callable $tokenCallback = null) + { + // if we end up needing to make an HTTP request to retrieve credentials, we + // can use our existing one, but we need to throw exceptions so the error + // bubbles up. + $authHttp = $this->createAuthHttp($http); + $authHttpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp); + $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($credentials, $authHttpHandler, $tokenCallback); + $config = $http->getConfig(); + $config['handler']->remove('google_auth'); + $config['handler']->push($middleware, 'google_auth'); + $config['auth'] = 'google_auth'; + $http = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($config); + return $http; + } + public function attachToken(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, array $token, array $scopes) + { + $tokenFunc = function ($scopes) use($token) { + return $token['access_token']; + }; + $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\ScopedAccessTokenMiddleware($tokenFunc, $scopes, $this->cacheConfig, $this->cache); + $config = $http->getConfig(); + $config['handler']->remove('google_auth'); + $config['handler']->push($middleware, 'google_auth'); + $config['auth'] = 'scoped'; + $http = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($config); + return $http; + } + public function attachKey(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, $key) + { + $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\SimpleMiddleware(['key' => $key]); + $config = $http->getConfig(); + $config['handler']->remove('google_auth'); + $config['handler']->push($middleware, 'google_auth'); + $config['auth'] = 'simple'; + $http = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($config); + return $http; + } + private function createAuthHttp(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http) + { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(['base_uri' => $http->getConfig('base_uri'), 'http_errors' => \true, 'verify' => $http->getConfig('verify'), 'proxy' => $http->getConfig('proxy')]); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php new file mode 100644 index 000000000..0cf575810 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php @@ -0,0 +1,25 @@ +config = \array_merge([ + 'application_name' => '', + // Don't change these unless you're working against a special development + // or testing environment. + 'base_path' => self::API_BASE_PATH, + // https://developers.google.com/console + 'client_id' => '', + 'client_secret' => '', + // Can be a path to JSON credentials or an array representing those + // credentials (@see Google\Client::setAuthConfig), or an instance of + // Google\Auth\CredentialsLoader. + 'credentials' => null, + // @see Google\Client::setScopes + 'scopes' => null, + // Sets X-Goog-User-Project, which specifies a user project to bill + // for access charges associated with the request + 'quota_project' => null, + 'redirect_uri' => null, + 'state' => null, + // Simple API access key, also from the API console. Ensure you get + // a Server key, and not a Browser key. + 'developer_key' => '', + // For use with Google Cloud Platform + // fetch the ApplicationDefaultCredentials, if applicable + // @see https://developers.google.com/identity/protocols/application-default-credentials + 'use_application_default_credentials' => \false, + 'signing_key' => null, + 'signing_algorithm' => null, + 'subject' => null, + // Other OAuth2 parameters. + 'hd' => '', + 'prompt' => '', + 'openid.realm' => '', + 'include_granted_scopes' => null, + 'login_hint' => '', + 'request_visible_actions' => '', + 'access_type' => 'online', + 'approval_prompt' => 'auto', + // Task Runner retry configuration + // @see Google\Task\Runner + 'retry' => array(), + 'retry_map' => null, + // Cache class implementing Psr\Cache\CacheItemPoolInterface. + // Defaults to Google\Auth\Cache\MemoryCacheItemPool. + 'cache' => null, + // cache config for downstream auth caching + 'cache_config' => [], + // function to be called when an access token is fetched + // follows the signature function ($cacheKey, $accessToken) + 'token_callback' => null, + // Service class used in Google\Client::verifyIdToken. + // Explicitly pass this in to avoid setting JWT::$leeway + 'jwt' => null, + // Setting api_format_v2 will return more detailed error messages + // from certain APIs. + 'api_format_v2' => \false, + ], $config); + if (!\is_null($this->config['credentials'])) { + if ($this->config['credentials'] instanceof \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader) { + $this->credentials = $this->config['credentials']; + } else { + $this->setAuthConfig($this->config['credentials']); + } + unset($this->config['credentials']); + } + if (!\is_null($this->config['scopes'])) { + $this->setScopes($this->config['scopes']); + unset($this->config['scopes']); + } + // Set a default token callback to update the in-memory access token + if (\is_null($this->config['token_callback'])) { + $this->config['token_callback'] = function ($cacheKey, $newAccessToken) { + $this->setAccessToken([ + 'access_token' => $newAccessToken, + 'expires_in' => 3600, + // Google default + 'created' => \time(), + ]); + }; + } + if (!\is_null($this->config['cache'])) { + $this->setCache($this->config['cache']); + unset($this->config['cache']); + } + } + /** + * Get a string containing the version of the library. + * + * @return string + */ + public function getLibraryVersion() + { + return self::LIBVER; + } + /** + * For backwards compatibility + * alias for fetchAccessTokenWithAuthCode + * + * @param $code string code from accounts.google.com + * @return array access token + * @deprecated + */ + public function authenticate($code) + { + return $this->fetchAccessTokenWithAuthCode($code); + } + /** + * Attempt to exchange a code for an valid authentication token. + * Helper wrapped around the OAuth 2.0 implementation. + * + * @param $code string code from accounts.google.com + * @return array access token + */ + public function fetchAccessTokenWithAuthCode($code) + { + if (\strlen($code) == 0) { + throw new \InvalidArgumentException("Invalid code"); + } + $auth = $this->getOAuth2Service(); + $auth->setCode($code); + $auth->setRedirectUri($this->getRedirectUri()); + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->getHttpClient()); + $creds = $auth->fetchAuthToken($httpHandler); + if ($creds && isset($creds['access_token'])) { + $creds['created'] = \time(); + $this->setAccessToken($creds); + } + return $creds; + } + /** + * For backwards compatibility + * alias for fetchAccessTokenWithAssertion + * + * @return array access token + * @deprecated + */ + public function refreshTokenWithAssertion() + { + return $this->fetchAccessTokenWithAssertion(); + } + /** + * Fetches a fresh access token with a given assertion token. + * @param ClientInterface $authHttp optional. + * @return array access token + */ + public function fetchAccessTokenWithAssertion(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $authHttp = null) + { + if (!$this->isUsingApplicationDefaultCredentials()) { + throw new \DomainException('set the JSON service account credentials using' . ' Google\\Client::setAuthConfig or set the path to your JSON file' . ' with the "GOOGLE_APPLICATION_CREDENTIALS" environment variable' . ' and call Google\\Client::useApplicationDefaultCredentials to' . ' refresh a token with assertion.'); + } + $this->getLogger()->log('info', 'OAuth2 access token refresh with Signed JWT assertion grants.'); + $credentials = $this->createApplicationDefaultCredentials(); + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp); + $creds = $credentials->fetchAuthToken($httpHandler); + if ($creds && isset($creds['access_token'])) { + $creds['created'] = \time(); + $this->setAccessToken($creds); + } + return $creds; + } + /** + * For backwards compatibility + * alias for fetchAccessTokenWithRefreshToken + * + * @param string $refreshToken + * @return array access token + */ + public function refreshToken($refreshToken) + { + return $this->fetchAccessTokenWithRefreshToken($refreshToken); + } + /** + * Fetches a fresh OAuth 2.0 access token with the given refresh token. + * @param string $refreshToken + * @return array access token + */ + public function fetchAccessTokenWithRefreshToken($refreshToken = null) + { + if (null === $refreshToken) { + if (!isset($this->token['refresh_token'])) { + throw new \LogicException('refresh token must be passed in or set as part of setAccessToken'); + } + $refreshToken = $this->token['refresh_token']; + } + $this->getLogger()->info('OAuth2 access token refresh'); + $auth = $this->getOAuth2Service(); + $auth->setRefreshToken($refreshToken); + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->getHttpClient()); + $creds = $auth->fetchAuthToken($httpHandler); + if ($creds && isset($creds['access_token'])) { + $creds['created'] = \time(); + if (!isset($creds['refresh_token'])) { + $creds['refresh_token'] = $refreshToken; + } + $this->setAccessToken($creds); + } + return $creds; + } + /** + * Create a URL to obtain user authorization. + * The authorization endpoint allows the user to first + * authenticate, and then grant/deny the access request. + * @param string|array $scope The scope is expressed as an array or list of space-delimited strings. + * @return string + */ + public function createAuthUrl($scope = null) + { + if (empty($scope)) { + $scope = $this->prepareScopes(); + } + if (\is_array($scope)) { + $scope = \implode(' ', $scope); + } + // only accept one of prompt or approval_prompt + $approvalPrompt = $this->config['prompt'] ? null : $this->config['approval_prompt']; + // include_granted_scopes should be string "true", string "false", or null + $includeGrantedScopes = $this->config['include_granted_scopes'] === null ? null : \var_export($this->config['include_granted_scopes'], \true); + $params = \array_filter(['access_type' => $this->config['access_type'], 'approval_prompt' => $approvalPrompt, 'hd' => $this->config['hd'], 'include_granted_scopes' => $includeGrantedScopes, 'login_hint' => $this->config['login_hint'], 'openid.realm' => $this->config['openid.realm'], 'prompt' => $this->config['prompt'], 'response_type' => 'code', 'scope' => $scope, 'state' => $this->config['state']]); + // If the list of scopes contains plus.login, add request_visible_actions + // to auth URL. + $rva = $this->config['request_visible_actions']; + if (\strlen($rva) > 0 && \false !== \strpos($scope, 'plus.login')) { + $params['request_visible_actions'] = $rva; + } + $auth = $this->getOAuth2Service(); + return (string) $auth->buildFullAuthorizationUri($params); + } + /** + * Adds auth listeners to the HTTP client based on the credentials + * set in the Google API Client object + * + * @param ClientInterface $http the http client object. + * @return ClientInterface the http client object + */ + public function authorize(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http = null) + { + $http = $http ?: $this->getHttpClient(); + $authHandler = $this->getAuthHandler(); + // These conditionals represent the decision tree for authentication + // 1. Check if a Google\Auth\CredentialsLoader instance has been supplied via the "credentials" option + // 2. Check for Application Default Credentials + // 3a. Check for an Access Token + // 3b. If access token exists but is expired, try to refresh it + // 4. Check for API Key + if ($this->credentials) { + return $authHandler->attachCredentials($http, $this->credentials, $this->config['token_callback']); + } + if ($this->isUsingApplicationDefaultCredentials()) { + $credentials = $this->createApplicationDefaultCredentials(); + return $authHandler->attachCredentialsCache($http, $credentials, $this->config['token_callback']); + } + if ($token = $this->getAccessToken()) { + $scopes = $this->prepareScopes(); + // add refresh subscriber to request a new token + if (isset($token['refresh_token']) && $this->isAccessTokenExpired()) { + $credentials = $this->createUserRefreshCredentials($scopes, $token['refresh_token']); + return $authHandler->attachCredentials($http, $credentials, $this->config['token_callback']); + } + return $authHandler->attachToken($http, $token, (array) $scopes); + } + if ($key = $this->config['developer_key']) { + return $authHandler->attachKey($http, $key); + } + return $http; + } + /** + * Set the configuration to use application default credentials for + * authentication + * + * @see https://developers.google.com/identity/protocols/application-default-credentials + * @param boolean $useAppCreds + */ + public function useApplicationDefaultCredentials($useAppCreds = \true) + { + $this->config['use_application_default_credentials'] = $useAppCreds; + } + /** + * To prevent useApplicationDefaultCredentials from inappropriately being + * called in a conditional + * + * @see https://developers.google.com/identity/protocols/application-default-credentials + */ + public function isUsingApplicationDefaultCredentials() + { + return $this->config['use_application_default_credentials']; + } + /** + * Set the access token used for requests. + * + * Note that at the time requests are sent, tokens are cached. A token will be + * cached for each combination of service and authentication scopes. If a + * cache pool is not provided, creating a new instance of the client will + * allow modification of access tokens. If a persistent cache pool is + * provided, in order to change the access token, you must clear the cached + * token by calling `$client->getCache()->clear()`. (Use caution in this case, + * as calling `clear()` will remove all cache items, including any items not + * related to Google API PHP Client.) + * + * @param string|array $token + * @throws InvalidArgumentException + */ + public function setAccessToken($token) + { + if (\is_string($token)) { + if ($json = \json_decode($token, \true)) { + $token = $json; + } else { + // assume $token is just the token string + $token = array('access_token' => $token); + } + } + if ($token == null) { + throw new \InvalidArgumentException('invalid json token'); + } + if (!isset($token['access_token'])) { + throw new \InvalidArgumentException("Invalid token format"); + } + $this->token = $token; + } + public function getAccessToken() + { + return $this->token; + } + /** + * @return string|null + */ + public function getRefreshToken() + { + if (isset($this->token['refresh_token'])) { + return $this->token['refresh_token']; + } + return null; + } + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() + { + if (!$this->token) { + return \true; + } + $created = 0; + if (isset($this->token['created'])) { + $created = $this->token['created']; + } elseif (isset($this->token['id_token'])) { + // check the ID token for "iat" + // signature verification is not required here, as we are just + // using this for convenience to save a round trip request + // to the Google API server + $idToken = $this->token['id_token']; + if (\substr_count($idToken, '.') == 2) { + $parts = \explode('.', $idToken); + $payload = \json_decode(\base64_decode($parts[1]), \true); + if ($payload && isset($payload['iat'])) { + $created = $payload['iat']; + } + } + } + // If the token is set to expire in the next 30 seconds. + return $created + ($this->token['expires_in'] - 30) < \time(); + } + /** + * @deprecated See UPGRADING.md for more information + */ + public function getAuth() + { + throw new \BadMethodCallException('This function no longer exists. See UPGRADING.md for more information'); + } + /** + * @deprecated See UPGRADING.md for more information + */ + public function setAuth($auth) + { + throw new \BadMethodCallException('This function no longer exists. See UPGRADING.md for more information'); + } + /** + * Set the OAuth 2.0 Client ID. + * @param string $clientId + */ + public function setClientId($clientId) + { + $this->config['client_id'] = $clientId; + } + public function getClientId() + { + return $this->config['client_id']; + } + /** + * Set the OAuth 2.0 Client Secret. + * @param string $clientSecret + */ + public function setClientSecret($clientSecret) + { + $this->config['client_secret'] = $clientSecret; + } + public function getClientSecret() + { + return $this->config['client_secret']; + } + /** + * Set the OAuth 2.0 Redirect URI. + * @param string $redirectUri + */ + public function setRedirectUri($redirectUri) + { + $this->config['redirect_uri'] = $redirectUri; + } + public function getRedirectUri() + { + return $this->config['redirect_uri']; + } + /** + * Set OAuth 2.0 "state" parameter to achieve per-request customization. + * @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2 + * @param string $state + */ + public function setState($state) + { + $this->config['state'] = $state; + } + /** + * @param string $accessType Possible values for access_type include: + * {@code "offline"} to request offline access from the user. + * {@code "online"} to request online access from the user. + */ + public function setAccessType($accessType) + { + $this->config['access_type'] = $accessType; + } + /** + * @param string $approvalPrompt Possible values for approval_prompt include: + * {@code "force"} to force the approval UI to appear. + * {@code "auto"} to request auto-approval when possible. (This is the default value) + */ + public function setApprovalPrompt($approvalPrompt) + { + $this->config['approval_prompt'] = $approvalPrompt; + } + /** + * Set the login hint, email address or sub id. + * @param string $loginHint + */ + public function setLoginHint($loginHint) + { + $this->config['login_hint'] = $loginHint; + } + /** + * Set the application name, this is included in the User-Agent HTTP header. + * @param string $applicationName + */ + public function setApplicationName($applicationName) + { + $this->config['application_name'] = $applicationName; + } + /** + * If 'plus.login' is included in the list of requested scopes, you can use + * this method to define types of app activities that your app will write. + * You can find a list of available types here: + * @link https://developers.google.com/+/api/moment-types + * + * @param array $requestVisibleActions Array of app activity types + */ + public function setRequestVisibleActions($requestVisibleActions) + { + if (\is_array($requestVisibleActions)) { + $requestVisibleActions = \implode(" ", $requestVisibleActions); + } + $this->config['request_visible_actions'] = $requestVisibleActions; + } + /** + * Set the developer key to use, these are obtained through the API Console. + * @see http://code.google.com/apis/console-help/#generatingdevkeys + * @param string $developerKey + */ + public function setDeveloperKey($developerKey) + { + $this->config['developer_key'] = $developerKey; + } + /** + * Set the hd (hosted domain) parameter streamlines the login process for + * Google Apps hosted accounts. By including the domain of the user, you + * restrict sign-in to accounts at that domain. + * @param $hd string - the domain to use. + */ + public function setHostedDomain($hd) + { + $this->config['hd'] = $hd; + } + /** + * Set the prompt hint. Valid values are none, consent and select_account. + * If no value is specified and the user has not previously authorized + * access, then the user is shown a consent screen. + * @param $prompt string + * {@code "none"} Do not display any authentication or consent screens. Must not be specified with other values. + * {@code "consent"} Prompt the user for consent. + * {@code "select_account"} Prompt the user to select an account. + */ + public function setPrompt($prompt) + { + $this->config['prompt'] = $prompt; + } + /** + * openid.realm is a parameter from the OpenID 2.0 protocol, not from OAuth + * 2.0. It is used in OpenID 2.0 requests to signify the URL-space for which + * an authentication request is valid. + * @param $realm string - the URL-space to use. + */ + public function setOpenidRealm($realm) + { + $this->config['openid.realm'] = $realm; + } + /** + * If this is provided with the value true, and the authorization request is + * granted, the authorization will include any previous authorizations + * granted to this user/application combination for other scopes. + * @param $include boolean - the URL-space to use. + */ + public function setIncludeGrantedScopes($include) + { + $this->config['include_granted_scopes'] = $include; + } + /** + * sets function to be called when an access token is fetched + * @param callable $tokenCallback - function ($cacheKey, $accessToken) + */ + public function setTokenCallback(callable $tokenCallback) + { + $this->config['token_callback'] = $tokenCallback; + } + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * + * @param string|array|null $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token = null) + { + $tokenRevoker = new \Google\Site_Kit_Dependencies\Google\AccessToken\Revoke($this->getHttpClient()); + return $tokenRevoker->revokeToken($token ?: $this->getAccessToken()); + } + /** + * Verify an id_token. This method will verify the current id_token, if one + * isn't provided. + * + * @throws LogicException If no token was provided and no token was set using `setAccessToken`. + * @throws UnexpectedValueException If the token is not a valid JWT. + * @param string|null $idToken The token (id_token) that should be verified. + * @return array|false Returns the token payload as an array if the verification was + * successful, false otherwise. + */ + public function verifyIdToken($idToken = null) + { + $tokenVerifier = new \Google\Site_Kit_Dependencies\Google\AccessToken\Verify($this->getHttpClient(), $this->getCache(), $this->config['jwt']); + if (null === $idToken) { + $token = $this->getAccessToken(); + if (!isset($token['id_token'])) { + throw new \LogicException('id_token must be passed in or set as part of setAccessToken'); + } + $idToken = $token['id_token']; + } + return $tokenVerifier->verifyIdToken($idToken, $this->getClientId()); + } + /** + * Set the scopes to be requested. Must be called before createAuthUrl(). + * Will remove any previously configured scopes. + * @param string|array $scope_or_scopes, ie: + * array( + * 'https://www.googleapis.com/auth/plus.login', + * 'https://www.googleapis.com/auth/moderator' + * ); + */ + public function setScopes($scope_or_scopes) + { + $this->requestedScopes = array(); + $this->addScope($scope_or_scopes); + } + /** + * This functions adds a scope to be requested as part of the OAuth2.0 flow. + * Will append any scopes not previously requested to the scope parameter. + * A single string will be treated as a scope to request. An array of strings + * will each be appended. + * @param $scope_or_scopes string|array e.g. "profile" + */ + public function addScope($scope_or_scopes) + { + if (\is_string($scope_or_scopes) && !\in_array($scope_or_scopes, $this->requestedScopes)) { + $this->requestedScopes[] = $scope_or_scopes; + } else { + if (\is_array($scope_or_scopes)) { + foreach ($scope_or_scopes as $scope) { + $this->addScope($scope); + } + } + } + } + /** + * Returns the list of scopes requested by the client + * @return array the list of scopes + * + */ + public function getScopes() + { + return $this->requestedScopes; + } + /** + * @return string|null + * @visible For Testing + */ + public function prepareScopes() + { + if (empty($this->requestedScopes)) { + return null; + } + return \implode(' ', $this->requestedScopes); + } + /** + * Helper method to execute deferred HTTP requests. + * + * @param $request RequestInterface|\Google\Http\Batch + * @param string $expectedClass + * @throws \Google\Exception + * @return mixed|$expectedClass|ResponseInterface + */ + public function execute(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, $expectedClass = null) + { + $request = $request->withHeader('User-Agent', \sprintf('%s %s%s', $this->config['application_name'], self::USER_AGENT_SUFFIX, $this->getLibraryVersion()))->withHeader('x-goog-api-client', \sprintf('gl-php/%s gdcl/%s', \phpversion(), $this->getLibraryVersion())); + if ($this->config['api_format_v2']) { + $request = $request->withHeader('X-GOOG-API-FORMAT-VERSION', 2); + } + // call the authorize method + // this is where most of the grunt work is done + $http = $this->authorize(); + return \Google\Site_Kit_Dependencies\Google\Http\REST::execute($http, $request, $expectedClass, $this->config['retry'], $this->config['retry_map']); + } + /** + * Declare whether batch calls should be used. This may increase throughput + * by making multiple requests in one connection. + * + * @param boolean $useBatch True if the batch support should + * be enabled. Defaults to False. + */ + public function setUseBatch($useBatch) + { + // This is actually an alias for setDefer. + $this->setDefer($useBatch); + } + /** + * Are we running in Google AppEngine? + * return bool + */ + public function isAppEngine() + { + return isset($_SERVER['SERVER_SOFTWARE']) && \strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine') !== \false; + } + public function setConfig($name, $value) + { + $this->config[$name] = $value; + } + public function getConfig($name, $default = null) + { + return isset($this->config[$name]) ? $this->config[$name] : $default; + } + /** + * For backwards compatibility + * alias for setAuthConfig + * + * @param string $file the configuration file + * @throws \Google\Exception + * @deprecated + */ + public function setAuthConfigFile($file) + { + $this->setAuthConfig($file); + } + /** + * Set the auth config from new or deprecated JSON config. + * This structure should match the file downloaded from + * the "Download JSON" button on in the Google Developer + * Console. + * @param string|array $config the configuration json + * @throws \Google\Exception + */ + public function setAuthConfig($config) + { + if (\is_string($config)) { + if (!\file_exists($config)) { + throw new \InvalidArgumentException(\sprintf('file "%s" does not exist', $config)); + } + $json = \file_get_contents($config); + if (!($config = \json_decode($json, \true))) { + throw new \LogicException('invalid json for auth config'); + } + } + $key = isset($config['installed']) ? 'installed' : 'web'; + if (isset($config['type']) && $config['type'] == 'service_account') { + // application default credentials + $this->useApplicationDefaultCredentials(); + // set the information from the config + $this->setClientId($config['client_id']); + $this->config['client_email'] = $config['client_email']; + $this->config['signing_key'] = $config['private_key']; + $this->config['signing_algorithm'] = 'HS256'; + } elseif (isset($config[$key])) { + // old-style + $this->setClientId($config[$key]['client_id']); + $this->setClientSecret($config[$key]['client_secret']); + if (isset($config[$key]['redirect_uris'])) { + $this->setRedirectUri($config[$key]['redirect_uris'][0]); + } + } else { + // new-style + $this->setClientId($config['client_id']); + $this->setClientSecret($config['client_secret']); + if (isset($config['redirect_uris'])) { + $this->setRedirectUri($config['redirect_uris'][0]); + } + } + } + /** + * Use when the service account has been delegated domain wide access. + * + * @param string $subject an email address account to impersonate + */ + public function setSubject($subject) + { + $this->config['subject'] = $subject; + } + /** + * Declare whether making API calls should make the call immediately, or + * return a request which can be called with ->execute(); + * + * @param boolean $defer True if calls should not be executed right away. + */ + public function setDefer($defer) + { + $this->deferExecution = $defer; + } + /** + * Whether or not to return raw requests + * @return boolean + */ + public function shouldDefer() + { + return $this->deferExecution; + } + /** + * @return OAuth2 implementation + */ + public function getOAuth2Service() + { + if (!isset($this->auth)) { + $this->auth = $this->createOAuth2Service(); + } + return $this->auth; + } + /** + * create a default google auth object + */ + protected function createOAuth2Service() + { + $auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['clientId' => $this->getClientId(), 'clientSecret' => $this->getClientSecret(), 'authorizationUri' => self::OAUTH2_AUTH_URL, 'tokenCredentialUri' => self::OAUTH2_TOKEN_URI, 'redirectUri' => $this->getRedirectUri(), 'issuer' => $this->config['client_id'], 'signingKey' => $this->config['signing_key'], 'signingAlgorithm' => $this->config['signing_algorithm']]); + return $auth; + } + /** + * Set the Cache object + * @param CacheItemPoolInterface $cache + */ + public function setCache(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache) + { + $this->cache = $cache; + } + /** + * @return CacheItemPoolInterface + */ + public function getCache() + { + if (!$this->cache) { + $this->cache = $this->createDefaultCache(); + } + return $this->cache; + } + /** + * @param array $cacheConfig + */ + public function setCacheConfig(array $cacheConfig) + { + $this->config['cache_config'] = $cacheConfig; + } + /** + * Set the Logger object + * @param LoggerInterface $logger + */ + public function setLogger(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger) + { + $this->logger = $logger; + } + /** + * @return LoggerInterface + */ + public function getLogger() + { + if (!isset($this->logger)) { + $this->logger = $this->createDefaultLogger(); + } + return $this->logger; + } + protected function createDefaultLogger() + { + $logger = new \Google\Site_Kit_Dependencies\Monolog\Logger('google-api-php-client'); + if ($this->isAppEngine()) { + $handler = new \Google\Site_Kit_Dependencies\Monolog\Handler\SyslogHandler('app', \LOG_USER, \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE); + } else { + $handler = new \Google\Site_Kit_Dependencies\Monolog\Handler\StreamHandler('php://stderr', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE); + } + $logger->pushHandler($handler); + return $logger; + } + protected function createDefaultCache() + { + return new \Google\Site_Kit_Dependencies\Google\Auth\Cache\MemoryCacheItemPool(); + } + /** + * Set the Http Client object + * @param ClientInterface $http + */ + public function setHttpClient(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http) + { + $this->http = $http; + } + /** + * @return ClientInterface + */ + public function getHttpClient() + { + if (null === $this->http) { + $this->http = $this->createDefaultHttpClient(); + } + return $this->http; + } + /** + * Set the API format version. + * + * `true` will use V2, which may return more useful error messages. + * + * @param bool $value + */ + public function setApiFormatV2($value) + { + $this->config['api_format_v2'] = (bool) $value; + } + protected function createDefaultHttpClient() + { + $guzzleVersion = null; + if (\defined('\\Google\\Site_Kit_Dependencies\\GuzzleHttp\\ClientInterface::MAJOR_VERSION')) { + $guzzleVersion = \Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface::MAJOR_VERSION; + } elseif (\defined('\\Google\\Site_Kit_Dependencies\\GuzzleHttp\\ClientInterface::VERSION')) { + $guzzleVersion = (int) \substr(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface::VERSION, 0, 1); + } + if (5 === $guzzleVersion) { + $options = ['base_url' => $this->config['base_path'], 'defaults' => ['exceptions' => \false]]; + if ($this->isAppEngine()) { + // set StreamHandler on AppEngine by default + $options['handler'] = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\StreamHandler(); + $options['defaults']['verify'] = '/etc/ca-certificates.crt'; + } + } elseif (6 === $guzzleVersion || 7 === $guzzleVersion) { + // guzzle 6 or 7 + $options = ['base_uri' => $this->config['base_path'], 'http_errors' => \false]; + } else { + throw new \LogicException('Could not find supported version of Guzzle.'); + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($options); + } + /** + * @return FetchAuthTokenCache + */ + private function createApplicationDefaultCredentials() + { + $scopes = $this->prepareScopes(); + $sub = $this->config['subject']; + $signingKey = $this->config['signing_key']; + // create credentials using values supplied in setAuthConfig + if ($signingKey) { + $serviceAccountCredentials = array('client_id' => $this->config['client_id'], 'client_email' => $this->config['client_email'], 'private_key' => $signingKey, 'type' => 'service_account', 'quota_project_id' => $this->config['quota_project']); + $credentials = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::makeCredentials($scopes, $serviceAccountCredentials); + } else { + // When $sub is provided, we cannot pass cache classes to ::getCredentials + // because FetchAuthTokenCache::setSub does not exist. + // The result is when $sub is provided, calls to ::onGce are not cached. + $credentials = \Google\Site_Kit_Dependencies\Google\Auth\ApplicationDefaultCredentials::getCredentials($scopes, null, $sub ? null : $this->config['cache_config'], $sub ? null : $this->getCache(), $this->config['quota_project']); + } + // for service account domain-wide authority (impersonating a user) + // @see https://developers.google.com/identity/protocols/OAuth2ServiceAccount + if ($sub) { + if (!$credentials instanceof \Google\Site_Kit_Dependencies\Google\Auth\Credentials\ServiceAccountCredentials) { + throw new \DomainException('domain-wide authority requires service account credentials'); + } + $credentials->setSub($sub); + } + // If we are not using FetchAuthTokenCache yet, create it now + if (!$credentials instanceof \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache) { + $credentials = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($credentials, $this->config['cache_config'], $this->getCache()); + } + return $credentials; + } + protected function getAuthHandler() + { + // Be very careful using the cache, as the underlying auth library's cache + // implementation is naive, and the cache keys do not account for user + // sessions. + // + // @see https://github.com/google/google-api-php-client/issues/821 + return \Google\Site_Kit_Dependencies\Google\AuthHandler\AuthHandlerFactory::build($this->getCache(), $this->config['cache_config']); + } + private function createUserRefreshCredentials($scope, $refreshToken) + { + $creds = \array_filter(array('client_id' => $this->getClientId(), 'client_secret' => $this->getClientSecret(), 'refresh_token' => $refreshToken)); + return new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\UserRefreshCredentials($scope, $creds); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Collection.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Collection.php new file mode 100644 index 000000000..868fdcb22 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Collection.php @@ -0,0 +1,100 @@ +{$this->collection_key}) && \is_array($this->{$this->collection_key})) { + \reset($this->{$this->collection_key}); + } + } + /** @return mixed */ + #[\ReturnTypeWillChange] + public function current() + { + $this->coerceType($this->key()); + if (\is_array($this->{$this->collection_key})) { + return \current($this->{$this->collection_key}); + } + } + /** @return mixed */ + #[\ReturnTypeWillChange] + public function key() + { + if (isset($this->{$this->collection_key}) && \is_array($this->{$this->collection_key})) { + return \key($this->{$this->collection_key}); + } + } + /** @return void */ + #[\ReturnTypeWillChange] + public function next() + { + return \next($this->{$this->collection_key}); + } + /** @return bool */ + #[\ReturnTypeWillChange] + public function valid() + { + $key = $this->key(); + return $key !== null && $key !== \false; + } + /** @return int */ + #[\ReturnTypeWillChange] + public function count() + { + if (!isset($this->{$this->collection_key})) { + return 0; + } + return \count($this->{$this->collection_key}); + } + /** @return bool */ + public function offsetExists($offset) + { + if (!\is_numeric($offset)) { + return parent::offsetExists($offset); + } + return isset($this->{$this->collection_key}[$offset]); + } + /** @return mixed */ + public function offsetGet($offset) + { + if (!\is_numeric($offset)) { + return parent::offsetGet($offset); + } + $this->coerceType($offset); + return $this->{$this->collection_key}[$offset]; + } + /** @return void */ + public function offsetSet($offset, $value) + { + if (!\is_numeric($offset)) { + parent::offsetSet($offset, $value); + } + $this->{$this->collection_key}[$offset] = $value; + } + /** @return void */ + public function offsetUnset($offset) + { + if (!\is_numeric($offset)) { + parent::offsetUnset($offset); + } + unset($this->{$this->collection_key}[$offset]); + } + private function coerceType($offset) + { + $keyType = $this->keyType($this->collection_key); + if ($keyType && !\is_object($this->{$this->collection_key}[$offset])) { + $this->{$this->collection_key}[$offset] = new $keyType($this->{$this->collection_key}[$offset]); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Exception.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Exception.php new file mode 100644 index 000000000..e6688e656 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Exception.php @@ -0,0 +1,23 @@ +client = $client; + $this->boundary = $boundary ?: \mt_rand(); + $this->rootUrl = \rtrim($rootUrl ?: $this->client->getConfig('base_path'), '/'); + $this->batchPath = $batchPath ?: self::BATCH_PATH; + } + public function add(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, $key = \false) + { + if (\false == $key) { + $key = \mt_rand(); + } + $this->requests[$key] = $request; + } + public function execute() + { + $body = ''; + $classes = array(); + $batchHttpTemplate = <<requests as $key => $request) { + $firstLine = \sprintf('%s %s HTTP/%s', $request->getMethod(), $request->getRequestTarget(), $request->getProtocolVersion()); + $content = (string) $request->getBody(); + $headers = ''; + foreach ($request->getHeaders() as $name => $values) { + $headers .= \sprintf("%s:%s\r\n", $name, \implode(', ', $values)); + } + $body .= \sprintf($batchHttpTemplate, $this->boundary, $key, $firstLine, $headers, $content ? "\n" . $content : ''); + $classes['response-' . $key] = $request->getHeaderLine('X-Php-Expected-Class'); + } + $body .= "--{$this->boundary}--"; + $body = \trim($body); + $url = $this->rootUrl . '/' . $this->batchPath; + $headers = array('Content-Type' => \sprintf('multipart/mixed; boundary=%s', $this->boundary), 'Content-Length' => \strlen($body)); + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', $url, $headers, $body); + $response = $this->client->execute($request); + return $this->parseResponse($response, $classes); + } + public function parseResponse(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $response, $classes = array()) + { + $contentType = $response->getHeaderLine('content-type'); + $contentType = \explode(';', $contentType); + $boundary = \false; + foreach ($contentType as $part) { + $part = \explode('=', $part, 2); + if (isset($part[0]) && 'boundary' == \trim($part[0])) { + $boundary = $part[1]; + } + } + $body = (string) $response->getBody(); + if (!empty($body)) { + $body = \str_replace("--{$boundary}--", "--{$boundary}", $body); + $parts = \explode("--{$boundary}", $body); + $responses = array(); + $requests = \array_values($this->requests); + foreach ($parts as $i => $part) { + $part = \trim($part); + if (!empty($part)) { + list($rawHeaders, $part) = \explode("\r\n\r\n", $part, 2); + $headers = $this->parseRawHeaders($rawHeaders); + $status = \substr($part, 0, \strpos($part, "\n")); + $status = \explode(" ", $status); + $status = $status[1]; + list($partHeaders, $partBody) = $this->parseHttpResponse($part, \false); + $response = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response($status, $partHeaders, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($partBody)); + // Need content id. + $key = $headers['content-id']; + try { + $response = \Google\Site_Kit_Dependencies\Google\Http\REST::decodeHttpResponse($response, $requests[$i - 1]); + } catch (\Google\Site_Kit_Dependencies\Google\Service\Exception $e) { + // Store the exception as the response, so successful responses + // can be processed. + $response = $e; + } + $responses[$key] = $response; + } + } + return $responses; + } + return null; + } + private function parseRawHeaders($rawHeaders) + { + $headers = array(); + $responseHeaderLines = \explode("\r\n", $rawHeaders); + foreach ($responseHeaderLines as $headerLine) { + if ($headerLine && \strpos($headerLine, ':') !== \false) { + list($header, $value) = \explode(': ', $headerLine, 2); + $header = \strtolower($header); + if (isset($headers[$header])) { + $headers[$header] = \array_merge((array) $headers[$header], (array) $value); + } else { + $headers[$header] = $value; + } + } + } + return $headers; + } + /** + * Used by the IO lib and also the batch processing. + * + * @param $respData + * @param $headerSize + * @return array + */ + private function parseHttpResponse($respData, $headerSize) + { + // check proxy header + foreach (self::$CONNECTION_ESTABLISHED_HEADERS as $established_header) { + if (\stripos($respData, $established_header) !== \false) { + // existed, remove it + $respData = \str_ireplace($established_header, '', $respData); + // Subtract the proxy header size unless the cURL bug prior to 7.30.0 + // is present which prevented the proxy header size from being taken into + // account. + // @TODO look into this + // if (!$this->needsQuirk()) { + // $headerSize -= strlen($established_header); + // } + break; + } + } + if ($headerSize) { + $responseBody = \substr($respData, $headerSize); + $responseHeaders = \substr($respData, 0, $headerSize); + } else { + $responseSegments = \explode("\r\n\r\n", $respData, 2); + $responseHeaders = $responseSegments[0]; + $responseBody = isset($responseSegments[1]) ? $responseSegments[1] : null; + } + $responseHeaders = $this->parseRawHeaders($responseHeaders); + return array($responseHeaders, $responseBody); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/MediaFileUpload.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/MediaFileUpload.php new file mode 100644 index 000000000..ef2001272 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/MediaFileUpload.php @@ -0,0 +1,280 @@ +client = $client; + $this->request = $request; + $this->mimeType = $mimeType; + $this->data = $data; + $this->resumable = $resumable; + $this->chunkSize = $chunkSize; + $this->progress = 0; + $this->process(); + } + /** + * Set the size of the file that is being uploaded. + * @param $size - int file size in bytes + */ + public function setFileSize($size) + { + $this->size = $size; + } + /** + * Return the progress on the upload + * @return int progress in bytes uploaded. + */ + public function getProgress() + { + return $this->progress; + } + /** + * Send the next part of the file to upload. + * @param string|bool $chunk Optional. The next set of bytes to send. If false will + * use $data passed at construct time. + */ + public function nextChunk($chunk = \false) + { + $resumeUri = $this->getResumeUri(); + if (\false == $chunk) { + $chunk = \substr($this->data, $this->progress, $this->chunkSize); + } + $lastBytePos = $this->progress + \strlen($chunk) - 1; + $headers = array('content-range' => "bytes {$this->progress}-{$lastBytePos}/{$this->size}", 'content-length' => \strlen($chunk), 'expect' => ''); + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('PUT', $resumeUri, $headers, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($chunk)); + return $this->makePutRequest($request); + } + /** + * Return the HTTP result code from the last call made. + * @return int code + */ + public function getHttpResultCode() + { + return $this->httpResultCode; + } + /** + * Sends a PUT-Request to google drive and parses the response, + * setting the appropiate variables from the response() + * + * @param RequestInterface $request the Request which will be send + * + * @return false|mixed false when the upload is unfinished or the decoded http response + * + */ + private function makePutRequest(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request) + { + $response = $this->client->execute($request); + $this->httpResultCode = $response->getStatusCode(); + if (308 == $this->httpResultCode) { + // Track the amount uploaded. + $range = $response->getHeaderLine('range'); + if ($range) { + $range_array = \explode('-', $range); + $this->progress = $range_array[1] + 1; + } + // Allow for changing upload URLs. + $location = $response->getHeaderLine('location'); + if ($location) { + $this->resumeUri = $location; + } + // No problems, but upload not complete. + return \false; + } + return \Google\Site_Kit_Dependencies\Google\Http\REST::decodeHttpResponse($response, $this->request); + } + /** + * Resume a previously unfinished upload + * @param $resumeUri the resume-URI of the unfinished, resumable upload. + */ + public function resume($resumeUri) + { + $this->resumeUri = $resumeUri; + $headers = array('content-range' => "bytes */{$this->size}", 'content-length' => 0); + $httpRequest = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('PUT', $this->resumeUri, $headers); + return $this->makePutRequest($httpRequest); + } + /** + * @return RequestInterface + * @visible for testing + */ + private function process() + { + $this->transformToUploadUrl(); + $request = $this->request; + $postBody = ''; + $contentType = \false; + $meta = (string) $request->getBody(); + $meta = \is_string($meta) ? \json_decode($meta, \true) : $meta; + $uploadType = $this->getUploadType($meta); + $request = $request->withUri(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::withQueryValue($request->getUri(), 'uploadType', $uploadType)); + $mimeType = $this->mimeType ?: $request->getHeaderLine('content-type'); + if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = \is_string($meta) ? $meta : \json_encode($meta); + } else { + if (self::UPLOAD_MEDIA_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = $this->data; + } else { + if (self::UPLOAD_MULTIPART_TYPE == $uploadType) { + // This is a multipart/related upload. + $boundary = $this->boundary ?: \mt_rand(); + $boundary = \str_replace('"', '', $boundary); + $contentType = 'multipart/related; boundary=' . $boundary; + $related = "--{$boundary}\r\n"; + $related .= "Content-Type: application/json; charset=UTF-8\r\n"; + $related .= "\r\n" . \json_encode($meta) . "\r\n"; + $related .= "--{$boundary}\r\n"; + $related .= "Content-Type: {$mimeType}\r\n"; + $related .= "Content-Transfer-Encoding: base64\r\n"; + $related .= "\r\n" . \base64_encode($this->data) . "\r\n"; + $related .= "--{$boundary}--"; + $postBody = $related; + } + } + } + $request = $request->withBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($postBody)); + if (isset($contentType) && $contentType) { + $request = $request->withHeader('content-type', $contentType); + } + return $this->request = $request; + } + /** + * Valid upload types: + * - resumable (UPLOAD_RESUMABLE_TYPE) + * - media (UPLOAD_MEDIA_TYPE) + * - multipart (UPLOAD_MULTIPART_TYPE) + * @param $meta + * @return string + * @visible for testing + */ + public function getUploadType($meta) + { + if ($this->resumable) { + return self::UPLOAD_RESUMABLE_TYPE; + } + if (\false == $meta && $this->data) { + return self::UPLOAD_MEDIA_TYPE; + } + return self::UPLOAD_MULTIPART_TYPE; + } + public function getResumeUri() + { + if (null === $this->resumeUri) { + $this->resumeUri = $this->fetchResumeUri(); + } + return $this->resumeUri; + } + private function fetchResumeUri() + { + $body = $this->request->getBody(); + if ($body) { + $headers = array('content-type' => 'application/json; charset=UTF-8', 'content-length' => $body->getSize(), 'x-upload-content-type' => $this->mimeType, 'x-upload-content-length' => $this->size, 'expect' => ''); + foreach ($headers as $key => $value) { + $this->request = $this->request->withHeader($key, $value); + } + } + $response = $this->client->execute($this->request, \false); + $location = $response->getHeaderLine('location'); + $code = $response->getStatusCode(); + if (200 == $code && \true == $location) { + return $location; + } + $message = $code; + $body = \json_decode((string) $this->request->getBody(), \true); + if (isset($body['error']['errors'])) { + $message .= ': '; + foreach ($body['error']['errors'] as $error) { + $message .= "{$error['domain']}, {$error['message']};"; + } + $message = \rtrim($message, ';'); + } + $error = "Failed to start the resumable upload (HTTP {$message})"; + $this->client->getLogger()->error($error); + throw new \Google\Site_Kit_Dependencies\Google\Exception($error); + } + private function transformToUploadUrl() + { + $parts = \parse_url((string) $this->request->getUri()); + if (!isset($parts['path'])) { + $parts['path'] = ''; + } + $parts['path'] = '/upload' . $parts['path']; + $uri = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::fromParts($parts); + $this->request = $this->request->withUri($uri); + } + public function setChunkSize($chunkSize) + { + $this->chunkSize = $chunkSize; + } + public function getRequest() + { + return $this->request; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/REST.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/REST.php new file mode 100644 index 000000000..9d18308a1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/REST.php @@ -0,0 +1,150 @@ +getMethod(), (string) $request->getUri()), array(\get_class(), 'doExecute'), array($client, $request, $expectedClass)); + if (null !== $retryMap) { + $runner->setRetryMap($retryMap); + } + return $runner->run(); + } + /** + * Executes a Psr\Http\Message\RequestInterface + * + * @param Client $client + * @param RequestInterface $request + * @param string $expectedClass + * @return array decoded result + * @throws \Google\Service\Exception on server side error (ie: not authenticated, + * invalid or malformed post body, invalid url) + */ + public static function doExecute(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $client, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, $expectedClass = null) + { + try { + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($client); + $response = $httpHandler($request); + } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException $e) { + // if Guzzle throws an exception, catch it and handle the response + if (!$e->hasResponse()) { + throw $e; + } + $response = $e->getResponse(); + // specific checking for Guzzle 5: convert to PSR7 response + if ($response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface) { + $response = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response($response->getStatusCode(), $response->getHeaders() ?: [], $response->getBody(), $response->getProtocolVersion(), $response->getReasonPhrase()); + } + } + return self::decodeHttpResponse($response, $request, $expectedClass); + } + /** + * Decode an HTTP Response. + * @static + * @throws \Google\Service\Exception + * @param RequestInterface $response The http response to be decoded. + * @param ResponseInterface $response + * @param string $expectedClass + * @return mixed|null + */ + public static function decodeHttpResponse(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $response, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null, $expectedClass = null) + { + $code = $response->getStatusCode(); + // retry strategy + if (\intVal($code) >= 400) { + // if we errored out, it should be safe to grab the response body + $body = (string) $response->getBody(); + // Check if we received errors, and add those to the Exception for convenience + throw new \Google\Site_Kit_Dependencies\Google\Service\Exception($body, $code, null, self::getResponseErrors($body)); + } + // Ensure we only pull the entire body into memory if the request is not + // of media type + $body = self::decodeBody($response, $request); + if ($expectedClass = self::determineExpectedClass($expectedClass, $request)) { + $json = \json_decode($body, \true); + return new $expectedClass($json); + } + return $response; + } + private static function decodeBody(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $response, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null) + { + if (self::isAltMedia($request)) { + // don't decode the body, it's probably a really long string + return ''; + } + return (string) $response->getBody(); + } + private static function determineExpectedClass($expectedClass, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null) + { + // "false" is used to explicitly prevent an expected class from being returned + if (\false === $expectedClass) { + return null; + } + // if we don't have a request, we just use what's passed in + if (null === $request) { + return $expectedClass; + } + // return what we have in the request header if one was not supplied + return $expectedClass ?: $request->getHeaderLine('X-Php-Expected-Class'); + } + private static function getResponseErrors($body) + { + $json = \json_decode($body, \true); + if (isset($json['error']['errors'])) { + return $json['error']['errors']; + } + return null; + } + private static function isAltMedia(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null) + { + if ($request && ($qs = $request->getUri()->getQuery())) { + \parse_str($qs, $query); + if (isset($query['alt']) && $query['alt'] == 'media') { + return \true; + } + } + return \false; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Model.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Model.php new file mode 100644 index 000000000..8fb0d0c17 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Model.php @@ -0,0 +1,304 @@ +mapTypes($array); + } + $this->gapiInit(); + } + /** + * Getter that handles passthrough access to the data array, and lazy object creation. + * @param string $key Property name. + * @return mixed The value if any, or null. + */ + public function __get($key) + { + $keyType = $this->keyType($key); + $keyDataType = $this->dataType($key); + if ($keyType && !isset($this->processed[$key])) { + if (isset($this->modelData[$key])) { + $val = $this->modelData[$key]; + } elseif ($keyDataType == 'array' || $keyDataType == 'map') { + $val = array(); + } else { + $val = null; + } + if ($this->isAssociativeArray($val)) { + if ($keyDataType && 'map' == $keyDataType) { + foreach ($val as $arrayKey => $arrayItem) { + $this->modelData[$key][$arrayKey] = new $keyType($arrayItem); + } + } else { + $this->modelData[$key] = new $keyType($val); + } + } else { + if (\is_array($val)) { + $arrayObject = array(); + foreach ($val as $arrayIndex => $arrayItem) { + $arrayObject[$arrayIndex] = new $keyType($arrayItem); + } + $this->modelData[$key] = $arrayObject; + } + } + $this->processed[$key] = \true; + } + return isset($this->modelData[$key]) ? $this->modelData[$key] : null; + } + /** + * Initialize this object's properties from an array. + * + * @param array $array Used to seed this object's properties. + * @return void + */ + protected function mapTypes($array) + { + // Hard initialise simple types, lazy load more complex ones. + foreach ($array as $key => $val) { + if ($keyType = $this->keyType($key)) { + $dataType = $this->dataType($key); + if ($dataType == 'array' || $dataType == 'map') { + $this->{$key} = array(); + foreach ($val as $itemKey => $itemVal) { + if ($itemVal instanceof $keyType) { + $this->{$key}[$itemKey] = $itemVal; + } else { + $this->{$key}[$itemKey] = new $keyType($itemVal); + } + } + } elseif ($val instanceof $keyType) { + $this->{$key} = $val; + } else { + $this->{$key} = new $keyType($val); + } + unset($array[$key]); + } elseif (\property_exists($this, $key)) { + $this->{$key} = $val; + unset($array[$key]); + } elseif (\property_exists($this, $camelKey = $this->camelCase($key))) { + // This checks if property exists as camelCase, leaving it in array as snake_case + // in case of backwards compatibility issues. + $this->{$camelKey} = $val; + } + } + $this->modelData = $array; + } + /** + * Blank initialiser to be used in subclasses to do post-construction initialisation - this + * avoids the need for subclasses to have to implement the variadics handling in their + * constructors. + */ + protected function gapiInit() + { + return; + } + /** + * Create a simplified object suitable for straightforward + * conversion to JSON. This is relatively expensive + * due to the usage of reflection, but shouldn't be called + * a whole lot, and is the most straightforward way to filter. + */ + public function toSimpleObject() + { + $object = new \stdClass(); + // Process all other data. + foreach ($this->modelData as $key => $val) { + $result = $this->getSimpleValue($val); + if ($result !== null) { + $object->{$key} = $this->nullPlaceholderCheck($result); + } + } + // Process all public properties. + $reflect = new \ReflectionObject($this); + $props = $reflect->getProperties(\ReflectionProperty::IS_PUBLIC); + foreach ($props as $member) { + $name = $member->getName(); + $result = $this->getSimpleValue($this->{$name}); + if ($result !== null) { + $name = $this->getMappedName($name); + $object->{$name} = $this->nullPlaceholderCheck($result); + } + } + return $object; + } + /** + * Handle different types of values, primarily + * other objects and map and array data types. + */ + private function getSimpleValue($value) + { + if ($value instanceof \Google\Site_Kit_Dependencies\Google\Model) { + return $value->toSimpleObject(); + } else { + if (\is_array($value)) { + $return = array(); + foreach ($value as $key => $a_value) { + $a_value = $this->getSimpleValue($a_value); + if ($a_value !== null) { + $key = $this->getMappedName($key); + $return[$key] = $this->nullPlaceholderCheck($a_value); + } + } + return $return; + } + } + return $value; + } + /** + * Check whether the value is the null placeholder and return true null. + */ + private function nullPlaceholderCheck($value) + { + if ($value === self::NULL_VALUE) { + return null; + } + return $value; + } + /** + * If there is an internal name mapping, use that. + */ + private function getMappedName($key) + { + if (isset($this->internal_gapi_mappings, $this->internal_gapi_mappings[$key])) { + $key = $this->internal_gapi_mappings[$key]; + } + return $key; + } + /** + * Returns true only if the array is associative. + * @param array $array + * @return bool True if the array is associative. + */ + protected function isAssociativeArray($array) + { + if (!\is_array($array)) { + return \false; + } + $keys = \array_keys($array); + foreach ($keys as $key) { + if (\is_string($key)) { + return \true; + } + } + return \false; + } + /** + * Verify if $obj is an array. + * @throws \Google\Exception Thrown if $obj isn't an array. + * @param array $obj Items that should be validated. + * @param string $method Method expecting an array as an argument. + */ + public function assertIsArray($obj, $method) + { + if ($obj && !\is_array($obj)) { + throw new \Google\Site_Kit_Dependencies\Google\Exception("Incorrect parameter type passed to {$method}(). Expected an array."); + } + } + /** @return bool */ + #[\ReturnTypeWillChange] + public function offsetExists($offset) + { + return isset($this->{$offset}) || isset($this->modelData[$offset]); + } + /** @return mixed */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return isset($this->{$offset}) ? $this->{$offset} : $this->__get($offset); + } + /** @return void */ + #[\ReturnTypeWillChange] + public function offsetSet($offset, $value) + { + if (\property_exists($this, $offset)) { + $this->{$offset} = $value; + } else { + $this->modelData[$offset] = $value; + $this->processed[$offset] = \true; + } + } + /** @return void */ + #[\ReturnTypeWillChange] + public function offsetUnset($offset) + { + unset($this->modelData[$offset]); + } + protected function keyType($key) + { + $keyType = $key . "Type"; + // ensure keyType is a valid class + if (\property_exists($this, $keyType) && \class_exists($this->{$keyType})) { + return $this->{$keyType}; + } + } + protected function dataType($key) + { + $dataType = $key . "DataType"; + if (\property_exists($this, $dataType)) { + return $this->{$dataType}; + } + } + public function __isset($key) + { + return isset($this->modelData[$key]); + } + public function __unset($key) + { + unset($this->modelData[$key]); + } + /** + * Convert a string to camelCase + * @param string $value + * @return string + */ + private function camelCase($value) + { + $value = \ucwords(\str_replace(array('-', '_'), ' ', $value)); + $value = \str_replace(' ', '', $value); + $value[0] = \strtolower($value[0]); + return $value; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service.php new file mode 100644 index 000000000..50135cb6a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service.php @@ -0,0 +1,62 @@ +client = $clientOrConfig; + } elseif (\is_array($clientOrConfig)) { + $this->client = new \Google\Site_Kit_Dependencies\Google\Client($clientOrConfig ?: []); + } else { + $errorMessage = 'Google\\Site_Kit_Dependencies\\constructor must be array or instance of Google\\Client'; + if (\class_exists('TypeError')) { + throw new \TypeError($errorMessage); + } + \trigger_error($errorMessage, \E_USER_ERROR); + } + } + /** + * Return the associated Google\Client class. + * @return \Google\Client + */ + public function getClient() + { + return $this->client; + } + /** + * Create a new HTTP Batch handler for this service + * + * @return Batch + */ + public function createBatch() + { + return new \Google\Site_Kit_Dependencies\Google\Http\Batch($this->client, \false, $this->rootUrl, $this->batchPath); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Exception.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Exception.php new file mode 100644 index 000000000..d1160e017 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Exception.php @@ -0,0 +1,63 @@ += 0) { + parent::__construct($message, $code, $previous); + } else { + parent::__construct($message, $code); + } + $this->errors = $errors; + } + /** + * An example of the possible errors returned. + * + * { + * "domain": "global", + * "reason": "authError", + * "message": "Invalid Credentials", + * "locationType": "header", + * "location": "Authorization", + * } + * + * @return [{string, string}] List of errors return in an HTTP response or []. + */ + public function getErrors() + { + return $this->errors; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Resource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Resource.php new file mode 100644 index 000000000..1a4af0fac --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Resource.php @@ -0,0 +1,216 @@ + array('type' => 'string', 'location' => 'query'), 'fields' => array('type' => 'string', 'location' => 'query'), 'trace' => array('type' => 'string', 'location' => 'query'), 'userIp' => array('type' => 'string', 'location' => 'query'), 'quotaUser' => array('type' => 'string', 'location' => 'query'), 'data' => array('type' => 'string', 'location' => 'body'), 'mimeType' => array('type' => 'string', 'location' => 'header'), 'uploadType' => array('type' => 'string', 'location' => 'query'), 'mediaUpload' => array('type' => 'complex', 'location' => 'query'), 'prettyPrint' => array('type' => 'string', 'location' => 'query')); + /** @var string $rootUrl */ + private $rootUrl; + /** @var \Google\Client $client */ + private $client; + /** @var string $serviceName */ + private $serviceName; + /** @var string $servicePath */ + private $servicePath; + /** @var string $resourceName */ + private $resourceName; + /** @var array $methods */ + private $methods; + public function __construct($service, $serviceName, $resourceName, $resource) + { + $this->rootUrl = $service->rootUrl; + $this->client = $service->getClient(); + $this->servicePath = $service->servicePath; + $this->serviceName = $serviceName; + $this->resourceName = $resourceName; + $this->methods = \is_array($resource) && isset($resource['methods']) ? $resource['methods'] : array($resourceName => $resource); + } + /** + * TODO: This function needs simplifying. + * @param $name + * @param $arguments + * @param $expectedClass - optional, the expected class name + * @return mixed|$expectedClass|ResponseInterface|RequestInterface + * @throws \Google\Exception + */ + public function call($name, $arguments, $expectedClass = null) + { + if (!isset($this->methods[$name])) { + $this->client->getLogger()->error('Service method unknown', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name)); + throw new \Google\Site_Kit_Dependencies\Google\Exception("Unknown function: " . "{$this->serviceName}->{$this->resourceName}->{$name}()"); + } + $method = $this->methods[$name]; + $parameters = $arguments[0]; + // postBody is a special case since it's not defined in the discovery + // document as parameter, but we abuse the param entry for storing it. + $postBody = null; + if (isset($parameters['postBody'])) { + if ($parameters['postBody'] instanceof \Google\Site_Kit_Dependencies\Google\Model) { + // In the cases the post body is an existing object, we want + // to use the smart method to create a simple object for + // for JSONification. + $parameters['postBody'] = $parameters['postBody']->toSimpleObject(); + } else { + if (\is_object($parameters['postBody'])) { + // If the post body is another kind of object, we will try and + // wrangle it into a sensible format. + $parameters['postBody'] = $this->convertToArrayAndStripNulls($parameters['postBody']); + } + } + $postBody = (array) $parameters['postBody']; + unset($parameters['postBody']); + } + // TODO: optParams here probably should have been + // handled already - this may well be redundant code. + if (isset($parameters['optParams'])) { + $optParams = $parameters['optParams']; + unset($parameters['optParams']); + $parameters = \array_merge($parameters, $optParams); + } + if (!isset($method['parameters'])) { + $method['parameters'] = array(); + } + $method['parameters'] = \array_merge($this->stackParameters, $method['parameters']); + foreach ($parameters as $key => $val) { + if ($key != 'postBody' && !isset($method['parameters'][$key])) { + $this->client->getLogger()->error('Service parameter unknown', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name, 'parameter' => $key)); + throw new \Google\Site_Kit_Dependencies\Google\Exception("({$name}) unknown parameter: '{$key}'"); + } + } + foreach ($method['parameters'] as $paramName => $paramSpec) { + if (isset($paramSpec['required']) && $paramSpec['required'] && !isset($parameters[$paramName])) { + $this->client->getLogger()->error('Service parameter missing', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name, 'parameter' => $paramName)); + throw new \Google\Site_Kit_Dependencies\Google\Exception("({$name}) missing required param: '{$paramName}'"); + } + if (isset($parameters[$paramName])) { + $value = $parameters[$paramName]; + $parameters[$paramName] = $paramSpec; + $parameters[$paramName]['value'] = $value; + unset($parameters[$paramName]['required']); + } else { + // Ensure we don't pass nulls. + unset($parameters[$paramName]); + } + } + $this->client->getLogger()->info('Service Call', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name, 'arguments' => $parameters)); + // build the service uri + $url = $this->createRequestUri($method['path'], $parameters); + // NOTE: because we're creating the request by hand, + // and because the service has a rootUrl property + // the "base_uri" of the Http Client is not accounted for + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request($method['httpMethod'], $url, ['content-type' => 'application/json'], $postBody ? \json_encode($postBody) : ''); + // support uploads + if (isset($parameters['data'])) { + $mimeType = isset($parameters['mimeType']) ? $parameters['mimeType']['value'] : 'application/octet-stream'; + $data = $parameters['data']['value']; + $upload = new \Google\Site_Kit_Dependencies\Google\Http\MediaFileUpload($this->client, $request, $mimeType, $data); + // pull down the modified request + $request = $upload->getRequest(); + } + // if this is a media type, we will return the raw response + // rather than using an expected class + if (isset($parameters['alt']) && $parameters['alt']['value'] == 'media') { + $expectedClass = null; + } + // if the client is marked for deferring, rather than + // execute the request, return the response + if ($this->client->shouldDefer()) { + // @TODO find a better way to do this + $request = $request->withHeader('X-Php-Expected-Class', $expectedClass); + return $request; + } + return $this->client->execute($request, $expectedClass); + } + protected function convertToArrayAndStripNulls($o) + { + $o = (array) $o; + foreach ($o as $k => $v) { + if ($v === null) { + unset($o[$k]); + } elseif (\is_object($v) || \is_array($v)) { + $o[$k] = $this->convertToArrayAndStripNulls($o[$k]); + } + } + return $o; + } + /** + * Parse/expand request parameters and create a fully qualified + * request uri. + * @static + * @param string $restPath + * @param array $params + * @return string $requestUrl + */ + public function createRequestUri($restPath, $params) + { + // Override the default servicePath address if the $restPath use a / + if ('/' == \substr($restPath, 0, 1)) { + $requestUrl = \substr($restPath, 1); + } else { + $requestUrl = $this->servicePath . $restPath; + } + // code for leading slash + if ($this->rootUrl) { + if ('/' !== \substr($this->rootUrl, -1) && '/' !== \substr($requestUrl, 0, 1)) { + $requestUrl = '/' . $requestUrl; + } + $requestUrl = $this->rootUrl . $requestUrl; + } + $uriTemplateVars = array(); + $queryVars = array(); + foreach ($params as $paramName => $paramSpec) { + if ($paramSpec['type'] == 'boolean') { + $paramSpec['value'] = $paramSpec['value'] ? 'true' : 'false'; + } + if ($paramSpec['location'] == 'path') { + $uriTemplateVars[$paramName] = $paramSpec['value']; + } else { + if ($paramSpec['location'] == 'query') { + if (\is_array($paramSpec['value'])) { + foreach ($paramSpec['value'] as $value) { + $queryVars[] = $paramName . '=' . \rawurlencode(\rawurldecode($value)); + } + } else { + $queryVars[] = $paramName . '=' . \rawurlencode(\rawurldecode($paramSpec['value'])); + } + } + } + } + if (\count($uriTemplateVars)) { + $uriTemplateParser = new \Google\Site_Kit_Dependencies\Google\Utils\UriTemplate(); + $requestUrl = $uriTemplateParser->parse($requestUrl, $uriTemplateVars); + } + if (\count($queryVars)) { + $requestUrl .= '?' . \implode('&', $queryVars); + } + return $requestUrl; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Composer.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Composer.php new file mode 100644 index 000000000..1cb5a94c5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Composer.php @@ -0,0 +1,77 @@ +getComposer(); + $extra = $composer->getPackage()->getExtra(); + $servicesToKeep = isset($extra['google/apiclient-services']) ? $extra['google/apiclient-services'] : []; + if ($servicesToKeep) { + $vendorDir = $composer->getConfig()->get('vendor-dir'); + $serviceDir = \sprintf('%s/google/apiclient-services/src/Google/Service', $vendorDir); + if (!\is_dir($serviceDir)) { + // path for google/apiclient-services >= 0.200.0 + $serviceDir = \sprintf('%s/google/apiclient-services/src', $vendorDir); + } + self::verifyServicesToKeep($serviceDir, $servicesToKeep); + $finder = self::getServicesToRemove($serviceDir, $servicesToKeep); + $filesystem = $filesystem ?: new \Google\Site_Kit_Dependencies\Symfony\Component\Filesystem\Filesystem(); + if (0 !== ($count = \count($finder))) { + $event->getIO()->write(\sprintf('Removing %s google services', $count)); + foreach ($finder as $file) { + $realpath = $file->getRealPath(); + $filesystem->remove($realpath); + $filesystem->remove($realpath . '.php'); + } + } + } + } + /** + * @throws InvalidArgumentException when the service doesn't exist + */ + private static function verifyServicesToKeep($serviceDir, array $servicesToKeep) + { + $finder = (new \Google\Site_Kit_Dependencies\Symfony\Component\Finder\Finder())->directories()->depth('== 0'); + foreach ($servicesToKeep as $service) { + if (!\preg_match('/^[a-zA-Z0-9]*$/', $service)) { + throw new \InvalidArgumentException(\sprintf('Invalid Google service name "%s"', $service)); + } + try { + $finder->in($serviceDir . '/' . $service); + } catch (\InvalidArgumentException $e) { + throw new \InvalidArgumentException(\sprintf('Google service "%s" does not exist or was removed previously', $service)); + } + } + } + private static function getServicesToRemove($serviceDir, array $servicesToKeep) + { + // find all files in the current directory + return (new \Google\Site_Kit_Dependencies\Symfony\Component\Finder\Finder())->directories()->depth('== 0')->in($serviceDir)->exclude($servicesToKeep); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Exception.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Exception.php new file mode 100644 index 000000000..8102f1fe7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Exception.php @@ -0,0 +1,23 @@ + self::TASK_RETRY_ALWAYS, + '503' => self::TASK_RETRY_ALWAYS, + 'rateLimitExceeded' => self::TASK_RETRY_ALWAYS, + 'userRateLimitExceeded' => self::TASK_RETRY_ALWAYS, + 6 => self::TASK_RETRY_ALWAYS, + // CURLE_COULDNT_RESOLVE_HOST + 7 => self::TASK_RETRY_ALWAYS, + // CURLE_COULDNT_CONNECT + 28 => self::TASK_RETRY_ALWAYS, + // CURLE_OPERATION_TIMEOUTED + 35 => self::TASK_RETRY_ALWAYS, + // CURLE_SSL_CONNECT_ERROR + 52 => self::TASK_RETRY_ALWAYS, + // CURLE_GOT_NOTHING + 'lighthouseError' => self::TASK_RETRY_NEVER, + ]; + /** + * Creates a new task runner with exponential backoff support. + * + * @param array $config The task runner config + * @param string $name The name of the current task (used for logging) + * @param callable $action The task to run and possibly retry + * @param array $arguments The task arguments + * @throws \Google\Task\Exception when misconfigured + */ + public function __construct($config, $name, $action, array $arguments = array()) + { + if (isset($config['initial_delay'])) { + if ($config['initial_delay'] < 0) { + throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `initial_delay` must not be negative.'); + } + $this->delay = $config['initial_delay']; + } + if (isset($config['max_delay'])) { + if ($config['max_delay'] <= 0) { + throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `max_delay` must be greater than 0.'); + } + $this->maxDelay = $config['max_delay']; + } + if (isset($config['factor'])) { + if ($config['factor'] <= 0) { + throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `factor` must be greater than 0.'); + } + $this->factor = $config['factor']; + } + if (isset($config['jitter'])) { + if ($config['jitter'] <= 0) { + throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `jitter` must be greater than 0.'); + } + $this->jitter = $config['jitter']; + } + if (isset($config['retries'])) { + if ($config['retries'] < 0) { + throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `retries` must not be negative.'); + } + $this->maxAttempts += $config['retries']; + } + if (!\is_callable($action)) { + throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task argument `$action` must be a valid callable.'); + } + $this->action = $action; + $this->arguments = $arguments; + } + /** + * Checks if a retry can be attempted. + * + * @return boolean + */ + public function canAttempt() + { + return $this->attempts < $this->maxAttempts; + } + /** + * Runs the task and (if applicable) automatically retries when errors occur. + * + * @return mixed + * @throws \Google\Service\Exception on failure when no retries are available. + */ + public function run() + { + while ($this->attempt()) { + try { + return \call_user_func_array($this->action, $this->arguments); + } catch (\Google\Site_Kit_Dependencies\Google\Service\Exception $exception) { + $allowedRetries = $this->allowedRetries($exception->getCode(), $exception->getErrors()); + if (!$this->canAttempt() || !$allowedRetries) { + throw $exception; + } + if ($allowedRetries > 0) { + $this->maxAttempts = \min($this->maxAttempts, $this->attempts + $allowedRetries); + } + } + } + } + /** + * Runs a task once, if possible. This is useful for bypassing the `run()` + * loop. + * + * NOTE: If this is not the first attempt, this function will sleep in + * accordance to the backoff configurations before running the task. + * + * @return boolean + */ + public function attempt() + { + if (!$this->canAttempt()) { + return \false; + } + if ($this->attempts > 0) { + $this->backOff(); + } + $this->attempts++; + return \true; + } + /** + * Sleeps in accordance to the backoff configurations. + */ + private function backOff() + { + $delay = $this->getDelay(); + \usleep($delay * 1000000); + } + /** + * Gets the delay (in seconds) for the current backoff period. + * + * @return float + */ + private function getDelay() + { + $jitter = $this->getJitter(); + $factor = $this->attempts > 1 ? $this->factor + $jitter : 1 + \abs($jitter); + return $this->delay = \min($this->maxDelay, $this->delay * $factor); + } + /** + * Gets the current jitter (random number between -$this->jitter and + * $this->jitter). + * + * @return float + */ + private function getJitter() + { + return $this->jitter * 2 * \mt_rand() / \mt_getrandmax() - $this->jitter; + } + /** + * Gets the number of times the associated task can be retried. + * + * NOTE: -1 is returned if the task can be retried indefinitely + * + * @return integer + */ + public function allowedRetries($code, $errors = array()) + { + if (isset($this->retryMap[$code])) { + return $this->retryMap[$code]; + } + if (!empty($errors) && isset($errors[0]['reason'], $this->retryMap[$errors[0]['reason']])) { + return $this->retryMap[$errors[0]['reason']]; + } + return 0; + } + public function setRetryMap($retryMap) + { + $this->retryMap = $retryMap; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Utils/UriTemplate.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Utils/UriTemplate.php new file mode 100644 index 000000000..b615778ba --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Utils/UriTemplate.php @@ -0,0 +1,266 @@ + "reserved", "/" => "segments", "." => "dotprefix", "#" => "fragment", ";" => "semicolon", "?" => "form", "&" => "continuation"); + /** + * @var reserved array + * These are the characters which should not be URL encoded in reserved + * strings. + */ + private $reserved = array("=", ",", "!", "@", "|", ":", "/", "?", "#", "[", "]", '$', "&", "'", "(", ")", "*", "+", ";"); + private $reservedEncoded = array("%3D", "%2C", "%21", "%40", "%7C", "%3A", "%2F", "%3F", "%23", "%5B", "%5D", "%24", "%26", "%27", "%28", "%29", "%2A", "%2B", "%3B"); + public function parse($string, array $parameters) + { + return $this->resolveNextSection($string, $parameters); + } + /** + * This function finds the first matching {...} block and + * executes the replacement. It then calls itself to find + * subsequent blocks, if any. + */ + private function resolveNextSection($string, $parameters) + { + $start = \strpos($string, "{"); + if ($start === \false) { + return $string; + } + $end = \strpos($string, "}"); + if ($end === \false) { + return $string; + } + $string = $this->replace($string, $start, $end, $parameters); + return $this->resolveNextSection($string, $parameters); + } + private function replace($string, $start, $end, $parameters) + { + // We know a data block will have {} round it, so we can strip that. + $data = \substr($string, $start + 1, $end - $start - 1); + // If the first character is one of the reserved operators, it effects + // the processing of the stream. + if (isset($this->operators[$data[0]])) { + $op = $this->operators[$data[0]]; + $data = \substr($data, 1); + $prefix = ""; + $prefix_on_missing = \false; + switch ($op) { + case "reserved": + // Reserved means certain characters should not be URL encoded + $data = $this->replaceVars($data, $parameters, ",", null, \true); + break; + case "fragment": + // Comma separated with fragment prefix. Bare values only. + $prefix = "#"; + $prefix_on_missing = \true; + $data = $this->replaceVars($data, $parameters, ",", null, \true); + break; + case "segments": + // Slash separated data. Bare values only. + $prefix = "/"; + $data = $this->replaceVars($data, $parameters, "/"); + break; + case "dotprefix": + // Dot separated data. Bare values only. + $prefix = "."; + $prefix_on_missing = \true; + $data = $this->replaceVars($data, $parameters, "."); + break; + case "semicolon": + // Semicolon prefixed and separated. Uses the key name + $prefix = ";"; + $data = $this->replaceVars($data, $parameters, ";", "=", \false, \true, \false); + break; + case "form": + // Standard URL format. Uses the key name + $prefix = "?"; + $data = $this->replaceVars($data, $parameters, "&", "="); + break; + case "continuation": + // Standard URL, but with leading ampersand. Uses key name. + $prefix = "&"; + $data = $this->replaceVars($data, $parameters, "&", "="); + break; + } + // Add the initial prefix character if data is valid. + if ($data || $data !== \false && $prefix_on_missing) { + $data = $prefix . $data; + } + } else { + // If no operator we replace with the defaults. + $data = $this->replaceVars($data, $parameters); + } + // This is chops out the {...} and replaces with the new section. + return \substr($string, 0, $start) . $data . \substr($string, $end + 1); + } + private function replaceVars($section, $parameters, $sep = ",", $combine = null, $reserved = \false, $tag_empty = \false, $combine_on_empty = \true) + { + if (\strpos($section, ",") === \false) { + // If we only have a single value, we can immediately process. + return $this->combine($section, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty); + } else { + // If we have multiple values, we need to split and loop over them. + // Each is treated individually, then glued together with the + // separator character. + $vars = \explode(",", $section); + return $this->combineList( + $vars, + $sep, + $parameters, + $combine, + $reserved, + \false, + // Never emit empty strings in multi-param replacements + $combine_on_empty + ); + } + } + public function combine($key, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty) + { + $length = \false; + $explode = \false; + $skip_final_combine = \false; + $value = \false; + // Check for length restriction. + if (\strpos($key, ":") !== \false) { + list($key, $length) = \explode(":", $key); + } + // Check for explode parameter. + if ($key[\strlen($key) - 1] == "*") { + $explode = \true; + $key = \substr($key, 0, -1); + $skip_final_combine = \true; + } + // Define the list separator. + $list_sep = $explode ? $sep : ","; + if (isset($parameters[$key])) { + $data_type = $this->getDataType($parameters[$key]); + switch ($data_type) { + case self::TYPE_SCALAR: + $value = $this->getValue($parameters[$key], $length); + break; + case self::TYPE_LIST: + $values = array(); + foreach ($parameters[$key] as $pkey => $pvalue) { + $pvalue = $this->getValue($pvalue, $length); + if ($combine && $explode) { + $values[$pkey] = $key . $combine . $pvalue; + } else { + $values[$pkey] = $pvalue; + } + } + $value = \implode($list_sep, $values); + if ($value == '') { + return ''; + } + break; + case self::TYPE_MAP: + $values = array(); + foreach ($parameters[$key] as $pkey => $pvalue) { + $pvalue = $this->getValue($pvalue, $length); + if ($explode) { + $pkey = $this->getValue($pkey, $length); + $values[] = $pkey . "=" . $pvalue; + // Explode triggers = combine. + } else { + $values[] = $pkey; + $values[] = $pvalue; + } + } + $value = \implode($list_sep, $values); + if ($value == '') { + return \false; + } + break; + } + } else { + if ($tag_empty) { + // If we are just indicating empty values with their key name, return that. + return $key; + } else { + // Otherwise we can skip this variable due to not being defined. + return \false; + } + } + if ($reserved) { + $value = \str_replace($this->reservedEncoded, $this->reserved, $value); + } + // If we do not need to include the key name, we just return the raw + // value. + if (!$combine || $skip_final_combine) { + return $value; + } + // Else we combine the key name: foo=bar, if value is not the empty string. + return $key . ($value != '' || $combine_on_empty ? $combine . $value : ''); + } + /** + * Return the type of a passed in value + */ + private function getDataType($data) + { + if (\is_array($data)) { + \reset($data); + if (\key($data) !== 0) { + return self::TYPE_MAP; + } + return self::TYPE_LIST; + } + return self::TYPE_SCALAR; + } + /** + * Utility function that merges multiple combine calls + * for multi-key templates. + */ + private function combineList($vars, $sep, $parameters, $combine, $reserved, $tag_empty, $combine_on_empty) + { + $ret = array(); + foreach ($vars as $var) { + $response = $this->combine($var, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty); + if ($response === \false) { + continue; + } + $ret[] = $response; + } + return \implode($sep, $ret); + } + /** + * Utility function to encode and trim values + */ + private function getValue($value, $length) + { + if ($length) { + $value = \substr($value, 0, $length); + } + $value = \rawurlencode($value); + return $value; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/aliases.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/aliases.php new file mode 100644 index 000000000..cd97d27b5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/aliases.php @@ -0,0 +1,82 @@ + 'Google\\Site_Kit_Dependencies\Google_Client', 'Google\\Site_Kit_Dependencies\\Google\\Service' => 'Google\\Site_Kit_Dependencies\Google_Service', 'Google\\Site_Kit_Dependencies\\Google\\AccessToken\\Revoke' => 'Google\\Site_Kit_Dependencies\Google_AccessToken_Revoke', 'Google\\Site_Kit_Dependencies\\Google\\AccessToken\\Verify' => 'Google\\Site_Kit_Dependencies\Google_AccessToken_Verify', 'Google\\Site_Kit_Dependencies\\Google\\Model' => 'Google\\Site_Kit_Dependencies\Google_Model', 'Google\\Site_Kit_Dependencies\\Google\\Utils\\UriTemplate' => 'Google\\Site_Kit_Dependencies\Google_Utils_UriTemplate', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle6AuthHandler' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_Guzzle6AuthHandler', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle7AuthHandler' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_Guzzle7AuthHandler', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle5AuthHandler' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_Guzzle5AuthHandler', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\AuthHandlerFactory' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_AuthHandlerFactory', 'Google\\Site_Kit_Dependencies\\Google\\Http\\Batch' => 'Google\\Site_Kit_Dependencies\Google_Http_Batch', 'Google\\Site_Kit_Dependencies\\Google\\Http\\MediaFileUpload' => 'Google\\Site_Kit_Dependencies\Google_Http_MediaFileUpload', 'Google\\Site_Kit_Dependencies\\Google\\Http\\REST' => 'Google\\Site_Kit_Dependencies\Google_Http_REST', 'Google\\Site_Kit_Dependencies\\Google\\Task\\Retryable' => 'Google\\Site_Kit_Dependencies\Google_Task_Retryable', 'Google\\Site_Kit_Dependencies\\Google\\Task\\Exception' => 'Google\\Site_Kit_Dependencies\Google_Task_Exception', 'Google\\Site_Kit_Dependencies\\Google\\Task\\Runner' => 'Google\\Site_Kit_Dependencies\Google_Task_Runner', 'Google\\Site_Kit_Dependencies\\Google\\Collection' => 'Google\\Site_Kit_Dependencies\Google_Collection', 'Google\\Site_Kit_Dependencies\\Google\\Service\\Exception' => 'Google\\Site_Kit_Dependencies\Google_Service_Exception', 'Google\\Site_Kit_Dependencies\\Google\\Service\\Resource' => 'Google\\Site_Kit_Dependencies\Google_Service_Resource', 'Google\\Site_Kit_Dependencies\\Google\\Exception' => 'Google\\Site_Kit_Dependencies\Google_Exception']; +foreach ($classMap as $class => $alias) { + \class_alias($class, $alias); +} +/** + * This class needs to be defined explicitly as scripts must be recognized by + * the autoloader. + */ +class Google_Task_Composer extends \Google\Site_Kit_Dependencies\Google\Task\Composer +{ +} +if (\false) { + class Google_AccessToken_Revoke extends \Google\Site_Kit_Dependencies\Google\AccessToken\Revoke + { + } + class Google_AccessToken_Verify extends \Google\Site_Kit_Dependencies\Google\AccessToken\Verify + { + } + class Google_AuthHandler_AuthHandlerFactory extends \Google\Site_Kit_Dependencies\Google\AuthHandler\AuthHandlerFactory + { + } + class Google_AuthHandler_Guzzle5AuthHandler extends \Google\Site_Kit_Dependencies\Google\AuthHandler\Guzzle5AuthHandler + { + } + class Google_AuthHandler_Guzzle6AuthHandler extends \Google\Site_Kit_Dependencies\Google\AuthHandler\Guzzle6AuthHandler + { + } + class Google_AuthHandler_Guzzle7AuthHandler extends \Google\Site_Kit_Dependencies\Google\AuthHandler\Guzzle7AuthHandler + { + } + class Google_Client extends \Google\Site_Kit_Dependencies\Google\Client + { + } + class Google_Collection extends \Google\Site_Kit_Dependencies\Google\Collection + { + } + class Google_Exception extends \Google\Site_Kit_Dependencies\Google\Exception + { + } + class Google_Http_Batch extends \Google\Site_Kit_Dependencies\Google\Http\Batch + { + } + class Google_Http_MediaFileUpload extends \Google\Site_Kit_Dependencies\Google\Http\MediaFileUpload + { + } + class Google_Http_REST extends \Google\Site_Kit_Dependencies\Google\Http\REST + { + } + class Google_Model extends \Google\Site_Kit_Dependencies\Google\Model + { + } + class Google_Service extends \Google\Site_Kit_Dependencies\Google\Service + { + } + class Google_Service_Exception extends \Google\Site_Kit_Dependencies\Google\Service\Exception + { + } + class Google_Service_Resource extends \Google\Site_Kit_Dependencies\Google\Service\Resource + { + } + class Google_Task_Exception extends \Google\Site_Kit_Dependencies\Google\Task\Exception + { + } + interface Google_Task_Retryable extends \Google\Site_Kit_Dependencies\Google\Task\Retryable + { + } + class Google_Task_Runner extends \Google\Site_Kit_Dependencies\Google\Task\Runner + { + } + class Google_Utils_UriTemplate extends \Google\Site_Kit_Dependencies\Google\Utils\UriTemplate + { + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/COPYING b/wp-content/plugins/google-site-kit/third-party/google/auth/COPYING new file mode 100644 index 000000000..b5d5055a2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/COPYING @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2015 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/autoload.php b/wp-content/plugins/google-site-kit/third-party/google/auth/autoload.php new file mode 100644 index 000000000..163a9633a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/autoload.php @@ -0,0 +1,35 @@ + 3) { + // Maximum class file path depth in this project is 3. + $classPath = \array_slice($classPath, 0, 3); + } + $filePath = \dirname(__FILE__) . '/src/' . \implode('/', $classPath) . '.php'; + if (\file_exists($filePath)) { + require_once $filePath; + } +} +\spl_autoload_register('oauth2client_php_autoload'); diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/renovate.json b/wp-content/plugins/google-site-kit/third-party/google/auth/renovate.json new file mode 100644 index 000000000..5fcce1121 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/renovate.json @@ -0,0 +1,6 @@ +{ + "extends": [ + "config:base", + ":preserveSemverRanges" + ] +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/AccessToken.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/AccessToken.php new file mode 100644 index 000000000..ffb4a0876 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/AccessToken.php @@ -0,0 +1,388 @@ +httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + $this->cache = $cache ?: new \Google\Site_Kit_Dependencies\Google\Auth\Cache\MemoryCacheItemPool(); + } + /** + * Verifies an id token and returns the authenticated apiLoginTicket. + * Throws an exception if the id token is not valid. + * The audience parameter can be used to control which id tokens are + * accepted. By default, the id token must have been issued to this OAuth2 client. + * + * @param string $token The JSON Web Token to be verified. + * @param array $options [optional] Configuration options. + * @param string $options.audience The indended recipient of the token. + * @param string $options.issuer The intended issuer of the token. + * @param string $options.cacheKey The cache key of the cached certs. Defaults to + * the sha1 of $certsLocation if provided, otherwise is set to + * "federated_signon_certs_v3". + * @param string $options.certsLocation The location (remote or local) from which + * to retrieve certificates, if not cached. This value should only be + * provided in limited circumstances in which you are sure of the + * behavior. + * @param bool $options.throwException Whether the function should throw an + * exception if the verification fails. This is useful for + * determining the reason verification failed. + * @return array|bool the token payload, if successful, or false if not. + * @throws InvalidArgumentException If certs could not be retrieved from a local file. + * @throws InvalidArgumentException If received certs are in an invalid format. + * @throws InvalidArgumentException If the cert alg is not supported. + * @throws RuntimeException If certs could not be retrieved from a remote location. + * @throws UnexpectedValueException If the token issuer does not match. + * @throws UnexpectedValueException If the token audience does not match. + */ + public function verify($token, array $options = []) + { + $audience = isset($options['audience']) ? $options['audience'] : null; + $issuer = isset($options['issuer']) ? $options['issuer'] : null; + $certsLocation = isset($options['certsLocation']) ? $options['certsLocation'] : self::FEDERATED_SIGNON_CERT_URL; + $cacheKey = isset($options['cacheKey']) ? $options['cacheKey'] : $this->getCacheKeyFromCertLocation($certsLocation); + $throwException = isset($options['throwException']) ? $options['throwException'] : \false; + // for backwards compatibility + // Check signature against each available cert. + $certs = $this->getCerts($certsLocation, $cacheKey, $options); + $alg = $this->determineAlg($certs); + if (!\in_array($alg, ['RS256', 'ES256'])) { + throw new \InvalidArgumentException('unrecognized "alg" in certs, expected ES256 or RS256'); + } + try { + if ($alg == 'RS256') { + return $this->verifyRs256($token, $certs, $audience, $issuer); + } + return $this->verifyEs256($token, $certs, $audience, $issuer); + } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\ExpiredException $e) { + // firebase/php-jwt 3+ + } catch (\Google\Site_Kit_Dependencies\ExpiredException $e) { + // firebase/php-jwt 2 + } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\SignatureInvalidException $e) { + // firebase/php-jwt 3+ + } catch (\Google\Site_Kit_Dependencies\SignatureInvalidException $e) { + // firebase/php-jwt 2 + } catch (\Google\Site_Kit_Dependencies\SimpleJWT\InvalidTokenException $e) { + // simplejwt + } catch (\Google\Site_Kit_Dependencies\Google\Auth\DomainException $e) { + } catch (\InvalidArgumentException $e) { + } catch (\UnexpectedValueException $e) { + } + if ($throwException) { + throw $e; + } + return \false; + } + /** + * Identifies the expected algorithm to verify by looking at the "alg" key + * of the provided certs. + * + * @param array $certs Certificate array according to the JWK spec (see + * https://tools.ietf.org/html/rfc7517). + * @return string The expected algorithm, such as "ES256" or "RS256". + */ + private function determineAlg(array $certs) + { + $alg = null; + foreach ($certs as $cert) { + if (empty($cert['alg'])) { + throw new \InvalidArgumentException('certs expects "alg" to be set'); + } + $alg = $alg ?: $cert['alg']; + if ($alg != $cert['alg']) { + throw new \InvalidArgumentException('More than one alg detected in certs'); + } + } + return $alg; + } + /** + * Verifies an ES256-signed JWT. + * + * @param string $token The JSON Web Token to be verified. + * @param array $certs Certificate array according to the JWK spec (see + * https://tools.ietf.org/html/rfc7517). + * @param string|null $audience If set, returns false if the provided + * audience does not match the "aud" claim on the JWT. + * @param string|null $issuer If set, returns false if the provided + * issuer does not match the "iss" claim on the JWT. + * @return array|bool the token payload, if successful, or false if not. + */ + private function verifyEs256($token, array $certs, $audience = null, $issuer = null) + { + $this->checkSimpleJwt(); + $jwkset = new \Google\Site_Kit_Dependencies\SimpleJWT\Keys\KeySet(); + foreach ($certs as $cert) { + $jwkset->add(\Google\Site_Kit_Dependencies\SimpleJWT\Keys\KeyFactory::create($cert, 'php')); + } + // Validate the signature using the key set and ES256 algorithm. + $jwt = $this->callSimpleJwtDecode([$token, $jwkset, 'ES256']); + $payload = $jwt->getClaims(); + if (isset($payload['aud'])) { + if ($audience && $payload['aud'] != $audience) { + throw new \UnexpectedValueException('Audience does not match'); + } + } + // @see https://cloud.google.com/iap/docs/signed-headers-howto#verifying_the_jwt_payload + $issuer = $issuer ?: self::IAP_ISSUER; + if (!isset($payload['iss']) || $payload['iss'] !== $issuer) { + throw new \UnexpectedValueException('Issuer does not match'); + } + return $payload; + } + /** + * Verifies an RS256-signed JWT. + * + * @param string $token The JSON Web Token to be verified. + * @param array $certs Certificate array according to the JWK spec (see + * https://tools.ietf.org/html/rfc7517). + * @param string|null $audience If set, returns false if the provided + * audience does not match the "aud" claim on the JWT. + * @param string|null $issuer If set, returns false if the provided + * issuer does not match the "iss" claim on the JWT. + * @return array|bool the token payload, if successful, or false if not. + */ + private function verifyRs256($token, array $certs, $audience = null, $issuer = null) + { + $this->checkAndInitializePhpsec(); + $keys = []; + foreach ($certs as $cert) { + if (empty($cert['kid'])) { + throw new \InvalidArgumentException('certs expects "kid" to be set'); + } + if (empty($cert['n']) || empty($cert['e'])) { + throw new \InvalidArgumentException('RSA certs expects "n" and "e" to be set'); + } + $rsa = new \Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA(); + $rsa->loadKey(['n' => new \Google\Site_Kit_Dependencies\phpseclib\Math\BigInteger($this->callJwtStatic('urlsafeB64Decode', [$cert['n']]), 256), 'e' => new \Google\Site_Kit_Dependencies\phpseclib\Math\BigInteger($this->callJwtStatic('urlsafeB64Decode', [$cert['e']]), 256)]); + // create an array of key IDs to certs for the JWT library + $keys[$cert['kid']] = $rsa->getPublicKey(); + } + $payload = $this->callJwtStatic('decode', [$token, $keys, ['RS256']]); + if (\property_exists($payload, 'aud')) { + if ($audience && $payload->aud != $audience) { + throw new \UnexpectedValueException('Audience does not match'); + } + } + // support HTTP and HTTPS issuers + // @see https://developers.google.com/identity/sign-in/web/backend-auth + $issuers = $issuer ? [$issuer] : [self::OAUTH2_ISSUER, self::OAUTH2_ISSUER_HTTPS]; + if (!isset($payload->iss) || !\in_array($payload->iss, $issuers)) { + throw new \UnexpectedValueException('Issuer does not match'); + } + return (array) $payload; + } + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * + * @param string|array $token The token (access token or a refresh token) that should be revoked. + * @param array $options [optional] Configuration options. + * @return bool Returns True if the revocation was successful, otherwise False. + */ + public function revoke($token, array $options = []) + { + if (\is_array($token)) { + if (isset($token['refresh_token'])) { + $token = $token['refresh_token']; + } else { + $token = $token['access_token']; + } + } + $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\http_build_query(['token' => $token])); + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', self::OAUTH2_REVOKE_URI, ['Cache-Control' => 'no-store', 'Content-Type' => 'application/x-www-form-urlencoded'], $body); + $httpHandler = $this->httpHandler; + $response = $httpHandler($request, $options); + return $response->getStatusCode() == 200; + } + /** + * Gets federated sign-on certificates to use for verifying identity tokens. + * Returns certs as array structure, where keys are key ids, and values + * are PEM encoded certificates. + * + * @param string $location The location from which to retrieve certs. + * @param string $cacheKey The key under which to cache the retrieved certs. + * @param array $options [optional] Configuration options. + * @return array + * @throws InvalidArgumentException If received certs are in an invalid format. + */ + private function getCerts($location, $cacheKey, array $options = []) + { + $cacheItem = $this->cache->getItem($cacheKey); + $certs = $cacheItem ? $cacheItem->get() : null; + $gotNewCerts = \false; + if (!$certs) { + $certs = $this->retrieveCertsFromLocation($location, $options); + $gotNewCerts = \true; + } + if (!isset($certs['keys'])) { + if ($location !== self::IAP_CERT_URL) { + throw new \InvalidArgumentException('federated sign-on certs expects "keys" to be set'); + } + throw new \InvalidArgumentException('certs expects "keys" to be set'); + } + // Push caching off until after verifying certs are in a valid format. + // Don't want to cache bad data. + if ($gotNewCerts) { + $cacheItem->expiresAt(new \DateTime('+1 hour')); + $cacheItem->set($certs); + $this->cache->save($cacheItem); + } + return $certs['keys']; + } + /** + * Retrieve and cache a certificates file. + * + * @param $url string location + * @param array $options [optional] Configuration options. + * @return array certificates + * @throws InvalidArgumentException If certs could not be retrieved from a local file. + * @throws RuntimeException If certs could not be retrieved from a remote location. + */ + private function retrieveCertsFromLocation($url, array $options = []) + { + // If we're retrieving a local file, just grab it. + if (\strpos($url, 'http') !== 0) { + if (!\file_exists($url)) { + throw new \InvalidArgumentException(\sprintf('Failed to retrieve verification certificates from path: %s.', $url)); + } + return \json_decode(\file_get_contents($url), \true); + } + $httpHandler = $this->httpHandler; + $response = $httpHandler(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('GET', $url), $options); + if ($response->getStatusCode() == 200) { + return \json_decode((string) $response->getBody(), \true); + } + throw new \RuntimeException(\sprintf('Failed to retrieve verification certificates: "%s".', $response->getBody()->getContents()), $response->getStatusCode()); + } + private function checkAndInitializePhpsec() + { + // @codeCoverageIgnoreStart + if (!\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA')) { + throw new \RuntimeException('Please require phpseclib/phpseclib v2 to use this utility.'); + } + // @codeCoverageIgnoreEnd + $this->setPhpsecConstants(); + } + private function checkSimpleJwt() + { + // @codeCoverageIgnoreStart + if (!\class_exists('Google\\Site_Kit_Dependencies\\SimpleJWT\\JWT')) { + throw new \RuntimeException('Please require kelvinmo/simplejwt ^0.2 to use this utility.'); + } + // @codeCoverageIgnoreEnd + } + /** + * phpseclib calls "phpinfo" by default, which requires special + * whitelisting in the AppEngine VM environment. This function + * sets constants to bypass the need for phpseclib to check phpinfo + * + * @see phpseclib/Math/BigInteger + * @see https://github.com/GoogleCloudPlatform/getting-started-php/issues/85 + * @codeCoverageIgnore + */ + private function setPhpsecConstants() + { + if (\filter_var(\getenv('GAE_VM'), \FILTER_VALIDATE_BOOLEAN)) { + if (!\defined('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED')) { + \define('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED', \true); + } + if (!\defined('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE')) { + \define('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE', \Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA::MODE_OPENSSL); + } + } + } + /** + * Provide a hook to mock calls to the JWT static methods. + * + * @param string $method + * @param array $args + * @return mixed + */ + protected function callJwtStatic($method, array $args = []) + { + $class = \class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT') ? 'Firebase\\JWT\\JWT' : 'JWT'; + return \call_user_func_array([$class, $method], $args); + } + /** + * Provide a hook to mock calls to the JWT static methods. + * + * @param array $args + * @return mixed + */ + protected function callSimpleJwtDecode(array $args = []) + { + return \call_user_func_array(['SimpleJWT\\JWT', 'decode'], $args); + } + /** + * Generate a cache key based on the cert location using sha1 with the + * exception of using "federated_signon_certs_v3" to preserve BC. + * + * @param string $certsLocation + * @return string + */ + private function getCacheKeyFromCertLocation($certsLocation) + { + $key = $certsLocation === self::FEDERATED_SIGNON_CERT_URL ? 'federated_signon_certs_v3' : \sha1($certsLocation); + return 'google_auth_certs_cache|' . $key; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/ApplicationDefaultCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ApplicationDefaultCredentials.php new file mode 100644 index 000000000..d1a00f305 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ApplicationDefaultCredentials.php @@ -0,0 +1,271 @@ +push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'auth' => 'google_auth' // authorize all requests + * ]); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + * ``` + */ +class ApplicationDefaultCredentials +{ + /** + * Obtains an AuthTokenSubscriber that uses the default FetchAuthTokenInterface + * implementation to use in this environment. + * + * If supplied, $scope is used to in creating the credentials instance if + * this does not fallback to the compute engine defaults. + * + * @param string|array scope the scope of the access request, expressed + * either as an Array or as a space-delimited String. + * @param callable $httpHandler callback which delivers psr7 request + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache A cache implementation, may be + * provided if you have one already available for use. + * @return AuthTokenSubscriber + * @throws DomainException if no implementation can be obtained. + */ + public static function getSubscriber($scope = null, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null) + { + $creds = self::getCredentials($scope, $httpHandler, $cacheConfig, $cache); + return new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\AuthTokenSubscriber($creds, $httpHandler); + } + /** + * Obtains an AuthTokenMiddleware that uses the default FetchAuthTokenInterface + * implementation to use in this environment. + * + * If supplied, $scope is used to in creating the credentials instance if + * this does not fallback to the compute engine defaults. + * + * @param string|array scope the scope of the access request, expressed + * either as an Array or as a space-delimited String. + * @param callable $httpHandler callback which delivers psr7 request + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache A cache implementation, may be + * provided if you have one already available for use. + * @param string $quotaProject specifies a project to bill for access + * charges associated with the request. + * @return AuthTokenMiddleware + * @throws DomainException if no implementation can be obtained. + */ + public static function getMiddleware($scope = null, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null, $quotaProject = null) + { + $creds = self::getCredentials($scope, $httpHandler, $cacheConfig, $cache, $quotaProject); + return new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($creds, $httpHandler); + } + /** + * Obtains the default FetchAuthTokenInterface implementation to use + * in this environment. + * + * @param string|array $scope the scope of the access request, expressed + * either as an Array or as a space-delimited String. + * @param callable $httpHandler callback which delivers psr7 request + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache A cache implementation, may be + * provided if you have one already available for use. + * @param string $quotaProject specifies a project to bill for access + * charges associated with the request. + * @param string|array $defaultScope The default scope to use if no + * user-defined scopes exist, expressed either as an Array or as a + * space-delimited string. + * + * @return CredentialsLoader + * @throws DomainException if no implementation can be obtained. + */ + public static function getCredentials($scope = null, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null, $quotaProject = null, $defaultScope = null) + { + $creds = null; + $jsonKey = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromEnv() ?: \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromWellKnownFile(); + $anyScope = $scope ?: $defaultScope; + if (!$httpHandler) { + if (!($client = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient())) { + $client = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(); + \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::setHttpClient($client); + } + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($client); + } + if (!\is_null($jsonKey)) { + if ($quotaProject) { + $jsonKey['quota_project_id'] = $quotaProject; + } + $creds = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::makeCredentials($scope, $jsonKey, $defaultScope); + } elseif (\Google\Site_Kit_Dependencies\Google\Auth\Credentials\AppIdentityCredentials::onAppEngine() && !\Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials::onAppEngineFlexible()) { + $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\AppIdentityCredentials($anyScope); + } elseif (self::onGce($httpHandler, $cacheConfig, $cache)) { + $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials(null, $anyScope, null, $quotaProject); + } + if (\is_null($creds)) { + throw new \DomainException(self::notFound()); + } + if (!\is_null($cache)) { + $creds = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($creds, $cacheConfig, $cache); + } + return $creds; + } + /** + * Obtains an AuthTokenMiddleware which will fetch an ID token to use in the + * Authorization header. The middleware is configured with the default + * FetchAuthTokenInterface implementation to use in this environment. + * + * If supplied, $targetAudience is used to set the "aud" on the resulting + * ID token. + * + * @param string $targetAudience The audience for the ID token. + * @param callable $httpHandler callback which delivers psr7 request + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache A cache implementation, may be + * provided if you have one already available for use. + * @return AuthTokenMiddleware + * @throws DomainException if no implementation can be obtained. + */ + public static function getIdTokenMiddleware($targetAudience, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null) + { + $creds = self::getIdTokenCredentials($targetAudience, $httpHandler, $cacheConfig, $cache); + return new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($creds, $httpHandler); + } + /** + * Obtains an ProxyAuthTokenMiddleware which will fetch an ID token to use in the + * Authorization header. The middleware is configured with the default + * FetchAuthTokenInterface implementation to use in this environment. + * + * If supplied, $targetAudience is used to set the "aud" on the resulting + * ID token. + * + * @param string $targetAudience The audience for the ID token. + * @param callable $httpHandler callback which delivers psr7 request + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache A cache implementation, may be + * provided if you have one already available for use. + * @return ProxyAuthTokenMiddleware + * @throws DomainException if no implementation can be obtained. + */ + public static function getProxyIdTokenMiddleware($targetAudience, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null) + { + $creds = self::getIdTokenCredentials($targetAudience, $httpHandler, $cacheConfig, $cache); + return new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\ProxyAuthTokenMiddleware($creds, $httpHandler); + } + /** + * Obtains the default FetchAuthTokenInterface implementation to use + * in this environment, configured with a $targetAudience for fetching an ID + * token. + * + * @param string $targetAudience The audience for the ID token. + * @param callable $httpHandler callback which delivers psr7 request + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache A cache implementation, may be + * provided if you have one already available for use. + * @return CredentialsLoader + * @throws DomainException if no implementation can be obtained. + * @throws InvalidArgumentException if JSON "type" key is invalid + */ + public static function getIdTokenCredentials($targetAudience, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null) + { + $creds = null; + $jsonKey = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromEnv() ?: \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromWellKnownFile(); + if (!$httpHandler) { + if (!($client = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient())) { + $client = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(); + \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::setHttpClient($client); + } + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($client); + } + if (!\is_null($jsonKey)) { + if (!\array_key_exists('type', $jsonKey)) { + throw new \InvalidArgumentException('json key is missing the type field'); + } + if ($jsonKey['type'] == 'authorized_user') { + throw new \InvalidArgumentException('ID tokens are not supported for end user credentials'); + } + if ($jsonKey['type'] != 'service_account') { + throw new \InvalidArgumentException('invalid value in the type field'); + } + $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\ServiceAccountCredentials(null, $jsonKey, null, $targetAudience); + } elseif (self::onGce($httpHandler, $cacheConfig, $cache)) { + $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials(null, null, $targetAudience); + } + if (\is_null($creds)) { + throw new \DomainException(self::notFound()); + } + if (!\is_null($cache)) { + $creds = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($creds, $cacheConfig, $cache); + } + return $creds; + } + private static function notFound() + { + $msg = 'Could not load the default credentials. Browse to '; + $msg .= 'https://developers.google.com'; + $msg .= '/accounts/docs/application-default-credentials'; + $msg .= ' for more information'; + return $msg; + } + private static function onGce(callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null) + { + $gceCacheConfig = []; + foreach (['lifetime', 'prefix'] as $key) { + if (isset($cacheConfig['gce_' . $key])) { + $gceCacheConfig[$key] = $cacheConfig['gce_' . $key]; + } + } + return (new \Google\Site_Kit_Dependencies\Google\Auth\GCECache($gceCacheConfig, $cache))->onGce($httpHandler); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/InvalidArgumentException.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/InvalidArgumentException.php new file mode 100644 index 000000000..a7f7b86f6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/InvalidArgumentException.php @@ -0,0 +1,23 @@ +key = $key; + } + /** + * {@inheritdoc} + */ + public function getKey() + { + return $this->key; + } + /** + * {@inheritdoc} + */ + public function get() + { + return $this->isHit() ? $this->value : null; + } + /** + * {@inheritdoc} + */ + public function isHit() + { + if (!$this->isHit) { + return \false; + } + if ($this->expiration === null) { + return \true; + } + return $this->currentTime()->getTimestamp() < $this->expiration->getTimestamp(); + } + /** + * {@inheritdoc} + */ + public function set($value) + { + $this->isHit = \true; + $this->value = $value; + return $this; + } + /** + * {@inheritdoc} + */ + public function expiresAt($expiration) + { + if ($this->isValidExpiration($expiration)) { + $this->expiration = $expiration; + return $this; + } + $implementationMessage = \interface_exists('DateTimeInterface') ? 'implement interface DateTimeInterface' : 'be an instance of DateTime'; + $error = \sprintf('Argument 1 passed to %s::expiresAt() must %s, %s given', \get_class($this), $implementationMessage, \gettype($expiration)); + $this->handleError($error); + } + /** + * {@inheritdoc} + */ + public function expiresAfter($time) + { + if (\is_int($time)) { + $this->expiration = $this->currentTime()->add(new \DateInterval("PT{$time}S")); + } elseif ($time instanceof \DateInterval) { + $this->expiration = $this->currentTime()->add($time); + } elseif ($time === null) { + $this->expiration = $time; + } else { + $message = 'Argument 1 passed to %s::expiresAfter() must be an ' . 'instance of DateInterval or of the type integer, %s given'; + $error = \sprintf($message, \get_class($this), \gettype($time)); + $this->handleError($error); + } + return $this; + } + /** + * Handles an error. + * + * @param string $error + * @throws \TypeError + */ + private function handleError($error) + { + if (\class_exists('TypeError')) { + throw new \TypeError($error); + } + \trigger_error($error, \E_USER_ERROR); + } + /** + * Determines if an expiration is valid based on the rules defined by PSR6. + * + * @param mixed $expiration + * @return bool + */ + private function isValidExpiration($expiration) + { + if ($expiration === null) { + return \true; + } + // We test for two types here due to the fact the DateTimeInterface + // was not introduced until PHP 5.5. Checking for the DateTime type as + // well allows us to support 5.4. + if ($expiration instanceof \DateTimeInterface) { + return \true; + } + if ($expiration instanceof \DateTime) { + return \true; + } + return \false; + } + protected function currentTime() + { + return new \DateTime('now', new \DateTimeZone('UTC')); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/MemoryCacheItemPool.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/MemoryCacheItemPool.php new file mode 100644 index 000000000..cd10c8da8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/MemoryCacheItemPool.php @@ -0,0 +1,130 @@ +getItems([$key])); + } + /** + * {@inheritdoc} + */ + public function getItems(array $keys = []) + { + $items = []; + foreach ($keys as $key) { + $items[$key] = $this->hasItem($key) ? clone $this->items[$key] : new \Google\Site_Kit_Dependencies\Google\Auth\Cache\Item($key); + } + return $items; + } + /** + * {@inheritdoc} + */ + public function hasItem($key) + { + $this->isValidKey($key); + return isset($this->items[$key]) && $this->items[$key]->isHit(); + } + /** + * {@inheritdoc} + */ + public function clear() + { + $this->items = []; + $this->deferredItems = []; + return \true; + } + /** + * {@inheritdoc} + */ + public function deleteItem($key) + { + return $this->deleteItems([$key]); + } + /** + * {@inheritdoc} + */ + public function deleteItems(array $keys) + { + \array_walk($keys, [$this, 'isValidKey']); + foreach ($keys as $key) { + unset($this->items[$key]); + } + return \true; + } + /** + * {@inheritdoc} + */ + public function save(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item) + { + $this->items[$item->getKey()] = $item; + return \true; + } + /** + * {@inheritdoc} + */ + public function saveDeferred(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item) + { + $this->deferredItems[$item->getKey()] = $item; + return \true; + } + /** + * {@inheritdoc} + */ + public function commit() + { + foreach ($this->deferredItems as $item) { + $this->save($item); + } + $this->deferredItems = []; + return \true; + } + /** + * Determines if the provided key is valid. + * + * @param string $key + * @return bool + * @throws InvalidArgumentException + */ + private function isValidKey($key) + { + $invalidCharacters = '{}()/\\\\@:'; + if (!\is_string($key) || \preg_match("#[{$invalidCharacters}]#", $key)) { + throw new \Google\Site_Kit_Dependencies\Google\Auth\Cache\InvalidArgumentException('The provided key is not valid: ' . \var_export($key, \true)); + } + return \true; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/SysVCacheItemPool.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/SysVCacheItemPool.php new file mode 100644 index 000000000..b0f22a4ad --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/SysVCacheItemPool.php @@ -0,0 +1,198 @@ +options = $options + ['variableKey' => self::VAR_KEY, 'proj' => self::DEFAULT_PROJ, 'memsize' => self::DEFAULT_MEMSIZE, 'perm' => self::DEFAULT_PERM]; + $this->items = []; + $this->deferredItems = []; + $this->sysvKey = \ftok(__FILE__, $this->options['proj']); + } + public function getItem($key) + { + $this->loadItems(); + return \current($this->getItems([$key])); + } + /** + * {@inheritdoc} + */ + public function getItems(array $keys = []) + { + $this->loadItems(); + $items = []; + foreach ($keys as $key) { + $items[$key] = $this->hasItem($key) ? clone $this->items[$key] : new \Google\Site_Kit_Dependencies\Google\Auth\Cache\Item($key); + } + return $items; + } + /** + * {@inheritdoc} + */ + public function hasItem($key) + { + $this->loadItems(); + return isset($this->items[$key]) && $this->items[$key]->isHit(); + } + /** + * {@inheritdoc} + */ + public function clear() + { + $this->items = []; + $this->deferredItems = []; + return $this->saveCurrentItems(); + } + /** + * {@inheritdoc} + */ + public function deleteItem($key) + { + return $this->deleteItems([$key]); + } + /** + * {@inheritdoc} + */ + public function deleteItems(array $keys) + { + if (!$this->hasLoadedItems) { + $this->loadItems(); + } + foreach ($keys as $key) { + unset($this->items[$key]); + } + return $this->saveCurrentItems(); + } + /** + * {@inheritdoc} + */ + public function save(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item) + { + if (!$this->hasLoadedItems) { + $this->loadItems(); + } + $this->items[$item->getKey()] = $item; + return $this->saveCurrentItems(); + } + /** + * {@inheritdoc} + */ + public function saveDeferred(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item) + { + $this->deferredItems[$item->getKey()] = $item; + return \true; + } + /** + * {@inheritdoc} + */ + public function commit() + { + foreach ($this->deferredItems as $item) { + if ($this->save($item) === \false) { + return \false; + } + } + $this->deferredItems = []; + return \true; + } + /** + * Save the current items. + * + * @return bool true when success, false upon failure + */ + private function saveCurrentItems() + { + $shmid = \shm_attach($this->sysvKey, $this->options['memsize'], $this->options['perm']); + if ($shmid !== \false) { + $ret = \shm_put_var($shmid, $this->options['variableKey'], $this->items); + \shm_detach($shmid); + return $ret; + } + return \false; + } + /** + * Load the items from the shared memory. + * + * @return bool true when success, false upon failure + */ + private function loadItems() + { + $shmid = \shm_attach($this->sysvKey, $this->options['memsize'], $this->options['perm']); + if ($shmid !== \false) { + $data = @\shm_get_var($shmid, $this->options['variableKey']); + if (!empty($data)) { + $this->items = $data; + } else { + $this->items = []; + } + \shm_detach($shmid); + $this->hasLoadedItems = \true; + return \true; + } + return \false; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/CacheTrait.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CacheTrait.php new file mode 100644 index 000000000..83bac36dc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CacheTrait.php @@ -0,0 +1,72 @@ +cache)) { + return; + } + $key = $this->getFullCacheKey($k); + if (\is_null($key)) { + return; + } + $cacheItem = $this->cache->getItem($key); + if ($cacheItem->isHit()) { + return $cacheItem->get(); + } + } + /** + * Saves the value in the cache when that is available. + */ + private function setCachedValue($k, $v) + { + if (\is_null($this->cache)) { + return; + } + $key = $this->getFullCacheKey($k); + if (\is_null($key)) { + return; + } + $cacheItem = $this->cache->getItem($key); + $cacheItem->set($v); + $cacheItem->expiresAfter($this->cacheConfig['lifetime']); + return $this->cache->save($cacheItem); + } + private function getFullCacheKey($key) + { + if (\is_null($key)) { + return; + } + $key = $this->cacheConfig['prefix'] . $key; + // ensure we do not have illegal characters + $key = \preg_replace('|[^a-zA-Z0-9_\\.!]|', '', $key); + // Hash keys if they exceed $maxKeyLength (defaults to 64) + if ($this->maxKeyLength && \strlen($key) > $this->maxKeyLength) { + $key = \substr(\hash('sha256', $key), 0, $this->maxKeyLength); + } + return $key; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/AppIdentityCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/AppIdentityCredentials.php new file mode 100644 index 000000000..0687dee7f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/AppIdentityCredentials.php @@ -0,0 +1,200 @@ +push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_uri' => 'https://www.googleapis.com/books/v1', + * 'auth' => 'google_auth' + * ]); + * + * $res = $client->get('volumes?q=Henry+David+Thoreau&country=US'); + * ``` + */ +class AppIdentityCredentials extends \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader implements \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface, \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface +{ + /** + * Result of fetchAuthToken. + * + * @var array + */ + protected $lastReceivedToken; + /** + * Array of OAuth2 scopes to be requested. + * + * @var array + */ + private $scope; + /** + * @var string + */ + private $clientName; + /** + * @param array $scope One or more scopes. + */ + public function __construct($scope = array()) + { + $this->scope = $scope; + } + /** + * Determines if this an App Engine instance, by accessing the + * SERVER_SOFTWARE environment variable (prod) or the APPENGINE_RUNTIME + * environment variable (dev). + * + * @return bool true if this an App Engine Instance, false otherwise + */ + public static function onAppEngine() + { + $appEngineProduction = isset($_SERVER['SERVER_SOFTWARE']) && 0 === \strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine'); + if ($appEngineProduction) { + return \true; + } + $appEngineDevAppServer = isset($_SERVER['APPENGINE_RUNTIME']) && $_SERVER['APPENGINE_RUNTIME'] == 'php'; + if ($appEngineDevAppServer) { + return \true; + } + return \false; + } + /** + * Implements FetchAuthTokenInterface#fetchAuthToken. + * + * Fetches the auth tokens using the AppIdentityService if available. + * As the AppIdentityService uses protobufs to fetch the access token, + * the GuzzleHttp\ClientInterface instance passed in will not be used. + * + * @param callable $httpHandler callback which delivers psr7 request + * @return array A set of auth related metadata, containing the following + * keys: + * - access_token (string) + * - expiration_time (string) + */ + public function fetchAuthToken(callable $httpHandler = null) + { + try { + $this->checkAppEngineContext(); + } catch (\Exception $e) { + return []; + } + // AppIdentityService expects an array when multiple scopes are supplied + $scope = \is_array($this->scope) ? $this->scope : \explode(' ', $this->scope); + $token = \Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::getAccessToken($scope); + $this->lastReceivedToken = $token; + return $token; + } + /** + * Sign a string using AppIdentityService. + * + * @param string $stringToSign The string to sign. + * @param bool $forceOpenSsl [optional] Does not apply to this credentials + * type. + * @return string The signature, base64-encoded. + * @throws \Exception If AppEngine SDK or mock is not available. + */ + public function signBlob($stringToSign, $forceOpenSsl = \false) + { + $this->checkAppEngineContext(); + return \base64_encode(\Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::signForApp($stringToSign)['signature']); + } + /** + * Get the project ID from AppIdentityService. + * + * Returns null if AppIdentityService is unavailable. + * + * @param callable $httpHandler Not used by this type. + * @return string|null + */ + public function getProjectId(callable $httpHander = null) + { + try { + $this->checkAppEngineContext(); + } catch (\Exception $e) { + return null; + } + return \Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::getApplicationId(); + } + /** + * Get the client name from AppIdentityService. + * + * Subsequent calls to this method will return a cached value. + * + * @param callable $httpHandler Not used in this implementation. + * @return string + * @throws \Exception If AppEngine SDK or mock is not available. + */ + public function getClientName(callable $httpHandler = null) + { + $this->checkAppEngineContext(); + if (!$this->clientName) { + $this->clientName = \Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::getServiceAccountName(); + } + return $this->clientName; + } + /** + * @return array|null + */ + public function getLastReceivedToken() + { + if ($this->lastReceivedToken) { + return ['access_token' => $this->lastReceivedToken['access_token'], 'expires_at' => $this->lastReceivedToken['expiration_time']]; + } + return null; + } + /** + * Caching is handled by the underlying AppIdentityService, return empty string + * to prevent caching. + * + * @return string + */ + public function getCacheKey() + { + return ''; + } + private function checkAppEngineContext() + { + if (!self::onAppEngine() || !\class_exists('Google\\Site_Kit_Dependencies\\google\\appengine\\api\\app_identity\\AppIdentityService')) { + throw new \Exception('This class must be run in App Engine, or you must include the AppIdentityService ' . 'mock class defined in tests/mocks/AppIdentityService.php'); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/GCECredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/GCECredentials.php new file mode 100644 index 000000000..5230a20b2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/GCECredentials.php @@ -0,0 +1,433 @@ +push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'auth' => 'google_auth' + * ]); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + */ +class GCECredentials extends \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader implements \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface, \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface, \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface +{ + // phpcs:disable + const cacheKey = 'GOOGLE_AUTH_PHP_GCE'; + // phpcs:enable + /** + * The metadata IP address on appengine instances. + * + * The IP is used instead of the domain 'metadata' to avoid slow responses + * when not on Compute Engine. + */ + const METADATA_IP = '169.254.169.254'; + /** + * The metadata path of the default token. + */ + const TOKEN_URI_PATH = 'v1/instance/service-accounts/default/token'; + /** + * The metadata path of the default id token. + */ + const ID_TOKEN_URI_PATH = 'v1/instance/service-accounts/default/identity'; + /** + * The metadata path of the client ID. + */ + const CLIENT_ID_URI_PATH = 'v1/instance/service-accounts/default/email'; + /** + * The metadata path of the project ID. + */ + const PROJECT_ID_URI_PATH = 'v1/project/project-id'; + /** + * The header whose presence indicates GCE presence. + */ + const FLAVOR_HEADER = 'Metadata-Flavor'; + /** + * Note: the explicit `timeout` and `tries` below is a workaround. The underlying + * issue is that resolving an unknown host on some networks will take + * 20-30 seconds; making this timeout short fixes the issue, but + * could lead to false negatives in the event that we are on GCE, but + * the metadata resolution was particularly slow. The latter case is + * "unlikely" since the expected 4-nines time is about 0.5 seconds. + * This allows us to limit the total ping maximum timeout to 1.5 seconds + * for developer desktop scenarios. + */ + const MAX_COMPUTE_PING_TRIES = 3; + const COMPUTE_PING_CONNECTION_TIMEOUT_S = 0.5; + /** + * Flag used to ensure that the onGCE test is only done once;. + * + * @var bool + */ + private $hasCheckedOnGce = \false; + /** + * Flag that stores the value of the onGCE check. + * + * @var bool + */ + private $isOnGce = \false; + /** + * Result of fetchAuthToken. + */ + protected $lastReceivedToken; + /** + * @var string|null + */ + private $clientName; + /** + * @var string|null + */ + private $projectId; + /** + * @var Iam|null + */ + private $iam; + /** + * @var string + */ + private $tokenUri; + /** + * @var string + */ + private $targetAudience; + /** + * @var string|null + */ + private $quotaProject; + /** + * @var string|null + */ + private $serviceAccountIdentity; + /** + * @param Iam $iam [optional] An IAM instance. + * @param string|array $scope [optional] the scope of the access request, + * expressed either as an array or as a space-delimited string. + * @param string $targetAudience [optional] The audience for the ID token. + * @param string $quotaProject [optional] Specifies a project to bill for access + * charges associated with the request. + * @param string $serviceAccountIdentity [optional] Specify a service + * account identity name to use instead of "default". + */ + public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\Iam $iam = null, $scope = null, $targetAudience = null, $quotaProject = null, $serviceAccountIdentity = null) + { + $this->iam = $iam; + if ($scope && $targetAudience) { + throw new \InvalidArgumentException('Scope and targetAudience cannot both be supplied'); + } + $tokenUri = self::getTokenUri($serviceAccountIdentity); + if ($scope) { + if (\is_string($scope)) { + $scope = \explode(' ', $scope); + } + $scope = \implode(',', $scope); + $tokenUri = $tokenUri . '?scopes=' . $scope; + } elseif ($targetAudience) { + $tokenUri = self::getIdTokenUri($serviceAccountIdentity); + $tokenUri = $tokenUri . '?audience=' . $targetAudience; + $this->targetAudience = $targetAudience; + } + $this->tokenUri = $tokenUri; + $this->quotaProject = $quotaProject; + $this->serviceAccountIdentity = $serviceAccountIdentity; + } + /** + * The full uri for accessing the default token. + * + * @param string $serviceAccountIdentity [optional] Specify a service + * account identity name to use instead of "default". + * @return string + */ + public static function getTokenUri($serviceAccountIdentity = null) + { + $base = 'http://' . self::METADATA_IP . '/computeMetadata/'; + $base .= self::TOKEN_URI_PATH; + if ($serviceAccountIdentity) { + return \str_replace('/default/', '/' . $serviceAccountIdentity . '/', $base); + } + return $base; + } + /** + * The full uri for accessing the default service account. + * + * @param string $serviceAccountIdentity [optional] Specify a service + * account identity name to use instead of "default". + * @return string + */ + public static function getClientNameUri($serviceAccountIdentity = null) + { + $base = 'http://' . self::METADATA_IP . '/computeMetadata/'; + $base .= self::CLIENT_ID_URI_PATH; + if ($serviceAccountIdentity) { + return \str_replace('/default/', '/' . $serviceAccountIdentity . '/', $base); + } + return $base; + } + /** + * The full uri for accesesing the default identity token. + * + * @param string $serviceAccountIdentity [optional] Specify a service + * account identity name to use instead of "default". + * @return string + */ + private static function getIdTokenUri($serviceAccountIdentity = null) + { + $base = 'http://' . self::METADATA_IP . '/computeMetadata/'; + $base .= self::ID_TOKEN_URI_PATH; + if ($serviceAccountIdentity) { + return \str_replace('/default/', '/' . $serviceAccountIdentity . '/', $base); + } + return $base; + } + /** + * The full uri for accessing the default project ID. + * + * @return string + */ + private static function getProjectIdUri() + { + $base = 'http://' . self::METADATA_IP . '/computeMetadata/'; + return $base . self::PROJECT_ID_URI_PATH; + } + /** + * Determines if this an App Engine Flexible instance, by accessing the + * GAE_INSTANCE environment variable. + * + * @return bool true if this an App Engine Flexible Instance, false otherwise + */ + public static function onAppEngineFlexible() + { + return \substr(\getenv('GAE_INSTANCE'), 0, 4) === 'aef-'; + } + /** + * Determines if this a GCE instance, by accessing the expected metadata + * host. + * If $httpHandler is not specified a the default HttpHandler is used. + * + * @param callable $httpHandler callback which delivers psr7 request + * @return bool True if this a GCEInstance, false otherwise + */ + public static function onGce(callable $httpHandler = null) + { + $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + $checkUri = 'http://' . self::METADATA_IP; + for ($i = 1; $i <= self::MAX_COMPUTE_PING_TRIES; $i++) { + try { + // Comment from: oauth2client/client.py + // + // Note: the explicit `timeout` below is a workaround. The underlying + // issue is that resolving an unknown host on some networks will take + // 20-30 seconds; making this timeout short fixes the issue, but + // could lead to false negatives in the event that we are on GCE, but + // the metadata resolution was particularly slow. The latter case is + // "unlikely". + $resp = $httpHandler(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('GET', $checkUri, [self::FLAVOR_HEADER => 'Google']), ['timeout' => self::COMPUTE_PING_CONNECTION_TIMEOUT_S]); + return $resp->getHeaderLine(self::FLAVOR_HEADER) == 'Google'; + } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ClientException $e) { + } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ServerException $e) { + } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException $e) { + } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ConnectException $e) { + } + } + return \false; + } + /** + * Implements FetchAuthTokenInterface#fetchAuthToken. + * + * Fetches the auth tokens from the GCE metadata host if it is available. + * If $httpHandler is not specified a the default HttpHandler is used. + * + * @param callable $httpHandler callback which delivers psr7 request + * + * @return array A set of auth related metadata, based on the token type. + * + * Access tokens have the following keys: + * - access_token (string) + * - expires_in (int) + * - token_type (string) + * ID tokens have the following keys: + * - id_token (string) + * + * @throws \Exception + */ + public function fetchAuthToken(callable $httpHandler = null) + { + $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + if (!$this->hasCheckedOnGce) { + $this->isOnGce = self::onGce($httpHandler); + $this->hasCheckedOnGce = \true; + } + if (!$this->isOnGce) { + return array(); + // return an empty array with no access token + } + $response = $this->getFromMetadata($httpHandler, $this->tokenUri); + if ($this->targetAudience) { + return ['id_token' => $response]; + } + if (null === ($json = \json_decode($response, \true))) { + throw new \Exception('Invalid JSON response'); + } + $json['expires_at'] = \time() + $json['expires_in']; + // store this so we can retrieve it later + $this->lastReceivedToken = $json; + return $json; + } + /** + * @return string + */ + public function getCacheKey() + { + return self::cacheKey; + } + /** + * @return array|null + */ + public function getLastReceivedToken() + { + if ($this->lastReceivedToken) { + return ['access_token' => $this->lastReceivedToken['access_token'], 'expires_at' => $this->lastReceivedToken['expires_at']]; + } + return null; + } + /** + * Get the client name from GCE metadata. + * + * Subsequent calls will return a cached value. + * + * @param callable $httpHandler callback which delivers psr7 request + * @return string + */ + public function getClientName(callable $httpHandler = null) + { + if ($this->clientName) { + return $this->clientName; + } + $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + if (!$this->hasCheckedOnGce) { + $this->isOnGce = self::onGce($httpHandler); + $this->hasCheckedOnGce = \true; + } + if (!$this->isOnGce) { + return ''; + } + $this->clientName = $this->getFromMetadata($httpHandler, self::getClientNameUri($this->serviceAccountIdentity)); + return $this->clientName; + } + /** + * Sign a string using the default service account private key. + * + * This implementation uses IAM's signBlob API. + * + * @see https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/signBlob SignBlob + * + * @param string $stringToSign The string to sign. + * @param bool $forceOpenSsl [optional] Does not apply to this credentials + * type. + * @param string $accessToken The access token to use to sign the blob. If + * provided, saves a call to the metadata server for a new access + * token. **Defaults to** `null`. + * @return string + */ + public function signBlob($stringToSign, $forceOpenSsl = \false, $accessToken = null) + { + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + // Providing a signer is useful for testing, but it's undocumented + // because it's not something a user would generally need to do. + $signer = $this->iam ?: new \Google\Site_Kit_Dependencies\Google\Auth\Iam($httpHandler); + $email = $this->getClientName($httpHandler); + if (\is_null($accessToken)) { + $previousToken = $this->getLastReceivedToken(); + $accessToken = $previousToken ? $previousToken['access_token'] : $this->fetchAuthToken($httpHandler)['access_token']; + } + return $signer->signBlob($email, $accessToken, $stringToSign); + } + /** + * Fetch the default Project ID from compute engine. + * + * Returns null if called outside GCE. + * + * @param callable $httpHandler Callback which delivers psr7 request + * @return string|null + */ + public function getProjectId(callable $httpHandler = null) + { + if ($this->projectId) { + return $this->projectId; + } + $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + if (!$this->hasCheckedOnGce) { + $this->isOnGce = self::onGce($httpHandler); + $this->hasCheckedOnGce = \true; + } + if (!$this->isOnGce) { + return null; + } + $this->projectId = $this->getFromMetadata($httpHandler, self::getProjectIdUri()); + return $this->projectId; + } + /** + * Fetch the value of a GCE metadata server URI. + * + * @param callable $httpHandler An HTTP Handler to deliver PSR7 requests. + * @param string $uri The metadata URI. + * @return string + */ + private function getFromMetadata(callable $httpHandler, $uri) + { + $resp = $httpHandler(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('GET', $uri, [self::FLAVOR_HEADER => 'Google'])); + return (string) $resp->getBody(); + } + /** + * Get the quota project used for this API request + * + * @return string|null + */ + public function getQuotaProject() + { + return $this->quotaProject; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/IAMCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/IAMCredentials.php new file mode 100644 index 000000000..adc636ed0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/IAMCredentials.php @@ -0,0 +1,77 @@ +selector = $selector; + $this->token = $token; + } + /** + * export a callback function which updates runtime metadata. + * + * @return array updateMetadata function + */ + public function getUpdateMetadataFunc() + { + return array($this, 'updateMetadata'); + } + /** + * Updates metadata with the appropriate header metadata. + * + * @param array $metadata metadata hashmap + * @param string $unusedAuthUri optional auth uri + * @param callable $httpHandler callback which delivers psr7 request + * Note: this param is unused here, only included here for + * consistency with other credentials class + * + * @return array updated metadata hashmap + */ + public function updateMetadata($metadata, $unusedAuthUri = null, callable $httpHandler = null) + { + $metadata_copy = $metadata; + $metadata_copy[self::SELECTOR_KEY] = $this->selector; + $metadata_copy[self::TOKEN_KEY] = $this->token; + return $metadata_copy; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/InsecureCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/InsecureCredentials.php new file mode 100644 index 000000000..06241ca57 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/InsecureCredentials.php @@ -0,0 +1,64 @@ + '']; + /** + * Fetches the auth token. In this case it returns an empty string. + * + * @param callable $httpHandler + * @return array A set of auth related metadata, containing the following + * keys: + * - access_token (string) + */ + public function fetchAuthToken(callable $httpHandler = null) + { + return $this->token; + } + /** + * Returns the cache key. In this case it returns a null value, disabling + * caching. + * + * @return string|null + */ + public function getCacheKey() + { + return null; + } + /** + * Fetches the last received token. In this case, it returns the same empty string + * auth token. + * + * @return array + */ + public function getLastReceivedToken() + { + return $this->token; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountCredentials.php new file mode 100644 index 000000000..50dd472b3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountCredentials.php @@ -0,0 +1,274 @@ +push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'auth' => 'google_auth' // authorize all requests + * ]); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + */ +class ServiceAccountCredentials extends \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader implements \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface, \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface, \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface +{ + use ServiceAccountSignerTrait; + /** + * The OAuth2 instance used to conduct authorization. + * + * @var OAuth2 + */ + protected $auth; + /** + * The quota project associated with the JSON credentials + * + * @var string + */ + protected $quotaProject; + /* + * @var string|null + */ + protected $projectId; + /* + * @var array|null + */ + private $lastReceivedJwtAccessToken; + /* + * @var bool + */ + private $useJwtAccessWithScope = \false; + /* + * @var ServiceAccountJwtAccessCredentials|null + */ + private $jwtAccessCredentials; + /** + * Create a new ServiceAccountCredentials. + * + * @param string|array $scope the scope of the access request, expressed + * either as an Array or as a space-delimited String. + * @param string|array $jsonKey JSON credential file path or JSON credentials + * as an associative array + * @param string $sub an email address account to impersonate, in situations when + * the service account has been delegated domain wide access. + * @param string $targetAudience The audience for the ID token. + */ + public function __construct($scope, $jsonKey, $sub = null, $targetAudience = null) + { + if (\is_string($jsonKey)) { + if (!\file_exists($jsonKey)) { + throw new \InvalidArgumentException('file does not exist'); + } + $jsonKeyStream = \file_get_contents($jsonKey); + if (!($jsonKey = \json_decode($jsonKeyStream, \true))) { + throw new \LogicException('invalid json for auth config'); + } + } + if (!\array_key_exists('client_email', $jsonKey)) { + throw new \InvalidArgumentException('json key is missing the client_email field'); + } + if (!\array_key_exists('private_key', $jsonKey)) { + throw new \InvalidArgumentException('json key is missing the private_key field'); + } + if (\array_key_exists('quota_project_id', $jsonKey)) { + $this->quotaProject = (string) $jsonKey['quota_project_id']; + } + if ($scope && $targetAudience) { + throw new \InvalidArgumentException('Scope and targetAudience cannot both be supplied'); + } + $additionalClaims = []; + if ($targetAudience) { + $additionalClaims = ['target_audience' => $targetAudience]; + } + $this->auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['audience' => self::TOKEN_CREDENTIAL_URI, 'issuer' => $jsonKey['client_email'], 'scope' => $scope, 'signingAlgorithm' => 'RS256', 'signingKey' => $jsonKey['private_key'], 'sub' => $sub, 'tokenCredentialUri' => self::TOKEN_CREDENTIAL_URI, 'additionalClaims' => $additionalClaims]); + $this->projectId = isset($jsonKey['project_id']) ? $jsonKey['project_id'] : null; + } + /** + * When called, the ServiceAccountCredentials will use an instance of + * ServiceAccountJwtAccessCredentials to fetch (self-sign) an access token + * even when only scopes are supplied. Otherwise, + * ServiceAccountJwtAccessCredentials is only called when no scopes and an + * authUrl (audience) is suppled. + */ + public function useJwtAccessWithScope() + { + $this->useJwtAccessWithScope = \true; + } + /** + * @param callable $httpHandler + * + * @return array A set of auth related metadata, containing the following + * keys: + * - access_token (string) + * - expires_in (int) + * - token_type (string) + */ + public function fetchAuthToken(callable $httpHandler = null) + { + if ($this->useSelfSignedJwt()) { + $jwtCreds = $this->createJwtAccessCredentials(); + $accessToken = $jwtCreds->fetchAuthToken($httpHandler); + if ($lastReceivedToken = $jwtCreds->getLastReceivedToken()) { + // Keep self-signed JWTs in memory as the last received token + $this->lastReceivedJwtAccessToken = $lastReceivedToken; + } + return $accessToken; + } + return $this->auth->fetchAuthToken($httpHandler); + } + /** + * @return string + */ + public function getCacheKey() + { + $key = $this->auth->getIssuer() . ':' . $this->auth->getCacheKey(); + if ($sub = $this->auth->getSub()) { + $key .= ':' . $sub; + } + return $key; + } + /** + * @return array + */ + public function getLastReceivedToken() + { + // If self-signed JWTs are being used, fetch the last received token + // from memory. Else, fetch it from OAuth2 + return $this->useSelfSignedJwt() ? $this->lastReceivedJwtAccessToken : $this->auth->getLastReceivedToken(); + } + /** + * Get the project ID from the service account keyfile. + * + * Returns null if the project ID does not exist in the keyfile. + * + * @param callable $httpHandler Not used by this credentials type. + * @return string|null + */ + public function getProjectId(callable $httpHandler = null) + { + return $this->projectId; + } + /** + * Updates metadata with the authorization token. + * + * @param array $metadata metadata hashmap + * @param string $authUri optional auth uri + * @param callable $httpHandler callback which delivers psr7 request + * @return array updated metadata hashmap + */ + public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null) + { + // scope exists. use oauth implementation + if (!$this->useSelfSignedJwt()) { + return parent::updateMetadata($metadata, $authUri, $httpHandler); + } + $jwtCreds = $this->createJwtAccessCredentials(); + if ($this->auth->getScope()) { + // Prefer user-provided "scope" to "audience" + $updatedMetadata = $jwtCreds->updateMetadata($metadata, null, $httpHandler); + } else { + $updatedMetadata = $jwtCreds->updateMetadata($metadata, $authUri, $httpHandler); + } + if ($lastReceivedToken = $jwtCreds->getLastReceivedToken()) { + // Keep self-signed JWTs in memory as the last received token + $this->lastReceivedJwtAccessToken = $lastReceivedToken; + } + return $updatedMetadata; + } + private function createJwtAccessCredentials() + { + if (!$this->jwtAccessCredentials) { + // Create credentials for self-signing a JWT (JwtAccess) + $credJson = array('private_key' => $this->auth->getSigningKey(), 'client_email' => $this->auth->getIssuer()); + $this->jwtAccessCredentials = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\ServiceAccountJwtAccessCredentials($credJson, $this->auth->getScope()); + } + return $this->jwtAccessCredentials; + } + /** + * @param string $sub an email address account to impersonate, in situations when + * the service account has been delegated domain wide access. + */ + public function setSub($sub) + { + $this->auth->setSub($sub); + } + /** + * Get the client name from the keyfile. + * + * In this case, it returns the keyfile's client_email key. + * + * @param callable $httpHandler Not used by this credentials type. + * @return string + */ + public function getClientName(callable $httpHandler = null) + { + return $this->auth->getIssuer(); + } + /** + * Get the quota project used for this API request + * + * @return string|null + */ + public function getQuotaProject() + { + return $this->quotaProject; + } + private function useSelfSignedJwt() + { + // If claims are set, this call is for "id_tokens" + if ($this->auth->getAdditionalClaims()) { + return \false; + } + // When true, ServiceAccountCredentials will always use JwtAccess for access tokens + if ($this->useJwtAccessWithScope) { + return \true; + } + return \is_null($this->auth->getScope()); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php new file mode 100644 index 000000000..9e743b6b0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php @@ -0,0 +1,167 @@ +quotaProject = (string) $jsonKey['quota_project_id']; + } + $this->auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['issuer' => $jsonKey['client_email'], 'sub' => $jsonKey['client_email'], 'signingAlgorithm' => 'RS256', 'signingKey' => $jsonKey['private_key'], 'scope' => $scope]); + $this->projectId = isset($jsonKey['project_id']) ? $jsonKey['project_id'] : null; + } + /** + * Updates metadata with the authorization token. + * + * @param array $metadata metadata hashmap + * @param string $authUri optional auth uri + * @param callable $httpHandler callback which delivers psr7 request + * @return array updated metadata hashmap + */ + public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null) + { + $scope = $this->auth->getScope(); + if (empty($authUri) && empty($scope)) { + return $metadata; + } + $this->auth->setAudience($authUri); + return parent::updateMetadata($metadata, $authUri, $httpHandler); + } + /** + * Implements FetchAuthTokenInterface#fetchAuthToken. + * + * @param callable $httpHandler + * + * @return array|void A set of auth related metadata, containing the + * following keys: + * - access_token (string) + */ + public function fetchAuthToken(callable $httpHandler = null) + { + $audience = $this->auth->getAudience(); + $scope = $this->auth->getScope(); + if (empty($audience) && empty($scope)) { + return null; + } + if (!empty($audience) && !empty($scope)) { + throw new \UnexpectedValueException('Cannot sign both audience and scope in JwtAccess'); + } + $access_token = $this->auth->toJwt(); + // Set the self-signed access token in OAuth2 for getLastReceivedToken + $this->auth->setAccessToken($access_token); + return array('access_token' => $access_token); + } + /** + * @return string + */ + public function getCacheKey() + { + return $this->auth->getCacheKey(); + } + /** + * @return array + */ + public function getLastReceivedToken() + { + return $this->auth->getLastReceivedToken(); + } + /** + * Get the project ID from the service account keyfile. + * + * Returns null if the project ID does not exist in the keyfile. + * + * @param callable $httpHandler Not used by this credentials type. + * @return string|null + */ + public function getProjectId(callable $httpHandler = null) + { + return $this->projectId; + } + /** + * Get the client name from the keyfile. + * + * In this case, it returns the keyfile's client_email key. + * + * @param callable $httpHandler Not used by this credentials type. + * @return string + */ + public function getClientName(callable $httpHandler = null) + { + return $this->auth->getIssuer(); + } + /** + * Get the quota project used for this API request + * + * @return string|null + */ + public function getQuotaProject() + { + return $this->quotaProject; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/UserRefreshCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/UserRefreshCredentials.php new file mode 100644 index 000000000..506946a65 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/UserRefreshCredentials.php @@ -0,0 +1,117 @@ +auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['clientId' => $jsonKey['client_id'], 'clientSecret' => $jsonKey['client_secret'], 'refresh_token' => $jsonKey['refresh_token'], 'scope' => $scope, 'tokenCredentialUri' => self::TOKEN_CREDENTIAL_URI]); + if (\array_key_exists('quota_project_id', $jsonKey)) { + $this->quotaProject = (string) $jsonKey['quota_project_id']; + } + } + /** + * @param callable $httpHandler + * + * @return array A set of auth related metadata, containing the following + * keys: + * - access_token (string) + * - expires_in (int) + * - scope (string) + * - token_type (string) + * - id_token (string) + */ + public function fetchAuthToken(callable $httpHandler = null) + { + return $this->auth->fetchAuthToken($httpHandler); + } + /** + * @return string + */ + public function getCacheKey() + { + return $this->auth->getClientId() . ':' . $this->auth->getCacheKey(); + } + /** + * @return array + */ + public function getLastReceivedToken() + { + return $this->auth->getLastReceivedToken(); + } + /** + * Get the quota project used for this API request + * + * @return string|null + */ + public function getQuotaProject() + { + return $this->quotaProject; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/CredentialsLoader.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CredentialsLoader.php new file mode 100644 index 000000000..290a24c06 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CredentialsLoader.php @@ -0,0 +1,261 @@ +setDefaultOption('auth', 'google_auth'); + $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\AuthTokenSubscriber($fetcher, $httpHandler, $tokenCallback); + $client->getEmitter()->attach($subscriber); + return $client; + } + $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($fetcher, $httpHandler, $tokenCallback); + $stack = \Google\Site_Kit_Dependencies\GuzzleHttp\HandlerStack::create(); + $stack->push($middleware); + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(['handler' => $stack, 'auth' => 'google_auth'] + $httpClientOptions); + } + /** + * Create a new instance of InsecureCredentials. + * + * @return InsecureCredentials + */ + public static function makeInsecureCredentials() + { + return new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\InsecureCredentials(); + } + /** + * export a callback function which updates runtime metadata. + * + * @return array updateMetadata function + * @deprecated + */ + public function getUpdateMetadataFunc() + { + return array($this, 'updateMetadata'); + } + /** + * Updates metadata with the authorization token. + * + * @param array $metadata metadata hashmap + * @param string $authUri optional auth uri + * @param callable $httpHandler callback which delivers psr7 request + * @return array updated metadata hashmap + */ + public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null) + { + if (isset($metadata[self::AUTH_METADATA_KEY])) { + // Auth metadata has already been set + return $metadata; + } + $result = $this->fetchAuthToken($httpHandler); + if (!isset($result['access_token'])) { + return $metadata; + } + $metadata_copy = $metadata; + $metadata_copy[self::AUTH_METADATA_KEY] = array('Bearer ' . $result['access_token']); + return $metadata_copy; + } + /** + * Gets a callable which returns the default device certification. + * + * @throws UnexpectedValueException + * @return callable|null + */ + public static function getDefaultClientCertSource() + { + if (!($clientCertSourceJson = self::loadDefaultClientCertSourceFile())) { + return null; + } + $clientCertSourceCmd = $clientCertSourceJson['cert_provider_command']; + return function () use($clientCertSourceCmd) { + $cmd = \array_map('escapeshellarg', $clientCertSourceCmd); + \exec(\implode(' ', $cmd), $output, $returnVar); + if (0 === $returnVar) { + return \implode(\PHP_EOL, $output); + } + throw new \RuntimeException('"cert_provider_command" failed with a nonzero exit code'); + }; + } + /** + * Determines whether or not the default device certificate should be loaded. + * + * @return bool + */ + public static function shouldLoadClientCertSource() + { + return \filter_var(\getenv(self::MTLS_CERT_ENV_VAR), \FILTER_VALIDATE_BOOLEAN); + } + private static function loadDefaultClientCertSourceFile() + { + $rootEnv = self::isOnWindows() ? 'APPDATA' : 'HOME'; + $path = \sprintf('%s/%s', \getenv($rootEnv), self::MTLS_WELL_KNOWN_PATH); + if (!\file_exists($path)) { + return null; + } + $jsonKey = \file_get_contents($path); + $clientCertSourceJson = \json_decode($jsonKey, \true); + if (!$clientCertSourceJson) { + throw new \UnexpectedValueException('Invalid client cert source JSON'); + } + if (!isset($clientCertSourceJson['cert_provider_command'])) { + throw new \UnexpectedValueException('cert source requires "cert_provider_command"'); + } + if (!\is_array($clientCertSourceJson['cert_provider_command'])) { + throw new \UnexpectedValueException('cert source expects "cert_provider_command" to be an array'); + } + return $clientCertSourceJson; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenCache.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenCache.php new file mode 100644 index 000000000..521c77962 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenCache.php @@ -0,0 +1,211 @@ +fetcher = $fetcher; + $this->cache = $cache; + $this->cacheConfig = \array_merge(['lifetime' => 1500, 'prefix' => ''], (array) $cacheConfig); + } + /** + * Implements FetchAuthTokenInterface#fetchAuthToken. + * + * Checks the cache for a valid auth token and fetches the auth tokens + * from the supplied fetcher. + * + * @param callable $httpHandler callback which delivers psr7 request + * @return array the response + * @throws \Exception + */ + public function fetchAuthToken(callable $httpHandler = null) + { + if ($cached = $this->fetchAuthTokenFromCache()) { + return $cached; + } + $auth_token = $this->fetcher->fetchAuthToken($httpHandler); + $this->saveAuthTokenInCache($auth_token); + return $auth_token; + } + /** + * @return string + */ + public function getCacheKey() + { + return $this->getFullCacheKey($this->fetcher->getCacheKey()); + } + /** + * @return array|null + */ + public function getLastReceivedToken() + { + return $this->fetcher->getLastReceivedToken(); + } + /** + * Get the client name from the fetcher. + * + * @param callable $httpHandler An HTTP handler to deliver PSR7 requests. + * @return string + */ + public function getClientName(callable $httpHandler = null) + { + if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface) { + throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\SignBlobInterface'); + } + return $this->fetcher->getClientName($httpHandler); + } + /** + * Sign a blob using the fetcher. + * + * @param string $stringToSign The string to sign. + * @param bool $forceOpenSsl Require use of OpenSSL for local signing. Does + * not apply to signing done using external services. **Defaults to** + * `false`. + * @return string The resulting signature. + * @throws \RuntimeException If the fetcher does not implement + * `Google\Auth\SignBlobInterface`. + */ + public function signBlob($stringToSign, $forceOpenSsl = \false) + { + if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface) { + throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\SignBlobInterface'); + } + // Pass the access token from cache to GCECredentials for signing a blob. + // This saves a call to the metadata server when a cached token exists. + if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials) { + $cached = $this->fetchAuthTokenFromCache(); + $accessToken = isset($cached['access_token']) ? $cached['access_token'] : null; + return $this->fetcher->signBlob($stringToSign, $forceOpenSsl, $accessToken); + } + return $this->fetcher->signBlob($stringToSign, $forceOpenSsl); + } + /** + * Get the quota project used for this API request from the credentials + * fetcher. + * + * @return string|null + */ + public function getQuotaProject() + { + if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) { + return $this->fetcher->getQuotaProject(); + } + } + /* + * Get the Project ID from the fetcher. + * + * @param callable $httpHandler Callback which delivers psr7 request + * @return string|null + * @throws \RuntimeException If the fetcher does not implement + * `Google\Auth\ProvidesProjectIdInterface`. + */ + public function getProjectId(callable $httpHandler = null) + { + if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface) { + throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\ProvidesProjectIdInterface'); + } + return $this->fetcher->getProjectId($httpHandler); + } + /** + * Updates metadata with the authorization token. + * + * @param array $metadata metadata hashmap + * @param string $authUri optional auth uri + * @param callable $httpHandler callback which delivers psr7 request + * @return array updated metadata hashmap + * @throws \RuntimeException If the fetcher does not implement + * `Google\Auth\UpdateMetadataInterface`. + */ + public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null) + { + if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\UpdateMetadataInterface) { + throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\UpdateMetadataInterface'); + } + $cached = $this->fetchAuthTokenFromCache($authUri); + if ($cached) { + // Set the access token in the `Authorization` metadata header so + // the downstream call to updateMetadata know they don't need to + // fetch another token. + if (isset($cached['access_token'])) { + $metadata[self::AUTH_METADATA_KEY] = ['Bearer ' . $cached['access_token']]; + } + } + $newMetadata = $this->fetcher->updateMetadata($metadata, $authUri, $httpHandler); + if (!$cached && ($token = $this->fetcher->getLastReceivedToken())) { + $this->saveAuthTokenInCache($token, $authUri); + } + return $newMetadata; + } + private function fetchAuthTokenFromCache($authUri = null) + { + // Use the cached value if its available. + // + // TODO: correct caching; update the call to setCachedValue to set the expiry + // to the value returned with the auth token. + // + // TODO: correct caching; enable the cache to be cleared. + // if $authUri is set, use it as the cache key + $cacheKey = $authUri ? $this->getFullCacheKey($authUri) : $this->fetcher->getCacheKey(); + $cached = $this->getCachedValue($cacheKey); + if (\is_array($cached)) { + if (empty($cached['expires_at'])) { + // If there is no expiration data, assume token is not expired. + // (for JwtAccess and ID tokens) + return $cached; + } + if (\time() < $cached['expires_at']) { + // access token is not expired + return $cached; + } + } + return null; + } + private function saveAuthTokenInCache($authToken, $authUri = null) + { + if (isset($authToken['access_token']) || isset($authToken['id_token'])) { + // if $authUri is set, use it as the cache key + $cacheKey = $authUri ? $this->getFullCacheKey($authUri) : $this->fetcher->getCacheKey(); + $this->setCachedValue($cacheKey, $authToken); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenInterface.php new file mode 100644 index 000000000..c1589d440 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenInterface.php @@ -0,0 +1,52 @@ +cache = $cache; + $this->cacheConfig = \array_merge(['lifetime' => 1500, 'prefix' => ''], (array) $cacheConfig); + } + /** + * Caches the result of onGce so the metadata server is not called multiple + * times. + * + * @param callable $httpHandler callback which delivers psr7 request + * @return bool True if this a GCEInstance, false otherwise + */ + public function onGce(callable $httpHandler = null) + { + if (\is_null($this->cache)) { + return \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials::onGce($httpHandler); + } + $cacheKey = self::GCE_CACHE_KEY; + $onGce = $this->getCachedValue($cacheKey); + if (\is_null($onGce)) { + $onGce = \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials::onGce($httpHandler); + $this->setCachedValue($cacheKey, $onGce); + } + return $onGce; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/GetQuotaProjectInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/GetQuotaProjectInterface.php new file mode 100644 index 000000000..d0b184b07 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/GetQuotaProjectInterface.php @@ -0,0 +1,32 @@ +client = $client; + } + /** + * Accepts a PSR-7 Request and an array of options and returns a PSR-7 response. + * + * @param RequestInterface $request + * @param array $options + * @return ResponseInterface + */ + public function __invoke(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = []) + { + $response = $this->client->send($this->createGuzzle5Request($request, $options)); + return $this->createPsr7Response($response); + } + /** + * Accepts a PSR-7 request and an array of options and returns a PromiseInterface + * + * @param RequestInterface $request + * @param array $options + * @return Promise + */ + public function async(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = []) + { + if (!\class_exists('Google\\Site_Kit_Dependencies\\GuzzleHttp\\Promise\\Promise')) { + throw new \Exception('Install guzzlehttp/promises to use async with Guzzle 5'); + } + $futureResponse = $this->client->send($this->createGuzzle5Request($request, ['future' => \true] + $options)); + $promise = new \Google\Site_Kit_Dependencies\GuzzleHttp\Promise\Promise(function () use($futureResponse) { + try { + $futureResponse->wait(); + } catch (\Exception $e) { + // The promise is already delivered when the exception is + // thrown, so don't rethrow it. + } + }, [$futureResponse, 'cancel']); + $futureResponse->then([$promise, 'resolve'], [$promise, 'reject']); + return $promise->then(function (\Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response) { + // Adapt the Guzzle 5 Response to a PSR-7 Response. + return $this->createPsr7Response($response); + }, function (\Exception $e) { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Promise\RejectedPromise($e); + }); + } + private function createGuzzle5Request(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) + { + return $this->client->createRequest($request->getMethod(), $request->getUri(), \array_merge_recursive(['headers' => $request->getHeaders(), 'body' => $request->getBody()], $options)); + } + private function createPsr7Response(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response) + { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response($response->getStatusCode(), $response->getHeaders() ?: [], $response->getBody(), $response->getProtocolVersion(), $response->getReasonPhrase()); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle6HttpHandler.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle6HttpHandler.php new file mode 100644 index 000000000..b7029eabc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle6HttpHandler.php @@ -0,0 +1,59 @@ +client = $client; + } + /** + * Accepts a PSR-7 request and an array of options and returns a PSR-7 response. + * + * @param RequestInterface $request + * @param array $options + * @return ResponseInterface + */ + public function __invoke(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = []) + { + return $this->client->send($request, $options); + } + /** + * Accepts a PSR-7 request and an array of options and returns a PromiseInterface + * + * @param RequestInterface $request + * @param array $options + * + * @return \GuzzleHttp\Promise\PromiseInterface + */ + public function async(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = []) + { + return $this->client->sendAsync($request, $options); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle7HttpHandler.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle7HttpHandler.php new file mode 100644 index 000000000..6cc394fed --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle7HttpHandler.php @@ -0,0 +1,22 @@ +httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + } + /** + * Sign a string using the IAM signBlob API. + * + * Note that signing using IAM requires your service account to have the + * `iam.serviceAccounts.signBlob` permission, part of the "Service Account + * Token Creator" IAM role. + * + * @param string $email The service account email. + * @param string $accessToken An access token from the service account. + * @param string $stringToSign The string to be signed. + * @param array $delegates [optional] A list of service account emails to + * add to the delegate chain. If omitted, the value of `$email` will + * be used. + * @return string The signed string, base64-encoded. + */ + public function signBlob($email, $accessToken, $stringToSign, array $delegates = []) + { + $httpHandler = $this->httpHandler; + $name = \sprintf(self::SERVICE_ACCOUNT_NAME, $email); + $uri = self::IAM_API_ROOT . '/' . \sprintf(self::SIGN_BLOB_PATH, $name); + if ($delegates) { + foreach ($delegates as &$delegate) { + $delegate = \sprintf(self::SERVICE_ACCOUNT_NAME, $delegate); + } + } else { + $delegates = [$name]; + } + $body = ['delegates' => $delegates, 'payload' => \base64_encode($stringToSign)]; + $headers = ['Authorization' => 'Bearer ' . $accessToken]; + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', $uri, $headers, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\json_encode($body))); + $res = $httpHandler($request); + $body = \json_decode((string) $res->getBody(), \true); + return $body['signedBlob']; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/AuthTokenMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/AuthTokenMiddleware.php new file mode 100644 index 000000000..326e7c01c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/AuthTokenMiddleware.php @@ -0,0 +1,125 @@ +' + */ +class AuthTokenMiddleware +{ + /** + * @var callback + */ + private $httpHandler; + /** + * @var FetchAuthTokenInterface + */ + private $fetcher; + /** + * @var callable + */ + private $tokenCallback; + /** + * Creates a new AuthTokenMiddleware. + * + * @param FetchAuthTokenInterface $fetcher is used to fetch the auth token + * @param callable $httpHandler (optional) callback which delivers psr7 request + * @param callable $tokenCallback (optional) function to be called when a new token is fetched. + */ + public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenInterface $fetcher, callable $httpHandler = null, callable $tokenCallback = null) + { + $this->fetcher = $fetcher; + $this->httpHandler = $httpHandler; + $this->tokenCallback = $tokenCallback; + } + /** + * Updates the request with an Authorization header when auth is 'google_auth'. + * + * use Google\Auth\Middleware\AuthTokenMiddleware; + * use Google\Auth\OAuth2; + * use GuzzleHttp\Client; + * use GuzzleHttp\HandlerStack; + * + * $config = [...]; + * $oauth2 = new OAuth2($config) + * $middleware = new AuthTokenMiddleware($oauth2); + * $stack = HandlerStack::create(); + * $stack->push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'auth' => 'google_auth' // authorize all requests + * ]); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + * + * @param callable $handler + * @return \Closure + */ + public function __invoke(callable $handler) + { + return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) { + // Requests using "auth"="google_auth" will be authorized. + if (!isset($options['auth']) || $options['auth'] !== 'google_auth') { + return $handler($request, $options); + } + $request = $request->withHeader('authorization', 'Bearer ' . $this->fetchToken()); + if ($quotaProject = $this->getQuotaProject()) { + $request = $request->withHeader(\Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface::X_GOOG_USER_PROJECT_HEADER, $quotaProject); + } + return $handler($request, $options); + }; + } + /** + * Call fetcher to fetch the token. + * + * @return string + */ + private function fetchToken() + { + $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler); + if (\array_key_exists('access_token', $auth_tokens)) { + // notify the callback if applicable + if ($this->tokenCallback) { + \call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']); + } + return $auth_tokens['access_token']; + } + if (\array_key_exists('id_token', $auth_tokens)) { + return $auth_tokens['id_token']; + } + } + private function getQuotaProject() + { + if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) { + return $this->fetcher->getQuotaProject(); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php new file mode 100644 index 000000000..4683b5f2d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php @@ -0,0 +1,125 @@ +' + */ +class ProxyAuthTokenMiddleware +{ + /** + * @var callback + */ + private $httpHandler; + /** + * @var FetchAuthTokenInterface + */ + private $fetcher; + /** + * @var callable + */ + private $tokenCallback; + /** + * Creates a new ProxyAuthTokenMiddleware. + * + * @param FetchAuthTokenInterface $fetcher is used to fetch the auth token + * @param callable $httpHandler (optional) callback which delivers psr7 request + * @param callable $tokenCallback (optional) function to be called when a new token is fetched. + */ + public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenInterface $fetcher, callable $httpHandler = null, callable $tokenCallback = null) + { + $this->fetcher = $fetcher; + $this->httpHandler = $httpHandler; + $this->tokenCallback = $tokenCallback; + } + /** + * Updates the request with an Authorization header when auth is 'google_auth'. + * + * use Google\Auth\Middleware\ProxyAuthTokenMiddleware; + * use Google\Auth\OAuth2; + * use GuzzleHttp\Client; + * use GuzzleHttp\HandlerStack; + * + * $config = [...]; + * $oauth2 = new OAuth2($config) + * $middleware = new ProxyAuthTokenMiddleware($oauth2); + * $stack = HandlerStack::create(); + * $stack->push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'proxy_auth' => 'google_auth' // authorize all requests + * ]); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + * + * @param callable $handler + * @return \Closure + */ + public function __invoke(callable $handler) + { + return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) { + // Requests using "proxy_auth"="google_auth" will be authorized. + if (!isset($options['proxy_auth']) || $options['proxy_auth'] !== 'google_auth') { + return $handler($request, $options); + } + $request = $request->withHeader('proxy-authorization', 'Bearer ' . $this->fetchToken()); + if ($quotaProject = $this->getQuotaProject()) { + $request = $request->withHeader(\Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface::X_GOOG_USER_PROJECT_HEADER, $quotaProject); + } + return $handler($request, $options); + }; + } + /** + * Call fetcher to fetch the token. + * + * @return string + */ + private function fetchToken() + { + $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler); + if (\array_key_exists('access_token', $auth_tokens)) { + // notify the callback if applicable + if ($this->tokenCallback) { + \call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']); + } + return $auth_tokens['access_token']; + } + if (\array_key_exists('id_token', $auth_tokens)) { + return $auth_tokens['id_token']; + } + } + private function getQuotaProject() + { + if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) { + return $this->fetcher->getQuotaProject(); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php new file mode 100644 index 000000000..a9dd55d44 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php @@ -0,0 +1,148 @@ +' + */ +class ScopedAccessTokenMiddleware +{ + use CacheTrait; + const DEFAULT_CACHE_LIFETIME = 1500; + /** + * @var CacheItemPoolInterface + */ + private $cache; + /** + * @var array configuration + */ + private $cacheConfig; + /** + * @var callable + */ + private $tokenFunc; + /** + * @var array|string + */ + private $scopes; + /** + * Creates a new ScopedAccessTokenMiddleware. + * + * @param callable $tokenFunc a token generator function + * @param array|string $scopes the token authentication scopes + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache an implementation of CacheItemPoolInterface + */ + public function __construct(callable $tokenFunc, $scopes, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null) + { + $this->tokenFunc = $tokenFunc; + if (!(\is_string($scopes) || \is_array($scopes))) { + throw new \InvalidArgumentException('wants scope should be string or array'); + } + $this->scopes = $scopes; + if (!\is_null($cache)) { + $this->cache = $cache; + $this->cacheConfig = \array_merge(['lifetime' => self::DEFAULT_CACHE_LIFETIME, 'prefix' => ''], $cacheConfig); + } + } + /** + * Updates the request with an Authorization header when auth is 'scoped'. + * + * E.g this could be used to authenticate using the AppEngine + * AppIdentityService. + * + * use google\appengine\api\app_identity\AppIdentityService; + * use Google\Auth\Middleware\ScopedAccessTokenMiddleware; + * use GuzzleHttp\Client; + * use GuzzleHttp\HandlerStack; + * + * $scope = 'https://www.googleapis.com/auth/taskqueue' + * $middleware = new ScopedAccessTokenMiddleware( + * 'AppIdentityService::getAccessToken', + * $scope, + * [ 'prefix' => 'Google\Auth\ScopedAccessToken::' ], + * $cache = new Memcache() + * ); + * $stack = HandlerStack::create(); + * $stack->push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_url' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'auth' => 'scoped' // authorize all requests + * ]); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + * + * @param callable $handler + * @return \Closure + */ + public function __invoke(callable $handler) + { + return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) { + // Requests using "auth"="scoped" will be authorized. + if (!isset($options['auth']) || $options['auth'] !== 'scoped') { + return $handler($request, $options); + } + $request = $request->withHeader('authorization', 'Bearer ' . $this->fetchToken()); + return $handler($request, $options); + }; + } + /** + * @return string + */ + private function getCacheKey() + { + $key = null; + if (\is_string($this->scopes)) { + $key .= $this->scopes; + } elseif (\is_array($this->scopes)) { + $key .= \implode(':', $this->scopes); + } + return $key; + } + /** + * Determine if token is available in the cache, if not call tokenFunc to + * fetch it. + * + * @return string + */ + private function fetchToken() + { + $cacheKey = $this->getCacheKey(); + $cached = $this->getCachedValue($cacheKey); + if (!empty($cached)) { + return $cached; + } + $token = \call_user_func($this->tokenFunc, $this->scopes); + $this->setCachedValue($cacheKey, $token); + return $token; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/SimpleMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/SimpleMiddleware.php new file mode 100644 index 000000000..8441bfd5d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/SimpleMiddleware.php @@ -0,0 +1,86 @@ +config = \array_merge(['key' => null], $config); + } + /** + * Updates the request query with the developer key if auth is set to simple. + * + * use Google\Auth\Middleware\SimpleMiddleware; + * use GuzzleHttp\Client; + * use GuzzleHttp\HandlerStack; + * + * $my_key = 'is not the same as yours'; + * $middleware = new SimpleMiddleware(['key' => $my_key]); + * $stack = HandlerStack::create(); + * $stack->push($middleware); + * + * $client = new Client([ + * 'handler' => $stack, + * 'base_uri' => 'https://www.googleapis.com/discovery/v1/', + * 'auth' => 'simple' + * ]); + * + * $res = $client->get('drive/v2/rest'); + * + * @param callable $handler + * @return \Closure + */ + public function __invoke(callable $handler) + { + return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) { + // Requests using "auth"="scoped" will be authorized. + if (!isset($options['auth']) || $options['auth'] !== 'simple') { + return $handler($request, $options); + } + $query = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::parse($request->getUri()->getQuery()); + $params = \array_merge($query, $this->config); + $uri = $request->getUri()->withQuery(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build($params)); + $request = $request->withUri($uri); + return $handler($request, $options); + }; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/OAuth2.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/OAuth2.php new file mode 100644 index 000000000..d3552989e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/OAuth2.php @@ -0,0 +1,1201 @@ + self::DEFAULT_EXPIRY_SECONDS, 'extensionParams' => [], 'authorizationUri' => null, 'redirectUri' => null, 'tokenCredentialUri' => null, 'state' => null, 'username' => null, 'password' => null, 'clientId' => null, 'clientSecret' => null, 'issuer' => null, 'sub' => null, 'audience' => null, 'signingKey' => null, 'signingKeyId' => null, 'signingAlgorithm' => null, 'scope' => null, 'additionalClaims' => []], $config); + $this->setAuthorizationUri($opts['authorizationUri']); + $this->setRedirectUri($opts['redirectUri']); + $this->setTokenCredentialUri($opts['tokenCredentialUri']); + $this->setState($opts['state']); + $this->setUsername($opts['username']); + $this->setPassword($opts['password']); + $this->setClientId($opts['clientId']); + $this->setClientSecret($opts['clientSecret']); + $this->setIssuer($opts['issuer']); + $this->setSub($opts['sub']); + $this->setExpiry($opts['expiry']); + $this->setAudience($opts['audience']); + $this->setSigningKey($opts['signingKey']); + $this->setSigningKeyId($opts['signingKeyId']); + $this->setSigningAlgorithm($opts['signingAlgorithm']); + $this->setScope($opts['scope']); + $this->setExtensionParams($opts['extensionParams']); + $this->setAdditionalClaims($opts['additionalClaims']); + $this->updateToken($opts); + } + /** + * Verifies the idToken if present. + * + * - if none is present, return null + * - if present, but invalid, raises DomainException. + * - otherwise returns the payload in the idtoken as a PHP object. + * + * The behavior of this method varies depending on the version of + * `firebase/php-jwt` you are using. In versions lower than 3.0.0, if + * `$publicKey` is null, the key is decoded without being verified. In + * newer versions, if a public key is not given, this method will throw an + * `\InvalidArgumentException`. + * + * @param string $publicKey The public key to use to authenticate the token + * @param array $allowed_algs List of supported verification algorithms + * @throws \DomainException if the token is missing an audience. + * @throws \DomainException if the audience does not match the one set in + * the OAuth2 class instance. + * @throws \UnexpectedValueException If the token is invalid + * @throws SignatureInvalidException If the signature is invalid. + * @throws BeforeValidException If the token is not yet valid. + * @throws ExpiredException If the token has expired. + * @return null|object + */ + public function verifyIdToken($publicKey = null, $allowed_algs = array()) + { + $idToken = $this->getIdToken(); + if (\is_null($idToken)) { + return null; + } + $resp = $this->jwtDecode($idToken, $publicKey, $allowed_algs); + if (!\property_exists($resp, 'aud')) { + throw new \DomainException('No audience found the id token'); + } + if ($resp->aud != $this->getAudience()) { + throw new \DomainException('Wrong audience present in the id token'); + } + return $resp; + } + /** + * Obtains the encoded jwt from the instance data. + * + * @param array $config array optional configuration parameters + * @return string + */ + public function toJwt(array $config = []) + { + if (\is_null($this->getSigningKey())) { + throw new \DomainException('No signing key available'); + } + if (\is_null($this->getSigningAlgorithm())) { + throw new \DomainException('No signing algorithm specified'); + } + $now = \time(); + $opts = \array_merge(['skew' => self::DEFAULT_SKEW_SECONDS], $config); + $assertion = ['iss' => $this->getIssuer(), 'exp' => $now + $this->getExpiry(), 'iat' => $now - $opts['skew']]; + foreach ($assertion as $k => $v) { + if (\is_null($v)) { + throw new \DomainException($k . ' should not be null'); + } + } + if (!\is_null($this->getAudience())) { + $assertion['aud'] = $this->getAudience(); + } + if (!\is_null($this->getScope())) { + $assertion['scope'] = $this->getScope(); + } + if (empty($assertion['scope']) && empty($assertion['aud'])) { + throw new \DomainException('one of scope or aud should not be null'); + } + if (!\is_null($this->getSub())) { + $assertion['sub'] = $this->getSub(); + } + $assertion += $this->getAdditionalClaims(); + return $this->jwtEncode($assertion, $this->getSigningKey(), $this->getSigningAlgorithm(), $this->getSigningKeyId()); + } + /** + * Generates a request for token credentials. + * + * @return RequestInterface the authorization Url. + */ + public function generateCredentialsRequest() + { + $uri = $this->getTokenCredentialUri(); + if (\is_null($uri)) { + throw new \DomainException('No token credential URI was set.'); + } + $grantType = $this->getGrantType(); + $params = array('grant_type' => $grantType); + switch ($grantType) { + case 'authorization_code': + $params['code'] = $this->getCode(); + $params['redirect_uri'] = $this->getRedirectUri(); + $this->addClientCredentials($params); + break; + case 'password': + $params['username'] = $this->getUsername(); + $params['password'] = $this->getPassword(); + $this->addClientCredentials($params); + break; + case 'refresh_token': + $params['refresh_token'] = $this->getRefreshToken(); + $this->addClientCredentials($params); + break; + case self::JWT_URN: + $params['assertion'] = $this->toJwt(); + break; + default: + if (!\is_null($this->getRedirectUri())) { + # Grant type was supposed to be 'authorization_code', as there + # is a redirect URI. + throw new \DomainException('Missing authorization code'); + } + unset($params['grant_type']); + if (!\is_null($grantType)) { + $params['grant_type'] = $grantType; + } + $params = \array_merge($params, $this->getExtensionParams()); + } + $headers = ['Cache-Control' => 'no-store', 'Content-Type' => 'application/x-www-form-urlencoded']; + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', $uri, $headers, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build($params)); + } + /** + * Fetches the auth tokens based on the current state. + * + * @param callable $httpHandler callback which delivers psr7 request + * @return array the response + */ + public function fetchAuthToken(callable $httpHandler = null) + { + if (\is_null($httpHandler)) { + $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient()); + } + $response = $httpHandler($this->generateCredentialsRequest()); + $credentials = $this->parseTokenResponse($response); + $this->updateToken($credentials); + return $credentials; + } + /** + * Obtains a key that can used to cache the results of #fetchAuthToken. + * + * The key is derived from the scopes. + * + * @return string a key that may be used to cache the auth token. + */ + public function getCacheKey() + { + if (\is_array($this->scope)) { + return \implode(':', $this->scope); + } + if ($this->audience) { + return $this->audience; + } + // If scope has not set, return null to indicate no caching. + return null; + } + /** + * Parses the fetched tokens. + * + * @param ResponseInterface $resp the response. + * @return array the tokens parsed from the response body. + * @throws \Exception + */ + public function parseTokenResponse(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $resp) + { + $body = (string) $resp->getBody(); + if ($resp->hasHeader('Content-Type') && $resp->getHeaderLine('Content-Type') == 'application/x-www-form-urlencoded') { + $res = array(); + \parse_str($body, $res); + return $res; + } + // Assume it's JSON; if it's not throw an exception + if (null === ($res = \json_decode($body, \true))) { + throw new \Exception('Invalid JSON response'); + } + return $res; + } + /** + * Updates an OAuth 2.0 client. + * + * Example: + * ``` + * $oauth->updateToken([ + * 'refresh_token' => 'n4E9O119d', + * 'access_token' => 'FJQbwq9', + * 'expires_in' => 3600 + * ]); + * ``` + * + * @param array $config + * The configuration parameters related to the token. + * + * - refresh_token + * The refresh token associated with the access token + * to be refreshed. + * + * - access_token + * The current access token for this client. + * + * - id_token + * The current ID token for this client. + * + * - expires_in + * The time in seconds until access token expiration. + * + * - expires_at + * The time as an integer number of seconds since the Epoch + * + * - issued_at + * The timestamp that the token was issued at. + */ + public function updateToken(array $config) + { + $opts = \array_merge(['extensionParams' => [], 'access_token' => null, 'id_token' => null, 'expires_in' => null, 'expires_at' => null, 'issued_at' => null], $config); + $this->setExpiresAt($opts['expires_at']); + $this->setExpiresIn($opts['expires_in']); + // By default, the token is issued at `Time.now` when `expiresIn` is set, + // but this can be used to supply a more precise time. + if (!\is_null($opts['issued_at'])) { + $this->setIssuedAt($opts['issued_at']); + } + $this->setAccessToken($opts['access_token']); + $this->setIdToken($opts['id_token']); + // The refresh token should only be updated if a value is explicitly + // passed in, as some access token responses do not include a refresh + // token. + if (\array_key_exists('refresh_token', $opts)) { + $this->setRefreshToken($opts['refresh_token']); + } + } + /** + * Builds the authorization Uri that the user should be redirected to. + * + * @param array $config configuration options that customize the return url + * @return UriInterface the authorization Url. + * @throws InvalidArgumentException + */ + public function buildFullAuthorizationUri(array $config = []) + { + if (\is_null($this->getAuthorizationUri())) { + throw new \InvalidArgumentException('requires an authorizationUri to have been set'); + } + $params = \array_merge(['response_type' => 'code', 'access_type' => 'offline', 'client_id' => $this->clientId, 'redirect_uri' => $this->redirectUri, 'state' => $this->state, 'scope' => $this->getScope()], $config); + // Validate the auth_params + if (\is_null($params['client_id'])) { + throw new \InvalidArgumentException('missing the required client identifier'); + } + if (\is_null($params['redirect_uri'])) { + throw new \InvalidArgumentException('missing the required redirect URI'); + } + if (!empty($params['prompt']) && !empty($params['approval_prompt'])) { + throw new \InvalidArgumentException('prompt and approval_prompt are mutually exclusive'); + } + // Construct the uri object; return it if it is valid. + $result = clone $this->authorizationUri; + $existingParams = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::parse($result->getQuery()); + $result = $result->withQuery(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build(\array_merge($existingParams, $params))); + if ($result->getScheme() != 'https') { + throw new \InvalidArgumentException('Authorization endpoint must be protected by TLS'); + } + return $result; + } + /** + * Sets the authorization server's HTTP endpoint capable of authenticating + * the end-user and obtaining authorization. + * + * @param string $uri + */ + public function setAuthorizationUri($uri) + { + $this->authorizationUri = $this->coerceUri($uri); + } + /** + * Gets the authorization server's HTTP endpoint capable of authenticating + * the end-user and obtaining authorization. + * + * @return UriInterface + */ + public function getAuthorizationUri() + { + return $this->authorizationUri; + } + /** + * Gets the authorization server's HTTP endpoint capable of issuing tokens + * and refreshing expired tokens. + * + * @return string + */ + public function getTokenCredentialUri() + { + return $this->tokenCredentialUri; + } + /** + * Sets the authorization server's HTTP endpoint capable of issuing tokens + * and refreshing expired tokens. + * + * @param string $uri + */ + public function setTokenCredentialUri($uri) + { + $this->tokenCredentialUri = $this->coerceUri($uri); + } + /** + * Gets the redirection URI used in the initial request. + * + * @return string + */ + public function getRedirectUri() + { + return $this->redirectUri; + } + /** + * Sets the redirection URI used in the initial request. + * + * @param string $uri + */ + public function setRedirectUri($uri) + { + if (\is_null($uri)) { + $this->redirectUri = null; + return; + } + // redirect URI must be absolute + if (!$this->isAbsoluteUri($uri)) { + // "postmessage" is a reserved URI string in Google-land + // @see https://developers.google.com/identity/sign-in/web/server-side-flow + if ('postmessage' !== (string) $uri) { + throw new \InvalidArgumentException('Redirect URI must be absolute'); + } + } + $this->redirectUri = (string) $uri; + } + /** + * Gets the scope of the access requests as a space-delimited String. + * + * @return string + */ + public function getScope() + { + if (\is_null($this->scope)) { + return $this->scope; + } + return \implode(' ', $this->scope); + } + /** + * Sets the scope of the access request, expressed either as an Array or as + * a space-delimited String. + * + * @param string|array $scope + * @throws InvalidArgumentException + */ + public function setScope($scope) + { + if (\is_null($scope)) { + $this->scope = null; + } elseif (\is_string($scope)) { + $this->scope = \explode(' ', $scope); + } elseif (\is_array($scope)) { + foreach ($scope as $s) { + $pos = \strpos($s, ' '); + if ($pos !== \false) { + throw new \InvalidArgumentException('array scope values should not contain spaces'); + } + } + $this->scope = $scope; + } else { + throw new \InvalidArgumentException('scopes should be a string or array of strings'); + } + } + /** + * Gets the current grant type. + * + * @return string + */ + public function getGrantType() + { + if (!\is_null($this->grantType)) { + return $this->grantType; + } + // Returns the inferred grant type, based on the current object instance + // state. + if (!\is_null($this->code)) { + return 'authorization_code'; + } + if (!\is_null($this->refreshToken)) { + return 'refresh_token'; + } + if (!\is_null($this->username) && !\is_null($this->password)) { + return 'password'; + } + if (!\is_null($this->issuer) && !\is_null($this->signingKey)) { + return self::JWT_URN; + } + return null; + } + /** + * Sets the current grant type. + * + * @param $grantType + * @throws InvalidArgumentException + */ + public function setGrantType($grantType) + { + if (\in_array($grantType, self::$knownGrantTypes)) { + $this->grantType = $grantType; + } else { + // validate URI + if (!$this->isAbsoluteUri($grantType)) { + throw new \InvalidArgumentException('invalid grant type'); + } + $this->grantType = (string) $grantType; + } + } + /** + * Gets an arbitrary string designed to allow the client to maintain state. + * + * @return string + */ + public function getState() + { + return $this->state; + } + /** + * Sets an arbitrary string designed to allow the client to maintain state. + * + * @param string $state + */ + public function setState($state) + { + $this->state = $state; + } + /** + * Gets the authorization code issued to this client. + */ + public function getCode() + { + return $this->code; + } + /** + * Sets the authorization code issued to this client. + * + * @param string $code + */ + public function setCode($code) + { + $this->code = $code; + } + /** + * Gets the resource owner's username. + */ + public function getUsername() + { + return $this->username; + } + /** + * Sets the resource owner's username. + * + * @param string $username + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * Gets the resource owner's password. + */ + public function getPassword() + { + return $this->password; + } + /** + * Sets the resource owner's password. + * + * @param $password + */ + public function setPassword($password) + { + $this->password = $password; + } + /** + * Sets a unique identifier issued to the client to identify itself to the + * authorization server. + */ + public function getClientId() + { + return $this->clientId; + } + /** + * Sets a unique identifier issued to the client to identify itself to the + * authorization server. + * + * @param $clientId + */ + public function setClientId($clientId) + { + $this->clientId = $clientId; + } + /** + * Gets a shared symmetric secret issued by the authorization server, which + * is used to authenticate the client. + */ + public function getClientSecret() + { + return $this->clientSecret; + } + /** + * Sets a shared symmetric secret issued by the authorization server, which + * is used to authenticate the client. + * + * @param $clientSecret + */ + public function setClientSecret($clientSecret) + { + $this->clientSecret = $clientSecret; + } + /** + * Gets the Issuer ID when using assertion profile. + */ + public function getIssuer() + { + return $this->issuer; + } + /** + * Sets the Issuer ID when using assertion profile. + * + * @param string $issuer + */ + public function setIssuer($issuer) + { + $this->issuer = $issuer; + } + /** + * Gets the target sub when issuing assertions. + */ + public function getSub() + { + return $this->sub; + } + /** + * Sets the target sub when issuing assertions. + * + * @param string $sub + */ + public function setSub($sub) + { + $this->sub = $sub; + } + /** + * Gets the target audience when issuing assertions. + */ + public function getAudience() + { + return $this->audience; + } + /** + * Sets the target audience when issuing assertions. + * + * @param string $audience + */ + public function setAudience($audience) + { + $this->audience = $audience; + } + /** + * Gets the signing key when using an assertion profile. + */ + public function getSigningKey() + { + return $this->signingKey; + } + /** + * Sets the signing key when using an assertion profile. + * + * @param string $signingKey + */ + public function setSigningKey($signingKey) + { + $this->signingKey = $signingKey; + } + /** + * Gets the signing key id when using an assertion profile. + * + * @return string + */ + public function getSigningKeyId() + { + return $this->signingKeyId; + } + /** + * Sets the signing key id when using an assertion profile. + * + * @param string $signingKeyId + */ + public function setSigningKeyId($signingKeyId) + { + $this->signingKeyId = $signingKeyId; + } + /** + * Gets the signing algorithm when using an assertion profile. + * + * @return string + */ + public function getSigningAlgorithm() + { + return $this->signingAlgorithm; + } + /** + * Sets the signing algorithm when using an assertion profile. + * + * @param string $signingAlgorithm + */ + public function setSigningAlgorithm($signingAlgorithm) + { + if (\is_null($signingAlgorithm)) { + $this->signingAlgorithm = null; + } elseif (!\in_array($signingAlgorithm, self::$knownSigningAlgorithms)) { + throw new \InvalidArgumentException('unknown signing algorithm'); + } else { + $this->signingAlgorithm = $signingAlgorithm; + } + } + /** + * Gets the set of parameters used by extension when using an extension + * grant type. + */ + public function getExtensionParams() + { + return $this->extensionParams; + } + /** + * Sets the set of parameters used by extension when using an extension + * grant type. + * + * @param $extensionParams + */ + public function setExtensionParams($extensionParams) + { + $this->extensionParams = $extensionParams; + } + /** + * Gets the number of seconds assertions are valid for. + */ + public function getExpiry() + { + return $this->expiry; + } + /** + * Sets the number of seconds assertions are valid for. + * + * @param int $expiry + */ + public function setExpiry($expiry) + { + $this->expiry = $expiry; + } + /** + * Gets the lifetime of the access token in seconds. + */ + public function getExpiresIn() + { + return $this->expiresIn; + } + /** + * Sets the lifetime of the access token in seconds. + * + * @param int $expiresIn + */ + public function setExpiresIn($expiresIn) + { + if (\is_null($expiresIn)) { + $this->expiresIn = null; + $this->issuedAt = null; + } else { + $this->issuedAt = \time(); + $this->expiresIn = (int) $expiresIn; + } + } + /** + * Gets the time the current access token expires at. + * + * @return int + */ + public function getExpiresAt() + { + if (!\is_null($this->expiresAt)) { + return $this->expiresAt; + } + if (!\is_null($this->issuedAt) && !\is_null($this->expiresIn)) { + return $this->issuedAt + $this->expiresIn; + } + return null; + } + /** + * Returns true if the acccess token has expired. + * + * @return bool + */ + public function isExpired() + { + $expiration = $this->getExpiresAt(); + $now = \time(); + return !\is_null($expiration) && $now >= $expiration; + } + /** + * Sets the time the current access token expires at. + * + * @param int $expiresAt + */ + public function setExpiresAt($expiresAt) + { + $this->expiresAt = $expiresAt; + } + /** + * Gets the time the current access token was issued at. + */ + public function getIssuedAt() + { + return $this->issuedAt; + } + /** + * Sets the time the current access token was issued at. + * + * @param int $issuedAt + */ + public function setIssuedAt($issuedAt) + { + $this->issuedAt = $issuedAt; + } + /** + * Gets the current access token. + */ + public function getAccessToken() + { + return $this->accessToken; + } + /** + * Sets the current access token. + * + * @param string $accessToken + */ + public function setAccessToken($accessToken) + { + $this->accessToken = $accessToken; + } + /** + * Gets the current ID token. + */ + public function getIdToken() + { + return $this->idToken; + } + /** + * Sets the current ID token. + * + * @param $idToken + */ + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + /** + * Gets the refresh token associated with the current access token. + */ + public function getRefreshToken() + { + return $this->refreshToken; + } + /** + * Sets the refresh token associated with the current access token. + * + * @param $refreshToken + */ + public function setRefreshToken($refreshToken) + { + $this->refreshToken = $refreshToken; + } + /** + * Sets additional claims to be included in the JWT token + * + * @param array $additionalClaims + */ + public function setAdditionalClaims(array $additionalClaims) + { + $this->additionalClaims = $additionalClaims; + } + /** + * Gets the additional claims to be included in the JWT token. + * + * @return array + */ + public function getAdditionalClaims() + { + return $this->additionalClaims; + } + /** + * The expiration of the last received token. + * + * @return array|null + */ + public function getLastReceivedToken() + { + if ($token = $this->getAccessToken()) { + // the bare necessity of an auth token + $authToken = ['access_token' => $token, 'expires_at' => $this->getExpiresAt()]; + } elseif ($idToken = $this->getIdToken()) { + $authToken = ['id_token' => $idToken, 'expires_at' => $this->getExpiresAt()]; + } else { + return null; + } + if ($expiresIn = $this->getExpiresIn()) { + $authToken['expires_in'] = $expiresIn; + } + if ($issuedAt = $this->getIssuedAt()) { + $authToken['issued_at'] = $issuedAt; + } + if ($refreshToken = $this->getRefreshToken()) { + $authToken['refresh_token'] = $refreshToken; + } + return $authToken; + } + /** + * Get the client ID. + * + * Alias of {@see Google\Auth\OAuth2::getClientId()}. + * + * @param callable $httpHandler + * @return string + * @access private + */ + public function getClientName(callable $httpHandler = null) + { + return $this->getClientId(); + } + /** + * @todo handle uri as array + * + * @param string $uri + * @return null|UriInterface + */ + private function coerceUri($uri) + { + if (\is_null($uri)) { + return; + } + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::uriFor($uri); + } + /** + * @param string $idToken + * @param string|array|null $publicKey + * @param array $allowedAlgs + * @return object + */ + private function jwtDecode($idToken, $publicKey, $allowedAlgs) + { + if (\class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT')) { + return \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::decode($idToken, $publicKey, $allowedAlgs); + } + return \Google\Site_Kit_Dependencies\JWT::decode($idToken, $publicKey, $allowedAlgs); + } + private function jwtEncode($assertion, $signingKey, $signingAlgorithm, $signingKeyId = null) + { + if (\class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT')) { + return \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::encode($assertion, $signingKey, $signingAlgorithm, $signingKeyId); + } + return \Google\Site_Kit_Dependencies\JWT::encode($assertion, $signingKey, $signingAlgorithm, $signingKeyId); + } + /** + * Determines if the URI is absolute based on its scheme and host or path + * (RFC 3986). + * + * @param string $uri + * @return bool + */ + private function isAbsoluteUri($uri) + { + $uri = $this->coerceUri($uri); + return $uri->getScheme() && ($uri->getHost() || $uri->getPath()); + } + /** + * @param array $params + * @return array + */ + private function addClientCredentials(&$params) + { + $clientId = $this->getClientId(); + $clientSecret = $this->getClientSecret(); + if ($clientId && $clientSecret) { + $params['client_id'] = $clientId; + $params['client_secret'] = $clientSecret; + } + return $params; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/ProjectIdProviderInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ProjectIdProviderInterface.php new file mode 100644 index 000000000..d6fbc65da --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ProjectIdProviderInterface.php @@ -0,0 +1,32 @@ +auth->getSigningKey(); + $signedString = ''; + if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA') && !$forceOpenssl) { + $rsa = new \Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA(); + $rsa->loadKey($privateKey); + $rsa->setSignatureMode(\Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA::SIGNATURE_PKCS1); + $rsa->setHash('sha256'); + $signedString = $rsa->sign($stringToSign); + } elseif (\extension_loaded('openssl')) { + \openssl_sign($stringToSign, $signedString, $privateKey, 'sha256WithRSAEncryption'); + } else { + // @codeCoverageIgnoreStart + throw new \RuntimeException('OpenSSL is not installed.'); + } + // @codeCoverageIgnoreEnd + return \base64_encode($signedString); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/SignBlobInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/SignBlobInterface.php new file mode 100644 index 000000000..90970e7fa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/SignBlobInterface.php @@ -0,0 +1,43 @@ +' + */ +class AuthTokenSubscriber implements \Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface +{ + /** + * @var callable + */ + private $httpHandler; + /** + * @var FetchAuthTokenInterface + */ + private $fetcher; + /** + * @var callable + */ + private $tokenCallback; + /** + * Creates a new AuthTokenSubscriber. + * + * @param FetchAuthTokenInterface $fetcher is used to fetch the auth token + * @param callable $httpHandler (optional) http client to fetch the token. + * @param callable $tokenCallback (optional) function to be called when a new token is fetched. + */ + public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenInterface $fetcher, callable $httpHandler = null, callable $tokenCallback = null) + { + $this->fetcher = $fetcher; + $this->httpHandler = $httpHandler; + $this->tokenCallback = $tokenCallback; + } + /** + * @return array + */ + public function getEvents() + { + return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST]]; + } + /** + * Updates the request with an Authorization header when auth is 'fetched_auth_token'. + * + * Example: + * ``` + * use GuzzleHttp\Client; + * use Google\Auth\OAuth2; + * use Google\Auth\Subscriber\AuthTokenSubscriber; + * + * $config = [...]; + * $oauth2 = new OAuth2($config) + * $subscriber = new AuthTokenSubscriber($oauth2); + * + * $client = new Client([ + * 'base_url' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'defaults' => ['auth' => 'google_auth'] + * ]); + * $client->getEmitter()->attach($subscriber); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + * ``` + * + * @param BeforeEvent $event + */ + public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event) + { + // Requests using "auth"="google_auth" will be authorized. + $request = $event->getRequest(); + if ($request->getConfig()['auth'] != 'google_auth') { + return; + } + // Fetch the auth token. + $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler); + if (\array_key_exists('access_token', $auth_tokens)) { + $request->setHeader('authorization', 'Bearer ' . $auth_tokens['access_token']); + // notify the callback if applicable + if ($this->tokenCallback) { + \call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']); + } + } + if ($quotaProject = $this->getQuotaProject()) { + $request->setHeader(\Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface::X_GOOG_USER_PROJECT_HEADER, $quotaProject); + } + } + private function getQuotaProject() + { + if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) { + return $this->fetcher->getQuotaProject(); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php new file mode 100644 index 000000000..4767e2de4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php @@ -0,0 +1,154 @@ +' + */ +class ScopedAccessTokenSubscriber implements \Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface +{ + use CacheTrait; + const DEFAULT_CACHE_LIFETIME = 1500; + /** + * @var CacheItemPoolInterface + */ + private $cache; + /** + * @var callable The access token generator function + */ + private $tokenFunc; + /** + * @var array|string The scopes used to generate the token + */ + private $scopes; + /** + * @var array + */ + private $cacheConfig; + /** + * Creates a new ScopedAccessTokenSubscriber. + * + * @param callable $tokenFunc a token generator function + * @param array|string $scopes the token authentication scopes + * @param array $cacheConfig configuration for the cache when it's present + * @param CacheItemPoolInterface $cache an implementation of CacheItemPoolInterface + */ + public function __construct(callable $tokenFunc, $scopes, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null) + { + $this->tokenFunc = $tokenFunc; + if (!(\is_string($scopes) || \is_array($scopes))) { + throw new \InvalidArgumentException('wants scope should be string or array'); + } + $this->scopes = $scopes; + if (!\is_null($cache)) { + $this->cache = $cache; + $this->cacheConfig = \array_merge(['lifetime' => self::DEFAULT_CACHE_LIFETIME, 'prefix' => ''], $cacheConfig); + } + } + /** + * @return array + */ + public function getEvents() + { + return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST]]; + } + /** + * Updates the request with an Authorization header when auth is 'scoped'. + * + * E.g this could be used to authenticate using the AppEngine AppIdentityService. + * + * Example: + * ``` + * use google\appengine\api\app_identity\AppIdentityService; + * use Google\Auth\Subscriber\ScopedAccessTokenSubscriber; + * use GuzzleHttp\Client; + * + * $scope = 'https://www.googleapis.com/auth/taskqueue' + * $subscriber = new ScopedAccessToken( + * 'AppIdentityService::getAccessToken', + * $scope, + * ['prefix' => 'Google\Auth\ScopedAccessToken::'], + * $cache = new Memcache() + * ); + * + * $client = new Client([ + * 'base_url' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/', + * 'defaults' => ['auth' => 'scoped'] + * ]); + * $client->getEmitter()->attach($subscriber); + * + * $res = $client->get('myproject/taskqueues/myqueue'); + * ``` + * + * @param BeforeEvent $event + */ + public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event) + { + // Requests using "auth"="scoped" will be authorized. + $request = $event->getRequest(); + if ($request->getConfig()['auth'] != 'scoped') { + return; + } + $auth_header = 'Bearer ' . $this->fetchToken(); + $request->setHeader('authorization', $auth_header); + } + /** + * @return string + */ + private function getCacheKey() + { + $key = null; + if (\is_string($this->scopes)) { + $key .= $this->scopes; + } elseif (\is_array($this->scopes)) { + $key .= \implode(':', $this->scopes); + } + return $key; + } + /** + * Determine if token is available in the cache, if not call tokenFunc to + * fetch it. + * + * @return string + */ + private function fetchToken() + { + $cacheKey = $this->getCacheKey(); + $cached = $this->getCachedValue($cacheKey); + if (!empty($cached)) { + return $cached; + } + $token = \call_user_func($this->tokenFunc, $this->scopes); + $this->setCachedValue($cacheKey, $token); + return $token; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/SimpleSubscriber.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/SimpleSubscriber.php new file mode 100644 index 000000000..17e3791c9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/SimpleSubscriber.php @@ -0,0 +1,88 @@ +config = \array_merge([], $config); + } + /** + * @return array + */ + public function getEvents() + { + return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST]]; + } + /** + * Updates the request query with the developer key if auth is set to simple. + * + * Example: + * ``` + * use Google\Auth\Subscriber\SimpleSubscriber; + * use GuzzleHttp\Client; + * + * $my_key = 'is not the same as yours'; + * $subscriber = new SimpleSubscriber(['key' => $my_key]); + * + * $client = new Client([ + * 'base_url' => 'https://www.googleapis.com/discovery/v1/', + * 'defaults' => ['auth' => 'simple'] + * ]); + * $client->getEmitter()->attach($subscriber); + * + * $res = $client->get('drive/v2/rest'); + * ``` + * + * @param BeforeEvent $event + */ + public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event) + { + // Requests using "auth"="simple" with the developer key. + $request = $event->getRequest(); + if ($request->getConfig()['auth'] != 'simple') { + return; + } + $request->getQuery()->overwriteWith($this->config); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/UpdateMetadataInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/UpdateMetadataInterface.php new file mode 100644 index 000000000..6a2ac60fd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/UpdateMetadataInterface.php @@ -0,0 +1,36 @@ +hash = $hash; + } + /** + * Get the keys that are available on the batch result. + * + * @return array + */ + public function getKeys() + { + return \iterator_to_array($this->hash); + } + /** + * Gets a result from the container for the given object. When getting + * results for a batch of requests, provide the request object. + * + * @param object $forObject Object to retrieve the result for. + * + * @return mixed|null + */ + public function getResult($forObject) + { + return isset($this->hash[$forObject]) ? $this->hash[$forObject] : null; + } + /** + * Get an array of successful results. + * + * @return array + */ + public function getSuccessful() + { + $results = []; + foreach ($this->hash as $key) { + if (!$this->hash[$key] instanceof \Exception) { + $results[] = $this->hash[$key]; + } + } + return $results; + } + /** + * Get an array of failed results. + * + * @return array + */ + public function getFailures() + { + $results = []; + foreach ($this->hash as $key) { + if ($this->hash[$key] instanceof \Exception) { + $results[] = $this->hash[$key]; + } + } + return $results; + } + /** + * Allows iteration over all batch result values. + * + * @return \ArrayIterator + */ + public function getIterator() + { + $results = []; + foreach ($this->hash as $key) { + $results[] = $this->hash[$key]; + } + return new \ArrayIterator($results); + } + /** + * Counts the number of elements in the batch result. + * + * @return int + */ + public function count() + { + return \count($this->hash); + } + /** + * Checks if the batch contains a specific numerical array index. + * + * @param int $key Index to access + * + * @return bool + */ + public function offsetExists($key) + { + return $key < \count($this->hash); + } + /** + * Allows access of the batch using a numerical array index. + * + * @param int $key Index to access. + * + * @return mixed|null + */ + public function offsetGet($key) + { + $i = -1; + foreach ($this->hash as $obj) { + if ($key === ++$i) { + return $this->hash[$obj]; + } + } + return null; + } + public function offsetUnset($key) + { + throw new \RuntimeException('Not implemented'); + } + public function offsetSet($key, $value) + { + throw new \RuntimeException('Not implemented'); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Client.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Client.php new file mode 100644 index 000000000..28ef2d133 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Client.php @@ -0,0 +1,293 @@ + [ + * 'http://www.foo.com/{version}/', + * ['version' => '123'] + * ], + * 'defaults' => [ + * 'timeout' => 10, + * 'allow_redirects' => false, + * 'proxy' => '192.168.16.1:10' + * ] + * ]); + * + * @param array $config Client configuration settings + * - base_url: Base URL of the client that is merged into relative URLs. + * Can be a string or an array that contains a URI template followed + * by an associative array of expansion variables to inject into the + * URI template. + * - handler: callable RingPHP handler used to transfer requests + * - message_factory: Factory used to create request and response object + * - defaults: Default request options to apply to each request + * - emitter: Event emitter used for request events + * - fsm: (internal use only) The request finite state machine. A + * function that accepts a transaction and optional final state. The + * function is responsible for transitioning a request through its + * lifecycle events. + */ + public function __construct(array $config = []) + { + $this->configureBaseUrl($config); + $this->configureDefaults($config); + if (isset($config['emitter'])) { + $this->emitter = $config['emitter']; + } + $this->messageFactory = isset($config['message_factory']) ? $config['message_factory'] : new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageFactory(); + if (isset($config['fsm'])) { + $this->fsm = $config['fsm']; + } else { + if (isset($config['handler'])) { + $handler = $config['handler']; + } elseif (isset($config['adapter'])) { + $handler = $config['adapter']; + } else { + $handler = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultHandler(); + } + $this->fsm = new \Google\Site_Kit_Dependencies\GuzzleHttp\RequestFsm($handler, $this->messageFactory); + } + } + public function getDefaultOption($keyOrPath = null) + { + return $keyOrPath === null ? $this->defaults : \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getPath($this->defaults, $keyOrPath); + } + public function setDefaultOption($keyOrPath, $value) + { + \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::setPath($this->defaults, $keyOrPath, $value); + } + public function getBaseUrl() + { + return (string) $this->baseUrl; + } + public function createRequest($method, $url = null, array $options = []) + { + $options = $this->mergeDefaults($options); + // Use a clone of the client's emitter + $options['config']['emitter'] = clone $this->getEmitter(); + $url = $url || \is_string($url) && \strlen($url) ? $this->buildUrl($url) : (string) $this->baseUrl; + return $this->messageFactory->createRequest($method, $url, $options); + } + public function get($url = null, $options = []) + { + return $this->send($this->createRequest('GET', $url, $options)); + } + public function head($url = null, array $options = []) + { + return $this->send($this->createRequest('HEAD', $url, $options)); + } + public function delete($url = null, array $options = []) + { + return $this->send($this->createRequest('DELETE', $url, $options)); + } + public function put($url = null, array $options = []) + { + return $this->send($this->createRequest('PUT', $url, $options)); + } + public function patch($url = null, array $options = []) + { + return $this->send($this->createRequest('PATCH', $url, $options)); + } + public function post($url = null, array $options = []) + { + return $this->send($this->createRequest('POST', $url, $options)); + } + public function options($url = null, array $options = []) + { + return $this->send($this->createRequest('OPTIONS', $url, $options)); + } + public function send(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request) + { + $isFuture = $request->getConfig()->get('future'); + $trans = new \Google\Site_Kit_Dependencies\GuzzleHttp\Transaction($this, $request, $isFuture); + $fn = $this->fsm; + try { + $fn($trans); + if ($isFuture) { + // Turn the normal response into a future if needed. + return $trans->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface ? $trans->response : new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse(new \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise($trans->response)); + } + // Resolve deep futures if this is not a future + // transaction. This accounts for things like retries + // that do not have an immediate side-effect. + while ($trans->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface) { + $trans->response = $trans->response->wait(); + } + return $trans->response; + } catch (\Exception $e) { + if ($isFuture) { + // Wrap the exception in a promise + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse(new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($e)); + } + throw \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $e); + } catch (\TypeError $error) { + $exception = new \Exception($error->getMessage(), $error->getCode(), $error); + if ($isFuture) { + // Wrap the exception in a promise + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse(new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception)); + } + throw \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $exception); + } + } + /** + * Get an array of default options to apply to the client + * + * @return array + */ + protected function getDefaultOptions() + { + $settings = ['allow_redirects' => \true, 'exceptions' => \true, 'decode_content' => \true, 'verify' => \true]; + // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. + // We can only trust the HTTP_PROXY environment variable in a CLI + // process due to the fact that PHP has no reliable mechanism to + // get environment variables that start with "HTTP_". + if (\php_sapi_name() == 'cli' && \getenv('HTTP_PROXY')) { + $settings['proxy']['http'] = \getenv('HTTP_PROXY'); + } + if ($proxy = \getenv('HTTPS_PROXY')) { + $settings['proxy']['https'] = $proxy; + } + return $settings; + } + /** + * Expand a URI template and inherit from the base URL if it's relative + * + * @param string|array $url URL or an array of the URI template to expand + * followed by a hash of template varnames. + * @return string + * @throws \InvalidArgumentException + */ + private function buildUrl($url) + { + // URI template (absolute or relative) + if (!\is_array($url)) { + return \strpos($url, '://') ? (string) $url : (string) $this->baseUrl->combine($url); + } + if (!isset($url[1])) { + throw new \InvalidArgumentException('You must provide a hash of ' . 'varname options in the second element of a URL array.'); + } + // Absolute URL + if (\strpos($url[0], '://')) { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::uriTemplate($url[0], $url[1]); + } + // Combine the relative URL with the base URL + return (string) $this->baseUrl->combine(\Google\Site_Kit_Dependencies\GuzzleHttp\Utils::uriTemplate($url[0], $url[1])); + } + private function configureBaseUrl(&$config) + { + if (!isset($config['base_url'])) { + $this->baseUrl = new \Google\Site_Kit_Dependencies\GuzzleHttp\Url('', ''); + } elseif (!\is_array($config['base_url'])) { + $this->baseUrl = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($config['base_url']); + } elseif (\count($config['base_url']) < 2) { + throw new \InvalidArgumentException('You must provide a hash of ' . 'varname options in the second element of a base_url array.'); + } else { + $this->baseUrl = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString(\Google\Site_Kit_Dependencies\GuzzleHttp\Utils::uriTemplate($config['base_url'][0], $config['base_url'][1])); + $config['base_url'] = (string) $this->baseUrl; + } + } + private function configureDefaults($config) + { + if (!isset($config['defaults'])) { + $this->defaults = $this->getDefaultOptions(); + } else { + $this->defaults = \array_replace($this->getDefaultOptions(), $config['defaults']); + } + // Add the default user-agent header + if (!isset($this->defaults['headers'])) { + $this->defaults['headers'] = ['User-Agent' => \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultUserAgent()]; + } elseif (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($this->defaults, 'User-Agent')) { + // Add the User-Agent header if one was not already set + $this->defaults['headers']['User-Agent'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultUserAgent(); + } + } + /** + * Merges default options into the array passed by reference. + * + * @param array $options Options to modify by reference + * + * @return array + */ + private function mergeDefaults($options) + { + $defaults = $this->defaults; + // Case-insensitively merge in default headers if both defaults and + // options have headers specified. + if (!empty($defaults['headers']) && !empty($options['headers'])) { + // Create a set of lowercased keys that are present. + $lkeys = []; + foreach (\array_keys($options['headers']) as $k) { + $lkeys[\strtolower($k)] = \true; + } + // Merge in lowercase default keys when not present in above set. + foreach ($defaults['headers'] as $key => $value) { + if (!isset($lkeys[\strtolower($key)])) { + $options['headers'][$key] = $value; + } + } + // No longer need to merge in headers. + unset($defaults['headers']); + } + $result = \array_replace_recursive($defaults, $options); + foreach ($options as $k => $v) { + if ($v === null) { + unset($result[$k]); + } + } + return $result; + } + /** + * @deprecated Use {@see GuzzleHttp\Pool} instead. + * @see GuzzleHttp\Pool + */ + public function sendAll($requests, array $options = []) + { + \Google\Site_Kit_Dependencies\GuzzleHttp\Pool::send($this, $requests, $options); + } + /** + * @deprecated Use GuzzleHttp\Utils::getDefaultHandler + */ + public static function getDefaultHandler() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultHandler(); + } + /** + * @deprecated Use GuzzleHttp\Utils::getDefaultUserAgent + */ + public static function getDefaultUserAgent() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultUserAgent(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ClientInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ClientInterface.php new file mode 100644 index 000000000..9a4a1b37b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ClientInterface.php @@ -0,0 +1,138 @@ +data = $data; + } + /** + * Create a new collection from an array, validate the keys, and add default + * values where missing + * + * @param array $config Configuration values to apply. + * @param array $defaults Default parameters + * @param array $required Required parameter names + * + * @return self + * @throws \InvalidArgumentException if a parameter is missing + */ + public static function fromConfig(array $config = [], array $defaults = [], array $required = []) + { + $data = $config + $defaults; + if ($missing = \array_diff($required, \array_keys($data))) { + throw new \InvalidArgumentException('Config is missing the following keys: ' . \implode(', ', $missing)); + } + return new self($data); + } + /** + * Removes all key value pairs + */ + public function clear() + { + $this->data = []; + } + /** + * Get a specific key value. + * + * @param string $key Key to retrieve. + * + * @return mixed|null Value of the key or NULL + */ + public function get($key) + { + return isset($this->data[$key]) ? $this->data[$key] : null; + } + /** + * Set a key value pair + * + * @param string $key Key to set + * @param mixed $value Value to set + */ + public function set($key, $value) + { + $this->data[$key] = $value; + } + /** + * Add a value to a key. If a key of the same name has already been added, + * the key value will be converted into an array and the new value will be + * pushed to the end of the array. + * + * @param string $key Key to add + * @param mixed $value Value to add to the key + */ + public function add($key, $value) + { + if (!\array_key_exists($key, $this->data)) { + $this->data[$key] = $value; + } elseif (\is_array($this->data[$key])) { + $this->data[$key][] = $value; + } else { + $this->data[$key] = array($this->data[$key], $value); + } + } + /** + * Remove a specific key value pair + * + * @param string $key A key to remove + */ + public function remove($key) + { + unset($this->data[$key]); + } + /** + * Get all keys in the collection + * + * @return array + */ + public function getKeys() + { + return \array_keys($this->data); + } + /** + * Returns whether or not the specified key is present. + * + * @param string $key The key for which to check the existence. + * + * @return bool + */ + public function hasKey($key) + { + return \array_key_exists($key, $this->data); + } + /** + * Checks if any keys contains a certain value + * + * @param string $value Value to search for + * + * @return mixed Returns the key if the value was found FALSE if the value + * was not found. + */ + public function hasValue($value) + { + return \array_search($value, $this->data, \true); + } + /** + * Replace the data of the object with the value of an array + * + * @param array $data Associative array of data + */ + public function replace(array $data) + { + $this->data = $data; + } + /** + * Add and merge in a Collection or array of key value pair data. + * + * @param Collection|array $data Associative array of key value pair data + */ + public function merge($data) + { + foreach ($data as $key => $value) { + $this->add($key, $value); + } + } + /** + * Overwrite key value pairs in this collection with all of the data from + * an array or collection. + * + * @param array|\Traversable $data Values to override over this config + */ + public function overwriteWith($data) + { + if (\is_array($data)) { + $this->data = $data + $this->data; + } elseif ($data instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Collection) { + $this->data = $data->toArray() + $this->data; + } else { + foreach ($data as $key => $value) { + $this->data[$key] = $value; + } + } + } + /** + * Returns a Collection containing all the elements of the collection after + * applying the callback function to each one. + * + * The callable should accept three arguments: + * - (string) $key + * - (string) $value + * - (array) $context + * + * The callable must return a the altered or unaltered value. + * + * @param callable $closure Map function to apply + * @param array $context Context to pass to the callable + * + * @return Collection + */ + public function map(callable $closure, array $context = []) + { + $collection = new static(); + foreach ($this as $key => $value) { + $collection[$key] = $closure($key, $value, $context); + } + return $collection; + } + /** + * Iterates over each key value pair in the collection passing them to the + * callable. If the callable returns true, the current value from input is + * returned into the result Collection. + * + * The callable must accept two arguments: + * - (string) $key + * - (string) $value + * + * @param callable $closure Evaluation function + * + * @return Collection + */ + public function filter(callable $closure) + { + $collection = new static(); + foreach ($this->data as $key => $value) { + if ($closure($key, $value)) { + $collection[$key] = $value; + } + } + return $collection; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJar.php new file mode 100644 index 000000000..28c347169 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJar.php @@ -0,0 +1,185 @@ +strictMode = $strictMode; + foreach ($cookieArray as $cookie) { + if (!$cookie instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie) { + $cookie = new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie($cookie); + } + $this->setCookie($cookie); + } + } + /** + * Create a new Cookie jar from an associative array and domain. + * + * @param array $cookies Cookies to create the jar from + * @param string $domain Domain to set the cookies to + * + * @return self + */ + public static function fromArray(array $cookies, $domain) + { + $cookieJar = new self(); + foreach ($cookies as $name => $value) { + $cookieJar->setCookie(new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie(['Domain' => $domain, 'Name' => $name, 'Value' => $value, 'Discard' => \true])); + } + return $cookieJar; + } + /** + * Quote the cookie value if it is not already quoted and it contains + * problematic characters. + * + * @param string $value Value that may or may not need to be quoted + * + * @return string + */ + public static function getCookieValue($value) + { + if (\substr($value, 0, 1) !== '"' && \substr($value, -1, 1) !== '"' && \strpbrk($value, ';,')) { + $value = '"' . $value . '"'; + } + return $value; + } + public function toArray() + { + return \array_map(function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) { + return $cookie->toArray(); + }, $this->getIterator()->getArrayCopy()); + } + public function clear($domain = null, $path = null, $name = null) + { + if (!$domain) { + $this->cookies = []; + return; + } elseif (!$path) { + $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { + return !$cookie->matchesDomain($domain); + }); + } elseif (!$name) { + $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { + return !($cookie->matchesPath($path) && $cookie->matchesDomain($domain)); + }); + } else { + $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain, $name) { + return !($cookie->getName() == $name && $cookie->matchesPath($path) && $cookie->matchesDomain($domain)); + }); + } + } + public function clearSessionCookies() + { + $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) { + return !$cookie->getDiscard() && $cookie->getExpires(); + }); + } + public function setCookie(\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) + { + // Only allow cookies with set and valid domain, name, value + $result = $cookie->validate(); + if ($result !== \true) { + if ($this->strictMode) { + throw new \RuntimeException('Invalid cookie: ' . $result); + } else { + $this->removeCookieIfEmpty($cookie); + return \false; + } + } + // Resolve conflicts with previously set cookies + foreach ($this->cookies as $i => $c) { + // Two cookies are identical, when their path, and domain are + // identical. + if ($c->getPath() != $cookie->getPath() || $c->getDomain() != $cookie->getDomain() || $c->getName() != $cookie->getName()) { + continue; + } + // The previously set cookie is a discard cookie and this one is + // not so allow the new cookie to be set + if (!$cookie->getDiscard() && $c->getDiscard()) { + unset($this->cookies[$i]); + continue; + } + // If the new cookie's expiration is further into the future, then + // replace the old cookie + if ($cookie->getExpires() > $c->getExpires()) { + unset($this->cookies[$i]); + continue; + } + // If the value has changed, we better change it + if ($cookie->getValue() !== $c->getValue()) { + unset($this->cookies[$i]); + continue; + } + // The cookie exists, so no need to continue + return \false; + } + $this->cookies[] = $cookie; + return \true; + } + public function count() + { + return \count($this->cookies); + } + public function getIterator() + { + return new \ArrayIterator(\array_values($this->cookies)); + } + public function extractCookies(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response) + { + if ($cookieHeader = $response->getHeaderAsArray('Set-Cookie')) { + foreach ($cookieHeader as $cookie) { + $sc = \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie::fromString($cookie); + if (!$sc->getDomain()) { + $sc->setDomain($request->getHost()); + } + $this->setCookie($sc); + } + } + } + public function addCookieHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request) + { + $values = []; + $scheme = $request->getScheme(); + $host = $request->getHost(); + $path = $request->getPath(); + foreach ($this->cookies as $cookie) { + if ($cookie->matchesPath($path) && $cookie->matchesDomain($host) && !$cookie->isExpired() && (!$cookie->getSecure() || $scheme == 'https')) { + $values[] = $cookie->getName() . '=' . self::getCookieValue($cookie->getValue()); + } + } + if ($values) { + $request->setHeader('Cookie', \implode('; ', $values)); + } + } + /** + * If a cookie already exists and the server asks to set it again with a + * null value, the cookie must be deleted. + * + * @param SetCookie $cookie + */ + private function removeCookieIfEmpty(\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) + { + $cookieValue = $cookie->getValue(); + if ($cookieValue === null || $cookieValue === '') { + $this->clear($cookie->getDomain(), $cookie->getPath(), $cookie->getName()); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php new file mode 100644 index 000000000..21af8b2dd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php @@ -0,0 +1,68 @@ +filename = $cookieFile; + if (\file_exists($cookieFile)) { + $this->load($cookieFile); + } + } + /** + * Saves the file when shutting down + */ + public function __destruct() + { + $this->save($this->filename); + } + /** + * Saves the cookies to a file. + * + * @param string $filename File to save + * @throws \RuntimeException if the file cannot be found or created + */ + public function save($filename) + { + $json = []; + foreach ($this as $cookie) { + if ($cookie->getExpires() && !$cookie->getDiscard()) { + $json[] = $cookie->toArray(); + } + } + if (\false === \file_put_contents($filename, \json_encode($json), \LOCK_EX)) { + // @codeCoverageIgnoreStart + throw new \RuntimeException("Unable to save file {$filename}"); + // @codeCoverageIgnoreEnd + } + } + /** + * Load cookies from a JSON formatted file. + * + * Old cookies are kept unless overwritten by newly loaded ones. + * + * @param string $filename Cookie file to load. + * @throws \RuntimeException if the file cannot be loaded. + */ + public function load($filename) + { + $json = \file_get_contents($filename); + if (\false === $json) { + // @codeCoverageIgnoreStart + throw new \RuntimeException("Unable to load file {$filename}"); + // @codeCoverageIgnoreEnd + } + $data = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode($json, \true); + if (\is_array($data)) { + foreach (\Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode($json, \true) as $cookie) { + $this->setCookie(new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie($cookie)); + } + } elseif (\strlen($data)) { + throw new \RuntimeException("Invalid cookie file: {$filename}"); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php new file mode 100644 index 000000000..19609d657 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php @@ -0,0 +1,58 @@ +sessionKey = $sessionKey; + $this->load(); + } + /** + * Saves cookies to session when shutting down + */ + public function __destruct() + { + $this->save(); + } + /** + * Save cookies to the client session + */ + public function save() + { + $json = []; + foreach ($this as $cookie) { + if ($cookie->getExpires() && !$cookie->getDiscard()) { + $json[] = $cookie->toArray(); + } + } + $_SESSION[$this->sessionKey] = \json_encode($json); + } + /** + * Load the contents of the client session into the data array + */ + protected function load() + { + $cookieJar = isset($_SESSION[$this->sessionKey]) ? $_SESSION[$this->sessionKey] : null; + $data = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode($cookieJar, \true); + if (\is_array($data)) { + foreach ($data as $cookie) { + $this->setCookie(new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie($cookie)); + } + } elseif (\strlen($data)) { + throw new \RuntimeException("Invalid cookie data"); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SetCookie.php new file mode 100644 index 000000000..2e10df38b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SetCookie.php @@ -0,0 +1,320 @@ + null, 'Value' => null, 'Domain' => null, 'Path' => '/', 'Max-Age' => null, 'Expires' => null, 'Secure' => \false, 'Discard' => \false, 'HttpOnly' => \false]; + /** @var array Cookie data */ + private $data; + /** + * Create a new SetCookie object from a string + * + * @param string $cookie Set-Cookie header string + * + * @return self + */ + public static function fromString($cookie) + { + // Create the default return array + $data = self::$defaults; + // Explode the cookie string using a series of semicolons + $pieces = \array_filter(\array_map('trim', \explode(';', $cookie))); + // The name of the cookie (first kvp) must include an equal sign. + if (empty($pieces) || !\strpos($pieces[0], '=')) { + return new self($data); + } + // Add the cookie pieces into the parsed data array + foreach ($pieces as $part) { + $cookieParts = \explode('=', $part, 2); + $key = \trim($cookieParts[0]); + $value = isset($cookieParts[1]) ? \trim($cookieParts[1], " \n\r\t\0\v\"") : \true; + // Only check for non-cookies when cookies have been found + if (empty($data['Name'])) { + $data['Name'] = $key; + $data['Value'] = $value; + } else { + foreach (\array_keys(self::$defaults) as $search) { + if (!\strcasecmp($search, $key)) { + $data[$search] = $value; + continue 2; + } + } + $data[$key] = $value; + } + } + return new self($data); + } + /** + * @param array $data Array of cookie data provided by a Cookie parser + */ + public function __construct(array $data = []) + { + $this->data = \array_replace(self::$defaults, $data); + // Extract the Expires value and turn it into a UNIX timestamp if needed + if (!$this->getExpires() && $this->getMaxAge()) { + // Calculate the Expires date + $this->setExpires(\time() + $this->getMaxAge()); + } elseif ($this->getExpires() && !\is_numeric($this->getExpires())) { + $this->setExpires($this->getExpires()); + } + } + public function __toString() + { + $str = $this->data['Name'] . '=' . $this->data['Value'] . '; '; + foreach ($this->data as $k => $v) { + if ($k != 'Name' && $k != 'Value' && $v !== null && $v !== \false) { + if ($k == 'Expires') { + $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \\G\\M\\T', $v) . '; '; + } else { + $str .= ($v === \true ? $k : "{$k}={$v}") . '; '; + } + } + } + return \rtrim($str, '; '); + } + public function toArray() + { + return $this->data; + } + /** + * Get the cookie name + * + * @return string + */ + public function getName() + { + return $this->data['Name']; + } + /** + * Set the cookie name + * + * @param string $name Cookie name + */ + public function setName($name) + { + $this->data['Name'] = $name; + } + /** + * Get the cookie value + * + * @return string + */ + public function getValue() + { + return $this->data['Value']; + } + /** + * Set the cookie value + * + * @param string $value Cookie value + */ + public function setValue($value) + { + $this->data['Value'] = $value; + } + /** + * Get the domain + * + * @return string|null + */ + public function getDomain() + { + return $this->data['Domain']; + } + /** + * Set the domain of the cookie + * + * @param string $domain + */ + public function setDomain($domain) + { + $this->data['Domain'] = $domain; + } + /** + * Get the path + * + * @return string + */ + public function getPath() + { + return $this->data['Path']; + } + /** + * Set the path of the cookie + * + * @param string $path Path of the cookie + */ + public function setPath($path) + { + $this->data['Path'] = $path; + } + /** + * Maximum lifetime of the cookie in seconds + * + * @return int|null + */ + public function getMaxAge() + { + return $this->data['Max-Age']; + } + /** + * Set the max-age of the cookie + * + * @param int $maxAge Max age of the cookie in seconds + */ + public function setMaxAge($maxAge) + { + $this->data['Max-Age'] = $maxAge; + } + /** + * The UNIX timestamp when the cookie Expires + * + * @return mixed + */ + public function getExpires() + { + return $this->data['Expires']; + } + /** + * Set the unix timestamp for which the cookie will expire + * + * @param int $timestamp Unix timestamp + */ + public function setExpires($timestamp) + { + $this->data['Expires'] = \is_numeric($timestamp) ? (int) $timestamp : \strtotime($timestamp); + } + /** + * Get whether or not this is a secure cookie + * + * @return null|bool + */ + public function getSecure() + { + return $this->data['Secure']; + } + /** + * Set whether or not the cookie is secure + * + * @param bool $secure Set to true or false if secure + */ + public function setSecure($secure) + { + $this->data['Secure'] = $secure; + } + /** + * Get whether or not this is a session cookie + * + * @return null|bool + */ + public function getDiscard() + { + return $this->data['Discard']; + } + /** + * Set whether or not this is a session cookie + * + * @param bool $discard Set to true or false if this is a session cookie + */ + public function setDiscard($discard) + { + $this->data['Discard'] = $discard; + } + /** + * Get whether or not this is an HTTP only cookie + * + * @return bool + */ + public function getHttpOnly() + { + return $this->data['HttpOnly']; + } + /** + * Set whether or not this is an HTTP only cookie + * + * @param bool $httpOnly Set to true or false if this is HTTP only + */ + public function setHttpOnly($httpOnly) + { + $this->data['HttpOnly'] = $httpOnly; + } + /** + * Check if the cookie matches a path value + * + * @param string $path Path to check against + * + * @return bool + */ + public function matchesPath($path) + { + return !$this->getPath() || 0 === \stripos($path, $this->getPath()); + } + /** + * Check if the cookie matches a domain value + * + * @param string $domain Domain to check against + * + * @return bool + */ + public function matchesDomain($domain) + { + // Remove the leading '.' as per spec in RFC 6265. + // http://tools.ietf.org/html/rfc6265#section-5.2.3 + $cookieDomain = \ltrim($this->getDomain(), '.'); + // Domain not set or exact match. + if (!$cookieDomain || !\strcasecmp($domain, $cookieDomain)) { + return \true; + } + // Matching the subdomain according to RFC 6265. + // http://tools.ietf.org/html/rfc6265#section-5.1.3 + if (\filter_var($domain, \FILTER_VALIDATE_IP)) { + return \false; + } + return (bool) \preg_match('/\\.' . \preg_quote($cookieDomain) . '$/i', $domain); + } + /** + * Check if the cookie is expired + * + * @return bool + */ + public function isExpired() + { + return $this->getExpires() !== null && \time() > $this->getExpires(); + } + /** + * Check if the cookie is valid according to RFC 6265 + * + * @return bool|string Returns true if valid or an error message if invalid + */ + public function validate() + { + // Names must not be empty, but can be 0 + $name = $this->getName(); + if (empty($name) && !\is_numeric($name)) { + return 'The cookie name must not be empty'; + } + // Check if any of the invalid characters are present in the cookie name + if (\preg_match("/[=,; \t\r\n\v\f]/", $name)) { + return "Google\\Site_Kit_Dependencies\\Cookie name must not cannot invalid characters: =,; \\t\\r\\n\\013\\014"; + } + // Value must not be empty, but can be 0 + $value = $this->getValue(); + if (empty($value) && !\is_numeric($value)) { + return 'The cookie value must not be empty'; + } + // Domains must not be empty, but can be 0 + // A "0" is not a valid internet domain, but may be used as server name + // in a private network. + $domain = $this->getDomain(); + if (empty($domain) && !\is_numeric($domain)) { + return 'The cookie domain must not be empty'; + } + return \true; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractEvent.php new file mode 100644 index 000000000..bd633e2f2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractEvent.php @@ -0,0 +1,19 @@ +propagationStopped; + } + public function stopPropagation() + { + $this->propagationStopped = \true; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php new file mode 100644 index 000000000..3c56aafe5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php @@ -0,0 +1,56 @@ +transaction = $transaction; + } + /** + * Get the HTTP client associated with the event. + * + * @return ClientInterface + */ + public function getClient() + { + return $this->transaction->client; + } + /** + * Get the request object + * + * @return RequestInterface + */ + public function getRequest() + { + return $this->transaction->request; + } + /** + * Get the number of transaction retries. + * + * @return int + */ + public function getRetryCount() + { + return $this->transaction->retries; + } + /** + * @return Transaction + */ + public function getTransaction() + { + return $this->transaction; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php new file mode 100644 index 000000000..f48bb8be9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php @@ -0,0 +1,39 @@ +transaction->state = 'retry'; + if ($afterDelay) { + $this->transaction->request->getConfig()->set('delay', $afterDelay); + } + $this->stopPropagation(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php new file mode 100644 index 000000000..73f9cb5eb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php @@ -0,0 +1,57 @@ +transaction->transferInfo; + } + return isset($this->transaction->transferInfo[$name]) ? $this->transaction->transferInfo[$name] : null; + } + /** + * Returns true/false if a response is available. + * + * @return bool + */ + public function hasResponse() + { + return !$this->transaction->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface; + } + /** + * Get the response. + * + * @return ResponseInterface|null + */ + public function getResponse() + { + return $this->hasResponse() ? $this->transaction->response : null; + } + /** + * Intercept the request and associate a response + * + * @param ResponseInterface $response Response to set + */ + public function intercept(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response) + { + $this->transaction->response = $response; + $this->transaction->exception = null; + $this->stopPropagation(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/BeforeEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/BeforeEvent.php new file mode 100644 index 000000000..98d424bc1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/BeforeEvent.php @@ -0,0 +1,26 @@ +transaction->response = $response; + $this->transaction->exception = null; + $this->stopPropagation(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/CompleteEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/CompleteEvent.php new file mode 100644 index 000000000..3c99309e3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/CompleteEvent.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @link https://github.com/symfony/symfony/tree/master/src/Symfony/Component/EventDispatcher + */ +class Emitter implements \Google\Site_Kit_Dependencies\GuzzleHttp\Event\EmitterInterface +{ + /** @var array */ + private $listeners = []; + /** @var array */ + private $sorted = []; + public function on($eventName, callable $listener, $priority = 0) + { + if ($priority === 'first') { + $priority = isset($this->listeners[$eventName]) ? \max(\array_keys($this->listeners[$eventName])) + 1 : 1; + } elseif ($priority === 'last') { + $priority = isset($this->listeners[$eventName]) ? \min(\array_keys($this->listeners[$eventName])) - 1 : -1; + } + $this->listeners[$eventName][$priority][] = $listener; + unset($this->sorted[$eventName]); + } + public function once($eventName, callable $listener, $priority = 0) + { + $onceListener = function (\Google\Site_Kit_Dependencies\GuzzleHttp\Event\EventInterface $event) use(&$onceListener, $eventName, $listener, $priority) { + $this->removeListener($eventName, $onceListener); + $listener($event, $eventName); + }; + $this->on($eventName, $onceListener, $priority); + } + public function removeListener($eventName, callable $listener) + { + if (empty($this->listeners[$eventName])) { + return; + } + foreach ($this->listeners[$eventName] as $priority => $listeners) { + if (\false !== ($key = \array_search($listener, $listeners, \true))) { + unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]); + } + } + } + public function listeners($eventName = null) + { + // Return all events in a sorted priority order + if ($eventName === null) { + foreach (\array_keys($this->listeners) as $eventName) { + if (empty($this->sorted[$eventName])) { + $this->listeners($eventName); + } + } + return $this->sorted; + } + // Return the listeners for a specific event, sorted in priority order + if (empty($this->sorted[$eventName])) { + $this->sorted[$eventName] = []; + if (isset($this->listeners[$eventName])) { + \krsort($this->listeners[$eventName], \SORT_NUMERIC); + foreach ($this->listeners[$eventName] as $listeners) { + foreach ($listeners as $listener) { + $this->sorted[$eventName][] = $listener; + } + } + } + } + return $this->sorted[$eventName]; + } + public function hasListeners($eventName) + { + return !empty($this->listeners[$eventName]); + } + public function emit($eventName, \Google\Site_Kit_Dependencies\GuzzleHttp\Event\EventInterface $event) + { + if (isset($this->listeners[$eventName])) { + foreach ($this->listeners($eventName) as $listener) { + $listener($event, $eventName); + if ($event->isPropagationStopped()) { + break; + } + } + } + return $event; + } + public function attach(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface $subscriber) + { + foreach ($subscriber->getEvents() as $eventName => $listeners) { + if (\is_array($listeners[0])) { + foreach ($listeners as $listener) { + $this->on($eventName, [$subscriber, $listener[0]], isset($listener[1]) ? $listener[1] : 0); + } + } else { + $this->on($eventName, [$subscriber, $listeners[0]], isset($listeners[1]) ? $listeners[1] : 0); + } + } + } + public function detach(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface $subscriber) + { + foreach ($subscriber->getEvents() as $eventName => $listener) { + $this->removeListener($eventName, [$subscriber, $listener[0]]); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EmitterInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EmitterInterface.php new file mode 100644 index 000000000..04493e103 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EmitterInterface.php @@ -0,0 +1,90 @@ +transaction->exception; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ErrorEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ErrorEvent.php new file mode 100644 index 000000000..ead021c0c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ErrorEvent.php @@ -0,0 +1,27 @@ +transaction->exception; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EventInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EventInterface.php new file mode 100644 index 000000000..15ecad2de --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EventInterface.php @@ -0,0 +1,23 @@ +emitter) { + $this->emitter = new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\Emitter(); + } + return $this->emitter; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php new file mode 100644 index 000000000..42f91e4cf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php @@ -0,0 +1,83 @@ +getEmitter(); + foreach ($listeners as $el) { + if ($el['once']) { + $emitter->once($el['name'], $el['fn'], $el['priority']); + } else { + $emitter->on($el['name'], $el['fn'], $el['priority']); + } + } + } + /** + * Extracts the allowed events from the provided array, and ignores anything + * else in the array. The event listener must be specified as a callable or + * as an array of event listener data ("name", "fn", "priority", "once"). + * + * @param array $source Array containing callables or hashes of data to be + * prepared as event listeners. + * @param array $events Names of events to look for in the provided $source + * array. Other keys are ignored. + * @return array + */ + private function prepareListeners(array $source, array $events) + { + $listeners = []; + foreach ($events as $name) { + if (isset($source[$name])) { + $this->buildListener($name, $source[$name], $listeners); + } + } + return $listeners; + } + /** + * Creates a complete event listener definition from the provided array of + * listener data. Also works recursively if more than one listeners are + * contained in the provided array. + * + * @param string $name Name of the event the listener is for. + * @param array|callable $data Event listener data to prepare. + * @param array $listeners Array of listeners, passed by reference. + * + * @throws \InvalidArgumentException if the event data is malformed. + */ + private function buildListener($name, $data, &$listeners) + { + static $defaults = ['priority' => 0, 'once' => \false]; + // If a callable is provided, normalize it to the array format. + if (\is_callable($data)) { + $data = ['fn' => $data]; + } + // Prepare the listener and add it to the array, recursively. + if (isset($data['fn'])) { + $data['name'] = $name; + $listeners[] = $data + $defaults; + } elseif (\is_array($data)) { + foreach ($data as $listenerData) { + $this->buildListener($name, $listenerData, $listeners); + } + } else { + throw new \InvalidArgumentException('Each event listener must be a ' . 'callable or an associative array containing a "fn" key.'); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ProgressEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ProgressEvent.php new file mode 100644 index 000000000..5daf88226 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ProgressEvent.php @@ -0,0 +1,42 @@ +downloadSize = $downloadSize; + $this->downloaded = $downloaded; + $this->uploadSize = $uploadSize; + $this->uploaded = $uploaded; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/RequestEvents.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/RequestEvents.php new file mode 100644 index 000000000..a782a28e8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/RequestEvents.php @@ -0,0 +1,50 @@ + ['methodName']] + * - ['eventName' => ['methodName', $priority]] + * - ['eventName' => [['methodName'], ['otherMethod']] + * - ['eventName' => [['methodName'], ['otherMethod', $priority]] + * - ['eventName' => [['methodName', $priority], ['otherMethod', $priority]] + * + * @return array + */ + public function getEvents(); +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/BadResponseException.php new file mode 100644 index 000000000..faf8f8110 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/BadResponseException.php @@ -0,0 +1,10 @@ +response = $response; + } + /** + * Get the associated response + * + * @return ResponseInterface|null + */ + public function getResponse() + { + return $this->response; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/RequestException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/RequestException.php new file mode 100644 index 000000000..90be4e3fa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/RequestException.php @@ -0,0 +1,100 @@ +getStatusCode() : 0; + parent::__construct($message, $code, $previous); + $this->request = $request; + $this->response = $response; + } + /** + * Wrap non-RequestExceptions with a RequestException + * + * @param RequestInterface $request + * @param \Exception $e + * + * @return RequestException + */ + public static function wrapException(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Exception $e) + { + if ($e instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) { + return $e; + } elseif ($e instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\ConnectException) { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ConnectException($e->getMessage(), $request, null, $e); + } else { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException($e->getMessage(), $request, null, $e); + } + } + /** + * Factory method to create a new exception with a normalized error message + * + * @param RequestInterface $request Request + * @param ResponseInterface $response Response received + * @param \Exception $previous Previous exception + * + * @return self + */ + public static function create(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response = null, \Exception $previous = null) + { + if (!$response) { + return new self('Error completing request', $request, null, $previous); + } + $level = \floor($response->getStatusCode() / 100); + if ($level == '4') { + $label = 'Client error response'; + $className = __NAMESPACE__ . '\\ClientException'; + } elseif ($level == '5') { + $label = 'Server error response'; + $className = __NAMESPACE__ . '\\ServerException'; + } else { + $label = 'Unsuccessful response'; + $className = __CLASS__; + } + $message = $label . ' [url] ' . $request->getUrl() . ' [status code] ' . $response->getStatusCode() . ' [reason phrase] ' . $response->getReasonPhrase(); + return new $className($message, $request, $response, $previous); + } + /** + * Get the request that caused the exception + * + * @return RequestInterface + */ + public function getRequest() + { + return $this->request; + } + /** + * Get the associated response + * + * @return ResponseInterface|null + */ + public function getResponse() + { + return $this->response; + } + /** + * Check if a response was received + * + * @return bool + */ + public function hasResponse() + { + return $this->response !== null; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/ServerException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/ServerException.php new file mode 100644 index 000000000..f2fb7a083 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/ServerException.php @@ -0,0 +1,10 @@ +error = $error; + } + /** + * Get the associated error + * + * @return \LibXMLError|null + */ + public function getError() + { + return $this->error; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/HasDataTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/HasDataTrait.php new file mode 100644 index 000000000..562a1406f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/HasDataTrait.php @@ -0,0 +1,67 @@ +data); + } + public function offsetGet($offset) + { + return isset($this->data[$offset]) ? $this->data[$offset] : null; + } + public function offsetSet($offset, $value) + { + $this->data[$offset] = $value; + } + public function offsetExists($offset) + { + return isset($this->data[$offset]); + } + public function offsetUnset($offset) + { + unset($this->data[$offset]); + } + public function toArray() + { + return $this->data; + } + public function count() + { + return \count($this->data); + } + /** + * Get a value from the collection using a path syntax to retrieve nested + * data. + * + * @param string $path Path to traverse and retrieve a value from + * + * @return mixed|null + */ + public function getPath($path) + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getPath($this->data, $path); + } + /** + * Set a value into a nested array key. Keys will be created as needed to + * set the value. + * + * @param string $path Path to set + * @param mixed $value Value to set at the key + * + * @throws \RuntimeException when trying to setPath using a nested path + * that travels through a scalar value + */ + public function setPath($path, $value) + { + \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::setPath($this->data, $path, $value); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AbstractMessage.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AbstractMessage.php new file mode 100644 index 000000000..bbce6f571 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AbstractMessage.php @@ -0,0 +1,215 @@ +getBody(); + } + public function getProtocolVersion() + { + return $this->protocolVersion; + } + public function getBody() + { + return $this->body; + } + public function setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body = null) + { + if ($body === null) { + // Setting a null body will remove the body of the request + $this->removeHeader('Content-Length'); + $this->removeHeader('Transfer-Encoding'); + } + $this->body = $body; + } + public function addHeader($header, $value) + { + if (\is_array($value)) { + $current = \array_merge($this->getHeaderAsArray($header), $value); + } else { + $current = $this->getHeaderAsArray($header); + $current[] = (string) $value; + } + $this->setHeader($header, $current); + } + public function addHeaders(array $headers) + { + foreach ($headers as $name => $header) { + $this->addHeader($name, $header); + } + } + public function getHeader($header) + { + $name = \strtolower($header); + return isset($this->headers[$name]) ? \implode(', ', $this->headers[$name]) : ''; + } + public function getHeaderAsArray($header) + { + $name = \strtolower($header); + return isset($this->headers[$name]) ? $this->headers[$name] : []; + } + public function getHeaders() + { + $headers = []; + foreach ($this->headers as $name => $values) { + $headers[$this->headerNames[$name]] = $values; + } + return $headers; + } + public function setHeader($header, $value) + { + $header = \trim($header); + $name = \strtolower($header); + $this->headerNames[$name] = $header; + if (\is_array($value)) { + foreach ($value as &$v) { + $v = \trim($v); + } + $this->headers[$name] = $value; + } else { + $this->headers[$name] = [\trim($value)]; + } + } + public function setHeaders(array $headers) + { + $this->headers = $this->headerNames = []; + foreach ($headers as $key => $value) { + $this->addHeader($key, $value); + } + } + public function hasHeader($header) + { + return isset($this->headers[\strtolower($header)]); + } + public function removeHeader($header) + { + $name = \strtolower($header); + unset($this->headers[$name], $this->headerNames[$name]); + } + /** + * Parse an array of header values containing ";" separated data into an + * array of associative arrays representing the header key value pair + * data of the header. When a parameter does not contain a value, but just + * contains a key, this function will inject a key with a '' string value. + * + * @param MessageInterface $message That contains the header + * @param string $header Header to retrieve from the message + * + * @return array Returns the parsed header values. + */ + public static function parseHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message, $header) + { + static $trimmed = "\"' \n\t\r"; + $params = $matches = []; + foreach (self::normalizeHeader($message, $header) as $val) { + $part = []; + foreach (\preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) { + if (\preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) { + $m = $matches[0]; + if (isset($m[1])) { + $part[\trim($m[0], $trimmed)] = \trim($m[1], $trimmed); + } else { + $part[] = \trim($m[0], $trimmed); + } + } + } + if ($part) { + $params[] = $part; + } + } + return $params; + } + /** + * Converts an array of header values that may contain comma separated + * headers into an array of headers with no comma separated values. + * + * @param MessageInterface $message That contains the header + * @param string $header Header to retrieve from the message + * + * @return array Returns the normalized header field values. + */ + public static function normalizeHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message, $header) + { + $h = $message->getHeaderAsArray($header); + for ($i = 0, $total = \count($h); $i < $total; $i++) { + if (\strpos($h[$i], ',') === \false) { + continue; + } + foreach (\preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $h[$i]) as $v) { + $h[] = \trim($v); + } + unset($h[$i]); + } + return $h; + } + /** + * Gets the start-line and headers of a message as a string + * + * @param MessageInterface $message + * + * @return string + */ + public static function getStartLineAndHeaders(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message) + { + return static::getStartLine($message) . self::getHeadersAsString($message); + } + /** + * Gets the headers of a message as a string + * + * @param MessageInterface $message + * + * @return string + */ + public static function getHeadersAsString(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message) + { + $result = ''; + foreach ($message->getHeaders() as $name => $values) { + $result .= "\r\n{$name}: " . \implode(', ', $values); + } + return $result; + } + /** + * Gets the start line of a message + * + * @param MessageInterface $message + * + * @return string + * @throws \InvalidArgumentException + */ + public static function getStartLine(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message) + { + if ($message instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface) { + return \trim($message->getMethod() . ' ' . $message->getResource()) . ' HTTP/' . $message->getProtocolVersion(); + } elseif ($message instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface) { + return 'HTTP/' . $message->getProtocolVersion() . ' ' . $message->getStatusCode() . ' ' . $message->getReasonPhrase(); + } else { + throw new \InvalidArgumentException('Unknown message type'); + } + } + /** + * Accepts and modifies the options provided to the message in the + * constructor. + * + * Can be overridden in subclasses as necessary. + * + * @param array $options Options array passed by reference. + */ + protected function handleOptions(array &$options) + { + if (isset($options['protocol_version'])) { + $this->protocolVersion = $options['protocol_version']; + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php new file mode 100644 index 000000000..9dc618e87 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php @@ -0,0 +1,25 @@ +then($onFulfilled, $onRejected, $onProgress), [$future, 'wait'], [$future, 'cancel']); + } + public function getStatusCode() + { + return $this->_value->getStatusCode(); + } + public function setStatusCode($code) + { + $this->_value->setStatusCode($code); + } + public function getReasonPhrase() + { + return $this->_value->getReasonPhrase(); + } + public function setReasonPhrase($phrase) + { + $this->_value->setReasonPhrase($phrase); + } + public function getEffectiveUrl() + { + return $this->_value->getEffectiveUrl(); + } + public function setEffectiveUrl($url) + { + $this->_value->setEffectiveUrl($url); + } + public function json(array $config = []) + { + return $this->_value->json($config); + } + public function xml(array $config = []) + { + return $this->_value->xml($config); + } + public function __toString() + { + try { + return $this->_value->__toString(); + } catch (\Exception $e) { + \trigger_error($e->getMessage(), \E_USER_WARNING); + return ''; + } + } + public function getProtocolVersion() + { + return $this->_value->getProtocolVersion(); + } + public function setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body = null) + { + $this->_value->setBody($body); + } + public function getBody() + { + return $this->_value->getBody(); + } + public function getHeaders() + { + return $this->_value->getHeaders(); + } + public function getHeader($header) + { + return $this->_value->getHeader($header); + } + public function getHeaderAsArray($header) + { + return $this->_value->getHeaderAsArray($header); + } + public function hasHeader($header) + { + return $this->_value->hasHeader($header); + } + public function removeHeader($header) + { + $this->_value->removeHeader($header); + } + public function addHeader($header, $value) + { + $this->_value->addHeader($header, $value); + } + public function addHeaders(array $headers) + { + $this->_value->addHeaders($headers); + } + public function setHeader($header, $value) + { + $this->_value->setHeader($header, $value); + } + public function setHeaders(array $headers) + { + $this->_value->setHeaders($headers); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactory.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactory.php new file mode 100644 index 000000000..fc85e7239 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactory.php @@ -0,0 +1,260 @@ + 1, 'timeout' => 1, 'verify' => 1, 'ssl_key' => 1, 'cert' => 1, 'proxy' => 1, 'debug' => 1, 'save_to' => 1, 'stream' => 1, 'expect' => 1, 'future' => 1]; + /** @var array Default allow_redirects request option settings */ + private static $defaultRedirect = ['max' => 5, 'strict' => \false, 'referer' => \false, 'protocols' => ['http', 'https']]; + /** + * @param array $customOptions Associative array of custom request option + * names mapping to functions used to apply + * the option. The function accepts the request + * and the option value to apply. + */ + public function __construct(array $customOptions = []) + { + $this->errorPlugin = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\HttpError(); + $this->redirectPlugin = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Redirect(); + $this->customOptions = $customOptions; + } + public function createResponse($statusCode, array $headers = [], $body = null, array $options = []) + { + if (null !== $body) { + $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($body); + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\Response($statusCode, $headers, $body, $options); + } + public function createRequest($method, $url, array $options = []) + { + // Handle the request protocol version option that needs to be + // specified in the request constructor. + if (isset($options['version'])) { + $options['config']['protocol_version'] = $options['version']; + unset($options['version']); + } + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\Request($method, $url, [], null, isset($options['config']) ? $options['config'] : []); + unset($options['config']); + // Use a POST body by default + if (\strtoupper($method) == 'POST' && !isset($options['body']) && !isset($options['json'])) { + $options['body'] = []; + } + if ($options) { + $this->applyOptions($request, $options); + } + return $request; + } + /** + * Create a request or response object from an HTTP message string + * + * @param string $message Message to parse + * + * @return RequestInterface|ResponseInterface + * @throws \InvalidArgumentException if unable to parse a message + */ + public function fromMessage($message) + { + static $parser; + if (!$parser) { + $parser = new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageParser(); + } + // Parse a response + if (\strtoupper(\substr($message, 0, 4)) == 'HTTP') { + $data = $parser->parseResponse($message); + return $this->createResponse($data['code'], $data['headers'], $data['body'] === '' ? null : $data['body'], $data); + } + // Parse a request + if (!($data = $parser->parseRequest($message))) { + throw new \InvalidArgumentException('Unable to parse request'); + } + return $this->createRequest($data['method'], \Google\Site_Kit_Dependencies\GuzzleHttp\Url::buildUrl($data['request_url']), ['headers' => $data['headers'], 'body' => $data['body'] === '' ? null : $data['body'], 'config' => ['protocol_version' => $data['protocol_version']]]); + } + /** + * Apply POST fields and files to a request to attempt to give an accurate + * representation. + * + * @param RequestInterface $request Request to update + * @param array $body Body to apply + */ + protected function addPostData(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, array $body) + { + static $fields = ['string' => \true, 'array' => \true, 'NULL' => \true, 'boolean' => \true, 'double' => \true, 'integer' => \true]; + $post = new \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostBody(); + foreach ($body as $key => $value) { + if (isset($fields[\gettype($value)])) { + $post->setField($key, $value); + } elseif ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface) { + $post->addFile($value); + } else { + $post->addFile(new \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFile($key, $value)); + } + } + if ($request->getHeader('Content-Type') == 'multipart/form-data') { + $post->forceMultipartUpload(\true); + } + $request->setBody($post); + } + protected function applyOptions(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, array $options = []) + { + $config = $request->getConfig(); + $emitter = $request->getEmitter(); + foreach ($options as $key => $value) { + if (isset(self::$configMap[$key])) { + $config[$key] = $value; + continue; + } + switch ($key) { + case 'allow_redirects': + if ($value === \false) { + continue 2; + } + if ($value === \true) { + $value = self::$defaultRedirect; + } elseif (!\is_array($value)) { + throw new \InvalidArgumentException('allow_redirects must be true, false, or array'); + } else { + // Merge the default settings with the provided settings + $value += self::$defaultRedirect; + } + $config['redirect'] = $value; + $emitter->attach($this->redirectPlugin); + break; + case 'decode_content': + if ($value === \false) { + continue 2; + } + $config['decode_content'] = \true; + if ($value !== \true) { + $request->setHeader('Accept-Encoding', $value); + } + break; + case 'headers': + if (!\is_array($value)) { + throw new \InvalidArgumentException('header value must be an array'); + } + foreach ($value as $k => $v) { + $request->setHeader($k, $v); + } + break; + case 'exceptions': + if ($value === \true) { + $emitter->attach($this->errorPlugin); + } + break; + case 'body': + if (\is_array($value)) { + $this->addPostData($request, $value); + } elseif ($value !== null) { + $request->setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($value)); + } + break; + case 'auth': + if (!$value) { + continue 2; + } + if (\is_array($value)) { + $type = isset($value[2]) ? \strtolower($value[2]) : 'basic'; + } else { + $type = \strtolower($value); + } + $config['auth'] = $value; + if ($type == 'basic') { + $request->setHeader('Authorization', 'Basic ' . \base64_encode("{$value[0]}:{$value[1]}")); + } elseif ($type == 'digest') { + // @todo: Do not rely on curl + $config->setPath('curl/' . \CURLOPT_HTTPAUTH, \CURLAUTH_DIGEST); + $config->setPath('curl/' . \CURLOPT_USERPWD, "{$value[0]}:{$value[1]}"); + } + break; + case 'query': + if ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) { + $original = $request->getQuery(); + // Do not overwrite existing query string variables by + // overwriting the object with the query string data passed + // in the URL + $value->overwriteWith($original->toArray()); + $request->setQuery($value); + } elseif (\is_array($value)) { + // Do not overwrite existing query string variables + $query = $request->getQuery(); + foreach ($value as $k => $v) { + if (!isset($query[$k])) { + $query[$k] = $v; + } + } + } else { + throw new \InvalidArgumentException('query must be an array or Query object'); + } + break; + case 'cookies': + if ($value === \true) { + static $cookie = null; + if (!$cookie) { + $cookie = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Cookie(); + } + $emitter->attach($cookie); + } elseif (\is_array($value)) { + $emitter->attach(new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Cookie(\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\CookieJar::fromArray($value, $request->getHost()))); + } elseif ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\CookieJarInterface) { + $emitter->attach(new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Cookie($value)); + } elseif ($value !== \false) { + throw new \InvalidArgumentException('cookies must be an array, true, or CookieJarInterface'); + } + break; + case 'events': + if (!\is_array($value)) { + throw new \InvalidArgumentException('events must be an array'); + } + $this->attachListeners($request, $this->prepareListeners($value, ['before', 'complete', 'error', 'progress', 'end'])); + break; + case 'subscribers': + if (!\is_array($value)) { + throw new \InvalidArgumentException('subscribers must be an array'); + } + foreach ($value as $subscribers) { + $emitter->attach($subscribers); + } + break; + case 'json': + $request->setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory(\json_encode($value))); + if (!$request->hasHeader('Content-Type')) { + $request->setHeader('Content-Type', 'application/json'); + } + break; + default: + // Check for custom handler functions. + if (isset($this->customOptions[$key])) { + $fn = $this->customOptions[$key]; + $fn($request, $value); + continue 2; + } + throw new \InvalidArgumentException("No method can handle the {$key} config key"); + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php new file mode 100644 index 000000000..b27d8b57c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php @@ -0,0 +1,65 @@ +getHeaders() as $name => $values) { + * echo $name . ": " . implode(", ", $values); + * } + * + * @return array Returns an associative array of the message's headers. + */ + public function getHeaders(); + /** + * Retrieve a header by the given case-insensitive name. + * + * @param string $header Case-insensitive header name. + * + * @return string + */ + public function getHeader($header); + /** + * Retrieves a header by the given case-insensitive name as an array of strings. + * + * @param string $header Case-insensitive header name. + * + * @return string[] + */ + public function getHeaderAsArray($header); + /** + * Checks if a header exists by the given case-insensitive name. + * + * @param string $header Case-insensitive header name. + * + * @return bool Returns true if any header names match the given header + * name using a case-insensitive string comparison. Returns false if + * no matching header name is found in the message. + */ + public function hasHeader($header); + /** + * Remove a specific header by case-insensitive name. + * + * @param string $header Case-insensitive header name. + */ + public function removeHeader($header); + /** + * Appends a header value to any existing values associated with the + * given header name. + * + * @param string $header Header name to add + * @param string $value Value of the header + */ + public function addHeader($header, $value); + /** + * Merges in an associative array of headers. + * + * Each array key MUST be a string representing the case-insensitive name + * of a header. Each value MUST be either a string or an array of strings. + * For each value, the value is appended to any existing header of the same + * name, or, if a header does not already exist by the given name, then the + * header is added. + * + * @param array $headers Associative array of headers to add to the message + */ + public function addHeaders(array $headers); + /** + * Sets a header, replacing any existing values of any headers with the + * same case-insensitive name. + * + * The header values MUST be a string or an array of strings. + * + * @param string $header Header name + * @param string|array $value Header value(s) + */ + public function setHeader($header, $value); + /** + * Sets headers, replacing any headers that have already been set on the + * message. + * + * The array keys MUST be a string. The array values must be either a + * string or an array of strings. + * + * @param array $headers Headers to set. + */ + public function setHeaders(array $headers); +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageParser.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageParser.php new file mode 100644 index 000000000..96b5633ef --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageParser.php @@ -0,0 +1,135 @@ +parseMessage($message))) { + return \false; + } + // Parse the protocol and protocol version + if (isset($parts['start_line'][2])) { + $startParts = \explode('/', $parts['start_line'][2]); + $protocol = \strtoupper($startParts[0]); + $version = isset($startParts[1]) ? $startParts[1] : '1.1'; + } else { + $protocol = 'HTTP'; + $version = '1.1'; + } + $parsed = ['method' => \strtoupper($parts['start_line'][0]), 'protocol' => $protocol, 'protocol_version' => $version, 'headers' => $parts['headers'], 'body' => $parts['body']]; + $parsed['request_url'] = $this->getUrlPartsFromMessage(isset($parts['start_line'][1]) ? $parts['start_line'][1] : '', $parsed); + return $parsed; + } + /** + * Parse an HTTP response message into an associative array of parts. + * + * @param string $message HTTP response to parse + * + * @return array|bool Returns false if the message is invalid + */ + public function parseResponse($message) + { + if (!($parts = $this->parseMessage($message))) { + return \false; + } + list($protocol, $version) = \explode('/', \trim($parts['start_line'][0])); + return ['protocol' => $protocol, 'protocol_version' => $version, 'code' => $parts['start_line'][1], 'reason_phrase' => isset($parts['start_line'][2]) ? $parts['start_line'][2] : '', 'headers' => $parts['headers'], 'body' => $parts['body']]; + } + /** + * Parse a message into parts + * + * @param string $message Message to parse + * + * @return array|bool + */ + private function parseMessage($message) + { + if (!$message) { + return \false; + } + $startLine = null; + $headers = []; + $body = ''; + // Iterate over each line in the message, accounting for line endings + $lines = \preg_split('/(\\r?\\n)/', $message, -1, \PREG_SPLIT_DELIM_CAPTURE); + for ($i = 0, $totalLines = \count($lines); $i < $totalLines; $i += 2) { + $line = $lines[$i]; + // If two line breaks were encountered, then this is the end of body + if (empty($line)) { + if ($i < $totalLines - 1) { + $body = \implode('', \array_slice($lines, $i + 2)); + } + break; + } + // Parse message headers + if (!$startLine) { + $startLine = \explode(' ', $line, 3); + } elseif (\strpos($line, ':')) { + $parts = \explode(':', $line, 2); + $key = \trim($parts[0]); + $value = isset($parts[1]) ? \trim($parts[1]) : ''; + if (!isset($headers[$key])) { + $headers[$key] = $value; + } elseif (!\is_array($headers[$key])) { + $headers[$key] = [$headers[$key], $value]; + } else { + $headers[$key][] = $value; + } + } + } + return ['start_line' => $startLine, 'headers' => $headers, 'body' => $body]; + } + /** + * Create URL parts from HTTP message parts + * + * @param string $requestUrl Associated URL + * @param array $parts HTTP message parts + * + * @return array + */ + private function getUrlPartsFromMessage($requestUrl, array $parts) + { + // Parse the URL information from the message + $urlParts = ['path' => $requestUrl, 'scheme' => 'http']; + // Check for the Host header + if (isset($parts['headers']['Host'])) { + $urlParts['host'] = $parts['headers']['Host']; + } elseif (isset($parts['headers']['host'])) { + $urlParts['host'] = $parts['headers']['host']; + } else { + $urlParts['host'] = null; + } + if (\false === \strpos($urlParts['host'], ':')) { + $urlParts['port'] = ''; + } else { + $hostParts = \explode(':', $urlParts['host']); + $urlParts['host'] = \trim($hostParts[0]); + $urlParts['port'] = (int) \trim($hostParts[1]); + if ($urlParts['port'] == 443) { + $urlParts['scheme'] = 'https'; + } + } + // Check if a query is present + $path = $urlParts['path']; + $qpos = \strpos($path, '?'); + if ($qpos) { + $urlParts['query'] = \substr($path, $qpos + 1); + $urlParts['path'] = \substr($path, 0, $qpos); + } else { + $urlParts['query'] = ''; + } + return $urlParts; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/Request.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/Request.php new file mode 100644 index 000000000..49a8971fa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/Request.php @@ -0,0 +1,160 @@ +setUrl($url); + $this->method = \strtoupper($method); + $this->handleOptions($options); + $this->transferOptions = new \Google\Site_Kit_Dependencies\GuzzleHttp\Collection($options); + $this->addPrepareEvent(); + if ($body !== null) { + $this->setBody($body); + } + if ($headers) { + foreach ($headers as $key => $value) { + $this->addHeader($key, $value); + } + } + } + public function __clone() + { + if ($this->emitter) { + $this->emitter = clone $this->emitter; + } + $this->transferOptions = clone $this->transferOptions; + $this->url = clone $this->url; + } + public function setUrl($url) + { + $this->url = $url instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Url ? $url : \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($url); + $this->updateHostHeaderFromUrl(); + } + public function getUrl() + { + return (string) $this->url; + } + public function setQuery($query) + { + $this->url->setQuery($query); + } + public function getQuery() + { + return $this->url->getQuery(); + } + public function setMethod($method) + { + $this->method = \strtoupper($method); + } + public function getMethod() + { + return $this->method; + } + public function getScheme() + { + return $this->url->getScheme(); + } + public function setScheme($scheme) + { + $this->url->setScheme($scheme); + } + public function getPort() + { + return $this->url->getPort(); + } + public function setPort($port) + { + $this->url->setPort($port); + $this->updateHostHeaderFromUrl(); + } + public function getHost() + { + return $this->url->getHost(); + } + public function setHost($host) + { + $this->url->setHost($host); + $this->updateHostHeaderFromUrl(); + } + public function getPath() + { + return '/' . \ltrim($this->url->getPath(), '/'); + } + public function setPath($path) + { + $this->url->setPath($path); + } + public function getResource() + { + $resource = $this->getPath(); + if ($query = (string) $this->url->getQuery()) { + $resource .= '?' . $query; + } + return $resource; + } + public function getConfig() + { + return $this->transferOptions; + } + protected function handleOptions(array &$options) + { + parent::handleOptions($options); + // Use a custom emitter if one is specified, and remove it from + // options that are exposed through getConfig() + if (isset($options['emitter'])) { + $this->emitter = $options['emitter']; + unset($options['emitter']); + } + } + /** + * Adds a subscriber that ensures a request's body is prepared before + * sending. + */ + private function addPrepareEvent() + { + static $subscriber; + if (!$subscriber) { + $subscriber = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Prepare(); + } + $this->getEmitter()->attach($subscriber); + } + private function updateHostHeaderFromUrl() + { + $port = $this->url->getPort(); + $scheme = $this->url->getScheme(); + if ($host = $this->url->getHost()) { + if ($port == 80 && $scheme == 'http' || $port == 443 && $scheme == 'https') { + $this->setHeader('Host', $host); + } else { + $this->setHeader('Host', "{$host}:{$port}"); + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/RequestInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/RequestInterface.php new file mode 100644 index 000000000..9d8717a4c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/RequestInterface.php @@ -0,0 +1,121 @@ + 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 208 => 'Already Reported', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Reserved for WebDAV advanced collections expired proposal', 426 => 'Upgrade required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates (Experimental)', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 510 => 'Not Extended', 511 => 'Network Authentication Required']; + /** @var string The reason phrase of the response (human readable code) */ + private $reasonPhrase; + /** @var string The status code of the response */ + private $statusCode; + /** @var string The effective URL that returned this response */ + private $effectiveUrl; + /** + * @param int|string $statusCode The response status code (e.g. 200) + * @param array $headers The response headers + * @param StreamInterface $body The body of the response + * @param array $options Response message options + * - reason_phrase: Set a custom reason phrase + * - protocol_version: Set a custom protocol version + */ + public function __construct($statusCode, array $headers = [], \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body = null, array $options = []) + { + $this->statusCode = (int) $statusCode; + $this->handleOptions($options); + // Assume a reason phrase if one was not applied as an option + if (!$this->reasonPhrase && isset(self::$statusTexts[$this->statusCode])) { + $this->reasonPhrase = self::$statusTexts[$this->statusCode]; + } + if ($headers) { + $this->setHeaders($headers); + } + if ($body) { + $this->setBody($body); + } + } + public function getStatusCode() + { + return $this->statusCode; + } + public function setStatusCode($code) + { + return $this->statusCode = (int) $code; + } + public function getReasonPhrase() + { + return $this->reasonPhrase; + } + public function setReasonPhrase($phrase) + { + return $this->reasonPhrase = $phrase; + } + public function json(array $config = []) + { + try { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode((string) $this->getBody(), isset($config['object']) ? !$config['object'] : \true, 512, isset($config['big_int_strings']) ? \JSON_BIGINT_AS_STRING : 0); + } catch (\InvalidArgumentException $e) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ParseException($e->getMessage(), $this); + } + } + public function xml(array $config = []) + { + $disableEntities = \libxml_disable_entity_loader(\true); + $internalErrors = \libxml_use_internal_errors(\true); + try { + // Allow XML to be retrieved even if there is no response body + $xml = new \SimpleXMLElement((string) $this->getBody() ?: '', isset($config['libxml_options']) ? $config['libxml_options'] : \LIBXML_NONET, \false, isset($config['ns']) ? $config['ns'] : '', isset($config['ns_is_prefix']) ? $config['ns_is_prefix'] : \false); + \libxml_disable_entity_loader($disableEntities); + \libxml_use_internal_errors($internalErrors); + } catch (\Exception $e) { + \libxml_disable_entity_loader($disableEntities); + \libxml_use_internal_errors($internalErrors); + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\XmlParseException('Unable to parse response body into XML: ' . $e->getMessage(), $this, $e, \libxml_get_last_error() ?: null); + } + return $xml; + } + public function getEffectiveUrl() + { + return $this->effectiveUrl; + } + public function setEffectiveUrl($url) + { + $this->effectiveUrl = $url; + } + /** + * Accepts and modifies the options provided to the response in the + * constructor. + * + * @param array $options Options array passed by reference. + */ + protected function handleOptions(array &$options = []) + { + parent::handleOptions($options); + if (isset($options['reason_phrase'])) { + $this->reasonPhrase = $options['reason_phrase']; + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/ResponseInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/ResponseInterface.php new file mode 100644 index 000000000..360363deb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/ResponseInterface.php @@ -0,0 +1,105 @@ + 'text/vnd.in3d.3dml', '3g2' => 'video/3gpp2', '3gp' => 'video/3gpp', '7z' => 'application/x-7z-compressed', 'aab' => 'application/x-authorware-bin', 'aac' => 'audio/x-aac', 'aam' => 'application/x-authorware-map', 'aas' => 'application/x-authorware-seg', 'abw' => 'application/x-abiword', 'ac' => 'application/pkix-attr-cert', 'acc' => 'application/vnd.americandynamics.acc', 'ace' => 'application/x-ace-compressed', 'acu' => 'application/vnd.acucobol', 'acutc' => 'application/vnd.acucorp', 'adp' => 'audio/adpcm', 'aep' => 'application/vnd.audiograph', 'afm' => 'application/x-font-type1', 'afp' => 'application/vnd.ibm.modcap', 'ahead' => 'application/vnd.ahead.space', 'ai' => 'application/postscript', 'aif' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', 'aiff' => 'audio/x-aiff', 'air' => 'application/vnd.adobe.air-application-installer-package+zip', 'ait' => 'application/vnd.dvb.ait', 'ami' => 'application/vnd.amiga.ami', 'apk' => 'application/vnd.android.package-archive', 'application' => 'application/x-ms-application', 'apr' => 'application/vnd.lotus-approach', 'asa' => 'text/plain', 'asax' => 'application/octet-stream', 'asc' => 'application/pgp-signature', 'ascx' => 'text/plain', 'asf' => 'video/x-ms-asf', 'ashx' => 'text/plain', 'asm' => 'text/x-asm', 'asmx' => 'text/plain', 'aso' => 'application/vnd.accpac.simply.aso', 'asp' => 'text/plain', 'aspx' => 'text/plain', 'asx' => 'video/x-ms-asf', 'atc' => 'application/vnd.acucorp', 'atom' => 'application/atom+xml', 'atomcat' => 'application/atomcat+xml', 'atomsvc' => 'application/atomsvc+xml', 'atx' => 'application/vnd.antix.game-component', 'au' => 'audio/basic', 'avi' => 'video/x-msvideo', 'aw' => 'application/applixware', 'axd' => 'text/plain', 'azf' => 'application/vnd.airzip.filesecure.azf', 'azs' => 'application/vnd.airzip.filesecure.azs', 'azw' => 'application/vnd.amazon.ebook', 'bat' => 'application/x-msdownload', 'bcpio' => 'application/x-bcpio', 'bdf' => 'application/x-font-bdf', 'bdm' => 'application/vnd.syncml.dm+wbxml', 'bed' => 'application/vnd.realvnc.bed', 'bh2' => 'application/vnd.fujitsu.oasysprs', 'bin' => 'application/octet-stream', 'bmi' => 'application/vnd.bmi', 'bmp' => 'image/bmp', 'book' => 'application/vnd.framemaker', 'box' => 'application/vnd.previewsystems.box', 'boz' => 'application/x-bzip2', 'bpk' => 'application/octet-stream', 'btif' => 'image/prs.btif', 'bz' => 'application/x-bzip', 'bz2' => 'application/x-bzip2', 'c' => 'text/x-c', 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', 'c4d' => 'application/vnd.clonk.c4group', 'c4f' => 'application/vnd.clonk.c4group', 'c4g' => 'application/vnd.clonk.c4group', 'c4p' => 'application/vnd.clonk.c4group', 'c4u' => 'application/vnd.clonk.c4group', 'cab' => 'application/vnd.ms-cab-compressed', 'car' => 'application/vnd.curl.car', 'cat' => 'application/vnd.ms-pki.seccat', 'cc' => 'text/x-c', 'cct' => 'application/x-director', 'ccxml' => 'application/ccxml+xml', 'cdbcmsg' => 'application/vnd.contact.cmsg', 'cdf' => 'application/x-netcdf', 'cdkey' => 'application/vnd.mediastation.cdkey', 'cdmia' => 'application/cdmi-capability', 'cdmic' => 'application/cdmi-container', 'cdmid' => 'application/cdmi-domain', 'cdmio' => 'application/cdmi-object', 'cdmiq' => 'application/cdmi-queue', 'cdx' => 'chemical/x-cdx', 'cdxml' => 'application/vnd.chemdraw+xml', 'cdy' => 'application/vnd.cinderella', 'cer' => 'application/pkix-cert', 'cfc' => 'application/x-coldfusion', 'cfm' => 'application/x-coldfusion', 'cgm' => 'image/cgm', 'chat' => 'application/x-chat', 'chm' => 'application/vnd.ms-htmlhelp', 'chrt' => 'application/vnd.kde.kchart', 'cif' => 'chemical/x-cif', 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', 'cil' => 'application/vnd.ms-artgalry', 'cla' => 'application/vnd.claymore', 'class' => 'application/java-vm', 'clkk' => 'application/vnd.crick.clicker.keyboard', 'clkp' => 'application/vnd.crick.clicker.palette', 'clkt' => 'application/vnd.crick.clicker.template', 'clkw' => 'application/vnd.crick.clicker.wordbank', 'clkx' => 'application/vnd.crick.clicker', 'clp' => 'application/x-msclip', 'cmc' => 'application/vnd.cosmocaller', 'cmdf' => 'chemical/x-cmdf', 'cml' => 'chemical/x-cml', 'cmp' => 'application/vnd.yellowriver-custom-menu', 'cmx' => 'image/x-cmx', 'cod' => 'application/vnd.rim.cod', 'com' => 'application/x-msdownload', 'conf' => 'text/plain', 'cpio' => 'application/x-cpio', 'cpp' => 'text/x-c', 'cpt' => 'application/mac-compactpro', 'crd' => 'application/x-mscardfile', 'crl' => 'application/pkix-crl', 'crt' => 'application/x-x509-ca-cert', 'cryptonote' => 'application/vnd.rig.cryptonote', 'cs' => 'text/plain', 'csh' => 'application/x-csh', 'csml' => 'chemical/x-csml', 'csp' => 'application/vnd.commonspace', 'css' => 'text/css', 'cst' => 'application/x-director', 'csv' => 'text/csv', 'cu' => 'application/cu-seeme', 'curl' => 'text/vnd.curl', 'cww' => 'application/prs.cww', 'cxt' => 'application/x-director', 'cxx' => 'text/x-c', 'dae' => 'model/vnd.collada+xml', 'daf' => 'application/vnd.mobius.daf', 'dataless' => 'application/vnd.fdsn.seed', 'davmount' => 'application/davmount+xml', 'dcr' => 'application/x-director', 'dcurl' => 'text/vnd.curl.dcurl', 'dd2' => 'application/vnd.oma.dd2+xml', 'ddd' => 'application/vnd.fujixerox.ddd', 'deb' => 'application/x-debian-package', 'def' => 'text/plain', 'deploy' => 'application/octet-stream', 'der' => 'application/x-x509-ca-cert', 'dfac' => 'application/vnd.dreamfactory', 'dic' => 'text/x-c', 'dir' => 'application/x-director', 'dis' => 'application/vnd.mobius.dis', 'dist' => 'application/octet-stream', 'distz' => 'application/octet-stream', 'djv' => 'image/vnd.djvu', 'djvu' => 'image/vnd.djvu', 'dll' => 'application/x-msdownload', 'dmg' => 'application/octet-stream', 'dms' => 'application/octet-stream', 'dna' => 'application/vnd.dna', 'doc' => 'application/msword', 'docm' => 'application/vnd.ms-word.document.macroenabled.12', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dot' => 'application/msword', 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'dp' => 'application/vnd.osgi.dp', 'dpg' => 'application/vnd.dpgraph', 'dra' => 'audio/vnd.dra', 'dsc' => 'text/prs.lines.tag', 'dssc' => 'application/dssc+der', 'dtb' => 'application/x-dtbook+xml', 'dtd' => 'application/xml-dtd', 'dts' => 'audio/vnd.dts', 'dtshd' => 'audio/vnd.dts.hd', 'dump' => 'application/octet-stream', 'dvi' => 'application/x-dvi', 'dwf' => 'model/vnd.dwf', 'dwg' => 'image/vnd.dwg', 'dxf' => 'image/vnd.dxf', 'dxp' => 'application/vnd.spotfire.dxp', 'dxr' => 'application/x-director', 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', 'ecma' => 'application/ecmascript', 'edm' => 'application/vnd.novadigm.edm', 'edx' => 'application/vnd.novadigm.edx', 'efif' => 'application/vnd.picsel', 'ei6' => 'application/vnd.pg.osasli', 'elc' => 'application/octet-stream', 'eml' => 'message/rfc822', 'emma' => 'application/emma+xml', 'eol' => 'audio/vnd.digital-winds', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'epub' => 'application/epub+zip', 'es3' => 'application/vnd.eszigno3+xml', 'esf' => 'application/vnd.epson.esf', 'et3' => 'application/vnd.eszigno3+xml', 'etx' => 'text/x-setext', 'exe' => 'application/x-msdownload', 'exi' => 'application/exi', 'ext' => 'application/vnd.novadigm.ext', 'ez' => 'application/andrew-inset', 'ez2' => 'application/vnd.ezpix-album', 'ez3' => 'application/vnd.ezpix-package', 'f' => 'text/x-fortran', 'f4v' => 'video/x-f4v', 'f77' => 'text/x-fortran', 'f90' => 'text/x-fortran', 'fbs' => 'image/vnd.fastbidsheet', 'fcs' => 'application/vnd.isac.fcs', 'fdf' => 'application/vnd.fdf', 'fe_launch' => 'application/vnd.denovo.fcselayout-link', 'fg5' => 'application/vnd.fujitsu.oasysgp', 'fgd' => 'application/x-director', 'fh' => 'image/x-freehand', 'fh4' => 'image/x-freehand', 'fh5' => 'image/x-freehand', 'fh7' => 'image/x-freehand', 'fhc' => 'image/x-freehand', 'fig' => 'application/x-xfig', 'fli' => 'video/x-fli', 'flo' => 'application/vnd.micrografx.flo', 'flv' => 'video/x-flv', 'flw' => 'application/vnd.kde.kivio', 'flx' => 'text/vnd.fmi.flexstor', 'fly' => 'text/vnd.fly', 'fm' => 'application/vnd.framemaker', 'fnc' => 'application/vnd.frogans.fnc', 'for' => 'text/x-fortran', 'fpx' => 'image/vnd.fpx', 'frame' => 'application/vnd.framemaker', 'fsc' => 'application/vnd.fsc.weblaunch', 'fst' => 'image/vnd.fst', 'ftc' => 'application/vnd.fluxtime.clip', 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', 'fvt' => 'video/vnd.fvt', 'fxp' => 'application/vnd.adobe.fxp', 'fxpl' => 'application/vnd.adobe.fxp', 'fzs' => 'application/vnd.fuzzysheet', 'g2w' => 'application/vnd.geoplan', 'g3' => 'image/g3fax', 'g3w' => 'application/vnd.geospace', 'gac' => 'application/vnd.groove-account', 'gdl' => 'model/vnd.gdl', 'geo' => 'application/vnd.dynageo', 'gex' => 'application/vnd.geometry-explorer', 'ggb' => 'application/vnd.geogebra.file', 'ggt' => 'application/vnd.geogebra.tool', 'ghf' => 'application/vnd.groove-help', 'gif' => 'image/gif', 'gim' => 'application/vnd.groove-identity-message', 'gmx' => 'application/vnd.gmx', 'gnumeric' => 'application/x-gnumeric', 'gph' => 'application/vnd.flographit', 'gqf' => 'application/vnd.grafeq', 'gqs' => 'application/vnd.grafeq', 'gram' => 'application/srgs', 'gre' => 'application/vnd.geometry-explorer', 'grv' => 'application/vnd.groove-injector', 'grxml' => 'application/srgs+xml', 'gsf' => 'application/x-font-ghostscript', 'gtar' => 'application/x-gtar', 'gtm' => 'application/vnd.groove-tool-message', 'gtw' => 'model/vnd.gtw', 'gv' => 'text/vnd.graphviz', 'gxt' => 'application/vnd.geonext', 'h' => 'text/x-c', 'h261' => 'video/h261', 'h263' => 'video/h263', 'h264' => 'video/h264', 'hal' => 'application/vnd.hal+xml', 'hbci' => 'application/vnd.hbci', 'hdf' => 'application/x-hdf', 'hh' => 'text/x-c', 'hlp' => 'application/winhlp', 'hpgl' => 'application/vnd.hp-hpgl', 'hpid' => 'application/vnd.hp-hpid', 'hps' => 'application/vnd.hp-hps', 'hqx' => 'application/mac-binhex40', 'hta' => 'application/octet-stream', 'htc' => 'text/html', 'htke' => 'application/vnd.kenameaapp', 'htm' => 'text/html', 'html' => 'text/html', 'hvd' => 'application/vnd.yamaha.hv-dic', 'hvp' => 'application/vnd.yamaha.hv-voice', 'hvs' => 'application/vnd.yamaha.hv-script', 'i2g' => 'application/vnd.intergeo', 'icc' => 'application/vnd.iccprofile', 'ice' => 'x-conference/x-cooltalk', 'icm' => 'application/vnd.iccprofile', 'ico' => 'image/x-icon', 'ics' => 'text/calendar', 'ief' => 'image/ief', 'ifb' => 'text/calendar', 'ifm' => 'application/vnd.shana.informed.formdata', 'iges' => 'model/iges', 'igl' => 'application/vnd.igloader', 'igm' => 'application/vnd.insors.igm', 'igs' => 'model/iges', 'igx' => 'application/vnd.micrografx.igx', 'iif' => 'application/vnd.shana.informed.interchange', 'imp' => 'application/vnd.accpac.simply.imp', 'ims' => 'application/vnd.ms-ims', 'in' => 'text/plain', 'ini' => 'text/plain', 'ipfix' => 'application/ipfix', 'ipk' => 'application/vnd.shana.informed.package', 'irm' => 'application/vnd.ibm.rights-management', 'irp' => 'application/vnd.irepository.package+xml', 'iso' => 'application/octet-stream', 'itp' => 'application/vnd.shana.informed.formtemplate', 'ivp' => 'application/vnd.immervision-ivp', 'ivu' => 'application/vnd.immervision-ivu', 'jad' => 'text/vnd.sun.j2me.app-descriptor', 'jam' => 'application/vnd.jam', 'jar' => 'application/java-archive', 'java' => 'text/x-java-source', 'jisp' => 'application/vnd.jisp', 'jlt' => 'application/vnd.hp-jlyt', 'jnlp' => 'application/x-java-jnlp-file', 'joda' => 'application/vnd.joost.joda-archive', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpgm' => 'video/jpm', 'jpgv' => 'video/jpeg', 'jpm' => 'video/jpm', 'js' => 'text/javascript', 'json' => 'application/json', 'kar' => 'audio/midi', 'karbon' => 'application/vnd.kde.karbon', 'kfo' => 'application/vnd.kde.kformula', 'kia' => 'application/vnd.kidspiration', 'kml' => 'application/vnd.google-earth.kml+xml', 'kmz' => 'application/vnd.google-earth.kmz', 'kne' => 'application/vnd.kinar', 'knp' => 'application/vnd.kinar', 'kon' => 'application/vnd.kde.kontour', 'kpr' => 'application/vnd.kde.kpresenter', 'kpt' => 'application/vnd.kde.kpresenter', 'ksp' => 'application/vnd.kde.kspread', 'ktr' => 'application/vnd.kahootz', 'ktx' => 'image/ktx', 'ktz' => 'application/vnd.kahootz', 'kwd' => 'application/vnd.kde.kword', 'kwt' => 'application/vnd.kde.kword', 'lasxml' => 'application/vnd.las.las+xml', 'latex' => 'application/x-latex', 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', 'les' => 'application/vnd.hhe.lesson-player', 'lha' => 'application/octet-stream', 'link66' => 'application/vnd.route66.link66+xml', 'list' => 'text/plain', 'list3820' => 'application/vnd.ibm.modcap', 'listafp' => 'application/vnd.ibm.modcap', 'log' => 'text/plain', 'lostxml' => 'application/lost+xml', 'lrf' => 'application/octet-stream', 'lrm' => 'application/vnd.ms-lrm', 'ltf' => 'application/vnd.frogans.ltf', 'lvp' => 'audio/vnd.lucent.voice', 'lwp' => 'application/vnd.lotus-wordpro', 'lzh' => 'application/octet-stream', 'm13' => 'application/x-msmediaview', 'm14' => 'application/x-msmediaview', 'm1v' => 'video/mpeg', 'm21' => 'application/mp21', 'm2a' => 'audio/mpeg', 'm2v' => 'video/mpeg', 'm3a' => 'audio/mpeg', 'm3u' => 'audio/x-mpegurl', 'm3u8' => 'application/vnd.apple.mpegurl', 'm4a' => 'audio/mp4', 'm4u' => 'video/vnd.mpegurl', 'm4v' => 'video/mp4', 'ma' => 'application/mathematica', 'mads' => 'application/mads+xml', 'mag' => 'application/vnd.ecowin.chart', 'maker' => 'application/vnd.framemaker', 'man' => 'text/troff', 'mathml' => 'application/mathml+xml', 'mb' => 'application/mathematica', 'mbk' => 'application/vnd.mobius.mbk', 'mbox' => 'application/mbox', 'mc1' => 'application/vnd.medcalcdata', 'mcd' => 'application/vnd.mcd', 'mcurl' => 'text/vnd.curl.mcurl', 'mdb' => 'application/x-msaccess', 'mdi' => 'image/vnd.ms-modi', 'me' => 'text/troff', 'mesh' => 'model/mesh', 'meta4' => 'application/metalink4+xml', 'mets' => 'application/mets+xml', 'mfm' => 'application/vnd.mfmp', 'mgp' => 'application/vnd.osgeo.mapguide.package', 'mgz' => 'application/vnd.proteus.magazine', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mif' => 'application/vnd.mif', 'mime' => 'message/rfc822', 'mj2' => 'video/mj2', 'mjp2' => 'video/mj2', 'mlp' => 'application/vnd.dolby.mlp', 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', 'mmf' => 'application/vnd.smaf', 'mmr' => 'image/vnd.fujixerox.edmics-mmr', 'mny' => 'application/x-msmoney', 'mobi' => 'application/x-mobipocket-ebook', 'mods' => 'application/mods+xml', 'mov' => 'video/quicktime', 'movie' => 'video/x-sgi-movie', 'mp2' => 'audio/mpeg', 'mp21' => 'application/mp21', 'mp2a' => 'audio/mpeg', 'mp3' => 'audio/mpeg', 'mp4' => 'video/mp4', 'mp4a' => 'audio/mp4', 'mp4s' => 'application/mp4', 'mp4v' => 'video/mp4', 'mpc' => 'application/vnd.mophun.certificate', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpg4' => 'video/mp4', 'mpga' => 'audio/mpeg', 'mpkg' => 'application/vnd.apple.installer+xml', 'mpm' => 'application/vnd.blueice.multipass', 'mpn' => 'application/vnd.mophun.application', 'mpp' => 'application/vnd.ms-project', 'mpt' => 'application/vnd.ms-project', 'mpy' => 'application/vnd.ibm.minipay', 'mqy' => 'application/vnd.mobius.mqy', 'mrc' => 'application/marc', 'mrcx' => 'application/marcxml+xml', 'ms' => 'text/troff', 'mscml' => 'application/mediaservercontrol+xml', 'mseed' => 'application/vnd.fdsn.mseed', 'mseq' => 'application/vnd.mseq', 'msf' => 'application/vnd.epson.msf', 'msh' => 'model/mesh', 'msi' => 'application/x-msdownload', 'msl' => 'application/vnd.mobius.msl', 'msty' => 'application/vnd.muvee.style', 'mts' => 'model/vnd.mts', 'mus' => 'application/vnd.musician', 'musicxml' => 'application/vnd.recordare.musicxml+xml', 'mvb' => 'application/x-msmediaview', 'mwf' => 'application/vnd.mfer', 'mxf' => 'application/mxf', 'mxl' => 'application/vnd.recordare.musicxml', 'mxml' => 'application/xv+xml', 'mxs' => 'application/vnd.triscape.mxs', 'mxu' => 'video/vnd.mpegurl', 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', 'n3' => 'text/n3', 'nb' => 'application/mathematica', 'nbp' => 'application/vnd.wolfram.player', 'nc' => 'application/x-netcdf', 'ncx' => 'application/x-dtbncx+xml', 'ngdat' => 'application/vnd.nokia.n-gage.data', 'nlu' => 'application/vnd.neurolanguage.nlu', 'nml' => 'application/vnd.enliven', 'nnd' => 'application/vnd.noblenet-directory', 'nns' => 'application/vnd.noblenet-sealer', 'nnw' => 'application/vnd.noblenet-web', 'npx' => 'image/vnd.net-fpx', 'nsf' => 'application/vnd.lotus-notes', 'oa2' => 'application/vnd.fujitsu.oasys2', 'oa3' => 'application/vnd.fujitsu.oasys3', 'oas' => 'application/vnd.fujitsu.oasys', 'obd' => 'application/x-msbinder', 'oda' => 'application/oda', 'odb' => 'application/vnd.oasis.opendocument.database', 'odc' => 'application/vnd.oasis.opendocument.chart', 'odf' => 'application/vnd.oasis.opendocument.formula', 'odft' => 'application/vnd.oasis.opendocument.formula-template', 'odg' => 'application/vnd.oasis.opendocument.graphics', 'odi' => 'application/vnd.oasis.opendocument.image', 'odm' => 'application/vnd.oasis.opendocument.text-master', 'odp' => 'application/vnd.oasis.opendocument.presentation', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 'odt' => 'application/vnd.oasis.opendocument.text', 'oga' => 'audio/ogg', 'ogg' => 'audio/ogg', 'ogv' => 'video/ogg', 'ogx' => 'application/ogg', 'onepkg' => 'application/onenote', 'onetmp' => 'application/onenote', 'onetoc' => 'application/onenote', 'onetoc2' => 'application/onenote', 'opf' => 'application/oebps-package+xml', 'oprc' => 'application/vnd.palm', 'org' => 'application/vnd.lotus-organizer', 'osf' => 'application/vnd.yamaha.openscoreformat', 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', 'otc' => 'application/vnd.oasis.opendocument.chart-template', 'otf' => 'application/x-font-otf', 'otg' => 'application/vnd.oasis.opendocument.graphics-template', 'oth' => 'application/vnd.oasis.opendocument.text-web', 'oti' => 'application/vnd.oasis.opendocument.image-template', 'otp' => 'application/vnd.oasis.opendocument.presentation-template', 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', 'ott' => 'application/vnd.oasis.opendocument.text-template', 'oxt' => 'application/vnd.openofficeorg.extension', 'p' => 'text/x-pascal', 'p10' => 'application/pkcs10', 'p12' => 'application/x-pkcs12', 'p7b' => 'application/x-pkcs7-certificates', 'p7c' => 'application/pkcs7-mime', 'p7m' => 'application/pkcs7-mime', 'p7r' => 'application/x-pkcs7-certreqresp', 'p7s' => 'application/pkcs7-signature', 'p8' => 'application/pkcs8', 'pas' => 'text/x-pascal', 'paw' => 'application/vnd.pawaafile', 'pbd' => 'application/vnd.powerbuilder6', 'pbm' => 'image/x-portable-bitmap', 'pcf' => 'application/x-font-pcf', 'pcl' => 'application/vnd.hp-pcl', 'pclxl' => 'application/vnd.hp-pclxl', 'pct' => 'image/x-pict', 'pcurl' => 'application/vnd.curl.pcurl', 'pcx' => 'image/x-pcx', 'pdb' => 'application/vnd.palm', 'pdf' => 'application/pdf', 'pfa' => 'application/x-font-type1', 'pfb' => 'application/x-font-type1', 'pfm' => 'application/x-font-type1', 'pfr' => 'application/font-tdpfr', 'pfx' => 'application/x-pkcs12', 'pgm' => 'image/x-portable-graymap', 'pgn' => 'application/x-chess-pgn', 'pgp' => 'application/pgp-encrypted', 'php' => 'text/x-php', 'phps' => 'application/x-httpd-phps', 'pic' => 'image/x-pict', 'pkg' => 'application/octet-stream', 'pki' => 'application/pkixcmp', 'pkipath' => 'application/pkix-pkipath', 'plb' => 'application/vnd.3gpp.pic-bw-large', 'plc' => 'application/vnd.mobius.plc', 'plf' => 'application/vnd.pocketlearn', 'pls' => 'application/pls+xml', 'pml' => 'application/vnd.ctc-posml', 'png' => 'image/png', 'pnm' => 'image/x-portable-anymap', 'portpkg' => 'application/vnd.macports.portpkg', 'pot' => 'application/vnd.ms-powerpoint', 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', 'ppd' => 'application/vnd.cups-ppd', 'ppm' => 'image/x-portable-pixmap', 'pps' => 'application/vnd.ms-powerpoint', 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'ppt' => 'application/vnd.ms-powerpoint', 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'pqa' => 'application/vnd.palm', 'prc' => 'application/x-mobipocket-ebook', 'pre' => 'application/vnd.lotus-freelance', 'prf' => 'application/pics-rules', 'ps' => 'application/postscript', 'psb' => 'application/vnd.3gpp.pic-bw-small', 'psd' => 'image/vnd.adobe.photoshop', 'psf' => 'application/x-font-linux-psf', 'pskcxml' => 'application/pskc+xml', 'ptid' => 'application/vnd.pvi.ptid1', 'pub' => 'application/x-mspublisher', 'pvb' => 'application/vnd.3gpp.pic-bw-var', 'pwn' => 'application/vnd.3m.post-it-notes', 'pya' => 'audio/vnd.ms-playready.media.pya', 'pyv' => 'video/vnd.ms-playready.media.pyv', 'qam' => 'application/vnd.epson.quickanime', 'qbo' => 'application/vnd.intu.qbo', 'qfx' => 'application/vnd.intu.qfx', 'qps' => 'application/vnd.publishare-delta-tree', 'qt' => 'video/quicktime', 'qwd' => 'application/vnd.quark.quarkxpress', 'qwt' => 'application/vnd.quark.quarkxpress', 'qxb' => 'application/vnd.quark.quarkxpress', 'qxd' => 'application/vnd.quark.quarkxpress', 'qxl' => 'application/vnd.quark.quarkxpress', 'qxt' => 'application/vnd.quark.quarkxpress', 'ra' => 'audio/x-pn-realaudio', 'ram' => 'audio/x-pn-realaudio', 'rar' => 'application/x-rar-compressed', 'ras' => 'image/x-cmu-raster', 'rb' => 'text/plain', 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', 'rdf' => 'application/rdf+xml', 'rdz' => 'application/vnd.data-vision.rdz', 'rep' => 'application/vnd.businessobjects', 'res' => 'application/x-dtbresource+xml', 'resx' => 'text/xml', 'rgb' => 'image/x-rgb', 'rif' => 'application/reginfo+xml', 'rip' => 'audio/vnd.rip', 'rl' => 'application/resource-lists+xml', 'rlc' => 'image/vnd.fujixerox.edmics-rlc', 'rld' => 'application/resource-lists-diff+xml', 'rm' => 'application/vnd.rn-realmedia', 'rmi' => 'audio/midi', 'rmp' => 'audio/x-pn-realaudio-plugin', 'rms' => 'application/vnd.jcp.javame.midlet-rms', 'rnc' => 'application/relax-ng-compact-syntax', 'roff' => 'text/troff', 'rp9' => 'application/vnd.cloanto.rp9', 'rpss' => 'application/vnd.nokia.radio-presets', 'rpst' => 'application/vnd.nokia.radio-preset', 'rq' => 'application/sparql-query', 'rs' => 'application/rls-services+xml', 'rsd' => 'application/rsd+xml', 'rss' => 'application/rss+xml', 'rtf' => 'application/rtf', 'rtx' => 'text/richtext', 's' => 'text/x-asm', 'saf' => 'application/vnd.yamaha.smaf-audio', 'sbml' => 'application/sbml+xml', 'sc' => 'application/vnd.ibm.secure-container', 'scd' => 'application/x-msschedule', 'scm' => 'application/vnd.lotus-screencam', 'scq' => 'application/scvp-cv-request', 'scs' => 'application/scvp-cv-response', 'scurl' => 'text/vnd.curl.scurl', 'sda' => 'application/vnd.stardivision.draw', 'sdc' => 'application/vnd.stardivision.calc', 'sdd' => 'application/vnd.stardivision.impress', 'sdkd' => 'application/vnd.solent.sdkm+xml', 'sdkm' => 'application/vnd.solent.sdkm+xml', 'sdp' => 'application/sdp', 'sdw' => 'application/vnd.stardivision.writer', 'see' => 'application/vnd.seemail', 'seed' => 'application/vnd.fdsn.seed', 'sema' => 'application/vnd.sema', 'semd' => 'application/vnd.semd', 'semf' => 'application/vnd.semf', 'ser' => 'application/java-serialized-object', 'setpay' => 'application/set-payment-initiation', 'setreg' => 'application/set-registration-initiation', 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', 'sfs' => 'application/vnd.spotfire.sfs', 'sgl' => 'application/vnd.stardivision.writer-global', 'sgm' => 'text/sgml', 'sgml' => 'text/sgml', 'sh' => 'application/x-sh', 'shar' => 'application/x-shar', 'shf' => 'application/shf+xml', 'sig' => 'application/pgp-signature', 'silo' => 'model/mesh', 'sis' => 'application/vnd.symbian.install', 'sisx' => 'application/vnd.symbian.install', 'sit' => 'application/x-stuffit', 'sitx' => 'application/x-stuffitx', 'skd' => 'application/vnd.koan', 'skm' => 'application/vnd.koan', 'skp' => 'application/vnd.koan', 'skt' => 'application/vnd.koan', 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', 'slt' => 'application/vnd.epson.salt', 'sm' => 'application/vnd.stepmania.stepchart', 'smf' => 'application/vnd.stardivision.math', 'smi' => 'application/smil+xml', 'smil' => 'application/smil+xml', 'snd' => 'audio/basic', 'snf' => 'application/x-font-snf', 'so' => 'application/octet-stream', 'spc' => 'application/x-pkcs7-certificates', 'spf' => 'application/vnd.yamaha.smaf-phrase', 'spl' => 'application/x-futuresplash', 'spot' => 'text/vnd.in3d.spot', 'spp' => 'application/scvp-vp-response', 'spq' => 'application/scvp-vp-request', 'spx' => 'audio/ogg', 'src' => 'application/x-wais-source', 'sru' => 'application/sru+xml', 'srx' => 'application/sparql-results+xml', 'sse' => 'application/vnd.kodak-descriptor', 'ssf' => 'application/vnd.epson.ssf', 'ssml' => 'application/ssml+xml', 'st' => 'application/vnd.sailingtracker.track', 'stc' => 'application/vnd.sun.xml.calc.template', 'std' => 'application/vnd.sun.xml.draw.template', 'stf' => 'application/vnd.wt.stf', 'sti' => 'application/vnd.sun.xml.impress.template', 'stk' => 'application/hyperstudio', 'stl' => 'application/vnd.ms-pki.stl', 'str' => 'application/vnd.pg.format', 'stw' => 'application/vnd.sun.xml.writer.template', 'sub' => 'image/vnd.dvb.subtitle', 'sus' => 'application/vnd.sus-calendar', 'susp' => 'application/vnd.sus-calendar', 'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'svc' => 'application/vnd.dvb.service', 'svd' => 'application/vnd.svd', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', 'swa' => 'application/x-director', 'swf' => 'application/x-shockwave-flash', 'swi' => 'application/vnd.aristanetworks.swi', 'sxc' => 'application/vnd.sun.xml.calc', 'sxd' => 'application/vnd.sun.xml.draw', 'sxg' => 'application/vnd.sun.xml.writer.global', 'sxi' => 'application/vnd.sun.xml.impress', 'sxm' => 'application/vnd.sun.xml.math', 'sxw' => 'application/vnd.sun.xml.writer', 't' => 'text/troff', 'tao' => 'application/vnd.tao.intent-module-archive', 'tar' => 'application/x-tar', 'tcap' => 'application/vnd.3gpp2.tcap', 'tcl' => 'application/x-tcl', 'teacher' => 'application/vnd.smart.teacher', 'tei' => 'application/tei+xml', 'teicorpus' => 'application/tei+xml', 'tex' => 'application/x-tex', 'texi' => 'application/x-texinfo', 'texinfo' => 'application/x-texinfo', 'text' => 'text/plain', 'tfi' => 'application/thraud+xml', 'tfm' => 'application/x-tex-tfm', 'thmx' => 'application/vnd.ms-officetheme', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'tmo' => 'application/vnd.tmobile-livetv', 'torrent' => 'application/x-bittorrent', 'tpl' => 'application/vnd.groove-tool-template', 'tpt' => 'application/vnd.trid.tpt', 'tr' => 'text/troff', 'tra' => 'application/vnd.trueapp', 'trm' => 'application/x-msterminal', 'tsd' => 'application/timestamped-data', 'tsv' => 'text/tab-separated-values', 'ttc' => 'application/x-font-ttf', 'ttf' => 'application/x-font-ttf', 'ttl' => 'text/turtle', 'twd' => 'application/vnd.simtech-mindmapper', 'twds' => 'application/vnd.simtech-mindmapper', 'txd' => 'application/vnd.genomatix.tuxedo', 'txf' => 'application/vnd.mobius.txf', 'txt' => 'text/plain', 'u32' => 'application/x-authorware-bin', 'udeb' => 'application/x-debian-package', 'ufd' => 'application/vnd.ufdl', 'ufdl' => 'application/vnd.ufdl', 'umj' => 'application/vnd.umajin', 'unityweb' => 'application/vnd.unity', 'uoml' => 'application/vnd.uoml+xml', 'uri' => 'text/uri-list', 'uris' => 'text/uri-list', 'urls' => 'text/uri-list', 'ustar' => 'application/x-ustar', 'utz' => 'application/vnd.uiq.theme', 'uu' => 'text/x-uuencode', 'uva' => 'audio/vnd.dece.audio', 'uvd' => 'application/vnd.dece.data', 'uvf' => 'application/vnd.dece.data', 'uvg' => 'image/vnd.dece.graphic', 'uvh' => 'video/vnd.dece.hd', 'uvi' => 'image/vnd.dece.graphic', 'uvm' => 'video/vnd.dece.mobile', 'uvp' => 'video/vnd.dece.pd', 'uvs' => 'video/vnd.dece.sd', 'uvt' => 'application/vnd.dece.ttml+xml', 'uvu' => 'video/vnd.uvvu.mp4', 'uvv' => 'video/vnd.dece.video', 'uvva' => 'audio/vnd.dece.audio', 'uvvd' => 'application/vnd.dece.data', 'uvvf' => 'application/vnd.dece.data', 'uvvg' => 'image/vnd.dece.graphic', 'uvvh' => 'video/vnd.dece.hd', 'uvvi' => 'image/vnd.dece.graphic', 'uvvm' => 'video/vnd.dece.mobile', 'uvvp' => 'video/vnd.dece.pd', 'uvvs' => 'video/vnd.dece.sd', 'uvvt' => 'application/vnd.dece.ttml+xml', 'uvvu' => 'video/vnd.uvvu.mp4', 'uvvv' => 'video/vnd.dece.video', 'uvvx' => 'application/vnd.dece.unspecified', 'uvx' => 'application/vnd.dece.unspecified', 'vcd' => 'application/x-cdlink', 'vcf' => 'text/x-vcard', 'vcg' => 'application/vnd.groove-vcard', 'vcs' => 'text/x-vcalendar', 'vcx' => 'application/vnd.vcx', 'vis' => 'application/vnd.visionary', 'viv' => 'video/vnd.vivo', 'vor' => 'application/vnd.stardivision.writer', 'vox' => 'application/x-authorware-bin', 'vrml' => 'model/vrml', 'vsd' => 'application/vnd.visio', 'vsf' => 'application/vnd.vsf', 'vss' => 'application/vnd.visio', 'vst' => 'application/vnd.visio', 'vsw' => 'application/vnd.visio', 'vtu' => 'model/vnd.vtu', 'vxml' => 'application/voicexml+xml', 'w3d' => 'application/x-director', 'wad' => 'application/x-doom', 'wav' => 'audio/x-wav', 'wax' => 'audio/x-ms-wax', 'wbmp' => 'image/vnd.wap.wbmp', 'wbs' => 'application/vnd.criticaltools.wbs+xml', 'wbxml' => 'application/vnd.wap.wbxml', 'wcm' => 'application/vnd.ms-works', 'wdb' => 'application/vnd.ms-works', 'weba' => 'audio/webm', 'webm' => 'video/webm', 'webp' => 'image/webp', 'wg' => 'application/vnd.pmi.widget', 'wgt' => 'application/widget', 'wks' => 'application/vnd.ms-works', 'wm' => 'video/x-ms-wm', 'wma' => 'audio/x-ms-wma', 'wmd' => 'application/x-ms-wmd', 'wmf' => 'application/x-msmetafile', 'wml' => 'text/vnd.wap.wml', 'wmlc' => 'application/vnd.wap.wmlc', 'wmls' => 'text/vnd.wap.wmlscript', 'wmlsc' => 'application/vnd.wap.wmlscriptc', 'wmv' => 'video/x-ms-wmv', 'wmx' => 'video/x-ms-wmx', 'wmz' => 'application/x-ms-wmz', 'woff' => 'application/x-font-woff', 'wpd' => 'application/vnd.wordperfect', 'wpl' => 'application/vnd.ms-wpl', 'wps' => 'application/vnd.ms-works', 'wqd' => 'application/vnd.wqd', 'wri' => 'application/x-mswrite', 'wrl' => 'model/vrml', 'wsdl' => 'application/wsdl+xml', 'wspolicy' => 'application/wspolicy+xml', 'wtb' => 'application/vnd.webturbo', 'wvx' => 'video/x-ms-wvx', 'x32' => 'application/x-authorware-bin', 'x3d' => 'application/vnd.hzn-3d-crossword', 'xap' => 'application/x-silverlight-app', 'xar' => 'application/vnd.xara', 'xbap' => 'application/x-ms-xbap', 'xbd' => 'application/vnd.fujixerox.docuworks.binder', 'xbm' => 'image/x-xbitmap', 'xdf' => 'application/xcap-diff+xml', 'xdm' => 'application/vnd.syncml.dm+xml', 'xdp' => 'application/vnd.adobe.xdp+xml', 'xdssc' => 'application/dssc+xml', 'xdw' => 'application/vnd.fujixerox.docuworks', 'xenc' => 'application/xenc+xml', 'xer' => 'application/patch-ops-error+xml', 'xfdf' => 'application/vnd.adobe.xfdf', 'xfdl' => 'application/vnd.xfdl', 'xht' => 'application/xhtml+xml', 'xhtml' => 'application/xhtml+xml', 'xhvml' => 'application/xv+xml', 'xif' => 'image/vnd.xiff', 'xla' => 'application/vnd.ms-excel', 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', 'xlc' => 'application/vnd.ms-excel', 'xlm' => 'application/vnd.ms-excel', 'xls' => 'application/vnd.ms-excel', 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlt' => 'application/vnd.ms-excel', 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'xlw' => 'application/vnd.ms-excel', 'xml' => 'application/xml', 'xo' => 'application/vnd.olpc-sugar', 'xop' => 'application/xop+xml', 'xpi' => 'application/x-xpinstall', 'xpm' => 'image/x-xpixmap', 'xpr' => 'application/vnd.is-xpr', 'xps' => 'application/vnd.ms-xpsdocument', 'xpw' => 'application/vnd.intercon.formnet', 'xpx' => 'application/vnd.intercon.formnet', 'xsl' => 'application/xml', 'xslt' => 'application/xslt+xml', 'xsm' => 'application/vnd.syncml+xml', 'xspf' => 'application/xspf+xml', 'xul' => 'application/vnd.mozilla.xul+xml', 'xvm' => 'application/xv+xml', 'xvml' => 'application/xv+xml', 'xwd' => 'image/x-xwindowdump', 'xyz' => 'chemical/x-xyz', 'yaml' => 'text/yaml', 'yang' => 'application/yang', 'yin' => 'application/yin+xml', 'yml' => 'text/yaml', 'zaz' => 'application/vnd.zzazz.deck+xml', 'zip' => 'application/zip', 'zir' => 'application/vnd.zul', 'zirz' => 'application/vnd.zul', 'zmm' => 'application/vnd.handheld-entertainment+xml'); + /** + * Get a singleton instance of the class + * + * @return self + * @codeCoverageIgnore + */ + public static function getInstance() + { + if (!self::$instance) { + self::$instance = new self(); + } + return self::$instance; + } + /** + * Get a mimetype value from a file extension + * + * @param string $extension File extension + * + * @return string|null + * + */ + public function fromExtension($extension) + { + $extension = \strtolower($extension); + return isset($this->mimetypes[$extension]) ? $this->mimetypes[$extension] : null; + } + /** + * Get a mimetype from a filename + * + * @param string $filename Filename to generate a mimetype from + * + * @return string|null + */ + public function fromFilename($filename) + { + return $this->fromExtension(\pathinfo($filename, \PATHINFO_EXTENSION)); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Pool.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Pool.php new file mode 100644 index 000000000..05b96d66c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Pool.php @@ -0,0 +1,261 @@ +client = $client; + $this->iter = $this->coerceIterable($requests); + $this->deferred = new \Google\Site_Kit_Dependencies\React\Promise\Deferred(); + $this->promise = $this->deferred->promise(); + $this->poolSize = isset($options['pool_size']) ? $options['pool_size'] : 25; + $this->eventListeners = $this->prepareListeners($options, ['before', 'complete', 'error', 'end']); + } + /** + * Sends multiple requests in parallel and returns an array of responses + * and exceptions that uses the same ordering as the provided requests. + * + * IMPORTANT: This method keeps every request and response in memory, and + * as such, is NOT recommended when sending a large number or an + * indeterminate number of requests concurrently. + * + * @param ClientInterface $client Client used to send the requests + * @param array|\Iterator $requests Requests to send in parallel + * @param array $options Passes through the options available in + * {@see GuzzleHttp\Pool::__construct} + * + * @return BatchResults Returns a container for the results. + * @throws \InvalidArgumentException if the event format is incorrect. + */ + public static function batch(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $client, $requests, array $options = []) + { + $hash = new \SplObjectStorage(); + foreach ($requests as $request) { + $hash->attach($request); + } + // In addition to the normally run events when requests complete, add + // and event to continuously track the results of transfers in the hash. + (new self($client, $requests, \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::convertEventArray($options, ['end'], ['priority' => \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::LATE, 'fn' => function (\Google\Site_Kit_Dependencies\GuzzleHttp\Event\EndEvent $e) use($hash) { + $hash[$e->getRequest()] = $e->getException() ? $e->getException() : $e->getResponse(); + }])))->wait(); + return new \Google\Site_Kit_Dependencies\GuzzleHttp\BatchResults($hash); + } + /** + * Creates a Pool and immediately sends the requests. + * + * @param ClientInterface $client Client used to send the requests + * @param array|\Iterator $requests Requests to send in parallel + * @param array $options Passes through the options available in + * {@see GuzzleHttp\Pool::__construct} + */ + public static function send(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $client, $requests, array $options = []) + { + $pool = new self($client, $requests, $options); + $pool->wait(); + } + private function getPoolSize() + { + return \is_callable($this->poolSize) ? \call_user_func($this->poolSize, \count($this->waitQueue)) : $this->poolSize; + } + /** + * Add as many requests as possible up to the current pool limit. + */ + private function addNextRequests() + { + $limit = \max($this->getPoolSize() - \count($this->waitQueue), 0); + while ($limit--) { + if (!$this->addNextRequest()) { + break; + } + } + } + public function wait() + { + if ($this->isRealized) { + return \false; + } + // Seed the pool with N number of requests. + $this->addNextRequests(); + // Stop if the pool was cancelled while transferring requests. + if ($this->isRealized) { + return \false; + } + // Wait on any outstanding FutureResponse objects. + while ($response = \array_pop($this->waitQueue)) { + try { + $response->wait(); + } catch (\Exception $e) { + // Eat exceptions because they should be handled asynchronously + } + $this->addNextRequests(); + } + // Clean up no longer needed state. + $this->isRealized = \true; + $this->waitQueue = $this->eventListeners = []; + $this->client = $this->iter = null; + $this->deferred->resolve(\true); + return \true; + } + /** + * {@inheritdoc} + * + * Attempt to cancel all outstanding requests (requests that are queued for + * dereferencing). Returns true if all outstanding requests can be + * cancelled. + * + * @return bool + */ + public function cancel() + { + if ($this->isRealized) { + return \false; + } + $success = $this->isRealized = \true; + foreach ($this->waitQueue as $response) { + if (!$response->cancel()) { + $success = \false; + } + } + return $success; + } + /** + * Returns a promise that is invoked when the pool completed. There will be + * no passed value. + * + * {@inheritdoc} + */ + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + return $this->promise->then($onFulfilled, $onRejected, $onProgress); + } + public function promise() + { + return $this->promise; + } + private function coerceIterable($requests) + { + if ($requests instanceof \Iterator) { + return $requests; + } elseif (\is_array($requests)) { + return new \ArrayIterator($requests); + } + throw new \InvalidArgumentException('Expected Iterator or array. ' . 'Found ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($requests)); + } + /** + * Adds the next request to pool and tracks what requests need to be + * dereferenced when completing the pool. + */ + private function addNextRequest() + { + add_next: + if ($this->isRealized || !$this->iter || !$this->iter->valid()) { + return \false; + } + $request = $this->iter->current(); + $this->iter->next(); + if (!$request instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface) { + throw new \InvalidArgumentException(\sprintf('All requests in the provided iterator must implement ' . 'RequestInterface. Found %s', \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($request))); + } + // Be sure to use "lazy" futures, meaning they do not send right away. + $request->getConfig()->set('future', 'lazy'); + $hash = \spl_object_hash($request); + $this->attachListeners($request, $this->eventListeners); + $request->getEmitter()->on('before', [$this, '_trackRetries'], \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::EARLY); + $response = $this->client->send($request); + $this->waitQueue[$hash] = $response; + $promise = $response->promise(); + // Don't recursively call itself for completed or rejected responses. + if ($promise instanceof \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise || $promise instanceof \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise) { + try { + $this->finishResponse($request, $response->wait(), $hash); + } catch (\Exception $e) { + $this->finishResponse($request, $e, $hash); + } + goto add_next; + } + // Use this function for both resolution and rejection. + $thenFn = function ($value) use($request, $hash) { + $this->finishResponse($request, $value, $hash); + if (!$request->getConfig()->get('_pool_retries')) { + $this->addNextRequests(); + } + }; + $promise->then($thenFn, $thenFn); + return \true; + } + public function _trackRetries(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $e) + { + $e->getRequest()->getConfig()->set('_pool_retries', $e->getRetryCount()); + } + private function finishResponse($request, $value, $hash) + { + unset($this->waitQueue[$hash]); + $result = $value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface ? ['request' => $request, 'response' => $value, 'error' => null] : ['request' => $request, 'response' => null, 'error' => $value]; + $this->deferred->notify($result); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/MultipartBody.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/MultipartBody.php new file mode 100644 index 000000000..f7ea72c6e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/MultipartBody.php @@ -0,0 +1,82 @@ +boundary = $boundary ?: \uniqid(); + $this->stream = $this->createStream($fields, $files); + } + /** + * Get the boundary + * + * @return string + */ + public function getBoundary() + { + return $this->boundary; + } + public function isWritable() + { + return \false; + } + /** + * Get the string needed to transfer a POST field + */ + private function getFieldString($name, $value) + { + return \sprintf("--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n", $this->boundary, $name, $value); + } + /** + * Get the headers needed before transferring the content of a POST file + */ + private function getFileHeaders(\Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface $file) + { + $headers = ''; + foreach ($file->getHeaders() as $key => $value) { + $headers .= "{$key}: {$value}\r\n"; + } + return "--{$this->boundary}\r\n" . \trim($headers) . "\r\n\r\n"; + } + /** + * Create the aggregate stream that will be used to upload the POST data + */ + protected function createStream(array $fields, array $files) + { + $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\AppendStream(); + foreach ($fields as $name => $fieldValues) { + foreach ((array) $fieldValues as $value) { + $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->getFieldString($name, $value))); + } + } + foreach ($files as $file) { + if (!$file instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface) { + throw new \InvalidArgumentException('All POST fields must ' . 'implement PostFieldInterface'); + } + $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->getFileHeaders($file))); + $stream->addStream($file->getContent()); + $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory("\r\n")); + } + // Add the trailing boundary with CRLF + $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory("--{$this->boundary}--\r\n")); + return $stream; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBody.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBody.php new file mode 100644 index 000000000..fed5256e7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBody.php @@ -0,0 +1,235 @@ +files || $this->forceMultipart) { + $request->setHeader('Content-Type', 'multipart/form-data; boundary=' . $this->getBody()->getBoundary()); + } elseif ($this->fields && !$request->hasHeader('Content-Type')) { + $request->setHeader('Content-Type', 'application/x-www-form-urlencoded'); + } + if ($size = $this->getSize()) { + $request->setHeader('Content-Length', $size); + } + } + public function forceMultipartUpload($force) + { + $this->forceMultipart = $force; + } + public function setAggregator(callable $aggregator) + { + $this->aggregator = $aggregator; + } + public function setField($name, $value) + { + $this->fields[$name] = $value; + $this->mutate(); + } + public function replaceFields(array $fields) + { + $this->fields = $fields; + $this->mutate(); + } + public function getField($name) + { + return isset($this->fields[$name]) ? $this->fields[$name] : null; + } + public function removeField($name) + { + unset($this->fields[$name]); + $this->mutate(); + } + public function getFields($asString = \false) + { + if (!$asString) { + return $this->fields; + } + $query = new \Google\Site_Kit_Dependencies\GuzzleHttp\Query($this->fields); + $query->setEncodingType(\Google\Site_Kit_Dependencies\GuzzleHttp\Query::RFC1738); + $query->setAggregator($this->getAggregator()); + return (string) $query; + } + public function hasField($name) + { + return isset($this->fields[$name]); + } + public function getFile($name) + { + foreach ($this->files as $file) { + if ($file->getName() == $name) { + return $file; + } + } + return null; + } + public function getFiles() + { + return $this->files; + } + public function addFile(\Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface $file) + { + $this->files[] = $file; + $this->mutate(); + } + public function clearFiles() + { + $this->files = []; + $this->mutate(); + } + /** + * Returns the numbers of fields + files + * + * @return int + */ + public function count() + { + return \count($this->files) + \count($this->fields); + } + public function __toString() + { + return (string) $this->getBody(); + } + public function getContents($maxLength = -1) + { + return $this->getBody()->getContents(); + } + public function close() + { + $this->detach(); + } + public function detach() + { + $this->detached = \true; + $this->fields = $this->files = []; + if ($this->body) { + $this->body->close(); + $this->body = null; + } + } + public function attach($stream) + { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException(); + } + public function eof() + { + return $this->getBody()->eof(); + } + public function tell() + { + return $this->body ? $this->body->tell() : 0; + } + public function isSeekable() + { + return \true; + } + public function isReadable() + { + return \true; + } + public function isWritable() + { + return \false; + } + public function getSize() + { + return $this->getBody()->getSize(); + } + public function seek($offset, $whence = \SEEK_SET) + { + return $this->getBody()->seek($offset, $whence); + } + public function read($length) + { + return $this->getBody()->read($length); + } + public function write($string) + { + return \false; + } + public function getMetadata($key = null) + { + return $key ? null : []; + } + /** + * Return a stream object that is built from the POST fields and files. + * + * If one has already been created, the previously created stream will be + * returned. + */ + private function getBody() + { + if ($this->body) { + return $this->body; + } elseif ($this->files || $this->forceMultipart) { + return $this->body = $this->createMultipart(); + } elseif ($this->fields) { + return $this->body = $this->createUrlEncoded(); + } else { + return $this->body = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory(); + } + } + /** + * Get the aggregator used to join multi-valued field parameters + * + * @return callable + */ + protected final function getAggregator() + { + if (!$this->aggregator) { + $this->aggregator = \Google\Site_Kit_Dependencies\GuzzleHttp\Query::phpAggregator(); + } + return $this->aggregator; + } + /** + * Creates a multipart/form-data body stream + * + * @return MultipartBody + */ + private function createMultipart() + { + // Flatten the nested query string values using the correct aggregator + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Post\MultipartBody(\call_user_func($this->getAggregator(), $this->fields), $this->files); + } + /** + * Creates an application/x-www-form-urlencoded stream body + * + * @return StreamInterface + */ + private function createUrlEncoded() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->getFields(\true)); + } + /** + * Get rid of any cached data + */ + private function mutate() + { + $this->body = null; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBodyInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBodyInterface.php new file mode 100644 index 000000000..5fbb8a3a9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBodyInterface.php @@ -0,0 +1,98 @@ +headers = $headers; + $this->name = $name; + $this->prepareContent($content); + $this->prepareFilename($filename); + $this->prepareDefaultHeaders(); + } + public function getName() + { + return $this->name; + } + public function getFilename() + { + return $this->filename; + } + public function getContent() + { + return $this->content; + } + public function getHeaders() + { + return $this->headers; + } + /** + * Prepares the contents of a POST file. + * + * @param mixed $content Content of the POST file + */ + private function prepareContent($content) + { + $this->content = $content; + if (!$this->content instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) { + $this->content = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->content); + } elseif ($this->content instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Post\MultipartBody) { + if (!$this->hasHeader('Content-Disposition')) { + $disposition = 'form-data; name="' . $this->name . '"'; + $this->headers['Content-Disposition'] = $disposition; + } + if (!$this->hasHeader('Content-Type')) { + $this->headers['Content-Type'] = \sprintf("multipart/form-data; boundary=%s", $this->content->getBoundary()); + } + } + } + /** + * Applies a file name to the POST file based on various checks. + * + * @param string|null $filename Filename to apply (or null to guess) + */ + private function prepareFilename($filename) + { + $this->filename = $filename; + if (!$this->filename) { + $this->filename = $this->content->getMetadata('uri'); + } + if (!$this->filename || \substr($this->filename, 0, 6) === 'php://') { + $this->filename = $this->name; + } + } + /** + * Applies default Content-Disposition and Content-Type headers if needed. + */ + private function prepareDefaultHeaders() + { + // Set a default content-disposition header if one was no provided + if (!$this->hasHeader('Content-Disposition')) { + $this->headers['Content-Disposition'] = \sprintf('form-data; name="%s"; filename="%s"', $this->name, \basename($this->filename)); + } + // Set a default Content-Type if one was not supplied + if (!$this->hasHeader('Content-Type')) { + $this->headers['Content-Type'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Mimetypes::getInstance()->fromFilename($this->filename) ?: 'text/plain'; + } + } + /** + * Check if a specific header exists on the POST file by name. + * + * @param string $name Case-insensitive header to check + * + * @return bool + */ + private function hasHeader($name) + { + return isset(\array_change_key_case($this->headers)[\strtolower($name)]); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostFileInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostFileInterface.php new file mode 100644 index 000000000..8212eda80 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostFileInterface.php @@ -0,0 +1,38 @@ +setEncodingType($urlEncoding); + } + $qp->parseInto($q, $query, $urlEncoding); + return $q; + } + /** + * Convert the query string parameters to a query string string + * + * @return string + */ + public function __toString() + { + if (!$this->data) { + return ''; + } + // The default aggregator is statically cached + static $defaultAggregator; + if (!$this->aggregator) { + if (!$defaultAggregator) { + $defaultAggregator = self::phpAggregator(); + } + $this->aggregator = $defaultAggregator; + } + $result = ''; + $aggregator = $this->aggregator; + $encoder = $this->encoding; + foreach ($aggregator($this->data) as $key => $values) { + foreach ($values as $value) { + if ($result) { + $result .= '&'; + } + $result .= $encoder($key); + if ($value !== null) { + $result .= '=' . $encoder($value); + } + } + } + return $result; + } + /** + * Controls how multi-valued query string parameters are aggregated into a + * string. + * + * $query->setAggregator($query::duplicateAggregator()); + * + * @param callable $aggregator Callable used to convert a deeply nested + * array of query string variables into a flattened array of key value + * pairs. The callable accepts an array of query data and returns a + * flattened array of key value pairs where each value is an array of + * strings. + */ + public function setAggregator(callable $aggregator) + { + $this->aggregator = $aggregator; + } + /** + * Specify how values are URL encoded + * + * @param string|bool $type One of 'RFC1738', 'RFC3986', or false to disable encoding + * + * @throws \InvalidArgumentException + */ + public function setEncodingType($type) + { + switch ($type) { + case self::RFC3986: + $this->encoding = 'rawurlencode'; + break; + case self::RFC1738: + $this->encoding = 'urlencode'; + break; + case \false: + $this->encoding = function ($v) { + return $v; + }; + break; + default: + throw new \InvalidArgumentException('Invalid URL encoding type'); + } + } + /** + * Query string aggregator that does not aggregate nested query string + * values and allows duplicates in the resulting array. + * + * Example: http://test.com?q=1&q=2 + * + * @return callable + */ + public static function duplicateAggregator() + { + return function (array $data) { + return self::walkQuery($data, '', function ($key, $prefix) { + return \is_int($key) ? $prefix : "{$prefix}[{$key}]"; + }); + }; + } + /** + * Aggregates nested query string variables using the same technique as + * ``http_build_query()``. + * + * @param bool $numericIndices Pass false to not include numeric indices + * when multi-values query string parameters are present. + * + * @return callable + */ + public static function phpAggregator($numericIndices = \true) + { + return function (array $data) use($numericIndices) { + return self::walkQuery($data, '', function ($key, $prefix) use($numericIndices) { + return !$numericIndices && \is_int($key) ? "{$prefix}[]" : "{$prefix}[{$key}]"; + }); + }; + } + /** + * Easily create query aggregation functions by providing a key prefix + * function to this query string array walker. + * + * @param array $query Query string to walk + * @param string $keyPrefix Key prefix (start with '') + * @param callable $prefixer Function used to create a key prefix + * + * @return array + */ + public static function walkQuery(array $query, $keyPrefix, callable $prefixer) + { + $result = []; + foreach ($query as $key => $value) { + if ($keyPrefix) { + $key = $prefixer($key, $keyPrefix); + } + if (\is_array($value)) { + $result += self::walkQuery($value, $key, $prefixer); + } elseif (isset($result[$key])) { + $result[$key][] = $value; + } else { + $result[$key] = array($value); + } + } + return $result; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/QueryParser.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/QueryParser.php new file mode 100644 index 000000000..eb805b273 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/QueryParser.php @@ -0,0 +1,151 @@ +duplicates = \false; + $this->numericIndices = \true; + $decoder = self::getDecoder($urlEncoding); + foreach (\explode('&', $str) as $kvp) { + $parts = \explode('=', $kvp, 2); + $key = $decoder($parts[0]); + $value = isset($parts[1]) ? $decoder($parts[1]) : null; + // Special handling needs to be taken for PHP nested array syntax + if (\strpos($key, '[') !== \false) { + $this->parsePhpValue($key, $value, $result); + continue; + } + if (!isset($result[$key])) { + $result[$key] = $value; + } else { + $this->duplicates = \true; + if (!\is_array($result[$key])) { + $result[$key] = [$result[$key]]; + } + $result[$key][] = $value; + } + } + $query->replace($result); + if (!$this->numericIndices) { + $query->setAggregator(\Google\Site_Kit_Dependencies\GuzzleHttp\Query::phpAggregator(\false)); + } elseif ($this->duplicates) { + $query->setAggregator(\Google\Site_Kit_Dependencies\GuzzleHttp\Query::duplicateAggregator()); + } + } + /** + * Returns a callable that is used to URL decode query keys and values. + * + * @param string|bool $type One of true, false, RFC3986, and RFC1738 + * + * @return callable|string + */ + private static function getDecoder($type) + { + if ($type === \true) { + return function ($value) { + return \rawurldecode(\str_replace('+', ' ', $value)); + }; + } elseif ($type == \Google\Site_Kit_Dependencies\GuzzleHttp\Query::RFC3986) { + return 'rawurldecode'; + } elseif ($type == \Google\Site_Kit_Dependencies\GuzzleHttp\Query::RFC1738) { + return 'urldecode'; + } else { + return function ($str) { + return $str; + }; + } + } + /** + * Parses a PHP style key value pair. + * + * @param string $key Key to parse (e.g., "foo[a][b]") + * @param string|null $value Value to set + * @param array $result Result to modify by reference + */ + private function parsePhpValue($key, $value, array &$result) + { + $node =& $result; + $keyBuffer = ''; + for ($i = 0, $t = \strlen($key); $i < $t; $i++) { + switch ($key[$i]) { + case '[': + if ($keyBuffer) { + $this->prepareNode($node, $keyBuffer); + $node =& $node[$keyBuffer]; + $keyBuffer = ''; + } + break; + case ']': + $k = $this->cleanKey($node, $keyBuffer); + $this->prepareNode($node, $k); + $node =& $node[$k]; + $keyBuffer = ''; + break; + default: + $keyBuffer .= $key[$i]; + break; + } + } + if (isset($node)) { + $this->duplicates = \true; + $node[] = $value; + } else { + $node = $value; + } + } + /** + * Prepares a value in the array at the given key. + * + * If the key already exists, the key value is converted into an array. + * + * @param array $node Result node to modify + * @param string $key Key to add or modify in the node + */ + private function prepareNode(&$node, $key) + { + if (!isset($node[$key])) { + $node[$key] = null; + } elseif (!\is_array($node[$key])) { + $node[$key] = [$node[$key]]; + } + } + /** + * Returns the appropriate key based on the node and key. + */ + private function cleanKey($node, $key) + { + if ($key === '') { + $key = $node ? (string) \count($node) : 0; + // Found a [] key, so track this to ensure that we disable numeric + // indexing of keys in the resolved query aggregator. + $this->numericIndices = \false; + } + return $key; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RequestFsm.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RequestFsm.php new file mode 100644 index 000000000..455a2526d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RequestFsm.php @@ -0,0 +1,129 @@ +mf = $messageFactory; + $this->maxTransitions = $maxTransitions; + $this->handler = $handler; + } + /** + * Runs the state machine until a terminal state is entered or the + * optionally supplied $finalState is entered. + * + * @param Transaction $trans Transaction being transitioned. + * + * @throws \Exception if a terminal state throws an exception. + */ + public function __invoke(\Google\Site_Kit_Dependencies\GuzzleHttp\Transaction $trans) + { + $trans->_transitionCount = 0; + if (!$trans->state) { + $trans->state = 'before'; + } + transition: + if (++$trans->_transitionCount > $this->maxTransitions) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\StateException("Too many state transitions were " . "encountered ({$trans->_transitionCount}). This likely " . "means that a combination of event listeners are in an " . "infinite loop."); + } + switch ($trans->state) { + case 'before': + goto before; + case 'complete': + goto complete; + case 'error': + goto error; + case 'retry': + goto retry; + case 'send': + goto send; + case 'end': + goto end; + default: + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\StateException("Invalid state: {$trans->state}"); + } + before: + try { + $trans->request->getEmitter()->emit('before', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent($trans)); + $trans->state = 'send'; + if ((bool) $trans->response) { + $trans->state = 'complete'; + } + } catch (\Exception $e) { + $trans->state = 'error'; + $trans->exception = $e; + } + goto transition; + complete: + try { + if ($trans->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface) { + // Futures will have their own end events emitted when + // dereferenced. + return; + } + $trans->state = 'end'; + $trans->response->setEffectiveUrl($trans->request->getUrl()); + $trans->request->getEmitter()->emit('complete', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent($trans)); + } catch (\Exception $e) { + $trans->state = 'error'; + $trans->exception = $e; + } + goto transition; + error: + try { + // Convert non-request exception to a wrapped exception + $trans->exception = \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $trans->exception); + $trans->state = 'end'; + $trans->request->getEmitter()->emit('error', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\ErrorEvent($trans)); + // An intercepted request (not retried) transitions to complete + if (!$trans->exception && $trans->state !== 'retry') { + $trans->state = 'complete'; + } + } catch (\Exception $e) { + $trans->state = 'end'; + $trans->exception = $e; + } + goto transition; + retry: + $trans->retries++; + $trans->response = null; + $trans->exception = null; + $trans->state = 'before'; + goto transition; + send: + $fn = $this->handler; + $trans->response = \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse::proxy($fn(\Google\Site_Kit_Dependencies\GuzzleHttp\RingBridge::prepareRingRequest($trans)), function ($value) use($trans) { + \Google\Site_Kit_Dependencies\GuzzleHttp\RingBridge::completeRingResponse($trans, $value, $this->mf, $this); + $this($trans); + return $trans->response; + }); + return; + end: + $trans->request->getEmitter()->emit('end', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\EndEvent($trans)); + // Throw exceptions in the terminal event if the exception + // was not handled by an "end" event listener. + if ($trans->exception) { + if (!$trans->exception instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) { + $trans->exception = \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $trans->exception); + } + throw $trans->exception; + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RingBridge.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RingBridge.php new file mode 100644 index 000000000..4fc7a13e0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RingBridge.php @@ -0,0 +1,128 @@ +getConfig()->toArray(); + $url = $request->getUrl(); + // No need to calculate the query string twice (in URL and query). + $qs = ($pos = \strpos($url, '?')) ? \substr($url, $pos + 1) : null; + return ['scheme' => $request->getScheme(), 'http_method' => $request->getMethod(), 'url' => $url, 'uri' => $request->getPath(), 'headers' => $request->getHeaders(), 'body' => $request->getBody(), 'version' => $request->getProtocolVersion(), 'client' => $options, 'query_string' => $qs, 'future' => isset($options['future']) ? $options['future'] : \false]; + } + /** + * Creates a Ring request from a request object AND prepares the callbacks. + * + * @param Transaction $trans Transaction to update. + * + * @return array Converted Guzzle Ring request. + */ + public static function prepareRingRequest(\Google\Site_Kit_Dependencies\GuzzleHttp\Transaction $trans) + { + // Clear out the transaction state when initiating. + $trans->exception = null; + $request = self::createRingRequest($trans->request); + // Emit progress events if any progress listeners are registered. + if ($trans->request->getEmitter()->hasListeners('progress')) { + $emitter = $trans->request->getEmitter(); + $request['client']['progress'] = function ($a, $b, $c, $d) use($trans, $emitter) { + $emitter->emit('progress', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\ProgressEvent($trans, $a, $b, $c, $d)); + }; + } + return $request; + } + /** + * Handles the process of processing a response received from a ring + * handler. The created response is added to the transaction, and the + * transaction stat is set appropriately. + * + * @param Transaction $trans Owns request and response. + * @param array $response Ring response array + * @param MessageFactoryInterface $messageFactory Creates response objects. + */ + public static function completeRingResponse(\Google\Site_Kit_Dependencies\GuzzleHttp\Transaction $trans, array $response, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageFactoryInterface $messageFactory) + { + $trans->state = 'complete'; + $trans->transferInfo = isset($response['transfer_stats']) ? $response['transfer_stats'] : []; + if (!empty($response['status'])) { + $options = []; + if (isset($response['version'])) { + $options['protocol_version'] = $response['version']; + } + if (isset($response['reason'])) { + $options['reason_phrase'] = $response['reason']; + } + $trans->response = $messageFactory->createResponse($response['status'], isset($response['headers']) ? $response['headers'] : [], isset($response['body']) ? $response['body'] : null, $options); + if (isset($response['effective_url'])) { + $trans->response->setEffectiveUrl($response['effective_url']); + } + } elseif (empty($response['error'])) { + // When nothing was returned, then we need to add an error. + $response['error'] = self::getNoRingResponseException($trans->request); + } + if (isset($response['error'])) { + $trans->state = 'error'; + $trans->exception = $response['error']; + } + } + /** + * Creates a Guzzle request object using a ring request array. + * + * @param array $request Ring request + * + * @return Request + * @throws \InvalidArgumentException for incomplete requests. + */ + public static function fromRingRequest(array $request) + { + $options = []; + if (isset($request['version'])) { + $options['protocol_version'] = $request['version']; + } + if (!isset($request['http_method'])) { + throw new \InvalidArgumentException('No http_method'); + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\Request($request['http_method'], \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request), isset($request['headers']) ? $request['headers'] : [], isset($request['body']) ? \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($request['body']) : null, $options); + } + /** + * Get an exception that can be used when a RingPHP handler does not + * populate a response. + * + * @param RequestInterface $request + * + * @return RequestException + */ + public static function getNoRingResponseException(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request) + { + $message = <<cookieJar = $cookieJar ?: new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\CookieJar(); + } + public function getEvents() + { + // Fire the cookie plugin complete event before redirecting + return ['before' => ['onBefore'], 'complete' => ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::REDIRECT_RESPONSE + 10]]; + } + /** + * Get the cookie cookieJar + * + * @return CookieJarInterface + */ + public function getCookieJar() + { + return $this->cookieJar; + } + public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event) + { + $this->cookieJar->addCookieHeader($event->getRequest()); + } + public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event) + { + $this->cookieJar->extractCookies($event->getRequest(), $event->getResponse()); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/History.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/History.php new file mode 100644 index 000000000..1363fb6d0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/History.php @@ -0,0 +1,146 @@ +limit = $limit; + } + public function getEvents() + { + return ['complete' => ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::EARLY], 'error' => ['onError', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::EARLY]]; + } + /** + * Convert to a string that contains all request and response headers + * + * @return string + */ + public function __toString() + { + $lines = array(); + foreach ($this->transactions as $entry) { + $response = isset($entry['response']) ? $entry['response'] : ''; + $lines[] = '> ' . \trim($entry['sent_request']) . "\n\n< " . \trim($response) . "\n"; + } + return \implode("\n", $lines); + } + public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event) + { + $this->add($event->getRequest(), $event->getResponse()); + } + public function onError(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\ErrorEvent $event) + { + // Only track when no response is present, meaning this didn't ever + // emit a complete event + if (!$event->getResponse()) { + $this->add($event->getRequest()); + } + } + /** + * Returns an Iterator that yields associative array values where each + * associative array contains the following key value pairs: + * + * - request: Representing the actual request that was received. + * - sent_request: A clone of the request that will not be mutated. + * - response: The response that was received (if available). + * + * @return \Iterator + */ + public function getIterator() + { + return new \ArrayIterator($this->transactions); + } + /** + * Get all of the requests sent through the plugin. + * + * Requests can be modified after they are logged by the history + * subscriber. By default this method will return the actual request + * instances that were received. Pass true to this method if you wish to + * get copies of the requests that represent the request state when it was + * initially logged by the history subscriber. + * + * @param bool $asSent Set to true to get clones of the requests that have + * not been mutated since the request was received by + * the history subscriber. + * + * @return RequestInterface[] + */ + public function getRequests($asSent = \false) + { + return \array_map(function ($t) use($asSent) { + return $asSent ? $t['sent_request'] : $t['request']; + }, $this->transactions); + } + /** + * Get the number of requests in the history + * + * @return int + */ + public function count() + { + return \count($this->transactions); + } + /** + * Get the last request sent. + * + * Requests can be modified after they are logged by the history + * subscriber. By default this method will return the actual request + * instance that was received. Pass true to this method if you wish to get + * a copy of the request that represents the request state when it was + * initially logged by the history subscriber. + * + * @param bool $asSent Set to true to get a clone of the last request that + * has not been mutated since the request was received + * by the history subscriber. + * + * @return RequestInterface + */ + public function getLastRequest($asSent = \false) + { + return $asSent ? \end($this->transactions)['sent_request'] : \end($this->transactions)['request']; + } + /** + * Get the last response in the history + * + * @return ResponseInterface|null + */ + public function getLastResponse() + { + return \end($this->transactions)['response']; + } + /** + * Clears the history + */ + public function clear() + { + $this->transactions = array(); + } + /** + * Add a request to the history + * + * @param RequestInterface $request Request to add + * @param ResponseInterface $response Response of the request + */ + private function add(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response = null) + { + $this->transactions[] = ['request' => $request, 'sent_request' => clone $request, 'response' => $response]; + if (\count($this->transactions) > $this->limit) { + \array_shift($this->transactions); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/HttpError.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/HttpError.php new file mode 100644 index 000000000..3f6521de9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/HttpError.php @@ -0,0 +1,32 @@ + ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::VERIFY_RESPONSE]]; + } + /** + * Throw a RequestException on an HTTP protocol error + * + * @param CompleteEvent $event Emitted event + * @throws RequestException + */ + public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event) + { + $code = (string) $event->getResponse()->getStatusCode(); + // Throw an exception for an unsuccessful response + if ($code[0] >= 4) { + throw \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::create($event->getRequest(), $event->getResponse()); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Mock.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Mock.php new file mode 100644 index 000000000..2898def65 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Mock.php @@ -0,0 +1,126 @@ +factory = new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageFactory(); + $this->readBodies = $readBodies; + $this->addMultiple($items); + } + public function getEvents() + { + // Fire the event last, after signing + return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST - 10]]; + } + /** + * @throws \OutOfBoundsException|\Exception + */ + public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event) + { + if (!($item = \array_shift($this->queue))) { + throw new \OutOfBoundsException('Mock queue is empty'); + } elseif ($item instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) { + throw $item; + } + // Emulate reading a response body + $request = $event->getRequest(); + if ($this->readBodies && $request->getBody()) { + while (!$request->getBody()->eof()) { + $request->getBody()->read(8096); + } + } + $saveTo = $event->getRequest()->getConfig()->get('save_to'); + if (null !== $saveTo) { + $body = $item->getBody(); + if (\is_resource($saveTo)) { + \fwrite($saveTo, $body); + } elseif (\is_string($saveTo)) { + \file_put_contents($saveTo, $body); + } elseif ($saveTo instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) { + $saveTo->write($body); + } + } + $event->intercept($item); + } + public function count() + { + return \count($this->queue); + } + /** + * Add a response to the end of the queue + * + * @param string|ResponseInterface $response Response or path to response file + * + * @return self + * @throws \InvalidArgumentException if a string or Response is not passed + */ + public function addResponse($response) + { + if (\is_string($response)) { + $response = \file_exists($response) ? $this->factory->fromMessage(\file_get_contents($response)) : $this->factory->fromMessage($response); + } elseif (!$response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface) { + throw new \InvalidArgumentException('Response must a message ' . 'string, response object, or path to a file'); + } + $this->queue[] = $response; + return $this; + } + /** + * Add an exception to the end of the queue + * + * @param RequestException $e Exception to throw when the request is executed + * + * @return self + */ + public function addException(\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException $e) + { + $this->queue[] = $e; + return $this; + } + /** + * Add multiple items to the queue + * + * @param array $items Items to add + */ + public function addMultiple(array $items) + { + foreach ($items as $item) { + if ($item instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) { + $this->addException($item); + } else { + $this->addResponse($item); + } + } + } + /** + * Clear the queue + */ + public function clearQueue() + { + $this->queue = []; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Prepare.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Prepare.php new file mode 100644 index 000000000..89bbcdeb7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Prepare.php @@ -0,0 +1,108 @@ + ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::PREPARE_REQUEST]]; + } + public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event) + { + $request = $event->getRequest(); + // Set the appropriate Content-Type for a request if one is not set and + // there are form fields + if (!($body = $request->getBody())) { + return; + } + $this->addContentLength($request, $body); + if ($body instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\AppliesHeadersInterface) { + // Synchronize the body with the request headers + $body->applyRequestHeaders($request); + } elseif (!$request->hasHeader('Content-Type')) { + $this->addContentType($request, $body); + } + $this->addExpectHeader($request, $body); + } + private function addContentType(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body) + { + if (!($uri = $body->getMetadata('uri'))) { + return; + } + // Guess the content-type based on the stream's "uri" metadata value. + // The file extension is used to determine the appropriate mime-type. + if ($contentType = \Google\Site_Kit_Dependencies\GuzzleHttp\Mimetypes::getInstance()->fromFilename($uri)) { + $request->setHeader('Content-Type', $contentType); + } + } + private function addContentLength(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body) + { + // Set the Content-Length header if it can be determined, and never + // send a Transfer-Encoding: chunked and Content-Length header in + // the same request. + if ($request->hasHeader('Content-Length')) { + // Remove transfer-encoding if content-length is set. + $request->removeHeader('Transfer-Encoding'); + return; + } + if ($request->hasHeader('Transfer-Encoding')) { + return; + } + if (null !== ($size = $body->getSize())) { + $request->setHeader('Content-Length', $size); + $request->removeHeader('Transfer-Encoding'); + } elseif ('1.1' == $request->getProtocolVersion()) { + // Use chunked Transfer-Encoding if there is no determinable + // content-length header and we're using HTTP/1.1. + $request->setHeader('Transfer-Encoding', 'chunked'); + $request->removeHeader('Content-Length'); + } + } + private function addExpectHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body) + { + // Determine if the Expect header should be used + if ($request->hasHeader('Expect')) { + return; + } + $expect = $request->getConfig()['expect']; + // Return if disabled or if you're not using HTTP/1.1 + if ($expect === \false || $request->getProtocolVersion() !== '1.1') { + return; + } + // The expect header is unconditionally enabled + if ($expect === \true) { + $request->setHeader('Expect', '100-Continue'); + return; + } + // By default, send the expect header when the payload is > 1mb + if ($expect === null) { + $expect = 1048576; + } + // Always add if the body cannot be rewound, the size cannot be + // determined, or the size is greater than the cutoff threshold + $size = $body->getSize(); + if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { + $request->setHeader('Expect', '100-Continue'); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Redirect.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Redirect.php new file mode 100644 index 000000000..ae1d42c20 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Redirect.php @@ -0,0 +1,135 @@ + ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::REDIRECT_RESPONSE]]; + } + /** + * Rewind the entity body of the request if needed + * + * @param RequestInterface $redirectRequest + * @throws CouldNotRewindStreamException + */ + public static function rewindEntityBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $redirectRequest) + { + // Rewind the entity body of the request if needed + if ($body = $redirectRequest->getBody()) { + // Only rewind the body if some of it has been read already, and + // throw an exception if the rewind fails + if ($body->tell() && !$body->seek(0)) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\CouldNotRewindStreamException('Unable to rewind the non-seekable request body after redirecting', $redirectRequest); + } + } + } + /** + * Called when a request receives a redirect response + * + * @param CompleteEvent $event Event emitted + * @throws TooManyRedirectsException + */ + public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event) + { + $response = $event->getResponse(); + if (\substr($response->getStatusCode(), 0, 1) != '3' || !$response->hasHeader('Location')) { + return; + } + $request = $event->getRequest(); + $config = $request->getConfig(); + // Increment the redirect and initialize the redirect state. + if ($redirectCount = $config['redirect_count']) { + $config['redirect_count'] = ++$redirectCount; + } else { + $config['redirect_scheme'] = $request->getScheme(); + $config['redirect_count'] = $redirectCount = 1; + } + $max = $config->getPath('redirect/max') ?: 5; + if ($redirectCount > $max) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\TooManyRedirectsException("Will not follow more than {$redirectCount} redirects", $request); + } + $this->modifyRedirectRequest($request, $response); + $event->retry(); + } + private function modifyRedirectRequest(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response) + { + $config = $request->getConfig(); + $protocols = $config->getPath('redirect/protocols') ?: ['http', 'https']; + // Use a GET request if this is an entity enclosing request and we are + // not forcing RFC compliance, but rather emulating what all browsers + // would do. + $statusCode = $response->getStatusCode(); + if ($statusCode == 303 || $statusCode <= 302 && $request->getBody() && !$config->getPath('redirect/strict')) { + $request->setMethod('GET'); + $request->setBody(null); + } + $previousUrl = $request->getUrl(); + $this->setRedirectUrl($request, $response, $protocols); + $this->rewindEntityBody($request); + // Add the Referer header if it is told to do so and only + // add the header if we are not redirecting from https to http. + if ($config->getPath('redirect/referer') && ($request->getScheme() == 'https' || $request->getScheme() == $config['redirect_scheme'])) { + $url = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($previousUrl); + $url->setUsername(null); + $url->setPassword(null); + $request->setHeader('Referer', (string) $url); + } else { + $request->removeHeader('Referer'); + } + } + /** + * Set the appropriate URL on the request based on the location header + * + * @param RequestInterface $request + * @param ResponseInterface $response + * @param array $protocols + */ + private function setRedirectUrl(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response, array $protocols) + { + $location = $response->getHeader('Location'); + $location = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($location); + // Combine location with the original URL if it is not absolute. + if (!$location->isAbsolute()) { + $originalUrl = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($request->getUrl()); + // Remove query string parameters and just take what is present on + // the redirect Location header + $originalUrl->getQuery()->clear(); + $location = $originalUrl->combine($location); + } + // Ensure that the redirect URL is allowed based on the protocols. + if (!\in_array($location->getScheme(), $protocols)) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\BadResponseException(\sprintf('Redirect URL, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response); + } + $request->setUrl($location); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ToArrayInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ToArrayInterface.php new file mode 100644 index 000000000..2385abf25 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ToArrayInterface.php @@ -0,0 +1,16 @@ +client = $client; + $this->request = $request; + $this->_future = $future; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/UriTemplate.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/UriTemplate.php new file mode 100644 index 000000000..2d14a0c09 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/UriTemplate.php @@ -0,0 +1,191 @@ + array('prefix' => '', 'joiner' => ',', 'query' => \false), '+' => array('prefix' => '', 'joiner' => ',', 'query' => \false), '#' => array('prefix' => '#', 'joiner' => ',', 'query' => \false), '.' => array('prefix' => '.', 'joiner' => '.', 'query' => \false), '/' => array('prefix' => '/', 'joiner' => '/', 'query' => \false), ';' => array('prefix' => ';', 'joiner' => ';', 'query' => \true), '?' => array('prefix' => '?', 'joiner' => '&', 'query' => \true), '&' => array('prefix' => '&', 'joiner' => '&', 'query' => \true)); + /** @var array Delimiters */ + private static $delims = array(':', '/', '?', '#', '[', ']', '@', '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '='); + /** @var array Percent encoded delimiters */ + private static $delimsPct = array('%3A', '%2F', '%3F', '%23', '%5B', '%5D', '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C', '%3B', '%3D'); + public function expand($template, array $variables) + { + if (\false === \strpos($template, '{')) { + return $template; + } + $this->template = $template; + $this->variables = $variables; + return \preg_replace_callback('/\\{([^\\}]+)\\}/', [$this, 'expandMatch'], $this->template); + } + /** + * Parse an expression into parts + * + * @param string $expression Expression to parse + * + * @return array Returns an associative array of parts + */ + private function parseExpression($expression) + { + $result = array(); + if (isset(self::$operatorHash[$expression[0]])) { + $result['operator'] = $expression[0]; + $expression = \substr($expression, 1); + } else { + $result['operator'] = ''; + } + foreach (\explode(',', $expression) as $value) { + $value = \trim($value); + $varspec = array(); + if ($colonPos = \strpos($value, ':')) { + $varspec['value'] = \substr($value, 0, $colonPos); + $varspec['modifier'] = ':'; + $varspec['position'] = (int) \substr($value, $colonPos + 1); + } elseif (\substr($value, -1) == '*') { + $varspec['modifier'] = '*'; + $varspec['value'] = \substr($value, 0, -1); + } else { + $varspec['value'] = (string) $value; + $varspec['modifier'] = ''; + } + $result['values'][] = $varspec; + } + return $result; + } + /** + * Process an expansion + * + * @param array $matches Matches met in the preg_replace_callback + * + * @return string Returns the replacement string + */ + private function expandMatch(array $matches) + { + static $rfc1738to3986 = array('+' => '%20', '%7e' => '~'); + $replacements = array(); + $parsed = self::parseExpression($matches[1]); + $prefix = self::$operatorHash[$parsed['operator']]['prefix']; + $joiner = self::$operatorHash[$parsed['operator']]['joiner']; + $useQuery = self::$operatorHash[$parsed['operator']]['query']; + foreach ($parsed['values'] as $value) { + if (!isset($this->variables[$value['value']])) { + continue; + } + $variable = $this->variables[$value['value']]; + $actuallyUseQuery = $useQuery; + $expanded = ''; + if (\is_array($variable)) { + $isAssoc = $this->isAssoc($variable); + $kvp = array(); + foreach ($variable as $key => $var) { + if ($isAssoc) { + $key = \rawurlencode($key); + $isNestedArray = \is_array($var); + } else { + $isNestedArray = \false; + } + if (!$isNestedArray) { + $var = \rawurlencode($var); + if ($parsed['operator'] == '+' || $parsed['operator'] == '#') { + $var = $this->decodeReserved($var); + } + } + if ($value['modifier'] == '*') { + if ($isAssoc) { + if ($isNestedArray) { + // Nested arrays must allow for deeply nested + // structures. + $var = \strtr(\http_build_query([$key => $var]), $rfc1738to3986); + } else { + $var = $key . '=' . $var; + } + } elseif ($key > 0 && $actuallyUseQuery) { + $var = $value['value'] . '=' . $var; + } + } + $kvp[$key] = $var; + } + if (empty($variable)) { + $actuallyUseQuery = \false; + } elseif ($value['modifier'] == '*') { + $expanded = \implode($joiner, $kvp); + if ($isAssoc) { + // Don't prepend the value name when using the explode + // modifier with an associative array. + $actuallyUseQuery = \false; + } + } else { + if ($isAssoc) { + // When an associative array is encountered and the + // explode modifier is not set, then the result must be + // a comma separated list of keys followed by their + // respective values. + foreach ($kvp as $k => &$v) { + $v = $k . ',' . $v; + } + } + $expanded = \implode(',', $kvp); + } + } else { + if ($value['modifier'] == ':') { + $variable = \substr($variable, 0, $value['position']); + } + $expanded = \rawurlencode($variable); + if ($parsed['operator'] == '+' || $parsed['operator'] == '#') { + $expanded = $this->decodeReserved($expanded); + } + } + if ($actuallyUseQuery) { + if (!$expanded && $joiner != '&') { + $expanded = $value['value']; + } else { + $expanded = $value['value'] . '=' . $expanded; + } + } + $replacements[] = $expanded; + } + $ret = \implode($joiner, $replacements); + if ($ret && $prefix) { + return $prefix . $ret; + } + return $ret; + } + /** + * Determines if an array is associative. + * + * This makes the assumption that input arrays are sequences or hashes. + * This assumption is a tradeoff for accuracy in favor of speed, but it + * should work in almost every case where input is supplied for a URI + * template. + * + * @param array $array Array to check + * + * @return bool + */ + private function isAssoc(array $array) + { + return $array && \array_keys($array)[0] !== 0; + } + /** + * Removes percent encoding on reserved characters (used with + and # + * modifiers). + * + * @param string $string String to fix + * + * @return string + */ + private function decodeReserved($string) + { + return \str_replace(self::$delimsPct, self::$delims, $string); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Url.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Url.php new file mode 100644 index 000000000..ff4aeb388 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Url.php @@ -0,0 +1,471 @@ + 80, 'https' => 443, 'ftp' => 21]; + private static $pathPattern = '/[^a-zA-Z0-9\\-\\._~!\\$&\'\\(\\)\\*\\+,;=%:@\\/]+|%(?![A-Fa-f0-9]{2})/'; + private static $queryPattern = '/[^a-zA-Z0-9\\-\\._~!\\$\'\\(\\)\\*\\+,;%:@\\/\\?=&]+|%(?![A-Fa-f0-9]{2})/'; + /** @var Query|string Query part of the URL */ + private $query; + /** + * Factory method to create a new URL from a URL string + * + * @param string $url Full URL used to create a Url object + * + * @return Url + * @throws \InvalidArgumentException + */ + public static function fromString($url) + { + static $defaults = ['scheme' => null, 'host' => null, 'path' => null, 'port' => null, 'query' => null, 'user' => null, 'pass' => null, 'fragment' => null]; + if (\false === ($parts = \parse_url($url))) { + throw new \InvalidArgumentException('Unable to parse malformed ' . 'url: ' . $url); + } + $parts += $defaults; + // Convert the query string into a Query object + if ($parts['query'] || 0 !== \strlen($parts['query'])) { + $parts['query'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Query::fromString($parts['query']); + } + return new static($parts['scheme'], $parts['host'], $parts['user'], $parts['pass'], $parts['port'], $parts['path'], $parts['query'], $parts['fragment']); + } + /** + * Build a URL from parse_url parts. The generated URL will be a relative + * URL if a scheme or host are not provided. + * + * @param array $parts Array of parse_url parts + * + * @return string + */ + public static function buildUrl(array $parts) + { + $url = $scheme = ''; + if (!empty($parts['scheme'])) { + $scheme = $parts['scheme']; + $url .= $scheme . ':'; + } + if (!empty($parts['host'])) { + $url .= '//'; + if (isset($parts['user'])) { + $url .= $parts['user']; + if (isset($parts['pass'])) { + $url .= ':' . $parts['pass']; + } + $url .= '@'; + } + $url .= $parts['host']; + // Only include the port if it is not the default port of the scheme + if (isset($parts['port']) && (!isset(self::$defaultPorts[$scheme]) || $parts['port'] != self::$defaultPorts[$scheme])) { + $url .= ':' . $parts['port']; + } + } + // Add the path component if present + if (isset($parts['path']) && \strlen($parts['path'])) { + // Always ensure that the path begins with '/' if set and something + // is before the path + if (!empty($parts['host']) && $parts['path'][0] != '/') { + $url .= '/'; + } + $url .= $parts['path']; + } + // Add the query string if present + if (isset($parts['query'])) { + $queryStr = (string) $parts['query']; + if ($queryStr || $queryStr === '0') { + $url .= '?' . $queryStr; + } + } + // Ensure that # is only added to the url if fragment contains anything. + if (isset($parts['fragment'])) { + $url .= '#' . $parts['fragment']; + } + return $url; + } + /** + * Create a new URL from URL parts + * + * @param string $scheme Scheme of the URL + * @param string $host Host of the URL + * @param string $username Username of the URL + * @param string $password Password of the URL + * @param int $port Port of the URL + * @param string $path Path of the URL + * @param Query|array|string $query Query string of the URL + * @param string $fragment Fragment of the URL + */ + public function __construct($scheme, $host, $username = null, $password = null, $port = null, $path = null, $query = null, $fragment = null) + { + $this->scheme = \strtolower($scheme); + $this->host = $host; + $this->port = $port; + $this->username = $username; + $this->password = $password; + $this->fragment = $fragment; + if ($query) { + $this->setQuery($query); + } + $this->setPath($path); + } + /** + * Clone the URL + */ + public function __clone() + { + if ($this->query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) { + $this->query = clone $this->query; + } + } + /** + * Returns the URL as a URL string + * + * @return string + */ + public function __toString() + { + return static::buildUrl($this->getParts()); + } + /** + * Get the parts of the URL as an array + * + * @return array + */ + public function getParts() + { + return array('scheme' => $this->scheme, 'user' => $this->username, 'pass' => $this->password, 'host' => $this->host, 'port' => $this->port, 'path' => $this->path, 'query' => $this->query, 'fragment' => $this->fragment); + } + /** + * Set the host of the request. + * + * @param string $host Host to set (e.g. www.yahoo.com, yahoo.com) + * + * @return Url + */ + public function setHost($host) + { + if (\strpos($host, ':') === \false) { + $this->host = $host; + } else { + list($host, $port) = \explode(':', $host); + $this->host = $host; + $this->setPort($port); + } + } + /** + * Get the host part of the URL + * + * @return string + */ + public function getHost() + { + return $this->host; + } + /** + * Set the scheme part of the URL (http, https, ftp, etc.) + * + * @param string $scheme Scheme to set + */ + public function setScheme($scheme) + { + // Remove the default port if one is specified + if ($this->port && isset(self::$defaultPorts[$this->scheme]) && self::$defaultPorts[$this->scheme] == $this->port) { + $this->port = null; + } + $this->scheme = \strtolower($scheme); + } + /** + * Get the scheme part of the URL + * + * @return string + */ + public function getScheme() + { + return $this->scheme; + } + /** + * Set the port part of the URL + * + * @param int $port Port to set + */ + public function setPort($port) + { + $this->port = $port; + } + /** + * Get the port part of the URl. + * + * If no port was set, this method will return the default port for the + * scheme of the URI. + * + * @return int|null + */ + public function getPort() + { + if ($this->port) { + return $this->port; + } elseif (isset(self::$defaultPorts[$this->scheme])) { + return self::$defaultPorts[$this->scheme]; + } + return null; + } + /** + * Set the path part of the URL. + * + * The provided URL is URL encoded as necessary. + * + * @param string $path Path string to set + */ + public function setPath($path) + { + $this->path = self::encodePath($path); + } + /** + * Removes dot segments from a URL + * @link http://tools.ietf.org/html/rfc3986#section-5.2.4 + */ + public function removeDotSegments() + { + static $noopPaths = ['' => \true, '/' => \true, '*' => \true]; + static $ignoreSegments = ['.' => \true, '..' => \true]; + if (isset($noopPaths[$this->path])) { + return; + } + $results = []; + $segments = $this->getPathSegments(); + foreach ($segments as $segment) { + if ($segment == '..') { + \array_pop($results); + } elseif (!isset($ignoreSegments[$segment])) { + $results[] = $segment; + } + } + $newPath = \implode('/', $results); + // Add the leading slash if necessary + if (\substr($this->path, 0, 1) === '/' && \substr($newPath, 0, 1) !== '/') { + $newPath = '/' . $newPath; + } + // Add the trailing slash if necessary + if ($newPath != '/' && isset($ignoreSegments[\end($segments)])) { + $newPath .= '/'; + } + $this->path = $newPath; + } + /** + * Add a relative path to the currently set path. + * + * @param string $relativePath Relative path to add + */ + public function addPath($relativePath) + { + if ($relativePath != '/' && \is_string($relativePath) && \strlen($relativePath) > 0) { + // Add a leading slash if needed + if ($relativePath[0] !== '/' && \substr($this->path, -1, 1) !== '/') { + $relativePath = '/' . $relativePath; + } + $this->setPath($this->path . $relativePath); + } + } + /** + * Get the path part of the URL + * + * @return string + */ + public function getPath() + { + return $this->path; + } + /** + * Get the path segments of the URL as an array + * + * @return array + */ + public function getPathSegments() + { + return \explode('/', $this->path); + } + /** + * Set the password part of the URL + * + * @param string $password Password to set + */ + public function setPassword($password) + { + $this->password = $password; + } + /** + * Get the password part of the URL + * + * @return null|string + */ + public function getPassword() + { + return $this->password; + } + /** + * Set the username part of the URL + * + * @param string $username Username to set + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * Get the username part of the URl + * + * @return null|string + */ + public function getUsername() + { + return $this->username; + } + /** + * Get the query part of the URL as a Query object + * + * @return Query + */ + public function getQuery() + { + // Convert the query string to a query object if not already done. + if (!$this->query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) { + $this->query = $this->query === null ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Query() : \Google\Site_Kit_Dependencies\GuzzleHttp\Query::fromString($this->query); + } + return $this->query; + } + /** + * Set the query part of the URL. + * + * You may provide a query string as a string and pass $rawString as true + * to provide a query string that is not parsed until a call to getQuery() + * is made. Setting a raw query string will still encode invalid characters + * in a query string. + * + * @param Query|string|array $query Query string value to set. Can + * be a string that will be parsed into a Query object, an array + * of key value pairs, or a Query object. + * @param bool $rawString Set to true when providing a raw query string. + * + * @throws \InvalidArgumentException + */ + public function setQuery($query, $rawString = \false) + { + if ($query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) { + $this->query = $query; + } elseif (\is_string($query)) { + if (!$rawString) { + $this->query = \Google\Site_Kit_Dependencies\GuzzleHttp\Query::fromString($query); + } else { + // Ensure the query does not have illegal characters. + $this->query = \preg_replace_callback(self::$queryPattern, [__CLASS__, 'encodeMatch'], $query); + } + } elseif (\is_array($query)) { + $this->query = new \Google\Site_Kit_Dependencies\GuzzleHttp\Query($query); + } else { + throw new \InvalidArgumentException('Query must be a Query, ' . 'array, or string. Got ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($query)); + } + } + /** + * Get the fragment part of the URL + * + * @return null|string + */ + public function getFragment() + { + return $this->fragment; + } + /** + * Set the fragment part of the URL + * + * @param string $fragment Fragment to set + */ + public function setFragment($fragment) + { + $this->fragment = $fragment; + } + /** + * Check if this is an absolute URL + * + * @return bool + */ + public function isAbsolute() + { + return $this->scheme && $this->host; + } + /** + * Combine the URL with another URL and return a new URL instance. + * + * Follows the rules specific in RFC 3986 section 5.4. + * + * @param string $url Relative URL to combine with + * + * @return Url + * @throws \InvalidArgumentException + * @link http://tools.ietf.org/html/rfc3986#section-5.4 + */ + public function combine($url) + { + $url = static::fromString($url); + // Use the more absolute URL as the base URL + if (!$this->isAbsolute() && $url->isAbsolute()) { + $url = $url->combine($this); + } + $parts = $url->getParts(); + // Passing a URL with a scheme overrides everything + if ($parts['scheme']) { + return clone $url; + } + // Setting a host overrides the entire rest of the URL + if ($parts['host']) { + return new static($this->scheme, $parts['host'], $parts['user'], $parts['pass'], $parts['port'], $parts['path'], $parts['query'] instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query ? clone $parts['query'] : $parts['query'], $parts['fragment']); + } + if (!$parts['path'] && $parts['path'] !== '0') { + // The relative URL has no path, so check if it is just a query + $path = $this->path ?: ''; + $query = $parts['query'] ?: $this->query; + } else { + $query = $parts['query']; + if ($parts['path'][0] == '/' || !$this->path) { + // Overwrite the existing path if the rel path starts with "/" + $path = $parts['path']; + } else { + // If the relative URL does not have a path or the base URL + // path does not end in a "/" then overwrite the existing path + // up to the last "/" + $path = \substr($this->path, 0, \strrpos($this->path, '/') + 1) . $parts['path']; + } + } + $result = new self($this->scheme, $this->host, $this->username, $this->password, $this->port, $path, $query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query ? clone $query : $query, $parts['fragment']); + if ($path) { + $result->removeDotSegments(); + } + return $result; + } + /** + * Encodes the path part of a URL without double-encoding percent-encoded + * key value pairs. + * + * @param string $path Path to encode + * + * @return string + */ + public static function encodePath($path) + { + static $cb = [__CLASS__, 'encodeMatch']; + return \preg_replace_callback(self::$pathPattern, $cb, $path); + } + private static function encodeMatch(array $match) + { + return \rawurlencode($match[0]); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Utils.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Utils.php new file mode 100644 index 000000000..16e3a7454 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Utils.php @@ -0,0 +1,180 @@ +expand($template, $variables); + } + /** + * Wrapper for JSON decode that implements error detection with helpful + * error messages. + * + * @param string $json JSON data to parse + * @param bool $assoc When true, returned objects will be converted + * into associative arrays. + * @param int $depth User specified recursion depth. + * @param int $options Bitmask of JSON decode options. + * + * @return mixed + * @throws \InvalidArgumentException if the JSON cannot be parsed. + * @link http://www.php.net/manual/en/function.json-decode.php + */ + public static function jsonDecode($json, $assoc = \false, $depth = 512, $options = 0) + { + if ($json === '' || $json === null) { + return null; + } + static $jsonErrors = [\JSON_ERROR_DEPTH => 'JSON_ERROR_DEPTH - Maximum stack depth exceeded', \JSON_ERROR_STATE_MISMATCH => 'JSON_ERROR_STATE_MISMATCH - Underflow or the modes mismatch', \JSON_ERROR_CTRL_CHAR => 'JSON_ERROR_CTRL_CHAR - Unexpected control character found', \JSON_ERROR_SYNTAX => 'JSON_ERROR_SYNTAX - Syntax error, malformed JSON', \JSON_ERROR_UTF8 => 'JSON_ERROR_UTF8 - Malformed UTF-8 characters, possibly incorrectly encoded']; + $data = \json_decode($json, $assoc, $depth, $options); + if (\JSON_ERROR_NONE !== \json_last_error()) { + $last = \json_last_error(); + throw new \InvalidArgumentException('Unable to parse JSON data: ' . (isset($jsonErrors[$last]) ? $jsonErrors[$last] : 'Unknown error')); + } + return $data; + } + /** + * Get the default User-Agent string to use with Guzzle + * + * @return string + */ + public static function getDefaultUserAgent() + { + static $defaultAgent = ''; + if (!$defaultAgent) { + $defaultAgent = 'Guzzle/' . \Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface::VERSION; + if (\extension_loaded('curl')) { + $defaultAgent .= ' curl/' . \curl_version()['version']; + } + $defaultAgent .= ' PHP/' . \PHP_VERSION; + } + return $defaultAgent; + } + /** + * Create a default handler to use based on the environment + * + * @throws \RuntimeException if no viable Handler is available. + */ + public static function getDefaultHandler() + { + $default = $future = null; + if (\extension_loaded('curl')) { + $config = ['select_timeout' => \getenv('GUZZLE_CURL_SELECT_TIMEOUT') ?: 1]; + if ($maxHandles = \getenv('GUZZLE_CURL_MAX_HANDLES')) { + $config['max_handles'] = $maxHandles; + } + if (\function_exists('curl_reset')) { + $default = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlHandler(); + $future = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlMultiHandler($config); + } else { + $default = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlMultiHandler($config); + } + } + if (\ini_get('allow_url_fopen')) { + $default = !$default ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\StreamHandler() : \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\Middleware::wrapStreaming($default, new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\StreamHandler()); + } elseif (!$default) { + throw new \RuntimeException('Guzzle requires cURL, the ' . 'allow_url_fopen ini setting, or a custom HTTP handler.'); + } + return $future ? \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\Middleware::wrapFuture($default, $future) : $default; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/AppendStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/AppendStream.php new file mode 100644 index 000000000..4d5cf4ba3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/AppendStream.php @@ -0,0 +1,205 @@ +addStream($stream); + } + } + public function __toString() + { + try { + $this->rewind(); + return $this->getContents(); + } catch (\Exception $e) { + return ''; + } + } + /** + * Add a stream to the AppendStream + * + * @param StreamInterface $stream Stream to append. Must be readable. + * + * @throws \InvalidArgumentException if the stream is not readable + */ + public function addStream(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream) + { + if (!$stream->isReadable()) { + throw new \InvalidArgumentException('Each stream must be readable'); + } + // The stream is only seekable if all streams are seekable + if (!$stream->isSeekable()) { + $this->seekable = \false; + } + $this->streams[] = $stream; + } + public function getContents() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToString($this); + } + /** + * Closes each attached stream. + * + * {@inheritdoc} + */ + public function close() + { + $this->pos = $this->current = 0; + $this->seekable = \true; + foreach ($this->streams as $stream) { + $stream->close(); + } + $this->streams = []; + } + /** + * Detaches each attached stream. + * + * Returns null as it's not clear which underlying stream resource to return. + * + * {@inheritdoc} + */ + public function detach() + { + $this->pos = $this->current = 0; + $this->seekable = \true; + foreach ($this->streams as $stream) { + $stream->detach(); + } + $this->streams = []; + return null; + } + public function tell() + { + return $this->pos; + } + /** + * Tries to calculate the size by adding the size of each stream. + * + * If any of the streams do not return a valid number, then the size of the + * append stream cannot be determined and null is returned. + * + * {@inheritdoc} + */ + public function getSize() + { + $size = 0; + foreach ($this->streams as $stream) { + $s = $stream->getSize(); + if ($s === null) { + return null; + } + $size += $s; + } + return $size; + } + public function eof() + { + return !$this->streams || $this->current >= \count($this->streams) - 1 && $this->streams[$this->current]->eof(); + } + public function rewind() + { + $this->seek(0); + } + /** + * Attempts to seek to the given position. Only supports SEEK_SET. + * + * {@inheritdoc} + */ + public function seek($offset, $whence = \SEEK_SET) + { + if (!$this->seekable) { + throw new \RuntimeException('This AppendStream is not seekable'); + } elseif ($whence !== \SEEK_SET) { + throw new \RuntimeException('The AppendStream can only seek with SEEK_SET'); + } + $this->pos = $this->current = 0; + // Rewind each stream + foreach ($this->streams as $i => $stream) { + try { + $stream->rewind(); + } catch (\Exception $e) { + throw new \RuntimeException('Unable to seek stream ' . $i . ' of the AppendStream', 0, $e); + } + } + // Seek to the actual position by reading from each stream + while ($this->pos < $offset && !$this->eof()) { + $result = $this->read(\min(8096, $offset - $this->pos)); + if ($result === '') { + break; + } + } + } + /** + * Reads from all of the appended streams until the length is met or EOF. + * + * {@inheritdoc} + */ + public function read($length) + { + $buffer = ''; + $total = \count($this->streams) - 1; + $remaining = $length; + $progressToNext = \false; + while ($remaining > 0) { + // Progress to the next stream if needed. + if ($progressToNext || $this->streams[$this->current]->eof()) { + $progressToNext = \false; + if ($this->current === $total) { + break; + } + $this->current++; + } + $result = $this->streams[$this->current]->read($remaining); + // Using a loose comparison here to match on '', false, and null + if ($result == null) { + $progressToNext = \true; + continue; + } + $buffer .= $result; + $remaining = $length - \strlen($buffer); + } + $this->pos += \strlen($buffer); + return $buffer; + } + public function isReadable() + { + return \true; + } + public function isWritable() + { + return \false; + } + public function isSeekable() + { + return $this->seekable; + } + public function write($string) + { + throw new \RuntimeException('Cannot write to an AppendStream'); + } + public function getMetadata($key = null) + { + return $key ? null : []; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/BufferStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/BufferStream.php new file mode 100644 index 000000000..9b7d36c14 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/BufferStream.php @@ -0,0 +1,118 @@ +hwm = $hwm; + } + public function __toString() + { + return $this->getContents(); + } + public function getContents() + { + $buffer = $this->buffer; + $this->buffer = ''; + return $buffer; + } + public function close() + { + $this->buffer = ''; + } + public function detach() + { + $this->close(); + return null; + } + public function getSize() + { + return \strlen($this->buffer); + } + public function isReadable() + { + return \true; + } + public function isWritable() + { + return \true; + } + public function isSeekable() + { + return \false; + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + throw new \RuntimeException('Cannot seek a BufferStream'); + } + public function eof() + { + return \strlen($this->buffer) === 0; + } + public function tell() + { + throw new \RuntimeException('Cannot determine the position of a BufferStream'); + } + /** + * Reads data from the buffer. + */ + public function read($length) + { + $currentLength = \strlen($this->buffer); + if ($length >= $currentLength) { + // No need to slice the buffer because we don't have enough data. + $result = $this->buffer; + $this->buffer = ''; + } else { + // Slice up the result to provide a subset of the buffer. + $result = \substr($this->buffer, 0, $length); + $this->buffer = \substr($this->buffer, $length); + } + return $result; + } + /** + * Writes data to the buffer. + */ + public function write($string) + { + $this->buffer .= $string; + // TODO: What should happen here? + if (\strlen($this->buffer) >= $this->hwm) { + return \false; + } + return \strlen($string); + } + public function getMetadata($key = null) + { + if ($key == 'hwm') { + return $this->hwm; + } + return $key ? null : []; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/CachingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/CachingStream.php new file mode 100644 index 000000000..8cb17b8aa --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/CachingStream.php @@ -0,0 +1,121 @@ +remoteStream = $stream; + $this->stream = $target ?: new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'r+')); + } + public function getSize() + { + $remoteSize = $this->remoteStream->getSize(); + if (null === $remoteSize) { + return null; + } + return \max($this->stream->getSize(), $remoteSize); + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + if ($whence == \SEEK_SET) { + $byte = $offset; + } elseif ($whence == \SEEK_CUR) { + $byte = $offset + $this->tell(); + } elseif ($whence == \SEEK_END) { + $size = $this->remoteStream->getSize(); + if ($size === null) { + $size = $this->cacheEntireStream(); + } + $byte = $size + $offset; + } else { + throw new \InvalidArgumentException('Invalid whence'); + } + $diff = $byte - $this->stream->getSize(); + if ($diff > 0) { + // Read the remoteStream until we have read in at least the amount + // of bytes requested, or we reach the end of the file. + while ($diff > 0 && !$this->remoteStream->eof()) { + $this->read($diff); + $diff = $byte - $this->stream->getSize(); + } + } else { + // We can just do a normal seek since we've already seen this byte. + $this->stream->seek($byte); + } + } + public function read($length) + { + // Perform a regular read on any previously read data from the buffer + $data = $this->stream->read($length); + $remaining = $length - \strlen($data); + // More data was requested so read from the remote stream + if ($remaining) { + // If data was written to the buffer in a position that would have + // been filled from the remote stream, then we must skip bytes on + // the remote stream to emulate overwriting bytes from that + // position. This mimics the behavior of other PHP stream wrappers. + $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes); + if ($this->skipReadBytes) { + $len = \strlen($remoteData); + $remoteData = \substr($remoteData, $this->skipReadBytes); + $this->skipReadBytes = \max(0, $this->skipReadBytes - $len); + } + $data .= $remoteData; + $this->stream->write($remoteData); + } + return $data; + } + public function write($string) + { + // When appending to the end of the currently read stream, you'll want + // to skip bytes from being read from the remote stream to emulate + // other stream wrappers. Basically replacing bytes of data of a fixed + // length. + $overflow = \strlen($string) + $this->tell() - $this->remoteStream->tell(); + if ($overflow > 0) { + $this->skipReadBytes += $overflow; + } + return $this->stream->write($string); + } + public function eof() + { + return $this->stream->eof() && $this->remoteStream->eof(); + } + /** + * Close both the remote stream and buffer stream + */ + public function close() + { + $this->remoteStream->close() && $this->stream->close(); + } + private function cacheEntireStream() + { + $target = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\FnStream(['write' => 'strlen']); + \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToStream($this, $target); + return $this->tell(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/DroppingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/DroppingStream.php new file mode 100644 index 000000000..10b3d8ab8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/DroppingStream.php @@ -0,0 +1,38 @@ +stream = $stream; + $this->maxLength = $maxLength; + } + public function write($string) + { + $diff = $this->maxLength - $this->stream->getSize(); + // Begin returning 0 when the underlying stream is too large. + if ($diff <= 0) { + return 0; + } + // Write the stream or a subset of the stream if needed. + if (\strlen($string) < $diff) { + return $this->stream->write($string); + } + return $this->stream->write(\substr($string, 0, $diff)); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/FnStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/FnStream.php new file mode 100644 index 000000000..1579cfdd6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/FnStream.php @@ -0,0 +1,136 @@ +methods = $methods; + // Create the functions on the class + foreach ($methods as $name => $fn) { + $this->{'_fn_' . $name} = $fn; + } + } + /** + * Lazily determine which methods are not implemented. + * + * @throws \BadMethodCallException + */ + public function __get($name) + { + throw new \BadMethodCallException(\str_replace('_fn_', '', $name) . '() is not implemented in the FnStream'); + } + /** + * The close method is called on the underlying stream only if possible. + */ + public function __destruct() + { + if (isset($this->_fn_close)) { + \call_user_func($this->_fn_close); + } + } + /** + * An unserialize would allow the __destruct to run when the unserialized value goes out of scope. + * + * @throws \LogicException + */ + public function __wakeup() + { + throw new \LogicException('FnStream should never be unserialized'); + } + /** + * Adds custom functionality to an underlying stream by intercepting + * specific method calls. + * + * @param StreamInterface $stream Stream to decorate + * @param array $methods Hash of method name to a closure + * + * @return FnStream + */ + public static function decorate(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, array $methods) + { + // If any of the required methods were not provided, then simply + // proxy to the decorated stream. + foreach (\array_diff(self::$slots, \array_keys($methods)) as $diff) { + $methods[$diff] = [$stream, $diff]; + } + return new self($methods); + } + public function __toString() + { + return \call_user_func($this->_fn___toString); + } + public function close() + { + return \call_user_func($this->_fn_close); + } + public function detach() + { + return \call_user_func($this->_fn_detach); + } + public function getSize() + { + return \call_user_func($this->_fn_getSize); + } + public function tell() + { + return \call_user_func($this->_fn_tell); + } + public function eof() + { + return \call_user_func($this->_fn_eof); + } + public function isSeekable() + { + return \call_user_func($this->_fn_isSeekable); + } + public function rewind() + { + \call_user_func($this->_fn_rewind); + } + public function seek($offset, $whence = \SEEK_SET) + { + \call_user_func($this->_fn_seek, $offset, $whence); + } + public function isWritable() + { + return \call_user_func($this->_fn_isWritable); + } + public function write($string) + { + return \call_user_func($this->_fn_write, $string); + } + public function isReadable() + { + return \call_user_func($this->_fn_isReadable); + } + public function read($length) + { + return \call_user_func($this->_fn_read, $length); + } + public function getContents() + { + return \call_user_func($this->_fn_getContents); + } + public function getMetadata($key = null) + { + return \call_user_func($this->_fn_getMetadata, $key); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Header.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Header.php new file mode 100644 index 000000000..545bacf11 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Header.php @@ -0,0 +1,66 @@ +]+>|[^=]+/', $kvp, $matches)) { + $m = $matches[0]; + if (isset($m[1])) { + $part[\trim($m[0], $trimmed)] = \trim($m[1], $trimmed); + } else { + $part[] = \trim($m[0], $trimmed); + } + } + } + if ($part) { + $params[] = $part; + } + } + return $params; + } + /** + * Converts an array of header values that may contain comma separated + * headers into an array of headers with no comma separated values. + * + * @param string|array $header Header to normalize. + * + * @return array Returns the normalized header field values. + */ + public static function normalize($header) + { + if (!\is_array($header)) { + return \array_map('trim', \explode(',', $header)); + } + $result = []; + foreach ($header as $value) { + foreach ((array) $value as $v) { + if (\strpos($v, ',') === \false) { + $result[] = $v; + continue; + } + foreach (\preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) { + $result[] = \trim($vv); + } + } + } + return $result; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/InflateStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/InflateStream.php new file mode 100644 index 000000000..fdd9f4ff0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/InflateStream.php @@ -0,0 +1,51 @@ +read(10); + $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header); + // Skip the header, that is 10 + length of filename + 1 (nil) bytes + $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LimitStream($stream, -1, 10 + $filenameHeaderLength); + $resource = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\StreamWrapper::getResource($stream); + \stream_filter_append($resource, 'zlib.inflate', \STREAM_FILTER_READ); + $this->stream = $stream->isSeekable() ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($resource) : new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\NoSeekStream(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($resource)); + } + /** + * @param StreamInterface $stream + * @param $header + * + * @return int + */ + private function getLengthOfPossibleFilenameHeader(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $header) + { + $filename_header_length = 0; + if (\substr(\bin2hex($header), 6, 2) === '08') { + // we have a filename, read until nil + $filename_header_length = 1; + while ($stream->read(1) !== \chr(0)) { + $filename_header_length++; + } + } + return $filename_header_length; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LazyOpenStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LazyOpenStream.php new file mode 100644 index 000000000..e76f05035 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LazyOpenStream.php @@ -0,0 +1,37 @@ +filename = $filename; + $this->mode = $mode; + } + /** + * Creates the underlying stream lazily when required. + * + * @return StreamInterface + */ + protected function createStream() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::tryFopen($this->filename, $this->mode)); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LimitStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LimitStream.php new file mode 100644 index 000000000..f6fd61b79 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LimitStream.php @@ -0,0 +1,130 @@ +stream = $stream; + $this->setLimit($limit); + $this->setOffset($offset); + } + public function eof() + { + // Always return true if the underlying stream is EOF + if ($this->stream->eof()) { + return \true; + } + // No limit and the underlying stream is not at EOF + if ($this->limit == -1) { + return \false; + } + return $this->stream->tell() >= $this->offset + $this->limit; + } + /** + * Returns the size of the limited subset of data + * {@inheritdoc} + */ + public function getSize() + { + if (null === ($length = $this->stream->getSize())) { + return null; + } elseif ($this->limit == -1) { + return $length - $this->offset; + } else { + return \min($this->limit, $length - $this->offset); + } + } + /** + * Allow for a bounded seek on the read limited stream + * {@inheritdoc} + */ + public function seek($offset, $whence = \SEEK_SET) + { + if ($whence !== \SEEK_SET || $offset < 0) { + throw new \RuntimeException(\sprintf('Cannot seek to offset %s with whence %s', $offset, $whence)); + } + $offset += $this->offset; + if ($this->limit !== -1) { + if ($offset > $this->offset + $this->limit) { + $offset = $this->offset + $this->limit; + } + } + $this->stream->seek($offset); + } + /** + * Give a relative tell() + * {@inheritdoc} + */ + public function tell() + { + return $this->stream->tell() - $this->offset; + } + /** + * Set the offset to start limiting from + * + * @param int $offset Offset to seek to and begin byte limiting from + * + * @throws \RuntimeException if the stream cannot be seeked. + */ + public function setOffset($offset) + { + $current = $this->stream->tell(); + if ($current !== $offset) { + // If the stream cannot seek to the offset position, then read to it + if ($this->stream->isSeekable()) { + $this->stream->seek($offset); + } elseif ($current > $offset) { + throw new \RuntimeException("Could not seek to stream offset {$offset}"); + } else { + $this->stream->read($offset - $current); + } + } + $this->offset = $offset; + } + /** + * Set the limit of bytes that the decorator allows to be read from the + * stream. + * + * @param int $limit Number of bytes to allow to be read from the stream. + * Use -1 for no limit. + */ + public function setLimit($limit) + { + $this->limit = $limit; + } + public function read($length) + { + if ($this->limit == -1) { + return $this->stream->read($length); + } + // Check if the current position is less than the total allowed + // bytes + original offset + $remaining = $this->offset + $this->limit - $this->stream->tell(); + if ($remaining > 0) { + // Only return the amount of requested data, ensuring that the byte + // limit is not exceeded + return $this->stream->read(\min($remaining, $length)); + } + return ''; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Message.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Message.php new file mode 100644 index 000000000..db55d0cd2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Message.php @@ -0,0 +1,197 @@ +getMethod() . ' ' . $message->getRequestTarget()) . ' HTTP/' . $message->getProtocolVersion(); + if (!$message->hasHeader('host')) { + $msg .= "\r\nHost: " . $message->getUri()->getHost(); + } + } elseif ($message instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface) { + $msg = 'HTTP/' . $message->getProtocolVersion() . ' ' . $message->getStatusCode() . ' ' . $message->getReasonPhrase(); + } else { + throw new \InvalidArgumentException('Unknown message type'); + } + foreach ($message->getHeaders() as $name => $values) { + if (\strtolower($name) === 'set-cookie') { + foreach ($values as $value) { + $msg .= "\r\n{$name}: " . $value; + } + } else { + $msg .= "\r\n{$name}: " . \implode(', ', $values); + } + } + return "{$msg}\r\n\r\n" . $message->getBody(); + } + /** + * Get a short summary of the message body. + * + * Will return `null` if the response is not printable. + * + * @param MessageInterface $message The message to get the body summary + * @param int $truncateAt The maximum allowed size of the summary + * + * @return string|null + */ + public static function bodySummary(\Google\Site_Kit_Dependencies\Psr\Http\Message\MessageInterface $message, $truncateAt = 120) + { + $body = $message->getBody(); + if (!$body->isSeekable() || !$body->isReadable()) { + return null; + } + $size = $body->getSize(); + if ($size === 0) { + return null; + } + $summary = $body->read($truncateAt); + $body->rewind(); + if ($size > $truncateAt) { + $summary .= ' (truncated...)'; + } + // Matches any printable character, including unicode characters: + // letters, marks, numbers, punctuation, spacing, and separators. + if (\preg_match('/[^\\pL\\pM\\pN\\pP\\pS\\pZ\\n\\r\\t]/u', $summary)) { + return null; + } + return $summary; + } + /** + * Attempts to rewind a message body and throws an exception on failure. + * + * The body of the message will only be rewound if a call to `tell()` + * returns a value other than `0`. + * + * @param MessageInterface $message Message to rewind + * + * @throws \RuntimeException + */ + public static function rewindBody(\Google\Site_Kit_Dependencies\Psr\Http\Message\MessageInterface $message) + { + $body = $message->getBody(); + if ($body->tell()) { + $body->rewind(); + } + } + /** + * Parses an HTTP message into an associative array. + * + * The array contains the "start-line" key containing the start line of + * the message, "headers" key containing an associative array of header + * array values, and a "body" key containing the body of the message. + * + * @param string $message HTTP request or response to parse. + * + * @return array + */ + public static function parseMessage($message) + { + if (!$message) { + throw new \InvalidArgumentException('Invalid message'); + } + $message = \ltrim($message, "\r\n"); + $messageParts = \preg_split("/\r?\n\r?\n/", $message, 2); + if ($messageParts === \false || \count($messageParts) !== 2) { + throw new \InvalidArgumentException('Invalid message: Missing header delimiter'); + } + list($rawHeaders, $body) = $messageParts; + $rawHeaders .= "\r\n"; + // Put back the delimiter we split previously + $headerParts = \preg_split("/\r?\n/", $rawHeaders, 2); + if ($headerParts === \false || \count($headerParts) !== 2) { + throw new \InvalidArgumentException('Invalid message: Missing status line'); + } + list($startLine, $rawHeaders) = $headerParts; + if (\preg_match("/(?:^HTTP\\/|^[A-Z]+ \\S+ HTTP\\/)(\\d+(?:\\.\\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') { + // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0 + $rawHeaders = \preg_replace(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders); + } + /** @var array[] $headerLines */ + $count = \preg_match_all(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, \PREG_SET_ORDER); + // If these aren't the same, then one line didn't match and there's an invalid header. + if ($count !== \substr_count($rawHeaders, "\n")) { + // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4 + if (\preg_match(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) { + throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding'); + } + throw new \InvalidArgumentException('Invalid header syntax'); + } + $headers = []; + foreach ($headerLines as $headerLine) { + $headers[$headerLine[1]][] = $headerLine[2]; + } + return ['start-line' => $startLine, 'headers' => $headers, 'body' => $body]; + } + /** + * Constructs a URI for an HTTP request message. + * + * @param string $path Path from the start-line + * @param array $headers Array of headers (each value an array). + * + * @return string + */ + public static function parseRequestUri($path, array $headers) + { + $hostKey = \array_filter(\array_keys($headers), function ($k) { + return \strtolower($k) === 'host'; + }); + // If no host is found, then a full URI cannot be constructed. + if (!$hostKey) { + return $path; + } + $host = $headers[\reset($hostKey)][0]; + $scheme = \substr($host, -4) === ':443' ? 'https' : 'http'; + return $scheme . '://' . $host . '/' . \ltrim($path, '/'); + } + /** + * Parses a request message string into a request object. + * + * @param string $message Request message string. + * + * @return Request + */ + public static function parseRequest($message) + { + $data = self::parseMessage($message); + $matches = []; + if (!\preg_match('/^[\\S]+\\s+([a-zA-Z]+:\\/\\/|\\/).*/', $data['start-line'], $matches)) { + throw new \InvalidArgumentException('Invalid request string'); + } + $parts = \explode(' ', $data['start-line'], 3); + $version = isset($parts[2]) ? \explode('/', $parts[2])[1] : '1.1'; + $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request($parts[0], $matches[1] === '/' ? self::parseRequestUri($parts[1], $data['headers']) : $parts[1], $data['headers'], $data['body'], $version); + return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); + } + /** + * Parses a response message string into a response object. + * + * @param string $message Response message string. + * + * @return Response + */ + public static function parseResponse($message) + { + $data = self::parseMessage($message); + // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space + // between status-code and reason-phrase is required. But browsers accept + // responses without space and reason as well. + if (!\preg_match('/^HTTP\\/.* [0-9]{3}( .*|$)/', $data['start-line'])) { + throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']); + } + $parts = \explode(' ', $data['start-line'], 3); + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response((int) $parts[1], $data['headers'], $data['body'], \explode('/', $parts[0])[1], isset($parts[2]) ? $parts[2] : null); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MessageTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MessageTrait.php new file mode 100644 index 000000000..57ff3bc89 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MessageTrait.php @@ -0,0 +1,219 @@ + array of values */ + private $headers = []; + /** @var array Map of lowercase header name => original name at registration */ + private $headerNames = []; + /** @var string */ + private $protocol = '1.1'; + /** @var StreamInterface|null */ + private $stream; + public function getProtocolVersion() + { + return $this->protocol; + } + public function withProtocolVersion($version) + { + if ($this->protocol === $version) { + return $this; + } + $new = clone $this; + $new->protocol = $version; + return $new; + } + public function getHeaders() + { + return $this->headers; + } + public function hasHeader($header) + { + return isset($this->headerNames[\strtolower($header)]); + } + public function getHeader($header) + { + $header = \strtolower($header); + if (!isset($this->headerNames[$header])) { + return []; + } + $header = $this->headerNames[$header]; + return $this->headers[$header]; + } + public function getHeaderLine($header) + { + return \implode(', ', $this->getHeader($header)); + } + public function withHeader($header, $value) + { + $this->assertHeader($header); + $value = $this->normalizeHeaderValue($value); + $normalized = \strtolower($header); + $new = clone $this; + if (isset($new->headerNames[$normalized])) { + unset($new->headers[$new->headerNames[$normalized]]); + } + $new->headerNames[$normalized] = $header; + $new->headers[$header] = $value; + return $new; + } + public function withAddedHeader($header, $value) + { + $this->assertHeader($header); + $value = $this->normalizeHeaderValue($value); + $normalized = \strtolower($header); + $new = clone $this; + if (isset($new->headerNames[$normalized])) { + $header = $this->headerNames[$normalized]; + $new->headers[$header] = \array_merge($this->headers[$header], $value); + } else { + $new->headerNames[$normalized] = $header; + $new->headers[$header] = $value; + } + return $new; + } + public function withoutHeader($header) + { + $normalized = \strtolower($header); + if (!isset($this->headerNames[$normalized])) { + return $this; + } + $header = $this->headerNames[$normalized]; + $new = clone $this; + unset($new->headers[$header], $new->headerNames[$normalized]); + return $new; + } + public function getBody() + { + if (!$this->stream) { + $this->stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(''); + } + return $this->stream; + } + public function withBody(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $body) + { + if ($body === $this->stream) { + return $this; + } + $new = clone $this; + $new->stream = $body; + return $new; + } + private function setHeaders(array $headers) + { + $this->headerNames = $this->headers = []; + foreach ($headers as $header => $value) { + if (\is_int($header)) { + // Numeric array keys are converted to int by PHP but having a header name '123' is not forbidden by the spec + // and also allowed in withHeader(). So we need to cast it to string again for the following assertion to pass. + $header = (string) $header; + } + $this->assertHeader($header); + $value = $this->normalizeHeaderValue($value); + $normalized = \strtolower($header); + if (isset($this->headerNames[$normalized])) { + $header = $this->headerNames[$normalized]; + $this->headers[$header] = \array_merge($this->headers[$header], $value); + } else { + $this->headerNames[$normalized] = $header; + $this->headers[$header] = $value; + } + } + } + /** + * @param mixed $value + * + * @return string[] + */ + private function normalizeHeaderValue($value) + { + if (!\is_array($value)) { + return $this->trimAndValidateHeaderValues([$value]); + } + if (\count($value) === 0) { + throw new \InvalidArgumentException('Header value can not be an empty array.'); + } + return $this->trimAndValidateHeaderValues($value); + } + /** + * Trims whitespace from the header values. + * + * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field. + * + * header-field = field-name ":" OWS field-value OWS + * OWS = *( SP / HTAB ) + * + * @param mixed[] $values Header values + * + * @return string[] Trimmed header values + * + * @see https://tools.ietf.org/html/rfc7230#section-3.2.4 + */ + private function trimAndValidateHeaderValues(array $values) + { + return \array_map(function ($value) { + if (!\is_scalar($value) && null !== $value) { + throw new \InvalidArgumentException(\sprintf('Header value must be scalar or null but %s provided.', \is_object($value) ? \get_class($value) : \gettype($value))); + } + $trimmed = \trim((string) $value, " \t"); + $this->assertValue($trimmed); + return $trimmed; + }, \array_values($values)); + } + /** + * @see https://tools.ietf.org/html/rfc7230#section-3.2 + * + * @param mixed $header + * + * @return void + */ + private function assertHeader($header) + { + if (!\is_string($header)) { + throw new \InvalidArgumentException(\sprintf('Header name must be a string but %s provided.', \is_object($header) ? \get_class($header) : \gettype($header))); + } + if ($header === '') { + throw new \InvalidArgumentException('Header name can not be empty.'); + } + if (!\preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $header)) { + throw new \InvalidArgumentException(\sprintf('"%s" is not valid header name', $header)); + } + } + /** + * @param string $value + * + * @return void + * + * @see https://tools.ietf.org/html/rfc7230#section-3.2 + * + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + * VCHAR = %x21-7E + * obs-text = %x80-FF + * obs-fold = CRLF 1*( SP / HTAB ) + */ + private function assertValue($value) + { + // The regular expression intentionally does not support the obs-fold production, because as + // per RFC 7230#3.2.4: + // + // A sender MUST NOT generate a message that includes + // line folding (i.e., that has any field-value that contains a match to + // the obs-fold rule) unless the message is intended for packaging + // within the message/http media type. + // + // Clients must not send a request with line folding and a server sending folded headers is + // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting + // folding is not likely to break any legitimate use case. + if (!\preg_match('/^[\\x20\\x09\\x21-\\x7E\\x80-\\xFF]*$/', $value)) { + throw new \InvalidArgumentException(\sprintf('"%s" is not valid header value', $value)); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MimeType.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MimeType.php new file mode 100644 index 000000000..9776fd3cf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MimeType.php @@ -0,0 +1,33 @@ + 'video/3gpp', '7z' => 'application/x-7z-compressed', 'aac' => 'audio/x-aac', 'ai' => 'application/postscript', 'aif' => 'audio/x-aiff', 'asc' => 'text/plain', 'asf' => 'video/x-ms-asf', 'atom' => 'application/atom+xml', 'avi' => 'video/x-msvideo', 'bmp' => 'image/bmp', 'bz2' => 'application/x-bzip2', 'cer' => 'application/pkix-cert', 'crl' => 'application/pkix-crl', 'crt' => 'application/x-x509-ca-cert', 'css' => 'text/css', 'csv' => 'text/csv', 'cu' => 'application/cu-seeme', 'deb' => 'application/x-debian-package', 'doc' => 'application/msword', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dvi' => 'application/x-dvi', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'epub' => 'application/epub+zip', 'etx' => 'text/x-setext', 'flac' => 'audio/flac', 'flv' => 'video/x-flv', 'gif' => 'image/gif', 'gz' => 'application/gzip', 'htm' => 'text/html', 'html' => 'text/html', 'ico' => 'image/x-icon', 'ics' => 'text/calendar', 'ini' => 'text/plain', 'iso' => 'application/x-iso9660-image', 'jar' => 'application/java-archive', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'js' => 'text/javascript', 'json' => 'application/json', 'latex' => 'application/x-latex', 'log' => 'text/plain', 'm4a' => 'audio/mp4', 'm4v' => 'video/mp4', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mov' => 'video/quicktime', 'mkv' => 'video/x-matroska', 'mp3' => 'audio/mpeg', 'mp4' => 'video/mp4', 'mp4a' => 'audio/mp4', 'mp4v' => 'video/mp4', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpg4' => 'video/mp4', 'oga' => 'audio/ogg', 'ogg' => 'audio/ogg', 'ogv' => 'video/ogg', 'ogx' => 'application/ogg', 'pbm' => 'image/x-portable-bitmap', 'pdf' => 'application/pdf', 'pgm' => 'image/x-portable-graymap', 'png' => 'image/png', 'pnm' => 'image/x-portable-anymap', 'ppm' => 'image/x-portable-pixmap', 'ppt' => 'application/vnd.ms-powerpoint', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'ps' => 'application/postscript', 'qt' => 'video/quicktime', 'rar' => 'application/x-rar-compressed', 'ras' => 'image/x-cmu-raster', 'rss' => 'application/rss+xml', 'rtf' => 'application/rtf', 'sgm' => 'text/sgml', 'sgml' => 'text/sgml', 'svg' => 'image/svg+xml', 'swf' => 'application/x-shockwave-flash', 'tar' => 'application/x-tar', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'torrent' => 'application/x-bittorrent', 'ttf' => 'application/x-font-ttf', 'txt' => 'text/plain', 'wav' => 'audio/x-wav', 'webm' => 'video/webm', 'webp' => 'image/webp', 'wma' => 'audio/x-ms-wma', 'wmv' => 'video/x-ms-wmv', 'woff' => 'application/x-font-woff', 'wsdl' => 'application/wsdl+xml', 'xbm' => 'image/x-xbitmap', 'xls' => 'application/vnd.ms-excel', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xml' => 'application/xml', 'xpm' => 'image/x-xpixmap', 'xwd' => 'image/x-xwindowdump', 'yaml' => 'text/yaml', 'yml' => 'text/yaml', 'zip' => 'application/zip']; + $extension = \strtolower($extension); + return isset($mimetypes[$extension]) ? $mimetypes[$extension] : null; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MultipartStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MultipartStream.php new file mode 100644 index 000000000..932214c58 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MultipartStream.php @@ -0,0 +1,125 @@ +boundary = $boundary ?: \sha1(\uniqid('', \true)); + $this->stream = $this->createStream($elements); + } + /** + * Get the boundary + * + * @return string + */ + public function getBoundary() + { + return $this->boundary; + } + public function isWritable() + { + return \false; + } + /** + * Get the headers needed before transferring the content of a POST file + */ + private function getHeaders(array $headers) + { + $str = ''; + foreach ($headers as $key => $value) { + $str .= "{$key}: {$value}\r\n"; + } + return "--{$this->boundary}\r\n" . \trim($str) . "\r\n\r\n"; + } + /** + * Create the aggregate stream that will be used to upload the POST data + */ + protected function createStream(array $elements) + { + $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\AppendStream(); + foreach ($elements as $element) { + $this->addElement($stream, $element); + } + // Add the trailing boundary with CRLF + $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor("--{$this->boundary}--\r\n")); + return $stream; + } + private function addElement(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\AppendStream $stream, array $element) + { + foreach (['contents', 'name'] as $key) { + if (!\array_key_exists($key, $element)) { + throw new \InvalidArgumentException("A '{$key}' key is required"); + } + } + $element['contents'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($element['contents']); + if (empty($element['filename'])) { + $uri = $element['contents']->getMetadata('uri'); + if (\substr($uri, 0, 6) !== 'php://') { + $element['filename'] = $uri; + } + } + list($body, $headers) = $this->createElement($element['name'], $element['contents'], isset($element['filename']) ? $element['filename'] : null, isset($element['headers']) ? $element['headers'] : []); + $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($this->getHeaders($headers))); + $stream->addStream($body); + $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor("\r\n")); + } + /** + * @return array + */ + private function createElement($name, \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $filename, array $headers) + { + // Set a default content-disposition header if one was no provided + $disposition = $this->getHeader($headers, 'content-disposition'); + if (!$disposition) { + $headers['Content-Disposition'] = $filename === '0' || $filename ? \sprintf('form-data; name="%s"; filename="%s"', $name, \basename($filename)) : "form-data; name=\"{$name}\""; + } + // Set a default content-length header if one was no provided + $length = $this->getHeader($headers, 'content-length'); + if (!$length) { + if ($length = $stream->getSize()) { + $headers['Content-Length'] = (string) $length; + } + } + // Set a default Content-Type if one was not supplied + $type = $this->getHeader($headers, 'content-type'); + if (!$type && ($filename === '0' || $filename)) { + if ($type = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\MimeType::fromFilename($filename)) { + $headers['Content-Type'] = $type; + } + } + return [$stream, $headers]; + } + private function getHeader(array $headers, $key) + { + $lowercaseHeader = \strtolower($key); + foreach ($headers as $k => $v) { + if (\strtolower($k) === $lowercaseHeader) { + return $v; + } + } + return null; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/NoSeekStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/NoSeekStream.php new file mode 100644 index 000000000..b86a45b5c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/NoSeekStream.php @@ -0,0 +1,22 @@ +source = $source; + $this->size = isset($options['size']) ? $options['size'] : null; + $this->metadata = isset($options['metadata']) ? $options['metadata'] : []; + $this->buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\BufferStream(); + } + public function __toString() + { + try { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToString($this); + } catch (\Exception $e) { + return ''; + } + } + public function close() + { + $this->detach(); + } + public function detach() + { + $this->tellPos = \false; + $this->source = null; + return null; + } + public function getSize() + { + return $this->size; + } + public function tell() + { + return $this->tellPos; + } + public function eof() + { + return !$this->source; + } + public function isSeekable() + { + return \false; + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + throw new \RuntimeException('Cannot seek a PumpStream'); + } + public function isWritable() + { + return \false; + } + public function write($string) + { + throw new \RuntimeException('Cannot write to a PumpStream'); + } + public function isReadable() + { + return \true; + } + public function read($length) + { + $data = $this->buffer->read($length); + $readLen = \strlen($data); + $this->tellPos += $readLen; + $remaining = $length - $readLen; + if ($remaining) { + $this->pump($remaining); + $data .= $this->buffer->read($remaining); + $this->tellPos += \strlen($data) - $readLen; + } + return $data; + } + public function getContents() + { + $result = ''; + while (!$this->eof()) { + $result .= $this->read(1000000); + } + return $result; + } + public function getMetadata($key = null) + { + if (!$key) { + return $this->metadata; + } + return isset($this->metadata[$key]) ? $this->metadata[$key] : null; + } + private function pump($length) + { + if ($this->source) { + do { + $data = \call_user_func($this->source, $length); + if ($data === \false || $data === null) { + $this->source = null; + return; + } + $this->buffer->write($data); + $length -= \strlen($data); + } while ($length > 0); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Query.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Query.php new file mode 100644 index 000000000..b66cafd13 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Query.php @@ -0,0 +1,105 @@ + '1', 'foo[b]' => '2'])`. + * + * @param string $str Query string to parse + * @param int|bool $urlEncoding How the query string is encoded + * + * @return array + */ + public static function parse($str, $urlEncoding = \true) + { + $result = []; + if ($str === '') { + return $result; + } + if ($urlEncoding === \true) { + $decoder = function ($value) { + return \rawurldecode(\str_replace('+', ' ', $value)); + }; + } elseif ($urlEncoding === \PHP_QUERY_RFC3986) { + $decoder = 'rawurldecode'; + } elseif ($urlEncoding === \PHP_QUERY_RFC1738) { + $decoder = 'urldecode'; + } else { + $decoder = function ($str) { + return $str; + }; + } + foreach (\explode('&', $str) as $kvp) { + $parts = \explode('=', $kvp, 2); + $key = $decoder($parts[0]); + $value = isset($parts[1]) ? $decoder($parts[1]) : null; + if (!isset($result[$key])) { + $result[$key] = $value; + } else { + if (!\is_array($result[$key])) { + $result[$key] = [$result[$key]]; + } + $result[$key][] = $value; + } + } + return $result; + } + /** + * Build a query string from an array of key value pairs. + * + * This function can use the return value of `parse()` to build a query + * string. This function does not modify the provided keys when an array is + * encountered (like `http_build_query()` would). + * + * @param array $params Query string parameters. + * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 + * to encode using RFC3986, or PHP_QUERY_RFC1738 + * to encode using RFC1738. + * + * @return string + */ + public static function build(array $params, $encoding = \PHP_QUERY_RFC3986) + { + if (!$params) { + return ''; + } + if ($encoding === \false) { + $encoder = function ($str) { + return $str; + }; + } elseif ($encoding === \PHP_QUERY_RFC3986) { + $encoder = 'rawurlencode'; + } elseif ($encoding === \PHP_QUERY_RFC1738) { + $encoder = 'urlencode'; + } else { + throw new \InvalidArgumentException('Invalid type'); + } + $qs = ''; + foreach ($params as $k => $v) { + $k = $encoder($k); + if (!\is_array($v)) { + $qs .= $k; + if ($v !== null) { + $qs .= '=' . $encoder($v); + } + $qs .= '&'; + } else { + foreach ($v as $vv) { + $qs .= $k; + if ($vv !== null) { + $qs .= '=' . $encoder($vv); + } + $qs .= '&'; + } + } + } + return $qs ? (string) \substr($qs, 0, -1) : ''; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Request.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Request.php new file mode 100644 index 000000000..dfaaf87bc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Request.php @@ -0,0 +1,120 @@ +assertMethod($method); + if (!$uri instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface) { + $uri = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri($uri); + } + $this->method = \strtoupper($method); + $this->uri = $uri; + $this->setHeaders($headers); + $this->protocol = $version; + if (!isset($this->headerNames['host'])) { + $this->updateHostFromUri(); + } + if ($body !== '' && $body !== null) { + $this->stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($body); + } + } + public function getRequestTarget() + { + if ($this->requestTarget !== null) { + return $this->requestTarget; + } + $target = $this->uri->getPath(); + if ($target == '') { + $target = '/'; + } + if ($this->uri->getQuery() != '') { + $target .= '?' . $this->uri->getQuery(); + } + return $target; + } + public function withRequestTarget($requestTarget) + { + if (\preg_match('#\\s#', $requestTarget)) { + throw new \InvalidArgumentException('Invalid request target provided; cannot contain whitespace'); + } + $new = clone $this; + $new->requestTarget = $requestTarget; + return $new; + } + public function getMethod() + { + return $this->method; + } + public function withMethod($method) + { + $this->assertMethod($method); + $new = clone $this; + $new->method = \strtoupper($method); + return $new; + } + public function getUri() + { + return $this->uri; + } + public function withUri(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, $preserveHost = \false) + { + if ($uri === $this->uri) { + return $this; + } + $new = clone $this; + $new->uri = $uri; + if (!$preserveHost || !isset($this->headerNames['host'])) { + $new->updateHostFromUri(); + } + return $new; + } + private function updateHostFromUri() + { + $host = $this->uri->getHost(); + if ($host == '') { + return; + } + if (($port = $this->uri->getPort()) !== null) { + $host .= ':' . $port; + } + if (isset($this->headerNames['host'])) { + $header = $this->headerNames['host']; + } else { + $header = 'Host'; + $this->headerNames['host'] = 'Host'; + } + // Ensure Host is the first header. + // See: http://tools.ietf.org/html/rfc7230#section-5.4 + $this->headers = [$header => [$host]] + $this->headers; + } + private function assertMethod($method) + { + if (!\is_string($method) || $method === '') { + throw new \InvalidArgumentException('Method must be a non-empty string.'); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Response.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Response.php new file mode 100644 index 000000000..1a6685f2b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Response.php @@ -0,0 +1,76 @@ + 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-status', 208 => 'Already Reported', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Requested range not satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Unordered Collection', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 511 => 'Network Authentication Required']; + /** @var string */ + private $reasonPhrase = ''; + /** @var int */ + private $statusCode = 200; + /** + * @param int $status Status code + * @param array $headers Response headers + * @param string|resource|StreamInterface|null $body Response body + * @param string $version Protocol version + * @param string|null $reason Reason phrase (when empty a default will be used based on the status code) + */ + public function __construct($status = 200, array $headers = [], $body = null, $version = '1.1', $reason = null) + { + $this->assertStatusCodeIsInteger($status); + $status = (int) $status; + $this->assertStatusCodeRange($status); + $this->statusCode = $status; + if ($body !== '' && $body !== null) { + $this->stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($body); + } + $this->setHeaders($headers); + if ($reason == '' && isset(self::$phrases[$this->statusCode])) { + $this->reasonPhrase = self::$phrases[$this->statusCode]; + } else { + $this->reasonPhrase = (string) $reason; + } + $this->protocol = $version; + } + public function getStatusCode() + { + return $this->statusCode; + } + public function getReasonPhrase() + { + return $this->reasonPhrase; + } + public function withStatus($code, $reasonPhrase = '') + { + $this->assertStatusCodeIsInteger($code); + $code = (int) $code; + $this->assertStatusCodeRange($code); + $new = clone $this; + $new->statusCode = $code; + if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) { + $reasonPhrase = self::$phrases[$new->statusCode]; + } + $new->reasonPhrase = (string) $reasonPhrase; + return $new; + } + private function assertStatusCodeIsInteger($statusCode) + { + if (\filter_var($statusCode, \FILTER_VALIDATE_INT) === \false) { + throw new \InvalidArgumentException('Status code must be an integer value.'); + } + } + private function assertStatusCodeRange($statusCode) + { + if ($statusCode < 100 || $statusCode >= 600) { + throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.'); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Rfc7230.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Rfc7230.php new file mode 100644 index 000000000..ebe8dd338 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Rfc7230.php @@ -0,0 +1,19 @@ +@,;:\\\"/[\\]?={}\1- ]++):[ \t]*+((?:[ \t]*+[!-~€-ÿ]++)*+)[ \t]*+\r?\n)m"; + const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)"; +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/ServerRequest.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/ServerRequest.php new file mode 100644 index 000000000..b91ca2456 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/ServerRequest.php @@ -0,0 +1,306 @@ +serverParams = $serverParams; + parent::__construct($method, $uri, $headers, $body, $version); + } + /** + * Return an UploadedFile instance array. + * + * @param array $files A array which respect $_FILES structure + * + * @return array + * + * @throws InvalidArgumentException for unrecognized values + */ + public static function normalizeFiles(array $files) + { + $normalized = []; + foreach ($files as $key => $value) { + if ($value instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UploadedFileInterface) { + $normalized[$key] = $value; + } elseif (\is_array($value) && isset($value['tmp_name'])) { + $normalized[$key] = self::createUploadedFileFromSpec($value); + } elseif (\is_array($value)) { + $normalized[$key] = self::normalizeFiles($value); + continue; + } else { + throw new \InvalidArgumentException('Invalid value in files specification'); + } + } + return $normalized; + } + /** + * Create and return an UploadedFile instance from a $_FILES specification. + * + * If the specification represents an array of values, this method will + * delegate to normalizeNestedFileSpec() and return that return value. + * + * @param array $value $_FILES struct + * + * @return array|UploadedFileInterface + */ + private static function createUploadedFileFromSpec(array $value) + { + if (\is_array($value['tmp_name'])) { + return self::normalizeNestedFileSpec($value); + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UploadedFile($value['tmp_name'], (int) $value['size'], (int) $value['error'], $value['name'], $value['type']); + } + /** + * Normalize an array of file specifications. + * + * Loops through all nested files and returns a normalized array of + * UploadedFileInterface instances. + * + * @param array $files + * + * @return UploadedFileInterface[] + */ + private static function normalizeNestedFileSpec(array $files = []) + { + $normalizedFiles = []; + foreach (\array_keys($files['tmp_name']) as $key) { + $spec = ['tmp_name' => $files['tmp_name'][$key], 'size' => $files['size'][$key], 'error' => $files['error'][$key], 'name' => $files['name'][$key], 'type' => $files['type'][$key]]; + $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); + } + return $normalizedFiles; + } + /** + * Return a ServerRequest populated with superglobals: + * $_GET + * $_POST + * $_COOKIE + * $_FILES + * $_SERVER + * + * @return ServerRequestInterface + */ + public static function fromGlobals() + { + $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; + $headers = \getallheaders(); + $uri = self::getUriFromGlobals(); + $body = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\CachingStream(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LazyOpenStream('php://input', 'r+')); + $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? \str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; + $serverRequest = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); + return $serverRequest->withCookieParams($_COOKIE)->withQueryParams($_GET)->withParsedBody($_POST)->withUploadedFiles(self::normalizeFiles($_FILES)); + } + private static function extractHostAndPortFromAuthority($authority) + { + $uri = 'http://' . $authority; + $parts = \parse_url($uri); + if (\false === $parts) { + return [null, null]; + } + $host = isset($parts['host']) ? $parts['host'] : null; + $port = isset($parts['port']) ? $parts['port'] : null; + return [$host, $port]; + } + /** + * Get a Uri populated with values from $_SERVER. + * + * @return UriInterface + */ + public static function getUriFromGlobals() + { + $uri = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri(''); + $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http'); + $hasPort = \false; + if (isset($_SERVER['HTTP_HOST'])) { + list($host, $port) = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']); + if ($host !== null) { + $uri = $uri->withHost($host); + } + if ($port !== null) { + $hasPort = \true; + $uri = $uri->withPort($port); + } + } elseif (isset($_SERVER['SERVER_NAME'])) { + $uri = $uri->withHost($_SERVER['SERVER_NAME']); + } elseif (isset($_SERVER['SERVER_ADDR'])) { + $uri = $uri->withHost($_SERVER['SERVER_ADDR']); + } + if (!$hasPort && isset($_SERVER['SERVER_PORT'])) { + $uri = $uri->withPort($_SERVER['SERVER_PORT']); + } + $hasQuery = \false; + if (isset($_SERVER['REQUEST_URI'])) { + $requestUriParts = \explode('?', $_SERVER['REQUEST_URI'], 2); + $uri = $uri->withPath($requestUriParts[0]); + if (isset($requestUriParts[1])) { + $hasQuery = \true; + $uri = $uri->withQuery($requestUriParts[1]); + } + } + if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) { + $uri = $uri->withQuery($_SERVER['QUERY_STRING']); + } + return $uri; + } + /** + * {@inheritdoc} + */ + public function getServerParams() + { + return $this->serverParams; + } + /** + * {@inheritdoc} + */ + public function getUploadedFiles() + { + return $this->uploadedFiles; + } + /** + * {@inheritdoc} + */ + public function withUploadedFiles(array $uploadedFiles) + { + $new = clone $this; + $new->uploadedFiles = $uploadedFiles; + return $new; + } + /** + * {@inheritdoc} + */ + public function getCookieParams() + { + return $this->cookieParams; + } + /** + * {@inheritdoc} + */ + public function withCookieParams(array $cookies) + { + $new = clone $this; + $new->cookieParams = $cookies; + return $new; + } + /** + * {@inheritdoc} + */ + public function getQueryParams() + { + return $this->queryParams; + } + /** + * {@inheritdoc} + */ + public function withQueryParams(array $query) + { + $new = clone $this; + $new->queryParams = $query; + return $new; + } + /** + * {@inheritdoc} + */ + public function getParsedBody() + { + return $this->parsedBody; + } + /** + * {@inheritdoc} + */ + public function withParsedBody($data) + { + $new = clone $this; + $new->parsedBody = $data; + return $new; + } + /** + * {@inheritdoc} + */ + public function getAttributes() + { + return $this->attributes; + } + /** + * {@inheritdoc} + */ + public function getAttribute($attribute, $default = null) + { + if (\false === \array_key_exists($attribute, $this->attributes)) { + return $default; + } + return $this->attributes[$attribute]; + } + /** + * {@inheritdoc} + */ + public function withAttribute($attribute, $value) + { + $new = clone $this; + $new->attributes[$attribute] = $value; + return $new; + } + /** + * {@inheritdoc} + */ + public function withoutAttribute($attribute) + { + if (\false === \array_key_exists($attribute, $this->attributes)) { + return $this; + } + $new = clone $this; + unset($new->attributes[$attribute]); + return $new; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Stream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Stream.php new file mode 100644 index 000000000..30ae562a0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Stream.php @@ -0,0 +1,223 @@ +size = $options['size']; + } + $this->customMetadata = isset($options['metadata']) ? $options['metadata'] : []; + $this->stream = $stream; + $meta = \stream_get_meta_data($this->stream); + $this->seekable = $meta['seekable']; + $this->readable = (bool) \preg_match(self::READABLE_MODES, $meta['mode']); + $this->writable = (bool) \preg_match(self::WRITABLE_MODES, $meta['mode']); + $this->uri = $this->getMetadata('uri'); + } + /** + * Closes the stream when the destructed + */ + public function __destruct() + { + $this->close(); + } + public function __toString() + { + try { + if ($this->isSeekable()) { + $this->seek(0); + } + return $this->getContents(); + } catch (\Exception $e) { + return ''; + } + } + public function getContents() + { + if (!isset($this->stream)) { + throw new \RuntimeException('Stream is detached'); + } + $contents = \stream_get_contents($this->stream); + if ($contents === \false) { + throw new \RuntimeException('Unable to read stream contents'); + } + return $contents; + } + public function close() + { + if (isset($this->stream)) { + if (\is_resource($this->stream)) { + \fclose($this->stream); + } + $this->detach(); + } + } + public function detach() + { + if (!isset($this->stream)) { + return null; + } + $result = $this->stream; + unset($this->stream); + $this->size = $this->uri = null; + $this->readable = $this->writable = $this->seekable = \false; + return $result; + } + public function getSize() + { + if ($this->size !== null) { + return $this->size; + } + if (!isset($this->stream)) { + return null; + } + // Clear the stat cache if the stream has a URI + if ($this->uri) { + \clearstatcache(\true, $this->uri); + } + $stats = \fstat($this->stream); + if (isset($stats['size'])) { + $this->size = $stats['size']; + return $this->size; + } + return null; + } + public function isReadable() + { + return $this->readable; + } + public function isWritable() + { + return $this->writable; + } + public function isSeekable() + { + return $this->seekable; + } + public function eof() + { + if (!isset($this->stream)) { + throw new \RuntimeException('Stream is detached'); + } + return \feof($this->stream); + } + public function tell() + { + if (!isset($this->stream)) { + throw new \RuntimeException('Stream is detached'); + } + $result = \ftell($this->stream); + if ($result === \false) { + throw new \RuntimeException('Unable to determine stream position'); + } + return $result; + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + $whence = (int) $whence; + if (!isset($this->stream)) { + throw new \RuntimeException('Stream is detached'); + } + if (!$this->seekable) { + throw new \RuntimeException('Stream is not seekable'); + } + if (\fseek($this->stream, $offset, $whence) === -1) { + throw new \RuntimeException('Unable to seek to stream position ' . $offset . ' with whence ' . \var_export($whence, \true)); + } + } + public function read($length) + { + if (!isset($this->stream)) { + throw new \RuntimeException('Stream is detached'); + } + if (!$this->readable) { + throw new \RuntimeException('Cannot read from non-readable stream'); + } + if ($length < 0) { + throw new \RuntimeException('Length parameter cannot be negative'); + } + if (0 === $length) { + return ''; + } + $string = \fread($this->stream, $length); + if (\false === $string) { + throw new \RuntimeException('Unable to read from stream'); + } + return $string; + } + public function write($string) + { + if (!isset($this->stream)) { + throw new \RuntimeException('Stream is detached'); + } + if (!$this->writable) { + throw new \RuntimeException('Cannot write to a non-writable stream'); + } + // We can't know the size after writing anything + $this->size = null; + $result = \fwrite($this->stream, $string); + if ($result === \false) { + throw new \RuntimeException('Unable to write to stream'); + } + return $result; + } + public function getMetadata($key = null) + { + if (!isset($this->stream)) { + return $key ? null : []; + } elseif (!$key) { + return $this->customMetadata + \stream_get_meta_data($this->stream); + } elseif (isset($this->customMetadata[$key])) { + return $this->customMetadata[$key]; + } + $meta = \stream_get_meta_data($this->stream); + return isset($meta[$key]) ? $meta[$key] : null; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamDecoratorTrait.php new file mode 100644 index 000000000..8d759a69b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamDecoratorTrait.php @@ -0,0 +1,130 @@ +stream = $stream; + } + /** + * Magic method used to create a new stream if streams are not added in + * the constructor of a decorator (e.g., LazyOpenStream). + * + * @param string $name Name of the property (allows "stream" only). + * + * @return StreamInterface + */ + public function __get($name) + { + if ($name == 'stream') { + $this->stream = $this->createStream(); + return $this->stream; + } + throw new \UnexpectedValueException("{$name} not found on class"); + } + public function __toString() + { + try { + if ($this->isSeekable()) { + $this->seek(0); + } + return $this->getContents(); + } catch (\Exception $e) { + // Really, PHP? https://bugs.php.net/bug.php?id=53648 + \trigger_error('StreamDecorator::__toString exception: ' . (string) $e, \E_USER_ERROR); + return ''; + } + } + public function getContents() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToString($this); + } + /** + * Allow decorators to implement custom methods + * + * @param string $method Missing method name + * @param array $args Method arguments + * + * @return mixed + */ + public function __call($method, array $args) + { + $result = \call_user_func_array([$this->stream, $method], $args); + // Always return the wrapped object if the result is a return $this + return $result === $this->stream ? $this : $result; + } + public function close() + { + $this->stream->close(); + } + public function getMetadata($key = null) + { + return $this->stream->getMetadata($key); + } + public function detach() + { + return $this->stream->detach(); + } + public function getSize() + { + return $this->stream->getSize(); + } + public function eof() + { + return $this->stream->eof(); + } + public function tell() + { + return $this->stream->tell(); + } + public function isReadable() + { + return $this->stream->isReadable(); + } + public function isWritable() + { + return $this->stream->isWritable(); + } + public function isSeekable() + { + return $this->stream->isSeekable(); + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + $this->stream->seek($offset, $whence); + } + public function read($length) + { + return $this->stream->read($length); + } + public function write($string) + { + return $this->stream->write($string); + } + /** + * Implement in subclasses to dynamically create streams when requested. + * + * @return StreamInterface + * + * @throws \BadMethodCallException + */ + protected function createStream() + { + throw new \BadMethodCallException('Not implemented'); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamWrapper.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamWrapper.php new file mode 100644 index 000000000..d408edc54 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamWrapper.php @@ -0,0 +1,105 @@ +isReadable()) { + $mode = $stream->isWritable() ? 'r+' : 'r'; + } elseif ($stream->isWritable()) { + $mode = 'w'; + } else { + throw new \InvalidArgumentException('The stream must be readable, ' . 'writable, or both.'); + } + return \fopen('guzzle://stream', $mode, null, self::createStreamContext($stream)); + } + /** + * Creates a stream context that can be used to open a stream as a php stream resource. + * + * @param StreamInterface $stream + * + * @return resource + */ + public static function createStreamContext(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream) + { + return \stream_context_create(['guzzle' => ['stream' => $stream]]); + } + /** + * Registers the stream wrapper if needed + */ + public static function register() + { + if (!\in_array('guzzle', \stream_get_wrappers())) { + \stream_wrapper_register('guzzle', __CLASS__); + } + } + public function stream_open($path, $mode, $options, &$opened_path) + { + $options = \stream_context_get_options($this->context); + if (!isset($options['guzzle']['stream'])) { + return \false; + } + $this->mode = $mode; + $this->stream = $options['guzzle']['stream']; + return \true; + } + public function stream_read($count) + { + return $this->stream->read($count); + } + public function stream_write($data) + { + return (int) $this->stream->write($data); + } + public function stream_tell() + { + return $this->stream->tell(); + } + public function stream_eof() + { + return $this->stream->eof(); + } + public function stream_seek($offset, $whence) + { + $this->stream->seek($offset, $whence); + return \true; + } + public function stream_cast($cast_as) + { + $stream = clone $this->stream; + return $stream->detach(); + } + public function stream_stat() + { + static $modeMap = ['r' => 33060, 'rb' => 33060, 'r+' => 33206, 'w' => 33188, 'wb' => 33188]; + return ['dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ?: 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0]; + } + public function url_stat($path, $flags) + { + return ['dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0]; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UploadedFile.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UploadedFile.php new file mode 100644 index 000000000..04af97c7c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UploadedFile.php @@ -0,0 +1,255 @@ +setError($errorStatus); + $this->setSize($size); + $this->setClientFilename($clientFilename); + $this->setClientMediaType($clientMediaType); + if ($this->isOk()) { + $this->setStreamOrFile($streamOrFile); + } + } + /** + * Depending on the value set file or stream variable + * + * @param mixed $streamOrFile + * + * @throws InvalidArgumentException + */ + private function setStreamOrFile($streamOrFile) + { + if (\is_string($streamOrFile)) { + $this->file = $streamOrFile; + } elseif (\is_resource($streamOrFile)) { + $this->stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($streamOrFile); + } elseif ($streamOrFile instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface) { + $this->stream = $streamOrFile; + } else { + throw new \InvalidArgumentException('Invalid stream or file provided for UploadedFile'); + } + } + /** + * @param int $error + * + * @throws InvalidArgumentException + */ + private function setError($error) + { + if (\false === \is_int($error)) { + throw new \InvalidArgumentException('Upload file error status must be an integer'); + } + if (\false === \in_array($error, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UploadedFile::$errors)) { + throw new \InvalidArgumentException('Invalid error status for UploadedFile'); + } + $this->error = $error; + } + /** + * @param int $size + * + * @throws InvalidArgumentException + */ + private function setSize($size) + { + if (\false === \is_int($size)) { + throw new \InvalidArgumentException('Upload file size must be an integer'); + } + $this->size = $size; + } + /** + * @param mixed $param + * + * @return bool + */ + private function isStringOrNull($param) + { + return \in_array(\gettype($param), ['string', 'NULL']); + } + /** + * @param mixed $param + * + * @return bool + */ + private function isStringNotEmpty($param) + { + return \is_string($param) && \false === empty($param); + } + /** + * @param string|null $clientFilename + * + * @throws InvalidArgumentException + */ + private function setClientFilename($clientFilename) + { + if (\false === $this->isStringOrNull($clientFilename)) { + throw new \InvalidArgumentException('Upload file client filename must be a string or null'); + } + $this->clientFilename = $clientFilename; + } + /** + * @param string|null $clientMediaType + * + * @throws InvalidArgumentException + */ + private function setClientMediaType($clientMediaType) + { + if (\false === $this->isStringOrNull($clientMediaType)) { + throw new \InvalidArgumentException('Upload file client media type must be a string or null'); + } + $this->clientMediaType = $clientMediaType; + } + /** + * Return true if there is no upload error + * + * @return bool + */ + private function isOk() + { + return $this->error === \UPLOAD_ERR_OK; + } + /** + * @return bool + */ + public function isMoved() + { + return $this->moved; + } + /** + * @throws RuntimeException if is moved or not ok + */ + private function validateActive() + { + if (\false === $this->isOk()) { + throw new \RuntimeException('Cannot retrieve stream due to upload error'); + } + if ($this->isMoved()) { + throw new \RuntimeException('Cannot retrieve stream after it has already been moved'); + } + } + /** + * {@inheritdoc} + * + * @throws RuntimeException if the upload was not successful. + */ + public function getStream() + { + $this->validateActive(); + if ($this->stream instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface) { + return $this->stream; + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LazyOpenStream($this->file, 'r+'); + } + /** + * {@inheritdoc} + * + * @see http://php.net/is_uploaded_file + * @see http://php.net/move_uploaded_file + * + * @param string $targetPath Path to which to move the uploaded file. + * + * @throws RuntimeException if the upload was not successful. + * @throws InvalidArgumentException if the $path specified is invalid. + * @throws RuntimeException on any error during the move operation, or on + * the second or subsequent call to the method. + */ + public function moveTo($targetPath) + { + $this->validateActive(); + if (\false === $this->isStringNotEmpty($targetPath)) { + throw new \InvalidArgumentException('Invalid path provided for move operation; must be a non-empty string'); + } + if ($this->file) { + $this->moved = \php_sapi_name() == 'cli' ? \rename($this->file, $targetPath) : \move_uploaded_file($this->file, $targetPath); + } else { + \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToStream($this->getStream(), new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LazyOpenStream($targetPath, 'w')); + $this->moved = \true; + } + if (\false === $this->moved) { + throw new \RuntimeException(\sprintf('Uploaded file could not be moved to %s', $targetPath)); + } + } + /** + * {@inheritdoc} + * + * @return int|null The file size in bytes or null if unknown. + */ + public function getSize() + { + return $this->size; + } + /** + * {@inheritdoc} + * + * @see http://php.net/manual/en/features.file-upload.errors.php + * + * @return int One of PHP's UPLOAD_ERR_XXX constants. + */ + public function getError() + { + return $this->error; + } + /** + * {@inheritdoc} + * + * @return string|null The filename sent by the client or null if none + * was provided. + */ + public function getClientFilename() + { + return $this->clientFilename; + } + /** + * {@inheritdoc} + */ + public function getClientMediaType() + { + return $this->clientMediaType; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Uri.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Uri.php new file mode 100644 index 000000000..1b617e4dd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Uri.php @@ -0,0 +1,638 @@ + 80, 'https' => 443, 'ftp' => 21, 'gopher' => 70, 'nntp' => 119, 'news' => 119, 'telnet' => 23, 'tn3270' => 23, 'imap' => 143, 'pop' => 110, 'ldap' => 389]; + private static $charUnreserved = 'a-zA-Z0-9_\\-\\.~'; + private static $charSubDelims = '!\\$&\'\\(\\)\\*\\+,;='; + private static $replaceQuery = ['=' => '%3D', '&' => '%26']; + /** @var string Uri scheme. */ + private $scheme = ''; + /** @var string Uri user info. */ + private $userInfo = ''; + /** @var string Uri host. */ + private $host = ''; + /** @var int|null Uri port. */ + private $port; + /** @var string Uri path. */ + private $path = ''; + /** @var string Uri query string. */ + private $query = ''; + /** @var string Uri fragment. */ + private $fragment = ''; + /** + * @param string $uri URI to parse + */ + public function __construct($uri = '') + { + // weak type check to also accept null until we can add scalar type hints + if ($uri != '') { + $parts = self::parse($uri); + if ($parts === \false) { + throw new \InvalidArgumentException("Unable to parse URI: {$uri}"); + } + $this->applyParts($parts); + } + } + /** + * UTF-8 aware \parse_url() replacement. + * + * The internal function produces broken output for non ASCII domain names + * (IDN) when used with locales other than "C". + * + * On the other hand, cURL understands IDN correctly only when UTF-8 locale + * is configured ("C.UTF-8", "en_US.UTF-8", etc.). + * + * @see https://bugs.php.net/bug.php?id=52923 + * @see https://www.php.net/manual/en/function.parse-url.php#114817 + * @see https://curl.haxx.se/libcurl/c/CURLOPT_URL.html#ENCODING + * + * @param string $url + * + * @return array|false + */ + private static function parse($url) + { + // If IPv6 + $prefix = ''; + if (\preg_match('%^(.*://\\[[0-9:a-f]+\\])(.*?)$%', $url, $matches)) { + $prefix = $matches[1]; + $url = $matches[2]; + } + $encodedUrl = \preg_replace_callback('%[^:/@?&=#]+%usD', static function ($matches) { + return \urlencode($matches[0]); + }, $url); + $result = \parse_url($prefix . $encodedUrl); + if ($result === \false) { + return \false; + } + return \array_map('urldecode', $result); + } + public function __toString() + { + return self::composeComponents($this->scheme, $this->getAuthority(), $this->path, $this->query, $this->fragment); + } + /** + * Composes a URI reference string from its various components. + * + * Usually this method does not need to be called manually but instead is used indirectly via + * `Psr\Http\Message\UriInterface::__toString`. + * + * PSR-7 UriInterface treats an empty component the same as a missing component as + * getQuery(), getFragment() etc. always return a string. This explains the slight + * difference to RFC 3986 Section 5.3. + * + * Another adjustment is that the authority separator is added even when the authority is missing/empty + * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with + * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But + * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to + * that format). + * + * @param string $scheme + * @param string $authority + * @param string $path + * @param string $query + * @param string $fragment + * + * @return string + * + * @link https://tools.ietf.org/html/rfc3986#section-5.3 + */ + public static function composeComponents($scheme, $authority, $path, $query, $fragment) + { + $uri = ''; + // weak type checks to also accept null until we can add scalar type hints + if ($scheme != '') { + $uri .= $scheme . ':'; + } + if ($authority != '' || $scheme === 'file') { + $uri .= '//' . $authority; + } + $uri .= $path; + if ($query != '') { + $uri .= '?' . $query; + } + if ($fragment != '') { + $uri .= '#' . $fragment; + } + return $uri; + } + /** + * Whether the URI has the default port of the current scheme. + * + * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used + * independently of the implementation. + * + * @param UriInterface $uri + * + * @return bool + */ + public static function isDefaultPort(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri) + { + return $uri->getPort() === null || isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()]; + } + /** + * Whether the URI is absolute, i.e. it has a scheme. + * + * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true + * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative + * to another URI, the base URI. Relative references can be divided into several forms: + * - network-path references, e.g. '//example.com/path' + * - absolute-path references, e.g. '/path' + * - relative-path references, e.g. 'subpath' + * + * @param UriInterface $uri + * + * @return bool + * + * @see Uri::isNetworkPathReference + * @see Uri::isAbsolutePathReference + * @see Uri::isRelativePathReference + * @link https://tools.ietf.org/html/rfc3986#section-4 + */ + public static function isAbsolute(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() !== ''; + } + /** + * Whether the URI is a network-path reference. + * + * A relative reference that begins with two slash characters is termed an network-path reference. + * + * @param UriInterface $uri + * + * @return bool + * + * @link https://tools.ietf.org/html/rfc3986#section-4.2 + */ + public static function isNetworkPathReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() === '' && $uri->getAuthority() !== ''; + } + /** + * Whether the URI is a absolute-path reference. + * + * A relative reference that begins with a single slash character is termed an absolute-path reference. + * + * @param UriInterface $uri + * + * @return bool + * + * @link https://tools.ietf.org/html/rfc3986#section-4.2 + */ + public static function isAbsolutePathReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() === '' && $uri->getAuthority() === '' && isset($uri->getPath()[0]) && $uri->getPath()[0] === '/'; + } + /** + * Whether the URI is a relative-path reference. + * + * A relative reference that does not begin with a slash character is termed a relative-path reference. + * + * @param UriInterface $uri + * + * @return bool + * + * @link https://tools.ietf.org/html/rfc3986#section-4.2 + */ + public static function isRelativePathReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() === '' && $uri->getAuthority() === '' && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/'); + } + /** + * Whether the URI is a same-document reference. + * + * A same-document reference refers to a URI that is, aside from its fragment + * component, identical to the base URI. When no base URI is given, only an empty + * URI reference (apart from its fragment) is considered a same-document reference. + * + * @param UriInterface $uri The URI to check + * @param UriInterface|null $base An optional base URI to compare against + * + * @return bool + * + * @link https://tools.ietf.org/html/rfc3986#section-4.4 + */ + public static function isSameDocumentReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base = null) + { + if ($base !== null) { + $uri = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::resolve($base, $uri); + return $uri->getScheme() === $base->getScheme() && $uri->getAuthority() === $base->getAuthority() && $uri->getPath() === $base->getPath() && $uri->getQuery() === $base->getQuery(); + } + return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === ''; + } + /** + * Removes dot segments from a path and returns the new path. + * + * @param string $path + * + * @return string + * + * @deprecated since version 1.4. Use UriResolver::removeDotSegments instead. + * @see UriResolver::removeDotSegments + */ + public static function removeDotSegments($path) + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::removeDotSegments($path); + } + /** + * Converts the relative URI into a new URI that is resolved against the base URI. + * + * @param UriInterface $base Base URI + * @param string|UriInterface $rel Relative URI + * + * @return UriInterface + * + * @deprecated since version 1.4. Use UriResolver::resolve instead. + * @see UriResolver::resolve + */ + public static function resolve(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base, $rel) + { + if (!$rel instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface) { + $rel = new self($rel); + } + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::resolve($base, $rel); + } + /** + * Creates a new URI with a specific query string value removed. + * + * Any existing query string values that exactly match the provided key are + * removed. + * + * @param UriInterface $uri URI to use as a base. + * @param string $key Query string key to remove. + * + * @return UriInterface + */ + public static function withoutQueryValue(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, $key) + { + $result = self::getFilteredQueryString($uri, [$key]); + return $uri->withQuery(\implode('&', $result)); + } + /** + * Creates a new URI with a specific query string value. + * + * Any existing query string values that exactly match the provided key are + * removed and replaced with the given key value pair. + * + * A value of null will set the query string key without a value, e.g. "key" + * instead of "key=value". + * + * @param UriInterface $uri URI to use as a base. + * @param string $key Key to set. + * @param string|null $value Value to set + * + * @return UriInterface + */ + public static function withQueryValue(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, $key, $value) + { + $result = self::getFilteredQueryString($uri, [$key]); + $result[] = self::generateQueryString($key, $value); + return $uri->withQuery(\implode('&', $result)); + } + /** + * Creates a new URI with multiple specific query string values. + * + * It has the same behavior as withQueryValue() but for an associative array of key => value. + * + * @param UriInterface $uri URI to use as a base. + * @param array $keyValueArray Associative array of key and values + * + * @return UriInterface + */ + public static function withQueryValues(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, array $keyValueArray) + { + $result = self::getFilteredQueryString($uri, \array_keys($keyValueArray)); + foreach ($keyValueArray as $key => $value) { + $result[] = self::generateQueryString($key, $value); + } + return $uri->withQuery(\implode('&', $result)); + } + /** + * Creates a URI from a hash of `parse_url` components. + * + * @param array $parts + * + * @return UriInterface + * + * @link http://php.net/manual/en/function.parse-url.php + * + * @throws \InvalidArgumentException If the components do not form a valid URI. + */ + public static function fromParts(array $parts) + { + $uri = new self(); + $uri->applyParts($parts); + $uri->validateState(); + return $uri; + } + public function getScheme() + { + return $this->scheme; + } + public function getAuthority() + { + $authority = $this->host; + if ($this->userInfo !== '') { + $authority = $this->userInfo . '@' . $authority; + } + if ($this->port !== null) { + $authority .= ':' . $this->port; + } + return $authority; + } + public function getUserInfo() + { + return $this->userInfo; + } + public function getHost() + { + return $this->host; + } + public function getPort() + { + return $this->port; + } + public function getPath() + { + return $this->path; + } + public function getQuery() + { + return $this->query; + } + public function getFragment() + { + return $this->fragment; + } + public function withScheme($scheme) + { + $scheme = $this->filterScheme($scheme); + if ($this->scheme === $scheme) { + return $this; + } + $new = clone $this; + $new->scheme = $scheme; + $new->removeDefaultPort(); + $new->validateState(); + return $new; + } + public function withUserInfo($user, $password = null) + { + $info = $this->filterUserInfoComponent($user); + if ($password !== null) { + $info .= ':' . $this->filterUserInfoComponent($password); + } + if ($this->userInfo === $info) { + return $this; + } + $new = clone $this; + $new->userInfo = $info; + $new->validateState(); + return $new; + } + public function withHost($host) + { + $host = $this->filterHost($host); + if ($this->host === $host) { + return $this; + } + $new = clone $this; + $new->host = $host; + $new->validateState(); + return $new; + } + public function withPort($port) + { + $port = $this->filterPort($port); + if ($this->port === $port) { + return $this; + } + $new = clone $this; + $new->port = $port; + $new->removeDefaultPort(); + $new->validateState(); + return $new; + } + public function withPath($path) + { + $path = $this->filterPath($path); + if ($this->path === $path) { + return $this; + } + $new = clone $this; + $new->path = $path; + $new->validateState(); + return $new; + } + public function withQuery($query) + { + $query = $this->filterQueryAndFragment($query); + if ($this->query === $query) { + return $this; + } + $new = clone $this; + $new->query = $query; + return $new; + } + public function withFragment($fragment) + { + $fragment = $this->filterQueryAndFragment($fragment); + if ($this->fragment === $fragment) { + return $this; + } + $new = clone $this; + $new->fragment = $fragment; + return $new; + } + /** + * Apply parse_url parts to a URI. + * + * @param array $parts Array of parse_url parts to apply. + */ + private function applyParts(array $parts) + { + $this->scheme = isset($parts['scheme']) ? $this->filterScheme($parts['scheme']) : ''; + $this->userInfo = isset($parts['user']) ? $this->filterUserInfoComponent($parts['user']) : ''; + $this->host = isset($parts['host']) ? $this->filterHost($parts['host']) : ''; + $this->port = isset($parts['port']) ? $this->filterPort($parts['port']) : null; + $this->path = isset($parts['path']) ? $this->filterPath($parts['path']) : ''; + $this->query = isset($parts['query']) ? $this->filterQueryAndFragment($parts['query']) : ''; + $this->fragment = isset($parts['fragment']) ? $this->filterQueryAndFragment($parts['fragment']) : ''; + if (isset($parts['pass'])) { + $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']); + } + $this->removeDefaultPort(); + } + /** + * @param string $scheme + * + * @return string + * + * @throws \InvalidArgumentException If the scheme is invalid. + */ + private function filterScheme($scheme) + { + if (!\is_string($scheme)) { + throw new \InvalidArgumentException('Scheme must be a string'); + } + return \strtr($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); + } + /** + * @param string $component + * + * @return string + * + * @throws \InvalidArgumentException If the user info is invalid. + */ + private function filterUserInfoComponent($component) + { + if (!\is_string($component)) { + throw new \InvalidArgumentException('User info must be a string'); + } + return \preg_replace_callback('/(?:[^%' . self::$charUnreserved . self::$charSubDelims . ']+|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $component); + } + /** + * @param string $host + * + * @return string + * + * @throws \InvalidArgumentException If the host is invalid. + */ + private function filterHost($host) + { + if (!\is_string($host)) { + throw new \InvalidArgumentException('Host must be a string'); + } + return \strtr($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); + } + /** + * @param int|null $port + * + * @return int|null + * + * @throws \InvalidArgumentException If the port is invalid. + */ + private function filterPort($port) + { + if ($port === null) { + return null; + } + $port = (int) $port; + if (0 > $port || 0xffff < $port) { + throw new \InvalidArgumentException(\sprintf('Invalid port: %d. Must be between 0 and 65535', $port)); + } + return $port; + } + /** + * @param UriInterface $uri + * @param array $keys + * + * @return array + */ + private static function getFilteredQueryString(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, array $keys) + { + $current = $uri->getQuery(); + if ($current === '') { + return []; + } + $decodedKeys = \array_map('rawurldecode', $keys); + return \array_filter(\explode('&', $current), function ($part) use($decodedKeys) { + return !\in_array(\rawurldecode(\explode('=', $part)[0]), $decodedKeys, \true); + }); + } + /** + * @param string $key + * @param string|null $value + * + * @return string + */ + private static function generateQueryString($key, $value) + { + // Query string separators ("=", "&") within the key or value need to be encoded + // (while preventing double-encoding) before setting the query string. All other + // chars that need percent-encoding will be encoded by withQuery(). + $queryString = \strtr($key, self::$replaceQuery); + if ($value !== null) { + $queryString .= '=' . \strtr($value, self::$replaceQuery); + } + return $queryString; + } + private function removeDefaultPort() + { + if ($this->port !== null && self::isDefaultPort($this)) { + $this->port = null; + } + } + /** + * Filters the path of a URI + * + * @param string $path + * + * @return string + * + * @throws \InvalidArgumentException If the path is invalid. + */ + private function filterPath($path) + { + if (!\is_string($path)) { + throw new \InvalidArgumentException('Path must be a string'); + } + return \preg_replace_callback('/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\\/]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $path); + } + /** + * Filters the query string or fragment of a URI. + * + * @param string $str + * + * @return string + * + * @throws \InvalidArgumentException If the query or fragment is invalid. + */ + private function filterQueryAndFragment($str) + { + if (!\is_string($str)) { + throw new \InvalidArgumentException('Query and fragment must be a string'); + } + return \preg_replace_callback('/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\\/\\?]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $str); + } + private function rawurlencodeMatchZero(array $match) + { + return \rawurlencode($match[0]); + } + private function validateState() + { + if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) { + $this->host = self::HTTP_DEFAULT_HOST; + } + if ($this->getAuthority() === '') { + if (0 === \strpos($this->path, '//')) { + throw new \InvalidArgumentException('The path of a URI without an authority must not start with two slashes "//"'); + } + if ($this->scheme === '' && \false !== \strpos(\explode('/', $this->path, 2)[0], ':')) { + throw new \InvalidArgumentException('A relative URI must not have a path beginning with a segment containing a colon'); + } + } elseif (isset($this->path[0]) && $this->path[0] !== '/') { + @\trigger_error('The path of a URI with an authority must start with a slash "/" or be empty. Automagically fixing the URI ' . 'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.', \E_USER_DEPRECATED); + $this->path = '/' . $this->path; + //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty'); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriNormalizer.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriNormalizer.php new file mode 100644 index 000000000..c44ff094c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriNormalizer.php @@ -0,0 +1,181 @@ +getPath() === '' && ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')) { + $uri = $uri->withPath('/'); + } + if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') { + $uri = $uri->withHost(''); + } + if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::isDefaultPort($uri)) { + $uri = $uri->withPort(null); + } + if ($flags & self::REMOVE_DOT_SEGMENTS && !\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::isRelativePathReference($uri)) { + $uri = $uri->withPath(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::removeDotSegments($uri->getPath())); + } + if ($flags & self::REMOVE_DUPLICATE_SLASHES) { + $uri = $uri->withPath(\preg_replace('#//++#', '/', $uri->getPath())); + } + if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') { + $queryKeyValues = \explode('&', $uri->getQuery()); + \sort($queryKeyValues); + $uri = $uri->withQuery(\implode('&', $queryKeyValues)); + } + return $uri; + } + /** + * Whether two URIs can be considered equivalent. + * + * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also + * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be + * resolved against the same base URI. If this is not the case, determination of equivalence or difference of + * relative references does not mean anything. + * + * @param UriInterface $uri1 An URI to compare + * @param UriInterface $uri2 An URI to compare + * @param int $normalizations A bitmask of normalizations to apply, see constants + * + * @return bool + * + * @link https://tools.ietf.org/html/rfc3986#section-6.1 + */ + public static function isEquivalent(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri1, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS) + { + return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations); + } + private static function capitalizePercentEncoding(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri) + { + $regex = '/(?:%[A-Fa-f0-9]{2})++/'; + $callback = function (array $match) { + return \strtoupper($match[0]); + }; + return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery())); + } + private static function decodeUnreservedCharacters(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri) + { + $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i'; + $callback = function (array $match) { + return \rawurldecode($match[0]); + }; + return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery())); + } + private function __construct() + { + // cannot be instantiated + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriResolver.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriResolver.php new file mode 100644 index 000000000..7173a2533 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriResolver.php @@ -0,0 +1,192 @@ +getScheme() != '') { + return $rel->withPath(self::removeDotSegments($rel->getPath())); + } + if ($rel->getAuthority() != '') { + $targetAuthority = $rel->getAuthority(); + $targetPath = self::removeDotSegments($rel->getPath()); + $targetQuery = $rel->getQuery(); + } else { + $targetAuthority = $base->getAuthority(); + if ($rel->getPath() === '') { + $targetPath = $base->getPath(); + $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery(); + } else { + if ($rel->getPath()[0] === '/') { + $targetPath = $rel->getPath(); + } else { + if ($targetAuthority != '' && $base->getPath() === '') { + $targetPath = '/' . $rel->getPath(); + } else { + $lastSlashPos = \strrpos($base->getPath(), '/'); + if ($lastSlashPos === \false) { + $targetPath = $rel->getPath(); + } else { + $targetPath = \substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath(); + } + } + } + $targetPath = self::removeDotSegments($targetPath); + $targetQuery = $rel->getQuery(); + } + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::composeComponents($base->getScheme(), $targetAuthority, $targetPath, $targetQuery, $rel->getFragment())); + } + /** + * Returns the target URI as a relative reference from the base URI. + * + * This method is the counterpart to resolve(): + * + * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) + * + * One use-case is to use the current request URI as base URI and then generate relative links in your documents + * to reduce the document size or offer self-contained downloadable document archives. + * + * $base = new Uri('http://example.com/a/b/'); + * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. + * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. + * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. + * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. + * + * This method also accepts a target that is already relative and will try to relativize it further. Only a + * relative-path reference will be returned as-is. + * + * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well + * + * @param UriInterface $base Base URI + * @param UriInterface $target Target URI + * + * @return UriInterface The relative URI reference + */ + public static function relativize(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $target) + { + if ($target->getScheme() !== '' && ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')) { + return $target; + } + if (\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::isRelativePathReference($target)) { + // As the target is already highly relative we return it as-is. It would be possible to resolve + // the target with `$target = self::resolve($base, $target);` and then try make it more relative + // by removing a duplicate query. But let's not do that automatically. + return $target; + } + if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) { + return $target->withScheme(''); + } + // We must remove the path before removing the authority because if the path starts with two slashes, the URI + // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also + // invalid. + $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost(''); + if ($base->getPath() !== $target->getPath()) { + return $emptyPathUri->withPath(self::getRelativePath($base, $target)); + } + if ($base->getQuery() === $target->getQuery()) { + // Only the target fragment is left. And it must be returned even if base and target fragment are the same. + return $emptyPathUri->withQuery(''); + } + // If the base URI has a query but the target has none, we cannot return an empty path reference as it would + // inherit the base query component when resolving. + if ($target->getQuery() === '') { + $segments = \explode('/', $target->getPath()); + $lastSegment = \end($segments); + return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment); + } + return $emptyPathUri; + } + private static function getRelativePath(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $target) + { + $sourceSegments = \explode('/', $base->getPath()); + $targetSegments = \explode('/', $target->getPath()); + \array_pop($sourceSegments); + $targetLastSegment = \array_pop($targetSegments); + foreach ($sourceSegments as $i => $segment) { + if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) { + unset($sourceSegments[$i], $targetSegments[$i]); + } else { + break; + } + } + $targetSegments[] = $targetLastSegment; + $relativePath = \str_repeat('../', \count($sourceSegments)) . \implode('/', $targetSegments); + // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./". + // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used + // as the first segment of a relative-path reference, as it would be mistaken for a scheme name. + if ('' === $relativePath || \false !== \strpos(\explode('/', $relativePath, 2)[0], ':')) { + $relativePath = "./{$relativePath}"; + } elseif ('/' === $relativePath[0]) { + if ($base->getAuthority() != '' && $base->getPath() === '') { + // In this case an extra slash is added by resolve() automatically. So we must not add one here. + $relativePath = ".{$relativePath}"; + } else { + $relativePath = "./{$relativePath}"; + } + } + return $relativePath; + } + private function __construct() + { + // cannot be instantiated + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Utils.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Utils.php new file mode 100644 index 000000000..f838177a0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Utils.php @@ -0,0 +1,355 @@ + $keys + * + * @return array + */ + public static function caselessRemove($keys, array $data) + { + $result = []; + foreach ($keys as &$key) { + $key = \strtolower($key); + } + foreach ($data as $k => $v) { + if (!\in_array(\strtolower($k), $keys)) { + $result[$k] = $v; + } + } + return $result; + } + /** + * Copy the contents of a stream into another stream until the given number + * of bytes have been read. + * + * @param StreamInterface $source Stream to read from + * @param StreamInterface $dest Stream to write to + * @param int $maxLen Maximum number of bytes to read. Pass -1 + * to read the entire stream. + * + * @throws \RuntimeException on error. + */ + public static function copyToStream(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $source, \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $dest, $maxLen = -1) + { + $bufferSize = 8192; + if ($maxLen === -1) { + while (!$source->eof()) { + if (!$dest->write($source->read($bufferSize))) { + break; + } + } + } else { + $remaining = $maxLen; + while ($remaining > 0 && !$source->eof()) { + $buf = $source->read(\min($bufferSize, $remaining)); + $len = \strlen($buf); + if (!$len) { + break; + } + $remaining -= $len; + $dest->write($buf); + } + } + } + /** + * Copy the contents of a stream into a string until the given number of + * bytes have been read. + * + * @param StreamInterface $stream Stream to read + * @param int $maxLen Maximum number of bytes to read. Pass -1 + * to read the entire stream. + * + * @return string + * + * @throws \RuntimeException on error. + */ + public static function copyToString(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $maxLen = -1) + { + $buffer = ''; + if ($maxLen === -1) { + while (!$stream->eof()) { + $buf = $stream->read(1048576); + // Using a loose equality here to match on '' and false. + if ($buf == null) { + break; + } + $buffer .= $buf; + } + return $buffer; + } + $len = 0; + while (!$stream->eof() && $len < $maxLen) { + $buf = $stream->read($maxLen - $len); + // Using a loose equality here to match on '' and false. + if ($buf == null) { + break; + } + $buffer .= $buf; + $len = \strlen($buffer); + } + return $buffer; + } + /** + * Calculate a hash of a stream. + * + * This method reads the entire stream to calculate a rolling hash, based + * on PHP's `hash_init` functions. + * + * @param StreamInterface $stream Stream to calculate the hash for + * @param string $algo Hash algorithm (e.g. md5, crc32, etc) + * @param bool $rawOutput Whether or not to use raw output + * + * @return string Returns the hash of the stream + * + * @throws \RuntimeException on error. + */ + public static function hash(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $algo, $rawOutput = \false) + { + $pos = $stream->tell(); + if ($pos > 0) { + $stream->rewind(); + } + $ctx = \hash_init($algo); + while (!$stream->eof()) { + \hash_update($ctx, $stream->read(1048576)); + } + $out = \hash_final($ctx, (bool) $rawOutput); + $stream->seek($pos); + return $out; + } + /** + * Clone and modify a request with the given changes. + * + * This method is useful for reducing the number of clones needed to mutate + * a message. + * + * The changes can be one of: + * - method: (string) Changes the HTTP method. + * - set_headers: (array) Sets the given headers. + * - remove_headers: (array) Remove the given headers. + * - body: (mixed) Sets the given body. + * - uri: (UriInterface) Set the URI. + * - query: (string) Set the query string value of the URI. + * - version: (string) Set the protocol version. + * + * @param RequestInterface $request Request to clone and modify. + * @param array $changes Changes to apply. + * + * @return RequestInterface + */ + public static function modifyRequest(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $changes) + { + if (!$changes) { + return $request; + } + $headers = $request->getHeaders(); + if (!isset($changes['uri'])) { + $uri = $request->getUri(); + } else { + // Remove the host header if one is on the URI + if ($host = $changes['uri']->getHost()) { + $changes['set_headers']['Host'] = $host; + if ($port = $changes['uri']->getPort()) { + $standardPorts = ['http' => 80, 'https' => 443]; + $scheme = $changes['uri']->getScheme(); + if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) { + $changes['set_headers']['Host'] .= ':' . $port; + } + } + } + $uri = $changes['uri']; + } + if (!empty($changes['remove_headers'])) { + $headers = self::caselessRemove($changes['remove_headers'], $headers); + } + if (!empty($changes['set_headers'])) { + $headers = self::caselessRemove(\array_keys($changes['set_headers']), $headers); + $headers = $changes['set_headers'] + $headers; + } + if (isset($changes['query'])) { + $uri = $uri->withQuery($changes['query']); + } + if ($request instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\ServerRequestInterface) { + $new = (new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\ServerRequest(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion(), $request->getServerParams()))->withParsedBody($request->getParsedBody())->withQueryParams($request->getQueryParams())->withCookieParams($request->getCookieParams())->withUploadedFiles($request->getUploadedFiles()); + foreach ($request->getAttributes() as $key => $value) { + $new = $new->withAttribute($key, $value); + } + return $new; + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion()); + } + /** + * Read a line from the stream up to the maximum allowed buffer length. + * + * @param StreamInterface $stream Stream to read from + * @param int|null $maxLength Maximum buffer length + * + * @return string + */ + public static function readLine(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $maxLength = null) + { + $buffer = ''; + $size = 0; + while (!$stream->eof()) { + // Using a loose equality here to match on '' and false. + if (null == ($byte = $stream->read(1))) { + return $buffer; + } + $buffer .= $byte; + // Break when a new line is found or the max length - 1 is reached + if ($byte === "\n" || ++$size === $maxLength - 1) { + break; + } + } + return $buffer; + } + /** + * Create a new stream based on the input type. + * + * Options is an associative array that can contain the following keys: + * - metadata: Array of custom metadata. + * - size: Size of the stream. + * + * This method accepts the following `$resource` types: + * - `Psr\Http\Message\StreamInterface`: Returns the value as-is. + * - `string`: Creates a stream object that uses the given string as the contents. + * - `resource`: Creates a stream object that wraps the given PHP stream resource. + * - `Iterator`: If the provided value implements `Iterator`, then a read-only + * stream object will be created that wraps the given iterable. Each time the + * stream is read from, data from the iterator will fill a buffer and will be + * continuously called until the buffer is equal to the requested read size. + * Subsequent read calls will first read from the buffer and then call `next` + * on the underlying iterator until it is exhausted. + * - `object` with `__toString()`: If the object has the `__toString()` method, + * the object will be cast to a string and then a stream will be returned that + * uses the string value. + * - `NULL`: When `null` is passed, an empty stream object is returned. + * - `callable` When a callable is passed, a read-only stream object will be + * created that invokes the given callable. The callable is invoked with the + * number of suggested bytes to read. The callable can return any number of + * bytes, but MUST return `false` when there is no more data to return. The + * stream object that wraps the callable will invoke the callable until the + * number of requested bytes are available. Any additional bytes will be + * buffered and used in subsequent reads. + * + * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data + * @param array $options Additional options + * + * @return StreamInterface + * + * @throws \InvalidArgumentException if the $resource arg is not valid. + */ + public static function streamFor($resource = '', array $options = []) + { + if (\is_scalar($resource)) { + $stream = self::tryFopen('php://temp', 'r+'); + if ($resource !== '') { + \fwrite($stream, $resource); + \fseek($stream, 0); + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($stream, $options); + } + switch (\gettype($resource)) { + case 'resource': + /* + * The 'php://input' is a special stream with quirks and inconsistencies. + * We avoid using that stream by reading it into php://temp + */ + $metaData = \stream_get_meta_data($resource); + if (isset($metaData['uri']) && $metaData['uri'] === 'php://input') { + $stream = self::tryFopen('php://temp', 'w+'); + \fwrite($stream, \stream_get_contents($resource)); + \fseek($stream, 0); + $resource = $stream; + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($resource, $options); + case 'object': + if ($resource instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface) { + return $resource; + } elseif ($resource instanceof \Iterator) { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\PumpStream(function () use($resource) { + if (!$resource->valid()) { + return \false; + } + $result = $resource->current(); + $resource->next(); + return $result; + }, $options); + } elseif (\method_exists($resource, '__toString')) { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor((string) $resource, $options); + } + break; + case 'NULL': + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream(self::tryFopen('php://temp', 'r+'), $options); + } + if (\is_callable($resource)) { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\PumpStream($resource, $options); + } + throw new \InvalidArgumentException('Invalid resource type: ' . \gettype($resource)); + } + /** + * Safely opens a PHP stream resource using a filename. + * + * When fopen fails, PHP normally raises a warning. This function adds an + * error handler that checks for errors and throws an exception instead. + * + * @param string $filename File to open + * @param string $mode Mode used to open the file + * + * @return resource + * + * @throws \RuntimeException if the file cannot be opened + */ + public static function tryFopen($filename, $mode) + { + $ex = null; + \set_error_handler(function () use($filename, $mode, &$ex) { + $ex = new \RuntimeException(\sprintf('Unable to open "%s" using mode "%s": %s', $filename, $mode, \func_get_args()[1])); + return \true; + }); + try { + $handle = \fopen($filename, $mode); + } catch (\Throwable $e) { + $ex = new \RuntimeException(\sprintf('Unable to open "%s" using mode "%s": %s', $filename, $mode, $e->getMessage()), 0, $e); + } + \restore_error_handler(); + if ($ex) { + /** @var $ex \RuntimeException */ + throw $ex; + } + return $handle; + } + /** + * Returns a UriInterface for the given value. + * + * This function accepts a string or UriInterface and returns a + * UriInterface for the given value. If the value is already a + * UriInterface, it is returned as-is. + * + * @param string|UriInterface $uri + * + * @return UriInterface + * + * @throws \InvalidArgumentException + */ + public static function uriFor($uri) + { + if ($uri instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface) { + return $uri; + } + if (\is_string($uri)) { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri($uri); + } + throw new \InvalidArgumentException('URI must be a string or UriInterface'); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions.php new file mode 100644 index 000000000..34b8cb9e0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions.php @@ -0,0 +1,400 @@ + '1', 'foo[b]' => '2'])`. + * + * @param string $str Query string to parse + * @param int|bool $urlEncoding How the query string is encoded + * + * @return array + * + * @deprecated parse_query will be removed in guzzlehttp/psr7:2.0. Use Query::parse instead. + */ +function parse_query($str, $urlEncoding = \true) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::parse($str, $urlEncoding); +} +/** + * Build a query string from an array of key value pairs. + * + * This function can use the return value of `parse_query()` to build a query + * string. This function does not modify the provided keys when an array is + * encountered (like `http_build_query()` would). + * + * @param array $params Query string parameters. + * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 + * to encode using RFC3986, or PHP_QUERY_RFC1738 + * to encode using RFC1738. + * + * @return string + * + * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead. + */ +function build_query(array $params, $encoding = \PHP_QUERY_RFC3986) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build($params, $encoding); +} +/** + * Determines the mimetype of a file by looking at its extension. + * + * @param string $filename + * + * @return string|null + * + * @deprecated mimetype_from_filename will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromFilename instead. + */ +function mimetype_from_filename($filename) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\MimeType::fromFilename($filename); +} +/** + * Maps a file extensions to a mimetype. + * + * @param $extension string The file extension. + * + * @return string|null + * + * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types + * @deprecated mimetype_from_extension will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromExtension instead. + */ +function mimetype_from_extension($extension) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\MimeType::fromExtension($extension); +} +/** + * Parses an HTTP message into an associative array. + * + * The array contains the "start-line" key containing the start line of + * the message, "headers" key containing an associative array of header + * array values, and a "body" key containing the body of the message. + * + * @param string $message HTTP request or response to parse. + * + * @return array + * + * @internal + * + * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead. + */ +function _parse_message($message) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Message::parseMessage($message); +} +/** + * Constructs a URI for an HTTP request message. + * + * @param string $path Path from the start-line + * @param array $headers Array of headers (each value an array). + * + * @return string + * + * @internal + * + * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead. + */ +function _parse_request_uri($path, array $headers) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Message::parseRequestUri($path, $headers); +} +/** + * Get a short summary of the message body. + * + * Will return `null` if the response is not printable. + * + * @param MessageInterface $message The message to get the body summary + * @param int $truncateAt The maximum allowed size of the summary + * + * @return string|null + * + * @deprecated get_message_body_summary will be removed in guzzlehttp/psr7:2.0. Use Message::bodySummary instead. + */ +function get_message_body_summary(\Google\Site_Kit_Dependencies\Psr\Http\Message\MessageInterface $message, $truncateAt = 120) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Message::bodySummary($message, $truncateAt); +} +/** + * Remove the items given by the keys, case insensitively from the data. + * + * @param iterable $keys + * + * @return array + * + * @internal + * + * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead. + */ +function _caseless_remove($keys, array $data) +{ + return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::caselessRemove($keys, $data); +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions_include.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions_include.php new file mode 100644 index 000000000..87c373fdc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions_include.php @@ -0,0 +1,8 @@ +`_, +allowing RingPHP to support both synchronous and asynchronous workflows. + +By abstracting the implementation details of different HTTP clients and +servers, RingPHP allows you to utilize pluggable HTTP clients and servers +without tying your application to a specific implementation. + +.. code-block:: php + + 'GET', + 'uri' => '/', + 'headers' => [ + 'host' => ['www.google.com'], + 'x-foo' => ['baz'] + ] + ]); + + $response->then(function (array $response) { + echo $response['status']; + }); + + $response->wait(); + +RingPHP is inspired by Clojure's `Ring `_, +which, in turn, was inspired by Python's WSGI and Ruby's Rack. RingPHP is +utilized as the handler layer in `Guzzle `_ 5.0+ to send +HTTP requests. + +Documentation +------------- + +See http://ringphp.readthedocs.org/ for the full online documentation. diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_handlers.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_handlers.rst new file mode 100644 index 000000000..3151f0021 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_handlers.rst @@ -0,0 +1,173 @@ +=============== +Client Handlers +=============== + +Client handlers accept a request array and return a future response array that +can be used synchronously as an array or asynchronously using a promise. + +Built-In Handlers +----------------- + +RingPHP comes with three built-in client handlers. + +Stream Handler +~~~~~~~~~~~~~~ + +The ``GuzzleHttp\Ring\Client\StreamHandler`` uses PHP's +`http stream wrapper `_ to send +requests. + +.. note:: + + This handler cannot send requests concurrently. + +You can provide an associative array of custom stream context options to the +StreamHandler using the ``stream_context`` key of the ``client`` request +option. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\StreamHandler; + + $response = $handler([ + 'http_method' => 'GET', + 'uri' => '/', + 'headers' => ['host' => ['httpbin.org']], + 'client' => [ + 'stream_context' => [ + 'http' => [ + 'request_fulluri' => true, + 'method' => 'HEAD' + ], + 'socket' => [ + 'bindto' => '127.0.0.1:0' + ], + 'ssl' => [ + 'verify_peer' => false + ] + ] + ] + ]); + + // Even though it's already completed, you can still use a promise + $response->then(function ($response) { + echo $response['status']; // 200 + }); + + // Or access the response using the future interface + echo $response['status']; // 200 + +cURL Handler +~~~~~~~~~~~~ + +The ``GuzzleHttp\Ring\Client\CurlHandler`` can be used with PHP 5.5+ to send +requests using cURL easy handles. This handler is great for sending requests +one at a time because the execute and select loop is implemented in C code +which executes faster and consumes less memory than using PHP's +``curl_multi_*`` interface. + +.. note:: + + This handler cannot send requests concurrently. + +When using the CurlHandler, custom curl options can be specified as an +associative array of `cURL option constants `_ +mapping to values in the ``client`` option of a requst using the **curl** key. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlHandler; + + $handler = new CurlHandler(); + + $request = [ + 'http_method' => 'GET', + 'headers' => ['host' => [Server::$host]], + 'client' => ['curl' => [CURLOPT_LOW_SPEED_LIMIT => 10]] + ]; + + $response = $handler($request); + + // The response can be used directly as an array. + echo $response['status']; // 200 + + // Or, it can be used as a promise (that has already fulfilled). + $response->then(function ($response) { + echo $response['status']; // 200 + }); + +cURL Multi Handler +~~~~~~~~~~~~~~~~~~ + +The ``GuzzleHttp\Ring\Client\CurlMultiHandler`` transfers requests using +cURL's `multi API `_. The +``CurlMultiHandler`` is great for sending requests concurrently. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlMultiHandler; + + $handler = new CurlMultiHandler(); + + $request = [ + 'http_method' => 'GET', + 'headers' => ['host' => [Server::$host]] + ]; + + // this call returns a future array immediately. + $response = $handler($request); + + // Ideally, you should use the promise API to not block. + $response + ->then(function ($response) { + // Got the response at some point in the future + echo $response['status']; // 200 + // Don't break the chain + return $response; + })->then(function ($response) { + // ... + }); + + // If you really need to block, then you can use the response as an + // associative array. This will block until it has completed. + echo $response['status']; // 200 + +Just like the ``CurlHandler``, the ``CurlMultiHandler`` accepts custom curl +option in the ``curl`` key of the ``client`` request option. + +Mock Handler +~~~~~~~~~~~~ + +The ``GuzzleHttp\Ring\Client\MockHandler`` is used to return mock responses. +When constructed, the handler can be configured to return the same response +array over and over, a future response, or a the evaluation of a callback +function. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\MockHandler; + + // Return a canned response. + $mock = new MockHandler(['status' => 200]); + $response = $mock([]); + assert(200 == $response['status']); + assert([] == $response['headers']); + +Implementing Handlers +--------------------- + +Client handlers are just PHP callables (functions or classes that have the +``__invoke`` magic method). The callable accepts a request array and MUST +return an instance of ``GuzzleHttp\Ring\Future\FutureArrayInterface`` so that +the response can be used by both blocking and non-blocking consumers. + +Handlers need to follow a few simple rules: + +1. Do not throw exceptions. If an error is encountered, return an array that + contains the ``error`` key that maps to an ``\Exception`` value. +2. If the request has a ``delay`` client option, then the handler should only + send the request after the specified delay time in seconds. Blocking + handlers may find it convenient to just let the + ``GuzzleHttp\Ring\Core::doSleep($request)`` function handle this for them. +3. Always return an instance of ``GuzzleHttp\Ring\Future\FutureArrayInterface``. +4. Complete any outstanding requests when the handler is destructed. diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_middleware.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_middleware.rst new file mode 100644 index 000000000..5a2c1a8ab --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_middleware.rst @@ -0,0 +1,165 @@ +================= +Client Middleware +================= + +Middleware intercepts requests before they are sent over the wire and can be +used to add functionality to handlers. + +Modifying Requests +------------------ + +Let's say you wanted to modify requests before they are sent over the wire +so that they always add specific headers. This can be accomplished by creating +a function that accepts a handler and returns a new function that adds the +composed behavior. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlHandler; + + $handler = new CurlHandler(); + + $addHeaderHandler = function (callable $handler, array $headers = []) { + return function (array $request) use ($handler, $headers) { + // Add our custom headers + foreach ($headers as $key => $value) { + $request['headers'][$key] = $value; + } + + // Send the request using the handler and return the response. + return $handler($request); + } + }; + + // Create a new handler that adds headers to each request. + $handler = $addHeaderHandler($handler, [ + 'X-AddMe' => 'hello', + 'Authorization' => 'Basic xyz' + ]); + + $response = $handler([ + 'http_method' => 'GET', + 'headers' => ['Host' => ['httpbin.org']] + ]); + +Modifying Responses +------------------- + +You can change a response as it's returned from a middleware. Remember that +responses returned from an handler (including middleware) must implement +``GuzzleHttp\Ring\Future\FutureArrayInterface``. In order to be a good citizen, +you should not expect that the responses returned through your middleware will +be completed synchronously. Instead, you should use the +``GuzzleHttp\Ring\Core::proxy()`` function to modify the response when the +underlying promise is resolved. This function is a helper function that makes it +easy to create a new instance of ``FutureArrayInterface`` that wraps an existing +``FutureArrayInterface`` object. + +Let's say you wanted to add headers to a response as they are returned from +your middleware, but you want to make sure you aren't causing future +responses to be dereferenced right away. You can achieve this by modifying the +incoming request and using the ``Core::proxy`` function. + +.. code-block:: php + + use GuzzleHttp\Ring\Core; + use GuzzleHttp\Ring\Client\CurlHandler; + + $handler = new CurlHandler(); + + $responseHeaderHandler = function (callable $handler, array $headers) { + return function (array $request) use ($handler, $headers) { + // Send the request using the wrapped handler. + return Core::proxy($handler($request), function ($response) use ($headers) { + // Add the headers to the response when it is available. + foreach ($headers as $key => $value) { + $response['headers'][$key] = (array) $value; + } + // Note that you can return a regular response array when using + // the proxy method. + return $response; + }); + } + }; + + // Create a new handler that adds headers to each response. + $handler = $responseHeaderHandler($handler, ['X-Header' => 'hello!']); + + $response = $handler([ + 'http_method' => 'GET', + 'headers' => ['Host' => ['httpbin.org']] + ]); + + assert($response['headers']['X-Header'] == 'hello!'); + +Built-In Middleware +------------------- + +RingPHP comes with a few basic client middlewares that modify requests +and responses. + +Streaming Middleware +~~~~~~~~~~~~~~~~~~~~ + +If you want to send all requests with the ``streaming`` option to a specific +handler but other requests to a different handler, then use the streaming +middleware. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlHandler; + use GuzzleHttp\Ring\Client\StreamHandler; + use GuzzleHttp\Ring\Client\Middleware; + + $defaultHandler = new CurlHandler(); + $streamingHandler = new StreamHandler(); + $streamingHandler = Middleware::wrapStreaming( + $defaultHandler, + $streamingHandler + ); + + // Send the request using the streaming handler. + $response = $streamingHandler([ + 'http_method' => 'GET', + 'headers' => ['Host' => ['www.google.com']], + 'stream' => true + ]); + + // Send the request using the default handler. + $response = $streamingHandler([ + 'http_method' => 'GET', + 'headers' => ['Host' => ['www.google.com']] + ]); + +Future Middleware +~~~~~~~~~~~~~~~~~ + +If you want to send all requests with the ``future`` option to a specific +handler but other requests to a different handler, then use the future +middleware. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlHandler; + use GuzzleHttp\Ring\Client\CurlMultiHandler; + use GuzzleHttp\Ring\Client\Middleware; + + $defaultHandler = new CurlHandler(); + $futureHandler = new CurlMultiHandler(); + $futureHandler = Middleware::wrapFuture( + $defaultHandler, + $futureHandler + ); + + // Send the request using the blocking CurlHandler. + $response = $futureHandler([ + 'http_method' => 'GET', + 'headers' => ['Host' => ['www.google.com']] + ]); + + // Send the request using the non-blocking CurlMultiHandler. + $response = $futureHandler([ + 'http_method' => 'GET', + 'headers' => ['Host' => ['www.google.com']], + 'future' => true + ]); diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/conf.py b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/conf.py new file mode 100644 index 000000000..c6404aa1e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/conf.py @@ -0,0 +1,23 @@ +import sys, os +import sphinx_rtd_theme +from sphinx.highlighting import lexers +from pygments.lexers.web import PhpLexer + + +lexers['php'] = PhpLexer(startinline=True, linenos=1) +lexers['php-annotations'] = PhpLexer(startinline=True, linenos=1) +primary_domain = 'php' + +extensions = [] +templates_path = ['_templates'] +source_suffix = '.rst' +master_doc = 'index' +project = u'RingPHP' +copyright = u'2014, Michael Dowling' +version = '1.0.0-alpha' +exclude_patterns = ['_build'] + +html_title = "RingPHP" +html_short_title = "RingPHP" +html_theme = "sphinx_rtd_theme" +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/futures.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/futures.rst new file mode 100644 index 000000000..af29cb378 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/futures.rst @@ -0,0 +1,164 @@ +======= +Futures +======= + +Futures represent a computation that may have not yet completed. RingPHP +uses hybrid of futures and promises to provide a consistent API that can be +used for both blocking and non-blocking consumers. + +Promises +-------- + +You can get the result of a future when it is ready using the promise interface +of a future. Futures expose a promise API via a ``then()`` method that utilizes +`React's promise library `_. You should +use this API when you do not wish to block. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlMultiHandler; + + $request = [ + 'http_method' => 'GET', + 'uri' => '/', + 'headers' => ['host' => ['httpbin.org']] + ]; + + $response = $handler($request); + + // Use the then() method to use the promise API of the future. + $response->then(function ($response) { + echo $response['status']; + }); + +You can get the promise used by a future, an instance of +``React\Promise\PromiseInterface``, by calling the ``promise()`` method. + +.. code-block:: php + + $response = $handler($request); + $promise = $response->promise(); + $promise->then(function ($response) { + echo $response['status']; + }); + +This promise value can be used with React's +`aggregate promise functions `_. + +Waiting +------- + +You can wait on a future to complete and retrieve the value, or *dereference* +the future, using the ``wait()`` method. Calling the ``wait()`` method of a +future will block until the result is available. The result is then returned or +an exception is thrown if and exception was encountered while waiting on the +the result. Subsequent calls to dereference a future will return the previously +completed result or throw the previously encountered exception. Futures can be +cancelled, which stops the computation if possible. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlMultiHandler; + + $response = $handler([ + 'http_method' => 'GET', + 'uri' => '/', + 'headers' => ['host' => ['httpbin.org']] + ]); + + // You can explicitly call block to wait on a result. + $realizedResponse = $response->wait(); + + // Future responses can be used like a regular PHP array. + echo $response['status']; + +In addition to explicitly calling the ``wait()`` function, using a future like +a normal value will implicitly trigger the ``wait()`` function. + +Future Responses +---------------- + +RingPHP uses futures to return asynchronous responses immediately. Client +handlers always return future responses that implement +``GuzzleHttp\Ring\Future\ArrayFutureInterface``. These future responses act +just like normal PHP associative arrays for blocking access and provide a +promise interface for non-blocking access. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlMultiHandler; + + $handler = new CurlMultiHandler(); + + $request = [ + 'http_method' => 'GET', + 'uri' => '/', + 'headers' => ['Host' => ['www.google.com']] + ]; + + $response = $handler($request); + + // Use the promise API for non-blocking access to the response. The actual + // response value will be delivered to the promise. + $response->then(function ($response) { + echo $response['status']; + }); + + // You can wait (block) until the future is completed. + $response->wait(); + + // This will implicitly call wait(), and will block too! + $response['status']; + +.. important:: + + Futures that are not completed by the time the underlying handler is + destructed will be completed when the handler is shutting down. + +Cancelling +---------- + +Futures can be cancelled if they have not already been dereferenced. + +RingPHP futures are typically implemented with the +``GuzzleHttp\Ring\Future\BaseFutureTrait``. This trait provides the cancellation +functionality that should be common to most implementations. Cancelling a +future response will try to prevent the request from sending over the wire. + +When a future is cancelled, the cancellation function is invoked and performs +the actual work needed to cancel the request from sending if possible +(e.g., telling an event loop to stop sending a request or to close a socket). +If no cancellation function is provided, then a request cannot be cancelled. If +a cancel function is provided, then it should accept the future as an argument +and return true if the future was successfully cancelled or false if it could +not be cancelled. + +Wrapping an existing Promise +---------------------------- + +You can easily create a future from any existing promise using the +``GuzzleHttp\Ring\Future\FutureValue`` class. This class's constructor +accepts a promise as the first argument, a wait function as the second +argument, and a cancellation function as the third argument. The dereference +function is used to force the promise to resolve (for example, manually ticking +an event loop). The cancel function is optional and is used to tell the thing +that created the promise that it can stop computing the result (for example, +telling an event loop to stop transferring a request). + +.. code-block:: php + + use GuzzleHttp\Ring\Future\FutureValue; + use React\Promise\Deferred; + + $deferred = new Deferred(); + $promise = $deferred->promise(); + + $f = new FutureValue( + $promise, + function () use ($deferred) { + // This function is responsible for blocking and resolving the + // promise. Here we pass in a reference to the deferred so that + // it can be resolved or rejected. + $deferred->resolve('foo'); + } + ); diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/index.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/index.rst new file mode 100644 index 000000000..4bbce631c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/index.rst @@ -0,0 +1,50 @@ +======= +RingPHP +======= + +Provides a simple API and specification that abstracts away the details of HTTP +into a single PHP function. RingPHP be used to power HTTP clients and servers +through a PHP function that accepts a request hash and returns a response hash +that is fulfilled using a `promise `_, +allowing RingPHP to support both synchronous and asynchronous workflows. + +By abstracting the implementation details of different HTTP clients and +servers, RingPHP allows you to utilize pluggable HTTP clients and servers +without tying your application to a specific implementation. + +.. toctree:: + :maxdepth: 2 + + spec + futures + client_middleware + client_handlers + testing + +.. code-block:: php + + 'GET', + 'uri' => '/', + 'headers' => [ + 'host' => ['www.google.com'], + 'x-foo' => ['baz'] + ] + ]); + + $response->then(function (array $response) { + echo $response['status']; + }); + + $response->wait(); + +RingPHP is inspired by Clojure's `Ring `_, +which, in turn, was inspired by Python's WSGI and Ruby's Rack. RingPHP is +utilized as the handler layer in `Guzzle `_ 5.0+ to send +HTTP requests. diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/requirements.txt b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/requirements.txt new file mode 100644 index 000000000..483a4e960 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/requirements.txt @@ -0,0 +1 @@ +sphinx_rtd_theme diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/spec.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/spec.rst new file mode 100644 index 000000000..bc9107898 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/spec.rst @@ -0,0 +1,311 @@ +============= +Specification +============= + +RingPHP applications consist of handlers, requests, responses, and +middleware. + +Handlers +-------- + +Handlers are implemented as a PHP ``callable`` that accept a request array +and return a response array (``GuzzleHttp\Ring\Future\FutureArrayInterface``). + +For example: + +.. code-block:: php + + use GuzzleHttp\Ring\Future\CompletedFutureArray; + + $mockHandler = function (array $request) { + return new CompletedFutureArray([ + 'status' => 200, + 'headers' => ['X-Foo' => ['Bar']], + 'body' => 'Hello!' + ]); + }; + +This handler returns the same response each time it is invoked. All RingPHP +handlers must return a ``GuzzleHttp\Ring\Future\FutureArrayInterface``. Use +``GuzzleHttp\Ring\Future\CompletedFutureArray`` when returning a response that +has already completed. + +Requests +-------- + +A request array is a PHP associative array that contains the configuration +settings need to send a request. + +.. code-block:: php + + $request = [ + 'http_method' => 'GET', + 'scheme' => 'http', + 'uri' => '/', + 'body' => 'hello!', + 'client' => ['timeout' => 1.0], + 'headers' => [ + 'host' => ['httpbin.org'], + 'X-Foo' => ['baz', 'bar'] + ] + ]; + +The request array contains the following key value pairs: + +request_method + (string, required) The HTTP request method, must be all caps corresponding + to a HTTP request method, such as ``GET`` or ``POST``. + +scheme + (string) The transport protocol, must be one of ``http`` or ``https``. + Defaults to ``http``. + +uri + (string, required) The request URI excluding the query string. Must + start with "/". + +query_string + (string) The query string, if present (e.g., ``foo=bar``). + +version + (string) HTTP protocol version. Defaults to ``1.1``. + +headers + (required, array) Associative array of headers. Each key represents the + header name. Each value contains an array of strings where each entry of + the array SHOULD be sent over the wire on a separate header line. + +body + (string, fopen resource, ``Iterator``, ``GuzzleHttp\Stream\StreamInterface``) + The body of the request, if present. Can be a string, resource returned + from fopen, an ``Iterator`` that yields chunks of data, an object that + implemented ``__toString``, or a ``GuzzleHttp\Stream\StreamInterface``. + +future + (bool, string) Controls the asynchronous behavior of a response. + + Set to ``true`` or omit the ``future`` option to *request* that a request + will be completed asynchronously. Keep in mind that your request might not + necessarily be completed asynchronously based on the handler you are using. + Set the ``future`` option to ``false`` to request that a synchronous + response be provided. + + You can provide a string value to specify fine-tuned future behaviors that + may be specific to the underlying handlers you are using. There are, + however, some common future options that handlers should implement if + possible. + + lazy + Requests that the handler does not open and send the request + immediately, but rather only opens and sends the request once the + future is dereferenced. This option is often useful for sending a large + number of requests concurrently to allow handlers to take better + advantage of non-blocking transfers by first building up a pool of + requests. + + If an handler does not implement or understand a provided string value, + then the request MUST be treated as if the user provided ``true`` rather + than the string value. + + Future responses created by asynchronous handlers MUST attempt to complete + any outstanding future responses when they are destructed. Asynchronous + handlers MAY choose to automatically complete responses when the number + of outstanding requests reaches an handler-specific threshold. + +Client Specific Options +~~~~~~~~~~~~~~~~~~~~~~~ + +The following options are only used in ring client handlers. + +.. _client-options: + +client + (array) Associative array of client specific transfer options. The + ``client`` request key value pair can contain the following keys: + + cert + (string, array) Set to a string to specify the path to a file + containing a PEM formatted SSL client side certificate. If a password + is required, then set ``cert`` to an array containing the path to the + PEM file in the first array element followed by the certificate + password in the second array element. + + connect_timeout + (float) Float describing the number of seconds to wait while trying to + connect to a server. Use ``0`` to wait indefinitely (the default + behavior). + + debug + (bool, fopen() resource) Set to true or set to a PHP stream returned by + fopen() to enable debug output with the handler used to send a request. + If set to ``true``, the output is written to PHP's STDOUT. If a PHP + ``fopen`` resource handle is provided, the output is written to the + stream. + + "Debug output" is handler specific: different handlers will yield + different output and various various level of detail. For example, when + using cURL to transfer requests, cURL's `CURLOPT_VERBOSE `_ + will be used. When using the PHP stream wrapper, `stream notifications `_ + will be emitted. + + decode_content + (bool) Specify whether or not ``Content-Encoding`` responses + (gzip, deflate, etc.) are automatically decoded. Set to ``true`` to + automatically decode encoded responses. Set to ``false`` to not decode + responses. By default, content is *not* decoded automatically. + + delay + (int) The number of milliseconds to delay before sending the request. + This is often used for delaying before retrying a request. Handlers + SHOULD implement this if possible, but it is not a strict requirement. + + progress + (function) Defines a function to invoke when transfer progress is made. + The function accepts the following arguments: + + 1. The total number of bytes expected to be downloaded + 2. The number of bytes downloaded so far + 3. The number of bytes expected to be uploaded + 4. The number of bytes uploaded so far + + proxy + (string, array) Pass a string to specify an HTTP proxy, or an + associative array to specify different proxies for different protocols + where the scheme is the key and the value is the proxy address. + + .. code-block:: php + + $request = [ + 'http_method' => 'GET', + 'headers' => ['host' => ['httpbin.org']], + 'client' => [ + // Use different proxies for different URI schemes. + 'proxy' => [ + 'http' => 'http://proxy.example.com:5100', + 'https' => 'https://proxy.example.com:6100' + ] + ] + ]; + + ssl_key + (string, array) Specify the path to a file containing a private SSL key + in PEM format. If a password is required, then set to an array + containing the path to the SSL key in the first array element followed + by the password required for the certificate in the second element. + + save_to + (string, fopen resource, ``GuzzleHttp\Stream\StreamInterface``) + Specifies where the body of the response is downloaded. Pass a string to + open a local file on disk and save the output to the file. Pass an fopen + resource to save the output to a PHP stream resource. Pass a + ``GuzzleHttp\Stream\StreamInterface`` to save the output to a Guzzle + StreamInterface. Omitting this option will typically save the body of a + response to a PHP temp stream. + + stream + (bool) Set to true to stream a response rather than download it all + up-front. This option will only be utilized when the corresponding + handler supports it. + + timeout + (float) Float describing the timeout of the request in seconds. Use 0 to + wait indefinitely (the default behavior). + + verify + (bool, string) Describes the SSL certificate verification behavior of a + request. Set to true to enable SSL certificate verification using the + system CA bundle when available (the default). Set to false to disable + certificate verification (this is insecure!). Set to a string to provide + the path to a CA bundle on disk to enable verification using a custom + certificate. + + version + (string) HTTP protocol version to use with the request. + +Server Specific Options +~~~~~~~~~~~~~~~~~~~~~~~ + +The following options are only used in ring server handlers. + +server_port + (integer) The port on which the request is being handled. This is only + used with ring servers, and is required. + +server_name + (string) The resolved server name, or the server IP address. Required when + using a Ring server. + +remote_addr + (string) The IP address of the client or the last proxy that sent the + request. Required when using a Ring server. + +Responses +--------- + +A response is an array-like object that implements +``GuzzleHttp\Ring\Future\FutureArrayInterface``. Responses contain the +following key value pairs: + +body + (string, fopen resource, ``Iterator``, ``GuzzleHttp\Stream\StreamInterface``) + The body of the response, if present. Can be a string, resource returned + from fopen, an ``Iterator`` that yields chunks of data, an object that + implemented ``__toString``, or a ``GuzzleHttp\Stream\StreamInterface``. + +effective_url + (string) The URL that returned the resulting response. + +error + (``\Exception``) Contains an exception describing any errors that were + encountered during the transfer. + +headers + (Required, array) Associative array of headers. Each key represents the + header name. Each value contains an array of strings where each entry of + the array is a header line. The headers array MAY be an empty array in the + event an error occurred before a response was received. + +reason + (string) Optional reason phrase. This option should be provided when the + reason phrase does not match the typical reason phrase associated with the + ``status`` code. See `RFC 7231 `_ + for a list of HTTP reason phrases mapped to status codes. + +status + (Required, integer) The HTTP status code. The status code MAY be set to + ``null`` in the event an error occurred before a response was received + (e.g., a networking error). + +transfer_stats + (array) Provides an associative array of arbitrary transfer statistics if + provided by the underlying handler. + +version + (string) HTTP protocol version. Defaults to ``1.1``. + +Middleware +---------- + +Ring middleware augments the functionality of handlers by invoking them in the +process of generating responses. Middleware is typically implemented as a +higher-order function that takes one or more handlers as arguments followed by +an optional associative array of options as the last argument, returning a new +handler with the desired compound behavior. + +Here's an example of a middleware that adds a Content-Type header to each +request. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\CurlHandler; + use GuzzleHttp\Ring\Core; + + $contentTypeHandler = function(callable $handler, $contentType) { + return function (array $request) use ($handler, $contentType) { + return $handler(Core::setHeader('Content-Type', $contentType)); + }; + }; + + $baseHandler = new CurlHandler(); + $wrappedHandler = $contentTypeHandler($baseHandler, 'text/html'); + $response = $wrappedHandler([/** request hash **/]); diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/testing.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/testing.rst new file mode 100644 index 000000000..9df2562ed --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/testing.rst @@ -0,0 +1,74 @@ +======= +Testing +======= + +RingPHP tests client handlers using `PHPUnit `_ and a +built-in node.js web server. + +Running Tests +------------- + +First, install the dependencies using `Composer `_. + + composer.phar install + +Next, run the unit tests using ``Make``. + + make test + +The tests are also run on Travis-CI on each commit: https://travis-ci.org/guzzle/guzzle-ring + +Test Server +----------- + +Testing client handlers usually involves actually sending HTTP requests. +RingPHP provides a node.js web server that returns canned responses and +keep a list of the requests that have been received. The server can then +be queried to get a list of the requests that were sent by the client so that +you can ensure that the client serialized and transferred requests as intended. + +The server keeps a list of queued responses and returns responses that are +popped off of the queue as HTTP requests are received. When there are not +more responses to serve, the server returns a 500 error response. + +The test server uses the ``GuzzleHttp\Tests\Ring\Client\Server`` class to +control the server. + +.. code-block:: php + + use GuzzleHttp\Ring\Client\StreamHandler; + use GuzzleHttp\Tests\Ring\Client\Server; + + // First return a 200 followed by a 404 response. + Server::enqueue([ + ['status' => 200], + ['status' => 404] + ]); + + $handler = new StreamHandler(); + + $response = $handler([ + 'http_method' => 'GET', + 'headers' => ['host' => [Server::$host]], + 'uri' => '/' + ]); + + assert(200 == $response['status']); + + $response = $handler([ + 'http_method' => 'HEAD', + 'headers' => ['host' => [Server::$host]], + 'uri' => '/' + ]); + + assert(404 == $response['status']); + +After requests have been sent, you can get a list of the requests as they +were sent over the wire to ensure they were sent correctly. + +.. code-block:: php + + $received = Server::received(); + + assert('GET' == $received[0]['http_method']); + assert('HEAD' == $received[1]['http_method']); diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/ClientUtils.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/ClientUtils.php new file mode 100644 index 000000000..1e622063c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/ClientUtils.php @@ -0,0 +1,57 @@ +getDefaultOptions($request, $headers); + $this->applyMethod($request, $options); + if (isset($request['client'])) { + $this->applyHandlerOptions($request, $options); + } + $this->applyHeaders($request, $options); + unset($options['_headers']); + // Add handler options from the request's configuration options + if (isset($request['client']['curl'])) { + $options = $this->applyCustomCurlOptions($request['client']['curl'], $options); + } + if (!$handle) { + $handle = \curl_init(); + } + $body = $this->getOutputBody($request, $options); + \curl_setopt_array($handle, $options); + return [$handle, &$headers, $body]; + } + /** + * Creates a response hash from a cURL result. + * + * @param callable $handler Handler that was used. + * @param array $request Request that sent. + * @param array $response Response hash to update. + * @param array $headers Headers received during transfer. + * @param resource $body Body fopen response. + * + * @return array + */ + public static function createResponse(callable $handler, array $request, array $response, array $headers, $body) + { + if (isset($response['transfer_stats']['url'])) { + $response['effective_url'] = $response['transfer_stats']['url']; + } + if (!empty($headers)) { + $startLine = \explode(' ', \array_shift($headers), 3); + $headerList = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::headersFromLines($headers); + $response['headers'] = $headerList; + $response['version'] = isset($startLine[0]) ? \substr($startLine[0], 5) : null; + $response['status'] = isset($startLine[1]) ? (int) $startLine[1] : null; + $response['reason'] = isset($startLine[2]) ? $startLine[2] : null; + $response['body'] = $body; + \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::rewindBody($response); + } + return !empty($response['curl']['errno']) || !isset($response['status']) ? self::createErrorResponse($handler, $request, $response) : $response; + } + private static function createErrorResponse(callable $handler, array $request, array $response) + { + static $connectionErrors = [\CURLE_OPERATION_TIMEOUTED => \true, \CURLE_COULDNT_RESOLVE_HOST => \true, \CURLE_COULDNT_CONNECT => \true, \CURLE_SSL_CONNECT_ERROR => \true, \CURLE_GOT_NOTHING => \true]; + // Retry when nothing is present or when curl failed to rewind. + if (!isset($response['err_message']) && (empty($response['curl']['errno']) || $response['curl']['errno'] == 65)) { + return self::retryFailedRewind($handler, $request, $response); + } + $message = isset($response['err_message']) ? $response['err_message'] : \sprintf('cURL error %s: %s', $response['curl']['errno'], isset($response['curl']['error']) ? $response['curl']['error'] : 'See http://curl.haxx.se/libcurl/c/libcurl-errors.html'); + $error = isset($response['curl']['errno']) && isset($connectionErrors[$response['curl']['errno']]) ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\ConnectException($message) : new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException($message); + return $response + ['status' => null, 'reason' => null, 'body' => null, 'headers' => [], 'error' => $error]; + } + private function getOutputBody(array $request, array &$options) + { + // Determine where the body of the response (if any) will be streamed. + if (isset($options[\CURLOPT_WRITEFUNCTION])) { + return $request['client']['save_to']; + } + if (isset($options[\CURLOPT_FILE])) { + return $options[\CURLOPT_FILE]; + } + if ($request['http_method'] != 'HEAD') { + // Create a default body if one was not provided + return $options[\CURLOPT_FILE] = \fopen('php://temp', 'w+'); + } + return null; + } + private function getDefaultOptions(array $request, array &$headers) + { + $url = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request); + $startingResponse = \false; + $options = ['_headers' => $request['headers'], \CURLOPT_CUSTOMREQUEST => $request['http_method'], \CURLOPT_URL => $url, \CURLOPT_RETURNTRANSFER => \false, \CURLOPT_HEADER => \false, \CURLOPT_CONNECTTIMEOUT => 150, \CURLOPT_HEADERFUNCTION => function ($ch, $h) use(&$headers, &$startingResponse) { + $value = \trim($h); + if ($value === '') { + $startingResponse = \true; + } elseif ($startingResponse) { + $startingResponse = \false; + $headers = [$value]; + } else { + $headers[] = $value; + } + return \strlen($h); + }]; + if (isset($request['version'])) { + if ($request['version'] == 2.0) { + $options[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0; + } else { + if ($request['version'] == 1.1) { + $options[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1; + } else { + $options[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0; + } + } + } + if (\defined('CURLOPT_PROTOCOLS')) { + $options[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS; + } + return $options; + } + private function applyMethod(array $request, array &$options) + { + if (isset($request['body'])) { + $this->applyBody($request, $options); + return; + } + switch ($request['http_method']) { + case 'PUT': + case 'POST': + // See http://tools.ietf.org/html/rfc7230#section-3.3.2 + if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Content-Length')) { + $options[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0'; + } + break; + case 'HEAD': + $options[\CURLOPT_NOBODY] = \true; + unset($options[\CURLOPT_WRITEFUNCTION], $options[\CURLOPT_READFUNCTION], $options[\CURLOPT_FILE], $options[\CURLOPT_INFILE]); + } + } + private function applyBody(array $request, array &$options) + { + $contentLength = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::firstHeader($request, 'Content-Length'); + $size = $contentLength !== null ? (int) $contentLength : null; + // Send the body as a string if the size is less than 1MB OR if the + // [client][curl][body_as_string] request value is set. + if ($size !== null && $size < 1000000 || isset($request['client']['curl']['body_as_string']) || \is_string($request['body'])) { + $options[\CURLOPT_POSTFIELDS] = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::body($request); + // Don't duplicate the Content-Length header + $this->removeHeader('Content-Length', $options); + $this->removeHeader('Transfer-Encoding', $options); + } else { + $options[\CURLOPT_UPLOAD] = \true; + if ($size !== null) { + // Let cURL handle setting the Content-Length header + $options[\CURLOPT_INFILESIZE] = $size; + $this->removeHeader('Content-Length', $options); + } + $this->addStreamingBody($request, $options); + } + // If the Expect header is not present, prevent curl from adding it + if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Expect')) { + $options[\CURLOPT_HTTPHEADER][] = 'Expect:'; + } + // cURL sometimes adds a content-type by default. Prevent this. + if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Content-Type')) { + $options[\CURLOPT_HTTPHEADER][] = 'Content-Type:'; + } + } + private function addStreamingBody(array $request, array &$options) + { + $body = $request['body']; + if ($body instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) { + $options[\CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use($body) { + return (string) $body->read($length); + }; + if (!isset($options[\CURLOPT_INFILESIZE])) { + if ($size = $body->getSize()) { + $options[\CURLOPT_INFILESIZE] = $size; + } + } + } elseif (\is_resource($body)) { + $options[\CURLOPT_INFILE] = $body; + } elseif ($body instanceof \Iterator) { + $buf = ''; + $options[\CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use($body, &$buf) { + if ($body->valid()) { + $buf .= $body->current(); + $body->next(); + } + $result = (string) \substr($buf, 0, $length); + $buf = \substr($buf, $length); + return $result; + }; + } else { + throw new \InvalidArgumentException('Invalid request body provided'); + } + } + private function applyHeaders(array $request, array &$options) + { + foreach ($options['_headers'] as $name => $values) { + foreach ($values as $value) { + $options[\CURLOPT_HTTPHEADER][] = "{$name}: {$value}"; + } + } + // Remove the Accept header if one was not set + if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Accept')) { + $options[\CURLOPT_HTTPHEADER][] = 'Accept:'; + } + } + /** + * Takes an array of curl options specified in the 'curl' option of a + * request's configuration array and maps them to CURLOPT_* options. + * + * This method is only called when a request has a 'curl' config setting. + * + * @param array $config Configuration array of custom curl option + * @param array $options Array of existing curl options + * + * @return array Returns a new array of curl options + */ + private function applyCustomCurlOptions(array $config, array $options) + { + $curlOptions = []; + foreach ($config as $key => $value) { + if (\is_int($key)) { + $curlOptions[$key] = $value; + } + } + return $curlOptions + $options; + } + /** + * Remove a header from the options array. + * + * @param string $name Case-insensitive header to remove + * @param array $options Array of options to modify + */ + private function removeHeader($name, array &$options) + { + foreach (\array_keys($options['_headers']) as $key) { + if (!\strcasecmp($key, $name)) { + unset($options['_headers'][$key]); + return; + } + } + } + /** + * Applies an array of request client options to a the options array. + * + * This method uses a large switch rather than double-dispatch to save on + * high overhead of calling functions in PHP. + */ + private function applyHandlerOptions(array $request, array &$options) + { + foreach ($request['client'] as $key => $value) { + switch ($key) { + // Violating PSR-4 to provide more room. + case 'verify': + if ($value === \false) { + unset($options[\CURLOPT_CAINFO]); + $options[\CURLOPT_SSL_VERIFYHOST] = 0; + $options[\CURLOPT_SSL_VERIFYPEER] = \false; + continue 2; + } + $options[\CURLOPT_SSL_VERIFYHOST] = 2; + $options[\CURLOPT_SSL_VERIFYPEER] = \true; + if (\is_string($value)) { + $options[\CURLOPT_CAINFO] = $value; + if (!\file_exists($value)) { + throw new \InvalidArgumentException("SSL CA bundle not found: {$value}"); + } + } + break; + case 'decode_content': + if ($value === \false) { + continue 2; + } + $accept = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::firstHeader($request, 'Accept-Encoding'); + if ($accept) { + $options[\CURLOPT_ENCODING] = $accept; + } else { + $options[\CURLOPT_ENCODING] = ''; + // Don't let curl send the header over the wire + $options[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; + } + break; + case 'save_to': + if (\is_string($value)) { + if (!\is_dir(\dirname($value))) { + throw new \RuntimeException(\sprintf('Directory %s does not exist for save_to value of %s', \dirname($value), $value)); + } + $value = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\LazyOpenStream($value, 'w+'); + } + if ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) { + $options[\CURLOPT_WRITEFUNCTION] = function ($ch, $write) use($value) { + return $value->write($write); + }; + } elseif (\is_resource($value)) { + $options[\CURLOPT_FILE] = $value; + } else { + throw new \InvalidArgumentException('save_to must be a ' . 'GuzzleHttp\\Stream\\StreamInterface or resource'); + } + break; + case 'timeout': + if (\defined('CURLOPT_TIMEOUT_MS')) { + $options[\CURLOPT_TIMEOUT_MS] = $value * 1000; + } else { + $options[\CURLOPT_TIMEOUT] = $value; + } + break; + case 'connect_timeout': + if (\defined('CURLOPT_CONNECTTIMEOUT_MS')) { + $options[\CURLOPT_CONNECTTIMEOUT_MS] = $value * 1000; + } else { + $options[\CURLOPT_CONNECTTIMEOUT] = $value; + } + break; + case 'proxy': + if (!\is_array($value)) { + $options[\CURLOPT_PROXY] = $value; + } elseif (isset($request['scheme'])) { + $scheme = $request['scheme']; + if (isset($value[$scheme])) { + $options[\CURLOPT_PROXY] = $value[$scheme]; + } + } + break; + case 'cert': + if (\is_array($value)) { + $options[\CURLOPT_SSLCERTPASSWD] = $value[1]; + $value = $value[0]; + } + if (!\file_exists($value)) { + throw new \InvalidArgumentException("SSL certificate not found: {$value}"); + } + $options[\CURLOPT_SSLCERT] = $value; + break; + case 'ssl_key': + if (\is_array($value)) { + $options[\CURLOPT_SSLKEYPASSWD] = $value[1]; + $value = $value[0]; + } + if (!\file_exists($value)) { + throw new \InvalidArgumentException("SSL private key not found: {$value}"); + } + $options[\CURLOPT_SSLKEY] = $value; + break; + case 'progress': + if (!\is_callable($value)) { + throw new \InvalidArgumentException('progress client option must be callable'); + } + $options[\CURLOPT_NOPROGRESS] = \false; + $options[\CURLOPT_PROGRESSFUNCTION] = function () use($value) { + $args = \func_get_args(); + // PHP 5.5 pushed the handle onto the start of the args + if (\is_resource($args[0])) { + \array_shift($args); + } + \call_user_func_array($value, $args); + }; + break; + case 'debug': + if ($value) { + $options[\CURLOPT_STDERR] = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::getDebugResource($value); + $options[\CURLOPT_VERBOSE] = \true; + } + break; + } + } + } + /** + * This function ensures that a response was set on a transaction. If one + * was not set, then the request is retried if possible. This error + * typically means you are sending a payload, curl encountered a + * "Connection died, retrying a fresh connect" error, tried to rewind the + * stream, and then encountered a "necessary data rewind wasn't possible" + * error, causing the request to be sent through curl_multi_info_read() + * without an error status. + */ + private static function retryFailedRewind(callable $handler, array $request, array $response) + { + // If there is no body, then there is some other kind of issue. This + // is weird and should probably never happen. + if (!isset($request['body'])) { + $response['err_message'] = 'No response was received for a request ' . 'with no body. This could mean that you are saturating your ' . 'network.'; + return self::createErrorResponse($handler, $request, $response); + } + if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::rewindBody($request)) { + $response['err_message'] = 'The connection unexpectedly failed ' . 'without providing an error. The request would have been ' . 'retried, but attempting to rewind the request body failed.'; + return self::createErrorResponse($handler, $request, $response); + } + // Retry no more than 3 times before giving up. + if (!isset($request['curl']['retries'])) { + $request['curl']['retries'] = 1; + } elseif ($request['curl']['retries'] == 2) { + $response['err_message'] = 'The cURL request was retried 3 times ' . 'and did no succeed. cURL was unable to rewind the body of ' . 'the request and subsequent retries resulted in the same ' . 'error. Turn on the debug option to see what went wrong. ' . 'See https://bugs.php.net/bug.php?id=47204 for more information.'; + return self::createErrorResponse($handler, $request, $response); + } else { + $request['curl']['retries']++; + } + return $handler($request); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlHandler.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlHandler.php new file mode 100644 index 000000000..8cfcd2f83 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlHandler.php @@ -0,0 +1,111 @@ +handles = $this->ownedHandles = []; + $this->factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory(); + $this->maxHandles = isset($options['max_handles']) ? $options['max_handles'] : 5; + } + public function __destruct() + { + foreach ($this->handles as $handle) { + if (\is_resource($handle)) { + \curl_close($handle); + } + } + } + /** + * @param array $request + * + * @return CompletedFutureArray + */ + public function __invoke(array $request) + { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray($this->_invokeAsArray($request)); + } + /** + * @internal + * + * @param array $request + * + * @return array + */ + public function _invokeAsArray(array $request) + { + $factory = $this->factory; + // Ensure headers are by reference. They're updated elsewhere. + $result = $factory($request, $this->checkoutEasyHandle()); + $h = $result[0]; + $hd =& $result[1]; + $bd = $result[2]; + \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::doSleep($request); + \curl_exec($h); + $response = ['transfer_stats' => \curl_getinfo($h)]; + $response['curl']['error'] = \curl_error($h); + $response['curl']['errno'] = \curl_errno($h); + $response['transfer_stats'] = \array_merge($response['transfer_stats'], $response['curl']); + $this->releaseEasyHandle($h); + return \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory::createResponse([$this, '_invokeAsArray'], $request, $response, $hd, $bd); + } + private function checkoutEasyHandle() + { + // Find an unused handle in the cache + if (\false !== ($key = \array_search(\false, $this->ownedHandles, \true))) { + $this->ownedHandles[$key] = \true; + return $this->handles[$key]; + } + // Add a new handle + $handle = \curl_init(); + $id = (int) $handle; + $this->handles[$id] = $handle; + $this->ownedHandles[$id] = \true; + return $handle; + } + private function releaseEasyHandle($handle) + { + $id = (int) $handle; + if (\count($this->ownedHandles) > $this->maxHandles) { + \curl_close($this->handles[$id]); + unset($this->handles[$id], $this->ownedHandles[$id]); + } else { + // curl_reset doesn't clear these out for some reason + static $unsetValues = [\CURLOPT_HEADERFUNCTION => null, \CURLOPT_WRITEFUNCTION => null, \CURLOPT_READFUNCTION => null, \CURLOPT_PROGRESSFUNCTION => null]; + \curl_setopt_array($handle, $unsetValues); + \curl_reset($handle); + $this->ownedHandles[$id] = \false; + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php new file mode 100644 index 000000000..fa3ba768c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php @@ -0,0 +1,188 @@ +_mh = $options['mh']; + } + $this->factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory(); + $this->selectTimeout = isset($options['select_timeout']) ? $options['select_timeout'] : 1; + $this->maxHandles = isset($options['max_handles']) ? $options['max_handles'] : 100; + } + public function __get($name) + { + if ($name === '_mh') { + return $this->_mh = \curl_multi_init(); + } + throw new \BadMethodCallException(); + } + public function __destruct() + { + // Finish any open connections before terminating the script. + if ($this->handles) { + $this->execute(); + } + if (isset($this->_mh)) { + \curl_multi_close($this->_mh); + unset($this->_mh); + } + } + public function __invoke(array $request) + { + $factory = $this->factory; + $result = $factory($request); + $entry = ['request' => $request, 'response' => [], 'handle' => $result[0], 'headers' => &$result[1], 'body' => $result[2], 'deferred' => new \Google\Site_Kit_Dependencies\React\Promise\Deferred()]; + $id = (int) $result[0]; + $future = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArray($entry['deferred']->promise(), [$this, 'execute'], function () use($id) { + return $this->cancel($id); + }); + $this->addRequest($entry); + // Transfer outstanding requests if there are too many open handles. + if (\count($this->handles) >= $this->maxHandles) { + $this->execute(); + } + return $future; + } + /** + * Runs until all outstanding connections have completed. + */ + public function execute() + { + do { + if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) { + // Perform a usleep if a select returns -1. + // See: https://bugs.php.net/bug.php?id=61141 + \usleep(250); + } + // Add any delayed futures if needed. + if ($this->delays) { + $this->addDelays(); + } + do { + $mrc = \curl_multi_exec($this->_mh, $this->active); + } while ($mrc === \CURLM_CALL_MULTI_PERFORM); + $this->processMessages(); + // If there are delays but no transfers, then sleep for a bit. + if (!$this->active && $this->delays) { + \usleep(500); + } + } while ($this->active || $this->handles); + } + private function addRequest(array &$entry) + { + $id = (int) $entry['handle']; + $this->handles[$id] = $entry; + // If the request is a delay, then add the reques to the curl multi + // pool only after the specified delay. + if (isset($entry['request']['client']['delay'])) { + $this->delays[$id] = \microtime(\true) + $entry['request']['client']['delay'] / 1000; + } elseif (empty($entry['request']['future'])) { + \curl_multi_add_handle($this->_mh, $entry['handle']); + } else { + \curl_multi_add_handle($this->_mh, $entry['handle']); + // "lazy" futures are only sent once the pool has many requests. + if ($entry['request']['future'] !== 'lazy') { + do { + $mrc = \curl_multi_exec($this->_mh, $this->active); + } while ($mrc === \CURLM_CALL_MULTI_PERFORM); + $this->processMessages(); + } + } + } + private function removeProcessed($id) + { + if (isset($this->handles[$id])) { + \curl_multi_remove_handle($this->_mh, $this->handles[$id]['handle']); + \curl_close($this->handles[$id]['handle']); + unset($this->handles[$id], $this->delays[$id]); + } + } + /** + * Cancels a handle from sending and removes references to it. + * + * @param int $id Handle ID to cancel and remove. + * + * @return bool True on success, false on failure. + */ + private function cancel($id) + { + // Cannot cancel if it has been processed. + if (!isset($this->handles[$id])) { + return \false; + } + $handle = $this->handles[$id]['handle']; + unset($this->delays[$id], $this->handles[$id]); + \curl_multi_remove_handle($this->_mh, $handle); + \curl_close($handle); + return \true; + } + private function addDelays() + { + $currentTime = \microtime(\true); + foreach ($this->delays as $id => $delay) { + if ($currentTime >= $delay) { + unset($this->delays[$id]); + \curl_multi_add_handle($this->_mh, $this->handles[$id]['handle']); + } + } + } + private function processMessages() + { + while ($done = \curl_multi_info_read($this->_mh)) { + $id = (int) $done['handle']; + if (!isset($this->handles[$id])) { + // Probably was cancelled. + continue; + } + $entry = $this->handles[$id]; + $entry['response']['transfer_stats'] = \curl_getinfo($done['handle']); + if ($done['result'] !== \CURLM_OK) { + $entry['response']['curl']['errno'] = $done['result']; + $entry['response']['curl']['error'] = \curl_error($done['handle']); + } + $result = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory::createResponse($this, $entry['request'], $entry['response'], $entry['headers'], $entry['body']); + $this->removeProcessed($id); + $entry['deferred']->resolve($result); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/Middleware.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/Middleware.php new file mode 100644 index 000000000..c54d4d1f0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/Middleware.php @@ -0,0 +1,50 @@ +result = $result; + } + public function __invoke(array $request) + { + \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::doSleep($request); + $response = \is_callable($this->result) ? \call_user_func($this->result, $request) : $this->result; + if (\is_array($response)) { + $response = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray($response + ['status' => null, 'body' => null, 'headers' => [], 'reason' => null, 'effective_url' => null]); + } elseif (!$response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArrayInterface) { + throw new \InvalidArgumentException('Response must be an array or FutureArrayInterface. Found ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($request)); + } + return $response; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/StreamHandler.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/StreamHandler.php new file mode 100644 index 000000000..3ae328016 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/StreamHandler.php @@ -0,0 +1,295 @@ +options = $options; + } + public function __invoke(array $request) + { + $url = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request); + \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::doSleep($request); + try { + // Does not support the expect header. + $request = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::removeHeader($request, 'Expect'); + $stream = $this->createStream($url, $request); + return $this->createResponse($request, $url, $stream); + } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException $e) { + return $this->createErrorResponse($url, $e); + } + } + private function createResponse(array $request, $url, $stream) + { + $hdrs = $this->lastHeaders; + $this->lastHeaders = null; + $parts = \explode(' ', \array_shift($hdrs), 3); + $response = ['version' => \substr($parts[0], 5), 'status' => $parts[1], 'reason' => isset($parts[2]) ? $parts[2] : null, 'headers' => \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::headersFromLines($hdrs), 'effective_url' => $url]; + $stream = $this->checkDecode($request, $response, $stream); + // If not streaming, then drain the response into a stream. + if (empty($request['client']['stream'])) { + $dest = isset($request['client']['save_to']) ? $request['client']['save_to'] : \fopen('php://temp', 'r+'); + $stream = $this->drain($stream, $dest); + } + $response['body'] = $stream; + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray($response); + } + private function checkDecode(array $request, array $response, $stream) + { + // Automatically decode responses when instructed. + if (!empty($request['client']['decode_content'])) { + switch (\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::firstHeader($response, 'Content-Encoding', \true)) { + case 'gzip': + case 'deflate': + $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\InflateStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($stream)); + break; + } + } + return $stream; + } + /** + * Drains the stream into the "save_to" client option. + * + * @param resource $stream + * @param string|resource|StreamInterface $dest + * + * @return Stream + * @throws \RuntimeException when the save_to option is invalid. + */ + private function drain($stream, $dest) + { + if (\is_resource($stream)) { + if (!\is_resource($dest)) { + $stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($stream); + } else { + \stream_copy_to_stream($stream, $dest); + \fclose($stream); + \rewind($dest); + return $dest; + } + } + // Stream the response into the destination stream + $dest = \is_string($dest) ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::open($dest, 'r+')) : \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($dest); + \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToStream($stream, $dest); + $dest->seek(0); + $stream->close(); + return $dest; + } + /** + * Creates an error response for the given stream. + * + * @param string $url + * @param RingException $e + * + * @return array + */ + private function createErrorResponse($url, \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException $e) + { + // Determine if the error was a networking error. + $message = $e->getMessage(); + // This list can probably get more comprehensive. + if (\strpos($message, 'getaddrinfo') || \strpos($message, 'Connection refused')) { + $e = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\ConnectException($e->getMessage(), 0, $e); + } + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray(['status' => null, 'body' => null, 'headers' => [], 'effective_url' => $url, 'error' => $e]); + } + /** + * Create a resource and check to ensure it was created successfully + * + * @param callable $callback Callable that returns stream resource + * + * @return resource + * @throws \RuntimeException on error + */ + private function createResource(callable $callback) + { + $errors = null; + \set_error_handler(function ($_, $msg, $file, $line) use(&$errors) { + $errors[] = ['message' => $msg, 'file' => $file, 'line' => $line]; + return \true; + }); + $resource = $callback(); + \restore_error_handler(); + if (!$resource) { + $message = 'Error creating resource: '; + foreach ($errors as $err) { + foreach ($err as $key => $value) { + $message .= "[{$key}] {$value}" . \PHP_EOL; + } + } + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException(\trim($message)); + } + return $resource; + } + private function createStream($url, array $request) + { + static $methods; + if (!$methods) { + $methods = \array_flip(\get_class_methods(__CLASS__)); + } + // HTTP/1.1 streams using the PHP stream wrapper require a + // Connection: close header + if ((!isset($request['version']) || $request['version'] == '1.1') && !\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Connection')) { + $request['headers']['Connection'] = ['close']; + } + // Ensure SSL is verified by default + if (!isset($request['client']['verify'])) { + $request['client']['verify'] = \true; + } + $params = []; + $options = $this->getDefaultOptions($request); + if (isset($request['client'])) { + foreach ($request['client'] as $key => $value) { + $method = "add_{$key}"; + if (isset($methods[$method])) { + $this->{$method}($request, $options, $value, $params); + } + } + } + return $this->createStreamResource($url, $request, $options, $this->createContext($request, $options, $params)); + } + private function getDefaultOptions(array $request) + { + $headers = ""; + foreach ($request['headers'] as $name => $value) { + foreach ((array) $value as $val) { + $headers .= "{$name}: {$val}\r\n"; + } + } + $context = ['http' => ['method' => $request['http_method'], 'header' => $headers, 'protocol_version' => isset($request['version']) ? $request['version'] : 1.1, 'ignore_errors' => \true, 'follow_location' => 0]]; + $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::body($request); + if (isset($body)) { + $context['http']['content'] = $body; + // Prevent the HTTP handler from adding a Content-Type header. + if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Content-Type')) { + $context['http']['header'] .= "Content-Type:\r\n"; + } + } + $context['http']['header'] = \rtrim($context['http']['header']); + return $context; + } + private function add_proxy(array $request, &$options, $value, &$params) + { + if (!\is_array($value)) { + $options['http']['proxy'] = $value; + } else { + $scheme = isset($request['scheme']) ? $request['scheme'] : 'http'; + if (isset($value[$scheme])) { + $options['http']['proxy'] = $value[$scheme]; + } + } + } + private function add_timeout(array $request, &$options, $value, &$params) + { + $options['http']['timeout'] = $value; + } + private function add_verify(array $request, &$options, $value, &$params) + { + if ($value === \true) { + // PHP 5.6 or greater will find the system cert by default. When + // < 5.6, use the Guzzle bundled cacert. + if (\PHP_VERSION_ID < 50600) { + $options['ssl']['cafile'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\ClientUtils::getDefaultCaBundle(); + } + } elseif (\is_string($value)) { + $options['ssl']['cafile'] = $value; + if (!\file_exists($value)) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException("SSL CA bundle not found: {$value}"); + } + } elseif ($value === \false) { + $options['ssl']['verify_peer'] = \false; + $options['ssl']['allow_self_signed'] = \true; + return; + } else { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException('Invalid verify request option'); + } + $options['ssl']['verify_peer'] = \true; + $options['ssl']['allow_self_signed'] = \false; + } + private function add_cert(array $request, &$options, $value, &$params) + { + if (\is_array($value)) { + $options['ssl']['passphrase'] = $value[1]; + $value = $value[0]; + } + if (!\file_exists($value)) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException("SSL certificate not found: {$value}"); + } + $options['ssl']['local_cert'] = $value; + } + private function add_progress(array $request, &$options, $value, &$params) + { + $fn = function ($code, $_1, $_2, $_3, $transferred, $total) use($value) { + if ($code == \STREAM_NOTIFY_PROGRESS) { + $value($total, $transferred, null, null); + } + }; + // Wrap the existing function if needed. + $params['notification'] = isset($params['notification']) ? \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::callArray([$params['notification'], $fn]) : $fn; + } + private function add_debug(array $request, &$options, $value, &$params) + { + if ($value === \false) { + return; + } + static $map = [\STREAM_NOTIFY_CONNECT => 'CONNECT', \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', \STREAM_NOTIFY_PROGRESS => 'PROGRESS', \STREAM_NOTIFY_FAILURE => 'FAILURE', \STREAM_NOTIFY_COMPLETED => 'COMPLETED', \STREAM_NOTIFY_RESOLVE => 'RESOLVE']; + static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; + $value = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::getDebugResource($value); + $ident = $request['http_method'] . ' ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request); + $fn = function () use($ident, $value, $map, $args) { + $passed = \func_get_args(); + $code = \array_shift($passed); + \fprintf($value, '<%s> [%s] ', $ident, $map[$code]); + foreach (\array_filter($passed) as $i => $v) { + \fwrite($value, $args[$i] . ': "' . $v . '" '); + } + \fwrite($value, "\n"); + }; + // Wrap the existing function if needed. + $params['notification'] = isset($params['notification']) ? \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::callArray([$params['notification'], $fn]) : $fn; + } + private function applyCustomOptions(array $request, array &$options) + { + if (!isset($request['client']['stream_context'])) { + return; + } + if (!\is_array($request['client']['stream_context'])) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException('stream_context must be an array'); + } + $options = \array_replace_recursive($options, $request['client']['stream_context']); + } + private function createContext(array $request, array $options, array $params) + { + $this->applyCustomOptions($request, $options); + return $this->createResource(function () use($request, $options, $params) { + return \stream_context_create($options, $params); + }, $request, $options); + } + private function createStreamResource($url, array $request, array $options, $context) + { + return $this->createResource(function () use($url, $context) { + if (\false === \strpos($url, 'http')) { + \trigger_error("URL is invalid: {$url}", \E_USER_WARNING); + return null; + } + $resource = \fopen($url, 'r', null, $context); + $this->lastHeaders = $http_response_header; + return $resource; + }, $request, $options); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Core.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Core.php new file mode 100644 index 000000000..c7a086df0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Core.php @@ -0,0 +1,317 @@ + $value) { + if (!\strcasecmp($name, $header)) { + $result = \array_merge($result, $value); + } + } + } + return $result; + } + /** + * Gets a header value from a message as a string or null + * + * This method searches through the "headers" key of a message for a header + * using a case-insensitive search. The lines of the header are imploded + * using commas into a single string return value. + * + * @param array $message Request or response hash. + * @param string $header Header to retrieve + * + * @return string|null Returns the header string if found, or null if not. + */ + public static function header($message, $header) + { + $match = self::headerLines($message, $header); + return $match ? \implode(', ', $match) : null; + } + /** + * Returns the first header value from a message as a string or null. If + * a header line contains multiple values separated by a comma, then this + * function will return the first value in the list. + * + * @param array $message Request or response hash. + * @param string $header Header to retrieve + * + * @return string|null Returns the value as a string if found. + */ + public static function firstHeader($message, $header) + { + if (!empty($message['headers'])) { + foreach ($message['headers'] as $name => $value) { + if (!\strcasecmp($name, $header)) { + // Return the match itself if it is a single value. + $pos = \strpos($value[0], ','); + return $pos ? \substr($value[0], 0, $pos) : $value[0]; + } + } + } + return null; + } + /** + * Returns true if a message has the provided case-insensitive header. + * + * @param array $message Request or response hash. + * @param string $header Header to check + * + * @return bool + */ + public static function hasHeader($message, $header) + { + if (!empty($message['headers'])) { + foreach ($message['headers'] as $name => $value) { + if (!\strcasecmp($name, $header)) { + return \true; + } + } + } + return \false; + } + /** + * Parses an array of header lines into an associative array of headers. + * + * @param array $lines Header lines array of strings in the following + * format: "Name: Value" + * @return array + */ + public static function headersFromLines($lines) + { + $headers = []; + foreach ($lines as $line) { + $parts = \explode(':', $line, 2); + $headers[\trim($parts[0])][] = isset($parts[1]) ? \trim($parts[1]) : null; + } + return $headers; + } + /** + * Removes a header from a message using a case-insensitive comparison. + * + * @param array $message Message that contains 'headers' + * @param string $header Header to remove + * + * @return array + */ + public static function removeHeader(array $message, $header) + { + if (isset($message['headers'])) { + foreach (\array_keys($message['headers']) as $key) { + if (!\strcasecmp($header, $key)) { + unset($message['headers'][$key]); + } + } + } + return $message; + } + /** + * Replaces any existing case insensitive headers with the given value. + * + * @param array $message Message that contains 'headers' + * @param string $header Header to set. + * @param array $value Value to set. + * + * @return array + */ + public static function setHeader(array $message, $header, array $value) + { + $message = self::removeHeader($message, $header); + $message['headers'][$header] = $value; + return $message; + } + /** + * Creates a URL string from a request. + * + * If the "url" key is present on the request, it is returned, otherwise + * the url is built up based on the scheme, host, uri, and query_string + * request values. + * + * @param array $request Request to get the URL from + * + * @return string Returns the request URL as a string. + * @throws \InvalidArgumentException if no Host header is present. + */ + public static function url(array $request) + { + if (isset($request['url'])) { + return $request['url']; + } + $uri = (isset($request['scheme']) ? $request['scheme'] : 'http') . '://'; + if ($host = self::header($request, 'host')) { + $uri .= $host; + } else { + throw new \InvalidArgumentException('No Host header was provided'); + } + if (isset($request['uri'])) { + $uri .= $request['uri']; + } + if (isset($request['query_string'])) { + $uri .= '?' . $request['query_string']; + } + return $uri; + } + /** + * Reads the body of a message into a string. + * + * @param array|FutureArrayInterface $message Array containing a "body" key + * + * @return null|string Returns the body as a string or null if not set. + * @throws \InvalidArgumentException if a request body is invalid. + */ + public static function body($message) + { + if (!isset($message['body'])) { + return null; + } + if ($message['body'] instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) { + return (string) $message['body']; + } + switch (\gettype($message['body'])) { + case 'string': + return $message['body']; + case 'resource': + return \stream_get_contents($message['body']); + case 'object': + if ($message['body'] instanceof \Iterator) { + return \implode('', \iterator_to_array($message['body'])); + } elseif (\method_exists($message['body'], '__toString')) { + return (string) $message['body']; + } + default: + throw new \InvalidArgumentException('Invalid request body: ' . self::describeType($message['body'])); + } + } + /** + * Rewind the body of the provided message if possible. + * + * @param array $message Message that contains a 'body' field. + * + * @return bool Returns true on success, false on failure + */ + public static function rewindBody($message) + { + if ($message['body'] instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) { + return $message['body']->seek(0); + } + if ($message['body'] instanceof \Generator) { + return \false; + } + if ($message['body'] instanceof \Iterator) { + $message['body']->rewind(); + return \true; + } + if (\is_resource($message['body'])) { + return \rewind($message['body']); + } + return \is_string($message['body']) || \is_object($message['body']) && \method_exists($message['body'], '__toString'); + } + /** + * Debug function used to describe the provided value type and class. + * + * @param mixed $input + * + * @return string Returns a string containing the type of the variable and + * if a class is provided, the class name. + */ + public static function describeType($input) + { + switch (\gettype($input)) { + case 'object': + return 'object(' . \get_class($input) . ')'; + case 'array': + return 'array(' . \count($input) . ')'; + default: + \ob_start(); + \var_dump($input); + // normalize float vs double + return \str_replace('double(', 'float(', \rtrim(\ob_get_clean())); + } + } + /** + * Sleep for the specified amount of time specified in the request's + * ['client']['delay'] option if present. + * + * This function should only be used when a non-blocking sleep is not + * possible. + * + * @param array $request Request to sleep + */ + public static function doSleep(array $request) + { + if (isset($request['client']['delay'])) { + \usleep($request['client']['delay'] * 1000); + } + } + /** + * Returns a proxied future that modifies the dereferenced value of another + * future using a promise. + * + * @param FutureArrayInterface $future Future to wrap with a new future + * @param callable $onFulfilled Invoked when the future fulfilled + * @param callable $onRejected Invoked when the future rejected + * @param callable $onProgress Invoked when the future progresses + * + * @return FutureArray + */ + public static function proxy(\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArrayInterface $future, callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArray($future->then($onFulfilled, $onRejected, $onProgress), [$future, 'wait'], [$future, 'cancel']); + } + /** + * Returns a debug stream based on the provided variable. + * + * @param mixed $value Optional value + * + * @return resource + */ + public static function getDebugResource($value = null) + { + if (\is_resource($value)) { + return $value; + } elseif (\defined('STDOUT')) { + return \STDOUT; + } else { + return \fopen('php://output', 'w'); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Exception/CancelledException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Exception/CancelledException.php new file mode 100644 index 000000000..292e22e7c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Exception/CancelledException.php @@ -0,0 +1,10 @@ +wrappedPromise = $promise; + $this->waitfn = $wait; + $this->cancelfn = $cancel; + } + public function wait() + { + if (!$this->isRealized) { + $this->addShadow(); + if (!$this->isRealized && $this->waitfn) { + $this->invokeWait(); + } + if (!$this->isRealized) { + $this->error = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException('Waiting did not resolve future'); + } + } + if ($this->error) { + throw $this->error; + } + return $this->result; + } + public function promise() + { + return $this->wrappedPromise; + } + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + return $this->wrappedPromise->then($onFulfilled, $onRejected, $onProgress); + } + public function cancel() + { + if (!$this->isRealized) { + $cancelfn = $this->cancelfn; + $this->waitfn = $this->cancelfn = null; + $this->isRealized = \true; + $this->error = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\CancelledFutureAccessException(); + if ($cancelfn) { + $cancelfn($this); + } + } + } + private function addShadow() + { + // Get the result and error when the promise is resolved. Note that + // calling this function might trigger the resolution immediately. + $this->wrappedPromise->then(function ($value) { + $this->isRealized = \true; + $this->result = $value; + $this->waitfn = $this->cancelfn = null; + }, function ($error) { + $this->isRealized = \true; + $this->error = $error; + $this->waitfn = $this->cancelfn = null; + }); + } + private function invokeWait() + { + try { + $wait = $this->waitfn; + $this->waitfn = null; + $wait(); + } catch (\Exception $e) { + // Defer can throw to reject. + $this->error = $e; + $this->isRealized = \true; + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php new file mode 100644 index 000000000..1fb84d613 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php @@ -0,0 +1,38 @@ +result[$offset]); + } + public function offsetGet($offset) + { + return $this->result[$offset]; + } + public function offsetSet($offset, $value) + { + $this->result[$offset] = $value; + } + public function offsetUnset($offset) + { + unset($this->result[$offset]); + } + public function count() + { + return \count($this->result); + } + public function getIterator() + { + return new \ArrayIterator($this->result); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php new file mode 100644 index 000000000..e68736d38 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php @@ -0,0 +1,46 @@ +result = $result; + $this->error = $e; + } + public function wait() + { + if ($this->error) { + throw $this->error; + } + return $this->result; + } + public function cancel() + { + } + public function promise() + { + if (!$this->cachedPromise) { + $this->cachedPromise = $this->error ? new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($this->error) : new \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise($this->result); + } + return $this->cachedPromise; + } + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + return $this->promise()->then($onFulfilled, $onRejected, $onProgress); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArray.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArray.php new file mode 100644 index 000000000..25fec1110 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArray.php @@ -0,0 +1,35 @@ +_value[$offset]); + } + public function offsetGet($offset) + { + return $this->_value[$offset]; + } + public function offsetSet($offset, $value) + { + $this->_value[$offset] = $value; + } + public function offsetUnset($offset) + { + unset($this->_value[$offset]); + } + public function count() + { + return \count($this->_value); + } + public function getIterator() + { + return new \ArrayIterator($this->_value); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php new file mode 100644 index 000000000..7d5970667 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php @@ -0,0 +1,10 @@ +_value = $this->wait(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/CHANGELOG.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/CHANGELOG.rst new file mode 100644 index 000000000..0018ffe35 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/CHANGELOG.rst @@ -0,0 +1,94 @@ +========= +Changelog +========= + +3.0.0 (2014-10-12) +------------------ + +* Now supports creating streams from functions and iterators. +* Supports creating buffered streams and asynchronous streams. +* Removed ``functions.php``. Use the corresponding functions provided by + ``GuzzleHttp\Streams\Utils`` instead. +* Moved ``GuzzleHttp\Stream\MetadataStreamInterface::getMetadata`` to + ``GuzzleHttp\Stream\StreamInterface``. MetadataStreamInterface is no longer + used and is marked as deprecated. +* Added ``attach()`` to ``GuzzleHttp\Stream\StreamInterface`` for PSR-7 + compatibility. +* Removed ``flush()`` from StreamInterface. +* Removed the ``$maxLength`` parameter from + ``GuzzleHttp\Stream\StreamInterface::getContents()``. This function now + returns the entire remainder of the stream. If you want to limit the maximum + amount of data read from the stream, use the + ``GuzzleHttp\Stream\Utils::copyToString()`` function. +* Streams that return an empty string, ``''``, are no longer considered a + failure. You MUST return ``false`` to mark the read as a failure, and ensure + that any decorators you create properly return ``true`` in response to the + ``eof()`` method when the stream is consumed. +* ``GuzzleHttp\Stream\Stream::__construct``, + ``GuzzleHttp\Stream\Stream::factory``, and + ``GuzzleHttp\Stream\Utils::create`` no longer accept a size in the second + argument. They now accept an associative array of options, including the + "size" key and "metadata" key which can be used to provide custom metadata. +* Added ``GuzzleHttp\Stream\BufferStream`` to add support for buffering data, + and when read, shifting data off of the buffer. +* Added ``GuzzleHttp\Stream\NullBuffer`` which can be used as a buffer that + does not actually store any data. +* Added ``GuzzleHttp\Stream\AsyncStream`` to provide support for non-blocking + streams that can be filled by a remote source (e.g., an event-loop). If a + ``drain`` option is provided, the stream can also act as if it is a blocking + stream. + +2.1.0 (2014-08-17) +------------------ + +* Added an InflateStream to inflate gzipped or deflated content. +* Added ``flush`` to stream wrapper. +* Added the ability to easily register the GuzzleStreamWrapper if needed. + +2.0.0 (2014-08-16) +------------------ + +* Deprecated functions.php and moved all of those methods to + ``GuzzleHttp\Streams\Utils``. Use ``GuzzleHttp\Stream\Stream::factory()`` + instead of ``GuzzleHttp\Stream\create()`` to create new streams. +* Added ``flush()`` to ``StreamInterface``. This method is used to flush any + underlying stream write buffers. +* Added ``FnStream`` to easily decorate stream behavior with callables. +* ``Utils::hash`` now throws an exception when the stream cannot seek to 0. + +1.5.1 (2014-09-10) +------------------ + +* Stream metadata is grabbed from the underlying stream each time + ``getMetadata`` is called rather than returning a value from a cache. +* Properly closing all underlying streams when AppendStream is closed. +* Seek functions no longer throw exceptions. +* LazyOpenStream now correctly returns the underlying stream resource when + detached. + +1.5.0 (2014-08-07) +------------------ + +* Added ``Stream\safe_open`` to open stream resources and throw exceptions + instead of raising errors. + +1.4.0 (2014-07-19) +------------------ + +* Added a LazyOpenStream + +1.3.0 (2014-07-15) +------------------ + +* Added an AppendStream to stream over multiple stream one after the other. + +1.2.0 (2014-07-15) +------------------ + +* Updated the ``detach()`` method to return the underlying stream resource or + ``null`` if it does not wrap a resource. +* Multiple fixes for how streams behave when the underlying resource is + detached +* Do not clear statcache when a stream does not have a 'uri' +* Added a fix to LimitStream +* Added a condition to ensure that functions.php can be required multiple times diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/README.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/README.rst new file mode 100644 index 000000000..baff63b37 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/README.rst @@ -0,0 +1,36 @@ +============== +Guzzle Streams +============== + +Provides a simple abstraction over streams of data. + +This library is used in `Guzzle 5 `_, and is +(currently) compatible with the WIP PSR-7. + +Installation +============ + +This package can be installed easily using `Composer `_. +Simply add the following to the composer.json file at the root of your project: + +.. code-block:: javascript + + { + "require": { + "guzzlehttp/streams": "~3.0" + } + } + +Then install your dependencies using ``composer.phar install``. + +Documentation +============= + +The documentation for this package can be found on the main Guzzle website at +http://docs.guzzlephp.org/en/guzzle4/streams.html. + +Testing +======= + +This library is tested using PHPUnit. You'll need to install the dependencies +using `Composer `_ then run ``make test``. diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AppendStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AppendStream.php new file mode 100644 index 000000000..3cc559bd4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AppendStream.php @@ -0,0 +1,186 @@ +addStream($stream); + } + } + public function __toString() + { + try { + $this->seek(0); + return $this->getContents(); + } catch (\Exception $e) { + return ''; + } + } + /** + * Add a stream to the AppendStream + * + * @param StreamInterface $stream Stream to append. Must be readable. + * + * @throws \InvalidArgumentException if the stream is not readable + */ + public function addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream) + { + if (!$stream->isReadable()) { + throw new \InvalidArgumentException('Each stream must be readable'); + } + // The stream is only seekable if all streams are seekable + if (!$stream->isSeekable()) { + $this->seekable = \false; + } + $this->streams[] = $stream; + } + public function getContents() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToString($this); + } + /** + * Closes each attached stream. + * + * {@inheritdoc} + */ + public function close() + { + $this->pos = $this->current = 0; + foreach ($this->streams as $stream) { + $stream->close(); + } + $this->streams = []; + } + /** + * Detaches each attached stream + * + * {@inheritdoc} + */ + public function detach() + { + $this->close(); + $this->detached = \true; + } + public function attach($stream) + { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException(); + } + public function tell() + { + return $this->pos; + } + /** + * Tries to calculate the size by adding the size of each stream. + * + * If any of the streams do not return a valid number, then the size of the + * append stream cannot be determined and null is returned. + * + * {@inheritdoc} + */ + public function getSize() + { + $size = 0; + foreach ($this->streams as $stream) { + $s = $stream->getSize(); + if ($s === null) { + return null; + } + $size += $s; + } + return $size; + } + public function eof() + { + return !$this->streams || $this->current >= \count($this->streams) - 1 && $this->streams[$this->current]->eof(); + } + /** + * Attempts to seek to the given position. Only supports SEEK_SET. + * + * {@inheritdoc} + */ + public function seek($offset, $whence = \SEEK_SET) + { + if (!$this->seekable || $whence !== \SEEK_SET) { + return \false; + } + $success = \true; + $this->pos = $this->current = 0; + // Rewind each stream + foreach ($this->streams as $stream) { + if (!$stream->seek(0)) { + $success = \false; + } + } + if (!$success) { + return \false; + } + // Seek to the actual position by reading from each stream + while ($this->pos < $offset && !$this->eof()) { + $this->read(\min(8096, $offset - $this->pos)); + } + return $this->pos == $offset; + } + /** + * Reads from all of the appended streams until the length is met or EOF. + * + * {@inheritdoc} + */ + public function read($length) + { + $buffer = ''; + $total = \count($this->streams) - 1; + $remaining = $length; + while ($remaining > 0) { + // Progress to the next stream if needed. + if ($this->streams[$this->current]->eof()) { + if ($this->current == $total) { + break; + } + $this->current++; + } + $buffer .= $this->streams[$this->current]->read($remaining); + $remaining = $length - \strlen($buffer); + } + $this->pos += \strlen($buffer); + return $buffer; + } + public function isReadable() + { + return \true; + } + public function isWritable() + { + return \false; + } + public function isSeekable() + { + return $this->seekable; + } + public function write($string) + { + return \false; + } + public function getMetadata($key = null) + { + return $key ? null : []; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AsyncReadStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AsyncReadStream.php new file mode 100644 index 000000000..f9661df9b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AsyncReadStream.php @@ -0,0 +1,173 @@ +isReadable() || !$buffer->isWritable()) { + throw new \InvalidArgumentException('Buffer must be readable and writable'); + } + if (isset($config['size'])) { + $this->size = $config['size']; + } + static $callables = ['pump', 'drain']; + foreach ($callables as $check) { + if (isset($config[$check])) { + if (!\is_callable($config[$check])) { + throw new \InvalidArgumentException($check . ' must be callable'); + } + $this->{$check} = $config[$check]; + } + } + $this->hwm = $buffer->getMetadata('hwm'); + // Cannot drain when there's no high water mark. + if ($this->hwm === null) { + $this->drain = null; + } + $this->stream = $buffer; + } + /** + * Factory method used to create new async stream and an underlying buffer + * if no buffer is provided. + * + * This function accepts the same options as AsyncReadStream::__construct, + * but added the following key value pairs: + * + * - buffer: (StreamInterface) Buffer used to buffer data. If none is + * provided, a default buffer is created. + * - hwm: (int) High water mark to use if a buffer is created on your + * behalf. + * - max_buffer: (int) If provided, wraps the utilized buffer in a + * DroppingStream decorator to ensure that buffer does not exceed a given + * length. When exceeded, the stream will begin dropping data. Set the + * max_buffer to 0, to use a NullStream which does not store data. + * - write: (callable) A function that is invoked when data is written + * to the underlying buffer. The function accepts the buffer as the first + * argument, and the data being written as the second. The function MUST + * return the number of bytes that were written or false to let writers + * know to slow down. + * - drain: (callable) See constructor documentation. + * - pump: (callable) See constructor documentation. + * + * @param array $options Associative array of options. + * + * @return array Returns an array containing the buffer used to buffer + * data, followed by the ready to use AsyncReadStream object. + */ + public static function create(array $options = []) + { + $maxBuffer = isset($options['max_buffer']) ? $options['max_buffer'] : null; + if ($maxBuffer === 0) { + $buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\NullStream(); + } elseif (isset($options['buffer'])) { + $buffer = $options['buffer']; + } else { + $hwm = isset($options['hwm']) ? $options['hwm'] : 16384; + $buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\BufferStream($hwm); + } + if ($maxBuffer > 0) { + $buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\DroppingStream($buffer, $options['max_buffer']); + } + // Call the on_write callback if an on_write function was provided. + if (isset($options['write'])) { + $onWrite = $options['write']; + $buffer = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\FnStream::decorate($buffer, ['write' => function ($string) use($buffer, $onWrite) { + $result = $buffer->write($string); + $onWrite($buffer, $string); + return $result; + }]); + } + return [$buffer, new self($buffer, $options)]; + } + public function getSize() + { + return $this->size; + } + public function isWritable() + { + return \false; + } + public function write($string) + { + return \false; + } + public function read($length) + { + if (!$this->needsDrain && $this->drain) { + $this->needsDrain = $this->stream->getSize() >= $this->hwm; + } + $result = $this->stream->read($length); + // If we need to drain, then drain when the buffer is empty. + if ($this->needsDrain && $this->stream->getSize() === 0) { + $this->needsDrain = \false; + $drainFn = $this->drain; + $drainFn($this->stream); + } + $resultLen = \strlen($result); + // If a pump was provided, the buffer is still open, and not enough + // data was given, then block until the data is provided. + if ($this->pump && $resultLen < $length) { + $pumpFn = $this->pump; + $result .= $pumpFn($length - $resultLen); + } + return $result; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/BufferStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/BufferStream.php new file mode 100644 index 000000000..ec6dffa9d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/BufferStream.php @@ -0,0 +1,116 @@ +hwm = $hwm; + } + public function __toString() + { + return $this->getContents(); + } + public function getContents() + { + $buffer = $this->buffer; + $this->buffer = ''; + return $buffer; + } + public function close() + { + $this->buffer = ''; + } + public function detach() + { + $this->close(); + } + public function attach($stream) + { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException(); + } + public function getSize() + { + return \strlen($this->buffer); + } + public function isReadable() + { + return \true; + } + public function isWritable() + { + return \true; + } + public function isSeekable() + { + return \false; + } + public function seek($offset, $whence = \SEEK_SET) + { + return \false; + } + public function eof() + { + return \strlen($this->buffer) === 0; + } + public function tell() + { + return \false; + } + /** + * Reads data from the buffer. + */ + public function read($length) + { + $currentLength = \strlen($this->buffer); + if ($length >= $currentLength) { + // No need to slice the buffer because we don't have enough data. + $result = $this->buffer; + $this->buffer = ''; + } else { + // Slice up the result to provide a subset of the buffer. + $result = \substr($this->buffer, 0, $length); + $this->buffer = \substr($this->buffer, $length); + } + return $result; + } + /** + * Writes data to the buffer. + */ + public function write($string) + { + $this->buffer .= $string; + if (\strlen($this->buffer) >= $this->hwm) { + return \false; + } + return \strlen($string); + } + public function getMetadata($key = null) + { + if ($key == 'hwm') { + return $this->hwm; + } + return $key ? null : []; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/CachingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/CachingStream.php new file mode 100644 index 000000000..e2ea66613 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/CachingStream.php @@ -0,0 +1,97 @@ +remoteStream = $stream; + $this->stream = $target ?: new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream(\fopen('php://temp', 'r+')); + } + public function getSize() + { + return \max($this->stream->getSize(), $this->remoteStream->getSize()); + } + /** + * {@inheritdoc} + * @throws SeekException When seeking with SEEK_END or when seeking + * past the total size of the buffer stream + */ + public function seek($offset, $whence = \SEEK_SET) + { + if ($whence == \SEEK_SET) { + $byte = $offset; + } elseif ($whence == \SEEK_CUR) { + $byte = $offset + $this->tell(); + } else { + return \false; + } + // You cannot skip ahead past where you've read from the remote stream + if ($byte > $this->stream->getSize()) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\SeekException($this, $byte, \sprintf('Cannot seek to byte %d when the buffered stream only' . ' contains %d bytes', $byte, $this->stream->getSize())); + } + return $this->stream->seek($byte); + } + public function read($length) + { + // Perform a regular read on any previously read data from the buffer + $data = $this->stream->read($length); + $remaining = $length - \strlen($data); + // More data was requested so read from the remote stream + if ($remaining) { + // If data was written to the buffer in a position that would have + // been filled from the remote stream, then we must skip bytes on + // the remote stream to emulate overwriting bytes from that + // position. This mimics the behavior of other PHP stream wrappers. + $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes); + if ($this->skipReadBytes) { + $len = \strlen($remoteData); + $remoteData = \substr($remoteData, $this->skipReadBytes); + $this->skipReadBytes = \max(0, $this->skipReadBytes - $len); + } + $data .= $remoteData; + $this->stream->write($remoteData); + } + return $data; + } + public function write($string) + { + // When appending to the end of the currently read stream, you'll want + // to skip bytes from being read from the remote stream to emulate + // other stream wrappers. Basically replacing bytes of data of a fixed + // length. + $overflow = \strlen($string) + $this->tell() - $this->remoteStream->tell(); + if ($overflow > 0) { + $this->skipReadBytes += $overflow; + } + return $this->stream->write($string); + } + public function eof() + { + return $this->stream->eof() && $this->remoteStream->eof(); + } + /** + * Close both the remote stream and buffer stream + */ + public function close() + { + $this->remoteStream->close() && $this->stream->close(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/DroppingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/DroppingStream.php new file mode 100644 index 000000000..9152e5470 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/DroppingStream.php @@ -0,0 +1,36 @@ +stream = $stream; + $this->maxLength = $maxLength; + } + public function write($string) + { + $diff = $this->maxLength - $this->stream->getSize(); + // Begin returning false when the underlying stream is too large. + if ($diff <= 0) { + return \false; + } + // Write the stream or a subset of the stream if needed. + if (\strlen($string) < $diff) { + return $this->stream->write($string); + } + $this->stream->write(\substr($string, 0, $diff)); + return \false; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Exception/CannotAttachException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Exception/CannotAttachException.php new file mode 100644 index 000000000..c9410b13e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Exception/CannotAttachException.php @@ -0,0 +1,7 @@ +stream = $stream; + $msg = $msg ?: 'Could not seek the stream to position ' . $pos; + parent::__construct($msg); + } + /** + * @return StreamInterface + */ + public function getStream() + { + return $this->stream; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/FnStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/FnStream.php new file mode 100644 index 000000000..8e83afac9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/FnStream.php @@ -0,0 +1,123 @@ +methods = $methods; + // Create the functions on the class + foreach ($methods as $name => $fn) { + $this->{'_fn_' . $name} = $fn; + } + } + /** + * Lazily determine which methods are not implemented. + * @throws \BadMethodCallException + */ + public function __get($name) + { + throw new \BadMethodCallException(\str_replace('_fn_', '', $name) . '() is not implemented in the FnStream'); + } + /** + * The close method is called on the underlying stream only if possible. + */ + public function __destruct() + { + if (isset($this->_fn_close)) { + \call_user_func($this->_fn_close); + } + } + /** + * Adds custom functionality to an underlying stream by intercepting + * specific method calls. + * + * @param StreamInterface $stream Stream to decorate + * @param array $methods Hash of method name to a closure + * + * @return FnStream + */ + public static function decorate(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream, array $methods) + { + // If any of the required methods were not provided, then simply + // proxy to the decorated stream. + foreach (\array_diff(self::$slots, \array_keys($methods)) as $diff) { + $methods[$diff] = [$stream, $diff]; + } + return new self($methods); + } + public function __toString() + { + return \call_user_func($this->_fn___toString); + } + public function close() + { + return \call_user_func($this->_fn_close); + } + public function detach() + { + return \call_user_func($this->_fn_detach); + } + public function attach($stream) + { + return \call_user_func($this->_fn_attach, $stream); + } + public function getSize() + { + return \call_user_func($this->_fn_getSize); + } + public function tell() + { + return \call_user_func($this->_fn_tell); + } + public function eof() + { + return \call_user_func($this->_fn_eof); + } + public function isSeekable() + { + return \call_user_func($this->_fn_isSeekable); + } + public function seek($offset, $whence = \SEEK_SET) + { + return \call_user_func($this->_fn_seek, $offset, $whence); + } + public function isWritable() + { + return \call_user_func($this->_fn_isWritable); + } + public function write($string) + { + return \call_user_func($this->_fn_write, $string); + } + public function isReadable() + { + return \call_user_func($this->_fn_isReadable); + } + public function read($length) + { + return \call_user_func($this->_fn_read, $length); + } + public function getContents() + { + return \call_user_func($this->_fn_getContents); + } + public function getMetadata($key = null) + { + return \call_user_func($this->_fn_getMetadata, $key); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/GuzzleStreamWrapper.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/GuzzleStreamWrapper.php new file mode 100644 index 000000000..97271923a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/GuzzleStreamWrapper.php @@ -0,0 +1,80 @@ +isReadable()) { + $mode = $stream->isWritable() ? 'r+' : 'r'; + } elseif ($stream->isWritable()) { + $mode = 'w'; + } else { + throw new \InvalidArgumentException('The stream must be readable, ' . 'writable, or both.'); + } + return \fopen('guzzle://stream', $mode, null, \stream_context_create(['guzzle' => ['stream' => $stream]])); + } + /** + * Registers the stream wrapper if needed + */ + public static function register() + { + if (!\in_array('guzzle', \stream_get_wrappers())) { + \stream_wrapper_register('guzzle', __CLASS__); + } + } + public function stream_open($path, $mode, $options, &$opened_path) + { + $options = \stream_context_get_options($this->context); + if (!isset($options['guzzle']['stream'])) { + return \false; + } + $this->mode = $mode; + $this->stream = $options['guzzle']['stream']; + return \true; + } + public function stream_read($count) + { + return $this->stream->read($count); + } + public function stream_write($data) + { + return (int) $this->stream->write($data); + } + public function stream_tell() + { + return $this->stream->tell(); + } + public function stream_eof() + { + return $this->stream->eof(); + } + public function stream_seek($offset, $whence) + { + return $this->stream->seek($offset, $whence); + } + public function stream_stat() + { + static $modeMap = ['r' => 33060, 'r+' => 33206, 'w' => 33188]; + return ['dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ?: 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0]; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/InflateStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/InflateStream.php new file mode 100644 index 000000000..0c2347367 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/InflateStream.php @@ -0,0 +1,27 @@ +stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream($resource); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LazyOpenStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LazyOpenStream.php new file mode 100644 index 000000000..afcd4a428 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LazyOpenStream.php @@ -0,0 +1,34 @@ +filename = $filename; + $this->mode = $mode; + } + /** + * Creates the underlying stream lazily when required. + * + * @return StreamInterface + */ + protected function createStream() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::open($this->filename, $this->mode)); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LimitStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LimitStream.php new file mode 100644 index 000000000..1cbca8b9f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LimitStream.php @@ -0,0 +1,137 @@ +stream = $stream; + $this->setLimit($limit); + $this->setOffset($offset); + } + public function eof() + { + // Always return true if the underlying stream is EOF + if ($this->stream->eof()) { + return \true; + } + // No limit and the underlying stream is not at EOF + if ($this->limit == -1) { + return \false; + } + $tell = $this->stream->tell(); + if ($tell === \false) { + return \false; + } + return $tell >= $this->offset + $this->limit; + } + /** + * Returns the size of the limited subset of data + * {@inheritdoc} + */ + public function getSize() + { + if (null === ($length = $this->stream->getSize())) { + return null; + } elseif ($this->limit == -1) { + return $length - $this->offset; + } else { + return \min($this->limit, $length - $this->offset); + } + } + /** + * Allow for a bounded seek on the read limited stream + * {@inheritdoc} + */ + public function seek($offset, $whence = \SEEK_SET) + { + if ($whence !== \SEEK_SET || $offset < 0) { + return \false; + } + $offset += $this->offset; + if ($this->limit !== -1) { + if ($offset > $this->offset + $this->limit) { + $offset = $this->offset + $this->limit; + } + } + return $this->stream->seek($offset); + } + /** + * Give a relative tell() + * {@inheritdoc} + */ + public function tell() + { + return $this->stream->tell() - $this->offset; + } + /** + * Set the offset to start limiting from + * + * @param int $offset Offset to seek to and begin byte limiting from + * + * @return self + * @throws SeekException + */ + public function setOffset($offset) + { + $current = $this->stream->tell(); + if ($current !== $offset) { + // If the stream cannot seek to the offset position, then read to it + if (!$this->stream->seek($offset)) { + if ($current > $offset) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\SeekException($this, $offset); + } else { + $this->stream->read($offset - $current); + } + } + } + $this->offset = $offset; + return $this; + } + /** + * Set the limit of bytes that the decorator allows to be read from the + * stream. + * + * @param int $limit Number of bytes to allow to be read from the stream. + * Use -1 for no limit. + * @return self + */ + public function setLimit($limit) + { + $this->limit = $limit; + return $this; + } + public function read($length) + { + if ($this->limit == -1) { + return $this->stream->read($length); + } + // Check if the current position is less than the total allowed + // bytes + original offset + $remaining = $this->offset + $this->limit - $this->stream->tell(); + if ($remaining > 0) { + // Only return the amount of requested data, ensuring that the byte + // limit is not exceeded + return $this->stream->read(\min($remaining, $length)); + } else { + return \false; + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/MetadataStreamInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/MetadataStreamInterface.php new file mode 100644 index 000000000..e49fb90cd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/MetadataStreamInterface.php @@ -0,0 +1,14 @@ +stream->attach($stream); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/NullStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/NullStream.php new file mode 100644 index 000000000..f2cb19587 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/NullStream.php @@ -0,0 +1,69 @@ +source = $source; + $this->size = isset($options['size']) ? $options['size'] : null; + $this->metadata = isset($options['metadata']) ? $options['metadata'] : []; + $this->buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\BufferStream(); + } + public function __toString() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToString($this); + } + public function close() + { + $this->detach(); + } + public function detach() + { + $this->tellPos = \false; + $this->source = null; + } + public function attach($stream) + { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException(); + } + public function getSize() + { + return $this->size; + } + public function tell() + { + return $this->tellPos; + } + public function eof() + { + return !$this->source; + } + public function isSeekable() + { + return \false; + } + public function seek($offset, $whence = \SEEK_SET) + { + return \false; + } + public function isWritable() + { + return \false; + } + public function write($string) + { + return \false; + } + public function isReadable() + { + return \true; + } + public function read($length) + { + $data = $this->buffer->read($length); + $readLen = \strlen($data); + $this->tellPos += $readLen; + $remaining = $length - $readLen; + if ($remaining) { + $this->pump($remaining); + $data .= $this->buffer->read($remaining); + $this->tellPos += \strlen($data) - $readLen; + } + return $data; + } + public function getContents() + { + $result = ''; + while (!$this->eof()) { + $result .= $this->read(1000000); + } + return $result; + } + public function getMetadata($key = null) + { + if (!$key) { + return $this->metadata; + } + return isset($this->metadata[$key]) ? $this->metadata[$key] : null; + } + private function pump($length) + { + if ($this->source) { + do { + $data = \call_user_func($this->source, $length); + if ($data === \false || $data === null) { + $this->source = null; + return; + } + $this->buffer->write($data); + $length -= \strlen($data); + } while ($length > 0); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Stream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Stream.php new file mode 100644 index 000000000..13a966330 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Stream.php @@ -0,0 +1,203 @@ + ['r' => \true, 'w+' => \true, 'r+' => \true, 'x+' => \true, 'c+' => \true, 'rb' => \true, 'w+b' => \true, 'r+b' => \true, 'x+b' => \true, 'c+b' => \true, 'rt' => \true, 'w+t' => \true, 'r+t' => \true, 'x+t' => \true, 'c+t' => \true, 'a+' => \true], 'write' => ['w' => \true, 'w+' => \true, 'rw' => \true, 'r+' => \true, 'x+' => \true, 'c+' => \true, 'wb' => \true, 'w+b' => \true, 'r+b' => \true, 'x+b' => \true, 'c+b' => \true, 'w+t' => \true, 'r+t' => \true, 'x+t' => \true, 'c+t' => \true, 'a' => \true, 'a+' => \true]]; + /** + * Create a new stream based on the input type. + * + * This factory accepts the same associative array of options as described + * in the constructor. + * + * @param resource|string|StreamInterface $resource Entity body data + * @param array $options Additional options + * + * @return Stream + * @throws \InvalidArgumentException if the $resource arg is not valid. + */ + public static function factory($resource = '', array $options = []) + { + $type = \gettype($resource); + if ($type == 'string') { + $stream = \fopen('php://temp', 'r+'); + if ($resource !== '') { + \fwrite($stream, $resource); + \fseek($stream, 0); + } + return new self($stream, $options); + } + if ($type == 'resource') { + return new self($resource, $options); + } + if ($resource instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) { + return $resource; + } + if ($type == 'object' && \method_exists($resource, '__toString')) { + return self::factory((string) $resource, $options); + } + if (\is_callable($resource)) { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\PumpStream($resource, $options); + } + if ($resource instanceof \Iterator) { + return new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\PumpStream(function () use($resource) { + if (!$resource->valid()) { + return \false; + } + $result = $resource->current(); + $resource->next(); + return $result; + }, $options); + } + throw new \InvalidArgumentException('Invalid resource type: ' . $type); + } + /** + * This constructor accepts an associative array of options. + * + * - size: (int) If a read stream would otherwise have an indeterminate + * size, but the size is known due to foreknownledge, then you can + * provide that size, in bytes. + * - metadata: (array) Any additional metadata to return when the metadata + * of the stream is accessed. + * + * @param resource $stream Stream resource to wrap. + * @param array $options Associative array of options. + * + * @throws \InvalidArgumentException if the stream is not a stream resource + */ + public function __construct($stream, $options = []) + { + if (!\is_resource($stream)) { + throw new \InvalidArgumentException('Stream must be a resource'); + } + if (isset($options['size'])) { + $this->size = $options['size']; + } + $this->customMetadata = isset($options['metadata']) ? $options['metadata'] : []; + $this->attach($stream); + } + /** + * Closes the stream when the destructed + */ + public function __destruct() + { + $this->close(); + } + public function __toString() + { + if (!$this->stream) { + return ''; + } + $this->seek(0); + return (string) \stream_get_contents($this->stream); + } + public function getContents() + { + return $this->stream ? \stream_get_contents($this->stream) : ''; + } + public function close() + { + if (\is_resource($this->stream)) { + \fclose($this->stream); + } + $this->detach(); + } + public function detach() + { + $result = $this->stream; + $this->stream = $this->size = $this->uri = null; + $this->readable = $this->writable = $this->seekable = \false; + return $result; + } + public function attach($stream) + { + $this->stream = $stream; + $meta = \stream_get_meta_data($this->stream); + $this->seekable = $meta['seekable']; + $this->readable = isset(self::$readWriteHash['read'][$meta['mode']]); + $this->writable = isset(self::$readWriteHash['write'][$meta['mode']]); + $this->uri = $this->getMetadata('uri'); + } + public function getSize() + { + if ($this->size !== null) { + return $this->size; + } + if (!$this->stream) { + return null; + } + // Clear the stat cache if the stream has a URI + if ($this->uri) { + \clearstatcache(\true, $this->uri); + } + $stats = \fstat($this->stream); + if (isset($stats['size'])) { + $this->size = $stats['size']; + return $this->size; + } + return null; + } + public function isReadable() + { + return $this->readable; + } + public function isWritable() + { + return $this->writable; + } + public function isSeekable() + { + return $this->seekable; + } + public function eof() + { + return !$this->stream || \feof($this->stream); + } + public function tell() + { + return $this->stream ? \ftell($this->stream) : \false; + } + public function setSize($size) + { + $this->size = $size; + return $this; + } + public function seek($offset, $whence = \SEEK_SET) + { + return $this->seekable ? \fseek($this->stream, $offset, $whence) === 0 : \false; + } + public function read($length) + { + return $this->readable ? \fread($this->stream, $length) : \false; + } + public function write($string) + { + // We can't know the size after writing anything + $this->size = null; + return $this->writable ? \fwrite($this->stream, $string) : \false; + } + public function getMetadata($key = null) + { + if (!$this->stream) { + return $key ? null : []; + } elseif (!$key) { + return $this->customMetadata + \stream_get_meta_data($this->stream); + } elseif (isset($this->customMetadata[$key])) { + return $this->customMetadata[$key]; + } + $meta = \stream_get_meta_data($this->stream); + return isset($meta[$key]) ? $meta[$key] : null; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamDecoratorTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamDecoratorTrait.php new file mode 100644 index 000000000..0c43b2e65 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamDecoratorTrait.php @@ -0,0 +1,122 @@ +stream = $stream; + } + /** + * Magic method used to create a new stream if streams are not added in + * the constructor of a decorator (e.g., LazyOpenStream). + */ + public function __get($name) + { + if ($name == 'stream') { + $this->stream = $this->createStream(); + return $this->stream; + } + throw new \UnexpectedValueException("{$name} not found on class"); + } + public function __toString() + { + try { + $this->seek(0); + return $this->getContents(); + } catch (\Exception $e) { + // Really, PHP? https://bugs.php.net/bug.php?id=53648 + \trigger_error('StreamDecorator::__toString exception: ' . (string) $e, \E_USER_ERROR); + return ''; + } + } + public function getContents() + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToString($this); + } + /** + * Allow decorators to implement custom methods + * + * @param string $method Missing method name + * @param array $args Method arguments + * + * @return mixed + */ + public function __call($method, array $args) + { + $result = \call_user_func_array(array($this->stream, $method), $args); + // Always return the wrapped object if the result is a return $this + return $result === $this->stream ? $this : $result; + } + public function close() + { + $this->stream->close(); + } + public function getMetadata($key = null) + { + return $this->stream->getMetadata($key); + } + public function detach() + { + return $this->stream->detach(); + } + public function attach($stream) + { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException(); + } + public function getSize() + { + return $this->stream->getSize(); + } + public function eof() + { + return $this->stream->eof(); + } + public function tell() + { + return $this->stream->tell(); + } + public function isReadable() + { + return $this->stream->isReadable(); + } + public function isWritable() + { + return $this->stream->isWritable(); + } + public function isSeekable() + { + return $this->stream->isSeekable(); + } + public function seek($offset, $whence = \SEEK_SET) + { + return $this->stream->seek($offset, $whence); + } + public function read($length) + { + return $this->stream->read($length); + } + public function write($string) + { + return $this->stream->write($string); + } + /** + * Implement in subclasses to dynamically create streams when requested. + * + * @return StreamInterface + * @throws \BadMethodCallException + */ + protected function createStream() + { + throw new \BadMethodCallException('createStream() not implemented in ' . \get_class($this)); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamInterface.php new file mode 100644 index 000000000..0fd5bb718 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamInterface.php @@ -0,0 +1,146 @@ +eof()) { + $buf = $stream->read(1048576); + if ($buf === \false) { + break; + } + $buffer .= $buf; + } + return $buffer; + } + $len = 0; + while (!$stream->eof() && $len < $maxLen) { + $buf = $stream->read($maxLen - $len); + if ($buf === \false) { + break; + } + $buffer .= $buf; + $len = \strlen($buffer); + } + return $buffer; + } + /** + * Copy the contents of a stream into another stream until the given number + * of bytes have been read. + * + * @param StreamInterface $source Stream to read from + * @param StreamInterface $dest Stream to write to + * @param int $maxLen Maximum number of bytes to read. Pass -1 + * to read the entire stream. + */ + public static function copyToStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $source, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $dest, $maxLen = -1) + { + if ($maxLen === -1) { + while (!$source->eof()) { + if (!$dest->write($source->read(1048576))) { + break; + } + } + return; + } + $bytes = 0; + while (!$source->eof()) { + $buf = $source->read($maxLen - $bytes); + if (!($len = \strlen($buf))) { + break; + } + $bytes += $len; + $dest->write($buf); + if ($bytes == $maxLen) { + break; + } + } + } + /** + * Calculate a hash of a Stream + * + * @param StreamInterface $stream Stream to calculate the hash for + * @param string $algo Hash algorithm (e.g. md5, crc32, etc) + * @param bool $rawOutput Whether or not to use raw output + * + * @return string Returns the hash of the stream + * @throws SeekException + */ + public static function hash(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream, $algo, $rawOutput = \false) + { + $pos = $stream->tell(); + if ($pos > 0 && !$stream->seek(0)) { + throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\SeekException($stream); + } + $ctx = \hash_init($algo); + while (!$stream->eof()) { + \hash_update($ctx, $stream->read(1048576)); + } + $out = \hash_final($ctx, (bool) $rawOutput); + $stream->seek($pos); + return $out; + } + /** + * Read a line from the stream up to the maximum allowed buffer length + * + * @param StreamInterface $stream Stream to read from + * @param int $maxLength Maximum buffer length + * + * @return string|bool + */ + public static function readline(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream, $maxLength = null) + { + $buffer = ''; + $size = 0; + while (!$stream->eof()) { + if (\false === ($byte = $stream->read(1))) { + return $buffer; + } + $buffer .= $byte; + // Break when a new line is found or the max length - 1 is reached + if ($byte == \PHP_EOL || ++$size == $maxLength - 1) { + break; + } + } + return $buffer; + } + /** + * Alias of GuzzleHttp\Stream\Stream::factory. + * + * @param mixed $resource Resource to create + * @param array $options Associative array of stream options defined in + * {@see \GuzzleHttp\Stream\Stream::__construct} + * + * @return StreamInterface + * + * @see GuzzleHttp\Stream\Stream::factory + * @see GuzzleHttp\Stream\Stream::__construct + */ + public static function create($resource, array $options = []) + { + return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($resource, $options); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ErrorHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ErrorHandler.php new file mode 100644 index 000000000..797340b6b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ErrorHandler.php @@ -0,0 +1,190 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog; + +use Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface; +use Google\Site_Kit_Dependencies\Psr\Log\LogLevel; +use Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler; +/** + * Monolog error handler + * + * A facility to enable logging of runtime errors, exceptions and fatal errors. + * + * Quick setup: ErrorHandler::register($logger); + * + * @author Jordi Boggiano + */ +class ErrorHandler +{ + private $logger; + private $previousExceptionHandler; + private $uncaughtExceptionLevel; + private $previousErrorHandler; + private $errorLevelMap; + private $handleOnlyReportedErrors; + private $hasFatalErrorHandler; + private $fatalLevel; + private $reservedMemory; + private $lastFatalTrace; + private static $fatalErrors = array(\E_ERROR, \E_PARSE, \E_CORE_ERROR, \E_COMPILE_ERROR, \E_USER_ERROR); + public function __construct(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger) + { + $this->logger = $logger; + } + /** + * Registers a new ErrorHandler for a given Logger + * + * By default it will handle errors, exceptions and fatal errors + * + * @param LoggerInterface $logger + * @param array|false $errorLevelMap an array of E_* constant to LogLevel::* constant mapping, or false to disable error handling + * @param int|false $exceptionLevel a LogLevel::* constant, or false to disable exception handling + * @param int|false $fatalLevel a LogLevel::* constant, or false to disable fatal error handling + * @return ErrorHandler + */ + public static function register(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger, $errorLevelMap = array(), $exceptionLevel = null, $fatalLevel = null) + { + //Forces the autoloader to run for LogLevel. Fixes an autoload issue at compile-time on PHP5.3. See https://github.com/Seldaek/monolog/pull/929 + \class_exists('Google\\Site_Kit_Dependencies\\Psr\\Log\\LogLevel', \true); + /** @phpstan-ignore-next-line */ + $handler = new static($logger); + if ($errorLevelMap !== \false) { + $handler->registerErrorHandler($errorLevelMap); + } + if ($exceptionLevel !== \false) { + $handler->registerExceptionHandler($exceptionLevel); + } + if ($fatalLevel !== \false) { + $handler->registerFatalHandler($fatalLevel); + } + return $handler; + } + public function registerExceptionHandler($level = null, $callPrevious = \true) + { + $prev = \set_exception_handler(array($this, 'handleException')); + $this->uncaughtExceptionLevel = $level; + if ($callPrevious && $prev) { + $this->previousExceptionHandler = $prev; + } + } + public function registerErrorHandler(array $levelMap = array(), $callPrevious = \true, $errorTypes = -1, $handleOnlyReportedErrors = \true) + { + $prev = \set_error_handler(array($this, 'handleError'), $errorTypes); + $this->errorLevelMap = \array_replace($this->defaultErrorLevelMap(), $levelMap); + if ($callPrevious) { + $this->previousErrorHandler = $prev ?: \true; + } + $this->handleOnlyReportedErrors = $handleOnlyReportedErrors; + } + public function registerFatalHandler($level = null, $reservedMemorySize = 20) + { + \register_shutdown_function(array($this, 'handleFatalError')); + $this->reservedMemory = \str_repeat(' ', 1024 * $reservedMemorySize); + $this->fatalLevel = $level; + $this->hasFatalErrorHandler = \true; + } + protected function defaultErrorLevelMap() + { + return array(\E_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, \E_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_PARSE => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT, \E_NOTICE => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_CORE_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, \E_CORE_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_COMPILE_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT, \E_COMPILE_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_USER_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR, \E_USER_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_USER_NOTICE => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_STRICT => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_RECOVERABLE_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR, \E_DEPRECATED => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_USER_DEPRECATED => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE); + } + /** + * @private + */ + public function handleException($e) + { + $this->logger->log($this->uncaughtExceptionLevel === null ? \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR : $this->uncaughtExceptionLevel, \sprintf('Uncaught Exception %s: "%s" at %s line %s', \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e), $e->getMessage(), $e->getFile(), $e->getLine()), array('exception' => $e)); + if ($this->previousExceptionHandler) { + \call_user_func($this->previousExceptionHandler, $e); + } + exit(255); + } + /** + * @private + */ + public function handleError($code, $message, $file = '', $line = 0, $context = array()) + { + if ($this->handleOnlyReportedErrors && !(\error_reporting() & $code)) { + return; + } + // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries + if (!$this->hasFatalErrorHandler || !\in_array($code, self::$fatalErrors, \true)) { + $level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL; + $this->logger->log($level, self::codeToString($code) . ': ' . $message, array('code' => $code, 'message' => $message, 'file' => $file, 'line' => $line)); + } else { + // http://php.net/manual/en/function.debug-backtrace.php + // As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added. + // Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'. + $trace = \debug_backtrace(\PHP_VERSION_ID < 50306 ? 2 : \DEBUG_BACKTRACE_IGNORE_ARGS); + \array_shift($trace); + // Exclude handleError from trace + $this->lastFatalTrace = $trace; + } + if ($this->previousErrorHandler === \true) { + return \false; + } elseif ($this->previousErrorHandler) { + return \call_user_func($this->previousErrorHandler, $code, $message, $file, $line, $context); + } + } + /** + * @private + */ + public function handleFatalError() + { + $this->reservedMemory = null; + $lastError = \error_get_last(); + if ($lastError && \in_array($lastError['type'], self::$fatalErrors, \true)) { + $this->logger->log($this->fatalLevel === null ? \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT : $this->fatalLevel, 'Fatal Error (' . self::codeToString($lastError['type']) . '): ' . $lastError['message'], array('code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $this->lastFatalTrace)); + if ($this->logger instanceof \Google\Site_Kit_Dependencies\Monolog\Logger) { + foreach ($this->logger->getHandlers() as $handler) { + if ($handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler) { + $handler->close(); + } + } + } + } + } + private static function codeToString($code) + { + switch ($code) { + case \E_ERROR: + return 'E_ERROR'; + case \E_WARNING: + return 'E_WARNING'; + case \E_PARSE: + return 'E_PARSE'; + case \E_NOTICE: + return 'E_NOTICE'; + case \E_CORE_ERROR: + return 'E_CORE_ERROR'; + case \E_CORE_WARNING: + return 'E_CORE_WARNING'; + case \E_COMPILE_ERROR: + return 'E_COMPILE_ERROR'; + case \E_COMPILE_WARNING: + return 'E_COMPILE_WARNING'; + case \E_USER_ERROR: + return 'E_USER_ERROR'; + case \E_USER_WARNING: + return 'E_USER_WARNING'; + case \E_USER_NOTICE: + return 'E_USER_NOTICE'; + case \E_STRICT: + return 'E_STRICT'; + case \E_RECOVERABLE_ERROR: + return 'E_RECOVERABLE_ERROR'; + case \E_DEPRECATED: + return 'E_DEPRECATED'; + case \E_USER_DEPRECATED: + return 'E_USER_DEPRECATED'; + } + return 'Unknown PHP error'; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php new file mode 100644 index 000000000..5114e2ed5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Formats a log message according to the ChromePHP array format + * + * @author Christophe Coevoet + */ +class ChromePHPFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface +{ + /** + * Translates Monolog log levels to Wildfire levels. + */ + private $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => 'log', \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => 'info', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => 'info', \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => 'warn', \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => 'error', \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => 'error', \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => 'error', \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => 'error'); + /** + * {@inheritdoc} + */ + public function format(array $record) + { + // Retrieve the line and file if set and remove them from the formatted extra + $backtrace = 'unknown'; + if (isset($record['extra']['file'], $record['extra']['line'])) { + $backtrace = $record['extra']['file'] . ' : ' . $record['extra']['line']; + unset($record['extra']['file'], $record['extra']['line']); + } + $message = array('message' => $record['message']); + if ($record['context']) { + $message['context'] = $record['context']; + } + if ($record['extra']) { + $message['extra'] = $record['extra']; + } + if (\count($message) === 1) { + $message = \reset($message); + } + return array($record['channel'], $message, $backtrace, $this->logLevels[$record['level']]); + } + public function formatBatch(array $records) + { + $formatted = array(); + foreach ($records as $record) { + $formatted[] = $this->format($record); + } + return $formatted; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php new file mode 100644 index 000000000..23f583df6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Elastica\Document; +/** + * Format a log message into an Elastica Document + * + * @author Jelle Vink + */ +class ElasticaFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + /** + * @var string Elastic search index name + */ + protected $index; + /** + * @var string Elastic search document type + */ + protected $type; + /** + * @param string $index Elastic Search index name + * @param string $type Elastic Search document type + */ + public function __construct($index, $type) + { + // elasticsearch requires a ISO 8601 format date with optional millisecond precision. + parent::__construct('Y-m-d\\TH:i:s.uP'); + $this->index = $index; + $this->type = $type; + } + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $record = parent::format($record); + return $this->getDocument($record); + } + /** + * Getter index + * @return string + */ + public function getIndex() + { + return $this->index; + } + /** + * Getter type + * @return string + */ + public function getType() + { + return $this->type; + } + /** + * Convert a log message into an Elastica Document + * + * @param array $record Log message + * @return Document + */ + protected function getDocument($record) + { + $document = new \Google\Site_Kit_Dependencies\Elastica\Document(); + $document->setData($record); + $document->setType($this->type); + $document->setIndex($this->index); + return $document; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php new file mode 100644 index 000000000..70ea43fdd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +/** + * formats the record to be used in the FlowdockHandler + * + * @author Dominik Liebler + */ +class FlowdockFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface +{ + /** + * @var string + */ + private $source; + /** + * @var string + */ + private $sourceEmail; + /** + * @param string $source + * @param string $sourceEmail + */ + public function __construct($source, $sourceEmail) + { + $this->source = $source; + $this->sourceEmail = $sourceEmail; + } + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $tags = array('#logs', '#' . \strtolower($record['level_name']), '#' . $record['channel']); + foreach ($record['extra'] as $value) { + $tags[] = '#' . $value; + } + $subject = \sprintf('in %s: %s - %s', $this->source, $record['level_name'], $this->getShortMessage($record['message'])); + $record['flowdock'] = array('source' => $this->source, 'from_address' => $this->sourceEmail, 'subject' => $subject, 'content' => $record['message'], 'tags' => $tags, 'project' => $this->source); + return $record; + } + /** + * {@inheritdoc} + */ + public function formatBatch(array $records) + { + $formatted = array(); + foreach ($records as $record) { + $formatted[] = $this->format($record); + } + return $formatted; + } + /** + * @param string $message + * + * @return string + */ + public function getShortMessage($message) + { + static $hasMbString; + if (null === $hasMbString) { + $hasMbString = \function_exists('mb_strlen'); + } + $maxLength = 45; + if ($hasMbString) { + if (\mb_strlen($message, 'UTF-8') > $maxLength) { + $message = \mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...'; + } + } else { + if (\strlen($message) > $maxLength) { + $message = \substr($message, 0, $maxLength - 4) . ' ...'; + } + } + return $message; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php new file mode 100644 index 000000000..857a35a5e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Class FluentdFormatter + * + * Serializes a log message to Fluentd unix socket protocol + * + * Fluentd config: + * + * + * type unix + * path /var/run/td-agent/td-agent.sock + * + * + * Monolog setup: + * + * $logger = new Monolog\Logger('fluent.tag'); + * $fluentHandler = new Monolog\Handler\SocketHandler('unix:///var/run/td-agent/td-agent.sock'); + * $fluentHandler->setFormatter(new Monolog\Formatter\FluentdFormatter()); + * $logger->pushHandler($fluentHandler); + * + * @author Andrius Putna + */ +class FluentdFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface +{ + /** + * @var bool $levelTag should message level be a part of the fluentd tag + */ + protected $levelTag = \false; + public function __construct($levelTag = \false) + { + if (!\function_exists('json_encode')) { + throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s FluentdUnixFormatter'); + } + $this->levelTag = (bool) $levelTag; + } + public function isUsingLevelsInTag() + { + return $this->levelTag; + } + public function format(array $record) + { + $tag = $record['channel']; + if ($this->levelTag) { + $tag .= '.' . \strtolower($record['level_name']); + } + $message = array('message' => $record['message'], 'context' => $record['context'], 'extra' => $record['extra']); + if (!$this->levelTag) { + $message['level'] = $record['level']; + $message['level_name'] = $record['level_name']; + } + return \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode(array($tag, $record['datetime']->getTimestamp(), $message)); + } + public function formatBatch(array $records) + { + $message = ''; + foreach ($records as $record) { + $message .= $this->format($record); + } + return $message; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php new file mode 100644 index 000000000..418b2bada --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +/** + * Interface for formatters + * + * @author Jordi Boggiano + */ +interface FormatterInterface +{ + /** + * Formats a log record. + * + * @param array $record A record to format + * @return mixed The formatted record + */ + public function format(array $record); + /** + * Formats a set of log records. + * + * @param array $records A set of records to format + * @return mixed The formatted set of records + */ + public function formatBatch(array $records); +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php new file mode 100644 index 000000000..c982622de --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php @@ -0,0 +1,105 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Gelf\Message; +/** + * Serializes a log message to GELF + * @see http://www.graylog2.org/about/gelf + * + * @author Matt Lehner + */ +class GelfMessageFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + const DEFAULT_MAX_LENGTH = 32766; + /** + * @var string the name of the system for the Gelf log message + */ + protected $systemName; + /** + * @var string a prefix for 'extra' fields from the Monolog record (optional) + */ + protected $extraPrefix; + /** + * @var string a prefix for 'context' fields from the Monolog record (optional) + */ + protected $contextPrefix; + /** + * @var int max length per field + */ + protected $maxLength; + /** + * Translates Monolog log levels to Graylog2 log priorities. + */ + private $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => 7, \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => 6, \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => 5, \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => 4, \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => 3, \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => 2, \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => 1, \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => 0); + public function __construct($systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $maxLength = null) + { + parent::__construct('U.u'); + $this->systemName = $systemName ?: \gethostname(); + $this->extraPrefix = $extraPrefix; + $this->contextPrefix = $contextPrefix; + $this->maxLength = \is_null($maxLength) ? self::DEFAULT_MAX_LENGTH : $maxLength; + } + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $record = parent::format($record); + if (!isset($record['datetime'], $record['message'], $record['level'])) { + throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, ' . \var_export($record, \true) . ' given'); + } + $message = new \Google\Site_Kit_Dependencies\Gelf\Message(); + $message->setTimestamp($record['datetime'])->setShortMessage((string) $record['message'])->setHost($this->systemName)->setLevel($this->logLevels[$record['level']]); + // message length + system name length + 200 for padding / metadata + $len = 200 + \strlen((string) $record['message']) + \strlen($this->systemName); + if ($len > $this->maxLength) { + $message->setShortMessage(\substr($record['message'], 0, $this->maxLength)); + } + if (isset($record['channel'])) { + $message->setFacility($record['channel']); + } + if (isset($record['extra']['line'])) { + $message->setLine($record['extra']['line']); + unset($record['extra']['line']); + } + if (isset($record['extra']['file'])) { + $message->setFile($record['extra']['file']); + unset($record['extra']['file']); + } + foreach ($record['extra'] as $key => $val) { + $val = \is_scalar($val) || null === $val ? $val : $this->toJson($val); + $len = \strlen($this->extraPrefix . $key . $val); + if ($len > $this->maxLength) { + $message->setAdditional($this->extraPrefix . $key, \substr($val, 0, $this->maxLength)); + break; + } + $message->setAdditional($this->extraPrefix . $key, $val); + } + foreach ($record['context'] as $key => $val) { + $val = \is_scalar($val) || null === $val ? $val : $this->toJson($val); + $len = \strlen($this->contextPrefix . $key . $val); + if ($len > $this->maxLength) { + $message->setAdditional($this->contextPrefix . $key, \substr($val, 0, $this->maxLength)); + break; + } + $message->setAdditional($this->contextPrefix . $key, $val); + } + if (null === $message->getFile() && isset($record['context']['exception']['file'])) { + if (\preg_match("/^(.+):([0-9]+)\$/", $record['context']['exception']['file'], $matches)) { + $message->setFile($matches[1]); + $message->setLine($matches[2]); + } + } + return $message; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php new file mode 100644 index 000000000..66db30bf8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php @@ -0,0 +1,119 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Formats incoming records into an HTML table + * + * This is especially useful for html email logging + * + * @author Tiago Brito + */ +class HtmlFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + /** + * Translates Monolog log levels to html color priorities. + */ + protected $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => '#cccccc', \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => '#468847', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => '#3a87ad', \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => '#c09853', \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => '#f0ad4e', \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => '#FF7708', \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => '#C12A19', \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => '#000000'); + /** + * @param string $dateFormat The format of the timestamp: one supported by DateTime::format + */ + public function __construct($dateFormat = null) + { + parent::__construct($dateFormat); + } + /** + * Creates an HTML table row + * + * @param string $th Row header content + * @param string $td Row standard cell content + * @param bool $escapeTd false if td content must not be html escaped + * @return string + */ + protected function addRow($th, $td = ' ', $escapeTd = \true) + { + $th = \htmlspecialchars($th, \ENT_NOQUOTES, 'UTF-8'); + if ($escapeTd) { + $td = '
' . \htmlspecialchars($td, \ENT_NOQUOTES, 'UTF-8') . '
'; + } + return "\n{$th}:\n" . $td . "\n"; + } + /** + * Create a HTML h1 tag + * + * @param string $title Text to be in the h1 + * @param int $level Error level + * @return string + */ + protected function addTitle($title, $level) + { + $title = \htmlspecialchars($title, \ENT_NOQUOTES, 'UTF-8'); + return '

' . $title . '

'; + } + /** + * Formats a log record. + * + * @param array $record A record to format + * @return mixed The formatted record + */ + public function format(array $record) + { + $output = $this->addTitle($record['level_name'], $record['level']); + $output .= ''; + $output .= $this->addRow('Message', (string) $record['message']); + $output .= $this->addRow('Time', $record['datetime']->format($this->dateFormat)); + $output .= $this->addRow('Channel', $record['channel']); + if ($record['context']) { + $embeddedTable = '
'; + foreach ($record['context'] as $key => $value) { + $embeddedTable .= $this->addRow($key, $this->convertToString($value)); + } + $embeddedTable .= '
'; + $output .= $this->addRow('Context', $embeddedTable, \false); + } + if ($record['extra']) { + $embeddedTable = ''; + foreach ($record['extra'] as $key => $value) { + $embeddedTable .= $this->addRow($key, $this->convertToString($value)); + } + $embeddedTable .= '
'; + $output .= $this->addRow('Extra', $embeddedTable, \false); + } + return $output . ''; + } + /** + * Formats a set of log records. + * + * @param array $records A set of records to format + * @return mixed The formatted set of records + */ + public function formatBatch(array $records) + { + $message = ''; + foreach ($records as $record) { + $message .= $this->format($record); + } + return $message; + } + protected function convertToString($data) + { + if (null === $data || \is_scalar($data)) { + return (string) $data; + } + $data = $this->normalize($data); + if (\version_compare(\PHP_VERSION, '5.4.0', '>=')) { + return \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($data, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE, \true); + } + return \str_replace('\\/', '/', \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($data, null, \true)); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php new file mode 100644 index 000000000..cc50e98dc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php @@ -0,0 +1,181 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Exception; +use Google\Site_Kit_Dependencies\Monolog\Utils; +use Throwable; +/** + * Encodes whatever record data is passed to it as json + * + * This can be useful to log to databases or remote APIs + * + * @author Jordi Boggiano + */ +class JsonFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + const BATCH_MODE_JSON = 1; + const BATCH_MODE_NEWLINES = 2; + protected $batchMode; + protected $appendNewline; + /** + * @var bool + */ + protected $includeStacktraces = \false; + /** + * @param int $batchMode + * @param bool $appendNewline + * @param int $maxDepth + */ + public function __construct($batchMode = self::BATCH_MODE_JSON, $appendNewline = \true, $maxDepth = 9) + { + parent::__construct(null, $maxDepth); + $this->batchMode = $batchMode; + $this->appendNewline = $appendNewline; + } + /** + * The batch mode option configures the formatting style for + * multiple records. By default, multiple records will be + * formatted as a JSON-encoded array. However, for + * compatibility with some API endpoints, alternative styles + * are available. + * + * @return int + */ + public function getBatchMode() + { + return $this->batchMode; + } + /** + * True if newlines are appended to every formatted record + * + * @return bool + */ + public function isAppendingNewlines() + { + return $this->appendNewline; + } + /** + * {@inheritdoc} + */ + public function format(array $record) + { + return $this->toJson($this->normalize($record), \true) . ($this->appendNewline ? "\n" : ''); + } + /** + * {@inheritdoc} + */ + public function formatBatch(array $records) + { + switch ($this->batchMode) { + case static::BATCH_MODE_NEWLINES: + return $this->formatBatchNewlines($records); + case static::BATCH_MODE_JSON: + default: + return $this->formatBatchJson($records); + } + } + /** + * @param bool $include + */ + public function includeStacktraces($include = \true) + { + $this->includeStacktraces = $include; + } + /** + * Return a JSON-encoded array of records. + * + * @param array $records + * @return string + */ + protected function formatBatchJson(array $records) + { + return $this->toJson($this->normalize($records), \true); + } + /** + * Use new lines to separate records instead of a + * JSON-encoded array. + * + * @param array $records + * @return string + */ + protected function formatBatchNewlines(array $records) + { + $instance = $this; + $oldNewline = $this->appendNewline; + $this->appendNewline = \false; + \array_walk($records, function (&$value, $key) use($instance) { + $value = $instance->format($value); + }); + $this->appendNewline = $oldNewline; + return \implode("\n", $records); + } + /** + * Normalizes given $data. + * + * @param mixed $data + * + * @return mixed + */ + protected function normalize($data, $depth = 0) + { + if ($depth > $this->maxDepth) { + return 'Over ' . $this->maxDepth . ' levels deep, aborting normalization'; + } + if (\is_array($data)) { + $normalized = array(); + $count = 1; + foreach ($data as $key => $value) { + if ($count++ > 1000) { + $normalized['...'] = 'Over 1000 items (' . \count($data) . ' total), aborting normalization'; + break; + } + $normalized[$key] = $this->normalize($value, $depth + 1); + } + return $normalized; + } + if ($data instanceof \Exception || $data instanceof \Throwable) { + return $this->normalizeException($data); + } + if (\is_resource($data)) { + return parent::normalize($data); + } + return $data; + } + /** + * Normalizes given exception with or without its own stack trace based on + * `includeStacktraces` property. + * + * @param Exception|Throwable $e + * + * @return array + */ + protected function normalizeException($e) + { + // TODO 2.0 only check for Throwable + if (!$e instanceof \Exception && !$e instanceof \Throwable) { + throw new \InvalidArgumentException('Exception/Throwable expected, got ' . \gettype($e) . ' / ' . \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e)); + } + $data = array('class' => \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e), 'message' => $e->getMessage(), 'code' => (int) $e->getCode(), 'file' => $e->getFile() . ':' . $e->getLine()); + if ($this->includeStacktraces) { + $trace = $e->getTrace(); + foreach ($trace as $frame) { + if (isset($frame['file'])) { + $data['trace'][] = $frame['file'] . ':' . $frame['line']; + } + } + } + if ($previous = $e->getPrevious()) { + $data['previous'] = $this->normalizeException($previous); + } + return $data; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LineFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LineFormatter.php new file mode 100644 index 000000000..31185a7f0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LineFormatter.php @@ -0,0 +1,150 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Formats incoming records into a one-line string + * + * This is especially useful for logging to files + * + * @author Jordi Boggiano + * @author Christophe Coevoet + */ +class LineFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; + protected $format; + protected $allowInlineLineBreaks; + protected $ignoreEmptyContextAndExtra; + protected $includeStacktraces; + /** + * @param string $format The format of the message + * @param string $dateFormat The format of the timestamp: one supported by DateTime::format + * @param bool $allowInlineLineBreaks Whether to allow inline line breaks in log entries + * @param bool $ignoreEmptyContextAndExtra + */ + public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = \false, $ignoreEmptyContextAndExtra = \false) + { + $this->format = $format ?: static::SIMPLE_FORMAT; + $this->allowInlineLineBreaks = $allowInlineLineBreaks; + $this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra; + parent::__construct($dateFormat); + } + public function includeStacktraces($include = \true) + { + $this->includeStacktraces = $include; + if ($this->includeStacktraces) { + $this->allowInlineLineBreaks = \true; + } + } + public function allowInlineLineBreaks($allow = \true) + { + $this->allowInlineLineBreaks = $allow; + } + public function ignoreEmptyContextAndExtra($ignore = \true) + { + $this->ignoreEmptyContextAndExtra = $ignore; + } + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $vars = parent::format($record); + $output = $this->format; + foreach ($vars['extra'] as $var => $val) { + if (\false !== \strpos($output, '%extra.' . $var . '%')) { + $output = \str_replace('%extra.' . $var . '%', $this->stringify($val), $output); + unset($vars['extra'][$var]); + } + } + foreach ($vars['context'] as $var => $val) { + if (\false !== \strpos($output, '%context.' . $var . '%')) { + $output = \str_replace('%context.' . $var . '%', $this->stringify($val), $output); + unset($vars['context'][$var]); + } + } + if ($this->ignoreEmptyContextAndExtra) { + if (empty($vars['context'])) { + unset($vars['context']); + $output = \str_replace('%context%', '', $output); + } + if (empty($vars['extra'])) { + unset($vars['extra']); + $output = \str_replace('%extra%', '', $output); + } + } + foreach ($vars as $var => $val) { + if (\false !== \strpos($output, '%' . $var . '%')) { + $output = \str_replace('%' . $var . '%', $this->stringify($val), $output); + } + } + // remove leftover %extra.xxx% and %context.xxx% if any + if (\false !== \strpos($output, '%')) { + $output = \preg_replace('/%(?:extra|context)\\..+?%/', '', $output); + } + return $output; + } + public function formatBatch(array $records) + { + $message = ''; + foreach ($records as $record) { + $message .= $this->format($record); + } + return $message; + } + public function stringify($value) + { + return $this->replaceNewlines($this->convertToString($value)); + } + protected function normalizeException($e) + { + // TODO 2.0 only check for Throwable + if (!$e instanceof \Exception && !$e instanceof \Throwable) { + throw new \InvalidArgumentException('Exception/Throwable expected, got ' . \gettype($e) . ' / ' . \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e)); + } + $previousText = ''; + if ($previous = $e->getPrevious()) { + do { + $previousText .= ', ' . \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($previous) . '(code: ' . $previous->getCode() . '): ' . $previous->getMessage() . ' at ' . $previous->getFile() . ':' . $previous->getLine(); + } while ($previous = $previous->getPrevious()); + } + $str = '[object] (' . \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e) . '(code: ' . $e->getCode() . '): ' . $e->getMessage() . ' at ' . $e->getFile() . ':' . $e->getLine() . $previousText . ')'; + if ($this->includeStacktraces) { + $str .= "\n[stacktrace]\n" . $e->getTraceAsString() . "\n"; + } + return $str; + } + protected function convertToString($data) + { + if (null === $data || \is_bool($data)) { + return \var_export($data, \true); + } + if (\is_scalar($data)) { + return (string) $data; + } + if (\version_compare(\PHP_VERSION, '5.4.0', '>=')) { + return $this->toJson($data, \true); + } + return \str_replace('\\/', '/', $this->toJson($data, \true)); + } + protected function replaceNewlines($str) + { + if ($this->allowInlineLineBreaks) { + if (0 === \strpos($str, '{')) { + return \str_replace(array('\\r', '\\n'), array("\r", "\n"), $str); + } + return $str; + } + return \str_replace(array("\r\n", "\r", "\n"), ' ', $str); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php new file mode 100644 index 000000000..0d1f0aae7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +/** + * Encodes message information into JSON in a format compatible with Loggly. + * + * @author Adam Pancutt + */ +class LogglyFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\JsonFormatter +{ + /** + * Overrides the default batch mode to new lines for compatibility with the + * Loggly bulk API. + * + * @param int $batchMode + */ + public function __construct($batchMode = self::BATCH_MODE_NEWLINES, $appendNewline = \false) + { + parent::__construct($batchMode, $appendNewline); + } + /** + * Appends the 'timestamp' parameter for indexing by Loggly. + * + * @see https://www.loggly.com/docs/automated-parsing/#json + * @see \Monolog\Formatter\JsonFormatter::format() + */ + public function format(array $record) + { + if (isset($record["datetime"]) && $record["datetime"] instanceof \DateTime) { + $record["timestamp"] = $record["datetime"]->format("Y-m-d\\TH:i:s.uO"); + // TODO 2.0 unset the 'datetime' parameter, retained for BC + } + return parent::format($record); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php new file mode 100644 index 000000000..5462f504e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php @@ -0,0 +1,143 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +/** + * Serializes a log message to Logstash Event Format + * + * @see http://logstash.net/ + * @see https://github.com/logstash/logstash/blob/master/lib/logstash/event.rb + * + * @author Tim Mower + */ +class LogstashFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + const V0 = 0; + const V1 = 1; + /** + * @var string the name of the system for the Logstash log message, used to fill the @source field + */ + protected $systemName; + /** + * @var string an application name for the Logstash log message, used to fill the @type field + */ + protected $applicationName; + /** + * @var string a prefix for 'extra' fields from the Monolog record (optional) + */ + protected $extraPrefix; + /** + * @var string a prefix for 'context' fields from the Monolog record (optional) + */ + protected $contextPrefix; + /** + * @var int logstash format version to use + */ + protected $version; + /** + * @param string $applicationName the application that sends the data, used as the "type" field of logstash + * @param string $systemName the system/machine name, used as the "source" field of logstash, defaults to the hostname of the machine + * @param string $extraPrefix prefix for extra keys inside logstash "fields" + * @param string $contextPrefix prefix for context keys inside logstash "fields", defaults to ctxt_ + * @param int $version the logstash format version to use, defaults to 0 + */ + public function __construct($applicationName, $systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $version = self::V0) + { + // logstash requires a ISO 8601 format date with optional millisecond precision. + parent::__construct('Y-m-d\\TH:i:s.uP'); + $this->systemName = $systemName ?: \gethostname(); + $this->applicationName = $applicationName; + $this->extraPrefix = $extraPrefix; + $this->contextPrefix = $contextPrefix; + $this->version = $version; + } + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $record = parent::format($record); + if ($this->version === self::V1) { + $message = $this->formatV1($record); + } else { + $message = $this->formatV0($record); + } + return $this->toJson($message) . "\n"; + } + protected function formatV0(array $record) + { + if (empty($record['datetime'])) { + $record['datetime'] = \gmdate('c'); + } + $message = array('@timestamp' => $record['datetime'], '@source' => $this->systemName, '@fields' => array()); + if (isset($record['message'])) { + $message['@message'] = $record['message']; + } + if (isset($record['channel'])) { + $message['@tags'] = array($record['channel']); + $message['@fields']['channel'] = $record['channel']; + } + if (isset($record['level'])) { + $message['@fields']['level'] = $record['level']; + } + if ($this->applicationName) { + $message['@type'] = $this->applicationName; + } + if (isset($record['extra']['server'])) { + $message['@source_host'] = $record['extra']['server']; + } + if (isset($record['extra']['url'])) { + $message['@source_path'] = $record['extra']['url']; + } + if (!empty($record['extra'])) { + foreach ($record['extra'] as $key => $val) { + $message['@fields'][$this->extraPrefix . $key] = $val; + } + } + if (!empty($record['context'])) { + foreach ($record['context'] as $key => $val) { + $message['@fields'][$this->contextPrefix . $key] = $val; + } + } + return $message; + } + protected function formatV1(array $record) + { + if (empty($record['datetime'])) { + $record['datetime'] = \gmdate('c'); + } + $message = array('@timestamp' => $record['datetime'], '@version' => 1, 'host' => $this->systemName); + if (isset($record['message'])) { + $message['message'] = $record['message']; + } + if (isset($record['channel'])) { + $message['type'] = $record['channel']; + $message['channel'] = $record['channel']; + } + if (isset($record['level_name'])) { + $message['level'] = $record['level_name']; + } + if ($this->applicationName) { + $message['type'] = $this->applicationName; + } + if (!empty($record['extra'])) { + foreach ($record['extra'] as $key => $val) { + $message[$this->extraPrefix . $key] = $val; + } + } + if (!empty($record['context'])) { + foreach ($record['context'] as $key => $val) { + $message[$this->contextPrefix . $key] = $val; + } + } + return $message; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php new file mode 100644 index 000000000..1d7e1a32b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Formats a record for use with the MongoDBHandler. + * + * @author Florian Plattner + */ +class MongoDBFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface +{ + private $exceptionTraceAsString; + private $maxNestingLevel; + /** + * @param int $maxNestingLevel 0 means infinite nesting, the $record itself is level 1, $record['context'] is 2 + * @param bool $exceptionTraceAsString set to false to log exception traces as a sub documents instead of strings + */ + public function __construct($maxNestingLevel = 3, $exceptionTraceAsString = \true) + { + $this->maxNestingLevel = \max($maxNestingLevel, 0); + $this->exceptionTraceAsString = (bool) $exceptionTraceAsString; + } + /** + * {@inheritDoc} + */ + public function format(array $record) + { + return $this->formatArray($record); + } + /** + * {@inheritDoc} + */ + public function formatBatch(array $records) + { + foreach ($records as $key => $record) { + $records[$key] = $this->format($record); + } + return $records; + } + protected function formatArray(array $record, $nestingLevel = 0) + { + if ($this->maxNestingLevel == 0 || $nestingLevel <= $this->maxNestingLevel) { + foreach ($record as $name => $value) { + if ($value instanceof \DateTime) { + $record[$name] = $this->formatDate($value, $nestingLevel + 1); + } elseif ($value instanceof \Exception) { + $record[$name] = $this->formatException($value, $nestingLevel + 1); + } elseif (\is_array($value)) { + $record[$name] = $this->formatArray($value, $nestingLevel + 1); + } elseif (\is_object($value)) { + $record[$name] = $this->formatObject($value, $nestingLevel + 1); + } + } + } else { + $record = '[...]'; + } + return $record; + } + protected function formatObject($value, $nestingLevel) + { + $objectVars = \get_object_vars($value); + $objectVars['class'] = \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($value); + return $this->formatArray($objectVars, $nestingLevel); + } + protected function formatException(\Exception $exception, $nestingLevel) + { + $formattedException = array('class' => \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($exception), 'message' => $exception->getMessage(), 'code' => (int) $exception->getCode(), 'file' => $exception->getFile() . ':' . $exception->getLine()); + if ($this->exceptionTraceAsString === \true) { + $formattedException['trace'] = $exception->getTraceAsString(); + } else { + $formattedException['trace'] = $exception->getTrace(); + } + return $this->formatArray($formattedException, $nestingLevel); + } + protected function formatDate(\DateTime $value, $nestingLevel) + { + return new \MongoDate($value->getTimestamp()); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php new file mode 100644 index 000000000..c1f551bcf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php @@ -0,0 +1,163 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Exception; +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Normalizes incoming records to remove objects/resources so it's easier to dump to various targets + * + * @author Jordi Boggiano + */ +class NormalizerFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface +{ + const SIMPLE_DATE = "Y-m-d H:i:s"; + protected $dateFormat; + protected $maxDepth; + /** + * @param string $dateFormat The format of the timestamp: one supported by DateTime::format + * @param int $maxDepth + */ + public function __construct($dateFormat = null, $maxDepth = 9) + { + $this->dateFormat = $dateFormat ?: static::SIMPLE_DATE; + $this->maxDepth = $maxDepth; + if (!\function_exists('json_encode')) { + throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter'); + } + } + /** + * {@inheritdoc} + */ + public function format(array $record) + { + return $this->normalize($record); + } + /** + * {@inheritdoc} + */ + public function formatBatch(array $records) + { + foreach ($records as $key => $record) { + $records[$key] = $this->format($record); + } + return $records; + } + /** + * @return int + */ + public function getMaxDepth() + { + return $this->maxDepth; + } + /** + * @param int $maxDepth + */ + public function setMaxDepth($maxDepth) + { + $this->maxDepth = $maxDepth; + } + protected function normalize($data, $depth = 0) + { + if ($depth > $this->maxDepth) { + return 'Over ' . $this->maxDepth . ' levels deep, aborting normalization'; + } + if (null === $data || \is_scalar($data)) { + if (\is_float($data)) { + if (\is_infinite($data)) { + return ($data > 0 ? '' : '-') . 'INF'; + } + if (\is_nan($data)) { + return 'NaN'; + } + } + return $data; + } + if (\is_array($data)) { + $normalized = array(); + $count = 1; + foreach ($data as $key => $value) { + if ($count++ > 1000) { + $normalized['...'] = 'Over 1000 items (' . \count($data) . ' total), aborting normalization'; + break; + } + $normalized[$key] = $this->normalize($value, $depth + 1); + } + return $normalized; + } + if ($data instanceof \DateTime) { + return $data->format($this->dateFormat); + } + if (\is_object($data)) { + // TODO 2.0 only check for Throwable + if ($data instanceof \Exception || \PHP_VERSION_ID > 70000 && $data instanceof \Throwable) { + return $this->normalizeException($data); + } + // non-serializable objects that implement __toString stringified + if (\method_exists($data, '__toString') && !$data instanceof \JsonSerializable) { + $value = $data->__toString(); + } else { + // the rest is json-serialized in some way + $value = $this->toJson($data, \true); + } + return \sprintf("[object] (%s: %s)", \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($data), $value); + } + if (\is_resource($data)) { + return \sprintf('[resource] (%s)', \get_resource_type($data)); + } + return '[unknown(' . \gettype($data) . ')]'; + } + protected function normalizeException($e) + { + // TODO 2.0 only check for Throwable + if (!$e instanceof \Exception && !$e instanceof \Throwable) { + throw new \InvalidArgumentException('Exception/Throwable expected, got ' . \gettype($e) . ' / ' . \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e)); + } + $data = array('class' => \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e), 'message' => $e->getMessage(), 'code' => (int) $e->getCode(), 'file' => $e->getFile() . ':' . $e->getLine()); + if ($e instanceof \SoapFault) { + if (isset($e->faultcode)) { + $data['faultcode'] = $e->faultcode; + } + if (isset($e->faultactor)) { + $data['faultactor'] = $e->faultactor; + } + if (isset($e->detail)) { + if (\is_string($e->detail)) { + $data['detail'] = $e->detail; + } elseif (\is_object($e->detail) || \is_array($e->detail)) { + $data['detail'] = $this->toJson($e->detail, \true); + } + } + } + $trace = $e->getTrace(); + foreach ($trace as $frame) { + if (isset($frame['file'])) { + $data['trace'][] = $frame['file'] . ':' . $frame['line']; + } + } + if ($previous = $e->getPrevious()) { + $data['previous'] = $this->normalizeException($previous); + } + return $data; + } + /** + * Return the JSON representation of a value + * + * @param mixed $data + * @param bool $ignoreErrors + * @throws \RuntimeException if encoding fails and errors are not ignored + * @return string + */ + protected function toJson($data, $ignoreErrors = \false) + { + return \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($data, null, $ignoreErrors); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php new file mode 100644 index 000000000..85c2ff8d3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +/** + * Formats data into an associative array of scalar values. + * Objects and arrays will be JSON encoded. + * + * @author Andrew Lawson + */ +class ScalarFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + /** + * {@inheritdoc} + */ + public function format(array $record) + { + foreach ($record as $key => $value) { + $record[$key] = $this->normalizeValue($value); + } + return $record; + } + /** + * @param mixed $value + * @return mixed + */ + protected function normalizeValue($value) + { + $normalized = $this->normalize($value); + if (\is_array($normalized) || \is_object($normalized)) { + return $this->toJson($normalized, \true); + } + return $normalized; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php new file mode 100644 index 000000000..231d89554 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php @@ -0,0 +1,81 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Formatter; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Serializes a log message according to Wildfire's header requirements + * + * @author Eric Clemmons (@ericclemmons) + * @author Christophe Coevoet + * @author Kirill chEbba Chebunin + */ +class WildfireFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter +{ + const TABLE = 'table'; + /** + * Translates Monolog log levels to Wildfire levels. + */ + private $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => 'LOG', \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => 'INFO', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => 'INFO', \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => 'WARN', \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => 'ERROR', \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => 'ERROR', \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => 'ERROR', \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => 'ERROR'); + /** + * {@inheritdoc} + */ + public function format(array $record) + { + // Retrieve the line and file if set and remove them from the formatted extra + $file = $line = ''; + if (isset($record['extra']['file'])) { + $file = $record['extra']['file']; + unset($record['extra']['file']); + } + if (isset($record['extra']['line'])) { + $line = $record['extra']['line']; + unset($record['extra']['line']); + } + $record = $this->normalize($record); + $message = array('message' => $record['message']); + $handleError = \false; + if ($record['context']) { + $message['context'] = $record['context']; + $handleError = \true; + } + if ($record['extra']) { + $message['extra'] = $record['extra']; + $handleError = \true; + } + if (\count($message) === 1) { + $message = \reset($message); + } + if (isset($record['context'][self::TABLE])) { + $type = 'TABLE'; + $label = $record['channel'] . ': ' . $record['message']; + $message = $record['context'][self::TABLE]; + } else { + $type = $this->logLevels[$record['level']]; + $label = $record['channel']; + } + // Create JSON object describing the appearance of the message in the console + $json = $this->toJson(array(array('Type' => $type, 'File' => $file, 'Line' => $line, 'Label' => $label), $message), $handleError); + // The message itself is a serialization of the above JSON object + it's length + return \sprintf('%s|%s|', \strlen($json), $json); + } + public function formatBatch(array $records) + { + throw new \BadMethodCallException('Batch formatting does not make sense for the WildfireFormatter'); + } + protected function normalize($data, $depth = 0) + { + if (\is_object($data) && !$data instanceof \DateTime) { + return $data; + } + return parent::normalize($data, $depth); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractHandler.php new file mode 100644 index 000000000..8e5497348 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractHandler.php @@ -0,0 +1,172 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +/** + * Base Handler class providing the Handler structure + * + * @author Jordi Boggiano + */ +abstract class AbstractHandler implements \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface, \Google\Site_Kit_Dependencies\Monolog\ResettableInterface +{ + protected $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG; + protected $bubble = \true; + /** + * @var FormatterInterface + */ + protected $formatter; + protected $processors = array(); + /** + * @param int|string $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + $this->setLevel($level); + $this->bubble = $bubble; + } + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return $record['level'] >= $this->level; + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + foreach ($records as $record) { + $this->handle($record); + } + } + /** + * Closes the handler. + * + * This will be called automatically when the object is destroyed + */ + public function close() + { + } + /** + * {@inheritdoc} + */ + public function pushProcessor($callback) + { + if (!\is_callable($callback)) { + throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), ' . \var_export($callback, \true) . ' given'); + } + \array_unshift($this->processors, $callback); + return $this; + } + /** + * {@inheritdoc} + */ + public function popProcessor() + { + if (!$this->processors) { + throw new \LogicException('You tried to pop from an empty processor stack.'); + } + return \array_shift($this->processors); + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->formatter = $formatter; + return $this; + } + /** + * {@inheritdoc} + */ + public function getFormatter() + { + if (!$this->formatter) { + $this->formatter = $this->getDefaultFormatter(); + } + return $this->formatter; + } + /** + * Sets minimum logging level at which this handler will be triggered. + * + * @param int|string $level Level or level name + * @return self + */ + public function setLevel($level) + { + $this->level = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($level); + return $this; + } + /** + * Gets minimum logging level at which this handler will be triggered. + * + * @return int + */ + public function getLevel() + { + return $this->level; + } + /** + * Sets the bubbling behavior. + * + * @param bool $bubble true means that this handler allows bubbling. + * false means that bubbling is not permitted. + * @return self + */ + public function setBubble($bubble) + { + $this->bubble = $bubble; + return $this; + } + /** + * Gets the bubbling behavior. + * + * @return bool true means that this handler allows bubbling. + * false means that bubbling is not permitted. + */ + public function getBubble() + { + return $this->bubble; + } + public function __destruct() + { + try { + $this->close(); + } catch (\Exception $e) { + // do nothing + } catch (\Throwable $e) { + // do nothing + } + } + public function reset() + { + foreach ($this->processors as $processor) { + if ($processor instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + $processor->reset(); + } + } + } + /** + * Gets the default formatter. + * + * @return FormatterInterface + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php new file mode 100644 index 000000000..52e452ff8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +/** + * Base Handler class providing the Handler structure + * + * Classes extending it should (in most cases) only implement write($record) + * + * @author Jordi Boggiano + * @author Christophe Coevoet + */ +abstract class AbstractProcessingHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return \false; + } + $record = $this->processRecord($record); + $record['formatted'] = $this->getFormatter()->format($record); + $this->write($record); + return \false === $this->bubble; + } + /** + * Writes the record down to the log of the implementing handler + * + * @param array $record + * @return void + */ + protected abstract function write(array $record); + /** + * Processes a record. + * + * @param array $record + * @return array + */ + protected function processRecord(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + } + return $record; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php new file mode 100644 index 000000000..6ed5b1c9e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +/** + * Common syslog functionality + */ +abstract class AbstractSyslogHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + protected $facility; + /** + * Translates Monolog log levels to syslog log priorities. + */ + protected $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => \LOG_DEBUG, \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => \LOG_INFO, \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => \LOG_NOTICE, \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => \LOG_WARNING, \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => \LOG_ERR, \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => \LOG_CRIT, \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => \LOG_ALERT, \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => \LOG_EMERG); + /** + * List of valid log facility names. + */ + protected $facilities = array('auth' => \LOG_AUTH, 'authpriv' => \LOG_AUTHPRIV, 'cron' => \LOG_CRON, 'daemon' => \LOG_DAEMON, 'kern' => \LOG_KERN, 'lpr' => \LOG_LPR, 'mail' => \LOG_MAIL, 'news' => \LOG_NEWS, 'syslog' => \LOG_SYSLOG, 'user' => \LOG_USER, 'uucp' => \LOG_UUCP); + /** + * @param mixed $facility + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($facility = \LOG_USER, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + parent::__construct($level, $bubble); + if (!\defined('PHP_WINDOWS_VERSION_BUILD')) { + $this->facilities['local0'] = \LOG_LOCAL0; + $this->facilities['local1'] = \LOG_LOCAL1; + $this->facilities['local2'] = \LOG_LOCAL2; + $this->facilities['local3'] = \LOG_LOCAL3; + $this->facilities['local4'] = \LOG_LOCAL4; + $this->facilities['local5'] = \LOG_LOCAL5; + $this->facilities['local6'] = \LOG_LOCAL6; + $this->facilities['local7'] = \LOG_LOCAL7; + } else { + $this->facilities['local0'] = 128; + // LOG_LOCAL0 + $this->facilities['local1'] = 136; + // LOG_LOCAL1 + $this->facilities['local2'] = 144; + // LOG_LOCAL2 + $this->facilities['local3'] = 152; + // LOG_LOCAL3 + $this->facilities['local4'] = 160; + // LOG_LOCAL4 + $this->facilities['local5'] = 168; + // LOG_LOCAL5 + $this->facilities['local6'] = 176; + // LOG_LOCAL6 + $this->facilities['local7'] = 184; + // LOG_LOCAL7 + } + // convert textual description of facility to syslog constant + if (\array_key_exists(\strtolower($facility), $this->facilities)) { + $facility = $this->facilities[\strtolower($facility)]; + } elseif (!\in_array($facility, \array_values($this->facilities), \true)) { + throw new \UnexpectedValueException('Unknown facility value "' . $facility . '" given'); + } + $this->facility = $facility; + } + /** + * {@inheritdoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter('%channel%.%level_name%: %message% %context% %extra%'); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AmqpHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AmqpHandler.php new file mode 100644 index 000000000..c394950f0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/AmqpHandler.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\JsonFormatter; +use Google\Site_Kit_Dependencies\PhpAmqpLib\Message\AMQPMessage; +use Google\Site_Kit_Dependencies\PhpAmqpLib\Channel\AMQPChannel; +use AMQPExchange; +class AmqpHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * @var AMQPExchange|AMQPChannel $exchange + */ + protected $exchange; + /** + * @var string + */ + protected $exchangeName; + /** + * @param AMQPExchange|AMQPChannel $exchange AMQPExchange (php AMQP ext) or PHP AMQP lib channel, ready for use + * @param string $exchangeName + * @param int $level + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($exchange, $exchangeName = 'log', $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if ($exchange instanceof \AMQPExchange) { + $exchange->setName($exchangeName); + } elseif ($exchange instanceof \Google\Site_Kit_Dependencies\PhpAmqpLib\Channel\AMQPChannel) { + $this->exchangeName = $exchangeName; + } else { + throw new \InvalidArgumentException('PhpAmqpLib\\Channel\\AMQPChannel or AMQPExchange instance required'); + } + $this->exchange = $exchange; + parent::__construct($level, $bubble); + } + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $data = $record["formatted"]; + $routingKey = $this->getRoutingKey($record); + if ($this->exchange instanceof \AMQPExchange) { + $this->exchange->publish($data, $routingKey, 0, array('delivery_mode' => 2, 'content_type' => 'application/json')); + } else { + $this->exchange->basic_publish($this->createAmqpMessage($data), $this->exchangeName, $routingKey); + } + } + /** + * {@inheritDoc} + */ + public function handleBatch(array $records) + { + if ($this->exchange instanceof \AMQPExchange) { + parent::handleBatch($records); + return; + } + foreach ($records as $record) { + if (!$this->isHandling($record)) { + continue; + } + $record = $this->processRecord($record); + $data = $this->getFormatter()->format($record); + $this->exchange->batch_basic_publish($this->createAmqpMessage($data), $this->exchangeName, $this->getRoutingKey($record)); + } + $this->exchange->publish_batch(); + } + /** + * Gets the routing key for the AMQP exchange + * + * @param array $record + * @return string + */ + protected function getRoutingKey(array $record) + { + $routingKey = \sprintf( + '%s.%s', + // TODO 2.0 remove substr call + \substr($record['level_name'], 0, 4), + $record['channel'] + ); + return \strtolower($routingKey); + } + /** + * @param string $data + * @return AMQPMessage + */ + private function createAmqpMessage($data) + { + return new \Google\Site_Kit_Dependencies\PhpAmqpLib\Message\AMQPMessage((string) $data, array('delivery_mode' => 2, 'content_type' => 'application/json')); + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\JsonFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\JsonFormatter::BATCH_MODE_JSON, \false); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php new file mode 100644 index 000000000..e5412221c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php @@ -0,0 +1,204 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +/** + * Handler sending logs to browser's javascript console with no browser extension required + * + * @author Olivier Poitrey + */ +class BrowserConsoleHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + protected static $initialized = \false; + protected static $records = array(); + /** + * {@inheritDoc} + * + * Formatted output may contain some formatting markers to be transferred to `console.log` using the %c format. + * + * Example of formatted string: + * + * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%'); + } + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + // Accumulate records + static::$records[] = $record; + // Register shutdown handler if not already done + if (!static::$initialized) { + static::$initialized = \true; + $this->registerShutdownFunction(); + } + } + /** + * Convert records to javascript console commands and send it to the browser. + * This method is automatically called on PHP shutdown if output is HTML or Javascript. + */ + public static function send() + { + $format = static::getResponseFormat(); + if ($format === 'unknown') { + return; + } + if (\count(static::$records)) { + if ($format === 'html') { + static::writeOutput(''); + } elseif ($format === 'js') { + static::writeOutput(static::generateScript()); + } + static::resetStatic(); + } + } + public function close() + { + self::resetStatic(); + } + public function reset() + { + self::resetStatic(); + } + /** + * Forget all logged records + */ + public static function resetStatic() + { + static::$records = array(); + } + /** + * Wrapper for register_shutdown_function to allow overriding + */ + protected function registerShutdownFunction() + { + if (\PHP_SAPI !== 'cli') { + \register_shutdown_function(array('Monolog\\Handler\\BrowserConsoleHandler', 'send')); + } + } + /** + * Wrapper for echo to allow overriding + * + * @param string $str + */ + protected static function writeOutput($str) + { + echo $str; + } + /** + * Checks the format of the response + * + * If Content-Type is set to application/javascript or text/javascript -> js + * If Content-Type is set to text/html, or is unset -> html + * If Content-Type is anything else -> unknown + * + * @return string One of 'js', 'html' or 'unknown' + */ + protected static function getResponseFormat() + { + // Check content type + foreach (\headers_list() as $header) { + if (\stripos($header, 'content-type:') === 0) { + // This handler only works with HTML and javascript outputs + // text/javascript is obsolete in favour of application/javascript, but still used + if (\stripos($header, 'application/javascript') !== \false || \stripos($header, 'text/javascript') !== \false) { + return 'js'; + } + if (\stripos($header, 'text/html') === \false) { + return 'unknown'; + } + break; + } + } + return 'html'; + } + private static function generateScript() + { + $script = array(); + foreach (static::$records as $record) { + $context = static::dump('Context', $record['context']); + $extra = static::dump('Extra', $record['extra']); + if (empty($context) && empty($extra)) { + $script[] = static::call_array('log', static::handleStyles($record['formatted'])); + } else { + $script = \array_merge($script, array(static::call_array('groupCollapsed', static::handleStyles($record['formatted']))), $context, $extra, array(static::call('groupEnd'))); + } + } + return "(function (c) {if (c && c.groupCollapsed) {\n" . \implode("\n", $script) . "\n}})(console);"; + } + private static function handleStyles($formatted) + { + $args = array(); + $format = '%c' . $formatted; + \preg_match_all('/\\[\\[(.*?)\\]\\]\\{([^}]*)\\}/s', $format, $matches, \PREG_OFFSET_CAPTURE | \PREG_SET_ORDER); + foreach (\array_reverse($matches) as $match) { + $args[] = '"font-weight: normal"'; + $args[] = static::quote(static::handleCustomStyles($match[2][0], $match[1][0])); + $pos = $match[0][1]; + $format = \substr($format, 0, $pos) . '%c' . $match[1][0] . '%c' . \substr($format, $pos + \strlen($match[0][0])); + } + $args[] = static::quote('font-weight: normal'); + $args[] = static::quote($format); + return \array_reverse($args); + } + private static function handleCustomStyles($style, $string) + { + static $colors = array('blue', 'green', 'red', 'magenta', 'orange', 'black', 'grey'); + static $labels = array(); + return \preg_replace_callback('/macro\\s*:(.*?)(?:;|$)/', function ($m) use($string, &$colors, &$labels) { + if (\trim($m[1]) === 'autolabel') { + // Format the string as a label with consistent auto assigned background color + if (!isset($labels[$string])) { + $labels[$string] = $colors[\count($labels) % \count($colors)]; + } + $color = $labels[$string]; + return "background-color: {$color}; color: white; border-radius: 3px; padding: 0 2px 0 2px"; + } + return $m[1]; + }, $style); + } + private static function dump($title, array $dict) + { + $script = array(); + $dict = \array_filter($dict); + if (empty($dict)) { + return $script; + } + $script[] = static::call('log', static::quote('%c%s'), static::quote('font-weight: bold'), static::quote($title)); + foreach ($dict as $key => $value) { + $value = \json_encode($value); + if (empty($value)) { + $value = static::quote(''); + } + $script[] = static::call('log', static::quote('%s: %o'), static::quote($key), $value); + } + return $script; + } + private static function quote($arg) + { + return '"' . \addcslashes($arg, "\"\n\\") . '"'; + } + private static function call() + { + $args = \func_get_args(); + $method = \array_shift($args); + return static::call_array($method, $args); + } + private static function call_array($method, array $args) + { + return 'c.' . $method . '(' . \implode(', ', $args) . ');'; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/BufferHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/BufferHandler.php new file mode 100644 index 000000000..964db98c0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/BufferHandler.php @@ -0,0 +1,128 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Buffers all records until closing the handler and then pass them as batch. + * + * This is useful for a MailHandler to send only one mail per request instead of + * sending one per log message. + * + * @author Christophe Coevoet + */ +class BufferHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + protected $handler; + protected $bufferSize = 0; + protected $bufferLimit; + protected $flushOnOverflow; + protected $buffer = array(); + protected $initialized = \false; + /** + * @param HandlerInterface $handler Handler. + * @param int $bufferLimit How many entries should be buffered at most, beyond that the oldest items are removed from the buffer. + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded + */ + public function __construct(\Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface $handler, $bufferLimit = 0, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $flushOnOverflow = \false) + { + parent::__construct($level, $bubble); + $this->handler = $handler; + $this->bufferLimit = (int) $bufferLimit; + $this->flushOnOverflow = $flushOnOverflow; + } + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($record['level'] < $this->level) { + return \false; + } + if (!$this->initialized) { + // __destructor() doesn't get called on Fatal errors + \register_shutdown_function(array($this, 'close')); + $this->initialized = \true; + } + if ($this->bufferLimit > 0 && $this->bufferSize === $this->bufferLimit) { + if ($this->flushOnOverflow) { + $this->flush(); + } else { + \array_shift($this->buffer); + $this->bufferSize--; + } + } + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + } + $this->buffer[] = $record; + $this->bufferSize++; + return \false === $this->bubble; + } + public function flush() + { + if ($this->bufferSize === 0) { + return; + } + $this->handler->handleBatch($this->buffer); + $this->clear(); + } + public function __destruct() + { + // suppress the parent behavior since we already have register_shutdown_function() + // to call close(), and the reference contained there will prevent this from being + // GC'd until the end of the request + } + /** + * {@inheritdoc} + */ + public function close() + { + $this->flush(); + } + /** + * Clears the buffer without flushing any messages down to the wrapped handler. + */ + public function clear() + { + $this->bufferSize = 0; + $this->buffer = array(); + } + public function reset() + { + $this->flush(); + parent::reset(); + if ($this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + $this->handler->reset(); + } + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->handler->setFormatter($formatter); + return $this; + } + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->handler->getFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php new file mode 100644 index 000000000..85aae7dc9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php @@ -0,0 +1,171 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\ChromePHPFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Handler sending logs to the ChromePHP extension (http://www.chromephp.com/) + * + * This also works out of the box with Firefox 43+ + * + * @author Christophe Coevoet + */ +class ChromePHPHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * Version of the extension + */ + const VERSION = '4.0'; + /** + * Header name + */ + const HEADER_NAME = 'X-ChromeLogger-Data'; + /** + * Regular expression to detect supported browsers (matches any Chrome, or Firefox 43+) + */ + const USER_AGENT_REGEX = '{\\b(?:Chrome/\\d+(?:\\.\\d+)*|HeadlessChrome|Firefox/(?:4[3-9]|[5-9]\\d|\\d{3,})(?:\\.\\d)*)\\b}'; + protected static $initialized = \false; + /** + * Tracks whether we sent too much data + * + * Chrome limits the headers to 4KB, so when we sent 3KB we stop sending + * + * @var bool + */ + protected static $overflowed = \false; + protected static $json = array('version' => self::VERSION, 'columns' => array('label', 'log', 'backtrace', 'type'), 'rows' => array()); + protected static $sendHeaders = \true; + /** + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + parent::__construct($level, $bubble); + if (!\function_exists('json_encode')) { + throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s ChromePHPHandler'); + } + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $messages = array(); + foreach ($records as $record) { + if ($record['level'] < $this->level) { + continue; + } + $messages[] = $this->processRecord($record); + } + if (!empty($messages)) { + $messages = $this->getFormatter()->formatBatch($messages); + self::$json['rows'] = \array_merge(self::$json['rows'], $messages); + $this->send(); + } + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\ChromePHPFormatter(); + } + /** + * Creates & sends header for a record + * + * @see sendHeader() + * @see send() + * @param array $record + */ + protected function write(array $record) + { + self::$json['rows'][] = $record['formatted']; + $this->send(); + } + /** + * Sends the log header + * + * @see sendHeader() + */ + protected function send() + { + if (self::$overflowed || !self::$sendHeaders) { + return; + } + if (!self::$initialized) { + self::$initialized = \true; + self::$sendHeaders = $this->headersAccepted(); + if (!self::$sendHeaders) { + return; + } + self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; + } + $json = \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode(self::$json, null, \true); + $data = \base64_encode(\utf8_encode($json)); + if (\strlen($data) > 3 * 1024) { + self::$overflowed = \true; + $record = array('message' => 'Incomplete logs, chrome header size limit reached', 'context' => array(), 'level' => \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING, 'level_name' => \Google\Site_Kit_Dependencies\Monolog\Logger::getLevelName(\Google\Site_Kit_Dependencies\Monolog\Logger::WARNING), 'channel' => 'monolog', 'datetime' => new \DateTime(), 'extra' => array()); + self::$json['rows'][\count(self::$json['rows']) - 1] = $this->getFormatter()->format($record); + $json = \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode(self::$json, null, \true); + $data = \base64_encode(\utf8_encode($json)); + } + if (\trim($data) !== '') { + $this->sendHeader(self::HEADER_NAME, $data); + } + } + /** + * Send header string to the client + * + * @param string $header + * @param string $content + */ + protected function sendHeader($header, $content) + { + if (!\headers_sent() && self::$sendHeaders) { + \header(\sprintf('%s: %s', $header, $content)); + } + } + /** + * Verifies if the headers are accepted by the current user agent + * + * @return bool + */ + protected function headersAccepted() + { + if (empty($_SERVER['HTTP_USER_AGENT'])) { + return \false; + } + return \preg_match(self::USER_AGENT_REGEX, $_SERVER['HTTP_USER_AGENT']); + } + /** + * BC getter for the sendHeaders property that has been made static + */ + public function __get($property) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property ' . $property); + } + return static::$sendHeaders; + } + /** + * BC setter for the sendHeaders property that has been made static + */ + public function __set($property, $value) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property ' . $property); + } + static::$sendHeaders = $value; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php new file mode 100644 index 000000000..839bccd11 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\JsonFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * CouchDB handler + * + * @author Markus Bachmann + */ +class CouchDBHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + private $options; + public function __construct(array $options = array(), $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + $this->options = \array_merge(array('host' => 'localhost', 'port' => 5984, 'dbname' => 'logger', 'username' => null, 'password' => null), $options); + parent::__construct($level, $bubble); + } + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $basicAuth = null; + if ($this->options['username']) { + $basicAuth = \sprintf('%s:%s@', $this->options['username'], $this->options['password']); + } + $url = 'http://' . $basicAuth . $this->options['host'] . ':' . $this->options['port'] . '/' . $this->options['dbname']; + $context = \stream_context_create(array('http' => array('method' => 'POST', 'content' => $record['formatted'], 'ignore_errors' => \true, 'max_redirects' => 0, 'header' => 'Content-type: application/json'))); + if (\false === @\file_get_contents($url, null, $context)) { + throw new \RuntimeException(\sprintf('Could not connect to %s', $url)); + } + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\JsonFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\JsonFormatter::BATCH_MODE_JSON, \false); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/CubeHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/CubeHandler.php new file mode 100644 index 000000000..f23e5a1f1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/CubeHandler.php @@ -0,0 +1,123 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Logs to Cube. + * + * @link http://square.github.com/cube/ + * @author Wan Chen + */ +class CubeHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + private $udpConnection; + private $httpConnection; + private $scheme; + private $host; + private $port; + private $acceptedSchemes = array('http', 'udp'); + /** + * Create a Cube handler + * + * @throws \UnexpectedValueException when given url is not a valid url. + * A valid url must consist of three parts : protocol://host:port + * Only valid protocols used by Cube are http and udp + */ + public function __construct($url, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + $urlInfo = \parse_url($url); + if (!isset($urlInfo['scheme'], $urlInfo['host'], $urlInfo['port'])) { + throw new \UnexpectedValueException('URL "' . $url . '" is not valid'); + } + if (!\in_array($urlInfo['scheme'], $this->acceptedSchemes)) { + throw new \UnexpectedValueException('Invalid protocol (' . $urlInfo['scheme'] . ').' . ' Valid options are ' . \implode(', ', $this->acceptedSchemes)); + } + $this->scheme = $urlInfo['scheme']; + $this->host = $urlInfo['host']; + $this->port = $urlInfo['port']; + parent::__construct($level, $bubble); + } + /** + * Establish a connection to an UDP socket + * + * @throws \LogicException when unable to connect to the socket + * @throws MissingExtensionException when there is no socket extension + */ + protected function connectUdp() + { + if (!\extension_loaded('sockets')) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('The sockets extension is required to use udp URLs with the CubeHandler'); + } + $this->udpConnection = \socket_create(\AF_INET, \SOCK_DGRAM, 0); + if (!$this->udpConnection) { + throw new \LogicException('Unable to create a socket'); + } + if (!\socket_connect($this->udpConnection, $this->host, $this->port)) { + throw new \LogicException('Unable to connect to the socket at ' . $this->host . ':' . $this->port); + } + } + /** + * Establish a connection to a http server + * @throws \LogicException when no curl extension + */ + protected function connectHttp() + { + if (!\extension_loaded('curl')) { + throw new \LogicException('The curl extension is needed to use http URLs with the CubeHandler'); + } + $this->httpConnection = \curl_init('http://' . $this->host . ':' . $this->port . '/1.0/event/put'); + if (!$this->httpConnection) { + throw new \LogicException('Unable to connect to ' . $this->host . ':' . $this->port); + } + \curl_setopt($this->httpConnection, \CURLOPT_CUSTOMREQUEST, "POST"); + \curl_setopt($this->httpConnection, \CURLOPT_RETURNTRANSFER, \true); + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $date = $record['datetime']; + $data = array('time' => $date->format('Y-m-d\\TH:i:s.uO')); + unset($record['datetime']); + if (isset($record['context']['type'])) { + $data['type'] = $record['context']['type']; + unset($record['context']['type']); + } else { + $data['type'] = $record['channel']; + } + $data['data'] = $record['context']; + $data['data']['level'] = $record['level']; + if ($this->scheme === 'http') { + $this->writeHttp(\Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($data)); + } else { + $this->writeUdp(\Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($data)); + } + } + private function writeUdp($data) + { + if (!$this->udpConnection) { + $this->connectUdp(); + } + \socket_send($this->udpConnection, $data, \strlen($data), 0); + } + private function writeHttp($data) + { + if (!$this->httpConnection) { + $this->connectHttp(); + } + \curl_setopt($this->httpConnection, \CURLOPT_POSTFIELDS, '[' . $data . ']'); + \curl_setopt($this->httpConnection, \CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . \strlen('[' . $data . ']'))); + \Google\Site_Kit_Dependencies\Monolog\Handler\Curl\Util::execute($this->httpConnection, 5, \false); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/Curl/Util.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/Curl/Util.php new file mode 100644 index 000000000..f71544747 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/Curl/Util.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler\Curl; + +class Util +{ + private static $retriableErrorCodes = array(\CURLE_COULDNT_RESOLVE_HOST, \CURLE_COULDNT_CONNECT, \CURLE_HTTP_NOT_FOUND, \CURLE_READ_ERROR, \CURLE_OPERATION_TIMEOUTED, \CURLE_HTTP_POST_ERROR, \CURLE_SSL_CONNECT_ERROR); + /** + * Executes a CURL request with optional retries and exception on failure + * + * @param resource $ch curl handler + * @throws \RuntimeException + */ + public static function execute($ch, $retries = 5, $closeAfterDone = \true) + { + while ($retries--) { + if (\curl_exec($ch) === \false) { + $curlErrno = \curl_errno($ch); + if (\false === \in_array($curlErrno, self::$retriableErrorCodes, \true) || !$retries) { + $curlError = \curl_error($ch); + if ($closeAfterDone) { + \curl_close($ch); + } + throw new \RuntimeException(\sprintf('Curl error (code %s): %s', $curlErrno, $curlError)); + } + continue; + } + if ($closeAfterDone) { + \curl_close($ch); + } + break; + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php new file mode 100644 index 000000000..f3a3bb482 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php @@ -0,0 +1,140 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Simple handler wrapper that deduplicates log records across multiple requests + * + * It also includes the BufferHandler functionality and will buffer + * all messages until the end of the request or flush() is called. + * + * This works by storing all log records' messages above $deduplicationLevel + * to the file specified by $deduplicationStore. When further logs come in at the end of the + * request (or when flush() is called), all those above $deduplicationLevel are checked + * against the existing stored logs. If they match and the timestamps in the stored log is + * not older than $time seconds, the new log record is discarded. If no log record is new, the + * whole data set is discarded. + * + * This is mainly useful in combination with Mail handlers or things like Slack or HipChat handlers + * that send messages to people, to avoid spamming with the same message over and over in case of + * a major component failure like a database server being down which makes all requests fail in the + * same way. + * + * @author Jordi Boggiano + */ +class DeduplicationHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\BufferHandler +{ + /** + * @var string + */ + protected $deduplicationStore; + /** + * @var int + */ + protected $deduplicationLevel; + /** + * @var int + */ + protected $time; + /** + * @var bool + */ + private $gc = \false; + /** + * @param HandlerInterface $handler Handler. + * @param string $deduplicationStore The file/path where the deduplication log should be kept + * @param int $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes + * @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(\Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface $handler, $deduplicationStore = null, $deduplicationLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR, $time = 60, $bubble = \true) + { + parent::__construct($handler, 0, \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble, \false); + $this->deduplicationStore = $deduplicationStore === null ? \sys_get_temp_dir() . '/monolog-dedup-' . \substr(\md5(__FILE__), 0, 20) . '.log' : $deduplicationStore; + $this->deduplicationLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($deduplicationLevel); + $this->time = $time; + } + public function flush() + { + if ($this->bufferSize === 0) { + return; + } + $passthru = null; + foreach ($this->buffer as $record) { + if ($record['level'] >= $this->deduplicationLevel) { + $passthru = $passthru || !$this->isDuplicate($record); + if ($passthru) { + $this->appendRecord($record); + } + } + } + // default of null is valid as well as if no record matches duplicationLevel we just pass through + if ($passthru === \true || $passthru === null) { + $this->handler->handleBatch($this->buffer); + } + $this->clear(); + if ($this->gc) { + $this->collectLogs(); + } + } + private function isDuplicate(array $record) + { + if (!\file_exists($this->deduplicationStore)) { + return \false; + } + $store = \file($this->deduplicationStore, \FILE_IGNORE_NEW_LINES | \FILE_SKIP_EMPTY_LINES); + if (!\is_array($store)) { + return \false; + } + $yesterday = \time() - 86400; + $timestampValidity = $record['datetime']->getTimestamp() - $this->time; + $expectedMessage = \preg_replace('{[\\r\\n].*}', '', $record['message']); + for ($i = \count($store) - 1; $i >= 0; $i--) { + list($timestamp, $level, $message) = \explode(':', $store[$i], 3); + if ($level === $record['level_name'] && $message === $expectedMessage && $timestamp > $timestampValidity) { + return \true; + } + if ($timestamp < $yesterday) { + $this->gc = \true; + } + } + return \false; + } + private function collectLogs() + { + if (!\file_exists($this->deduplicationStore)) { + return \false; + } + $handle = \fopen($this->deduplicationStore, 'rw+'); + \flock($handle, \LOCK_EX); + $validLogs = array(); + $timestampValidity = \time() - $this->time; + while (!\feof($handle)) { + $log = \fgets($handle); + if (\substr($log, 0, 10) >= $timestampValidity) { + $validLogs[] = $log; + } + } + \ftruncate($handle, 0); + \rewind($handle); + foreach ($validLogs as $log) { + \fwrite($handle, $log); + } + \flock($handle, \LOCK_UN); + \fclose($handle); + $this->gc = \false; + } + private function appendRecord(array $record) + { + \file_put_contents($this->deduplicationStore, $record['datetime']->getTimestamp() . ':' . $record['level_name'] . ':' . \preg_replace('{[\\r\\n].*}', '', $record['message']) . "\n", \FILE_APPEND); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php new file mode 100644 index 000000000..99e5a527b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter; +use Google\Site_Kit_Dependencies\Doctrine\CouchDB\CouchDBClient; +/** + * CouchDB handler for Doctrine CouchDB ODM + * + * @author Markus Bachmann + */ +class DoctrineCouchDBHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + private $client; + public function __construct(\Google\Site_Kit_Dependencies\Doctrine\CouchDB\CouchDBClient $client, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + $this->client = $client; + parent::__construct($level, $bubble); + } + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $this->client->postDocument($record['formatted']); + } + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php new file mode 100644 index 000000000..487fcd89c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php @@ -0,0 +1,92 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Aws\Sdk; +use Google\Site_Kit_Dependencies\Aws\DynamoDb\DynamoDbClient; +use Google\Site_Kit_Dependencies\Aws\DynamoDb\Marshaler; +use Google\Site_Kit_Dependencies\Monolog\Formatter\ScalarFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Amazon DynamoDB handler (http://aws.amazon.com/dynamodb/) + * + * @link https://github.com/aws/aws-sdk-php/ + * @author Andrew Lawson + */ +class DynamoDbHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + const DATE_FORMAT = 'Y-m-d\\TH:i:s.uO'; + /** + * @var DynamoDbClient + */ + protected $client; + /** + * @var string + */ + protected $table; + /** + * @var int + */ + protected $version; + /** + * @var Marshaler + */ + protected $marshaler; + /** + * @param DynamoDbClient $client + * @param string $table + * @param int $level + * @param bool $bubble + */ + public function __construct(\Google\Site_Kit_Dependencies\Aws\DynamoDb\DynamoDbClient $client, $table, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if (\defined('Aws\\Sdk::VERSION') && \version_compare(\Google\Site_Kit_Dependencies\Aws\Sdk::VERSION, '3.0', '>=')) { + $this->version = 3; + $this->marshaler = new \Google\Site_Kit_Dependencies\Aws\DynamoDb\Marshaler(); + } else { + $this->version = 2; + } + $this->client = $client; + $this->table = $table; + parent::__construct($level, $bubble); + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $filtered = $this->filterEmptyFields($record['formatted']); + if ($this->version === 3) { + $formatted = $this->marshaler->marshalItem($filtered); + } else { + /** @phpstan-ignore-next-line */ + $formatted = $this->client->formatAttributes($filtered); + } + $this->client->putItem(array('TableName' => $this->table, 'Item' => $formatted)); + } + /** + * @param array $record + * @return array + */ + protected function filterEmptyFields(array $record) + { + return \array_filter($record, function ($value) { + return !empty($value) || \false === $value || 0 === $value; + }); + } + /** + * {@inheritdoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\ScalarFormatter(self::DATE_FORMAT); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php new file mode 100644 index 000000000..673264fa2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\Formatter\ElasticaFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Elastica\Client; +use Google\Site_Kit_Dependencies\Elastica\Exception\ExceptionInterface; +/** + * Elastic Search handler + * + * Usage example: + * + * $client = new \Elastica\Client(); + * $options = array( + * 'index' => 'elastic_index_name', + * 'type' => 'elastic_doc_type', + * ); + * $handler = new ElasticSearchHandler($client, $options); + * $log = new Logger('application'); + * $log->pushHandler($handler); + * + * @author Jelle Vink + */ +class ElasticSearchHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * @var Client + */ + protected $client; + /** + * @var array Handler config options + */ + protected $options = array(); + /** + * @param Client $client Elastica Client object + * @param array $options Handler configuration + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(\Google\Site_Kit_Dependencies\Elastica\Client $client, array $options = array(), $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + parent::__construct($level, $bubble); + $this->client = $client; + $this->options = \array_merge(array( + 'index' => 'monolog', + // Elastic index name + 'type' => 'record', + // Elastic document type + 'ignore_error' => \false, + ), $options); + } + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $this->bulkSend(array($record['formatted'])); + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + if ($formatter instanceof \Google\Site_Kit_Dependencies\Monolog\Formatter\ElasticaFormatter) { + return parent::setFormatter($formatter); + } + throw new \InvalidArgumentException('ElasticSearchHandler is only compatible with ElasticaFormatter'); + } + /** + * Getter options + * @return array + */ + public function getOptions() + { + return $this->options; + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\ElasticaFormatter($this->options['index'], $this->options['type']); + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $documents = $this->getFormatter()->formatBatch($records); + $this->bulkSend($documents); + } + /** + * Use Elasticsearch bulk API to send list of documents + * @param array $documents + * @throws \RuntimeException + */ + protected function bulkSend(array $documents) + { + try { + $this->client->addDocuments($documents); + } catch (\Google\Site_Kit_Dependencies\Elastica\Exception\ExceptionInterface $e) { + if (!$this->options['ignore_error']) { + throw new \RuntimeException("Error sending messages to Elasticsearch", 0, $e); + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php new file mode 100644 index 000000000..37005628e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Stores to PHP error_log() handler. + * + * @author Elan Ruusamäe + */ +class ErrorLogHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + const OPERATING_SYSTEM = 0; + const SAPI = 4; + protected $messageType; + protected $expandNewlines; + /** + * @param int $messageType Says where the error should go. + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries + */ + public function __construct($messageType = self::OPERATING_SYSTEM, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $expandNewlines = \false) + { + parent::__construct($level, $bubble); + if (\false === \in_array($messageType, self::getAvailableTypes())) { + $message = \sprintf('The given message type "%s" is not supported', \print_r($messageType, \true)); + throw new \InvalidArgumentException($message); + } + $this->messageType = $messageType; + $this->expandNewlines = $expandNewlines; + } + /** + * @return array With all available types + */ + public static function getAvailableTypes() + { + return array(self::OPERATING_SYSTEM, self::SAPI); + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%'); + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if ($this->expandNewlines) { + $lines = \preg_split('{[\\r\\n]+}', (string) $record['formatted']); + foreach ($lines as $line) { + \error_log($line, $this->messageType); + } + } else { + \error_log((string) $record['formatted'], $this->messageType); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FilterHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FilterHandler.php new file mode 100644 index 000000000..48c4d2f44 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FilterHandler.php @@ -0,0 +1,152 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Simple handler wrapper that filters records based on a list of levels + * + * It can be configured with an exact list of levels to allow, or a min/max level. + * + * @author Hennadiy Verkh + * @author Jordi Boggiano + */ +class FilterHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + /** + * Handler or factory callable($record, $this) + * + * @var callable|\Monolog\Handler\HandlerInterface + */ + protected $handler; + /** + * Minimum level for logs that are passed to handler + * + * @var int[] + */ + protected $acceptedLevels; + /** + * Whether the messages that are handled can bubble up the stack or not + * + * @var bool + */ + protected $bubble; + /** + * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $filterHandler). + * @param int|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided + * @param int $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($handler, $minLevelOrList = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $maxLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY, $bubble = \true) + { + $this->handler = $handler; + $this->bubble = $bubble; + $this->setAcceptedLevels($minLevelOrList, $maxLevel); + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface && !\is_callable($this->handler)) { + throw new \RuntimeException("The given handler (" . \json_encode($this->handler) . ") is not a callable nor a Monolog\\Handler\\HandlerInterface object"); + } + } + /** + * @return array + */ + public function getAcceptedLevels() + { + return \array_flip($this->acceptedLevels); + } + /** + * @param int|string|array $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided + * @param int|string $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array + */ + public function setAcceptedLevels($minLevelOrList = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $maxLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY) + { + if (\is_array($minLevelOrList)) { + $acceptedLevels = \array_map('Monolog\\Logger::toMonologLevel', $minLevelOrList); + } else { + $minLevelOrList = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($minLevelOrList); + $maxLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($maxLevel); + $acceptedLevels = \array_values(\array_filter(\Google\Site_Kit_Dependencies\Monolog\Logger::getLevels(), function ($level) use($minLevelOrList, $maxLevel) { + return $level >= $minLevelOrList && $level <= $maxLevel; + })); + } + $this->acceptedLevels = \array_flip($acceptedLevels); + } + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return isset($this->acceptedLevels[$record['level']]); + } + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return \false; + } + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + } + $this->getHandler($record)->handle($record); + return \false === $this->bubble; + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $filtered = array(); + foreach ($records as $record) { + if ($this->isHandling($record)) { + $filtered[] = $record; + } + } + if (\count($filtered) > 0) { + $this->getHandler($filtered[\count($filtered) - 1])->handleBatch($filtered); + } + } + /** + * Return the nested handler + * + * If the handler was provided as a factory callable, this will trigger the handler's instantiation. + * + * @return HandlerInterface + */ + public function getHandler(array $record = null) + { + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface) { + $this->handler = \call_user_func($this->handler, $record, $this); + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface) { + throw new \RuntimeException("The factory callable should return a HandlerInterface"); + } + } + return $this->handler; + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->getHandler()->setFormatter($formatter); + return $this; + } + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->getHandler()->getFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php new file mode 100644 index 000000000..3fbc970ed --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed; + +/** + * Interface for activation strategies for the FingersCrossedHandler. + * + * @author Johannes M. Schmitt + */ +interface ActivationStrategyInterface +{ + /** + * Returns whether the given record activates the handler. + * + * @param array $record + * @return bool + */ + public function isHandlerActivated(array $record); +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php new file mode 100644 index 000000000..9024547a0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Channel and Error level based monolog activation strategy. Allows to trigger activation + * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except + * for records of the 'sql' channel; those should trigger activation on level 'WARN'. + * + * Example: + * + * + * $activationStrategy = new ChannelLevelActivationStrategy( + * Logger::CRITICAL, + * array( + * 'request' => Logger::ALERT, + * 'sensitive' => Logger::ERROR, + * ) + * ); + * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy); + * + * + * @author Mike Meessen + */ +class ChannelLevelActivationStrategy implements \Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed\ActivationStrategyInterface +{ + private $defaultActionLevel; + private $channelToActionLevel; + /** + * @param int $defaultActionLevel The default action level to be used if the record's category doesn't match any + * @param array $channelToActionLevel An array that maps channel names to action levels. + */ + public function __construct($defaultActionLevel, $channelToActionLevel = array()) + { + $this->defaultActionLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($defaultActionLevel); + $this->channelToActionLevel = \array_map('Monolog\\Logger::toMonologLevel', $channelToActionLevel); + } + public function isHandlerActivated(array $record) + { + if (isset($this->channelToActionLevel[$record['channel']])) { + return $record['level'] >= $this->channelToActionLevel[$record['channel']]; + } + return $record['level'] >= $this->defaultActionLevel; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php new file mode 100644 index 000000000..fe552322d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Error level based activation strategy. + * + * @author Johannes M. Schmitt + */ +class ErrorLevelActivationStrategy implements \Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed\ActivationStrategyInterface +{ + private $actionLevel; + public function __construct($actionLevel) + { + $this->actionLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($actionLevel); + } + public function isHandlerActivated(array $record) + { + return $record['level'] >= $this->actionLevel; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php new file mode 100644 index 000000000..8ffc83443 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php @@ -0,0 +1,183 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; +use Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed\ActivationStrategyInterface; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Buffers all records until a certain level is reached + * + * The advantage of this approach is that you don't get any clutter in your log files. + * Only requests which actually trigger an error (or whatever your actionLevel is) will be + * in the logs, but they will contain all records, not only those above the level threshold. + * + * You can find the various activation strategies in the + * Monolog\Handler\FingersCrossed\ namespace. + * + * @author Jordi Boggiano + */ +class FingersCrossedHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + protected $handler; + protected $activationStrategy; + protected $buffering = \true; + protected $bufferSize; + protected $buffer = array(); + protected $stopBuffering; + protected $passthruLevel; + /** + * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $fingersCrossedHandler). + * @param int|ActivationStrategyInterface $activationStrategy Strategy which determines when this handler takes action + * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer. + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true) + * @param int $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered + */ + public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = \true, $stopBuffering = \true, $passthruLevel = null) + { + if (null === $activationStrategy) { + $activationStrategy = new \Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy(\Google\Site_Kit_Dependencies\Monolog\Logger::WARNING); + } + // convert simple int activationStrategy to an object + if (!$activationStrategy instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed\ActivationStrategyInterface) { + $activationStrategy = new \Google\Site_Kit_Dependencies\Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy($activationStrategy); + } + $this->handler = $handler; + $this->activationStrategy = $activationStrategy; + $this->bufferSize = $bufferSize; + $this->bubble = $bubble; + $this->stopBuffering = $stopBuffering; + if ($passthruLevel !== null) { + $this->passthruLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($passthruLevel); + } + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface && !\is_callable($this->handler)) { + throw new \RuntimeException("The given handler (" . \json_encode($this->handler) . ") is not a callable nor a Monolog\\Handler\\HandlerInterface object"); + } + } + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return \true; + } + /** + * Manually activate this logger regardless of the activation strategy + */ + public function activate() + { + if ($this->stopBuffering) { + $this->buffering = \false; + } + $this->getHandler(\end($this->buffer) ?: null)->handleBatch($this->buffer); + $this->buffer = array(); + } + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + } + if ($this->buffering) { + $this->buffer[] = $record; + if ($this->bufferSize > 0 && \count($this->buffer) > $this->bufferSize) { + \array_shift($this->buffer); + } + if ($this->activationStrategy->isHandlerActivated($record)) { + $this->activate(); + } + } else { + $this->getHandler($record)->handle($record); + } + return \false === $this->bubble; + } + /** + * {@inheritdoc} + */ + public function close() + { + $this->flushBuffer(); + } + public function reset() + { + $this->flushBuffer(); + parent::reset(); + if ($this->getHandler() instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + $this->getHandler()->reset(); + } + } + /** + * Clears the buffer without flushing any messages down to the wrapped handler. + * + * It also resets the handler to its initial buffering state. + */ + public function clear() + { + $this->buffer = array(); + $this->reset(); + } + /** + * Resets the state of the handler. Stops forwarding records to the wrapped handler. + */ + private function flushBuffer() + { + if (null !== $this->passthruLevel) { + $level = $this->passthruLevel; + $this->buffer = \array_filter($this->buffer, function ($record) use($level) { + return $record['level'] >= $level; + }); + if (\count($this->buffer) > 0) { + $this->getHandler(\end($this->buffer) ?: null)->handleBatch($this->buffer); + } + } + $this->buffer = array(); + $this->buffering = \true; + } + /** + * Return the nested handler + * + * If the handler was provided as a factory callable, this will trigger the handler's instantiation. + * + * @return HandlerInterface + */ + public function getHandler(array $record = null) + { + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface) { + $this->handler = \call_user_func($this->handler, $record, $this); + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface) { + throw new \RuntimeException("The factory callable should return a HandlerInterface"); + } + } + return $this->handler; + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->getHandler()->setFormatter($formatter); + return $this; + } + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->getHandler()->getFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php new file mode 100644 index 000000000..a30d0207d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php @@ -0,0 +1,163 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\WildfireFormatter; +/** + * Simple FirePHP Handler (http://www.firephp.org/), which uses the Wildfire protocol. + * + * @author Eric Clemmons (@ericclemmons) + */ +class FirePHPHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * WildFire JSON header message format + */ + const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2'; + /** + * FirePHP structure for parsing messages & their presentation + */ + const STRUCTURE_URI = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'; + /** + * Must reference a "known" plugin, otherwise headers won't display in FirePHP + */ + const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3'; + /** + * Header prefix for Wildfire to recognize & parse headers + */ + const HEADER_PREFIX = 'X-Wf'; + /** + * Whether or not Wildfire vendor-specific headers have been generated & sent yet + */ + protected static $initialized = \false; + /** + * Shared static message index between potentially multiple handlers + * @var int + */ + protected static $messageIndex = 1; + protected static $sendHeaders = \true; + /** + * Base header creation function used by init headers & record headers + * + * @param array $meta Wildfire Plugin, Protocol & Structure Indexes + * @param string $message Log message + * @return array Complete header string ready for the client as key and message as value + */ + protected function createHeader(array $meta, $message) + { + $header = \sprintf('%s-%s', self::HEADER_PREFIX, \join('-', $meta)); + return array($header => $message); + } + /** + * Creates message header from record + * + * @see createHeader() + * @param array $record + * @return array + */ + protected function createRecordHeader(array $record) + { + // Wildfire is extensible to support multiple protocols & plugins in a single request, + // but we're not taking advantage of that (yet), so we're using "1" for simplicity's sake. + return $this->createHeader(array(1, 1, 1, self::$messageIndex++), $record['formatted']); + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\WildfireFormatter(); + } + /** + * Wildfire initialization headers to enable message parsing + * + * @see createHeader() + * @see sendHeader() + * @return array + */ + protected function getInitHeaders() + { + // Initial payload consists of required headers for Wildfire + return \array_merge($this->createHeader(array('Protocol', 1), self::PROTOCOL_URI), $this->createHeader(array(1, 'Structure', 1), self::STRUCTURE_URI), $this->createHeader(array(1, 'Plugin', 1), self::PLUGIN_URI)); + } + /** + * Send header string to the client + * + * @param string $header + * @param string $content + */ + protected function sendHeader($header, $content) + { + if (!\headers_sent() && self::$sendHeaders) { + \header(\sprintf('%s: %s', $header, $content)); + } + } + /** + * Creates & sends header for a record, ensuring init headers have been sent prior + * + * @see sendHeader() + * @see sendInitHeaders() + * @param array $record + */ + protected function write(array $record) + { + if (!self::$sendHeaders) { + return; + } + // WildFire-specific headers must be sent prior to any messages + if (!self::$initialized) { + self::$initialized = \true; + self::$sendHeaders = $this->headersAccepted(); + if (!self::$sendHeaders) { + return; + } + foreach ($this->getInitHeaders() as $header => $content) { + $this->sendHeader($header, $content); + } + } + $header = $this->createRecordHeader($record); + if (\trim(\current($header)) !== '') { + $this->sendHeader(\key($header), \current($header)); + } + } + /** + * Verifies if the headers are accepted by the current user agent + * + * @return bool + */ + protected function headersAccepted() + { + if (!empty($_SERVER['HTTP_USER_AGENT']) && \preg_match('{\\bFirePHP/\\d+\\.\\d+\\b}', $_SERVER['HTTP_USER_AGENT'])) { + return \true; + } + return isset($_SERVER['HTTP_X_FIREPHP_VERSION']); + } + /** + * BC getter for the sendHeaders property that has been made static + */ + public function __get($property) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property ' . $property); + } + return static::$sendHeaders; + } + /** + * BC setter for the sendHeaders property that has been made static + */ + public function __set($property, $value) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property ' . $property); + } + static::$sendHeaders = $value; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php new file mode 100644 index 000000000..f0bfc783d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Sends logs to Fleep.io using Webhook integrations + * + * You'll need a Fleep.io account to use this handler. + * + * @see https://fleep.io/integrations/webhooks/ Fleep Webhooks Documentation + * @author Ando Roots + */ +class FleepHookHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\SocketHandler +{ + const FLEEP_HOST = 'fleep.io'; + const FLEEP_HOOK_URI = '/hook/'; + /** + * @var string Webhook token (specifies the conversation where logs are sent) + */ + protected $token; + /** + * Construct a new Fleep.io Handler. + * + * For instructions on how to create a new web hook in your conversations + * see https://fleep.io/integrations/webhooks/ + * + * @param string $token Webhook token + * @param bool|int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @throws MissingExtensionException + */ + public function __construct($token, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if (!\extension_loaded('openssl')) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('The OpenSSL PHP extension is required to use the FleepHookHandler'); + } + $this->token = $token; + $connectionString = 'ssl://' . self::FLEEP_HOST . ':443'; + parent::__construct($connectionString, $level, $bubble); + } + /** + * Returns the default formatter to use with this handler + * + * Overloaded to remove empty context and extra arrays from the end of the log message. + * + * @return LineFormatter + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter(null, null, \true, \true); + } + /** + * Handles a log record + * + * @param array $record + */ + public function write(array $record) + { + parent::write($record); + $this->closeSocket(); + } + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + return $this->buildHeader($content) . $content; + } + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + $header = "POST " . self::FLEEP_HOOK_URI . $this->token . " HTTP/1.1\r\n"; + $header .= "Host: " . self::FLEEP_HOST . "\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . \strlen($content) . "\r\n"; + $header .= "\r\n"; + return $header; + } + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + $dataArray = array('message' => $record['formatted']); + return \http_build_query($dataArray); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php new file mode 100644 index 000000000..9fd67e0c3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php @@ -0,0 +1,114 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FlowdockFormatter; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Sends notifications through the Flowdock push API + * + * This must be configured with a FlowdockFormatter instance via setFormatter() + * + * Notes: + * API token - Flowdock API token + * + * @author Dominik Liebler + * @see https://www.flowdock.com/api/push + */ +class FlowdockHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\SocketHandler +{ + /** + * @var string + */ + protected $apiToken; + /** + * @param string $apiToken + * @param bool|int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * + * @throws MissingExtensionException if OpenSSL is missing + */ + public function __construct($apiToken, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if (!\extension_loaded('openssl')) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('The OpenSSL PHP extension is required to use the FlowdockHandler'); + } + parent::__construct('ssl://api.flowdock.com:443', $level, $bubble); + $this->apiToken = $apiToken; + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + if (!$formatter instanceof \Google\Site_Kit_Dependencies\Monolog\Formatter\FlowdockFormatter) { + throw new \InvalidArgumentException('The FlowdockHandler requires an instance of Monolog\\Formatter\\FlowdockFormatter to function correctly'); + } + return parent::setFormatter($formatter); + } + /** + * Gets the default formatter. + * + * @return FormatterInterface + */ + protected function getDefaultFormatter() + { + throw new \InvalidArgumentException('The FlowdockHandler must be configured (via setFormatter) with an instance of Monolog\\Formatter\\FlowdockFormatter to function correctly'); + } + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + parent::write($record); + $this->closeSocket(); + } + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + return $this->buildHeader($content) . $content; + } + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + return \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($record['formatted']['flowdock']); + } + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + $header = "POST /v1/messages/team_inbox/" . $this->apiToken . " HTTP/1.1\r\n"; + $header .= "Host: api.flowdock.com\r\n"; + $header .= "Content-Type: application/json\r\n"; + $header .= "Content-Length: " . \strlen($content) . "\r\n"; + $header .= "\r\n"; + return $header; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php new file mode 100644 index 000000000..90a7a25f7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Interface to describe loggers that have a formatter + * + * This interface is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +interface FormattableHandlerInterface +{ + /** + * Sets the formatter. + * + * @param FormatterInterface $formatter + * @return HandlerInterface self + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) : \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface; + /** + * Gets the formatter. + * + * @return FormatterInterface + */ + public function getFormatter() : \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php new file mode 100644 index 000000000..f5ea50092 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +/** + * Helper trait for implementing FormattableInterface + * + * This trait is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +trait FormattableHandlerTrait +{ + /** + * @var FormatterInterface + */ + protected $formatter; + /** + * {@inheritdoc} + * @suppress PhanTypeMismatchReturn + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) : \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface + { + $this->formatter = $formatter; + return $this; + } + /** + * {@inheritdoc} + */ + public function getFormatter() : \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface + { + if (!$this->formatter) { + $this->formatter = $this->getDefaultFormatter(); + } + return $this->formatter; + } + /** + * Gets the default formatter. + * + * Overwrite this if the LineFormatter is not a good default for your handler. + */ + protected function getDefaultFormatter() : \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/GelfHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/GelfHandler.php new file mode 100644 index 000000000..6fa97950c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/GelfHandler.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Gelf\IMessagePublisher; +use Google\Site_Kit_Dependencies\Gelf\PublisherInterface; +use Google\Site_Kit_Dependencies\Gelf\Publisher; +use InvalidArgumentException; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\GelfMessageFormatter; +/** + * Handler to send messages to a Graylog2 (http://www.graylog2.org) server + * + * @author Matt Lehner + * @author Benjamin Zikarsky + */ +class GelfHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * @var Publisher|PublisherInterface|IMessagePublisher the publisher object that sends the message to the server + */ + protected $publisher; + /** + * @param PublisherInterface|IMessagePublisher|Publisher $publisher a publisher object + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($publisher, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + parent::__construct($level, $bubble); + if (!$publisher instanceof \Google\Site_Kit_Dependencies\Gelf\Publisher && !$publisher instanceof \Google\Site_Kit_Dependencies\Gelf\IMessagePublisher && !$publisher instanceof \Google\Site_Kit_Dependencies\Gelf\PublisherInterface) { + throw new \InvalidArgumentException('Invalid publisher, expected a Gelf\\Publisher, Gelf\\IMessagePublisher or Gelf\\PublisherInterface instance'); + } + $this->publisher = $publisher; + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->publisher->publish($record['formatted']); + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\GelfMessageFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/GroupHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/GroupHandler.php new file mode 100644 index 000000000..2ef5389f3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/GroupHandler.php @@ -0,0 +1,102 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +/** + * Forwards records to multiple handlers + * + * @author Lenar Lõhmus + */ +class GroupHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + protected $handlers; + /** + * @param array $handlers Array of Handlers. + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(array $handlers, $bubble = \true) + { + foreach ($handlers as $handler) { + if (!$handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface) { + throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.'); + } + } + $this->handlers = $handlers; + $this->bubble = $bubble; + } + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + foreach ($this->handlers as $handler) { + if ($handler->isHandling($record)) { + return \true; + } + } + return \false; + } + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + } + foreach ($this->handlers as $handler) { + $handler->handle($record); + } + return \false === $this->bubble; + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + if ($this->processors) { + $processed = array(); + foreach ($records as $record) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + $processed[] = $record; + } + $records = $processed; + } + foreach ($this->handlers as $handler) { + $handler->handleBatch($records); + } + } + public function reset() + { + parent::reset(); + foreach ($this->handlers as $handler) { + if ($handler instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + $handler->reset(); + } + } + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + foreach ($this->handlers as $handler) { + $handler->setFormatter($formatter); + } + return $this; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HandlerInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HandlerInterface.php new file mode 100644 index 000000000..0bb293434 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HandlerInterface.php @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Interface that all Monolog Handlers must implement + * + * @author Jordi Boggiano + */ +interface HandlerInterface +{ + /** + * Checks whether the given record will be handled by this handler. + * + * This is mostly done for performance reasons, to avoid calling processors for nothing. + * + * Handlers should still check the record levels within handle(), returning false in isHandling() + * is no guarantee that handle() will not be called, and isHandling() might not be called + * for a given record. + * + * @param array $record Partial log record containing only a level key + * + * @return bool + */ + public function isHandling(array $record); + /** + * Handles a record. + * + * All records may be passed to this method, and the handler should discard + * those that it does not want to handle. + * + * The return value of this function controls the bubbling process of the handler stack. + * Unless the bubbling is interrupted (by returning true), the Logger class will keep on + * calling further handlers in the stack with a given log record. + * + * @param array $record The record to handle + * @return bool true means that this handler handled the record, and that bubbling is not permitted. + * false means the record was either not processed or that this handler allows bubbling. + */ + public function handle(array $record); + /** + * Handles a set of records at once. + * + * @param array $records The records to handle (an array of record arrays) + */ + public function handleBatch(array $records); + /** + * Adds a processor in the stack. + * + * @param callable $callback + * @return self + */ + public function pushProcessor($callback); + /** + * Removes the processor on top of the stack and returns it. + * + * @return callable + */ + public function popProcessor(); + /** + * Sets the formatter. + * + * @param FormatterInterface $formatter + * @return self + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter); + /** + * Gets the formatter. + * + * @return FormatterInterface + */ + public function getFormatter(); +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php new file mode 100644 index 000000000..0b61c8a72 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php @@ -0,0 +1,103 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * This simple wrapper class can be used to extend handlers functionality. + * + * Example: A custom filtering that can be applied to any handler. + * + * Inherit from this class and override handle() like this: + * + * public function handle(array $record) + * { + * if ($record meets certain conditions) { + * return false; + * } + * return $this->handler->handle($record); + * } + * + * @author Alexey Karapetov + */ +class HandlerWrapper implements \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface, \Google\Site_Kit_Dependencies\Monolog\ResettableInterface +{ + /** + * @var HandlerInterface + */ + protected $handler; + /** + * HandlerWrapper constructor. + * @param HandlerInterface $handler + */ + public function __construct(\Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface $handler) + { + $this->handler = $handler; + } + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return $this->handler->isHandling($record); + } + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + return $this->handler->handle($record); + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + return $this->handler->handleBatch($records); + } + /** + * {@inheritdoc} + */ + public function pushProcessor($callback) + { + $this->handler->pushProcessor($callback); + return $this; + } + /** + * {@inheritdoc} + */ + public function popProcessor() + { + return $this->handler->popProcessor(); + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->handler->setFormatter($formatter); + return $this; + } + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->handler->getFormatter(); + } + public function reset() + { + if ($this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + return $this->handler->reset(); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HipChatHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HipChatHandler.php new file mode 100644 index 000000000..833ac9fdd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/HipChatHandler.php @@ -0,0 +1,300 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Sends notifications through the hipchat api to a hipchat room + * + * Notes: + * API token - HipChat API token + * Room - HipChat Room Id or name, where messages are sent + * Name - Name used to send the message (from) + * notify - Should the message trigger a notification in the clients + * version - The API version to use (HipChatHandler::API_V1 | HipChatHandler::API_V2) + * + * @author Rafael Dohms + * @see https://www.hipchat.com/docs/api + */ +class HipChatHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\SocketHandler +{ + /** + * Use API version 1 + */ + const API_V1 = 'v1'; + /** + * Use API version v2 + */ + const API_V2 = 'v2'; + /** + * The maximum allowed length for the name used in the "from" field. + */ + const MAXIMUM_NAME_LENGTH = 15; + /** + * The maximum allowed length for the message. + */ + const MAXIMUM_MESSAGE_LENGTH = 9500; + /** + * @var string + */ + private $token; + /** + * @var string + */ + private $room; + /** + * @var string + */ + private $name; + /** + * @var bool + */ + private $notify; + /** + * @var string + */ + private $format; + /** + * @var string + */ + private $host; + /** + * @var string + */ + private $version; + /** + * @param string $token HipChat API Token + * @param string $room The room that should be alerted of the message (Id or Name) + * @param string $name Name used in the "from" field. + * @param bool $notify Trigger a notification in clients or not + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $useSSL Whether to connect via SSL. + * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages) + * @param string $host The HipChat server hostname. + * @param string $version The HipChat API version (default HipChatHandler::API_V1) + */ + public function __construct($token, $room, $name = 'Monolog', $notify = \false, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL, $bubble = \true, $useSSL = \true, $format = 'text', $host = 'api.hipchat.com', $version = self::API_V1) + { + @\trigger_error('The Monolog\\Handler\\HipChatHandler class is deprecated. You should migrate to Slack and the SlackWebhookHandler / SlackbotHandler, see https://www.atlassian.com/partnerships/slack', \E_USER_DEPRECATED); + if ($version == self::API_V1 && !$this->validateStringLength($name, static::MAXIMUM_NAME_LENGTH)) { + throw new \InvalidArgumentException('The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.'); + } + $connectionString = $useSSL ? 'ssl://' . $host . ':443' : $host . ':80'; + parent::__construct($connectionString, $level, $bubble); + $this->token = $token; + $this->name = $name; + $this->notify = $notify; + $this->room = $room; + $this->format = $format; + $this->host = $host; + $this->version = $version; + } + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + return $this->buildHeader($content) . $content; + } + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + $dataArray = array('notify' => $this->version == self::API_V1 ? $this->notify ? 1 : 0 : ($this->notify ? 'true' : 'false'), 'message' => $record['formatted'], 'message_format' => $this->format, 'color' => $this->getAlertColor($record['level'])); + if (!$this->validateStringLength($dataArray['message'], static::MAXIMUM_MESSAGE_LENGTH)) { + if (\function_exists('mb_substr')) { + $dataArray['message'] = \mb_substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH) . ' [truncated]'; + } else { + $dataArray['message'] = \substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH) . ' [truncated]'; + } + } + // if we are using the legacy API then we need to send some additional information + if ($this->version == self::API_V1) { + $dataArray['room_id'] = $this->room; + } + // append the sender name if it is set + // always append it if we use the v1 api (it is required in v1) + if ($this->version == self::API_V1 || $this->name !== null) { + $dataArray['from'] = (string) $this->name; + } + return \http_build_query($dataArray); + } + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + if ($this->version == self::API_V1) { + $header = "POST /v1/rooms/message?format=json&auth_token={$this->token} HTTP/1.1\r\n"; + } else { + // needed for rooms with special (spaces, etc) characters in the name + $room = \rawurlencode($this->room); + $header = "POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n"; + } + $header .= "Host: {$this->host}\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . \strlen($content) . "\r\n"; + $header .= "\r\n"; + return $header; + } + /** + * Assigns a color to each level of log records. + * + * @param int $level + * @return string + */ + protected function getAlertColor($level) + { + switch (\true) { + case $level >= \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR: + return 'red'; + case $level >= \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING: + return 'yellow'; + case $level >= \Google\Site_Kit_Dependencies\Monolog\Logger::INFO: + return 'green'; + case $level == \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG: + return 'gray'; + default: + return 'yellow'; + } + } + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + parent::write($record); + $this->finalizeWrite(); + } + /** + * Finalizes the request by reading some bytes and then closing the socket + * + * If we do not read some but close the socket too early, hipchat sometimes + * drops the request entirely. + */ + protected function finalizeWrite() + { + $res = $this->getResource(); + if (\is_resource($res)) { + @\fread($res, 2048); + } + $this->closeSocket(); + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + if (\count($records) == 0) { + return \true; + } + $batchRecords = $this->combineRecords($records); + $handled = \false; + foreach ($batchRecords as $batchRecord) { + if ($this->isHandling($batchRecord)) { + $this->write($batchRecord); + $handled = \true; + } + } + if (!$handled) { + return \false; + } + return \false === $this->bubble; + } + /** + * Combines multiple records into one. Error level of the combined record + * will be the highest level from the given records. Datetime will be taken + * from the first record. + * + * @param array $records + * @return array + */ + private function combineRecords(array $records) + { + $batchRecord = null; + $batchRecords = array(); + $messages = array(); + $formattedMessages = array(); + $level = 0; + $levelName = null; + $datetime = null; + foreach ($records as $record) { + $record = $this->processRecord($record); + if ($record['level'] > $level) { + $level = $record['level']; + $levelName = $record['level_name']; + } + if (null === $datetime) { + $datetime = $record['datetime']; + } + $messages[] = $record['message']; + $messageStr = \implode(\PHP_EOL, $messages); + $formattedMessages[] = $this->getFormatter()->format($record); + $formattedMessageStr = \implode('', $formattedMessages); + $batchRecord = array('message' => $messageStr, 'formatted' => $formattedMessageStr, 'context' => array(), 'extra' => array()); + if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) { + // Pop the last message and implode the remaining messages + $lastMessage = \array_pop($messages); + $lastFormattedMessage = \array_pop($formattedMessages); + $batchRecord['message'] = \implode(\PHP_EOL, $messages); + $batchRecord['formatted'] = \implode('', $formattedMessages); + $batchRecords[] = $batchRecord; + $messages = array($lastMessage); + $formattedMessages = array($lastFormattedMessage); + $batchRecord = null; + } + } + if (null !== $batchRecord) { + $batchRecords[] = $batchRecord; + } + // Set the max level and datetime for all records + foreach ($batchRecords as &$batchRecord) { + $batchRecord = \array_merge($batchRecord, array('level' => $level, 'level_name' => $levelName, 'datetime' => $datetime)); + } + return $batchRecords; + } + /** + * Validates the length of a string. + * + * If the `mb_strlen()` function is available, it will use that, as HipChat + * allows UTF-8 characters. Otherwise, it will fall back to `strlen()`. + * + * Note that this might cause false failures in the specific case of using + * a valid name with less than 16 characters, but 16 or more bytes, on a + * system where `mb_strlen()` is unavailable. + * + * @param string $str + * @param int $length + * + * @return bool + */ + private function validateStringLength($str, $length) + { + if (\function_exists('mb_strlen')) { + return \mb_strlen($str) <= $length; + } + return \strlen($str) <= $length; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php new file mode 100644 index 000000000..87225a961 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * IFTTTHandler uses cURL to trigger IFTTT Maker actions + * + * Register a secret key and trigger/event name at https://ifttt.com/maker + * + * value1 will be the channel from monolog's Logger constructor, + * value2 will be the level name (ERROR, WARNING, ..) + * value3 will be the log record's message + * + * @author Nehal Patel + */ +class IFTTTHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + private $eventName; + private $secretKey; + /** + * @param string $eventName The name of the IFTTT Maker event that should be triggered + * @param string $secretKey A valid IFTTT secret key + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($eventName, $secretKey, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR, $bubble = \true) + { + $this->eventName = $eventName; + $this->secretKey = $secretKey; + parent::__construct($level, $bubble); + } + /** + * {@inheritdoc} + */ + public function write(array $record) + { + $postData = array("value1" => $record["channel"], "value2" => $record["level_name"], "value3" => $record["message"]); + $postString = \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($postData); + $ch = \curl_init(); + \curl_setopt($ch, \CURLOPT_URL, "https://maker.ifttt.com/trigger/" . $this->eventName . "/with/key/" . $this->secretKey); + \curl_setopt($ch, \CURLOPT_POST, \true); + \curl_setopt($ch, \CURLOPT_RETURNTRANSFER, \true); + \curl_setopt($ch, \CURLOPT_POSTFIELDS, $postString); + \curl_setopt($ch, \CURLOPT_HTTPHEADER, array("Content-Type: application/json")); + \Google\Site_Kit_Dependencies\Monolog\Handler\Curl\Util::execute($ch); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php new file mode 100644 index 000000000..715eabdeb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Inspired on LogEntriesHandler. + * + * @author Robert Kaufmann III + * @author Gabriel Machado + */ +class InsightOpsHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\SocketHandler +{ + /** + * @var string + */ + protected $logToken; + /** + * @param string $token Log token supplied by InsightOps + * @param string $region Region where InsightOps account is hosted. Could be 'us' or 'eu'. + * @param bool $useSSL Whether or not SSL encryption should be used + * @param int $level The minimum logging level to trigger this handler + * @param bool $bubble Whether or not messages that are handled should bubble up the stack. + * + * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing + */ + public function __construct($token, $region = 'us', $useSSL = \true, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if ($useSSL && !\extension_loaded('openssl')) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for InsightOpsHandler'); + } + $endpoint = $useSSL ? 'ssl://' . $region . '.data.logs.insight.rapid7.com:443' : $region . '.data.logs.insight.rapid7.com:80'; + parent::__construct($endpoint, $level, $bubble); + $this->logToken = $token; + } + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + return $this->logToken . ' ' . $record['formatted']; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php new file mode 100644 index 000000000..46a807e51 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * @author Robert Kaufmann III + */ +class LogEntriesHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\SocketHandler +{ + /** + * @var string + */ + protected $logToken; + /** + * @param string $token Log token supplied by LogEntries + * @param bool $useSSL Whether or not SSL encryption should be used. + * @param int $level The minimum logging level to trigger this handler + * @param bool $bubble Whether or not messages that are handled should bubble up the stack. + * + * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing + */ + public function __construct($token, $useSSL = \true, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $host = 'data.logentries.com') + { + if ($useSSL && !\extension_loaded('openssl')) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler'); + } + $endpoint = $useSSL ? 'ssl://' . $host . ':443' : $host . ':80'; + parent::__construct($endpoint, $level, $bubble); + $this->logToken = $token; + } + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + return $this->logToken . ' ' . $record['formatted']; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/LogglyHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/LogglyHandler.php new file mode 100644 index 000000000..669298e48 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/LogglyHandler.php @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\LogglyFormatter; +/** + * Sends errors to Loggly. + * + * @author Przemek Sobstel + * @author Adam Pancutt + * @author Gregory Barchard + */ +class LogglyHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + const HOST = 'logs-01.loggly.com'; + const ENDPOINT_SINGLE = 'inputs'; + const ENDPOINT_BATCH = 'bulk'; + protected $token; + protected $tag = array(); + public function __construct($token, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if (!\extension_loaded('curl')) { + throw new \LogicException('The curl extension is needed to use the LogglyHandler'); + } + $this->token = $token; + parent::__construct($level, $bubble); + } + public function setTag($tag) + { + $tag = !empty($tag) ? $tag : array(); + $this->tag = \is_array($tag) ? $tag : array($tag); + } + public function addTag($tag) + { + if (!empty($tag)) { + $tag = \is_array($tag) ? $tag : array($tag); + $this->tag = \array_unique(\array_merge($this->tag, $tag)); + } + } + protected function write(array $record) + { + $this->send($record["formatted"], self::ENDPOINT_SINGLE); + } + public function handleBatch(array $records) + { + $level = $this->level; + $records = \array_filter($records, function ($record) use($level) { + return $record['level'] >= $level; + }); + if ($records) { + $this->send($this->getFormatter()->formatBatch($records), self::ENDPOINT_BATCH); + } + } + protected function send($data, $endpoint) + { + $url = \sprintf("https://%s/%s/%s/", self::HOST, $endpoint, $this->token); + $headers = array('Content-Type: application/json'); + if (!empty($this->tag)) { + $headers[] = 'X-LOGGLY-TAG: ' . \implode(',', $this->tag); + } + $ch = \curl_init(); + \curl_setopt($ch, \CURLOPT_URL, $url); + \curl_setopt($ch, \CURLOPT_POST, \true); + \curl_setopt($ch, \CURLOPT_POSTFIELDS, $data); + \curl_setopt($ch, \CURLOPT_HTTPHEADER, $headers); + \curl_setopt($ch, \CURLOPT_RETURNTRANSFER, \true); + \Google\Site_Kit_Dependencies\Monolog\Handler\Curl\Util::execute($ch); + } + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LogglyFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MailHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MailHandler.php new file mode 100644 index 000000000..bc6e9cfe4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MailHandler.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +/** + * Base class for all mail handlers + * + * @author Gyula Sallai + */ +abstract class MailHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $messages = array(); + foreach ($records as $record) { + if ($record['level'] < $this->level) { + continue; + } + $messages[] = $this->processRecord($record); + } + if (!empty($messages)) { + $this->send((string) $this->getFormatter()->formatBatch($messages), $messages); + } + } + /** + * Send a mail with the given content + * + * @param string $content formatted email body to be sent + * @param array $records the array of log records that formed this content + */ + protected abstract function send($content, array $records); + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->send((string) $record['formatted'], array($record)); + } + protected function getHighestRecord(array $records) + { + $highestRecord = null; + foreach ($records as $record) { + if ($highestRecord === null || $highestRecord['level'] < $record['level']) { + $highestRecord = $record; + } + } + return $highestRecord; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MandrillHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MandrillHandler.php new file mode 100644 index 000000000..a24b42ef4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MandrillHandler.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * MandrillHandler uses cURL to send the emails to the Mandrill API + * + * @author Adam Nicholson + */ +class MandrillHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\MailHandler +{ + protected $message; + protected $apiKey; + /** + * @param string $apiKey A valid Mandrill API key + * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($apiKey, $message, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR, $bubble = \true) + { + parent::__construct($level, $bubble); + if (!$message instanceof \Google\Site_Kit_Dependencies\Swift_Message && \is_callable($message)) { + $message = \call_user_func($message); + } + if (!$message instanceof \Google\Site_Kit_Dependencies\Swift_Message) { + throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it'); + } + $this->message = $message; + $this->apiKey = $apiKey; + } + /** + * {@inheritdoc} + */ + protected function send($content, array $records) + { + $message = clone $this->message; + $message->setBody($content); + $message->setDate(\time()); + $ch = \curl_init(); + \curl_setopt($ch, \CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json'); + \curl_setopt($ch, \CURLOPT_POST, 1); + \curl_setopt($ch, \CURLOPT_RETURNTRANSFER, 1); + \curl_setopt($ch, \CURLOPT_POSTFIELDS, \http_build_query(array('key' => $this->apiKey, 'raw_message' => (string) $message, 'async' => \false))); + \Google\Site_Kit_Dependencies\Monolog\Handler\Curl\Util::execute($ch); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php new file mode 100644 index 000000000..1864616ac --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +/** + * Exception can be thrown if an extension for an handler is missing + * + * @author Christian Bergau + */ +class MissingExtensionException extends \Exception +{ +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php new file mode 100644 index 000000000..05d865f28 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter; +/** + * Logs to a MongoDB database. + * + * usage example: + * + * $log = new Logger('application'); + * $mongodb = new MongoDBHandler(new \Mongo("mongodb://localhost:27017"), "logs", "prod"); + * $log->pushHandler($mongodb); + * + * @author Thomas Tourlourat + */ +class MongoDBHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + protected $mongoCollection; + public function __construct($mongo, $database, $collection, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo || $mongo instanceof \Google\Site_Kit_Dependencies\MongoDB\Client)) { + throw new \InvalidArgumentException('MongoClient, Mongo or MongoDB\\Client instance required'); + } + $this->mongoCollection = $mongo->selectCollection($database, $collection); + parent::__construct($level, $bubble); + } + protected function write(array $record) + { + if ($this->mongoCollection instanceof \Google\Site_Kit_Dependencies\MongoDB\Collection) { + $this->mongoCollection->insertOne($record["formatted"]); + } else { + $this->mongoCollection->save($record["formatted"]); + } + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php new file mode 100644 index 000000000..1bd5e44ed --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php @@ -0,0 +1,161 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +/** + * NativeMailerHandler uses the mail() function to send the emails + * + * @author Christophe Coevoet + * @author Mark Garrett + */ +class NativeMailerHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\MailHandler +{ + /** + * The email addresses to which the message will be sent + * @var array + */ + protected $to; + /** + * The subject of the email + * @var string + */ + protected $subject; + /** + * Optional headers for the message + * @var array + */ + protected $headers = array(); + /** + * Optional parameters for the message + * @var array + */ + protected $parameters = array(); + /** + * The wordwrap length for the message + * @var int + */ + protected $maxColumnWidth; + /** + * The Content-type for the message + * @var string + */ + protected $contentType = 'text/plain'; + /** + * The encoding for the message + * @var string + */ + protected $encoding = 'utf-8'; + /** + * @param string|array $to The receiver of the mail + * @param string $subject The subject of the mail + * @param string $from The sender of the mail + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int $maxColumnWidth The maximum column width that the message lines will have + */ + public function __construct($to, $subject, $from, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR, $bubble = \true, $maxColumnWidth = 70) + { + parent::__construct($level, $bubble); + $this->to = \is_array($to) ? $to : array($to); + $this->subject = $subject; + $this->addHeader(\sprintf('From: %s', $from)); + $this->maxColumnWidth = $maxColumnWidth; + } + /** + * Add headers to the message + * + * @param string|array $headers Custom added headers + * @return self + */ + public function addHeader($headers) + { + foreach ((array) $headers as $header) { + if (\strpos($header, "\n") !== \false || \strpos($header, "\r") !== \false) { + throw new \InvalidArgumentException('Headers can not contain newline characters for security reasons'); + } + $this->headers[] = $header; + } + return $this; + } + /** + * Add parameters to the message + * + * @param string|array $parameters Custom added parameters + * @return self + */ + public function addParameter($parameters) + { + $this->parameters = \array_merge($this->parameters, (array) $parameters); + return $this; + } + /** + * {@inheritdoc} + */ + protected function send($content, array $records) + { + $content = \wordwrap($content, $this->maxColumnWidth); + $headers = \ltrim(\implode("\r\n", $this->headers) . "\r\n", "\r\n"); + $headers .= 'Content-type: ' . $this->getContentType() . '; charset=' . $this->getEncoding() . "\r\n"; + if ($this->getContentType() == 'text/html' && \false === \strpos($headers, 'MIME-Version:')) { + $headers .= 'MIME-Version: 1.0' . "\r\n"; + } + $subject = $this->subject; + if ($records) { + $subjectFormatter = new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter($this->subject); + $subject = $subjectFormatter->format($this->getHighestRecord($records)); + } + $parameters = \implode(' ', $this->parameters); + foreach ($this->to as $to) { + \mail($to, $subject, $content, $headers, $parameters); + } + } + /** + * @return string $contentType + */ + public function getContentType() + { + return $this->contentType; + } + /** + * @return string $encoding + */ + public function getEncoding() + { + return $this->encoding; + } + /** + * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML + * messages. + * @return self + */ + public function setContentType($contentType) + { + if (\strpos($contentType, "\n") !== \false || \strpos($contentType, "\r") !== \false) { + throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection'); + } + $this->contentType = $contentType; + return $this; + } + /** + * @param string $encoding + * @return self + */ + public function setEncoding($encoding) + { + if (\strpos($encoding, "\n") !== \false || \strpos($encoding, "\r") !== \false) { + throw new \InvalidArgumentException('The encoding can not contain newline characters to prevent email header injection'); + } + $this->encoding = $encoding; + return $this; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php new file mode 100644 index 000000000..8ef065017 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php @@ -0,0 +1,179 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +use Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter; +/** + * Class to record a log on a NewRelic application. + * Enabling New Relic High Security mode may prevent capture of useful information. + * + * This handler requires a NormalizerFormatter to function and expects an array in $record['formatted'] + * + * @see https://docs.newrelic.com/docs/agents/php-agent + * @see https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security + */ +class NewRelicHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * Name of the New Relic application that will receive logs from this handler. + * + * @var string + */ + protected $appName; + /** + * Name of the current transaction + * + * @var string + */ + protected $transactionName; + /** + * Some context and extra data is passed into the handler as arrays of values. Do we send them as is + * (useful if we are using the API), or explode them for display on the NewRelic RPM website? + * + * @var bool + */ + protected $explodeArrays; + /** + * {@inheritDoc} + * + * @param string $appName + * @param bool $explodeArrays + * @param string $transactionName + */ + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR, $bubble = \true, $appName = null, $explodeArrays = \false, $transactionName = null) + { + parent::__construct($level, $bubble); + $this->appName = $appName; + $this->explodeArrays = $explodeArrays; + $this->transactionName = $transactionName; + } + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + if (!$this->isNewRelicEnabled()) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler'); + } + if ($appName = $this->getAppName($record['context'])) { + $this->setNewRelicAppName($appName); + } + if ($transactionName = $this->getTransactionName($record['context'])) { + $this->setNewRelicTransactionName($transactionName); + unset($record['formatted']['context']['transaction_name']); + } + if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || \PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable)) { + \newrelic_notice_error($record['message'], $record['context']['exception']); + unset($record['formatted']['context']['exception']); + } else { + \newrelic_notice_error($record['message']); + } + if (isset($record['formatted']['context']) && \is_array($record['formatted']['context'])) { + foreach ($record['formatted']['context'] as $key => $parameter) { + if (\is_array($parameter) && $this->explodeArrays) { + foreach ($parameter as $paramKey => $paramValue) { + $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue); + } + } else { + $this->setNewRelicParameter('context_' . $key, $parameter); + } + } + } + if (isset($record['formatted']['extra']) && \is_array($record['formatted']['extra'])) { + foreach ($record['formatted']['extra'] as $key => $parameter) { + if (\is_array($parameter) && $this->explodeArrays) { + foreach ($parameter as $paramKey => $paramValue) { + $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue); + } + } else { + $this->setNewRelicParameter('extra_' . $key, $parameter); + } + } + } + } + /** + * Checks whether the NewRelic extension is enabled in the system. + * + * @return bool + */ + protected function isNewRelicEnabled() + { + return \extension_loaded('newrelic'); + } + /** + * Returns the appname where this log should be sent. Each log can override the default appname, set in this + * handler's constructor, by providing the appname in it's context. + * + * @param array $context + * @return null|string + */ + protected function getAppName(array $context) + { + if (isset($context['appname'])) { + return $context['appname']; + } + return $this->appName; + } + /** + * Returns the name of the current transaction. Each log can override the default transaction name, set in this + * handler's constructor, by providing the transaction_name in it's context + * + * @param array $context + * + * @return null|string + */ + protected function getTransactionName(array $context) + { + if (isset($context['transaction_name'])) { + return $context['transaction_name']; + } + return $this->transactionName; + } + /** + * Sets the NewRelic application that should receive this log. + * + * @param string $appName + */ + protected function setNewRelicAppName($appName) + { + \newrelic_set_appname($appName); + } + /** + * Overwrites the name of the current transaction + * + * @param string $transactionName + */ + protected function setNewRelicTransactionName($transactionName) + { + \newrelic_name_transaction($transactionName); + } + /** + * @param string $key + * @param mixed $value + */ + protected function setNewRelicParameter($key, $value) + { + if (null === $value || \is_scalar($value)) { + \newrelic_add_custom_parameter($key, $value); + } else { + \newrelic_add_custom_parameter($key, \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($value, null, \true)); + } + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NullHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NullHandler.php new file mode 100644 index 000000000..47424be83 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/NullHandler.php @@ -0,0 +1,41 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Blackhole + * + * Any record it can handle will be thrown away. This can be used + * to put on top of an existing stack to override it temporarily. + * + * @author Jordi Boggiano + */ +class NullHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + /** + * @param int $level The minimum logging level at which this handler will be triggered + */ + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG) + { + parent::__construct($level, \false); + } + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($record['level'] < $this->level) { + return \false; + } + return \true; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php new file mode 100644 index 000000000..29ace6313 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php @@ -0,0 +1,234 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Exception; +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +use Google\Site_Kit_Dependencies\PhpConsole\Connector; +use Google\Site_Kit_Dependencies\PhpConsole\Handler; +use Google\Site_Kit_Dependencies\PhpConsole\Helper; +/** + * Monolog handler for Google Chrome extension "PHP Console" + * + * Display PHP error/debug log messages in Google Chrome console and notification popups, executes PHP code remotely + * + * Usage: + * 1. Install Google Chrome extension https://chrome.google.com/webstore/detail/php-console/nfhmhhlpfleoednkpnnnkolmclajemef + * 2. See overview https://github.com/barbushin/php-console#overview + * 3. Install PHP Console library https://github.com/barbushin/php-console#installation + * 4. Example (result will looks like http://i.hizliresim.com/vg3Pz4.png) + * + * $logger = new \Monolog\Logger('all', array(new \Monolog\Handler\PHPConsoleHandler())); + * \Monolog\ErrorHandler::register($logger); + * echo $undefinedVar; + * $logger->addDebug('SELECT * FROM users', array('db', 'time' => 0.012)); + * PC::debug($_SERVER); // PHP Console debugger for any type of vars + * + * @author Sergey Barbushin https://www.linkedin.com/in/barbushin + */ +class PHPConsoleHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + private $options = array( + 'enabled' => \true, + // bool Is PHP Console server enabled + 'classesPartialsTraceIgnore' => array('Monolog\\'), + // array Hide calls of classes started with... + 'debugTagsKeysInContext' => array(0, 'tag'), + // bool Is PHP Console server enabled + 'useOwnErrorsHandler' => \false, + // bool Enable errors handling + 'useOwnExceptionsHandler' => \false, + // bool Enable exceptions handling + 'sourcesBasePath' => null, + // string Base path of all project sources to strip in errors source paths + 'registerHelper' => \true, + // bool Register PhpConsole\Helper that allows short debug calls like PC::debug($var, 'ta.g.s') + 'serverEncoding' => null, + // string|null Server internal encoding + 'headersLimit' => null, + // int|null Set headers size limit for your web-server + 'password' => null, + // string|null Protect PHP Console connection by password + 'enableSslOnlyMode' => \false, + // bool Force connection by SSL for clients with PHP Console installed + 'ipMasks' => array(), + // array Set IP masks of clients that will be allowed to connect to PHP Console: array('192.168.*.*', '127.0.0.1') + 'enableEvalListener' => \false, + // bool Enable eval request to be handled by eval dispatcher(if enabled, 'password' option is also required) + 'dumperDetectCallbacks' => \false, + // bool Convert callback items in dumper vars to (callback SomeClass::someMethod) strings + 'dumperLevelLimit' => 5, + // int Maximum dumped vars array or object nested dump level + 'dumperItemsCountLimit' => 100, + // int Maximum dumped var same level array items or object properties number + 'dumperItemSizeLimit' => 5000, + // int Maximum length of any string or dumped array item + 'dumperDumpSizeLimit' => 500000, + // int Maximum approximate size of dumped vars result formatted in JSON + 'detectDumpTraceAndSource' => \false, + // bool Autodetect and append trace data to debug + 'dataStorage' => null, + ); + /** @var Connector */ + private $connector; + /** + * @param array $options See \Monolog\Handler\PHPConsoleHandler::$options for more details + * @param Connector|null $connector Instance of \PhpConsole\Connector class (optional) + * @param int $level + * @param bool $bubble + * @throws Exception + */ + public function __construct(array $options = array(), \Google\Site_Kit_Dependencies\PhpConsole\Connector $connector = null, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if (!\class_exists('Google\\Site_Kit_Dependencies\\PhpConsole\\Connector')) { + throw new \Exception('PHP Console library not found. See https://github.com/barbushin/php-console#installation'); + } + parent::__construct($level, $bubble); + $this->options = $this->initOptions($options); + $this->connector = $this->initConnector($connector); + } + private function initOptions(array $options) + { + $wrongOptions = \array_diff(\array_keys($options), \array_keys($this->options)); + if ($wrongOptions) { + throw new \Exception('Unknown options: ' . \implode(', ', $wrongOptions)); + } + return \array_replace($this->options, $options); + } + private function initConnector(\Google\Site_Kit_Dependencies\PhpConsole\Connector $connector = null) + { + if (!$connector) { + if ($this->options['dataStorage']) { + \Google\Site_Kit_Dependencies\PhpConsole\Connector::setPostponeStorage($this->options['dataStorage']); + } + $connector = \Google\Site_Kit_Dependencies\PhpConsole\Connector::getInstance(); + } + if ($this->options['registerHelper'] && !\Google\Site_Kit_Dependencies\PhpConsole\Helper::isRegistered()) { + \Google\Site_Kit_Dependencies\PhpConsole\Helper::register(); + } + if ($this->options['enabled'] && $connector->isActiveClient()) { + if ($this->options['useOwnErrorsHandler'] || $this->options['useOwnExceptionsHandler']) { + $handler = \Google\Site_Kit_Dependencies\PhpConsole\Handler::getInstance(); + $handler->setHandleErrors($this->options['useOwnErrorsHandler']); + $handler->setHandleExceptions($this->options['useOwnExceptionsHandler']); + $handler->start(); + } + if ($this->options['sourcesBasePath']) { + $connector->setSourcesBasePath($this->options['sourcesBasePath']); + } + if ($this->options['serverEncoding']) { + $connector->setServerEncoding($this->options['serverEncoding']); + } + if ($this->options['password']) { + $connector->setPassword($this->options['password']); + } + if ($this->options['enableSslOnlyMode']) { + $connector->enableSslOnlyMode(); + } + if ($this->options['ipMasks']) { + $connector->setAllowedIpMasks($this->options['ipMasks']); + } + if ($this->options['headersLimit']) { + $connector->setHeadersLimit($this->options['headersLimit']); + } + if ($this->options['detectDumpTraceAndSource']) { + $connector->getDebugDispatcher()->detectTraceAndSource = \true; + } + $dumper = $connector->getDumper(); + $dumper->levelLimit = $this->options['dumperLevelLimit']; + $dumper->itemsCountLimit = $this->options['dumperItemsCountLimit']; + $dumper->itemSizeLimit = $this->options['dumperItemSizeLimit']; + $dumper->dumpSizeLimit = $this->options['dumperDumpSizeLimit']; + $dumper->detectCallbacks = $this->options['dumperDetectCallbacks']; + if ($this->options['enableEvalListener']) { + $connector->startEvalRequestsListener(); + } + } + return $connector; + } + public function getConnector() + { + return $this->connector; + } + public function getOptions() + { + return $this->options; + } + public function handle(array $record) + { + if ($this->options['enabled'] && $this->connector->isActiveClient()) { + return parent::handle($record); + } + return !$this->bubble; + } + /** + * Writes the record down to the log of the implementing handler + * + * @param array $record + * @return void + */ + protected function write(array $record) + { + if ($record['level'] < \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE) { + $this->handleDebugRecord($record); + } elseif (isset($record['context']['exception']) && $record['context']['exception'] instanceof \Exception) { + $this->handleExceptionRecord($record); + } else { + $this->handleErrorRecord($record); + } + } + private function handleDebugRecord(array $record) + { + $tags = $this->getRecordTags($record); + $message = $record['message']; + if ($record['context']) { + $message .= ' ' . \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($this->connector->getDumper()->dump(\array_filter($record['context'])), null, \true); + } + $this->connector->getDebugDispatcher()->dispatchDebug($message, $tags, $this->options['classesPartialsTraceIgnore']); + } + private function handleExceptionRecord(array $record) + { + $this->connector->getErrorsDispatcher()->dispatchException($record['context']['exception']); + } + private function handleErrorRecord(array $record) + { + $context = $record['context']; + $this->connector->getErrorsDispatcher()->dispatchError(isset($context['code']) ? $context['code'] : null, isset($context['message']) ? $context['message'] : $record['message'], isset($context['file']) ? $context['file'] : null, isset($context['line']) ? $context['line'] : null, $this->options['classesPartialsTraceIgnore']); + } + private function getRecordTags(array &$record) + { + $tags = null; + if (!empty($record['context'])) { + $context =& $record['context']; + foreach ($this->options['debugTagsKeysInContext'] as $key) { + if (!empty($context[$key])) { + $tags = $context[$key]; + if ($key === 0) { + \array_shift($context); + } else { + unset($context[$key]); + } + break; + } + } + } + return $tags ?: \strtolower($record['level_name']); + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter('%message%'); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php new file mode 100644 index 000000000..a2abd5f76 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface; +/** + * Interface to describe loggers that have processors + * + * This interface is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +interface ProcessableHandlerInterface +{ + /** + * Adds a processor in the stack. + * + * @param ProcessorInterface|callable $callback + * @return HandlerInterface self + */ + public function pushProcessor($callback) : \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface; + /** + * Removes the processor on top of the stack and returns it. + * + * @throws \LogicException In case the processor stack is empty + * @return callable + */ + public function popProcessor() : callable; +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php new file mode 100644 index 000000000..7c9ecb04e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +/** + * Helper trait for implementing ProcessableInterface + * + * This trait is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +trait ProcessableHandlerTrait +{ + /** + * @var callable[] + */ + protected $processors = []; + /** + * {@inheritdoc} + * @suppress PhanTypeMismatchReturn + */ + public function pushProcessor($callback) : \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface + { + \array_unshift($this->processors, $callback); + return $this; + } + /** + * {@inheritdoc} + */ + public function popProcessor() : callable + { + if (!$this->processors) { + throw new \LogicException('You tried to pop from an empty processor stack.'); + } + return \array_shift($this->processors); + } + /** + * Processes a record. + */ + protected function processRecord(array $record) : array + { + foreach ($this->processors as $processor) { + $record = $processor($record); + } + return $record; + } + protected function resetProcessors() : void + { + foreach ($this->processors as $processor) { + if ($processor instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + $processor->reset(); + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PsrHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PsrHandler.php new file mode 100644 index 000000000..9370e3e4a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PsrHandler.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface; +/** + * Proxies log messages to an existing PSR-3 compliant logger. + * + * @author Michael Moussa + */ +class PsrHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + /** + * PSR-3 compliant logger + * + * @var LoggerInterface + */ + protected $logger; + /** + * @param LoggerInterface $logger The underlying PSR-3 compliant logger to which messages will be proxied + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + parent::__construct($level, $bubble); + $this->logger = $logger; + } + /** + * {@inheritDoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return \false; + } + $this->logger->log(\strtolower($record['level_name']), $record['message'], $record['context']); + return \false === $this->bubble; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PushoverHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PushoverHandler.php new file mode 100644 index 000000000..ad3364075 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/PushoverHandler.php @@ -0,0 +1,135 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Sends notifications through the pushover api to mobile phones + * + * @author Sebastian Göttschkes + * @see https://www.pushover.net/api + */ +class PushoverHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\SocketHandler +{ + private $token; + private $users; + private $title; + private $user; + private $retry; + private $expire; + private $highPriorityLevel; + private $emergencyLevel; + private $useFormattedMessage = \false; + /** + * All parameters that can be sent to Pushover + * @see https://pushover.net/api + * @var array + */ + private $parameterNames = array('token' => \true, 'user' => \true, 'message' => \true, 'device' => \true, 'title' => \true, 'url' => \true, 'url_title' => \true, 'priority' => \true, 'timestamp' => \true, 'sound' => \true, 'retry' => \true, 'expire' => \true, 'callback' => \true); + /** + * Sounds the api supports by default + * @see https://pushover.net/api#sounds + * @var array + */ + private $sounds = array('pushover', 'bike', 'bugle', 'cashregister', 'classical', 'cosmic', 'falling', 'gamelan', 'incoming', 'intermission', 'magic', 'mechanical', 'pianobar', 'siren', 'spacealarm', 'tugboat', 'alien', 'climb', 'persistent', 'echo', 'updown', 'none'); + /** + * @param string $token Pushover api token + * @param string|array $users Pushover user id or array of ids the message will be sent to + * @param string $title Title sent to the Pushover API + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $useSSL Whether to connect via SSL. Required when pushing messages to users that are not + * the pushover.net app owner. OpenSSL is required for this option. + * @param int $highPriorityLevel The minimum logging level at which this handler will start + * sending "high priority" requests to the Pushover API + * @param int $emergencyLevel The minimum logging level at which this handler will start + * sending "emergency" requests to the Pushover API + * @param int $retry The retry parameter specifies how often (in seconds) the Pushover servers will send the same notification to the user. + * @param int $expire The expire parameter specifies how many seconds your notification will continue to be retried for (every retry seconds). + */ + public function __construct($token, $users, $title = null, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL, $bubble = \true, $useSSL = \true, $highPriorityLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL, $emergencyLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY, $retry = 30, $expire = 25200) + { + $connectionString = $useSSL ? 'ssl://api.pushover.net:443' : 'api.pushover.net:80'; + parent::__construct($connectionString, $level, $bubble); + $this->token = $token; + $this->users = (array) $users; + $this->title = $title ?: \gethostname(); + $this->highPriorityLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($highPriorityLevel); + $this->emergencyLevel = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($emergencyLevel); + $this->retry = $retry; + $this->expire = $expire; + } + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + return $this->buildHeader($content) . $content; + } + private function buildContent($record) + { + // Pushover has a limit of 512 characters on title and message combined. + $maxMessageLength = 512 - \strlen($this->title); + $message = $this->useFormattedMessage ? $record['formatted'] : $record['message']; + $message = \substr($message, 0, $maxMessageLength); + $timestamp = $record['datetime']->getTimestamp(); + $dataArray = array('token' => $this->token, 'user' => $this->user, 'message' => $message, 'title' => $this->title, 'timestamp' => $timestamp); + if (isset($record['level']) && $record['level'] >= $this->emergencyLevel) { + $dataArray['priority'] = 2; + $dataArray['retry'] = $this->retry; + $dataArray['expire'] = $this->expire; + } elseif (isset($record['level']) && $record['level'] >= $this->highPriorityLevel) { + $dataArray['priority'] = 1; + } + // First determine the available parameters + $context = \array_intersect_key($record['context'], $this->parameterNames); + $extra = \array_intersect_key($record['extra'], $this->parameterNames); + // Least important info should be merged with subsequent info + $dataArray = \array_merge($extra, $context, $dataArray); + // Only pass sounds that are supported by the API + if (isset($dataArray['sound']) && !\in_array($dataArray['sound'], $this->sounds)) { + unset($dataArray['sound']); + } + return \http_build_query($dataArray); + } + private function buildHeader($content) + { + $header = "POST /1/messages.json HTTP/1.1\r\n"; + $header .= "Host: api.pushover.net\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . \strlen($content) . "\r\n"; + $header .= "\r\n"; + return $header; + } + protected function write(array $record) + { + foreach ($this->users as $user) { + $this->user = $user; + parent::write($record); + $this->closeSocket(); + } + $this->user = null; + } + public function setHighPriorityLevel($value) + { + $this->highPriorityLevel = $value; + } + public function setEmergencyLevel($value) + { + $this->emergencyLevel = $value; + } + /** + * Use the formatted message? + * @param bool $value + */ + public function useFormattedMessage($value) + { + $this->useFormattedMessage = (bool) $value; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RavenHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RavenHandler.php new file mode 100644 index 000000000..67f156bd3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RavenHandler.php @@ -0,0 +1,197 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Raven_Client; +/** + * Handler to send messages to a Sentry (https://github.com/getsentry/sentry) server + * using sentry-php (https://github.com/getsentry/sentry-php) + * + * @author Marc Abramowitz + */ +class RavenHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * Translates Monolog log levels to Raven log levels. + */ + protected $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => \Google\Site_Kit_Dependencies\Raven_Client::DEBUG, \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => \Google\Site_Kit_Dependencies\Raven_Client::INFO, \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => \Google\Site_Kit_Dependencies\Raven_Client::INFO, \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => \Google\Site_Kit_Dependencies\Raven_Client::WARNING, \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => \Google\Site_Kit_Dependencies\Raven_Client::ERROR, \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => \Google\Site_Kit_Dependencies\Raven_Client::FATAL, \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => \Google\Site_Kit_Dependencies\Raven_Client::FATAL, \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => \Google\Site_Kit_Dependencies\Raven_Client::FATAL); + /** + * @var string should represent the current version of the calling + * software. Can be any string (git commit, version number) + */ + protected $release; + /** + * @var Raven_Client the client object that sends the message to the server + */ + protected $ravenClient; + /** + * @var FormatterInterface The formatter to use for the logs generated via handleBatch() + */ + protected $batchFormatter; + /** + * @param Raven_Client $ravenClient + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(\Google\Site_Kit_Dependencies\Raven_Client $ravenClient, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + @\trigger_error('The Monolog\\Handler\\RavenHandler class is deprecated. You should rather upgrade to the sentry/sentry 2.x and use Sentry\\Monolog\\Handler, see https://github.com/getsentry/sentry-php/blob/master/src/Monolog/Handler.php', \E_USER_DEPRECATED); + parent::__construct($level, $bubble); + $this->ravenClient = $ravenClient; + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $level = $this->level; + // filter records based on their level + $records = \array_filter($records, function ($record) use($level) { + return $record['level'] >= $level; + }); + if (!$records) { + return; + } + // the record with the highest severity is the "main" one + $record = \array_reduce($records, function ($highest, $record) { + if (null === $highest || $record['level'] > $highest['level']) { + return $record; + } + return $highest; + }); + // the other ones are added as a context item + $logs = array(); + foreach ($records as $r) { + $logs[] = $this->processRecord($r); + } + if ($logs) { + $record['context']['logs'] = (string) $this->getBatchFormatter()->formatBatch($logs); + } + $this->handle($record); + } + /** + * Sets the formatter for the logs generated by handleBatch(). + * + * @param FormatterInterface $formatter + */ + public function setBatchFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->batchFormatter = $formatter; + } + /** + * Gets the formatter for the logs generated by handleBatch(). + * + * @return FormatterInterface + */ + public function getBatchFormatter() + { + if (!$this->batchFormatter) { + $this->batchFormatter = $this->getDefaultBatchFormatter(); + } + return $this->batchFormatter; + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $previousUserContext = \false; + $options = array(); + $options['level'] = $this->logLevels[$record['level']]; + $options['tags'] = array(); + if (!empty($record['extra']['tags'])) { + $options['tags'] = \array_merge($options['tags'], $record['extra']['tags']); + unset($record['extra']['tags']); + } + if (!empty($record['context']['tags'])) { + $options['tags'] = \array_merge($options['tags'], $record['context']['tags']); + unset($record['context']['tags']); + } + if (!empty($record['context']['fingerprint'])) { + $options['fingerprint'] = $record['context']['fingerprint']; + unset($record['context']['fingerprint']); + } + if (!empty($record['context']['logger'])) { + $options['logger'] = $record['context']['logger']; + unset($record['context']['logger']); + } else { + $options['logger'] = $record['channel']; + } + foreach ($this->getExtraParameters() as $key) { + foreach (array('extra', 'context') as $source) { + if (!empty($record[$source][$key])) { + $options[$key] = $record[$source][$key]; + unset($record[$source][$key]); + } + } + } + if (!empty($record['context'])) { + $options['extra']['context'] = $record['context']; + if (!empty($record['context']['user'])) { + $previousUserContext = $this->ravenClient->context->user; + $this->ravenClient->user_context($record['context']['user']); + unset($options['extra']['context']['user']); + } + } + if (!empty($record['extra'])) { + $options['extra']['extra'] = $record['extra']; + } + if (!empty($this->release) && !isset($options['release'])) { + $options['release'] = $this->release; + } + if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || \PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable)) { + $options['message'] = $record['formatted']; + $this->ravenClient->captureException($record['context']['exception'], $options); + } else { + $this->ravenClient->captureMessage($record['formatted'], array(), $options); + } + if ($previousUserContext !== \false) { + $this->ravenClient->user_context($previousUserContext); + } + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter('[%channel%] %message%'); + } + /** + * Gets the default formatter for the logs generated by handleBatch(). + * + * @return FormatterInterface + */ + protected function getDefaultBatchFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter(); + } + /** + * Gets extra parameters supported by Raven that can be found in "extra" and "context" + * + * @return array + */ + protected function getExtraParameters() + { + return array('contexts', 'checksum', 'release', 'event_id'); + } + /** + * @param string $value + * @return self + */ + public function setRelease($value) + { + $this->release = $value; + return $this; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RedisHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RedisHandler.php new file mode 100644 index 000000000..97ee00efd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RedisHandler.php @@ -0,0 +1,87 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Logs to a Redis key using rpush + * + * usage example: + * + * $log = new Logger('application'); + * $redis = new RedisHandler(new Predis\Client("tcp://localhost:6379"), "logs", "prod"); + * $log->pushHandler($redis); + * + * @author Thomas Tourlourat + */ +class RedisHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + private $redisClient; + private $redisKey; + protected $capSize; + /** + * @param \Predis\Client|\Redis $redis The redis instance + * @param string $key The key name to push records to + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int|false $capSize Number of entries to limit list size to + */ + public function __construct($redis, $key, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $capSize = \false) + { + if (!($redis instanceof \Google\Site_Kit_Dependencies\Predis\Client || $redis instanceof \Redis)) { + throw new \InvalidArgumentException('Predis\\Client or Redis instance required'); + } + $this->redisClient = $redis; + $this->redisKey = $key; + $this->capSize = $capSize; + parent::__construct($level, $bubble); + } + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + if ($this->capSize) { + $this->writeCapped($record); + } else { + $this->redisClient->rpush($this->redisKey, $record["formatted"]); + } + } + /** + * Write and cap the collection + * Writes the record to the redis list and caps its + * + * @param array $record associative record array + * @return void + */ + protected function writeCapped(array $record) + { + if ($this->redisClient instanceof \Redis) { + $mode = \defined('\\Redis::MULTI') ? \Redis::MULTI : 1; + $this->redisClient->multi($mode)->rpush($this->redisKey, $record["formatted"])->ltrim($this->redisKey, -$this->capSize, -1)->exec(); + } else { + $redisKey = $this->redisKey; + $capSize = $this->capSize; + $this->redisClient->transaction(function ($tx) use($record, $redisKey, $capSize) { + $tx->rpush($redisKey, $record["formatted"]); + $tx->ltrim($redisKey, -$capSize, -1); + }); + } + } + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RollbarHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RollbarHandler.php new file mode 100644 index 000000000..eeb26484b --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RollbarHandler.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\RollbarNotifier; +use Exception; +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Sends errors to Rollbar + * + * If the context data contains a `payload` key, that is used as an array + * of payload options to RollbarNotifier's report_message/report_exception methods. + * + * Rollbar's context info will contain the context + extra keys from the log record + * merged, and then on top of that a few keys: + * + * - level (rollbar level name) + * - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8) + * - channel + * - datetime (unix timestamp) + * + * @author Paul Statezny + */ +class RollbarHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * Rollbar notifier + * + * @var RollbarNotifier + */ + protected $rollbarNotifier; + protected $levelMap = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => 'debug', \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => 'info', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => 'info', \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => 'warning', \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => 'error', \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => 'critical', \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => 'critical', \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => 'critical'); + /** + * Records whether any log records have been added since the last flush of the rollbar notifier + * + * @var bool + */ + private $hasRecords = \false; + protected $initialized = \false; + /** + * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(\Google\Site_Kit_Dependencies\RollbarNotifier $rollbarNotifier, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR, $bubble = \true) + { + $this->rollbarNotifier = $rollbarNotifier; + parent::__construct($level, $bubble); + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if (!$this->initialized) { + // __destructor() doesn't get called on Fatal errors + \register_shutdown_function(array($this, 'close')); + $this->initialized = \true; + } + $context = $record['context']; + $payload = array(); + if (isset($context['payload'])) { + $payload = $context['payload']; + unset($context['payload']); + } + $context = \array_merge($context, $record['extra'], array('level' => $this->levelMap[$record['level']], 'monolog_level' => $record['level_name'], 'channel' => $record['channel'], 'datetime' => $record['datetime']->format('U'))); + if (isset($context['exception']) && $context['exception'] instanceof \Exception) { + $payload['level'] = $context['level']; + $exception = $context['exception']; + unset($context['exception']); + $this->rollbarNotifier->report_exception($exception, $context, $payload); + } else { + $this->rollbarNotifier->report_message($record['message'], $context['level'], $context, $payload); + } + $this->hasRecords = \true; + } + public function flush() + { + if ($this->hasRecords) { + $this->rollbarNotifier->flush(); + $this->hasRecords = \false; + } + } + /** + * {@inheritdoc} + */ + public function close() + { + $this->flush(); + } + /** + * {@inheritdoc} + */ + public function reset() + { + $this->flush(); + parent::reset(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php new file mode 100644 index 000000000..8e23c04f2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php @@ -0,0 +1,151 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Stores logs to files that are rotated every day and a limited number of files are kept. + * + * This rotation is only intended to be used as a workaround. Using logrotate to + * handle the rotation is strongly encouraged when you can use it. + * + * @author Christophe Coevoet + * @author Jordi Boggiano + */ +class RotatingFileHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\StreamHandler +{ + const FILE_PER_DAY = 'Y-m-d'; + const FILE_PER_MONTH = 'Y-m'; + const FILE_PER_YEAR = 'Y'; + protected $filename; + protected $maxFiles; + protected $mustRotate; + protected $nextRotation; + protected $filenameFormat; + protected $dateFormat; + /** + * @param string $filename + * @param int $maxFiles The maximal amount of files to keep (0 means unlimited) + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write) + * @param bool $useLocking Try to lock log file before doing any writes + */ + public function __construct($filename, $maxFiles = 0, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $filePermission = null, $useLocking = \false) + { + $this->filename = \Google\Site_Kit_Dependencies\Monolog\Utils::canonicalizePath($filename); + $this->maxFiles = (int) $maxFiles; + $this->nextRotation = new \DateTime('tomorrow'); + $this->filenameFormat = '{filename}-{date}'; + $this->dateFormat = 'Y-m-d'; + parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking); + } + /** + * {@inheritdoc} + */ + public function close() + { + parent::close(); + if (\true === $this->mustRotate) { + $this->rotate(); + } + } + /** + * {@inheritdoc} + */ + public function reset() + { + parent::reset(); + if (\true === $this->mustRotate) { + $this->rotate(); + } + } + public function setFilenameFormat($filenameFormat, $dateFormat) + { + if (!\preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) { + \trigger_error('Invalid date format - format must be one of ' . 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") ' . 'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the ' . 'date formats using slashes, underscores and/or dots instead of dashes.', \E_USER_DEPRECATED); + } + if (\substr_count($filenameFormat, '{date}') === 0) { + \trigger_error('Invalid filename format - format should contain at least `{date}`, because otherwise rotating is impossible.', \E_USER_DEPRECATED); + } + $this->filenameFormat = $filenameFormat; + $this->dateFormat = $dateFormat; + $this->url = $this->getTimedFilename(); + $this->close(); + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + // on the first record written, if the log is new, we should rotate (once per day) + if (null === $this->mustRotate) { + $this->mustRotate = !\file_exists($this->url); + } + if ($this->nextRotation < $record['datetime']) { + $this->mustRotate = \true; + $this->close(); + } + parent::write($record); + } + /** + * Rotates the files. + */ + protected function rotate() + { + // update filename + $this->url = $this->getTimedFilename(); + $this->nextRotation = new \DateTime('tomorrow'); + // skip GC of old logs if files are unlimited + if (0 === $this->maxFiles) { + return; + } + $logFiles = \glob($this->getGlobPattern()); + if ($this->maxFiles >= \count($logFiles)) { + // no files to remove + return; + } + // Sorting the files by name to remove the older ones + \usort($logFiles, function ($a, $b) { + return \strcmp($b, $a); + }); + foreach (\array_slice($logFiles, $this->maxFiles) as $file) { + if (\is_writable($file)) { + // suppress errors here as unlink() might fail if two processes + // are cleaning up/rotating at the same time + \set_error_handler(function ($errno, $errstr, $errfile, $errline) { + }); + \unlink($file); + \restore_error_handler(); + } + } + $this->mustRotate = \false; + } + protected function getTimedFilename() + { + $fileInfo = \pathinfo($this->filename); + $timedFilename = \str_replace(array('{filename}', '{date}'), array($fileInfo['filename'], \date($this->dateFormat)), $fileInfo['dirname'] . '/' . $this->filenameFormat); + if (!empty($fileInfo['extension'])) { + $timedFilename .= '.' . $fileInfo['extension']; + } + return $timedFilename; + } + protected function getGlobPattern() + { + $fileInfo = \pathinfo($this->filename); + $glob = \str_replace(array('{filename}', '{date}'), array($fileInfo['filename'], '[0-9][0-9][0-9][0-9]*'), $fileInfo['dirname'] . '/' . $this->filenameFormat); + if (!empty($fileInfo['extension'])) { + $glob .= '.' . $fileInfo['extension']; + } + return $glob; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SamplingHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SamplingHandler.php new file mode 100644 index 000000000..2c45768cb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SamplingHandler.php @@ -0,0 +1,99 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Sampling handler + * + * A sampled event stream can be useful for logging high frequency events in + * a production environment where you only need an idea of what is happening + * and are not concerned with capturing every occurrence. Since the decision to + * handle or not handle a particular event is determined randomly, the + * resulting sampled log is not guaranteed to contain 1/N of the events that + * occurred in the application, but based on the Law of large numbers, it will + * tend to be close to this ratio with a large number of attempts. + * + * @author Bryan Davis + * @author Kunal Mehta + */ +class SamplingHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler +{ + /** + * @var callable|HandlerInterface $handler + */ + protected $handler; + /** + * @var int $factor + */ + protected $factor; + /** + * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $samplingHandler). + * @param int $factor Sample factor + */ + public function __construct($handler, $factor) + { + parent::__construct(); + $this->handler = $handler; + $this->factor = $factor; + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface && !\is_callable($this->handler)) { + throw new \RuntimeException("The given handler (" . \json_encode($this->handler) . ") is not a callable nor a Monolog\\Handler\\HandlerInterface object"); + } + } + public function isHandling(array $record) + { + return $this->getHandler($record)->isHandling($record); + } + public function handle(array $record) + { + if ($this->isHandling($record) && \mt_rand(1, $this->factor) === 1) { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + } + $this->getHandler($record)->handle($record); + } + return \false === $this->bubble; + } + /** + * Return the nested handler + * + * If the handler was provided as a factory callable, this will trigger the handler's instantiation. + * + * @return HandlerInterface + */ + public function getHandler(array $record = null) + { + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface) { + $this->handler = \call_user_func($this->handler, $record, $this); + if (!$this->handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface) { + throw new \RuntimeException("The factory callable should return a HandlerInterface"); + } + } + return $this->handler; + } + /** + * {@inheritdoc} + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->getHandler()->setFormatter($formatter); + return $this; + } + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->getHandler()->getFormatter(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php new file mode 100644 index 000000000..5e4ded640 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php @@ -0,0 +1,239 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler\Slack; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +use Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +/** + * Slack record utility helping to log to Slack webhooks or API. + * + * @author Greg Kedzierski + * @author Haralan Dobrev + * @see https://api.slack.com/incoming-webhooks + * @see https://api.slack.com/docs/message-attachments + */ +class SlackRecord +{ + const COLOR_DANGER = 'danger'; + const COLOR_WARNING = 'warning'; + const COLOR_GOOD = 'good'; + const COLOR_DEFAULT = '#e3e4e6'; + /** + * Slack channel (encoded ID or name) + * @var string|null + */ + private $channel; + /** + * Name of a bot + * @var string|null + */ + private $username; + /** + * User icon e.g. 'ghost', 'http://example.com/user.png' + * @var string + */ + private $userIcon; + /** + * Whether the message should be added to Slack as attachment (plain text otherwise) + * @var bool + */ + private $useAttachment; + /** + * Whether the the context/extra messages added to Slack as attachments are in a short style + * @var bool + */ + private $useShortAttachment; + /** + * Whether the attachment should include context and extra data + * @var bool + */ + private $includeContextAndExtra; + /** + * Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] + * @var array + */ + private $excludeFields; + /** + * @var FormatterInterface + */ + private $formatter; + /** + * @var NormalizerFormatter + */ + private $normalizerFormatter; + public function __construct($channel = null, $username = null, $useAttachment = \true, $userIcon = null, $useShortAttachment = \false, $includeContextAndExtra = \false, array $excludeFields = array(), \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter = null) + { + $this->channel = $channel; + $this->username = $username; + $this->userIcon = \trim($userIcon, ':'); + $this->useAttachment = $useAttachment; + $this->useShortAttachment = $useShortAttachment; + $this->includeContextAndExtra = $includeContextAndExtra; + $this->excludeFields = $excludeFields; + $this->formatter = $formatter; + if ($this->includeContextAndExtra) { + $this->normalizerFormatter = new \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter(); + } + } + public function getSlackData(array $record) + { + $dataArray = array(); + $record = $this->excludeFields($record); + if ($this->username) { + $dataArray['username'] = $this->username; + } + if ($this->channel) { + $dataArray['channel'] = $this->channel; + } + if ($this->formatter && !$this->useAttachment) { + $message = $this->formatter->format($record); + } else { + $message = $record['message']; + } + if ($this->useAttachment) { + $attachment = array('fallback' => $message, 'text' => $message, 'color' => $this->getAttachmentColor($record['level']), 'fields' => array(), 'mrkdwn_in' => array('fields'), 'ts' => $record['datetime']->getTimestamp()); + if ($this->useShortAttachment) { + $attachment['title'] = $record['level_name']; + } else { + $attachment['title'] = 'Message'; + $attachment['fields'][] = $this->generateAttachmentField('Level', $record['level_name']); + } + if ($this->includeContextAndExtra) { + foreach (array('extra', 'context') as $key) { + if (empty($record[$key])) { + continue; + } + if ($this->useShortAttachment) { + $attachment['fields'][] = $this->generateAttachmentField($key, $record[$key]); + } else { + // Add all extra fields as individual fields in attachment + $attachment['fields'] = \array_merge($attachment['fields'], $this->generateAttachmentFields($record[$key])); + } + } + } + $dataArray['attachments'] = array($attachment); + } else { + $dataArray['text'] = $message; + } + if ($this->userIcon) { + if (\filter_var($this->userIcon, \FILTER_VALIDATE_URL)) { + $dataArray['icon_url'] = $this->userIcon; + } else { + $dataArray['icon_emoji'] = ":{$this->userIcon}:"; + } + } + return $dataArray; + } + /** + * Returned a Slack message attachment color associated with + * provided level. + * + * @param int $level + * @return string + */ + public function getAttachmentColor($level) + { + switch (\true) { + case $level >= \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR: + return self::COLOR_DANGER; + case $level >= \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING: + return self::COLOR_WARNING; + case $level >= \Google\Site_Kit_Dependencies\Monolog\Logger::INFO: + return self::COLOR_GOOD; + default: + return self::COLOR_DEFAULT; + } + } + /** + * Stringifies an array of key/value pairs to be used in attachment fields + * + * @param array $fields + * + * @return string + */ + public function stringify($fields) + { + $normalized = $this->normalizerFormatter->format($fields); + $prettyPrintFlag = \defined('JSON_PRETTY_PRINT') ? \JSON_PRETTY_PRINT : 128; + $flags = 0; + if (\PHP_VERSION_ID >= 50400) { + $flags = \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE; + } + $hasSecondDimension = \count(\array_filter($normalized, 'is_array')); + $hasNonNumericKeys = !\count(\array_filter(\array_keys($normalized), 'is_numeric')); + return $hasSecondDimension || $hasNonNumericKeys ? \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($normalized, $prettyPrintFlag | $flags) : \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($normalized, $flags); + } + /** + * Sets the formatter + * + * @param FormatterInterface $formatter + */ + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + $this->formatter = $formatter; + } + /** + * Generates attachment field + * + * @param string $title + * @param string|array $value + * + * @return array + */ + private function generateAttachmentField($title, $value) + { + $value = \is_array($value) ? \sprintf('```%s```', $this->stringify($value)) : $value; + return array('title' => \ucfirst($title), 'value' => $value, 'short' => \false); + } + /** + * Generates a collection of attachment fields from array + * + * @param array $data + * + * @return array + */ + private function generateAttachmentFields(array $data) + { + $fields = array(); + foreach ($this->normalizerFormatter->format($data) as $key => $value) { + $fields[] = $this->generateAttachmentField($key, $value); + } + return $fields; + } + /** + * Get a copy of record with fields excluded according to $this->excludeFields + * + * @param array $record + * + * @return array + */ + private function excludeFields(array $record) + { + foreach ($this->excludeFields as $field) { + $keys = \explode('.', $field); + $node =& $record; + $lastKey = \end($keys); + foreach ($keys as $key) { + if (!isset($node[$key])) { + break; + } + if ($lastKey === $key) { + unset($node[$key]); + break; + } + $node =& $node[$key]; + } + } + return $record; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackHandler.php new file mode 100644 index 000000000..ec193443d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackHandler.php @@ -0,0 +1,178 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +use Google\Site_Kit_Dependencies\Monolog\Handler\Slack\SlackRecord; +/** + * Sends notifications through Slack API + * + * @author Greg Kedzierski + * @see https://api.slack.com/ + */ +class SlackHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\SocketHandler +{ + /** + * Slack API token + * @var string + */ + private $token; + /** + * Instance of the SlackRecord util class preparing data for Slack API. + * @var SlackRecord + */ + private $slackRecord; + /** + * @param string $token Slack API token + * @param string $channel Slack channel (encoded ID or name) + * @param string|null $username Name of a bot + * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise) + * @param string|null $iconEmoji The emoji name to use (or null) + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style + * @param bool $includeContextAndExtra Whether the attachment should include context and extra data + * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] + * @throws MissingExtensionException If no OpenSSL PHP extension configured + */ + public function __construct($token, $channel, $username = null, $useAttachment = \true, $iconEmoji = null, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL, $bubble = \true, $useShortAttachment = \false, $includeContextAndExtra = \false, array $excludeFields = array()) + { + if (!\extension_loaded('openssl')) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler'); + } + parent::__construct('ssl://slack.com:443', $level, $bubble); + $this->slackRecord = new \Google\Site_Kit_Dependencies\Monolog\Handler\Slack\SlackRecord($channel, $username, $useAttachment, $iconEmoji, $useShortAttachment, $includeContextAndExtra, $excludeFields, $this->formatter); + $this->token = $token; + } + public function getSlackRecord() + { + return $this->slackRecord; + } + public function getToken() + { + return $this->token; + } + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + return $this->buildHeader($content) . $content; + } + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + $dataArray = $this->prepareContentData($record); + return \http_build_query($dataArray); + } + /** + * Prepares content data + * + * @param array $record + * @return array + */ + protected function prepareContentData($record) + { + $dataArray = $this->slackRecord->getSlackData($record); + $dataArray['token'] = $this->token; + if (!empty($dataArray['attachments'])) { + $dataArray['attachments'] = \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($dataArray['attachments']); + } + return $dataArray; + } + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + $header = "POST /api/chat.postMessage HTTP/1.1\r\n"; + $header .= "Host: slack.com\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . \strlen($content) . "\r\n"; + $header .= "\r\n"; + return $header; + } + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + parent::write($record); + $this->finalizeWrite(); + } + /** + * Finalizes the request by reading some bytes and then closing the socket + * + * If we do not read some but close the socket too early, slack sometimes + * drops the request entirely. + */ + protected function finalizeWrite() + { + $res = $this->getResource(); + if (\is_resource($res)) { + @\fread($res, 2048); + } + $this->closeSocket(); + } + /** + * Returned a Slack message attachment color associated with + * provided level. + * + * @param int $level + * @return string + * @deprecated Use underlying SlackRecord instead + */ + protected function getAttachmentColor($level) + { + \trigger_error('SlackHandler::getAttachmentColor() is deprecated. Use underlying SlackRecord instead.', \E_USER_DEPRECATED); + return $this->slackRecord->getAttachmentColor($level); + } + /** + * Stringifies an array of key/value pairs to be used in attachment fields + * + * @param array $fields + * @return string + * @deprecated Use underlying SlackRecord instead + */ + protected function stringify($fields) + { + \trigger_error('SlackHandler::stringify() is deprecated. Use underlying SlackRecord instead.', \E_USER_DEPRECATED); + return $this->slackRecord->stringify($fields); + } + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + parent::setFormatter($formatter); + $this->slackRecord->setFormatter($formatter); + return $this; + } + public function getFormatter() + { + $formatter = parent::getFormatter(); + $this->slackRecord->setFormatter($formatter); + return $formatter; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php new file mode 100644 index 000000000..87948ae7e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php @@ -0,0 +1,90 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +use Google\Site_Kit_Dependencies\Monolog\Handler\Slack\SlackRecord; +/** + * Sends notifications through Slack Webhooks + * + * @author Haralan Dobrev + * @see https://api.slack.com/incoming-webhooks + */ +class SlackWebhookHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * Slack Webhook token + * @var string + */ + private $webhookUrl; + /** + * Instance of the SlackRecord util class preparing data for Slack API. + * @var SlackRecord + */ + private $slackRecord; + /** + * @param string $webhookUrl Slack Webhook URL + * @param string|null $channel Slack channel (encoded ID or name) + * @param string|null $username Name of a bot + * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise) + * @param string|null $iconEmoji The emoji name to use (or null) + * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style + * @param bool $includeContextAndExtra Whether the attachment should include context and extra data + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] + */ + public function __construct($webhookUrl, $channel = null, $username = null, $useAttachment = \true, $iconEmoji = null, $useShortAttachment = \false, $includeContextAndExtra = \false, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL, $bubble = \true, array $excludeFields = array()) + { + parent::__construct($level, $bubble); + $this->webhookUrl = $webhookUrl; + $this->slackRecord = new \Google\Site_Kit_Dependencies\Monolog\Handler\Slack\SlackRecord($channel, $username, $useAttachment, $iconEmoji, $useShortAttachment, $includeContextAndExtra, $excludeFields, $this->formatter); + } + public function getSlackRecord() + { + return $this->slackRecord; + } + public function getWebhookUrl() + { + return $this->webhookUrl; + } + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + $postData = $this->slackRecord->getSlackData($record); + $postString = \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($postData); + $ch = \curl_init(); + $options = array(\CURLOPT_URL => $this->webhookUrl, \CURLOPT_POST => \true, \CURLOPT_RETURNTRANSFER => \true, \CURLOPT_HTTPHEADER => array('Content-type: application/json'), \CURLOPT_POSTFIELDS => $postString); + if (\defined('CURLOPT_SAFE_UPLOAD')) { + $options[\CURLOPT_SAFE_UPLOAD] = \true; + } + \curl_setopt_array($ch, $options); + \Google\Site_Kit_Dependencies\Monolog\Handler\Curl\Util::execute($ch); + } + public function setFormatter(\Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface $formatter) + { + parent::setFormatter($formatter); + $this->slackRecord->setFormatter($formatter); + return $this; + } + public function getFormatter() + { + $formatter = parent::getFormatter(); + $this->slackRecord->setFormatter($formatter); + return $formatter; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php new file mode 100644 index 000000000..e75854bcb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Sends notifications through Slack's Slackbot + * + * @author Haralan Dobrev + * @see https://slack.com/apps/A0F81R8ET-slackbot + * @deprecated According to Slack the API used on this handler it is deprecated. + * Therefore this handler will be removed on 2.x + * Slack suggests to use webhooks instead. Please contact slack for more information. + */ +class SlackbotHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * The slug of the Slack team + * @var string + */ + private $slackTeam; + /** + * Slackbot token + * @var string + */ + private $token; + /** + * Slack channel name + * @var string + */ + private $channel; + /** + * @param string $slackTeam Slack team slug + * @param string $token Slackbot token + * @param string $channel Slack channel (encoded ID or name) + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($slackTeam, $token, $channel, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL, $bubble = \true) + { + @\trigger_error('SlackbotHandler is deprecated and will be removed on 2.x', \E_USER_DEPRECATED); + parent::__construct($level, $bubble); + $this->slackTeam = $slackTeam; + $this->token = $token; + $this->channel = $channel; + } + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + $slackbotUrl = \sprintf('https://%s.slack.com/services/hooks/slackbot?token=%s&channel=%s', $this->slackTeam, $this->token, $this->channel); + $ch = \curl_init(); + \curl_setopt($ch, \CURLOPT_URL, $slackbotUrl); + \curl_setopt($ch, \CURLOPT_POST, \true); + \curl_setopt($ch, \CURLOPT_RETURNTRANSFER, \true); + \curl_setopt($ch, \CURLOPT_POSTFIELDS, $record['message']); + \Google\Site_Kit_Dependencies\Monolog\Handler\Curl\Util::execute($ch); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SocketHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SocketHandler.php new file mode 100644 index 000000000..3427aacbe --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SocketHandler.php @@ -0,0 +1,344 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Stores to any socket - uses fsockopen() or pfsockopen(). + * + * @author Pablo de Leon Belloc + * @see http://php.net/manual/en/function.fsockopen.php + */ +class SocketHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + private $connectionString; + private $connectionTimeout; + private $resource; + private $timeout = 0; + private $writingTimeout = 10; + private $lastSentBytes = null; + private $chunkSize = null; + private $persistent = \false; + private $errno; + private $errstr; + private $lastWritingAt; + /** + * @param string $connectionString Socket connection string + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($connectionString, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + parent::__construct($level, $bubble); + $this->connectionString = $connectionString; + $this->connectionTimeout = (float) \ini_get('default_socket_timeout'); + } + /** + * Connect (if necessary) and write to the socket + * + * @param array $record + * + * @throws \UnexpectedValueException + * @throws \RuntimeException + */ + protected function write(array $record) + { + $this->connectIfNotConnected(); + $data = $this->generateDataStream($record); + $this->writeToSocket($data); + } + /** + * We will not close a PersistentSocket instance so it can be reused in other requests. + */ + public function close() + { + if (!$this->isPersistent()) { + $this->closeSocket(); + } + } + /** + * Close socket, if open + */ + public function closeSocket() + { + if (\is_resource($this->resource)) { + \fclose($this->resource); + $this->resource = null; + } + } + /** + * Set socket connection to nbe persistent. It only has effect before the connection is initiated. + * + * @param bool $persistent + */ + public function setPersistent($persistent) + { + $this->persistent = (bool) $persistent; + } + /** + * Set connection timeout. Only has effect before we connect. + * + * @param float $seconds + * + * @see http://php.net/manual/en/function.fsockopen.php + */ + public function setConnectionTimeout($seconds) + { + $this->validateTimeout($seconds); + $this->connectionTimeout = (float) $seconds; + } + /** + * Set write timeout. Only has effect before we connect. + * + * @param float $seconds + * + * @see http://php.net/manual/en/function.stream-set-timeout.php + */ + public function setTimeout($seconds) + { + $this->validateTimeout($seconds); + $this->timeout = (float) $seconds; + } + /** + * Set writing timeout. Only has effect during connection in the writing cycle. + * + * @param float $seconds 0 for no timeout + */ + public function setWritingTimeout($seconds) + { + $this->validateTimeout($seconds); + $this->writingTimeout = (float) $seconds; + } + /** + * Set chunk size. Only has effect during connection in the writing cycle. + * + * @param float $bytes + */ + public function setChunkSize($bytes) + { + $this->chunkSize = $bytes; + } + /** + * Get current connection string + * + * @return string + */ + public function getConnectionString() + { + return $this->connectionString; + } + /** + * Get persistent setting + * + * @return bool + */ + public function isPersistent() + { + return $this->persistent; + } + /** + * Get current connection timeout setting + * + * @return float + */ + public function getConnectionTimeout() + { + return $this->connectionTimeout; + } + /** + * Get current in-transfer timeout + * + * @return float + */ + public function getTimeout() + { + return $this->timeout; + } + /** + * Get current local writing timeout + * + * @return float + */ + public function getWritingTimeout() + { + return $this->writingTimeout; + } + /** + * Get current chunk size + * + * @return float + */ + public function getChunkSize() + { + return $this->chunkSize; + } + /** + * Check to see if the socket is currently available. + * + * UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details. + * + * @return bool + */ + public function isConnected() + { + return \is_resource($this->resource) && !\feof($this->resource); + // on TCP - other party can close connection. + } + /** + * Wrapper to allow mocking + */ + protected function pfsockopen() + { + return @\pfsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout); + } + /** + * Wrapper to allow mocking + */ + protected function fsockopen() + { + return @\fsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout); + } + /** + * Wrapper to allow mocking + * + * @see http://php.net/manual/en/function.stream-set-timeout.php + */ + protected function streamSetTimeout() + { + $seconds = \floor($this->timeout); + $microseconds = \round(($this->timeout - $seconds) * 1000000.0); + return \stream_set_timeout($this->resource, $seconds, $microseconds); + } + /** + * Wrapper to allow mocking + * + * @see http://php.net/manual/en/function.stream-set-chunk-size.php + */ + protected function streamSetChunkSize() + { + return \stream_set_chunk_size($this->resource, $this->chunkSize); + } + /** + * Wrapper to allow mocking + */ + protected function fwrite($data) + { + return @\fwrite($this->resource, $data); + } + /** + * Wrapper to allow mocking + */ + protected function streamGetMetadata() + { + return \stream_get_meta_data($this->resource); + } + private function validateTimeout($value) + { + $ok = \filter_var($value, \FILTER_VALIDATE_FLOAT); + if ($ok === \false || $value < 0) { + throw new \InvalidArgumentException("Timeout must be 0 or a positive float (got {$value})"); + } + } + private function connectIfNotConnected() + { + if ($this->isConnected()) { + return; + } + $this->connect(); + } + protected function generateDataStream($record) + { + return (string) $record['formatted']; + } + /** + * @return resource|null + */ + protected function getResource() + { + return $this->resource; + } + private function connect() + { + $this->createSocketResource(); + $this->setSocketTimeout(); + $this->setStreamChunkSize(); + } + private function createSocketResource() + { + if ($this->isPersistent()) { + $resource = $this->pfsockopen(); + } else { + $resource = $this->fsockopen(); + } + if (!$resource) { + throw new \UnexpectedValueException("Failed connecting to {$this->connectionString} ({$this->errno}: {$this->errstr})"); + } + $this->resource = $resource; + } + private function setSocketTimeout() + { + if (!$this->streamSetTimeout()) { + throw new \UnexpectedValueException("Failed setting timeout with stream_set_timeout()"); + } + } + private function setStreamChunkSize() + { + if ($this->chunkSize && !$this->streamSetChunkSize()) { + throw new \UnexpectedValueException("Failed setting chunk size with stream_set_chunk_size()"); + } + } + private function writeToSocket($data) + { + $length = \strlen($data); + $sent = 0; + $this->lastSentBytes = $sent; + while ($this->isConnected() && $sent < $length) { + if (0 == $sent) { + $chunk = $this->fwrite($data); + } else { + $chunk = $this->fwrite(\substr($data, $sent)); + } + if ($chunk === \false) { + throw new \RuntimeException("Could not write to socket"); + } + $sent += $chunk; + $socketInfo = $this->streamGetMetadata(); + if ($socketInfo['timed_out']) { + throw new \RuntimeException("Write timed-out"); + } + if ($this->writingIsTimedOut($sent)) { + throw new \RuntimeException("Write timed-out, no data sent for `{$this->writingTimeout}` seconds, probably we got disconnected (sent {$sent} of {$length})"); + } + } + if (!$this->isConnected() && $sent < $length) { + throw new \RuntimeException("End-of-file reached, probably we got disconnected (sent {$sent} of {$length})"); + } + } + private function writingIsTimedOut($sent) + { + $writingTimeout = (int) \floor($this->writingTimeout); + if (0 === $writingTimeout) { + return \false; + } + if ($sent !== $this->lastSentBytes) { + $this->lastWritingAt = \time(); + $this->lastSentBytes = $sent; + return \false; + } else { + \usleep(100); + } + if (\time() - $this->lastWritingAt >= $writingTimeout) { + $this->closeSocket(); + return \true; + } + return \false; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/StreamHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/StreamHandler.php new file mode 100644 index 000000000..0e148b5cd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/StreamHandler.php @@ -0,0 +1,160 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Stores to any stream resource + * + * Can be used to store into php://stderr, remote and local files, etc. + * + * @author Jordi Boggiano + */ +class StreamHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + protected $stream; + protected $url; + private $errorMessage; + protected $filePermission; + protected $useLocking; + private $dirCreated; + /** + * @param resource|string $stream + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write) + * @param bool $useLocking Try to lock log file before doing any writes + * + * @throws \Exception If a missing directory is not buildable + * @throws \InvalidArgumentException If stream is not a resource or string + */ + public function __construct($stream, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $filePermission = null, $useLocking = \false) + { + parent::__construct($level, $bubble); + if (\is_resource($stream)) { + $this->stream = $stream; + } elseif (\is_string($stream)) { + $this->url = \Google\Site_Kit_Dependencies\Monolog\Utils::canonicalizePath($stream); + } else { + throw new \InvalidArgumentException('A stream must either be a resource or a string.'); + } + $this->filePermission = $filePermission; + $this->useLocking = $useLocking; + } + /** + * {@inheritdoc} + */ + public function close() + { + if ($this->url && \is_resource($this->stream)) { + \fclose($this->stream); + } + $this->stream = null; + $this->dirCreated = null; + } + /** + * Return the currently active stream if it is open + * + * @return resource|null + */ + public function getStream() + { + return $this->stream; + } + /** + * Return the stream URL if it was configured with a URL and not an active resource + * + * @return string|null + */ + public function getUrl() + { + return $this->url; + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if (!\is_resource($this->stream)) { + if (null === $this->url || '' === $this->url) { + throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); + } + $this->createDir(); + $this->errorMessage = null; + \set_error_handler(array($this, 'customErrorHandler')); + $this->stream = \fopen($this->url, 'a'); + if ($this->filePermission !== null) { + @\chmod($this->url, $this->filePermission); + } + \restore_error_handler(); + if (!\is_resource($this->stream)) { + $this->stream = null; + throw new \UnexpectedValueException(\sprintf('The stream or file "%s" could not be opened in append mode: ' . $this->errorMessage, $this->url)); + } + } + if ($this->useLocking) { + // ignoring errors here, there's not much we can do about them + \flock($this->stream, \LOCK_EX); + } + $this->streamWrite($this->stream, $record); + if ($this->useLocking) { + \flock($this->stream, \LOCK_UN); + } + } + /** + * Write to stream + * @param resource $stream + * @param array $record + */ + protected function streamWrite($stream, array $record) + { + \fwrite($stream, (string) $record['formatted']); + } + private function customErrorHandler($code, $msg) + { + $this->errorMessage = \preg_replace('{^(fopen|mkdir)\\(.*?\\): }', '', $msg); + } + /** + * @param string $stream + * + * @return null|string + */ + private function getDirFromStream($stream) + { + $pos = \strpos($stream, '://'); + if ($pos === \false) { + return \dirname($stream); + } + if ('file://' === \substr($stream, 0, 7)) { + return \dirname(\substr($stream, 7)); + } + return null; + } + private function createDir() + { + // Do not try to create dir if it has already been tried. + if ($this->dirCreated) { + return; + } + $dir = $this->getDirFromStream($this->url); + if (null !== $dir && !\is_dir($dir)) { + $this->errorMessage = null; + \set_error_handler(array($this, 'customErrorHandler')); + $status = \mkdir($dir, 0777, \true); + \restore_error_handler(); + if (\false === $status && !\is_dir($dir)) { + throw new \UnexpectedValueException(\sprintf('There is no existing directory at "%s" and its not buildable: ' . $this->errorMessage, $dir)); + } + } + $this->dirCreated = \true; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php new file mode 100644 index 000000000..37909cebe --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php @@ -0,0 +1,97 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface; +use Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter; +use Google\Site_Kit_Dependencies\Swift; +/** + * SwiftMailerHandler uses Swift_Mailer to send the emails + * + * @author Gyula Sallai + */ +class SwiftMailerHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\MailHandler +{ + protected $mailer; + private $messageTemplate; + /** + * @param \Swift_Mailer $mailer The mailer to use + * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(\Google\Site_Kit_Dependencies\Swift_Mailer $mailer, $message, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR, $bubble = \true) + { + parent::__construct($level, $bubble); + $this->mailer = $mailer; + $this->messageTemplate = $message; + } + /** + * {@inheritdoc} + */ + protected function send($content, array $records) + { + $this->mailer->send($this->buildMessage($content, $records)); + } + /** + * Gets the formatter for the Swift_Message subject. + * + * @param string $format The format of the subject + * @return FormatterInterface + */ + protected function getSubjectFormatter($format) + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\LineFormatter($format); + } + /** + * Creates instance of Swift_Message to be sent + * + * @param string $content formatted email body to be sent + * @param array $records Log records that formed the content + * @return \Swift_Message + */ + protected function buildMessage($content, array $records) + { + $message = null; + if ($this->messageTemplate instanceof \Google\Site_Kit_Dependencies\Swift_Message) { + $message = clone $this->messageTemplate; + $message->generateId(); + } elseif (\is_callable($this->messageTemplate)) { + $message = \call_user_func($this->messageTemplate, $content, $records); + } + if (!$message instanceof \Google\Site_Kit_Dependencies\Swift_Message) { + throw new \InvalidArgumentException('Could not resolve message as instance of Swift_Message or a callable returning it'); + } + if ($records) { + $subjectFormatter = $this->getSubjectFormatter($message->getSubject()); + $message->setSubject($subjectFormatter->format($this->getHighestRecord($records))); + } + $message->setBody($content); + if (\version_compare(\Google\Site_Kit_Dependencies\Swift::VERSION, '6.0.0', '>=')) { + $message->setDate(new \DateTimeImmutable()); + } else { + $message->setDate(\time()); + } + return $message; + } + /** + * BC getter, to be removed in 2.0 + */ + public function __get($name) + { + if ($name === 'message') { + \trigger_error('SwiftMailerHandler->message is deprecated, use ->buildMessage() instead to retrieve the message', \E_USER_DEPRECATED); + return $this->buildMessage(null, array()); + } + throw new \InvalidArgumentException('Invalid property ' . $name); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogHandler.php new file mode 100644 index 000000000..3e3f65056 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogHandler.php @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Logs to syslog service. + * + * usage example: + * + * $log = new Logger('application'); + * $syslog = new SyslogHandler('myfacility', 'local6'); + * $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%"); + * $syslog->setFormatter($formatter); + * $log->pushHandler($syslog); + * + * @author Sven Paulus + */ +class SyslogHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractSyslogHandler +{ + protected $ident; + protected $logopts; + /** + * @param string $ident + * @param mixed $facility + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int $logopts Option flags for the openlog() call, defaults to LOG_PID + */ + public function __construct($ident, $facility = \LOG_USER, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $logopts = \LOG_PID) + { + parent::__construct($facility, $level, $bubble); + $this->ident = $ident; + $this->logopts = $logopts; + } + /** + * {@inheritdoc} + */ + public function close() + { + \closelog(); + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if (!\openlog($this->ident, $this->logopts, $this->facility)) { + throw new \LogicException('Can\'t open syslog for ident "' . $this->ident . '" and facility "' . $this->facility . '"'); + } + \syslog($this->logLevels[$record['level']], (string) $record['formatted']); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php new file mode 100644 index 000000000..b9355e65d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler\SyslogUdp; + +class UdpSocket +{ + const DATAGRAM_MAX_LENGTH = 65023; + protected $ip; + protected $port; + protected $socket; + public function __construct($ip, $port = 514) + { + $this->ip = $ip; + $this->port = $port; + $this->socket = \socket_create(\AF_INET, \SOCK_DGRAM, \SOL_UDP); + } + public function write($line, $header = "") + { + $this->send($this->assembleMessage($line, $header)); + } + public function close() + { + if (\is_resource($this->socket)) { + \socket_close($this->socket); + $this->socket = null; + } + } + protected function send($chunk) + { + if (!\is_resource($this->socket)) { + throw new \LogicException('The UdpSocket to ' . $this->ip . ':' . $this->port . ' has been closed and can not be written to anymore'); + } + \socket_sendto($this->socket, $chunk, \strlen($chunk), $flags = 0, $this->ip, $this->port); + } + protected function assembleMessage($line, $header) + { + $chunkSize = self::DATAGRAM_MAX_LENGTH - \strlen($header); + return $header . \substr($line, 0, $chunkSize); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php new file mode 100644 index 000000000..8a6cfaf65 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php @@ -0,0 +1,94 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +use Google\Site_Kit_Dependencies\Monolog\Handler\SyslogUdp\UdpSocket; +/** + * A Handler for logging to a remote syslogd server. + * + * @author Jesper Skovgaard Nielsen + * @author Dominik Kukacka + */ +class SyslogUdpHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractSyslogHandler +{ + const RFC3164 = 0; + const RFC5424 = 1; + private $dateFormats = array(self::RFC3164 => 'M d H:i:s', self::RFC5424 => \DateTime::RFC3339); + protected $socket; + protected $ident; + protected $rfc; + /** + * @param string $host + * @param int $port + * @param mixed $facility + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param string $ident Program name or tag for each log message. + * @param int $rfc RFC to format the message for. + */ + public function __construct($host, $port = 514, $facility = \LOG_USER, $level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true, $ident = 'php', $rfc = self::RFC5424) + { + parent::__construct($facility, $level, $bubble); + $this->ident = $ident; + $this->rfc = $rfc; + $this->socket = new \Google\Site_Kit_Dependencies\Monolog\Handler\SyslogUdp\UdpSocket($host, $port ?: 514); + } + protected function write(array $record) + { + $lines = $this->splitMessageIntoLines($record['formatted']); + $header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']]); + foreach ($lines as $line) { + $this->socket->write($line, $header); + } + } + public function close() + { + $this->socket->close(); + } + private function splitMessageIntoLines($message) + { + if (\is_array($message)) { + $message = \implode("\n", $message); + } + return \preg_split('/$\\R?^/m', $message, -1, \PREG_SPLIT_NO_EMPTY); + } + /** + * Make common syslog header (see rfc5424 or rfc3164) + */ + protected function makeCommonSyslogHeader($severity) + { + $priority = $severity + $this->facility; + if (!($pid = \getmypid())) { + $pid = '-'; + } + if (!($hostname = \gethostname())) { + $hostname = '-'; + } + $date = $this->getDateTime(); + if ($this->rfc === self::RFC3164) { + return "<{$priority}>" . $date . " " . $hostname . " " . $this->ident . "[" . $pid . "]: "; + } else { + return "<{$priority}>1 " . $date . " " . $hostname . " " . $this->ident . " " . $pid . " - - "; + } + } + protected function getDateTime() + { + return \date($this->dateFormats[$this->rfc]); + } + /** + * Inject your own socket, mainly used for testing + */ + public function setSocket($socket) + { + $this->socket = $socket; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/TestHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/TestHandler.php new file mode 100644 index 000000000..632447e45 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/TestHandler.php @@ -0,0 +1,159 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +/** + * Used for testing purposes. + * + * It records all records and gives you access to them for verification. + * + * @author Jordi Boggiano + * + * @method bool hasEmergency($record) + * @method bool hasAlert($record) + * @method bool hasCritical($record) + * @method bool hasError($record) + * @method bool hasWarning($record) + * @method bool hasNotice($record) + * @method bool hasInfo($record) + * @method bool hasDebug($record) + * + * @method bool hasEmergencyRecords() + * @method bool hasAlertRecords() + * @method bool hasCriticalRecords() + * @method bool hasErrorRecords() + * @method bool hasWarningRecords() + * @method bool hasNoticeRecords() + * @method bool hasInfoRecords() + * @method bool hasDebugRecords() + * + * @method bool hasEmergencyThatContains($message) + * @method bool hasAlertThatContains($message) + * @method bool hasCriticalThatContains($message) + * @method bool hasErrorThatContains($message) + * @method bool hasWarningThatContains($message) + * @method bool hasNoticeThatContains($message) + * @method bool hasInfoThatContains($message) + * @method bool hasDebugThatContains($message) + * + * @method bool hasEmergencyThatMatches($message) + * @method bool hasAlertThatMatches($message) + * @method bool hasCriticalThatMatches($message) + * @method bool hasErrorThatMatches($message) + * @method bool hasWarningThatMatches($message) + * @method bool hasNoticeThatMatches($message) + * @method bool hasInfoThatMatches($message) + * @method bool hasDebugThatMatches($message) + * + * @method bool hasEmergencyThatPasses($message) + * @method bool hasAlertThatPasses($message) + * @method bool hasCriticalThatPasses($message) + * @method bool hasErrorThatPasses($message) + * @method bool hasWarningThatPasses($message) + * @method bool hasNoticeThatPasses($message) + * @method bool hasInfoThatPasses($message) + * @method bool hasDebugThatPasses($message) + */ +class TestHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + protected $records = array(); + protected $recordsByLevel = array(); + private $skipReset = \false; + public function getRecords() + { + return $this->records; + } + public function clear() + { + $this->records = array(); + $this->recordsByLevel = array(); + } + public function reset() + { + if (!$this->skipReset) { + $this->clear(); + } + } + public function setSkipReset($skipReset) + { + $this->skipReset = $skipReset; + } + public function hasRecords($level) + { + return isset($this->recordsByLevel[$level]); + } + /** + * @param string|array $record Either a message string or an array containing message and optionally context keys that will be checked against all records + * @param int $level Logger::LEVEL constant value + */ + public function hasRecord($record, $level) + { + if (\is_string($record)) { + $record = array('message' => $record); + } + return $this->hasRecordThatPasses(function ($rec) use($record) { + if ($rec['message'] !== $record['message']) { + return \false; + } + if (isset($record['context']) && $rec['context'] !== $record['context']) { + return \false; + } + return \true; + }, $level); + } + public function hasRecordThatContains($message, $level) + { + return $this->hasRecordThatPasses(function ($rec) use($message) { + return \strpos($rec['message'], $message) !== \false; + }, $level); + } + public function hasRecordThatMatches($regex, $level) + { + return $this->hasRecordThatPasses(function ($rec) use($regex) { + return \preg_match($regex, $rec['message']) > 0; + }, $level); + } + public function hasRecordThatPasses($predicate, $level) + { + if (!\is_callable($predicate)) { + throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds"); + } + if (!isset($this->recordsByLevel[$level])) { + return \false; + } + foreach ($this->recordsByLevel[$level] as $i => $rec) { + if (\call_user_func($predicate, $rec, $i)) { + return \true; + } + } + return \false; + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->recordsByLevel[$record['level']][] = $record; + $this->records[] = $record; + } + public function __call($method, $args) + { + if (\preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { + $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; + $level = \constant('Monolog\\Logger::' . \strtoupper($matches[2])); + if (\method_exists($this, $genericMethod)) { + $args[] = $level; + return \call_user_func_array(array($this, $genericMethod), $args); + } + } + throw new \BadMethodCallException('Call to undefined method ' . \get_class($this) . '::' . $method . '()'); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php new file mode 100644 index 000000000..10e247b55 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +/** + * Forwards records to multiple handlers suppressing failures of each handler + * and continuing through to give every handler a chance to succeed. + * + * @author Craig D'Amelio + */ +class WhatFailureGroupHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\GroupHandler +{ + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + } + foreach ($this->handlers as $handler) { + try { + $handler->handle($record); + } catch (\Exception $e) { + // What failure? + } catch (\Throwable $e) { + // What failure? + } + } + return \false === $this->bubble; + } + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + if ($this->processors) { + $processed = array(); + foreach ($records as $record) { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + $processed[] = $record; + } + $records = $processed; + } + foreach ($this->handlers as $handler) { + try { + $handler->handleBatch($records); + } catch (\Exception $e) { + // What failure? + } catch (\Throwable $e) { + // What failure? + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php new file mode 100644 index 000000000..4c74a2ed5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Handler; + +use Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter; +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Handler sending logs to Zend Monitor + * + * @author Christian Bergau + * @author Jason Davis + */ +class ZendMonitorHandler extends \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractProcessingHandler +{ + /** + * Monolog level / ZendMonitor Custom Event priority map + * + * @var array + */ + protected $levelMap = array(); + /** + * Construct + * + * @param int $level + * @param bool $bubble + * @throws MissingExtensionException + */ + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, $bubble = \true) + { + if (!\function_exists('Google\\Site_Kit_Dependencies\\zend_monitor_custom_event')) { + throw new \Google\Site_Kit_Dependencies\Monolog\Handler\MissingExtensionException('You must have Zend Server installed with Zend Monitor enabled in order to use this handler'); + } + //zend monitor constants are not defined if zend monitor is not enabled. + $this->levelMap = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_INFO, \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_INFO, \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_INFO, \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_WARNING, \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_ERROR, \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_ERROR, \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_ERROR, \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => \Google\Site_Kit_Dependencies\ZEND_MONITOR_EVENT_SEVERITY_ERROR); + parent::__construct($level, $bubble); + } + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->writeZendMonitorCustomEvent(\Google\Site_Kit_Dependencies\Monolog\Logger::getLevelName($record['level']), $record['message'], $record['formatted'], $this->levelMap[$record['level']]); + } + /** + * Write to Zend Monitor Events + * @param string $type Text displayed in "Class Name (custom)" field + * @param string $message Text displayed in "Error String" + * @param mixed $formatted Displayed in Custom Variables tab + * @param int $severity Set the event severity level (-1,0,1) + */ + protected function writeZendMonitorCustomEvent($type, $message, $formatted, $severity) + { + zend_monitor_custom_event($type, $message, $formatted, $severity); + } + /** + * {@inheritdoc} + */ + public function getDefaultFormatter() + { + return new \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter(); + } + /** + * Get the level map + * + * @return array + */ + public function getLevelMap() + { + return $this->levelMap; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Logger.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Logger.php new file mode 100644 index 000000000..1008bc6f5 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Logger.php @@ -0,0 +1,692 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog; + +use Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface; +use Google\Site_Kit_Dependencies\Monolog\Handler\StreamHandler; +use Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface; +use Google\Site_Kit_Dependencies\Psr\Log\InvalidArgumentException; +use Exception; +/** + * Monolog log channel + * + * It contains a stack of Handlers and a stack of Processors, + * and uses them to store records that are added to it. + * + * @author Jordi Boggiano + */ +class Logger implements \Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface, \Google\Site_Kit_Dependencies\Monolog\ResettableInterface +{ + /** + * Detailed debug information + */ + const DEBUG = 100; + /** + * Interesting events + * + * Examples: User logs in, SQL logs. + */ + const INFO = 200; + /** + * Uncommon events + */ + const NOTICE = 250; + /** + * Exceptional occurrences that are not errors + * + * Examples: Use of deprecated APIs, poor use of an API, + * undesirable things that are not necessarily wrong. + */ + const WARNING = 300; + /** + * Runtime errors + */ + const ERROR = 400; + /** + * Critical conditions + * + * Example: Application component unavailable, unexpected exception. + */ + const CRITICAL = 500; + /** + * Action must be taken immediately + * + * Example: Entire website down, database unavailable, etc. + * This should trigger the SMS alerts and wake you up. + */ + const ALERT = 550; + /** + * Urgent alert. + */ + const EMERGENCY = 600; + /** + * Monolog API version + * + * This is only bumped when API breaks are done and should + * follow the major version of the library + * + * @var int + */ + const API = 1; + /** + * Logging levels from syslog protocol defined in RFC 5424 + * + * @var array $levels Logging levels + */ + protected static $levels = array(self::DEBUG => 'DEBUG', self::INFO => 'INFO', self::NOTICE => 'NOTICE', self::WARNING => 'WARNING', self::ERROR => 'ERROR', self::CRITICAL => 'CRITICAL', self::ALERT => 'ALERT', self::EMERGENCY => 'EMERGENCY'); + /** + * @var \DateTimeZone + */ + protected static $timezone; + /** + * @var string + */ + protected $name; + /** + * The handler stack + * + * @var HandlerInterface[] + */ + protected $handlers; + /** + * Processors that will process all log records + * + * To process records of a single handler instead, add the processor on that specific handler + * + * @var callable[] + */ + protected $processors; + /** + * @var bool + */ + protected $microsecondTimestamps = \true; + /** + * @var callable + */ + protected $exceptionHandler; + /** + * @param string $name The logging channel + * @param HandlerInterface[] $handlers Optional stack of handlers, the first one in the array is called first, etc. + * @param callable[] $processors Optional array of processors + */ + public function __construct($name, array $handlers = array(), array $processors = array()) + { + $this->name = $name; + $this->setHandlers($handlers); + $this->processors = $processors; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * Return a new cloned instance with the name changed + * + * @return static + */ + public function withName($name) + { + $new = clone $this; + $new->name = $name; + return $new; + } + /** + * Pushes a handler on to the stack. + * + * @param HandlerInterface $handler + * @return $this + */ + public function pushHandler(\Google\Site_Kit_Dependencies\Monolog\Handler\HandlerInterface $handler) + { + \array_unshift($this->handlers, $handler); + return $this; + } + /** + * Pops a handler from the stack + * + * @return HandlerInterface + */ + public function popHandler() + { + if (!$this->handlers) { + throw new \LogicException('You tried to pop from an empty handler stack.'); + } + return \array_shift($this->handlers); + } + /** + * Set handlers, replacing all existing ones. + * + * If a map is passed, keys will be ignored. + * + * @param HandlerInterface[] $handlers + * @return $this + */ + public function setHandlers(array $handlers) + { + $this->handlers = array(); + foreach (\array_reverse($handlers) as $handler) { + $this->pushHandler($handler); + } + return $this; + } + /** + * @return HandlerInterface[] + */ + public function getHandlers() + { + return $this->handlers; + } + /** + * Adds a processor on to the stack. + * + * @param callable $callback + * @return $this + */ + public function pushProcessor($callback) + { + if (!\is_callable($callback)) { + throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), ' . \var_export($callback, \true) . ' given'); + } + \array_unshift($this->processors, $callback); + return $this; + } + /** + * Removes the processor on top of the stack and returns it. + * + * @return callable + */ + public function popProcessor() + { + if (!$this->processors) { + throw new \LogicException('You tried to pop from an empty processor stack.'); + } + return \array_shift($this->processors); + } + /** + * @return callable[] + */ + public function getProcessors() + { + return $this->processors; + } + /** + * Control the use of microsecond resolution timestamps in the 'datetime' + * member of new records. + * + * Generating microsecond resolution timestamps by calling + * microtime(true), formatting the result via sprintf() and then parsing + * the resulting string via \DateTime::createFromFormat() can incur + * a measurable runtime overhead vs simple usage of DateTime to capture + * a second resolution timestamp in systems which generate a large number + * of log events. + * + * @param bool $micro True to use microtime() to create timestamps + */ + public function useMicrosecondTimestamps($micro) + { + $this->microsecondTimestamps = (bool) $micro; + } + /** + * Adds a log record. + * + * @param int $level The logging level + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addRecord($level, $message, array $context = array()) + { + if (!$this->handlers) { + $this->pushHandler(new \Google\Site_Kit_Dependencies\Monolog\Handler\StreamHandler('php://stderr', static::DEBUG)); + } + $levelName = static::getLevelName($level); + // check if any handler will handle this message so we can return early and save cycles + $handlerKey = null; + \reset($this->handlers); + while ($handler = \current($this->handlers)) { + if ($handler->isHandling(array('level' => $level))) { + $handlerKey = \key($this->handlers); + break; + } + \next($this->handlers); + } + if (null === $handlerKey) { + return \false; + } + if (!static::$timezone) { + static::$timezone = new \DateTimeZone(\date_default_timezone_get() ?: 'UTC'); + } + // php7.1+ always has microseconds enabled, so we do not need this hack + if ($this->microsecondTimestamps && \PHP_VERSION_ID < 70100) { + $ts = \DateTime::createFromFormat('U.u', \sprintf('%.6F', \microtime(\true)), static::$timezone); + } else { + $ts = new \DateTime('now', static::$timezone); + } + $ts->setTimezone(static::$timezone); + $record = array('message' => (string) $message, 'context' => $context, 'level' => $level, 'level_name' => $levelName, 'channel' => $this->name, 'datetime' => $ts, 'extra' => array()); + try { + foreach ($this->processors as $processor) { + $record = \call_user_func($processor, $record); + } + while ($handler = \current($this->handlers)) { + if (\true === $handler->handle($record)) { + break; + } + \next($this->handlers); + } + } catch (\Exception $e) { + $this->handleException($e, $record); + } + return \true; + } + /** + * Ends a log cycle and frees all resources used by handlers. + * + * Closing a Handler means flushing all buffers and freeing any open resources/handles. + * Handlers that have been closed should be able to accept log records again and re-open + * themselves on demand, but this may not always be possible depending on implementation. + * + * This is useful at the end of a request and will be called automatically on every handler + * when they get destructed. + */ + public function close() + { + foreach ($this->handlers as $handler) { + if (\method_exists($handler, 'close')) { + $handler->close(); + } + } + } + /** + * Ends a log cycle and resets all handlers and processors to their initial state. + * + * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal + * state, and getting it back to a state in which it can receive log records again. + * + * This is useful in case you want to avoid logs leaking between two requests or jobs when you + * have a long running process like a worker or an application server serving multiple requests + * in one process. + */ + public function reset() + { + foreach ($this->handlers as $handler) { + if ($handler instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + $handler->reset(); + } + } + foreach ($this->processors as $processor) { + if ($processor instanceof \Google\Site_Kit_Dependencies\Monolog\ResettableInterface) { + $processor->reset(); + } + } + } + /** + * Adds a log record at the DEBUG level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addDebug($message, array $context = array()) + { + return $this->addRecord(static::DEBUG, $message, $context); + } + /** + * Adds a log record at the INFO level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addInfo($message, array $context = array()) + { + return $this->addRecord(static::INFO, $message, $context); + } + /** + * Adds a log record at the NOTICE level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addNotice($message, array $context = array()) + { + return $this->addRecord(static::NOTICE, $message, $context); + } + /** + * Adds a log record at the WARNING level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addWarning($message, array $context = array()) + { + return $this->addRecord(static::WARNING, $message, $context); + } + /** + * Adds a log record at the ERROR level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addError($message, array $context = array()) + { + return $this->addRecord(static::ERROR, $message, $context); + } + /** + * Adds a log record at the CRITICAL level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addCritical($message, array $context = array()) + { + return $this->addRecord(static::CRITICAL, $message, $context); + } + /** + * Adds a log record at the ALERT level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addAlert($message, array $context = array()) + { + return $this->addRecord(static::ALERT, $message, $context); + } + /** + * Adds a log record at the EMERGENCY level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addEmergency($message, array $context = array()) + { + return $this->addRecord(static::EMERGENCY, $message, $context); + } + /** + * Gets all supported logging levels. + * + * @return array Assoc array with human-readable level names => level codes. + */ + public static function getLevels() + { + return \array_flip(static::$levels); + } + /** + * Gets the name of the logging level. + * + * @param int $level + * @return string + */ + public static function getLevelName($level) + { + if (!isset(static::$levels[$level])) { + throw new \Google\Site_Kit_Dependencies\Psr\Log\InvalidArgumentException('Level "' . $level . '" is not defined, use one of: ' . \implode(', ', \array_keys(static::$levels))); + } + return static::$levels[$level]; + } + /** + * Converts PSR-3 levels to Monolog ones if necessary + * + * @param string|int $level Level number (monolog) or name (PSR-3) + * @return int + */ + public static function toMonologLevel($level) + { + if (\is_string($level)) { + // Contains chars of all log levels and avoids using strtoupper() which may have + // strange results depending on locale (for example, "i" will become "İ") + $upper = \strtr($level, 'abcdefgilmnortuwy', 'ABCDEFGILMNORTUWY'); + if (\defined(__CLASS__ . '::' . $upper)) { + return \constant(__CLASS__ . '::' . $upper); + } + } + return $level; + } + /** + * Checks whether the Logger has a handler that listens on the given level + * + * @param int $level + * @return bool + */ + public function isHandling($level) + { + $record = array('level' => $level); + foreach ($this->handlers as $handler) { + if ($handler->isHandling($record)) { + return \true; + } + } + return \false; + } + /** + * Set a custom exception handler + * + * @param callable $callback + * @return $this + */ + public function setExceptionHandler($callback) + { + if (!\is_callable($callback)) { + throw new \InvalidArgumentException('Exception handler must be valid callable (callback or object with an __invoke method), ' . \var_export($callback, \true) . ' given'); + } + $this->exceptionHandler = $callback; + return $this; + } + /** + * @return callable + */ + public function getExceptionHandler() + { + return $this->exceptionHandler; + } + /** + * Delegates exception management to the custom exception handler, + * or throws the exception if no custom handler is set. + */ + protected function handleException(\Exception $e, array $record) + { + if (!$this->exceptionHandler) { + throw $e; + } + \call_user_func($this->exceptionHandler, $e, $record); + } + /** + * Adds a log record at an arbitrary level. + * + * This method allows for compatibility with common interfaces. + * + * @param mixed $level The log level + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function log($level, $message, array $context = array()) + { + $level = static::toMonologLevel($level); + return $this->addRecord($level, $message, $context); + } + /** + * Adds a log record at the DEBUG level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function debug($message, array $context = array()) + { + return $this->addRecord(static::DEBUG, $message, $context); + } + /** + * Adds a log record at the INFO level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function info($message, array $context = array()) + { + return $this->addRecord(static::INFO, $message, $context); + } + /** + * Adds a log record at the NOTICE level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function notice($message, array $context = array()) + { + return $this->addRecord(static::NOTICE, $message, $context); + } + /** + * Adds a log record at the WARNING level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function warn($message, array $context = array()) + { + return $this->addRecord(static::WARNING, $message, $context); + } + /** + * Adds a log record at the WARNING level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function warning($message, array $context = array()) + { + return $this->addRecord(static::WARNING, $message, $context); + } + /** + * Adds a log record at the ERROR level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function err($message, array $context = array()) + { + return $this->addRecord(static::ERROR, $message, $context); + } + /** + * Adds a log record at the ERROR level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function error($message, array $context = array()) + { + return $this->addRecord(static::ERROR, $message, $context); + } + /** + * Adds a log record at the CRITICAL level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function crit($message, array $context = array()) + { + return $this->addRecord(static::CRITICAL, $message, $context); + } + /** + * Adds a log record at the CRITICAL level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function critical($message, array $context = array()) + { + return $this->addRecord(static::CRITICAL, $message, $context); + } + /** + * Adds a log record at the ALERT level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function alert($message, array $context = array()) + { + return $this->addRecord(static::ALERT, $message, $context); + } + /** + * Adds a log record at the EMERGENCY level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function emerg($message, array $context = array()) + { + return $this->addRecord(static::EMERGENCY, $message, $context); + } + /** + * Adds a log record at the EMERGENCY level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function emergency($message, array $context = array()) + { + return $this->addRecord(static::EMERGENCY, $message, $context); + } + /** + * Set the timezone to be used for the timestamp of log records. + * + * This is stored globally for all Logger instances + * + * @param \DateTimeZone $tz Timezone object + */ + public static function setTimezone(\DateTimeZone $tz) + { + self::$timezone = $tz; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/GitProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/GitProcessor.php new file mode 100644 index 000000000..7ea42d1f2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/GitProcessor.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Injects Git branch and Git commit SHA in all records + * + * @author Nick Otter + * @author Jordi Boggiano + */ +class GitProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + private $level; + private static $cache; + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG) + { + $this->level = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($level); + } + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + $record['extra']['git'] = self::getGitInfo(); + return $record; + } + private static function getGitInfo() + { + if (self::$cache) { + return self::$cache; + } + $branches = `git branch -v --no-abbrev`; + if ($branches && \preg_match('{^\\* (.+?)\\s+([a-f0-9]{40})(?:\\s|$)}m', $branches, $matches)) { + return self::$cache = array('branch' => $matches[1], 'commit' => $matches[2]); + } + return self::$cache = array(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php new file mode 100644 index 000000000..7fa596f75 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Injects line/file:class/function where the log message came from + * + * Warning: This only works if the handler processes the logs directly. + * If you put the processor on a handler that is behind a FingersCrossedHandler + * for example, the processor will only be called once the trigger level is reached, + * and all the log records will have the same file/line/.. data from the call that + * triggered the FingersCrossedHandler. + * + * @author Jordi Boggiano + */ +class IntrospectionProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + private $level; + private $skipClassesPartials; + private $skipStackFramesCount; + private $skipFunctions = array('call_user_func', 'call_user_func_array'); + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG, array $skipClassesPartials = array(), $skipStackFramesCount = 0) + { + $this->level = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($level); + $this->skipClassesPartials = \array_merge(array('Monolog\\'), $skipClassesPartials); + $this->skipStackFramesCount = $skipStackFramesCount; + } + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + /* + * http://php.net/manual/en/function.debug-backtrace.php + * As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added. + * Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'. + */ + $trace = \debug_backtrace(\PHP_VERSION_ID < 50306 ? 2 : \DEBUG_BACKTRACE_IGNORE_ARGS); + // skip first since it's always the current method + \array_shift($trace); + // the call_user_func call is also skipped + \array_shift($trace); + $i = 0; + while ($this->isTraceClassOrSkippedFunction($trace, $i)) { + if (isset($trace[$i]['class'])) { + foreach ($this->skipClassesPartials as $part) { + if (\strpos($trace[$i]['class'], $part) !== \false) { + $i++; + continue 2; + } + } + } elseif (\in_array($trace[$i]['function'], $this->skipFunctions)) { + $i++; + continue; + } + break; + } + $i += $this->skipStackFramesCount; + // we should have the call source now + $record['extra'] = \array_merge($record['extra'], array('file' => isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : null, 'line' => isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : null, 'class' => isset($trace[$i]['class']) ? $trace[$i]['class'] : null, 'function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : null)); + return $record; + } + private function isTraceClassOrSkippedFunction(array $trace, $index) + { + if (!isset($trace[$index])) { + return \false; + } + return isset($trace[$index]['class']) || \in_array($trace[$index]['function'], $this->skipFunctions); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php new file mode 100644 index 000000000..4706f9e69 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +/** + * Injects memory_get_peak_usage in all records + * + * @see Monolog\Processor\MemoryProcessor::__construct() for options + * @author Rob Jensen + */ +class MemoryPeakUsageProcessor extends \Google\Site_Kit_Dependencies\Monolog\Processor\MemoryProcessor +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + $bytes = \memory_get_peak_usage($this->realUsage); + $formatted = $this->formatBytes($bytes); + $record['extra']['memory_peak_usage'] = $formatted; + return $record; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php new file mode 100644 index 000000000..113fb3bb7 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +/** + * Some methods that are common for all memory processors + * + * @author Rob Jensen + */ +abstract class MemoryProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + /** + * @var bool If true, get the real size of memory allocated from system. Else, only the memory used by emalloc() is reported. + */ + protected $realUsage; + /** + * @var bool If true, then format memory size to human readable string (MB, KB, B depending on size) + */ + protected $useFormatting; + /** + * @param bool $realUsage Set this to true to get the real size of memory allocated from system. + * @param bool $useFormatting If true, then format memory size to human readable string (MB, KB, B depending on size) + */ + public function __construct($realUsage = \true, $useFormatting = \true) + { + $this->realUsage = (bool) $realUsage; + $this->useFormatting = (bool) $useFormatting; + } + /** + * Formats bytes into a human readable string if $this->useFormatting is true, otherwise return $bytes as is + * + * @param int $bytes + * @return string|int Formatted string if $this->useFormatting is true, otherwise return $bytes as is + */ + protected function formatBytes($bytes) + { + $bytes = (int) $bytes; + if (!$this->useFormatting) { + return $bytes; + } + if ($bytes > 1024 * 1024) { + return \round($bytes / 1024 / 1024, 2) . ' MB'; + } elseif ($bytes > 1024) { + return \round($bytes / 1024, 2) . ' KB'; + } + return $bytes . ' B'; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php new file mode 100644 index 000000000..b98f5ac8c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +/** + * Injects memory_get_usage in all records + * + * @see Monolog\Processor\MemoryProcessor::__construct() for options + * @author Rob Jensen + */ +class MemoryUsageProcessor extends \Google\Site_Kit_Dependencies\Monolog\Processor\MemoryProcessor +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + $bytes = \memory_get_usage($this->realUsage); + $formatted = $this->formatBytes($bytes); + $record['extra']['memory_usage'] = $formatted; + return $record; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php new file mode 100644 index 000000000..cf3c7e8b9 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +use Google\Site_Kit_Dependencies\Monolog\Logger; +/** + * Injects Hg branch and Hg revision number in all records + * + * @author Jonathan A. Schweder + */ +class MercurialProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + private $level; + private static $cache; + public function __construct($level = \Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG) + { + $this->level = \Google\Site_Kit_Dependencies\Monolog\Logger::toMonologLevel($level); + } + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + $record['extra']['hg'] = self::getMercurialInfo(); + return $record; + } + private static function getMercurialInfo() + { + if (self::$cache) { + return self::$cache; + } + $result = \explode(' ', \trim(`hg id -nb`)); + if (\count($result) >= 3) { + return self::$cache = array('branch' => $result[1], 'revision' => $result[2]); + } + return self::$cache = array(); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php new file mode 100644 index 000000000..ad928b07e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +/** + * Adds value of getmypid into records + * + * @author Andreas Hörnicke + */ +class ProcessIdProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + $record['extra']['process_id'] = \getmypid(); + return $record; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php new file mode 100644 index 000000000..3a132e590 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +/** + * An optional interface to allow labelling Monolog processors. + * + * @author Nicolas Grekas + */ +interface ProcessorInterface +{ + /** + * @return array The processed records + */ + public function __invoke(array $records); +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php new file mode 100644 index 000000000..dbeb3de62 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +use Google\Site_Kit_Dependencies\Monolog\Utils; +/** + * Processes a record's message according to PSR-3 rules + * + * It replaces {foo} with the value from $context['foo'] + * + * @author Jordi Boggiano + */ +class PsrLogMessageProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + const SIMPLE_DATE = "Y-m-d\\TH:i:s.uP"; + /** @var string|null */ + private $dateFormat; + /** @var bool */ + private $removeUsedContextFields; + /** + * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format + * @param bool $removeUsedContextFields If set to true the fields interpolated into message gets unset + */ + public function __construct($dateFormat = null, $removeUsedContextFields = \false) + { + $this->dateFormat = $dateFormat; + $this->removeUsedContextFields = $removeUsedContextFields; + } + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + if (\false === \strpos($record['message'], '{')) { + return $record; + } + $replacements = array(); + foreach ($record['context'] as $key => $val) { + $placeholder = '{' . $key . '}'; + if (\strpos($record['message'], $placeholder) === \false) { + continue; + } + if (\is_null($val) || \is_scalar($val) || \is_object($val) && \method_exists($val, "__toString")) { + $replacements[$placeholder] = $val; + } elseif ($val instanceof \DateTime) { + $replacements[$placeholder] = $val->format($this->dateFormat ?: static::SIMPLE_DATE); + } elseif (\is_object($val)) { + $replacements[$placeholder] = '[object ' . \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($val) . ']'; + } elseif (\is_array($val)) { + $replacements[$placeholder] = 'array' . \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode($val, null, \true); + } else { + $replacements[$placeholder] = '[' . \gettype($val) . ']'; + } + if ($this->removeUsedContextFields) { + unset($record['context'][$key]); + } + } + $record['message'] = \strtr($record['message'], $replacements); + return $record; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/TagProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/TagProcessor.php new file mode 100644 index 000000000..01ae19709 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/TagProcessor.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +/** + * Adds a tags array into record + * + * @author Martijn Riemers + */ +class TagProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + private $tags; + public function __construct(array $tags = array()) + { + $this->setTags($tags); + } + public function addTags(array $tags = array()) + { + $this->tags = \array_merge($this->tags, $tags); + } + public function setTags(array $tags = array()) + { + $this->tags = $tags; + } + public function __invoke(array $record) + { + $record['extra']['tags'] = $this->tags; + return $record; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/UidProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/UidProcessor.php new file mode 100644 index 000000000..a0f860cef --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/UidProcessor.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +use Google\Site_Kit_Dependencies\Monolog\ResettableInterface; +/** + * Adds a unique identifier into records + * + * @author Simon Mönch + */ +class UidProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface, \Google\Site_Kit_Dependencies\Monolog\ResettableInterface +{ + private $uid; + public function __construct($length = 7) + { + if (!\is_int($length) || $length > 32 || $length < 1) { + throw new \InvalidArgumentException('The uid length must be an integer between 1 and 32'); + } + $this->uid = $this->generateUid($length); + } + public function __invoke(array $record) + { + $record['extra']['uid'] = $this->uid; + return $record; + } + /** + * @return string + */ + public function getUid() + { + return $this->uid; + } + public function reset() + { + $this->uid = $this->generateUid(\strlen($this->uid)); + } + private function generateUid($length) + { + return \substr(\hash('md5', \uniqid('', \true)), 0, $length); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/WebProcessor.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/WebProcessor.php new file mode 100644 index 000000000..1af13c3d4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Processor/WebProcessor.php @@ -0,0 +1,95 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog\Processor; + +/** + * Injects url/method and remote IP of the current web request in all records + * + * @author Jordi Boggiano + */ +class WebProcessor implements \Google\Site_Kit_Dependencies\Monolog\Processor\ProcessorInterface +{ + /** + * @var array|\ArrayAccess + */ + protected $serverData; + /** + * Default fields + * + * Array is structured as [key in record.extra => key in $serverData] + * + * @var array + */ + protected $extraFields = array('url' => 'REQUEST_URI', 'ip' => 'REMOTE_ADDR', 'http_method' => 'REQUEST_METHOD', 'server' => 'SERVER_NAME', 'referrer' => 'HTTP_REFERER'); + /** + * @param array|\ArrayAccess $serverData Array or object w/ ArrayAccess that provides access to the $_SERVER data + * @param array|null $extraFields Field names and the related key inside $serverData to be added. If not provided it defaults to: url, ip, http_method, server, referrer + */ + public function __construct($serverData = null, array $extraFields = null) + { + if (null === $serverData) { + $this->serverData =& $_SERVER; + } elseif (\is_array($serverData) || $serverData instanceof \ArrayAccess) { + $this->serverData = $serverData; + } else { + throw new \UnexpectedValueException('$serverData must be an array or object implementing ArrayAccess.'); + } + if (isset($this->serverData['UNIQUE_ID'])) { + $this->extraFields['unique_id'] = 'UNIQUE_ID'; + } + if (null !== $extraFields) { + if (isset($extraFields[0])) { + foreach (\array_keys($this->extraFields) as $fieldName) { + if (!\in_array($fieldName, $extraFields)) { + unset($this->extraFields[$fieldName]); + } + } + } else { + $this->extraFields = $extraFields; + } + } + } + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // skip processing if for some reason request data + // is not present (CLI or wonky SAPIs) + if (!isset($this->serverData['REQUEST_URI'])) { + return $record; + } + $record['extra'] = $this->appendExtraFields($record['extra']); + return $record; + } + /** + * @param string $extraName + * @param string $serverName + * @return $this + */ + public function addExtraField($extraName, $serverName) + { + $this->extraFields[$extraName] = $serverName; + return $this; + } + /** + * @param array $extra + * @return array + */ + private function appendExtraFields(array $extra) + { + foreach ($this->extraFields as $extraName => $serverName) { + $extra[$extraName] = isset($this->serverData[$serverName]) ? $this->serverData[$serverName] : null; + } + return $extra; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Registry.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Registry.php new file mode 100644 index 000000000..dc9083c2d --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Registry.php @@ -0,0 +1,122 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog; + +use InvalidArgumentException; +/** + * Monolog log registry + * + * Allows to get `Logger` instances in the global scope + * via static method calls on this class. + * + * + * $application = new Monolog\Logger('application'); + * $api = new Monolog\Logger('api'); + * + * Monolog\Registry::addLogger($application); + * Monolog\Registry::addLogger($api); + * + * function testLogger() + * { + * Monolog\Registry::api()->addError('Sent to $api Logger instance'); + * Monolog\Registry::application()->addError('Sent to $application Logger instance'); + * } + * + * + * @author Tomas Tatarko + */ +class Registry +{ + /** + * List of all loggers in the registry (by named indexes) + * + * @var Logger[] + */ + private static $loggers = array(); + /** + * Adds new logging channel to the registry + * + * @param Logger $logger Instance of the logging channel + * @param string|null $name Name of the logging channel ($logger->getName() by default) + * @param bool $overwrite Overwrite instance in the registry if the given name already exists? + * @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists + */ + public static function addLogger(\Google\Site_Kit_Dependencies\Monolog\Logger $logger, $name = null, $overwrite = \false) + { + $name = $name ?: $logger->getName(); + if (isset(self::$loggers[$name]) && !$overwrite) { + throw new \InvalidArgumentException('Logger with the given name already exists'); + } + self::$loggers[$name] = $logger; + } + /** + * Checks if such logging channel exists by name or instance + * + * @param string|Logger $logger Name or logger instance + */ + public static function hasLogger($logger) + { + if ($logger instanceof \Google\Site_Kit_Dependencies\Monolog\Logger) { + $index = \array_search($logger, self::$loggers, \true); + return \false !== $index; + } else { + return isset(self::$loggers[$logger]); + } + } + /** + * Removes instance from registry by name or instance + * + * @param string|Logger $logger Name or logger instance + */ + public static function removeLogger($logger) + { + if ($logger instanceof \Google\Site_Kit_Dependencies\Monolog\Logger) { + if (\false !== ($idx = \array_search($logger, self::$loggers, \true))) { + unset(self::$loggers[$idx]); + } + } else { + unset(self::$loggers[$logger]); + } + } + /** + * Clears the registry + */ + public static function clear() + { + self::$loggers = array(); + } + /** + * Gets Logger instance from the registry + * + * @param string $name Name of the requested Logger instance + * @throws \InvalidArgumentException If named Logger instance is not in the registry + * @return Logger Requested instance of Logger + */ + public static function getInstance($name) + { + if (!isset(self::$loggers[$name])) { + throw new \InvalidArgumentException(\sprintf('Requested "%s" logger instance is not in the registry', $name)); + } + return self::$loggers[$name]; + } + /** + * Gets Logger instance from the registry via static method call + * + * @param string $name Name of the requested Logger instance + * @param array $arguments Arguments passed to static method call + * @throws \InvalidArgumentException If named Logger instance is not in the registry + * @return Logger Requested instance of Logger + */ + public static function __callStatic($name, $arguments) + { + return self::getInstance($name); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ResettableInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ResettableInterface.php new file mode 100644 index 000000000..964a632cb --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ResettableInterface.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog; + +/** + * Handler or Processor implementing this interface will be reset when Logger::reset() is called. + * + * Resetting ends a log cycle gets them back to their initial state. + * + * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal + * state, and getting it back to a state in which it can receive log records again. + * + * This is useful in case you want to avoid logs leaking between two requests or jobs when you + * have a long running process like a worker or an application server serving multiple requests + * in one process. + * + * @author Grégoire Pineau + */ +interface ResettableInterface +{ + public function reset(); +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/SignalHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/SignalHandler.php new file mode 100644 index 000000000..f08763f72 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/SignalHandler.php @@ -0,0 +1,100 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog; + +use Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface; +use Google\Site_Kit_Dependencies\Psr\Log\LogLevel; +use ReflectionExtension; +/** + * Monolog POSIX signal handler + * + * @author Robert Gust-Bardon + */ +class SignalHandler +{ + private $logger; + private $previousSignalHandler = array(); + private $signalLevelMap = array(); + private $signalRestartSyscalls = array(); + public function __construct(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger) + { + $this->logger = $logger; + } + public function registerSignalHandler($signo, $level = \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, $callPrevious = \true, $restartSyscalls = \true, $async = \true) + { + if (!\extension_loaded('pcntl') || !\function_exists('pcntl_signal')) { + return $this; + } + if ($callPrevious) { + if (\function_exists('pcntl_signal_get_handler')) { + $handler = \pcntl_signal_get_handler($signo); + if ($handler === \false) { + return $this; + } + $this->previousSignalHandler[$signo] = $handler; + } else { + $this->previousSignalHandler[$signo] = \true; + } + } else { + unset($this->previousSignalHandler[$signo]); + } + $this->signalLevelMap[$signo] = $level; + $this->signalRestartSyscalls[$signo] = $restartSyscalls; + if (\function_exists('pcntl_async_signals') && $async !== null) { + \pcntl_async_signals($async); + } + \pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls); + return $this; + } + public function handleSignal($signo, array $siginfo = null) + { + static $signals = array(); + if (!$signals && \extension_loaded('pcntl')) { + $pcntl = new \ReflectionExtension('pcntl'); + $constants = $pcntl->getConstants(); + if (!$constants) { + // HHVM 3.24.2 returns an empty array. + $constants = \get_defined_constants(\true); + $constants = $constants['Core']; + } + foreach ($constants as $name => $value) { + if (\substr($name, 0, 3) === 'SIG' && $name[3] !== '_' && \is_int($value)) { + $signals[$value] = $name; + } + } + unset($constants); + } + $level = isset($this->signalLevelMap[$signo]) ? $this->signalLevelMap[$signo] : \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL; + $signal = isset($signals[$signo]) ? $signals[$signo] : $signo; + $context = isset($siginfo) ? $siginfo : array(); + $this->logger->log($level, \sprintf('Program received signal %s', $signal), $context); + if (!isset($this->previousSignalHandler[$signo])) { + return; + } + if ($this->previousSignalHandler[$signo] === \true || $this->previousSignalHandler[$signo] === \SIG_DFL) { + if (\extension_loaded('pcntl') && \function_exists('pcntl_signal') && \function_exists('pcntl_sigprocmask') && \function_exists('pcntl_signal_dispatch') && \extension_loaded('posix') && \function_exists('posix_getpid') && \function_exists('posix_kill')) { + $restartSyscalls = isset($this->signalRestartSyscalls[$signo]) ? $this->signalRestartSyscalls[$signo] : \true; + \pcntl_signal($signo, \SIG_DFL, $restartSyscalls); + \pcntl_sigprocmask(\SIG_UNBLOCK, array($signo), $oldset); + \posix_kill(\posix_getpid(), $signo); + \pcntl_signal_dispatch(); + \pcntl_sigprocmask(\SIG_SETMASK, $oldset); + \pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls); + } + } elseif (\is_callable($this->previousSignalHandler[$signo])) { + if (\PHP_VERSION_ID >= 70100) { + $this->previousSignalHandler[$signo]($signo, $siginfo); + } else { + $this->previousSignalHandler[$signo]($signo); + } + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Utils.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Utils.php new file mode 100644 index 000000000..4e2b3ddbc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Utils.php @@ -0,0 +1,162 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Google\Site_Kit_Dependencies\Monolog; + +class Utils +{ + /** + * @internal + */ + public static function getClass($object) + { + $class = \get_class($object); + return 'c' === $class[0] && 0 === \strpos($class, "class@anonymous\0") ? \get_parent_class($class) . '@anonymous' : $class; + } + /** + * Makes sure if a relative path is passed in it is turned into an absolute path + * + * @param string $streamUrl stream URL or path without protocol + * + * @return string + */ + public static function canonicalizePath($streamUrl) + { + $prefix = ''; + if ('file://' === \substr($streamUrl, 0, 7)) { + $streamUrl = \substr($streamUrl, 7); + $prefix = 'file://'; + } + // other type of stream, not supported + if (\false !== \strpos($streamUrl, '://')) { + return $streamUrl; + } + // already absolute + if (\substr($streamUrl, 0, 1) === '/' || \substr($streamUrl, 1, 1) === ':' || \substr($streamUrl, 0, 2) === '\\\\') { + return $prefix . $streamUrl; + } + $streamUrl = \getcwd() . '/' . $streamUrl; + return $prefix . $streamUrl; + } + /** + * Return the JSON representation of a value + * + * @param mixed $data + * @param int $encodeFlags flags to pass to json encode, defaults to JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE + * @param bool $ignoreErrors whether to ignore encoding errors or to throw on error, when ignored and the encoding fails, "null" is returned which is valid json for null + * @throws \RuntimeException if encoding fails and errors are not ignored + * @return string + */ + public static function jsonEncode($data, $encodeFlags = null, $ignoreErrors = \false) + { + if (null === $encodeFlags && \version_compare(\PHP_VERSION, '5.4.0', '>=')) { + $encodeFlags = \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE; + } + if ($ignoreErrors) { + $json = @\json_encode($data, $encodeFlags); + if (\false === $json) { + return 'null'; + } + return $json; + } + $json = \json_encode($data, $encodeFlags); + if (\false === $json) { + $json = self::handleJsonError(\json_last_error(), $data); + } + return $json; + } + /** + * Handle a json_encode failure. + * + * If the failure is due to invalid string encoding, try to clean the + * input and encode again. If the second encoding attempt fails, the + * inital error is not encoding related or the input can't be cleaned then + * raise a descriptive exception. + * + * @param int $code return code of json_last_error function + * @param mixed $data data that was meant to be encoded + * @param int $encodeFlags flags to pass to json encode, defaults to JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE + * @throws \RuntimeException if failure can't be corrected + * @return string JSON encoded data after error correction + */ + public static function handleJsonError($code, $data, $encodeFlags = null) + { + if ($code !== \JSON_ERROR_UTF8) { + self::throwEncodeError($code, $data); + } + if (\is_string($data)) { + self::detectAndCleanUtf8($data); + } elseif (\is_array($data)) { + \array_walk_recursive($data, array('Monolog\\Utils', 'detectAndCleanUtf8')); + } else { + self::throwEncodeError($code, $data); + } + if (null === $encodeFlags && \version_compare(\PHP_VERSION, '5.4.0', '>=')) { + $encodeFlags = \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE; + } + $json = \json_encode($data, $encodeFlags); + if ($json === \false) { + self::throwEncodeError(\json_last_error(), $data); + } + return $json; + } + /** + * Throws an exception according to a given code with a customized message + * + * @param int $code return code of json_last_error function + * @param mixed $data data that was meant to be encoded + * @throws \RuntimeException + */ + private static function throwEncodeError($code, $data) + { + switch ($code) { + case \JSON_ERROR_DEPTH: + $msg = 'Maximum stack depth exceeded'; + break; + case \JSON_ERROR_STATE_MISMATCH: + $msg = 'Underflow or the modes mismatch'; + break; + case \JSON_ERROR_CTRL_CHAR: + $msg = 'Unexpected control character found'; + break; + case \JSON_ERROR_UTF8: + $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; + break; + default: + $msg = 'Unknown error'; + } + throw new \RuntimeException('JSON encoding failed: ' . $msg . '. Encoding: ' . \var_export($data, \true)); + } + /** + * Detect invalid UTF-8 string characters and convert to valid UTF-8. + * + * Valid UTF-8 input will be left unmodified, but strings containing + * invalid UTF-8 codepoints will be reencoded as UTF-8 with an assumed + * original encoding of ISO-8859-15. This conversion may result in + * incorrect output if the actual encoding was not ISO-8859-15, but it + * will be clean UTF-8 output and will not rely on expensive and fragile + * detection algorithms. + * + * Function converts the input in place in the passed variable so that it + * can be used as a callback for array_walk_recursive. + * + * @param mixed $data Input to check and convert if needed, passed by ref + * @private + */ + public static function detectAndCleanUtf8(&$data) + { + if (\is_string($data) && !\preg_match('//u', $data)) { + $data = \preg_replace_callback('/[\\x80-\\xFF]+/', function ($m) { + return \utf8_encode($m[0]); + }, $data); + $data = \str_replace(array('¤', '¦', '¨', '´', '¸', '¼', '½', '¾'), array('€', 'Š', 'š', 'Ž', 'ž', 'Œ', 'œ', 'Ÿ'), $data); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/cache/src/CacheException.php b/wp-content/plugins/google-site-kit/third-party/psr/cache/src/CacheException.php new file mode 100644 index 000000000..0a353d06c --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/cache/src/CacheException.php @@ -0,0 +1,10 @@ +getHeaders() as $name => $values) { + * echo $name . ": " . implode(", ", $values); + * } + * + * // Emit headers iteratively: + * foreach ($message->getHeaders() as $name => $values) { + * foreach ($values as $value) { + * header(sprintf('%s: %s', $name, $value), false); + * } + * } + * + * While header names are not case-sensitive, getHeaders() will preserve the + * exact case in which headers were originally specified. + * + * @return string[][] Returns an associative array of the message's headers. Each + * key MUST be a header name, and each value MUST be an array of strings + * for that header. + */ + public function getHeaders(); + /** + * Checks if a header exists by the given case-insensitive name. + * + * @param string $name Case-insensitive header field name. + * @return bool Returns true if any header names match the given header + * name using a case-insensitive string comparison. Returns false if + * no matching header name is found in the message. + */ + public function hasHeader($name); + /** + * Retrieves a message header value by the given case-insensitive name. + * + * This method returns an array of all the header values of the given + * case-insensitive header name. + * + * If the header does not appear in the message, this method MUST return an + * empty array. + * + * @param string $name Case-insensitive header field name. + * @return string[] An array of string values as provided for the given + * header. If the header does not appear in the message, this method MUST + * return an empty array. + */ + public function getHeader($name); + /** + * Retrieves a comma-separated string of the values for a single header. + * + * This method returns all of the header values of the given + * case-insensitive header name as a string concatenated together using + * a comma. + * + * NOTE: Not all header values may be appropriately represented using + * comma concatenation. For such headers, use getHeader() instead + * and supply your own delimiter when concatenating. + * + * If the header does not appear in the message, this method MUST return + * an empty string. + * + * @param string $name Case-insensitive header field name. + * @return string A string of values as provided for the given header + * concatenated together using a comma. If the header does not appear in + * the message, this method MUST return an empty string. + */ + public function getHeaderLine($name); + /** + * Return an instance with the provided value replacing the specified header. + * + * While header names are case-insensitive, the casing of the header will + * be preserved by this function, and returned from getHeaders(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new and/or updated header and value. + * + * @param string $name Case-insensitive header field name. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withHeader($name, $value); + /** + * Return an instance with the specified header appended with the given value. + * + * Existing values for the specified header will be maintained. The new + * value(s) will be appended to the existing list. If the header did not + * exist previously, it will be added. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new header and/or value. + * + * @param string $name Case-insensitive header field name to add. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withAddedHeader($name, $value); + /** + * Return an instance without the specified header. + * + * Header resolution MUST be done without case-sensitivity. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the named header. + * + * @param string $name Case-insensitive header field name to remove. + * @return static + */ + public function withoutHeader($name); + /** + * Gets the body of the message. + * + * @return StreamInterface Returns the body as a stream. + */ + public function getBody(); + /** + * Return an instance with the specified message body. + * + * The body MUST be a StreamInterface object. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return a new instance that has the + * new body stream. + * + * @param StreamInterface $body Body. + * @return static + * @throws \InvalidArgumentException When the body is not valid. + */ + public function withBody(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $body); +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/http-message/src/RequestInterface.php b/wp-content/plugins/google-site-kit/third-party/psr/http-message/src/RequestInterface.php new file mode 100644 index 000000000..f6134a639 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/http-message/src/RequestInterface.php @@ -0,0 +1,124 @@ +getQuery()` + * or from the `QUERY_STRING` server param. + * + * @return array + */ + public function getQueryParams(); + /** + * Return an instance with the specified query string arguments. + * + * These values SHOULD remain immutable over the course of the incoming + * request. They MAY be injected during instantiation, such as from PHP's + * $_GET superglobal, or MAY be derived from some other value such as the + * URI. In cases where the arguments are parsed from the URI, the data + * MUST be compatible with what PHP's parse_str() would return for + * purposes of how duplicate query parameters are handled, and how nested + * sets are handled. + * + * Setting query string arguments MUST NOT change the URI stored by the + * request, nor the values in the server params. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated query string arguments. + * + * @param array $query Array of query string arguments, typically from + * $_GET. + * @return static + */ + public function withQueryParams(array $query); + /** + * Retrieve normalized file upload data. + * + * This method returns upload metadata in a normalized tree, with each leaf + * an instance of Psr\Http\Message\UploadedFileInterface. + * + * These values MAY be prepared from $_FILES or the message body during + * instantiation, or MAY be injected via withUploadedFiles(). + * + * @return array An array tree of UploadedFileInterface instances; an empty + * array MUST be returned if no data is present. + */ + public function getUploadedFiles(); + /** + * Create a new instance with the specified uploaded files. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param array $uploadedFiles An array tree of UploadedFileInterface instances. + * @return static + * @throws \InvalidArgumentException if an invalid structure is provided. + */ + public function withUploadedFiles(array $uploadedFiles); + /** + * Retrieve any parameters provided in the request body. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, this method MUST + * return the contents of $_POST. + * + * Otherwise, this method may return any results of deserializing + * the request body content; as parsing returns structured content, the + * potential types MUST be arrays or objects only. A null value indicates + * the absence of body content. + * + * @return null|array|object The deserialized body parameters, if any. + * These will typically be an array or object. + */ + public function getParsedBody(); + /** + * Return an instance with the specified body parameters. + * + * These MAY be injected during instantiation. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, use this method + * ONLY to inject the contents of $_POST. + * + * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of + * deserializing the request body content. Deserialization/parsing returns + * structured data, and, as such, this method ONLY accepts arrays or objects, + * or a null value if nothing was available to parse. + * + * As an example, if content negotiation determines that the request data + * is a JSON payload, this method could be used to create a request + * instance with the deserialized parameters. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param null|array|object $data The deserialized body data. This will + * typically be in an array or object. + * @return static + * @throws \InvalidArgumentException if an unsupported argument type is + * provided. + */ + public function withParsedBody($data); + /** + * Retrieve attributes derived from the request. + * + * The request "attributes" may be used to allow injection of any + * parameters derived from the request: e.g., the results of path + * match operations; the results of decrypting cookies; the results of + * deserializing non-form-encoded message bodies; etc. Attributes + * will be application and request specific, and CAN be mutable. + * + * @return array Attributes derived from the request. + */ + public function getAttributes(); + /** + * Retrieve a single derived request attribute. + * + * Retrieves a single derived request attribute as described in + * getAttributes(). If the attribute has not been previously set, returns + * the default value as provided. + * + * This method obviates the need for a hasAttribute() method, as it allows + * specifying a default value to return if the attribute is not found. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $default Default value to return if the attribute does not exist. + * @return mixed + */ + public function getAttribute($name, $default = null); + /** + * Return an instance with the specified derived request attribute. + * + * This method allows setting a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $value The value of the attribute. + * @return static + */ + public function withAttribute($name, $value); + /** + * Return an instance that removes the specified derived request attribute. + * + * This method allows removing a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @return static + */ + public function withoutAttribute($name); +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/http-message/src/StreamInterface.php b/wp-content/plugins/google-site-kit/third-party/psr/http-message/src/StreamInterface.php new file mode 100644 index 000000000..3d94f43bd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/http-message/src/StreamInterface.php @@ -0,0 +1,144 @@ + + * [user-info@]host[:port] + * + * + * If the port component is not set or is the standard port for the current + * scheme, it SHOULD NOT be included. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2 + * @return string The URI authority, in "[user-info@]host[:port]" format. + */ + public function getAuthority(); + /** + * Retrieve the user information component of the URI. + * + * If no user information is present, this method MUST return an empty + * string. + * + * If a user is present in the URI, this will return that value; + * additionally, if the password is also present, it will be appended to the + * user value, with a colon (":") separating the values. + * + * The trailing "@" character is not part of the user information and MUST + * NOT be added. + * + * @return string The URI user information, in "username[:password]" format. + */ + public function getUserInfo(); + /** + * Retrieve the host component of the URI. + * + * If no host is present, this method MUST return an empty string. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.2.2. + * + * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 + * @return string The URI host. + */ + public function getHost(); + /** + * Retrieve the port component of the URI. + * + * If a port is present, and it is non-standard for the current scheme, + * this method MUST return it as an integer. If the port is the standard port + * used with the current scheme, this method SHOULD return null. + * + * If no port is present, and no scheme is present, this method MUST return + * a null value. + * + * If no port is present, but a scheme is present, this method MAY return + * the standard port for that scheme, but SHOULD return null. + * + * @return null|int The URI port. + */ + public function getPort(); + /** + * Retrieve the path component of the URI. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * Normally, the empty path "" and absolute path "/" are considered equal as + * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically + * do this normalization because in contexts with a trimmed base path, e.g. + * the front controller, this difference becomes significant. It's the task + * of the user to handle both "" and "/". + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.3. + * + * As an example, if the value should include a slash ("/") not intended as + * delimiter between path segments, that value MUST be passed in encoded + * form (e.g., "%2F") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.3 + * @return string The URI path. + */ + public function getPath(); + /** + * Retrieve the query string of the URI. + * + * If no query string is present, this method MUST return an empty string. + * + * The leading "?" character is not part of the query and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.4. + * + * As an example, if a value in a key/value pair of the query string should + * include an ampersand ("&") not intended as a delimiter between values, + * that value MUST be passed in encoded form (e.g., "%26") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.4 + * @return string The URI query string. + */ + public function getQuery(); + /** + * Retrieve the fragment component of the URI. + * + * If no fragment is present, this method MUST return an empty string. + * + * The leading "#" character is not part of the fragment and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.5. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.5 + * @return string The URI fragment. + */ + public function getFragment(); + /** + * Return an instance with the specified scheme. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified scheme. + * + * Implementations MUST support the schemes "http" and "https" case + * insensitively, and MAY accommodate other schemes if required. + * + * An empty scheme is equivalent to removing the scheme. + * + * @param string $scheme The scheme to use with the new instance. + * @return static A new instance with the specified scheme. + * @throws \InvalidArgumentException for invalid or unsupported schemes. + */ + public function withScheme($scheme); + /** + * Return an instance with the specified user information. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified user information. + * + * Password is optional, but the user information MUST include the + * user; an empty string for the user is equivalent to removing user + * information. + * + * @param string $user The user name to use for authority. + * @param null|string $password The password associated with $user. + * @return static A new instance with the specified user information. + */ + public function withUserInfo($user, $password = null); + /** + * Return an instance with the specified host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified host. + * + * An empty host value is equivalent to removing the host. + * + * @param string $host The hostname to use with the new instance. + * @return static A new instance with the specified host. + * @throws \InvalidArgumentException for invalid hostnames. + */ + public function withHost($host); + /** + * Return an instance with the specified port. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified port. + * + * Implementations MUST raise an exception for ports outside the + * established TCP and UDP port ranges. + * + * A null value provided for the port is equivalent to removing the port + * information. + * + * @param null|int $port The port to use with the new instance; a null value + * removes the port information. + * @return static A new instance with the specified port. + * @throws \InvalidArgumentException for invalid ports. + */ + public function withPort($port); + /** + * Return an instance with the specified path. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified path. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * If the path is intended to be domain-relative rather than path relative then + * it must begin with a slash ("/"). Paths not starting with a slash ("/") + * are assumed to be relative to some base path known to the application or + * consumer. + * + * Users can provide both encoded and decoded path characters. + * Implementations ensure the correct encoding as outlined in getPath(). + * + * @param string $path The path to use with the new instance. + * @return static A new instance with the specified path. + * @throws \InvalidArgumentException for invalid paths. + */ + public function withPath($path); + /** + * Return an instance with the specified query string. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified query string. + * + * Users can provide both encoded and decoded query characters. + * Implementations ensure the correct encoding as outlined in getQuery(). + * + * An empty query string value is equivalent to removing the query string. + * + * @param string $query The query string to use with the new instance. + * @return static A new instance with the specified query string. + * @throws \InvalidArgumentException for invalid query strings. + */ + public function withQuery($query); + /** + * Return an instance with the specified URI fragment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified URI fragment. + * + * Users can provide both encoded and decoded fragment characters. + * Implementations ensure the correct encoding as outlined in getFragment(). + * + * An empty fragment value is equivalent to removing the fragment. + * + * @param string $fragment The fragment to use with the new instance. + * @return static A new instance with the specified fragment. + */ + public function withFragment($fragment); + /** + * Return the string representation as a URI reference. + * + * Depending on which components of the URI are present, the resulting + * string is either a full URI or relative reference according to RFC 3986, + * Section 4.1. The method concatenates the various components of the URI, + * using the appropriate delimiters: + * + * - If a scheme is present, it MUST be suffixed by ":". + * - If an authority is present, it MUST be prefixed by "//". + * - The path can be concatenated without delimiters. But there are two + * cases where the path has to be adjusted to make the URI reference + * valid as PHP does not allow to throw an exception in __toString(): + * - If the path is rootless and an authority is present, the path MUST + * be prefixed by "/". + * - If the path is starting with more than one "/" and no authority is + * present, the starting slashes MUST be reduced to one. + * - If a query is present, it MUST be prefixed by "?". + * - If a fragment is present, it MUST be prefixed by "#". + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + * @return string + */ + public function __toString(); +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/AbstractLogger.php b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/AbstractLogger.php new file mode 100644 index 000000000..d774214b1 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/AbstractLogger.php @@ -0,0 +1,121 @@ +log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::EMERGENCY, $message, $context); + } + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param mixed[] $context + * + * @return void + */ + public function alert($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT, $message, $context); + } + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param mixed[] $context + * + * @return void + */ + public function critical($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, $message, $context); + } + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param mixed[] $context + * + * @return void + */ + public function error($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR, $message, $context); + } + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param mixed[] $context + * + * @return void + */ + public function warning($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, $message, $context); + } + /** + * Normal but significant events. + * + * @param string $message + * @param mixed[] $context + * + * @return void + */ + public function notice($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, $message, $context); + } + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param mixed[] $context + * + * @return void + */ + public function info($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::INFO, $message, $context); + } + /** + * Detailed debug information. + * + * @param string $message + * @param mixed[] $context + * + * @return void + */ + public function debug($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::DEBUG, $message, $context); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/InvalidArgumentException.php b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/InvalidArgumentException.php new file mode 100644 index 000000000..735e87737 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/InvalidArgumentException.php @@ -0,0 +1,7 @@ +logger = $logger; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/LoggerInterface.php b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/LoggerInterface.php new file mode 100644 index 000000000..cec415912 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/LoggerInterface.php @@ -0,0 +1,117 @@ +log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::EMERGENCY, $message, $context); + } + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function alert($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT, $message, $context); + } + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function critical($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, $message, $context); + } + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function error($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR, $message, $context); + } + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function warning($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, $message, $context); + } + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function notice($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, $message, $context); + } + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function info($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::INFO, $message, $context); + } + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function debug($message, array $context = array()) + { + $this->log(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::DEBUG, $message, $context); + } + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * + * @return void + * + * @throws \Psr\Log\InvalidArgumentException + */ + public abstract function log($level, $message, array $context = array()); +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/NullLogger.php b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/NullLogger.php new file mode 100644 index 000000000..8c7303433 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/NullLogger.php @@ -0,0 +1,30 @@ +logger) { }` + * blocks. + */ +class NullLogger extends \Google\Site_Kit_Dependencies\Psr\Log\AbstractLogger +{ + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * + * @return void + * + * @throws \Psr\Log\InvalidArgumentException + */ + public function log($level, $message, array $context = array()) + { + // noop + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/Test/DummyTest.php b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/Test/DummyTest.php new file mode 100644 index 000000000..dd2a73a06 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/Test/DummyTest.php @@ -0,0 +1,18 @@ + ". + * + * Example ->error('Foo') would yield "error Foo". + * + * @return string[] + */ + public abstract function getLogs(); + public function testImplements() + { + $this->assertInstanceOf('Google\\Site_Kit_Dependencies\\Psr\\Log\\LoggerInterface', $this->getLogger()); + } + /** + * @dataProvider provideLevelsAndMessages + */ + public function testLogsAtAllLevels($level, $message) + { + $logger = $this->getLogger(); + $logger->{$level}($message, array('user' => 'Bob')); + $logger->log($level, $message, array('user' => 'Bob')); + $expected = array($level . ' message of level ' . $level . ' with context: Bob', $level . ' message of level ' . $level . ' with context: Bob'); + $this->assertEquals($expected, $this->getLogs()); + } + public function provideLevelsAndMessages() + { + return array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::EMERGENCY => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT, 'message of level alert with context: {user}'), \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, 'message of level critical with context: {user}'), \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR, 'message of level error with context: {user}'), \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, 'message of level warning with context: {user}'), \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, 'message of level notice with context: {user}'), \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::INFO => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::INFO, 'message of level info with context: {user}'), \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::DEBUG => array(\Google\Site_Kit_Dependencies\Psr\Log\LogLevel::DEBUG, 'message of level debug with context: {user}')); + } + /** + * @expectedException \Psr\Log\InvalidArgumentException + */ + public function testThrowsOnInvalidLevel() + { + $logger = $this->getLogger(); + $logger->log('invalid level', 'Foo'); + } + public function testContextReplacement() + { + $logger = $this->getLogger(); + $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); + $expected = array('info {Message {nothing} Bob Bar a}'); + $this->assertEquals($expected, $this->getLogs()); + } + public function testObjectCastToString() + { + if (\method_exists($this, 'createPartialMock')) { + $dummy = $this->createPartialMock('Google\\Site_Kit_Dependencies\\Psr\\Log\\Test\\DummyTest', array('__toString')); + } else { + $dummy = $this->getMock('Google\\Site_Kit_Dependencies\\Psr\\Log\\Test\\DummyTest', array('__toString')); + } + $dummy->expects($this->once())->method('__toString')->will($this->returnValue('DUMMY')); + $this->getLogger()->warning($dummy); + $expected = array('warning DUMMY'); + $this->assertEquals($expected, $this->getLogs()); + } + public function testContextCanContainAnything() + { + $closed = \fopen('php://memory', 'r'); + \fclose($closed); + $context = array('bool' => \true, 'null' => null, 'string' => 'Foo', 'int' => 0, 'float' => 0.5, 'nested' => array('with object' => new \Google\Site_Kit_Dependencies\Psr\Log\Test\DummyTest()), 'object' => new \DateTime(), 'resource' => \fopen('php://memory', 'r'), 'closed' => $closed); + $this->getLogger()->warning('Crazy context data', $context); + $expected = array('warning Crazy context data'); + $this->assertEquals($expected, $this->getLogs()); + } + public function testContextExceptionKeyCanBeExceptionOrOtherValues() + { + $logger = $this->getLogger(); + $logger->warning('Random message', array('exception' => 'oops')); + $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); + $expected = array('warning Random message', 'critical Uncaught Exception!'); + $this->assertEquals($expected, $this->getLogs()); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/Test/TestLogger.php b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/Test/TestLogger.php new file mode 100644 index 000000000..8642b07bc --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/psr/log/Psr/Log/Test/TestLogger.php @@ -0,0 +1,132 @@ + $level, 'message' => $message, 'context' => $context]; + $this->recordsByLevel[$record['level']][] = $record; + $this->records[] = $record; + } + public function hasRecords($level) + { + return isset($this->recordsByLevel[$level]); + } + public function hasRecord($record, $level) + { + if (\is_string($record)) { + $record = ['message' => $record]; + } + return $this->hasRecordThatPasses(function ($rec) use($record) { + if ($rec['message'] !== $record['message']) { + return \false; + } + if (isset($record['context']) && $rec['context'] !== $record['context']) { + return \false; + } + return \true; + }, $level); + } + public function hasRecordThatContains($message, $level) + { + return $this->hasRecordThatPasses(function ($rec) use($message) { + return \strpos($rec['message'], $message) !== \false; + }, $level); + } + public function hasRecordThatMatches($regex, $level) + { + return $this->hasRecordThatPasses(function ($rec) use($regex) { + return \preg_match($regex, $rec['message']) > 0; + }, $level); + } + public function hasRecordThatPasses(callable $predicate, $level) + { + if (!isset($this->recordsByLevel[$level])) { + return \false; + } + foreach ($this->recordsByLevel[$level] as $i => $rec) { + if (\call_user_func($predicate, $rec, $i)) { + return \true; + } + } + return \false; + } + public function __call($method, $args) + { + if (\preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { + $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; + $level = \strtolower($matches[2]); + if (\method_exists($this, $genericMethod)) { + $args[] = $level; + return \call_user_func_array([$this, $genericMethod], $args); + } + } + throw new \BadMethodCallException('Call to undefined method ' . \get_class($this) . '::' . $method . '()'); + } + public function reset() + { + $this->records = []; + $this->recordsByLevel = []; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/ralouphie/getallheaders/src/getallheaders.php b/wp-content/plugins/google-site-kit/third-party/ralouphie/getallheaders/src/getallheaders.php new file mode 100644 index 000000000..c7285a5ba --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/ralouphie/getallheaders/src/getallheaders.php @@ -0,0 +1,46 @@ + 'Content-Type', + 'CONTENT_LENGTH' => 'Content-Length', + 'CONTENT_MD5' => 'Content-Md5', + ); + + foreach ($_SERVER as $key => $value) { + if (substr($key, 0, 5) === 'HTTP_') { + $key = substr($key, 5); + if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) { + $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key)))); + $headers[$key] = $value; + } + } elseif (isset($copy_server[$key])) { + $headers[$copy_server[$key]] = $value; + } + } + + if (!isset($headers['Authorization'])) { + if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { + $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; + } elseif (isset($_SERVER['PHP_AUTH_USER'])) { + $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; + $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass); + } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) { + $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST']; + } + } + + return $headers; + } + +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/CancellablePromiseInterface.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/CancellablePromiseInterface.php new file mode 100644 index 000000000..3d19c46d2 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/CancellablePromiseInterface.php @@ -0,0 +1,17 @@ +started) { + return; + } + $this->started = \true; + $this->drain(); + } + public function enqueue($cancellable) + { + if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) { + return; + } + $length = \array_push($this->queue, $cancellable); + if ($this->started && 1 === $length) { + $this->drain(); + } + } + private function drain() + { + for ($i = \key($this->queue); isset($this->queue[$i]); $i++) { + $cancellable = $this->queue[$i]; + $exception = null; + try { + $cancellable->cancel(); + } catch (\Throwable $exception) { + } catch (\Exception $exception) { + } + unset($this->queue[$i]); + if ($exception) { + throw $exception; + } + } + $this->queue = []; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/Deferred.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/Deferred.php new file mode 100644 index 000000000..2746a7619 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/Deferred.php @@ -0,0 +1,55 @@ +canceller = $canceller; + } + public function promise() + { + if (null === $this->promise) { + $this->promise = new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) { + $this->resolveCallback = $resolve; + $this->rejectCallback = $reject; + $this->notifyCallback = $notify; + }, $this->canceller); + $this->canceller = null; + } + return $this->promise; + } + public function resolve($value = null) + { + $this->promise(); + \call_user_func($this->resolveCallback, $value); + } + public function reject($reason = null) + { + $this->promise(); + \call_user_func($this->rejectCallback, $reason); + } + /** + * @deprecated 2.6.0 Progress support is deprecated and should not be used anymore. + * @param mixed $update + */ + public function notify($update = null) + { + $this->promise(); + \call_user_func($this->notifyCallback, $update); + } + /** + * @deprecated 2.2.0 + * @see Deferred::notify() + */ + public function progress($update = null) + { + $this->notify($update); + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/Exception/LengthException.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/Exception/LengthException.php new file mode 100644 index 000000000..fa57044cf --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/Exception/LengthException.php @@ -0,0 +1,7 @@ +then(null, $onRejected); + * ``` + * + * Additionally, you can type hint the `$reason` argument of `$onRejected` to catch + * only specific errors. + * + * @param callable $onRejected + * @return ExtendedPromiseInterface + */ + public function otherwise(callable $onRejected); + /** + * Allows you to execute "cleanup" type tasks in a promise chain. + * + * It arranges for `$onFulfilledOrRejected` to be called, with no arguments, + * when the promise is either fulfilled or rejected. + * + * * If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully, + * `$newPromise` will fulfill with the same value as `$promise`. + * * If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a + * rejected promise, `$newPromise` will reject with the thrown exception or + * rejected promise's reason. + * * If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully, + * `$newPromise` will reject with the same reason as `$promise`. + * * If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a + * rejected promise, `$newPromise` will reject with the thrown exception or + * rejected promise's reason. + * + * `always()` behaves similarly to the synchronous finally statement. When combined + * with `otherwise()`, `always()` allows you to write code that is similar to the familiar + * synchronous catch/finally pair. + * + * Consider the following synchronous code: + * + * ```php + * try { + * return doSomething(); + * } catch(\Exception $e) { + * return handleError($e); + * } finally { + * cleanup(); + * } + * ``` + * + * Similar asynchronous code (with `doSomething()` that returns a promise) can be + * written: + * + * ```php + * return doSomething() + * ->otherwise('handleError') + * ->always('cleanup'); + * ``` + * + * @param callable $onFulfilledOrRejected + * @return ExtendedPromiseInterface + */ + public function always(callable $onFulfilledOrRejected); + /** + * Registers a handler for progress updates from promise. It is a shortcut for: + * + * ```php + * $promise->then(null, null, $onProgress); + * ``` + * + * @param callable $onProgress + * @return ExtendedPromiseInterface + * @deprecated 2.6.0 Progress support is deprecated and should not be used anymore. + */ + public function progress(callable $onProgress); +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/FulfilledPromise.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/FulfilledPromise.php new file mode 100644 index 000000000..abeb022c4 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/FulfilledPromise.php @@ -0,0 +1,60 @@ +value = $value; + } + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null === $onFulfilled) { + return $this; + } + try { + return resolve($onFulfilled($this->value)); + } catch (\Throwable $exception) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception); + } catch (\Exception $exception) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception); + } + } + public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null === $onFulfilled) { + return; + } + $result = $onFulfilled($this->value); + if ($result instanceof \Google\Site_Kit_Dependencies\React\Promise\ExtendedPromiseInterface) { + $result->done(); + } + } + public function otherwise(callable $onRejected) + { + return $this; + } + public function always(callable $onFulfilledOrRejected) + { + return $this->then(function ($value) use($onFulfilledOrRejected) { + return resolve($onFulfilledOrRejected())->then(function () use($value) { + return $value; + }); + }); + } + public function progress(callable $onProgress) + { + return $this; + } + public function cancel() + { + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/LazyPromise.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/LazyPromise.php new file mode 100644 index 000000000..4921813e0 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/LazyPromise.php @@ -0,0 +1,57 @@ +factory = $factory; + } + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + return $this->promise()->then($onFulfilled, $onRejected, $onProgress); + } + public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + return $this->promise()->done($onFulfilled, $onRejected, $onProgress); + } + public function otherwise(callable $onRejected) + { + return $this->promise()->otherwise($onRejected); + } + public function always(callable $onFulfilledOrRejected) + { + return $this->promise()->always($onFulfilledOrRejected); + } + public function progress(callable $onProgress) + { + return $this->promise()->progress($onProgress); + } + public function cancel() + { + return $this->promise()->cancel(); + } + /** + * @internal + * @see Promise::settle() + */ + public function promise() + { + if (null === $this->promise) { + try { + $this->promise = resolve(\call_user_func($this->factory)); + } catch (\Throwable $exception) { + $this->promise = new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception); + } catch (\Exception $exception) { + $this->promise = new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception); + } + } + return $this->promise; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/Promise.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/Promise.php new file mode 100644 index 000000000..ea7628e59 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/Promise.php @@ -0,0 +1,206 @@ +canceller = $canceller; + // Explicitly overwrite arguments with null values before invoking + // resolver function. This ensure that these arguments do not show up + // in the stack trace in PHP 7+ only. + $cb = $resolver; + $resolver = $canceller = null; + $this->call($cb); + } + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null !== $this->result) { + return $this->result->then($onFulfilled, $onRejected, $onProgress); + } + if (null === $this->canceller) { + return new static($this->resolver($onFulfilled, $onRejected, $onProgress)); + } + // This promise has a canceller, so we create a new child promise which + // has a canceller that invokes the parent canceller if all other + // followers are also cancelled. We keep a reference to this promise + // instance for the static canceller function and clear this to avoid + // keeping a cyclic reference between parent and follower. + $parent = $this; + ++$parent->requiredCancelRequests; + return new static($this->resolver($onFulfilled, $onRejected, $onProgress), static function () use(&$parent) { + if (++$parent->cancelRequests >= $parent->requiredCancelRequests) { + $parent->cancel(); + } + $parent = null; + }); + } + public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null !== $this->result) { + return $this->result->done($onFulfilled, $onRejected, $onProgress); + } + $this->handlers[] = static function (\Google\Site_Kit_Dependencies\React\Promise\ExtendedPromiseInterface $promise) use($onFulfilled, $onRejected) { + $promise->done($onFulfilled, $onRejected); + }; + if ($onProgress) { + $this->progressHandlers[] = $onProgress; + } + } + public function otherwise(callable $onRejected) + { + return $this->then(null, static function ($reason) use($onRejected) { + if (!_checkTypehint($onRejected, $reason)) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($reason); + } + return $onRejected($reason); + }); + } + public function always(callable $onFulfilledOrRejected) + { + return $this->then(static function ($value) use($onFulfilledOrRejected) { + return resolve($onFulfilledOrRejected())->then(function () use($value) { + return $value; + }); + }, static function ($reason) use($onFulfilledOrRejected) { + return resolve($onFulfilledOrRejected())->then(function () use($reason) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($reason); + }); + }); + } + public function progress(callable $onProgress) + { + return $this->then(null, null, $onProgress); + } + public function cancel() + { + if (null === $this->canceller || null !== $this->result) { + return; + } + $canceller = $this->canceller; + $this->canceller = null; + $this->call($canceller); + } + private function resolver(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + return function ($resolve, $reject, $notify) use($onFulfilled, $onRejected, $onProgress) { + if ($onProgress) { + $progressHandler = static function ($update) use($notify, $onProgress) { + try { + $notify($onProgress($update)); + } catch (\Throwable $e) { + $notify($e); + } catch (\Exception $e) { + $notify($e); + } + }; + } else { + $progressHandler = $notify; + } + $this->handlers[] = static function (\Google\Site_Kit_Dependencies\React\Promise\ExtendedPromiseInterface $promise) use($onFulfilled, $onRejected, $resolve, $reject, $progressHandler) { + $promise->then($onFulfilled, $onRejected)->done($resolve, $reject, $progressHandler); + }; + $this->progressHandlers[] = $progressHandler; + }; + } + private function reject($reason = null) + { + if (null !== $this->result) { + return; + } + $this->settle(reject($reason)); + } + private function settle(\Google\Site_Kit_Dependencies\React\Promise\ExtendedPromiseInterface $promise) + { + $promise = $this->unwrap($promise); + if ($promise === $this) { + $promise = new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise(new \LogicException('Cannot resolve a promise with itself.')); + } + $handlers = $this->handlers; + $this->progressHandlers = $this->handlers = []; + $this->result = $promise; + $this->canceller = null; + foreach ($handlers as $handler) { + $handler($promise); + } + } + private function unwrap($promise) + { + $promise = $this->extract($promise); + while ($promise instanceof self && null !== $promise->result) { + $promise = $this->extract($promise->result); + } + return $promise; + } + private function extract($promise) + { + if ($promise instanceof \Google\Site_Kit_Dependencies\React\Promise\LazyPromise) { + $promise = $promise->promise(); + } + return $promise; + } + private function call(callable $cb) + { + // Explicitly overwrite argument with null value. This ensure that this + // argument does not show up in the stack trace in PHP 7+ only. + $callback = $cb; + $cb = null; + // Use reflection to inspect number of arguments expected by this callback. + // We did some careful benchmarking here: Using reflection to avoid unneeded + // function arguments is actually faster than blindly passing them. + // Also, this helps avoiding unnecessary function arguments in the call stack + // if the callback creates an Exception (creating garbage cycles). + if (\is_array($callback)) { + $ref = new \ReflectionMethod($callback[0], $callback[1]); + } elseif (\is_object($callback) && !$callback instanceof \Closure) { + $ref = new \ReflectionMethod($callback, '__invoke'); + } else { + $ref = new \ReflectionFunction($callback); + } + $args = $ref->getNumberOfParameters(); + try { + if ($args === 0) { + $callback(); + } else { + // Keep references to this promise instance for the static resolve/reject functions. + // By using static callbacks that are not bound to this instance + // and passing the target promise instance by reference, we can + // still execute its resolving logic and still clear this + // reference when settling the promise. This helps avoiding + // garbage cycles if any callback creates an Exception. + // These assumptions are covered by the test suite, so if you ever feel like + // refactoring this, go ahead, any alternative suggestions are welcome! + $target =& $this; + $progressHandlers =& $this->progressHandlers; + $callback(static function ($value = null) use(&$target) { + if ($target !== null) { + $target->settle(resolve($value)); + $target = null; + } + }, static function ($reason = null) use(&$target) { + if ($target !== null) { + $target->reject($reason); + $target = null; + } + }, static function ($update = null) use(&$progressHandlers) { + foreach ($progressHandlers as $handler) { + $handler($update); + } + }); + } + } catch (\Throwable $e) { + $target = null; + $this->reject($e); + } catch (\Exception $e) { + $target = null; + $this->reject($e); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/PromiseInterface.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/PromiseInterface.php new file mode 100644 index 000000000..1cdc2f5f3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/PromiseInterface.php @@ -0,0 +1,41 @@ +reason = $reason; + } + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null === $onRejected) { + return $this; + } + try { + return resolve($onRejected($this->reason)); + } catch (\Throwable $exception) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception); + } catch (\Exception $exception) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception); + } + } + public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null === $onRejected) { + throw \Google\Site_Kit_Dependencies\React\Promise\UnhandledRejectionException::resolve($this->reason); + } + $result = $onRejected($this->reason); + if ($result instanceof self) { + throw \Google\Site_Kit_Dependencies\React\Promise\UnhandledRejectionException::resolve($result->reason); + } + if ($result instanceof \Google\Site_Kit_Dependencies\React\Promise\ExtendedPromiseInterface) { + $result->done(); + } + } + public function otherwise(callable $onRejected) + { + if (!_checkTypehint($onRejected, $this->reason)) { + return $this; + } + return $this->then(null, $onRejected); + } + public function always(callable $onFulfilledOrRejected) + { + return $this->then(null, function ($reason) use($onFulfilledOrRejected) { + return resolve($onFulfilledOrRejected())->then(function () use($reason) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($reason); + }); + }); + } + public function progress(callable $onProgress) + { + return $this; + } + public function cancel() + { + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/UnhandledRejectionException.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/UnhandledRejectionException.php new file mode 100644 index 000000000..87b0fbcc3 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/UnhandledRejectionException.php @@ -0,0 +1,25 @@ +reason = $reason; + $message = \sprintf('Unhandled Rejection: %s', \json_encode($reason)); + parent::__construct($message, 0); + } + public function getReason() + { + return $this->reason; + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/functions.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/functions.php new file mode 100644 index 000000000..524516c2f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/functions.php @@ -0,0 +1,328 @@ +then($resolve, $reject, $notify); + }, $canceller); + } + return new \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise($promiseOrValue); +} +/** + * Creates a rejected promise for the supplied `$promiseOrValue`. + * + * If `$promiseOrValue` is a value, it will be the rejection value of the + * returned promise. + * + * If `$promiseOrValue` is a promise, its completion value will be the rejected + * value of the returned promise. + * + * This can be useful in situations where you need to reject a promise without + * throwing an exception. For example, it allows you to propagate a rejection with + * the value of another promise. + * + * @param mixed $promiseOrValue + * @return PromiseInterface + */ +function reject($promiseOrValue = null) +{ + if ($promiseOrValue instanceof \Google\Site_Kit_Dependencies\React\Promise\PromiseInterface) { + return resolve($promiseOrValue)->then(function ($value) { + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($value); + }); + } + return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($promiseOrValue); +} +/** + * Returns a promise that will resolve only once all the items in + * `$promisesOrValues` have resolved. The resolution value of the returned promise + * will be an array containing the resolution values of each of the items in + * `$promisesOrValues`. + * + * @param array $promisesOrValues + * @return PromiseInterface + */ +function all($promisesOrValues) +{ + return map($promisesOrValues, function ($val) { + return $val; + }); +} +/** + * Initiates a competitive race that allows one winner. Returns a promise which is + * resolved in the same way the first settled promise resolves. + * + * The returned promise will become **infinitely pending** if `$promisesOrValues` + * contains 0 items. + * + * @param array $promisesOrValues + * @return PromiseInterface + */ +function race($promisesOrValues) +{ + $cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue(); + $cancellationQueue->enqueue($promisesOrValues); + return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $cancellationQueue) { + resolve($promisesOrValues)->done(function ($array) use($cancellationQueue, $resolve, $reject, $notify) { + if (!\is_array($array) || !$array) { + $resolve(); + return; + } + foreach ($array as $promiseOrValue) { + $cancellationQueue->enqueue($promiseOrValue); + resolve($promiseOrValue)->done($resolve, $reject, $notify); + } + }, $reject, $notify); + }, $cancellationQueue); +} +/** + * Returns a promise that will resolve when any one of the items in + * `$promisesOrValues` resolves. The resolution value of the returned promise + * will be the resolution value of the triggering item. + * + * The returned promise will only reject if *all* items in `$promisesOrValues` are + * rejected. The rejection value will be an array of all rejection reasons. + * + * The returned promise will also reject with a `React\Promise\Exception\LengthException` + * if `$promisesOrValues` contains 0 items. + * + * @param array $promisesOrValues + * @return PromiseInterface + */ +function any($promisesOrValues) +{ + return some($promisesOrValues, 1)->then(function ($val) { + return \array_shift($val); + }); +} +/** + * Returns a promise that will resolve when `$howMany` of the supplied items in + * `$promisesOrValues` resolve. The resolution value of the returned promise + * will be an array of length `$howMany` containing the resolution values of the + * triggering items. + * + * The returned promise will reject if it becomes impossible for `$howMany` items + * to resolve (that is, when `(count($promisesOrValues) - $howMany) + 1` items + * reject). The rejection value will be an array of + * `(count($promisesOrValues) - $howMany) + 1` rejection reasons. + * + * The returned promise will also reject with a `React\Promise\Exception\LengthException` + * if `$promisesOrValues` contains less items than `$howMany`. + * + * @param array $promisesOrValues + * @param int $howMany + * @return PromiseInterface + */ +function some($promisesOrValues, $howMany) +{ + $cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue(); + $cancellationQueue->enqueue($promisesOrValues); + return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $howMany, $cancellationQueue) { + resolve($promisesOrValues)->done(function ($array) use($howMany, $cancellationQueue, $resolve, $reject, $notify) { + if (!\is_array($array) || $howMany < 1) { + $resolve([]); + return; + } + $len = \count($array); + if ($len < $howMany) { + throw new \Google\Site_Kit_Dependencies\React\Promise\Exception\LengthException(\sprintf('Input array must contain at least %d item%s but contains only %s item%s.', $howMany, 1 === $howMany ? '' : 's', $len, 1 === $len ? '' : 's')); + } + $toResolve = $howMany; + $toReject = $len - $toResolve + 1; + $values = []; + $reasons = []; + foreach ($array as $i => $promiseOrValue) { + $fulfiller = function ($val) use($i, &$values, &$toResolve, $toReject, $resolve) { + if ($toResolve < 1 || $toReject < 1) { + return; + } + $values[$i] = $val; + if (0 === --$toResolve) { + $resolve($values); + } + }; + $rejecter = function ($reason) use($i, &$reasons, &$toReject, $toResolve, $reject) { + if ($toResolve < 1 || $toReject < 1) { + return; + } + $reasons[$i] = $reason; + if (0 === --$toReject) { + $reject($reasons); + } + }; + $cancellationQueue->enqueue($promiseOrValue); + resolve($promiseOrValue)->done($fulfiller, $rejecter, $notify); + } + }, $reject, $notify); + }, $cancellationQueue); +} +/** + * Traditional map function, similar to `array_map()`, but allows input to contain + * promises and/or values, and `$mapFunc` may return either a value or a promise. + * + * The map function receives each item as argument, where item is a fully resolved + * value of a promise or value in `$promisesOrValues`. + * + * @param array $promisesOrValues + * @param callable $mapFunc + * @return PromiseInterface + */ +function map($promisesOrValues, callable $mapFunc) +{ + $cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue(); + $cancellationQueue->enqueue($promisesOrValues); + return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $mapFunc, $cancellationQueue) { + resolve($promisesOrValues)->done(function ($array) use($mapFunc, $cancellationQueue, $resolve, $reject, $notify) { + if (!\is_array($array) || !$array) { + $resolve([]); + return; + } + $toResolve = \count($array); + $values = []; + foreach ($array as $i => $promiseOrValue) { + $cancellationQueue->enqueue($promiseOrValue); + $values[$i] = null; + resolve($promiseOrValue)->then($mapFunc)->done(function ($mapped) use($i, &$values, &$toResolve, $resolve) { + $values[$i] = $mapped; + if (0 === --$toResolve) { + $resolve($values); + } + }, $reject, $notify); + } + }, $reject, $notify); + }, $cancellationQueue); +} +/** + * Traditional reduce function, similar to `array_reduce()`, but input may contain + * promises and/or values, and `$reduceFunc` may return either a value or a + * promise, *and* `$initialValue` may be a promise or a value for the starting + * value. + * + * @param array $promisesOrValues + * @param callable $reduceFunc + * @param mixed $initialValue + * @return PromiseInterface + */ +function reduce($promisesOrValues, callable $reduceFunc, $initialValue = null) +{ + $cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue(); + $cancellationQueue->enqueue($promisesOrValues); + return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $reduceFunc, $initialValue, $cancellationQueue) { + resolve($promisesOrValues)->done(function ($array) use($reduceFunc, $initialValue, $cancellationQueue, $resolve, $reject, $notify) { + if (!\is_array($array)) { + $array = []; + } + $total = \count($array); + $i = 0; + // Wrap the supplied $reduceFunc with one that handles promises and then + // delegates to the supplied. + $wrappedReduceFunc = function ($current, $val) use($reduceFunc, $cancellationQueue, $total, &$i) { + $cancellationQueue->enqueue($val); + return $current->then(function ($c) use($reduceFunc, $total, &$i, $val) { + return resolve($val)->then(function ($value) use($reduceFunc, $total, &$i, $c) { + return $reduceFunc($c, $value, $i++, $total); + }); + }); + }; + $cancellationQueue->enqueue($initialValue); + \array_reduce($array, $wrappedReduceFunc, resolve($initialValue))->done($resolve, $reject, $notify); + }, $reject, $notify); + }, $cancellationQueue); +} +/** + * @internal + */ +function _checkTypehint(callable $callback, $object) +{ + if (!\is_object($object)) { + return \true; + } + if (\is_array($callback)) { + $callbackReflection = new \ReflectionMethod($callback[0], $callback[1]); + } elseif (\is_object($callback) && !$callback instanceof \Closure) { + $callbackReflection = new \ReflectionMethod($callback, '__invoke'); + } else { + $callbackReflection = new \ReflectionFunction($callback); + } + $parameters = $callbackReflection->getParameters(); + if (!isset($parameters[0])) { + return \true; + } + $expectedException = $parameters[0]; + // PHP before v8 used an easy API: + if (\PHP_VERSION_ID < 70100 || \defined('Google\\Site_Kit_Dependencies\\HHVM_VERSION')) { + if (!$expectedException->getClass()) { + return \true; + } + return $expectedException->getClass()->isInstance($object); + } + // Extract the type of the argument and handle different possibilities + $type = $expectedException->getType(); + $isTypeUnion = \true; + $types = []; + switch (\true) { + case $type === null: + break; + case $type instanceof \ReflectionNamedType: + $types = [$type]; + break; + case $type instanceof \Google\Site_Kit_Dependencies\ReflectionIntersectionType: + $isTypeUnion = \false; + case $type instanceof \ReflectionUnionType: + $types = $type->getTypes(); + break; + default: + throw new \LogicException('Unexpected return value of ReflectionParameter::getType'); + } + // If there is no type restriction, it matches + if (empty($types)) { + return \true; + } + foreach ($types as $type) { + if (!$type instanceof \ReflectionNamedType) { + throw new \LogicException('This implementation does not support groups of intersection or union types'); + } + // A named-type can be either a class-name or a built-in type like string, int, array, etc. + $matches = $type->isBuiltin() && \gettype($object) === $type->getName() || (new \ReflectionClass($type->getName()))->isInstance($object); + // If we look for a single match (union), we can return early on match + // If we look for a full match (intersection), we can return early on mismatch + if ($matches) { + if ($isTypeUnion) { + return \true; + } + } else { + if (!$isTypeUnion) { + return \false; + } + } + } + // If we look for a single match (union) and did not return early, we matched no type and are false + // If we look for a full match (intersection) and did not return early, we matched all types and are true + return $isTypeUnion ? \false : \true; +} diff --git a/wp-content/plugins/google-site-kit/third-party/react/promise/src/functions_include.php b/wp-content/plugins/google-site-kit/third-party/react/promise/src/functions_include.php new file mode 100644 index 000000000..180482ce8 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/react/promise/src/functions_include.php @@ -0,0 +1,7 @@ + + */ +class DomainOutOfBoundsException extends \Google\Site_Kit_Dependencies\TrueBV\Exception\OutOfBoundsException +{ +} diff --git a/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Exception/LabelOutOfBoundsException.php b/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Exception/LabelOutOfBoundsException.php new file mode 100644 index 000000000..ea3f838a6 --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Exception/LabelOutOfBoundsException.php @@ -0,0 +1,12 @@ + + */ +class LabelOutOfBoundsException extends \Google\Site_Kit_Dependencies\TrueBV\Exception\OutOfBoundsException +{ +} diff --git a/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Exception/OutOfBoundsException.php b/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Exception/OutOfBoundsException.php new file mode 100644 index 000000000..c120b515a --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Exception/OutOfBoundsException.php @@ -0,0 +1,12 @@ + + */ +class OutOfBoundsException extends \RuntimeException +{ +} diff --git a/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Punycode.php b/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Punycode.php new file mode 100644 index 000000000..988153fbd --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/true/punycode/src/Punycode.php @@ -0,0 +1,302 @@ + 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 5, 'g' => 6, 'h' => 7, 'i' => 8, 'j' => 9, 'k' => 10, 'l' => 11, 'm' => 12, 'n' => 13, 'o' => 14, 'p' => 15, 'q' => 16, 'r' => 17, 's' => 18, 't' => 19, 'u' => 20, 'v' => 21, 'w' => 22, 'x' => 23, 'y' => 24, 'z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29, '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35); + /** + * Character encoding + * + * @param string + */ + protected $encoding; + /** + * Constructor + * + * @param string $encoding Character encoding + */ + public function __construct($encoding = 'UTF-8') + { + $this->encoding = $encoding; + } + /** + * Encode a domain to its Punycode version + * + * @param string $input Domain name in Unicode to be encoded + * @return string Punycode representation in ASCII + */ + public function encode($input) + { + $input = \mb_strtolower($input, $this->encoding); + $parts = \explode('.', $input); + foreach ($parts as &$part) { + $length = \strlen($part); + if ($length < 1) { + throw new \Google\Site_Kit_Dependencies\TrueBV\Exception\LabelOutOfBoundsException(\sprintf('The length of any one label is limited to between 1 and 63 octets, but %s given.', $length)); + } + $part = $this->encodePart($part); + } + $output = \implode('.', $parts); + $length = \strlen($output); + if ($length > 255) { + throw new \Google\Site_Kit_Dependencies\TrueBV\Exception\DomainOutOfBoundsException(\sprintf('A full domain name is limited to 255 octets (including the separators), %s given.', $length)); + } + return $output; + } + /** + * Encode a part of a domain name, such as tld, to its Punycode version + * + * @param string $input Part of a domain name + * @return string Punycode representation of a domain part + */ + protected function encodePart($input) + { + $codePoints = $this->listCodePoints($input); + $n = static::INITIAL_N; + $bias = static::INITIAL_BIAS; + $delta = 0; + $h = $b = \count($codePoints['basic']); + $output = ''; + foreach ($codePoints['basic'] as $code) { + $output .= $this->codePointToChar($code); + } + if ($input === $output) { + return $output; + } + if ($b > 0) { + $output .= static::DELIMITER; + } + $codePoints['nonBasic'] = \array_unique($codePoints['nonBasic']); + \sort($codePoints['nonBasic']); + $i = 0; + $length = \mb_strlen($input, $this->encoding); + while ($h < $length) { + $m = $codePoints['nonBasic'][$i++]; + $delta = $delta + ($m - $n) * ($h + 1); + $n = $m; + foreach ($codePoints['all'] as $c) { + if ($c < $n || $c < static::INITIAL_N) { + $delta++; + } + if ($c === $n) { + $q = $delta; + for ($k = static::BASE;; $k += static::BASE) { + $t = $this->calculateThreshold($k, $bias); + if ($q < $t) { + break; + } + $code = $t + ($q - $t) % (static::BASE - $t); + $output .= static::$encodeTable[$code]; + $q = ($q - $t) / (static::BASE - $t); + } + $output .= static::$encodeTable[$q]; + $bias = $this->adapt($delta, $h + 1, $h === $b); + $delta = 0; + $h++; + } + } + $delta++; + $n++; + } + $out = static::PREFIX . $output; + $length = \strlen($out); + if ($length > 63 || $length < 1) { + throw new \Google\Site_Kit_Dependencies\TrueBV\Exception\LabelOutOfBoundsException(\sprintf('The length of any one label is limited to between 1 and 63 octets, but %s given.', $length)); + } + return $out; + } + /** + * Decode a Punycode domain name to its Unicode counterpart + * + * @param string $input Domain name in Punycode + * @return string Unicode domain name + */ + public function decode($input) + { + $input = \strtolower($input); + $parts = \explode('.', $input); + foreach ($parts as &$part) { + $length = \strlen($part); + if ($length > 63 || $length < 1) { + throw new \Google\Site_Kit_Dependencies\TrueBV\Exception\LabelOutOfBoundsException(\sprintf('The length of any one label is limited to between 1 and 63 octets, but %s given.', $length)); + } + if (\strpos($part, static::PREFIX) !== 0) { + continue; + } + $part = \substr($part, \strlen(static::PREFIX)); + $part = $this->decodePart($part); + } + $output = \implode('.', $parts); + $length = \strlen($output); + if ($length > 255) { + throw new \Google\Site_Kit_Dependencies\TrueBV\Exception\DomainOutOfBoundsException(\sprintf('A full domain name is limited to 255 octets (including the separators), %s given.', $length)); + } + return $output; + } + /** + * Decode a part of domain name, such as tld + * + * @param string $input Part of a domain name + * @return string Unicode domain part + */ + protected function decodePart($input) + { + $n = static::INITIAL_N; + $i = 0; + $bias = static::INITIAL_BIAS; + $output = ''; + $pos = \strrpos($input, static::DELIMITER); + if ($pos !== \false) { + $output = \substr($input, 0, $pos++); + } else { + $pos = 0; + } + $outputLength = \strlen($output); + $inputLength = \strlen($input); + while ($pos < $inputLength) { + $oldi = $i; + $w = 1; + for ($k = static::BASE;; $k += static::BASE) { + $digit = static::$decodeTable[$input[$pos++]]; + $i = $i + $digit * $w; + $t = $this->calculateThreshold($k, $bias); + if ($digit < $t) { + break; + } + $w = $w * (static::BASE - $t); + } + $bias = $this->adapt($i - $oldi, ++$outputLength, $oldi === 0); + $n = $n + (int) ($i / $outputLength); + $i = $i % $outputLength; + $output = \mb_substr($output, 0, $i, $this->encoding) . $this->codePointToChar($n) . \mb_substr($output, $i, $outputLength - 1, $this->encoding); + $i++; + } + return $output; + } + /** + * Calculate the bias threshold to fall between TMIN and TMAX + * + * @param integer $k + * @param integer $bias + * @return integer + */ + protected function calculateThreshold($k, $bias) + { + if ($k <= $bias + static::TMIN) { + return static::TMIN; + } elseif ($k >= $bias + static::TMAX) { + return static::TMAX; + } + return $k - $bias; + } + /** + * Bias adaptation + * + * @param integer $delta + * @param integer $numPoints + * @param boolean $firstTime + * @return integer + */ + protected function adapt($delta, $numPoints, $firstTime) + { + $delta = (int) ($firstTime ? $delta / static::DAMP : $delta / 2); + $delta += (int) ($delta / $numPoints); + $k = 0; + while ($delta > (static::BASE - static::TMIN) * static::TMAX / 2) { + $delta = (int) ($delta / (static::BASE - static::TMIN)); + $k = $k + static::BASE; + } + $k = $k + (int) ((static::BASE - static::TMIN + 1) * $delta / ($delta + static::SKEW)); + return $k; + } + /** + * List code points for a given input + * + * @param string $input + * @return array Multi-dimension array with basic, non-basic and aggregated code points + */ + protected function listCodePoints($input) + { + $codePoints = array('all' => array(), 'basic' => array(), 'nonBasic' => array()); + $length = \mb_strlen($input, $this->encoding); + for ($i = 0; $i < $length; $i++) { + $char = \mb_substr($input, $i, 1, $this->encoding); + $code = $this->charToCodePoint($char); + if ($code < 128) { + $codePoints['all'][] = $codePoints['basic'][] = $code; + } else { + $codePoints['all'][] = $codePoints['nonBasic'][] = $code; + } + } + return $codePoints; + } + /** + * Convert a single or multi-byte character to its code point + * + * @param string $char + * @return integer + */ + protected function charToCodePoint($char) + { + $code = \ord($char[0]); + if ($code < 128) { + return $code; + } elseif ($code < 224) { + return ($code - 192) * 64 + (\ord($char[1]) - 128); + } elseif ($code < 240) { + return ($code - 224) * 4096 + (\ord($char[1]) - 128) * 64 + (\ord($char[2]) - 128); + } else { + return ($code - 240) * 262144 + (\ord($char[1]) - 128) * 4096 + (\ord($char[2]) - 128) * 64 + (\ord($char[3]) - 128); + } + } + /** + * Convert a code point to its single or multi-byte character + * + * @param integer $code + * @return string + */ + protected function codePointToChar($code) + { + if ($code <= 0x7f) { + return \chr($code); + } elseif ($code <= 0x7ff) { + return \chr(($code >> 6) + 192) . \chr(($code & 63) + 128); + } elseif ($code <= 0xffff) { + return \chr(($code >> 12) + 224) . \chr(($code >> 6 & 63) + 128) . \chr(($code & 63) + 128); + } else { + return \chr(($code >> 18) + 240) . \chr(($code >> 12 & 63) + 128) . \chr(($code >> 6 & 63) + 128) . \chr(($code & 63) + 128); + } + } +} diff --git a/wp-content/plugins/google-site-kit/third-party/vendor/autoload_files.php b/wp-content/plugins/google-site-kit/third-party/vendor/autoload_files.php new file mode 100644 index 000000000..e78ada53e --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/vendor/autoload_files.php @@ -0,0 +1,14 @@ + $vendorDir . '/react/promise/src/functions_include.php', + '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', + 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', + '1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php', + 'a8d3953fd9959404dd22d3dfcd0a79f0' => $vendorDir . '/google/apiclient/src/aliases.php', +); diff --git a/wp-content/plugins/google-site-kit/third-party/vendor/composer/autoload_classmap.php b/wp-content/plugins/google-site-kit/third-party/vendor/composer/autoload_classmap.php new file mode 100644 index 000000000..939af009f --- /dev/null +++ b/wp-content/plugins/google-site-kit/third-party/vendor/composer/autoload_classmap.php @@ -0,0 +1,1009 @@ + $vendorDir . '/composer/InstalledVersions.php', + 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\BeforeValidException' => $baseDir . '/firebase/php-jwt/src/BeforeValidException.php', + 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\ExpiredException' => $baseDir . '/firebase/php-jwt/src/ExpiredException.php', + 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWK' => $baseDir . '/firebase/php-jwt/src/JWK.php', + 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT' => $baseDir . '/firebase/php-jwt/src/JWT.php', + 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\Key' => $baseDir . '/firebase/php-jwt/src/Key.php', + 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\SignatureInvalidException' => $baseDir . '/firebase/php-jwt/src/SignatureInvalidException.php', + 'Google\\Site_Kit_Dependencies\\Google\\AccessToken\\Revoke' => $baseDir . '/google/apiclient/src/AccessToken/Revoke.php', + 'Google\\Site_Kit_Dependencies\\Google\\AccessToken\\Verify' => $baseDir . '/google/apiclient/src/AccessToken/Verify.php', + 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\AuthHandlerFactory' => $baseDir . '/google/apiclient/src/AuthHandler/AuthHandlerFactory.php', + 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle5AuthHandler' => $baseDir . '/google/apiclient/src/AuthHandler/Guzzle5AuthHandler.php', + 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle6AuthHandler' => $baseDir . '/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php', + 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle7AuthHandler' => $baseDir . '/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\AccessToken' => $baseDir . '/google/auth/src/AccessToken.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\ApplicationDefaultCredentials' => $baseDir . '/google/auth/src/ApplicationDefaultCredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\CacheTrait' => $baseDir . '/google/auth/src/CacheTrait.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Cache\\InvalidArgumentException' => $baseDir . '/google/auth/src/Cache/InvalidArgumentException.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Cache\\Item' => $baseDir . '/google/auth/src/Cache/Item.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Cache\\MemoryCacheItemPool' => $baseDir . '/google/auth/src/Cache/MemoryCacheItemPool.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Cache\\SysVCacheItemPool' => $baseDir . '/google/auth/src/Cache/SysVCacheItemPool.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\CredentialsLoader' => $baseDir . '/google/auth/src/CredentialsLoader.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Credentials\\AppIdentityCredentials' => $baseDir . '/google/auth/src/Credentials/AppIdentityCredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Credentials\\GCECredentials' => $baseDir . '/google/auth/src/Credentials/GCECredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Credentials\\IAMCredentials' => $baseDir . '/google/auth/src/Credentials/IAMCredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Credentials\\InsecureCredentials' => $baseDir . '/google/auth/src/Credentials/InsecureCredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Credentials\\ServiceAccountCredentials' => $baseDir . '/google/auth/src/Credentials/ServiceAccountCredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Credentials\\ServiceAccountJwtAccessCredentials' => $baseDir . '/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Credentials\\UserRefreshCredentials' => $baseDir . '/google/auth/src/Credentials/UserRefreshCredentials.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\FetchAuthTokenCache' => $baseDir . '/google/auth/src/FetchAuthTokenCache.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\FetchAuthTokenInterface' => $baseDir . '/google/auth/src/FetchAuthTokenInterface.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\GCECache' => $baseDir . '/google/auth/src/GCECache.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\GetQuotaProjectInterface' => $baseDir . '/google/auth/src/GetQuotaProjectInterface.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\HttpHandler\\Guzzle5HttpHandler' => $baseDir . '/google/auth/src/HttpHandler/Guzzle5HttpHandler.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\HttpHandler\\Guzzle6HttpHandler' => $baseDir . '/google/auth/src/HttpHandler/Guzzle6HttpHandler.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\HttpHandler\\Guzzle7HttpHandler' => $baseDir . '/google/auth/src/HttpHandler/Guzzle7HttpHandler.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\HttpHandler\\HttpClientCache' => $baseDir . '/google/auth/src/HttpHandler/HttpClientCache.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\HttpHandler\\HttpHandlerFactory' => $baseDir . '/google/auth/src/HttpHandler/HttpHandlerFactory.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Iam' => $baseDir . '/google/auth/src/Iam.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Middleware\\AuthTokenMiddleware' => $baseDir . '/google/auth/src/Middleware/AuthTokenMiddleware.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Middleware\\ProxyAuthTokenMiddleware' => $baseDir . '/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Middleware\\ScopedAccessTokenMiddleware' => $baseDir . '/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Middleware\\SimpleMiddleware' => $baseDir . '/google/auth/src/Middleware/SimpleMiddleware.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\OAuth2' => $baseDir . '/google/auth/src/OAuth2.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\ProjectIdProviderInterface' => $baseDir . '/google/auth/src/ProjectIdProviderInterface.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\ServiceAccountSignerTrait' => $baseDir . '/google/auth/src/ServiceAccountSignerTrait.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\SignBlobInterface' => $baseDir . '/google/auth/src/SignBlobInterface.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Subscriber\\AuthTokenSubscriber' => $baseDir . '/google/auth/src/Subscriber/AuthTokenSubscriber.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Subscriber\\ScopedAccessTokenSubscriber' => $baseDir . '/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\Subscriber\\SimpleSubscriber' => $baseDir . '/google/auth/src/Subscriber/SimpleSubscriber.php', + 'Google\\Site_Kit_Dependencies\\Google\\Auth\\UpdateMetadataInterface' => $baseDir . '/google/auth/src/UpdateMetadataInterface.php', + 'Google\\Site_Kit_Dependencies\\Google\\Client' => $baseDir . '/google/apiclient/src/Client.php', + 'Google\\Site_Kit_Dependencies\\Google\\Collection' => $baseDir . '/google/apiclient/src/Collection.php', + 'Google\\Site_Kit_Dependencies\\Google\\Exception' => $baseDir . '/google/apiclient/src/Exception.php', + 'Google\\Site_Kit_Dependencies\\Google\\Http\\Batch' => $baseDir . '/google/apiclient/src/Http/Batch.php', + 'Google\\Site_Kit_Dependencies\\Google\\Http\\MediaFileUpload' => $baseDir . '/google/apiclient/src/Http/MediaFileUpload.php', + 'Google\\Site_Kit_Dependencies\\Google\\Http\\REST' => $baseDir . '/google/apiclient/src/Http/REST.php', + 'Google\\Site_Kit_Dependencies\\Google\\Model' => $baseDir . '/google/apiclient/src/Model.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service' => $baseDir . '/google/apiclient/src/Service.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense' => $baseDir . '/google/apiclient-services/src/Adsense.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Account' => $baseDir . '/google/apiclient-services/src/Adsense/Account.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\AdBlockingRecoveryTag' => $baseDir . '/google/apiclient-services/src/Adsense/AdBlockingRecoveryTag.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\AdClient' => $baseDir . '/google/apiclient-services/src/Adsense/AdClient.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\AdClientAdCode' => $baseDir . '/google/apiclient-services/src/Adsense/AdClientAdCode.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\AdUnit' => $baseDir . '/google/apiclient-services/src/Adsense/AdUnit.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\AdUnitAdCode' => $baseDir . '/google/apiclient-services/src/Adsense/AdUnitAdCode.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\AdsenseEmpty' => $baseDir . '/google/apiclient-services/src/Adsense/AdsenseEmpty.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Alert' => $baseDir . '/google/apiclient-services/src/Adsense/Alert.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Cell' => $baseDir . '/google/apiclient-services/src/Adsense/Cell.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ContentAdsSettings' => $baseDir . '/google/apiclient-services/src/Adsense/ContentAdsSettings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\CustomChannel' => $baseDir . '/google/apiclient-services/src/Adsense/CustomChannel.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Date' => $baseDir . '/google/apiclient-services/src/Adsense/Date.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Header' => $baseDir . '/google/apiclient-services/src/Adsense/Header.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\HttpBody' => $baseDir . '/google/apiclient-services/src/Adsense/HttpBody.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListAccountsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListAccountsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListAdClientsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListAdClientsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListAdUnitsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListAdUnitsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListAlertsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListAlertsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListChildAccountsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListChildAccountsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListCustomChannelsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListCustomChannelsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListLinkedAdUnitsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListLinkedAdUnitsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListLinkedCustomChannelsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListLinkedCustomChannelsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListPaymentsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListPaymentsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListSavedReportsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListSavedReportsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListSitesResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListSitesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ListUrlChannelsResponse' => $baseDir . '/google/apiclient-services/src/Adsense/ListUrlChannelsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Payment' => $baseDir . '/google/apiclient-services/src/Adsense/Payment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\ReportResult' => $baseDir . '/google/apiclient-services/src/Adsense/ReportResult.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\Accounts' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/Accounts.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsAdclients' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsAdclients.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsAdclientsAdunits' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsAdunits.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsAdclientsCustomchannels' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsCustomchannels.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsAdclientsUrlchannels' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsUrlchannels.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsAlerts' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsAlerts.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsPayments' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsPayments.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsReports' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsReports.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsReportsSaved' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsReportsSaved.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Resource\\AccountsSites' => $baseDir . '/google/apiclient-services/src/Adsense/Resource/AccountsSites.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Row' => $baseDir . '/google/apiclient-services/src/Adsense/Row.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\SavedReport' => $baseDir . '/google/apiclient-services/src/Adsense/SavedReport.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\Site' => $baseDir . '/google/apiclient-services/src/Adsense/Site.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\TimeZone' => $baseDir . '/google/apiclient-services/src/Adsense/TimeZone.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Adsense\\UrlChannel' => $baseDir . '/google/apiclient-services/src/Adsense/UrlChannel.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics' => $baseDir . '/google/apiclient-services/src/Analytics.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Activity' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Activity.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Cohort' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Cohort.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\CohortGroup' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/CohortGroup.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\ColumnHeader' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/ColumnHeader.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\CustomDimension' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/CustomDimension.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\DateRange' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/DateRange.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\DateRangeValues' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/DateRangeValues.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Dimension' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Dimension.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\DimensionFilter' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/DimensionFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\DimensionFilterClause' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/DimensionFilterClause.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\DynamicSegment' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/DynamicSegment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\EcommerceData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/EcommerceData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\EventData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/EventData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\GetReportsRequest' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/GetReportsRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\GetReportsResponse' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/GetReportsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\GoalData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/GoalData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\GoalSetData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/GoalSetData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Metric' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Metric.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\MetricFilter' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/MetricFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\MetricFilterClause' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/MetricFilterClause.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\MetricHeader' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/MetricHeader.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\MetricHeaderEntry' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/MetricHeaderEntry.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\OrFiltersForSegment' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/OrFiltersForSegment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\OrderBy' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/OrderBy.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\PageviewData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/PageviewData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Pivot' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Pivot.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\PivotHeader' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/PivotHeader.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\PivotHeaderEntry' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/PivotHeaderEntry.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\PivotValueRegion' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/PivotValueRegion.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\ProductData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/ProductData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Report' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Report.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\ReportData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/ReportData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\ReportRequest' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/ReportRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\ReportRow' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/ReportRow.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\ResourceQuotasRemaining' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/ResourceQuotasRemaining.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Resource\\Reports' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Resource/Reports.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Resource\\UserActivity' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Resource/UserActivity.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\ScreenviewData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/ScreenviewData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SearchUserActivityRequest' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SearchUserActivityResponse' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\Segment' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/Segment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SegmentDefinition' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SegmentDefinition.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SegmentDimensionFilter' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SegmentDimensionFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SegmentFilter' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SegmentFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SegmentFilterClause' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SegmentFilterClause.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SegmentMetricFilter' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SegmentMetricFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SegmentSequenceStep' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SegmentSequenceStep.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SequenceSegment' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SequenceSegment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\SimpleSegment' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/SimpleSegment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\TransactionData' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/TransactionData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\User' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/User.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\AnalyticsReporting\\UserActivitySession' => $baseDir . '/google/apiclient-services/src/AnalyticsReporting/UserActivitySession.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Account' => $baseDir . '/google/apiclient-services/src/Analytics/Account.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountChildLink' => $baseDir . '/google/apiclient-services/src/Analytics/AccountChildLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountPermissions' => $baseDir . '/google/apiclient-services/src/Analytics/AccountPermissions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountRef' => $baseDir . '/google/apiclient-services/src/Analytics/AccountRef.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountSummaries' => $baseDir . '/google/apiclient-services/src/Analytics/AccountSummaries.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountSummary' => $baseDir . '/google/apiclient-services/src/Analytics/AccountSummary.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountTicket' => $baseDir . '/google/apiclient-services/src/Analytics/AccountTicket.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountTreeRequest' => $baseDir . '/google/apiclient-services/src/Analytics/AccountTreeRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AccountTreeResponse' => $baseDir . '/google/apiclient-services/src/Analytics/AccountTreeResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Accounts' => $baseDir . '/google/apiclient-services/src/Analytics/Accounts.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AdWordsAccount' => $baseDir . '/google/apiclient-services/src/Analytics/AdWordsAccount.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\AnalyticsDataimportDeleteUploadDataRequest' => $baseDir . '/google/apiclient-services/src/Analytics/AnalyticsDataimportDeleteUploadDataRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Column' => $baseDir . '/google/apiclient-services/src/Analytics/Column.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Columns' => $baseDir . '/google/apiclient-services/src/Analytics/Columns.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomDataSource' => $baseDir . '/google/apiclient-services/src/Analytics/CustomDataSource.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomDataSourceChildLink' => $baseDir . '/google/apiclient-services/src/Analytics/CustomDataSourceChildLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomDataSourceParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/CustomDataSourceParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomDataSources' => $baseDir . '/google/apiclient-services/src/Analytics/CustomDataSources.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomDimension' => $baseDir . '/google/apiclient-services/src/Analytics/CustomDimension.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomDimensionParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/CustomDimensionParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomDimensions' => $baseDir . '/google/apiclient-services/src/Analytics/CustomDimensions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomMetric' => $baseDir . '/google/apiclient-services/src/Analytics/CustomMetric.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomMetricParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/CustomMetricParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\CustomMetrics' => $baseDir . '/google/apiclient-services/src/Analytics/CustomMetrics.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\EntityAdWordsLink' => $baseDir . '/google/apiclient-services/src/Analytics/EntityAdWordsLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\EntityAdWordsLinkEntity' => $baseDir . '/google/apiclient-services/src/Analytics/EntityAdWordsLinkEntity.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\EntityAdWordsLinks' => $baseDir . '/google/apiclient-services/src/Analytics/EntityAdWordsLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\EntityUserLink' => $baseDir . '/google/apiclient-services/src/Analytics/EntityUserLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\EntityUserLinkEntity' => $baseDir . '/google/apiclient-services/src/Analytics/EntityUserLinkEntity.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\EntityUserLinkPermissions' => $baseDir . '/google/apiclient-services/src/Analytics/EntityUserLinkPermissions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\EntityUserLinks' => $baseDir . '/google/apiclient-services/src/Analytics/EntityUserLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Experiment' => $baseDir . '/google/apiclient-services/src/Analytics/Experiment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ExperimentParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/ExperimentParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ExperimentVariations' => $baseDir . '/google/apiclient-services/src/Analytics/ExperimentVariations.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Experiments' => $baseDir . '/google/apiclient-services/src/Analytics/Experiments.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Filter' => $baseDir . '/google/apiclient-services/src/Analytics/Filter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\FilterAdvancedDetails' => $baseDir . '/google/apiclient-services/src/Analytics/FilterAdvancedDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\FilterExpression' => $baseDir . '/google/apiclient-services/src/Analytics/FilterExpression.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\FilterLowercaseDetails' => $baseDir . '/google/apiclient-services/src/Analytics/FilterLowercaseDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\FilterParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/FilterParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\FilterRef' => $baseDir . '/google/apiclient-services/src/Analytics/FilterRef.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\FilterSearchAndReplaceDetails' => $baseDir . '/google/apiclient-services/src/Analytics/FilterSearchAndReplaceDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\FilterUppercaseDetails' => $baseDir . '/google/apiclient-services/src/Analytics/FilterUppercaseDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Filters' => $baseDir . '/google/apiclient-services/src/Analytics/Filters.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaData' => $baseDir . '/google/apiclient-services/src/Analytics/GaData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaDataColumnHeaders' => $baseDir . '/google/apiclient-services/src/Analytics/GaDataColumnHeaders.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaDataDataTable' => $baseDir . '/google/apiclient-services/src/Analytics/GaDataDataTable.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaDataDataTableCols' => $baseDir . '/google/apiclient-services/src/Analytics/GaDataDataTableCols.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaDataDataTableRows' => $baseDir . '/google/apiclient-services/src/Analytics/GaDataDataTableRows.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaDataDataTableRowsC' => $baseDir . '/google/apiclient-services/src/Analytics/GaDataDataTableRowsC.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaDataProfileInfo' => $baseDir . '/google/apiclient-services/src/Analytics/GaDataProfileInfo.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GaDataQuery' => $baseDir . '/google/apiclient-services/src/Analytics/GaDataQuery.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Goal' => $baseDir . '/google/apiclient-services/src/Analytics/Goal.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GoalEventDetails' => $baseDir . '/google/apiclient-services/src/Analytics/GoalEventDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GoalEventDetailsEventConditions' => $baseDir . '/google/apiclient-services/src/Analytics/GoalEventDetailsEventConditions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GoalParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/GoalParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GoalUrlDestinationDetails' => $baseDir . '/google/apiclient-services/src/Analytics/GoalUrlDestinationDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GoalUrlDestinationDetailsSteps' => $baseDir . '/google/apiclient-services/src/Analytics/GoalUrlDestinationDetailsSteps.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GoalVisitNumPagesDetails' => $baseDir . '/google/apiclient-services/src/Analytics/GoalVisitNumPagesDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\GoalVisitTimeOnSiteDetails' => $baseDir . '/google/apiclient-services/src/Analytics/GoalVisitTimeOnSiteDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Goals' => $baseDir . '/google/apiclient-services/src/Analytics/Goals.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\HashClientIdRequest' => $baseDir . '/google/apiclient-services/src/Analytics/HashClientIdRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\HashClientIdResponse' => $baseDir . '/google/apiclient-services/src/Analytics/HashClientIdResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\IncludeConditions' => $baseDir . '/google/apiclient-services/src/Analytics/IncludeConditions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\LinkedForeignAccount' => $baseDir . '/google/apiclient-services/src/Analytics/LinkedForeignAccount.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\McfData' => $baseDir . '/google/apiclient-services/src/Analytics/McfData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\McfDataColumnHeaders' => $baseDir . '/google/apiclient-services/src/Analytics/McfDataColumnHeaders.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\McfDataProfileInfo' => $baseDir . '/google/apiclient-services/src/Analytics/McfDataProfileInfo.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\McfDataQuery' => $baseDir . '/google/apiclient-services/src/Analytics/McfDataQuery.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\McfDataRows' => $baseDir . '/google/apiclient-services/src/Analytics/McfDataRows.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\McfDataRowsConversionPathValue' => $baseDir . '/google/apiclient-services/src/Analytics/McfDataRowsConversionPathValue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Profile' => $baseDir . '/google/apiclient-services/src/Analytics/Profile.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ProfileChildLink' => $baseDir . '/google/apiclient-services/src/Analytics/ProfileChildLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ProfileFilterLink' => $baseDir . '/google/apiclient-services/src/Analytics/ProfileFilterLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ProfileFilterLinks' => $baseDir . '/google/apiclient-services/src/Analytics/ProfileFilterLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ProfileParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/ProfileParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ProfilePermissions' => $baseDir . '/google/apiclient-services/src/Analytics/ProfilePermissions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ProfileRef' => $baseDir . '/google/apiclient-services/src/Analytics/ProfileRef.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\ProfileSummary' => $baseDir . '/google/apiclient-services/src/Analytics/ProfileSummary.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Profiles' => $baseDir . '/google/apiclient-services/src/Analytics/Profiles.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RealtimeData' => $baseDir . '/google/apiclient-services/src/Analytics/RealtimeData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RealtimeDataColumnHeaders' => $baseDir . '/google/apiclient-services/src/Analytics/RealtimeDataColumnHeaders.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RealtimeDataProfileInfo' => $baseDir . '/google/apiclient-services/src/Analytics/RealtimeDataProfileInfo.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RealtimeDataQuery' => $baseDir . '/google/apiclient-services/src/Analytics/RealtimeDataQuery.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RemarketingAudience' => $baseDir . '/google/apiclient-services/src/Analytics/RemarketingAudience.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RemarketingAudienceAudienceDefinition' => $baseDir . '/google/apiclient-services/src/Analytics/RemarketingAudienceAudienceDefinition.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RemarketingAudienceStateBasedAudienceDefinition' => $baseDir . '/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinition.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions' => $baseDir . '/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\RemarketingAudiences' => $baseDir . '/google/apiclient-services/src/Analytics/RemarketingAudiences.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\Data' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/Data.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\DataGa' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/DataGa.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\DataMcf' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/DataMcf.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\DataRealtime' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/DataRealtime.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\Management' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/Management.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementAccountSummaries' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementAccountSummaries.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementAccountUserLinks' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementAccountUserLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementAccounts' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementAccounts.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementClientId' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementClientId.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementCustomDataSources' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementCustomDataSources.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementCustomDimensions' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementCustomDimensions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementCustomMetrics' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementCustomMetrics.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementExperiments' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementExperiments.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementFilters' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementFilters.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementGoals' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementGoals.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementProfileFilterLinks' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementProfileFilterLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementProfileUserLinks' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementProfileUserLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementProfiles' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementProfiles.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementRemarketingAudience' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementRemarketingAudience.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementSegments' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementSegments.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementUnsampledReports' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementUnsampledReports.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementUploads' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementUploads.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementWebPropertyAdWordsLinks' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementWebPropertyAdWordsLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementWebproperties' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementWebproperties.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\ManagementWebpropertyUserLinks' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/ManagementWebpropertyUserLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\Metadata' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/Metadata.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\MetadataColumns' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/MetadataColumns.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\Provisioning' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/Provisioning.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\UserDeletion' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/UserDeletion.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Resource\\UserDeletionUserDeletionRequest' => $baseDir . '/google/apiclient-services/src/Analytics/Resource/UserDeletionUserDeletionRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Segment' => $baseDir . '/google/apiclient-services/src/Analytics/Segment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Segments' => $baseDir . '/google/apiclient-services/src/Analytics/Segments.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\UnsampledReport' => $baseDir . '/google/apiclient-services/src/Analytics/UnsampledReport.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\UnsampledReportCloudStorageDownloadDetails' => $baseDir . '/google/apiclient-services/src/Analytics/UnsampledReportCloudStorageDownloadDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\UnsampledReportDriveDownloadDetails' => $baseDir . '/google/apiclient-services/src/Analytics/UnsampledReportDriveDownloadDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\UnsampledReports' => $baseDir . '/google/apiclient-services/src/Analytics/UnsampledReports.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Upload' => $baseDir . '/google/apiclient-services/src/Analytics/Upload.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Uploads' => $baseDir . '/google/apiclient-services/src/Analytics/Uploads.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\UserDeletionRequest' => $baseDir . '/google/apiclient-services/src/Analytics/UserDeletionRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\UserDeletionRequestId' => $baseDir . '/google/apiclient-services/src/Analytics/UserDeletionRequestId.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\UserRef' => $baseDir . '/google/apiclient-services/src/Analytics/UserRef.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\WebPropertyRef' => $baseDir . '/google/apiclient-services/src/Analytics/WebPropertyRef.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\WebPropertySummary' => $baseDir . '/google/apiclient-services/src/Analytics/WebPropertySummary.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Webproperties' => $baseDir . '/google/apiclient-services/src/Analytics/Webproperties.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\Webproperty' => $baseDir . '/google/apiclient-services/src/Analytics/Webproperty.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\WebpropertyChildLink' => $baseDir . '/google/apiclient-services/src/Analytics/WebpropertyChildLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\WebpropertyParentLink' => $baseDir . '/google/apiclient-services/src/Analytics/WebpropertyParentLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Analytics\\WebpropertyPermissions' => $baseDir . '/google/apiclient-services/src/Analytics/WebpropertyPermissions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Exception' => $baseDir . '/google/apiclient/src/Service/Exception.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessBetweenFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessBetweenFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessDateRange' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDateRange.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessDimension' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimension.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessDimensionHeader' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionHeader.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessDimensionValue' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionValue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessFilterExpression' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpression.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessFilterExpressionList' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpressionList.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessInListFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessInListFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessMetric' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetric.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessMetricHeader' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricHeader.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessMetricValue' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricValue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessNumericFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessNumericFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessOrderBy' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderBy.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessQuota' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuota.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessQuotaStatus' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuotaStatus.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessRow' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessRow.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccessStringFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessStringFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccount' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccount.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAccountSummary' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccountSummary.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAndroidAppDataStream' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAndroidAppDataStream.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaArchiveAudienceRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveAudienceRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaArchiveCustomDimensionRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveCustomDimensionRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaArchiveCustomMetricRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveCustomMetricRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAttributionSettings' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAttributionSettings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudience' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudience.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceEventFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceEventTrigger' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventTrigger.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceFilterClause' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterClause.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceFilterExpression' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpression.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceSequenceFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAudienceSimpleFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSimpleFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAuditUserLink' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAuditUserLinksRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaAuditUserLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaChangeHistoryChange' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChange.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaChangeHistoryEvent' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryEvent.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaConversionEvent' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaConversionEvent.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaCreateUserLinkRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCreateUserLinkRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaCustomDimension' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomDimension.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaCustomMetric' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomMetric.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDataRetentionSettings' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataRetentionSettings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDataSharingSettings' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataSharingSettings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDataStream' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStream.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDataStreamWebStreamData' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamWebStreamData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaExpandedDataSet' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSet.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaExpandedDataSetFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaFirebaseLink' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaFirebaseLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaGlobalSiteTag' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGlobalSiteTag.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaGoogleAdsLink' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleAdsLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleSignalsSettings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaIosAppDataStream' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaIosAppDataStream.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListAccountSummariesResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountSummariesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListAccountsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListAudiencesResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAudiencesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListConversionEventsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListConversionEventsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListCustomMetricsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomMetricsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListDataStreamsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDataStreamsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListPropertiesResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListPropertiesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListUserLinksResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListUserLinksResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaNumericValue' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaNumericValue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaProperty' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProperty.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaPropertySummary' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaPropertySummary.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaRunAccessReportRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaRunAccessReportResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaSearchAds360Link' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchAds360Link.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaUserLink' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUserLink.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleAnalyticsAdminV1alphaWebDataStream' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaWebDataStream.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\GoogleProtobufEmpty' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleProtobufEmpty.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\AccountSummaries' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountSummaries.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\Accounts' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Accounts.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\AccountsUserLinks' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountsUserLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\Properties' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Properties.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesAndroidAppDataStreams' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreams.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesAudiences' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAudiences.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesConversionEvents' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesConversionEvents.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesCustomDimensions' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomDimensions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesCustomMetrics' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomMetrics.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesDataStreams' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreams.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesDataStreamsMeasurementProtocolSecrets' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreamsMeasurementProtocolSecrets.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesDisplayVideo360AdvertiserLinkProposals' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinkProposals.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesDisplayVideo360AdvertiserLinks' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesFirebaseLinks' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesFirebaseLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesGoogleAdsLinks' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesGoogleAdsLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesIosAppDataStreams' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreams.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesIosAppDataStreamsMeasurementProtocolSecrets' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreamsMeasurementProtocolSecrets.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesSearchAds360Links' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesSearchAds360Links.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesUserLinks' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesUserLinks.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesWebDataStreams' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreams.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\GoogleAnalyticsAdmin\\Resource\\PropertiesWebDataStreamsMeasurementProtocolSecrets' => $baseDir . '/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreamsMeasurementProtocolSecrets.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub' => $baseDir . '/google/apiclient-services/src/Ideahub.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaAvailableLocale' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaAvailableLocale.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaIdea' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdea.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaIdeaActivity' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaActivity.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaIdeaState' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaState.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaListAvailableLocalesResponse' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListAvailableLocalesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaListIdeasResponse' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListIdeasResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaTopic' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopic.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1alphaTopicState' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopicState.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaAvailableLocale' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaAvailableLocale.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaIdea' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdea.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaIdeaActivity' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaActivity.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaIdeaState' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaState.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaListAvailableLocalesResponse' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListAvailableLocalesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaListIdeasResponse' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListIdeasResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaTopic' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopic.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\GoogleSearchIdeahubV1betaTopicState' => $baseDir . '/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopicState.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\Ideas' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/Ideas.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\Platforms' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/Platforms.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\PlatformsProperties' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/PlatformsProperties.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\PlatformsPropertiesIdeaActivities' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaActivities.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\PlatformsPropertiesIdeaStates' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaStates.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\PlatformsPropertiesIdeas' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeas.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\PlatformsPropertiesLocales' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesLocales.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Ideahub\\Resource\\PlatformsPropertiesTopicStates' => $baseDir . '/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesTopicStates.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights' => $baseDir . '/google/apiclient-services/src/PagespeedInsights.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\AuditRefs' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/AuditRefs.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\Bucket' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/Bucket.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\Categories' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/Categories.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\CategoryGroupV5' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/CategoryGroupV5.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\ConfigSettings' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/ConfigSettings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\Environment' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/Environment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\I18n' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/I18n.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\LighthouseAuditResultV5' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/LighthouseAuditResultV5.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\LighthouseCategoryV5' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/LighthouseCategoryV5.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\LighthouseResultV5' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/LighthouseResultV5.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\PagespeedApiLoadingExperienceV5' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/PagespeedApiLoadingExperienceV5.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\PagespeedApiPagespeedResponseV5' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/PagespeedApiPagespeedResponseV5.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\PagespeedVersion' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/PagespeedVersion.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\RendererFormattedStrings' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/RendererFormattedStrings.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\Resource\\Pagespeedapi' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/Resource/Pagespeedapi.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\RuntimeError' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/RuntimeError.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\StackPack' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/StackPack.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\Timing' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/Timing.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PagespeedInsights\\UserPageLoadMetricV5' => $baseDir . '/google/apiclient-services/src/PagespeedInsights/UserPageLoadMetricV5.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService' => $baseDir . '/google/apiclient-services/src/PeopleService.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Address' => $baseDir . '/google/apiclient-services/src/PeopleService/Address.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\AgeRangeType' => $baseDir . '/google/apiclient-services/src/PeopleService/AgeRangeType.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\BatchCreateContactsRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/BatchCreateContactsRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\BatchCreateContactsResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/BatchCreateContactsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\BatchDeleteContactsRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/BatchDeleteContactsRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\BatchGetContactGroupsResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/BatchGetContactGroupsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\BatchUpdateContactsRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/BatchUpdateContactsRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\BatchUpdateContactsResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/BatchUpdateContactsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Biography' => $baseDir . '/google/apiclient-services/src/PeopleService/Biography.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Birthday' => $baseDir . '/google/apiclient-services/src/PeopleService/Birthday.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\BraggingRights' => $baseDir . '/google/apiclient-services/src/PeopleService/BraggingRights.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\CalendarUrl' => $baseDir . '/google/apiclient-services/src/PeopleService/CalendarUrl.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ClientData' => $baseDir . '/google/apiclient-services/src/PeopleService/ClientData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ContactGroup' => $baseDir . '/google/apiclient-services/src/PeopleService/ContactGroup.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ContactGroupMembership' => $baseDir . '/google/apiclient-services/src/PeopleService/ContactGroupMembership.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ContactGroupMetadata' => $baseDir . '/google/apiclient-services/src/PeopleService/ContactGroupMetadata.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ContactGroupResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/ContactGroupResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ContactToCreate' => $baseDir . '/google/apiclient-services/src/PeopleService/ContactToCreate.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\CopyOtherContactToMyContactsGroupRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/CopyOtherContactToMyContactsGroupRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\CoverPhoto' => $baseDir . '/google/apiclient-services/src/PeopleService/CoverPhoto.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\CreateContactGroupRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/CreateContactGroupRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Date' => $baseDir . '/google/apiclient-services/src/PeopleService/Date.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\DeleteContactPhotoResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/DeleteContactPhotoResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\DomainMembership' => $baseDir . '/google/apiclient-services/src/PeopleService/DomainMembership.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\EmailAddress' => $baseDir . '/google/apiclient-services/src/PeopleService/EmailAddress.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Event' => $baseDir . '/google/apiclient-services/src/PeopleService/Event.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ExternalId' => $baseDir . '/google/apiclient-services/src/PeopleService/ExternalId.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\FieldMetadata' => $baseDir . '/google/apiclient-services/src/PeopleService/FieldMetadata.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\FileAs' => $baseDir . '/google/apiclient-services/src/PeopleService/FileAs.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Gender' => $baseDir . '/google/apiclient-services/src/PeopleService/Gender.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\GetPeopleResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/GetPeopleResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\GroupClientData' => $baseDir . '/google/apiclient-services/src/PeopleService/GroupClientData.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ImClient' => $baseDir . '/google/apiclient-services/src/PeopleService/ImClient.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Interest' => $baseDir . '/google/apiclient-services/src/PeopleService/Interest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ListConnectionsResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/ListConnectionsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ListContactGroupsResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/ListContactGroupsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ListDirectoryPeopleResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/ListDirectoryPeopleResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ListOtherContactsResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/ListOtherContactsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Locale' => $baseDir . '/google/apiclient-services/src/PeopleService/Locale.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Location' => $baseDir . '/google/apiclient-services/src/PeopleService/Location.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Membership' => $baseDir . '/google/apiclient-services/src/PeopleService/Membership.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\MiscKeyword' => $baseDir . '/google/apiclient-services/src/PeopleService/MiscKeyword.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ModifyContactGroupMembersRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ModifyContactGroupMembersResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Name' => $baseDir . '/google/apiclient-services/src/PeopleService/Name.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Nickname' => $baseDir . '/google/apiclient-services/src/PeopleService/Nickname.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Occupation' => $baseDir . '/google/apiclient-services/src/PeopleService/Occupation.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Organization' => $baseDir . '/google/apiclient-services/src/PeopleService/Organization.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\PeopleEmpty' => $baseDir . '/google/apiclient-services/src/PeopleService/PeopleEmpty.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Person' => $baseDir . '/google/apiclient-services/src/PeopleService/Person.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\PersonMetadata' => $baseDir . '/google/apiclient-services/src/PeopleService/PersonMetadata.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\PersonResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/PersonResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\PhoneNumber' => $baseDir . '/google/apiclient-services/src/PeopleService/PhoneNumber.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Photo' => $baseDir . '/google/apiclient-services/src/PeopleService/Photo.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\ProfileMetadata' => $baseDir . '/google/apiclient-services/src/PeopleService/ProfileMetadata.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Relation' => $baseDir . '/google/apiclient-services/src/PeopleService/Relation.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\RelationshipInterest' => $baseDir . '/google/apiclient-services/src/PeopleService/RelationshipInterest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\RelationshipStatus' => $baseDir . '/google/apiclient-services/src/PeopleService/RelationshipStatus.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Residence' => $baseDir . '/google/apiclient-services/src/PeopleService/Residence.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Resource\\ContactGroups' => $baseDir . '/google/apiclient-services/src/PeopleService/Resource/ContactGroups.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Resource\\ContactGroupsMembers' => $baseDir . '/google/apiclient-services/src/PeopleService/Resource/ContactGroupsMembers.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Resource\\OtherContacts' => $baseDir . '/google/apiclient-services/src/PeopleService/Resource/OtherContacts.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Resource\\People' => $baseDir . '/google/apiclient-services/src/PeopleService/Resource/People.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Resource\\PeopleConnections' => $baseDir . '/google/apiclient-services/src/PeopleService/Resource/PeopleConnections.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\SearchDirectoryPeopleResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/SearchDirectoryPeopleResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\SearchResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/SearchResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\SearchResult' => $baseDir . '/google/apiclient-services/src/PeopleService/SearchResult.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\SipAddress' => $baseDir . '/google/apiclient-services/src/PeopleService/SipAddress.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Skill' => $baseDir . '/google/apiclient-services/src/PeopleService/Skill.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Source' => $baseDir . '/google/apiclient-services/src/PeopleService/Source.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Status' => $baseDir . '/google/apiclient-services/src/PeopleService/Status.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Tagline' => $baseDir . '/google/apiclient-services/src/PeopleService/Tagline.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\UpdateContactGroupRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/UpdateContactGroupRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\UpdateContactPhotoRequest' => $baseDir . '/google/apiclient-services/src/PeopleService/UpdateContactPhotoRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\UpdateContactPhotoResponse' => $baseDir . '/google/apiclient-services/src/PeopleService/UpdateContactPhotoResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\Url' => $baseDir . '/google/apiclient-services/src/PeopleService/Url.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\PeopleService\\UserDefined' => $baseDir . '/google/apiclient-services/src/PeopleService/UserDefined.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\Resource' => $baseDir . '/google/apiclient/src/Service/Resource.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole' => $baseDir . '/google/apiclient-services/src/SearchConsole.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\AmpInspectionResult' => $baseDir . '/google/apiclient-services/src/SearchConsole/AmpInspectionResult.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\AmpIssue' => $baseDir . '/google/apiclient-services/src/SearchConsole/AmpIssue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\ApiDataRow' => $baseDir . '/google/apiclient-services/src/SearchConsole/ApiDataRow.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\ApiDimensionFilter' => $baseDir . '/google/apiclient-services/src/SearchConsole/ApiDimensionFilter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\ApiDimensionFilterGroup' => $baseDir . '/google/apiclient-services/src/SearchConsole/ApiDimensionFilterGroup.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\BlockedResource' => $baseDir . '/google/apiclient-services/src/SearchConsole/BlockedResource.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\DetectedItems' => $baseDir . '/google/apiclient-services/src/SearchConsole/DetectedItems.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Image' => $baseDir . '/google/apiclient-services/src/SearchConsole/Image.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\IndexStatusInspectionResult' => $baseDir . '/google/apiclient-services/src/SearchConsole/IndexStatusInspectionResult.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\InspectUrlIndexRequest' => $baseDir . '/google/apiclient-services/src/SearchConsole/InspectUrlIndexRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\InspectUrlIndexResponse' => $baseDir . '/google/apiclient-services/src/SearchConsole/InspectUrlIndexResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Item' => $baseDir . '/google/apiclient-services/src/SearchConsole/Item.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\MobileFriendlyIssue' => $baseDir . '/google/apiclient-services/src/SearchConsole/MobileFriendlyIssue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\MobileUsabilityInspectionResult' => $baseDir . '/google/apiclient-services/src/SearchConsole/MobileUsabilityInspectionResult.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\MobileUsabilityIssue' => $baseDir . '/google/apiclient-services/src/SearchConsole/MobileUsabilityIssue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\ResourceIssue' => $baseDir . '/google/apiclient-services/src/SearchConsole/ResourceIssue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Resource\\Searchanalytics' => $baseDir . '/google/apiclient-services/src/SearchConsole/Resource/Searchanalytics.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Resource\\Sitemaps' => $baseDir . '/google/apiclient-services/src/SearchConsole/Resource/Sitemaps.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Resource\\Sites' => $baseDir . '/google/apiclient-services/src/SearchConsole/Resource/Sites.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Resource\\UrlInspection' => $baseDir . '/google/apiclient-services/src/SearchConsole/Resource/UrlInspection.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Resource\\UrlInspectionIndex' => $baseDir . '/google/apiclient-services/src/SearchConsole/Resource/UrlInspectionIndex.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Resource\\UrlTestingTools' => $baseDir . '/google/apiclient-services/src/SearchConsole/Resource/UrlTestingTools.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\Resource\\UrlTestingToolsMobileFriendlyTest' => $baseDir . '/google/apiclient-services/src/SearchConsole/Resource/UrlTestingToolsMobileFriendlyTest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\RichResultsInspectionResult' => $baseDir . '/google/apiclient-services/src/SearchConsole/RichResultsInspectionResult.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\RichResultsIssue' => $baseDir . '/google/apiclient-services/src/SearchConsole/RichResultsIssue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\RunMobileFriendlyTestRequest' => $baseDir . '/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\RunMobileFriendlyTestResponse' => $baseDir . '/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\SearchAnalyticsQueryRequest' => $baseDir . '/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\SearchAnalyticsQueryResponse' => $baseDir . '/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\SitemapsListResponse' => $baseDir . '/google/apiclient-services/src/SearchConsole/SitemapsListResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\SitesListResponse' => $baseDir . '/google/apiclient-services/src/SearchConsole/SitesListResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\TestStatus' => $baseDir . '/google/apiclient-services/src/SearchConsole/TestStatus.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\UrlInspectionResult' => $baseDir . '/google/apiclient-services/src/SearchConsole/UrlInspectionResult.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\WmxSite' => $baseDir . '/google/apiclient-services/src/SearchConsole/WmxSite.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\WmxSitemap' => $baseDir . '/google/apiclient-services/src/SearchConsole/WmxSitemap.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SearchConsole\\WmxSitemapContent' => $baseDir . '/google/apiclient-services/src/SearchConsole/WmxSitemapContent.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification' => $baseDir . '/google/apiclient-services/src/SiteVerification.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification\\Resource\\WebResource' => $baseDir . '/google/apiclient-services/src/SiteVerification/Resource/WebResource.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification\\SiteVerificationWebResourceGettokenRequest' => $baseDir . '/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequest.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification\\SiteVerificationWebResourceGettokenRequestSite' => $baseDir . '/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequestSite.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification\\SiteVerificationWebResourceGettokenResponse' => $baseDir . '/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification\\SiteVerificationWebResourceListResponse' => $baseDir . '/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceListResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification\\SiteVerificationWebResourceResource' => $baseDir . '/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResource.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\SiteVerification\\SiteVerificationWebResourceResourceSite' => $baseDir . '/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResourceSite.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager' => $baseDir . '/google/apiclient-services/src/TagManager.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Account' => $baseDir . '/google/apiclient-services/src/TagManager/Account.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\AccountAccess' => $baseDir . '/google/apiclient-services/src/TagManager/AccountAccess.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\AccountFeatures' => $baseDir . '/google/apiclient-services/src/TagManager/AccountFeatures.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\BuiltInVariable' => $baseDir . '/google/apiclient-services/src/TagManager/BuiltInVariable.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Client' => $baseDir . '/google/apiclient-services/src/TagManager/Client.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Condition' => $baseDir . '/google/apiclient-services/src/TagManager/Condition.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Container' => $baseDir . '/google/apiclient-services/src/TagManager/Container.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ContainerAccess' => $baseDir . '/google/apiclient-services/src/TagManager/ContainerAccess.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ContainerFeatures' => $baseDir . '/google/apiclient-services/src/TagManager/ContainerFeatures.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ContainerVersion' => $baseDir . '/google/apiclient-services/src/TagManager/ContainerVersion.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ContainerVersionHeader' => $baseDir . '/google/apiclient-services/src/TagManager/ContainerVersionHeader.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\CreateBuiltInVariableResponse' => $baseDir . '/google/apiclient-services/src/TagManager/CreateBuiltInVariableResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\CreateContainerVersionRequestVersionOptions' => $baseDir . '/google/apiclient-services/src/TagManager/CreateContainerVersionRequestVersionOptions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\CreateContainerVersionResponse' => $baseDir . '/google/apiclient-services/src/TagManager/CreateContainerVersionResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\CustomTemplate' => $baseDir . '/google/apiclient-services/src/TagManager/CustomTemplate.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Destination' => $baseDir . '/google/apiclient-services/src/TagManager/Destination.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Entity' => $baseDir . '/google/apiclient-services/src/TagManager/Entity.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Environment' => $baseDir . '/google/apiclient-services/src/TagManager/Environment.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Folder' => $baseDir . '/google/apiclient-services/src/TagManager/Folder.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\FolderEntities' => $baseDir . '/google/apiclient-services/src/TagManager/FolderEntities.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\GalleryReference' => $baseDir . '/google/apiclient-services/src/TagManager/GalleryReference.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\GetContainerSnippetResponse' => $baseDir . '/google/apiclient-services/src/TagManager/GetContainerSnippetResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\GetWorkspaceStatusResponse' => $baseDir . '/google/apiclient-services/src/TagManager/GetWorkspaceStatusResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\GtagConfig' => $baseDir . '/google/apiclient-services/src/TagManager/GtagConfig.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListAccountsResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListAccountsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListClientsResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListClientsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListContainerVersionsResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListContainerVersionsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListContainersResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListContainersResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListDestinationsResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListDestinationsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListEnabledBuiltInVariablesResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListEnabledBuiltInVariablesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListEnvironmentsResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListEnvironmentsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListFoldersResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListFoldersResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListGtagConfigResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListGtagConfigResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListTagsResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListTagsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListTemplatesResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListTemplatesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListTriggersResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListTriggersResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListUserPermissionsResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListUserPermissionsResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListVariablesResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListVariablesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListWorkspacesResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListWorkspacesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ListZonesResponse' => $baseDir . '/google/apiclient-services/src/TagManager/ListZonesResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\MergeConflict' => $baseDir . '/google/apiclient-services/src/TagManager/MergeConflict.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Parameter' => $baseDir . '/google/apiclient-services/src/TagManager/Parameter.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\PublishContainerVersionResponse' => $baseDir . '/google/apiclient-services/src/TagManager/PublishContainerVersionResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\QuickPreviewResponse' => $baseDir . '/google/apiclient-services/src/TagManager/QuickPreviewResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\Accounts' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/Accounts.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainers' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainers.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersDestinations' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersDestinations.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersEnvironments' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersEnvironments.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersVersionHeaders' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersionHeaders.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersVersions' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspaces' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspaces.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesBuiltInVariables' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesBuiltInVariables.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesClients' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesClients.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesFolders' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesFolders.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesGtagConfig' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesGtagConfig.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesTags' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTags.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesTemplates' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTemplates.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesTriggers' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTriggers.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesVariables' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesVariables.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsContainersWorkspacesZones' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesZones.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Resource\\AccountsUserPermissions' => $baseDir . '/google/apiclient-services/src/TagManager/Resource/AccountsUserPermissions.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertBuiltInVariableResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertBuiltInVariableResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertClientResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertClientResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertFolderResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertFolderResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertTagResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertTagResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertTemplateResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertTemplateResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertTriggerResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertTriggerResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertVariableResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertVariableResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\RevertZoneResponse' => $baseDir . '/google/apiclient-services/src/TagManager/RevertZoneResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\SetupTag' => $baseDir . '/google/apiclient-services/src/TagManager/SetupTag.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\SyncStatus' => $baseDir . '/google/apiclient-services/src/TagManager/SyncStatus.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\SyncWorkspaceResponse' => $baseDir . '/google/apiclient-services/src/TagManager/SyncWorkspaceResponse.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Tag' => $baseDir . '/google/apiclient-services/src/TagManager/Tag.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\TagConsentSetting' => $baseDir . '/google/apiclient-services/src/TagManager/TagConsentSetting.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\TeardownTag' => $baseDir . '/google/apiclient-services/src/TagManager/TeardownTag.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Trigger' => $baseDir . '/google/apiclient-services/src/TagManager/Trigger.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\UserPermission' => $baseDir . '/google/apiclient-services/src/TagManager/UserPermission.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Variable' => $baseDir . '/google/apiclient-services/src/TagManager/Variable.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\VariableFormatValue' => $baseDir . '/google/apiclient-services/src/TagManager/VariableFormatValue.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Workspace' => $baseDir . '/google/apiclient-services/src/TagManager/Workspace.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\Zone' => $baseDir . '/google/apiclient-services/src/TagManager/Zone.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ZoneBoundary' => $baseDir . '/google/apiclient-services/src/TagManager/ZoneBoundary.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ZoneChildContainer' => $baseDir . '/google/apiclient-services/src/TagManager/ZoneChildContainer.php', + 'Google\\Site_Kit_Dependencies\\Google\\Service\\TagManager\\ZoneTypeRestriction' => $baseDir . '/google/apiclient-services/src/TagManager/ZoneTypeRestriction.php', + 'Google\\Site_Kit_Dependencies\\Google\\Task\\Composer' => $baseDir . '/google/apiclient/src/Task/Composer.php', + 'Google\\Site_Kit_Dependencies\\Google\\Task\\Exception' => $baseDir . '/google/apiclient/src/Task/Exception.php', + 'Google\\Site_Kit_Dependencies\\Google\\Task\\Retryable' => $baseDir . '/google/apiclient/src/Task/Retryable.php', + 'Google\\Site_Kit_Dependencies\\Google\\Task\\Runner' => $baseDir . '/google/apiclient/src/Task/Runner.php', + 'Google\\Site_Kit_Dependencies\\Google\\Utils\\UriTemplate' => $baseDir . '/google/apiclient/src/Utils/UriTemplate.php', + 'Google\\Site_Kit_Dependencies\\Google_AccessToken_Revoke' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_AccessToken_Verify' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_AuthHandler_AuthHandlerFactory' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_AuthHandler_Guzzle5AuthHandler' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_AuthHandler_Guzzle6AuthHandler' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_AuthHandler_Guzzle7AuthHandler' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Client' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Collection' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Exception' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Http_Batch' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Http_MediaFileUpload' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Http_REST' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Model' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Service' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_Exception' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_Resource' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_BusinessPredicates' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_Entitlement' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_ListEntitlementsResponse' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_ListPublicationsResponse' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_PaymentOptions' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_Product' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_Publication' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_PublicationPredicates' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_PublicationsEntitlements_Resource' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Service_SubscribewithGoogle_Publications_Resource' => $baseDir . '/google/apiclient-services-subscribewithgoogle/SubscribewithGoogle.php', + 'Google\\Site_Kit_Dependencies\\Google_Task_Composer' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Task_Exception' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Task_Retryable' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Task_Runner' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\Google_Utils_UriTemplate' => $baseDir . '/google/apiclient/src/aliases.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\BatchResults' => $baseDir . '/guzzlehttp/guzzle/src/BatchResults.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Client' => $baseDir . '/guzzlehttp/guzzle/src/Client.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\ClientInterface' => $baseDir . '/guzzlehttp/guzzle/src/ClientInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Collection' => $baseDir . '/guzzlehttp/guzzle/src/Collection.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Cookie\\CookieJar' => $baseDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Cookie\\CookieJarInterface' => $baseDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Cookie\\FileCookieJar' => $baseDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Cookie\\SessionCookieJar' => $baseDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Cookie\\SetCookie' => $baseDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\AbstractEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/AbstractEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\AbstractRequestEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\AbstractRetryableEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\AbstractTransferEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\BeforeEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/BeforeEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\CompleteEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/CompleteEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\Emitter' => $baseDir . '/guzzlehttp/guzzle/src/Event/Emitter.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\EmitterInterface' => $baseDir . '/guzzlehttp/guzzle/src/Event/EmitterInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\EndEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/EndEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\ErrorEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/ErrorEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\EventInterface' => $baseDir . '/guzzlehttp/guzzle/src/Event/EventInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\HasEmitterInterface' => $baseDir . '/guzzlehttp/guzzle/src/Event/HasEmitterInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\HasEmitterTrait' => $baseDir . '/guzzlehttp/guzzle/src/Event/HasEmitterTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\ListenerAttacherTrait' => $baseDir . '/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\ProgressEvent' => $baseDir . '/guzzlehttp/guzzle/src/Event/ProgressEvent.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\RequestEvents' => $baseDir . '/guzzlehttp/guzzle/src/Event/RequestEvents.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Event\\SubscriberInterface' => $baseDir . '/guzzlehttp/guzzle/src/Event/SubscriberInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\BadResponseException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\ClientException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\ConnectException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\CouldNotRewindStreamException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/CouldNotRewindStreamException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\ParseException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/ParseException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\RequestException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\ServerException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\StateException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/StateException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\TooManyRedirectsException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\TransferException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Exception\\XmlParseException' => $baseDir . '/guzzlehttp/guzzle/src/Exception/XmlParseException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\HasDataTrait' => $baseDir . '/guzzlehttp/guzzle/src/HasDataTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\AbstractMessage' => $baseDir . '/guzzlehttp/guzzle/src/Message/AbstractMessage.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\AppliesHeadersInterface' => $baseDir . '/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\FutureResponse' => $baseDir . '/guzzlehttp/guzzle/src/Message/FutureResponse.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\MessageFactory' => $baseDir . '/guzzlehttp/guzzle/src/Message/MessageFactory.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\MessageFactoryInterface' => $baseDir . '/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\MessageInterface' => $baseDir . '/guzzlehttp/guzzle/src/Message/MessageInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\MessageParser' => $baseDir . '/guzzlehttp/guzzle/src/Message/MessageParser.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\Request' => $baseDir . '/guzzlehttp/guzzle/src/Message/Request.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\RequestInterface' => $baseDir . '/guzzlehttp/guzzle/src/Message/RequestInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\Response' => $baseDir . '/guzzlehttp/guzzle/src/Message/Response.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Message\\ResponseInterface' => $baseDir . '/guzzlehttp/guzzle/src/Message/ResponseInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Mimetypes' => $baseDir . '/guzzlehttp/guzzle/src/Mimetypes.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Pool' => $baseDir . '/guzzlehttp/guzzle/src/Pool.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Post\\MultipartBody' => $baseDir . '/guzzlehttp/guzzle/src/Post/MultipartBody.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Post\\PostBody' => $baseDir . '/guzzlehttp/guzzle/src/Post/PostBody.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Post\\PostBodyInterface' => $baseDir . '/guzzlehttp/guzzle/src/Post/PostBodyInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Post\\PostFile' => $baseDir . '/guzzlehttp/guzzle/src/Post/PostFile.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Post\\PostFileInterface' => $baseDir . '/guzzlehttp/guzzle/src/Post/PostFileInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\AppendStream' => $baseDir . '/guzzlehttp/psr7/src/AppendStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\BufferStream' => $baseDir . '/guzzlehttp/psr7/src/BufferStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\CachingStream' => $baseDir . '/guzzlehttp/psr7/src/CachingStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\DroppingStream' => $baseDir . '/guzzlehttp/psr7/src/DroppingStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\FnStream' => $baseDir . '/guzzlehttp/psr7/src/FnStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Header' => $baseDir . '/guzzlehttp/psr7/src/Header.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\InflateStream' => $baseDir . '/guzzlehttp/psr7/src/InflateStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\LazyOpenStream' => $baseDir . '/guzzlehttp/psr7/src/LazyOpenStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\LimitStream' => $baseDir . '/guzzlehttp/psr7/src/LimitStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Message' => $baseDir . '/guzzlehttp/psr7/src/Message.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\MessageTrait' => $baseDir . '/guzzlehttp/psr7/src/MessageTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\MimeType' => $baseDir . '/guzzlehttp/psr7/src/MimeType.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\MultipartStream' => $baseDir . '/guzzlehttp/psr7/src/MultipartStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\NoSeekStream' => $baseDir . '/guzzlehttp/psr7/src/NoSeekStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\PumpStream' => $baseDir . '/guzzlehttp/psr7/src/PumpStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Query' => $baseDir . '/guzzlehttp/psr7/src/Query.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Request' => $baseDir . '/guzzlehttp/psr7/src/Request.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Response' => $baseDir . '/guzzlehttp/psr7/src/Response.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Rfc7230' => $baseDir . '/guzzlehttp/psr7/src/Rfc7230.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\ServerRequest' => $baseDir . '/guzzlehttp/psr7/src/ServerRequest.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Stream' => $baseDir . '/guzzlehttp/psr7/src/Stream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $baseDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\StreamWrapper' => $baseDir . '/guzzlehttp/psr7/src/StreamWrapper.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\UploadedFile' => $baseDir . '/guzzlehttp/psr7/src/UploadedFile.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Uri' => $baseDir . '/guzzlehttp/psr7/src/Uri.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\UriNormalizer' => $baseDir . '/guzzlehttp/psr7/src/UriNormalizer.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\UriResolver' => $baseDir . '/guzzlehttp/psr7/src/UriResolver.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Psr7\\Utils' => $baseDir . '/guzzlehttp/psr7/src/Utils.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Query' => $baseDir . '/guzzlehttp/guzzle/src/Query.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\QueryParser' => $baseDir . '/guzzlehttp/guzzle/src/QueryParser.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\RequestFsm' => $baseDir . '/guzzlehttp/guzzle/src/RequestFsm.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\RingBridge' => $baseDir . '/guzzlehttp/guzzle/src/RingBridge.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Client\\ClientUtils' => $baseDir . '/guzzlehttp/ringphp/src/Client/ClientUtils.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Client\\CurlFactory' => $baseDir . '/guzzlehttp/ringphp/src/Client/CurlFactory.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Client\\CurlHandler' => $baseDir . '/guzzlehttp/ringphp/src/Client/CurlHandler.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Client\\CurlMultiHandler' => $baseDir . '/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Client\\Middleware' => $baseDir . '/guzzlehttp/ringphp/src/Client/Middleware.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Client\\MockHandler' => $baseDir . '/guzzlehttp/ringphp/src/Client/MockHandler.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Client\\StreamHandler' => $baseDir . '/guzzlehttp/ringphp/src/Client/StreamHandler.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Core' => $baseDir . '/guzzlehttp/ringphp/src/Core.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Exception\\CancelledException' => $baseDir . '/guzzlehttp/ringphp/src/Exception/CancelledException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Exception\\CancelledFutureAccessException' => $baseDir . '/guzzlehttp/ringphp/src/Exception/CancelledFutureAccessException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Exception\\ConnectException' => $baseDir . '/guzzlehttp/ringphp/src/Exception/ConnectException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Exception\\RingException' => $baseDir . '/guzzlehttp/ringphp/src/Exception/RingException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\BaseFutureTrait' => $baseDir . '/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\CompletedFutureArray' => $baseDir . '/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\CompletedFutureValue' => $baseDir . '/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\FutureArray' => $baseDir . '/guzzlehttp/ringphp/src/Future/FutureArray.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\FutureArrayInterface' => $baseDir . '/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\FutureInterface' => $baseDir . '/guzzlehttp/ringphp/src/Future/FutureInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\FutureValue' => $baseDir . '/guzzlehttp/ringphp/src/Future/FutureValue.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Ring\\Future\\MagicFutureTrait' => $baseDir . '/guzzlehttp/ringphp/src/Future/MagicFutureTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\AppendStream' => $baseDir . '/guzzlehttp/streams/src/AppendStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\AsyncReadStream' => $baseDir . '/guzzlehttp/streams/src/AsyncReadStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\BufferStream' => $baseDir . '/guzzlehttp/streams/src/BufferStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\CachingStream' => $baseDir . '/guzzlehttp/streams/src/CachingStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\DroppingStream' => $baseDir . '/guzzlehttp/streams/src/DroppingStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\Exception\\CannotAttachException' => $baseDir . '/guzzlehttp/streams/src/Exception/CannotAttachException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\Exception\\SeekException' => $baseDir . '/guzzlehttp/streams/src/Exception/SeekException.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\FnStream' => $baseDir . '/guzzlehttp/streams/src/FnStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\GuzzleStreamWrapper' => $baseDir . '/guzzlehttp/streams/src/GuzzleStreamWrapper.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\InflateStream' => $baseDir . '/guzzlehttp/streams/src/InflateStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\LazyOpenStream' => $baseDir . '/guzzlehttp/streams/src/LazyOpenStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\LimitStream' => $baseDir . '/guzzlehttp/streams/src/LimitStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\MetadataStreamInterface' => $baseDir . '/guzzlehttp/streams/src/MetadataStreamInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\NoSeekStream' => $baseDir . '/guzzlehttp/streams/src/NoSeekStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\NullStream' => $baseDir . '/guzzlehttp/streams/src/NullStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\PumpStream' => $baseDir . '/guzzlehttp/streams/src/PumpStream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\Stream' => $baseDir . '/guzzlehttp/streams/src/Stream.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\StreamDecoratorTrait' => $baseDir . '/guzzlehttp/streams/src/StreamDecoratorTrait.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\StreamInterface' => $baseDir . '/guzzlehttp/streams/src/StreamInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Stream\\Utils' => $baseDir . '/guzzlehttp/streams/src/Utils.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Subscriber\\Cookie' => $baseDir . '/guzzlehttp/guzzle/src/Subscriber/Cookie.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Subscriber\\History' => $baseDir . '/guzzlehttp/guzzle/src/Subscriber/History.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Subscriber\\HttpError' => $baseDir . '/guzzlehttp/guzzle/src/Subscriber/HttpError.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Subscriber\\Mock' => $baseDir . '/guzzlehttp/guzzle/src/Subscriber/Mock.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Subscriber\\Prepare' => $baseDir . '/guzzlehttp/guzzle/src/Subscriber/Prepare.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Subscriber\\Redirect' => $baseDir . '/guzzlehttp/guzzle/src/Subscriber/Redirect.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\ToArrayInterface' => $baseDir . '/guzzlehttp/guzzle/src/ToArrayInterface.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Transaction' => $baseDir . '/guzzlehttp/guzzle/src/Transaction.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\UriTemplate' => $baseDir . '/guzzlehttp/guzzle/src/UriTemplate.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Url' => $baseDir . '/guzzlehttp/guzzle/src/Url.php', + 'Google\\Site_Kit_Dependencies\\GuzzleHttp\\Utils' => $baseDir . '/guzzlehttp/guzzle/src/Utils.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\ErrorHandler' => $baseDir . '/monolog/monolog/src/Monolog/ErrorHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\ChromePHPFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\ElasticaFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\FlowdockFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\FluentdFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\FormatterInterface' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\GelfMessageFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\HtmlFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\JsonFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\LineFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\LogglyFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\LogstashFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\MongoDBFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\NormalizerFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\ScalarFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Formatter\\WildfireFormatter' => $baseDir . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\AbstractHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\AbstractProcessingHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\AbstractSyslogHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\AmqpHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\BrowserConsoleHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\BufferHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\ChromePHPHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\CouchDBHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\CubeHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\Curl\\Util' => $baseDir . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\DeduplicationHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\DoctrineCouchDBHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\DynamoDbHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\ElasticSearchHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\ErrorLogHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FilterHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FingersCrossedHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FirePHPHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FleepHookHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FlowdockHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FormattableHandlerInterface' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\FormattableHandlerTrait' => $baseDir . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\GelfHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\GroupHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\HandlerInterface' => $baseDir . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\HandlerWrapper' => $baseDir . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\HipChatHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/HipChatHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\IFTTTHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\InsightOpsHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\LogEntriesHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\LogglyHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\MailHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/MailHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\MandrillHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\MissingExtensionException' => $baseDir . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\MongoDBHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\NativeMailerHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\NewRelicHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\NullHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/NullHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\PHPConsoleHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\ProcessableHandlerInterface' => $baseDir . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\ProcessableHandlerTrait' => $baseDir . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\PsrHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\PushoverHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\RavenHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/RavenHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\RedisHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\RollbarHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\RotatingFileHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SamplingHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SlackHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SlackWebhookHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\Slack\\SlackRecord' => $baseDir . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SlackbotHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SocketHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\StreamHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SwiftMailerHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SyslogHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SyslogUdpHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\SyslogUdp\\UdpSocket' => $baseDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\TestHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/TestHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\WhatFailureGroupHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Handler\\ZendMonitorHandler' => $baseDir . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Logger' => $baseDir . '/monolog/monolog/src/Monolog/Logger.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\GitProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\IntrospectionProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\MemoryPeakUsageProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\MemoryProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\MemoryUsageProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\MercurialProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\ProcessIdProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\ProcessorInterface' => $baseDir . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\PsrLogMessageProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\TagProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\UidProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Processor\\WebProcessor' => $baseDir . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Registry' => $baseDir . '/monolog/monolog/src/Monolog/Registry.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\ResettableInterface' => $baseDir . '/monolog/monolog/src/Monolog/ResettableInterface.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\SignalHandler' => $baseDir . '/monolog/monolog/src/Monolog/SignalHandler.php', + 'Google\\Site_Kit_Dependencies\\Monolog\\Utils' => $baseDir . '/monolog/monolog/src/Monolog/Utils.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Cache\\CacheException' => $baseDir . '/psr/cache/src/CacheException.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Cache\\CacheItemInterface' => $baseDir . '/psr/cache/src/CacheItemInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Cache\\CacheItemPoolInterface' => $baseDir . '/psr/cache/src/CacheItemPoolInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Cache\\InvalidArgumentException' => $baseDir . '/psr/cache/src/InvalidArgumentException.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Http\\Message\\MessageInterface' => $baseDir . '/psr/http-message/src/MessageInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Http\\Message\\RequestInterface' => $baseDir . '/psr/http-message/src/RequestInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Http\\Message\\ResponseInterface' => $baseDir . '/psr/http-message/src/ResponseInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Http\\Message\\ServerRequestInterface' => $baseDir . '/psr/http-message/src/ServerRequestInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Http\\Message\\StreamInterface' => $baseDir . '/psr/http-message/src/StreamInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Http\\Message\\UploadedFileInterface' => $baseDir . '/psr/http-message/src/UploadedFileInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Http\\Message\\UriInterface' => $baseDir . '/psr/http-message/src/UriInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\AbstractLogger' => $baseDir . '/psr/log/Psr/Log/AbstractLogger.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\InvalidArgumentException' => $baseDir . '/psr/log/Psr/Log/InvalidArgumentException.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\LogLevel' => $baseDir . '/psr/log/Psr/Log/LogLevel.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\LoggerAwareInterface' => $baseDir . '/psr/log/Psr/Log/LoggerAwareInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\LoggerAwareTrait' => $baseDir . '/psr/log/Psr/Log/LoggerAwareTrait.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\LoggerInterface' => $baseDir . '/psr/log/Psr/Log/LoggerInterface.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\LoggerTrait' => $baseDir . '/psr/log/Psr/Log/LoggerTrait.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\NullLogger' => $baseDir . '/psr/log/Psr/Log/NullLogger.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\Test\\DummyTest' => $baseDir . '/psr/log/Psr/Log/Test/DummyTest.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\Test\\LoggerInterfaceTest' => $baseDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', + 'Google\\Site_Kit_Dependencies\\Psr\\Log\\Test\\TestLogger' => $baseDir . '/psr/log/Psr/Log/Test/TestLogger.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\CancellablePromiseInterface' => $baseDir . '/react/promise/src/CancellablePromiseInterface.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\CancellationQueue' => $baseDir . '/react/promise/src/CancellationQueue.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\Deferred' => $baseDir . '/react/promise/src/Deferred.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\Exception\\LengthException' => $baseDir . '/react/promise/src/Exception/LengthException.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\ExtendedPromiseInterface' => $baseDir . '/react/promise/src/ExtendedPromiseInterface.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\FulfilledPromise' => $baseDir . '/react/promise/src/FulfilledPromise.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\LazyPromise' => $baseDir . '/react/promise/src/LazyPromise.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\Promise' => $baseDir . '/react/promise/src/Promise.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\PromiseInterface' => $baseDir . '/react/promise/src/PromiseInterface.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\PromisorInterface' => $baseDir . '/react/promise/src/PromisorInterface.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\RejectedPromise' => $baseDir . '/react/promise/src/RejectedPromise.php', + 'Google\\Site_Kit_Dependencies\\React\\Promise\\UnhandledRejectionException' => $baseDir . '/react/promise/src/UnhandledRejectionException.php', + 'Google\\Site_Kit_Dependencies\\TrueBV\\Exception\\DomainOutOfBoundsException' => $baseDir . '/true/punycode/src/Exception/DomainOutOfBoundsException.php', + 'Google\\Site_Kit_Dependencies\\TrueBV\\Exception\\LabelOutOfBoundsException' => $baseDir . '/true/punycode/src/Exception/LabelOutOfBoundsException.php', + 'Google\\Site_Kit_Dependencies\\TrueBV\\Exception\\OutOfBoundsException' => $baseDir . '/true/punycode/src/Exception/OutOfBoundsException.php', + 'Google\\Site_Kit_Dependencies\\TrueBV\\Punycode' => $baseDir . '/true/punycode/src/Punycode.php', +); diff --git a/wp-content/plugins/google-site-kit/uninstall.php b/wp-content/plugins/google-site-kit/uninstall.php new file mode 100644 index 000000000..fa6ae9455 --- /dev/null +++ b/wp-content/plugins/google-site-kit/uninstall.php @@ -0,0 +1,20 @@ +