CINXE.COM

ChatGPT Integration in PowerShell (Scripting Demo)

<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><script async="" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" type="text/javascript"></script><script async="" defer="" src="https://connect.facebook.net/en_US/sdk.js?xfbml=1&amp;version=v3.2&amp;hash=606879e94b06283a619cebf5b7449644"></script><script async="" defer="" src="https://www.instagram.com/embed.js"></script><meta name="robots" content="max-image-preview:large"/><title>ChatGPT Integration in PowerShell (Scripting Demo)</title><meta name="description" content="Watch this video to learn how to integrate ChatGPT capabilities into your PowerShell scripts."/><meta property="og:title" content="ChatGPT Integration in PowerShell (Scripting Demo)"/><meta property="og:description" content="Watch this video to learn how to integrate ChatGPT capabilities into your PowerShell scripts."/><meta property="og:url" content="https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"/><meta property="og:type" content="article"/><meta property="og:image" content="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt921541b2c6cc35dc/661d3a324c182e4658ad9620/ChatGPTIntegrationHeader.jpeg?disable=upscale&amp;width=1200&amp;height=630&amp;fit=crop"/><meta property="oc:keywords" content="PowerShell, Operating Systems"/><link rel="canonical" href="https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"/><link rel="preload" href="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt921541b2c6cc35dc/661d3a324c182e4658ad9620/ChatGPTIntegrationHeader.jpeg?width=1280&amp;auto=webp&amp;quality=10&amp;format=jpg&amp;disable=upscale&amp;blur=40" as="image"/><meta property="twitter:card" content="summary"/><link rel="preconnect" href="https://cdn.cookielaw.org"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="preconnect" href="https://fonts.googleapis.com" crossorigin="anonymous"/><link rel="preconnect" href="https://www.googletagmanager.com"/><link rel="icon" type="image/x-icon" href="/assets/itprotoday-DWmeQ76g.ico"/><link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com"/><link rel="modulepreload" href="/assets/entry.client-fWB18xdV.js"/><link rel="modulepreload" href="/assets/chunk-K6AXKMTT-D00r_oVc.js"/><link rel="modulepreload" href="/assets/index-BlRIwUgC.js"/><link rel="modulepreload" href="/assets/with-props-C4rFUyxV.js"/><link rel="modulepreload" href="/assets/gtm-DGm0KW_T.js"/><link rel="modulepreload" href="/assets/contentPreview-raReixWB.js"/><link rel="modulepreload" href="/assets/_-BJdr63HM.js"/><link rel="modulepreload" href="/assets/useArticleProps-B5v1naMg.js"/><link rel="modulepreload" href="/assets/provider-vRHVWpv0.js"/><link rel="modulepreload" href="/assets/newsletterSignupPromo-C5ZmaayE.js"/><link rel="modulepreload" href="/assets/socialShare-BbqkDzDu.js"/><link rel="modulepreload" href="/assets/link-C1MkzDH5.js"/><link rel="modulepreload" href="/assets/button-DlgCHeeG.js"/><link rel="modulepreload" href="/assets/util-BlbSWXsE.js"/><link rel="modulepreload" href="/assets/searchBar-CEbzLjII.js"/><link rel="modulepreload" href="/assets/useSearchBar-B0qpfoK9.js"/><link rel="modulepreload" href="/assets/navigation-BPrJWSO7.js"/><link rel="modulepreload" href="/assets/redirection-DiAII56c.js"/><link rel="modulepreload" href="/assets/meta-DL0KpjEK.js"/><link rel="modulepreload" href="/assets/form-5uUV5058.js"/><link rel="modulepreload" href="/assets/root-BIuf-57F.js"/><link rel="modulepreload" href="/assets/sidebar-C38SyLXI.js"/><link rel="modulepreload" href="/assets/articleMultiSection-B_lQ5uys.js"/><link rel="modulepreload" href="/assets/contentDomain.generated-DIEwSG95.js"/><link rel="modulepreload" href="/assets/topicList-DLI_z99T.js"/><link rel="modulepreload" href="/assets/gridLayout-wIbp2Hs_.js"/><link rel="modulepreload" href="/assets/featureImageHeader-B2n6UlsK.js"/><link rel="modulepreload" href="/assets/useWeatherWidget-CqdUxz0N.js"/><link rel="modulepreload" href="/assets/string-BS_NwYxO.js"/><link rel="modulepreload" href="/assets/weatherWidget-BYzhjHC9.js"/><link rel="modulepreload" href="/assets/changeLocationBar-BNl0rC1C.js"/><link rel="modulepreload" href="/assets/contentCards-aFwo1o7S.js"/><link rel="modulepreload" href="/assets/videoPlaylist-BaLxtSEs.js"/><link rel="modulepreload" href="/assets/toNumber-DCajaT_r.js"/><link rel="modulepreload" href="/assets/contributorSummary-CYbbZoZR.js"/><link rel="modulepreload" href="/assets/programHeader-UEd8-rbR.js"/><link rel="modulepreload" href="/assets/categoryHeader-BNorRpUl.js"/><link rel="modulepreload" href="/assets/resources-DIZqnfs4.js"/><link rel="modulepreload" href="/assets/index-BObwWQ7a.js"/><link rel="modulepreload" href="/assets/breadcrumb-D99WjBeI.js"/><link rel="modulepreload" href="/assets/listContent-DPrFxO8G.js"/><link rel="modulepreload" href="/assets/utils-Bn24zYNJ.js"/><link rel="modulepreload" href="/assets/pagination-CotFOi0g.js"/><link rel="modulepreload" href="/assets/commodityPrices-CuYN6Jxx.js"/><link rel="modulepreload" href="/assets/_getPrototype-3cCw-LUg.js"/><link rel="modulepreload" href="/assets/useStorage-gorQNo4e.js"/><link rel="modulepreload" href="/assets/_topic._slug._index-NLhdOpms.js"/><script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"ChatGPT Integration in PowerShell (Scripting Demo)","description":"Watch this video to learn how to integrate ChatGPT capabilities into your PowerShell scripts.","thumbnailUrl":["https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt921541b2c6cc35dc/661d3a324c182e4658ad9620/ChatGPTIntegrationHeader.jpeg"],"uploadDate":"2023-09-28T07:00:00.000Z","duration":"P0Y0M0DT0HNaNMNaNS","contentUrl":""}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.itprotoday.com"},{"@type":"ListItem","position":2,"name":"PowerShell","item":"https://www.itprotoday.com/operating-systems/powershell"}]}</script><script type="text/javascript">window.NREUM||(NREUM={});NREUM.info = {"agent":"","beacon":"bam.eu01.nr-data.net","errorBeacon":"bam.eu01.nr-data.net","licenseKey":"NRJS-26ae6a3b09493bbcc87","applicationID":"514059305","agentToken":null,"applicationTime":4.599445,"transactionName":"MhBSZQoZWEEDU0ZaXgtac0QLDFlfTR9CXEYAB0NZHRRaHQFYU0dWFQEdWBYMU1UQUUZaXgtYWV9VCFlFB0JBW1QJGR1CGwpfQhZZXFQcARBdXlU=","queueTime":0,"ttGuid":"b5b0f707bd41e813"}; (window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.eu01.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"538480682",accountID:"3936348",trustKey:"3288925",xpid:"Vw8EV1VXABAFVVVSAggEVlE=",licenseKey:"NRJS-26ae6a3b09493bbcc87",applicationID:"514059305"};;/*! For license information please see nr-loader-spa-1.283.1.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>g,xN:()=>p});var n=r(3333);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.283.1",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{A4:()=>s,OF:()=>d,RI:()=>i,WN:()=>h,bv:()=>o,gm:()=>a,lR:()=>f,m:()=>u,mw:()=>c,sb:()=>l});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s="complete"===a?.document?.readyState,c=Boolean("hidden"===a?.document?.visibilityState),u=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d&&"undefined"==typeof SharedWorker,f=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),c&&h(c.prototype,f),h(a.gm,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9414:(e,t,r)=>{"use strict";r.d(t,{J:()=>c});var n=r(7836),i=r(2646),o=r(944),a=r(3434);const s=new Map;function c(e,t,r,c){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,o.R)(29);const u=function(e){return(e||n.ee).get("logger")}(e),d=(0,a.YM)(u),l=new i.y(n.P);l.level=c.level,l.customAttributes=c.customAttributes;const f=t[r]?.[a.Jt]||t[r];return s.set(f,l),d.inPlace(t,[r],"wrap-logger-",(()=>s.get(f))),u}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{$v:()=>u,TZ:()=>n,Zp:()=>i,kd:()=>c,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3,c=["PageAction","UserAction","BrowserPerformance"],u={MARKS:"experimental.marks",MEASURES:"experimental.measures",RESOURCES:"experimental.resources"}},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,TZ:()=>s,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log",s=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(8154),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},8154:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(6154),r(9566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>c,Qu:()=>u,TZ:()=>s,ih:()=>d,pP:()=>a,tC:()=>i});var n=r(860);const i=["click","keydown","submit","popstate"],o="api",a="initialPageLoad",s=n.K7.softNav,c={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},u={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},d={IP:"in progress",FIN:"finished",CAN:"cancelled"}},7378:(e,t,r)=>{"use strict";r.d(t,{$p:()=>x,BR:()=>b,Kp:()=>R,L3:()=>y,Lc:()=>c,NC:()=>o,SG:()=>d,TZ:()=>i,U6:()=>p,UT:()=>m,d3:()=>w,dT:()=>f,e5:()=>A,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>T,uP:()=>s,wW:()=>E,xq:()=>a});var n=r(384);const i=r(860).K7.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",l="remaining",f="interaction",h="spaNode",p="jsonpNode",g="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=(0,n.dV)().o.ST,w="-start",R="-end",x="-body",E="cb"+R,A="jsTime",T="fetch"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},8969:(e,t,r)=>{"use strict";r.d(t,{j:()=>O});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(8154),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(9414);function x(){const e=(0,h.pV)();g.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const E={};var A=r(9417),T=r(5603),N=r(5284);const S=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let _=!1;function O(e,t={},g,O){let{init:I,info:P,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();P||(I=L.init,P=L.info,j=L.loader_config),(0,A.xN)(e.agentIdentifier,I||{}),(0,T.a)(e.agentIdentifier,j||{}),P.jsAttributes??={},d.bv&&(P.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,P);const H=(0,A.D0)(e.agentIdentifier),M=[P.beacon,P.errorBeacon];_||(H.proxy.assets&&(S(H.proxy.assets),M.push(H.proxy.assets)),H.proxy.beacon&&M.push(H.proxy.beacon),x(),(0,h.US)("activatedFeatures",N.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?M:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const g={};var x=s.ee.get(e),A=x.get("tracer");E[e]=b.g.OFF,x.on(p.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var T="api-",N=T+"ixn-";function S(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(T,n,!0,o||null===r?"session":void 0)(t,r)}function _(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,x),(0,w.R)(x,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,x),(0,R.J)(x,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(T,e,!0,"api")})),g.addPageAction=I(T,"addPageAction",!0,n.K7.genericEvents),g.recordCustomEvent=I(T,"recordCustomEvent",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(T,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return S(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if("string"==typeof e||null===e)return S("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return S("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},g.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,x),x.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,x)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,x)},g.interaction=function(e){return(new _).get("object"==typeof e?e:{})};const O=_.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,x),h||(0,a.p)(N+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,x),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,x),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,x),r?void 0:this}}function P(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),x.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{O[e]=I(N,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(N,"routeName",void 0,n.K7.softNav):I(T,"routeName",!0,n.K7.spa),g.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,x),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,x)},d.RI?(0,u.GG)((()=>P()),!0):P(),g}(e.agentIdentifier,O,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),_=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.283.1.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.283.1.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={478:"sha512-xh2gny9FbPW5pomtWyy7hHdQHGboXB/N4nyn8DfA0WA2vCwX0A4j2oDh5iaHPZ7LExtpCN1wH+cmFhC5+XZpvw==",249:"sha512-QwbAv951CmpiBMYrGDX13s51PFIraP7TGD1mhcZv8jILwi1qPZbPL+c98zB6u5kWpOPcdfGLroZW+38lG3ZVHA==",212:"sha512-hVJwKgbpekN6SB9bmRkjdGJxXRXeHDsrVRlTC1EMUEYSeaO8NWR6CjzsDA2iUrhmD1sv4p1TCx6tYULmyZ2Tbw=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.283.1.PROD"]=self["webpackChunk:NRBA-1.283.1.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(8969);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),E=i(2843),A=i(3878),T=i(782),N=i(1863);class S extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),p.RI&&((0,E.u)((()=>(0,x.p)("docHidden",[(0,N.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,N.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var _=i(8154);class O extends b{static featureName=_.TZ;constructor(e,t=!0){super(e,_.TZ,t),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function L(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error&&!!e.stack}class M extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",((e,t)=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,N.t)(),!0,{},this.#r,t],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),p.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,x.p)("err",[k(e),(0,N.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",(e=>{this.abortHandler&&(0,x.p)("err",[L(e),(0,N.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var D=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,D.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var g=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",J=Y+"body-",X=["arrayBuffer","blob","json","text","formData"],Q=p.gm.Request,ee=p.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,X.forEach((e=>{r(Q[te],e,J),r(ee[te],e,J)})),r(p.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){E(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,N.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,N.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function g(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,N.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,N.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,N.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:p.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),pe(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,N.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,N.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,N.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):E(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function E(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,x.p)(_.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",g),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ge={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Ee,Lc:Ae,uP:Te,Rz:Ne}=be;class Se extends b{static featureName=Ee;constructor(e,t=!0){super(e,Ee,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Te,(function(e,t){this.bstStart=(0,N.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,N.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Ne+Re,(function(e){this.time=(0,N.t)(),this.startPath=location.pathname+location.hash})),r.on(Ne+xe,(function(e){(0,x.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var _e=i(2614);class Oe extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(_e.H3,"_").concat(_e.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===_e.g.FULL||e.sessionReplayMode===_e.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee,agentRef:this.#o}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==_e.g.FULL&&this.featAggregate.initializeRecording(_e.g.FULL,!0):(this.#i=_e.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==_e.g.FULL&&(this.recorder.parent.mode=_e.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class Pe extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=>{(0,A.sp)(e,(e=>{a(e)}),!0)}));const n=()=>(0,x.p)("newURL",[(0,N.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",n),r.on("replaceState-end",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)("popstate",(e=>(0,x.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=>{i||(i=!0,requestAnimationFrame((()=>{(0,x.p)("newDom",[(0,N.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=>{(0,x.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var je=i(7378);const Ce={},ke=["appendChild","insertBefore","replaceChild"];function Le(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?&](?:callback|cb)=([^&#]+)/,i=/(.*)\.([^.]+)/,o=/^(\w+)(\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t&&t.length>=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var d={};function l(){t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,A.jT)(!1)),e.addEventListener("error",f,(0,A.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const He={};function Me(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i&&function(){function e(r){var o=t.context(),a=n(r,"executor-",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),["all","race"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],"cb-",a,null,!1),e[1]=n(e[1],"cb-",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(e[1],"resolve-",this,null,!1)})),t.on("executor-err",(function(e,t,r){e[1](r)})),t.on("cb-end",(function(e,r,n){t.emit("propagate",[n,!0],this.nextPromise,!1,!1)})),t.on("propagate",(function(e,r,n){this.getCtx&&!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r&&r.getCtx?r.getCtx():this})}))}(),t}const De={},Ke="setTimeout",Ue="setInterval",Ve="clearTimeout",Ge="-start",Fe=[Ke,"setImmediate",Ue,Ve,"clearImmediate"];function Be(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(De[t.debugId]++)return t;De[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+"-"),r.inPlace(p.gm,Fe.slice(2,3),Ue+"-"),r.inPlace(p.gm,Fe.slice(3),Ve+"-"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Je,wW:Xe,e5:$e,tH:Qe,uP:et,rw:tt,Lc:rt}=je;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=Le(this.ee),a=Me(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,N.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,N.t)();this[$e]=~~this[$e]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,N.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Xe,m),o.on(Xe,m),this.ee.on("fn-err",((...t)=>{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)("function-err",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,"xhr-resolved"],this.featureName),u.buffer([et],this.featureName),s.buffer(["setTimeout"+Ye,"clearTimeout"+Ze,et],this.featureName),c.buffer([et,"new-xhr","send-xhr"+Ze],this.featureName),d.buffer([Qe+Ze,Qe+"-done",Qe+Je+Ze,Qe+Je+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,Xe,"executor-err","resolve"+Ze],this.featureName),i.buffer([et,"no-"+et],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,Qe+Ze),v(d,Qe+"-done"),v(o,"new-jsonp"),v(o,"jsonp-end"),v(o,"cb-start"),l.on("pushState-end",h),l.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled,e.init.performance.resources.enabled];if(p.RI&&(e.init.user_actions.enabled&&(it.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=>{const t=(0,v.s)((e=>{(0,x.p)("ua",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled&&p.gm.PerformanceObserver?.supportedEntryTypes.includes("resource"))){new PerformanceObserver((e=>{e.getEntries().forEach((e=>{(0,x.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)}))})).observe({type:"resource",buffered:!0})}r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785),ct=i(9414);class ut extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;(0,ct.J)(r,p.gm.console,"log",{level:"info"}),(0,ct.J)(r,p.gm.console,"error",{level:"error"}),(0,ct.J)(r,p.gm.console,"warn",{level:"warn"}),(0,ct.J)(r,p.gm.console,"info",{level:"info"}),(0,ct.J)(r,p.gm.console,"debug",{level:"debug"}),(0,ct.J)(r,p.gm.console,"trace",{level:"trace"}),this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,S,Se,Oe,O,M,ot,ut,Pe,nt],loaderType:"spa"})})()})();</script><link rel="stylesheet" href="/assets/styles.generated-CmzcVq8e.css"/><link rel="stylesheet" href="/assets/brand.generated-ChPKH9i1.css"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&amp;display=swap"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&amp;display=swap"/><noscript><style type="text/css">.gptHideContent { opacity: 1!important; }</style></noscript><script type="text/javascript" src="https://cdn.cookielaw.org/consent/dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e/OtAutoBlock.js"></script><script type="text/javascript" src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-domain-script="dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e"></script><script type="text/javascript" id="vwoCode">window._vwo_code = window._vwo_code || (function () { var account_id = 734041, version = 1.5, settings_tolerance = 2000, library_tolerance = 2500, use_existing_jquery = false, is_spa = 1, hide_element = 'body', hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important',/* DO NOT EDIT BELOW THIS LINE */ f = false, d = document, vwoCodeEl = d.querySelector('#vwoCode'), code = { use_existing_jquery: function () { return use_existing_jquery }, library_tolerance: function () { return library_tolerance }, hide_element_style: function () { return '{' + hide_element_style + '}' }, finish: function () { if (!f) { f = true; var e = d.getElementById('_vis_opt_path_hides'); if (e) e.parentNode.removeChild(e) } }, finished: function () { return f }, load: function (e) { var t = d.createElement('script'); t.fetchPriority = 'high'; t.src = e; t.type = 'text/javascript'; t.onerror = function () { _vwo_code.finish() }; d.getElementsByTagName('head')[0].appendChild(t) }, getVersion: function () { return version }, getMatchedCookies: function (e) { var t = []; if (document.cookie) { t = document.cookie.match(e) || [] } return t }, getCombinationCookie: function () { var e = code.getMatchedCookies(/(?:^|;)\s?(_vis_opt_exp_\d+_combi=[^;$]*)/gi); e = e.map(function (e) { try { var t = decodeURIComponent(e); if (!/_vis_opt_exp_\d+_combi=(?:\d+,?)+\s*$/.test(t)) { return '' } return t } catch (e) { return '' } }); var i = []; e.forEach(function (e) { var t = e.match(/([\d,]+)/g); t && i.push(t.join('-')) }); return i.join('|') }, init: function () { if (d.URL.indexOf('__vwo_disable__') > -1) return; window.settings_timer = setTimeout(function () { _vwo_code.finish() }, settings_tolerance); var e = d.createElement('style'), t = hide_element ? hide_element + '{' + hide_element_style + '}' : '', i = d.getElementsByTagName('head')[0]; e.setAttribute('id', '_vis_opt_path_hides'); vwoCodeEl && e.setAttribute('nonce', vwoCodeEl.nonce); e.setAttribute('type', 'text/css'); if (e.styleSheet) e.styleSheet.cssText = t; else e.appendChild(d.createTextNode(t)); i.appendChild(e); var n = this.getCombinationCookie(); this.load('https://dev.visualwebsiteoptimizer.com/j.php?a=' + account_id + '&u=' + encodeURIComponent(d.URL) + '&f=' + +is_spa + '&vn=' + version + (n ? '&c=' + n : '')); return settings_timer } }; window._vwo_settings_timer = code.init(); return code; }()); </script></head><body class="brand-itprotoday gptHideContent"><noscript></noscript><div id="bigsky_v"></div><div id="welcome_v"></div><main data-theme="theme1" class="Provider"><div data-testid="ad_blocker" class="ads ad adsbox doubleclick ad-placement carbon-ads" style="height:1px;width:1px;position:absolute;left:-999em;top:-999em"></div><div><div data-template="layout" class="Layout"><nav data-module="navigation" aria-label="navigation" class="Navigation"><div data-testid="header" class="Navigation-HeaderWrapper"><div class="FullScreenBackground Navigation-HeaderBackground"></div><div class="Navigation-Header"><div class="InformaBarTech" data-component="informa-bar"><div class="InformaBarTech-LogoSectionWrapper"><div class="InformaBarTech-LogoSection" data-testid="informa-bar-logo-section" role="button" tabindex="0" aria-label="Open Informa bar"><div class="InformaBarTech-LogoWrapper"><img class="InformaBarTech-Logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAekAAABqCAYAAACYnalVAAAACXBIWXMAAAsSAAALEgHS3X78AAAPZklEQVR4nO2d320bSRKHew0/HkDe4t41jkDcCMSNwNwIpI3AdATWRmA6AksRrAzcu8UIjoxgxffDQYzAh9mtvmsPKHJIVvVUz3wfQNgWrOHM9J9fV3V11Q/fvn0Le7gJIUxDCFUI4Ur+2zKE8BxCeJDP874LQPGMpQ9M5M/635d7HmoTQngKITyGEFbyeaIbAAAcz0siXYvzbQjh4sAVtyGEhfxf6A+1EM/k81bhqdYi2nci2gAA0IKmSI9lIj12Yl6LlYVVXTZ1+8/lMzJ6krUs7PDCAAAcoCnSqwOuzH0g1GUzkwWalTg3iV6YBX0GAGA3r5KfLs4Q6CC/e8d7Lo7oPfk9o0AH+a4PYrUDAMAOokjXFvA7hRf0ViwyKIOx7BVf014AAP6IIq1pzRBEVgZRoM/xngAAgCGvZLLWiOCNXMpxHfANAg0A4JxXRoI6peFdc278AQAAZOCVkaCOaTy3aMUfAACAMbVI/4OXPCiIwAcAKIRapP8dQvgPDTYIblpkkQMAACe8lgQmP4pQ/0jD9JockfcxBeiz9K00Ucn0hb8DAMAOXie5lDWF+pGX7Q5LK3ojwWh3B7KH0S8AAI7glVQoWsuv/Kjg+t4wGbvEKsnMvZwQIL0nAIAyMZnJIrnsuUJNYJI/tM/CR96LhY44AwAYkBbYeExqRocTXd9rEpm4pBbSz8o3di/XBQAAI9ICGzOpTBQ51qLeMmm7RdvVvaUwBgCAPalIP0v07Sb5WVuh3srvUtDfJ9reDfafAQAy8KrxFSuZ0O+Tnx0S6qX8DgLtk8ogqpu4AwCADDRFOoiFVLut34QQPoll3RTqjQj5z2JBP9FYbqmUb2xNewMA5OH1nm95kn3HuPdYi/HfQgj/pG2KQjtpCMfrAAAysU+kmzA5Q8CKBgDIxy53N/QLbUua2AMAgEwg0gAAAE45xt0N/2eXdfo8ECuz79se4xZH1p5w+0NLXupP3vvQkOe4SHUg8LZZQMgERHo/Y+msUxlo9Wd04Hc20ni1mD0wmbukStpzIu18deKNLpPJ6zHXwAW3TBtzxqH5Yi195iGpHpebShIexXs+dGSzb3NcOr9XLdstZSPvYNX4qJCmBYW/iB22PoZ2qfBO1kmFqC7QbuAfOnqOc4iLrTgRWdfUjuU64yQG/WaWfI6Z3Jtspb/cZhA+zXmu6znuWCbJfHDq4vwQ22Th9XDO4iuKdDNv97mcMpF3fQ838rFstLlyR+7DCus3wzrXcRKyKC7SljhYFx26CjX7yVIxGLFqWDCpa/GxRb+o7+Or0r2EI/tiJeP55kxhfol7ub62ZT2V61qMiY28P49iXSVzvPUivclZc8DQ3d2x4eZGAy1lJEUuYkfBDW7DOGnT3INxF3W7X8tnKQN1qNZ16ladHhhzXmMfKhGia+PvuU4WmRr95Ubu23JMXCRz3MzJto+18dWG5hxwe0z/Hmp0dyWrvT9CCB8yCHTKVZJ+FXSJi5+PTgS6Sd32v0v7ax+N80q0OFcy3j6KFZdzzGmQzhnWAh0ZSX85x9MUx8TnjGPiSr6zyzkufe4uBbrJlXh/HtpmgxyaSI87GGi7GMlKiqphOsTc8Z8Lmfwvk4E6dnA/FtxIH4/CrBHf0QUe5owPJ7iQp8mY6GLBGue43ELdxaLkFN5K+xzUgCGJdAzG6FKcU0bi+sSiPo+6Xf9VqAi8lT6pXUq0K8bSHs8OLZhTmDuaM65bLuorEcevDsZETqGeFSLOKXELdO8CbAgiHQuA5HZrtyF24r5aU5aM5d19KPw5oktz4eBeTmWcLII9jrNjiUL30dmzfN4jeLEN/nC2OBoZe4ziPPB7QeLc5HqfUPdZpMcy8X113ngjjukczcTgNEDXvCt0wdYncQ5ira4c961dghdd214XrBeGEd+TnswDLwp1n0V6JRNfCVyxP92aKNCl7nHu46ogofbsoTqVeQFxDRdJZcKxiLZ3QyTI1k5ftnWsuN7lUeuzSJfm+rA6K9wnomurL6Kwi0vnQl2Kh+oUSulX8yRAqsscAMdS8pZOLt41FzMU2PDDBdb0XoYg0JFLx1sglwV5qPrKqKCTDCnMce24SxfpiLQvsKZf5q6nLu6XuMLygB4yp1EPMkq1YOgZx7xxIa4OAsm+xyqN4Uusk4T5KTF1Za5AlXfk/4aecZnkNchNWgwnrejVpijOpJHz29qL8S4eZ0Sk/YFIf0+VycOwFGu9bTL8aZL+0HLA3sk7oLIW9IWbDBb1OqlKt1JYFMRrxAjsHOlG63d0i0j/xTYpvfZSnde4irK26I6JgPytxf/RPpZxr5x3/FAO24WxCB6dS1d4TAK85obHX0YyMRAZ64dNQwCa5JorjmGb3POuvl5ltBJnBiK9SapO5Sj5eSefucwfFu/sz3zrfa6CdYhl0qjHrLJi0gDL4JmfFN1B2pWyfs5Y/EC7ylHKVtpRa9+3kv5ktW9+znv3UC1t2ai3nS6Gx40kHdNkst2HZf9osk48LW0XqZX0r67EepuISdv5ZJwU47AU6zdKi/2xvOeuKswF6bsPRqcdfhqaSK+TTnvuSutGIiwteK8oHiWLtFWf2CYJIDSJx5Ms0kiuz0iv2IVIx/J8D4bbNzlE+l6hzKjlXLGLZTLPnYr1ovPXgupPtyEuFLQXNu+HEt19L9bpRAachivkTjqaBUOpkLSPaWECHaRf3Uh/0+aykOMraxkXlWKZxS74FEL4e5KB7BzuZOFtzVIW0VMFAXyS62yM7rlvNQuscvBP+y7S9+JW0Rhou6gHwheD67YqYdYSq0FmjVVgiZVAp9zIhKmN5+MrUSAmSp6qrljKnDFXfoaFUZ8IMsZ/SbYJtHg2XBj2sbDQo8ECveqzSL9JsvJYYjFxarqYrJ/fgspoH+99xr2rmVjtmlw69LKk1luubRArPiXpTi2wOKWwTfZELbAQntDj6n/abXzZZ5HOJU5PRtb0kCtjWbiNlpmTg1hZIV5c3useiXPE2vp/lPemySjDfVssLvqaOVBdD8g4poPFKnbIdaYthKgLV/GDgYtz1vECbit7zpMeiXNOLIKlrL0rTwaLi9BjQ0R1XCDSOjBZ6VEZRJTed3hEQ9sKGXV8ZnrVs6jc3JQ6V1i0eV8NEdW5BpHW4clg/3GoWAhQl6LyaGBNE/1fLqtC54ouzyGXBiLtFDqxDtoCtHZgvWjvhZN9rGxKnCvwFrZHNUYAkdajxChqj2iLtAfX7IOy9TQaeMxC6ZR6PM1iXxoOgEjrgUifT2UQ9eklmYb2feDyLpdSvW4UeekARBo8oW0drh0tnrRFGksacoMh0gGINHhCW3g87aNp34tmVjqANiDSHUCpSvBEn0X6WSx7reNlOSvGAQydiZzrTiu2Nau3BYtxiUiDJ7STG3jb+1spnwEfs09YJFikPhkntcAr+Uy6zo6GSIMntF243ibDlXIZS7J+lQki7YMoyFP5u0U96LNBpMETmoPEquLQOXCWHqA7xpJjYCp/FpE/HJEGyIe2a7pPxS0ArJjJR9OLlQ1EGrygvR/tUbywpAHyEK3mW69u7LYg0uAFzv0CgAZzEedelMNEpAEAoA9MJQ1w0ZZzE5KZAABAyYyliM3Xvgl0wJIGAICCqSTlrnYNejdgSQMAQIlMDBIEaaB6/BNLGgAASiMm8ukiOGwri4NHSUyTfiLftL4MkQYvkN4SANpQZRbojXzfYyLM2UCkwQucIQaANjxkEOiNfM9d13MTIg19xeO5a+3c5HgfYGjcGu9BLyVSXLv++8kg0tBXtDOYaaAt0ngfYEjUC+8PRs+7lAWAu0yFRHeDJzSjIodgSQMMiYXBs9ZBYO8958HHkoa+4jEloLZIU1wDhkK96L5Sfta15Pd2XToUSxo8oS06U2fPR35ygNOYK7+3tcwP7mt7I9LgCe0B400UNe/HY71sACtmitfdikAXEXiJSIMntEXakyVdKecVJmgMhsJMeftqVtLJCEQaPNFnd7f2vSDSMBQ0x86ytFgORBq8oenGHTlyeSPSAKehOYbvSmsDRBq8ob3KvXHyfNp7aog0DAXNqO4cSUpUF+SINHhDW6Q1xfFUbpT31Dh6BUNB89jiJtNetOpRS0QavPEolqIWFw72prWteTcpCwGM0RS8XMetsKSh92iL0G2HL6wySMKASAMcT65UwareO0QaPKItQlcdWtPaqQy/UFgD4CQsC3NEtLe2EGlwyYPsH2nShTVdLwzeKl8TKxrgdKzz56vPM4g0eEX7qMSVQWrBQ2hb0ZsSj5AAOMLSozZXTlj0J4g0eGWhHEAWZJWb69z0wsC9hkADnIfVkcyJlbcOkQavPBtYoiMROusAknoieKd8za1RqT4Az2jHX1jEp4xlXjGpvIdIg2csrOlLOeZlJdS1QH82uO6CgDEYIBZJezQXu2OZT8yC0hBp8IyFNR0SodZ2fd8aCfQGKxoGzFr50S+Vto4m1gIdEGkogFuDQRoSodYIJqvkWh8UrrWLOVY0DBiLDHvXZwr1PIdAB0QaCsEq2KPeQ/oomYhO+Y6JDPQ/DBKWRL5w7AoGjlXA5LW404/Zo76R+eKj1R50k9c5vgTgTOqB9F4GhgUX4qZeyOr4Ub7zqZFKcCp7UFP5WK+iN44KhAB0xUrGgvrxJhnDX8VbdyfftUo8V1PxlE0N6lq3ApGGUliI5XpteL8jST6inYDkFLalFacHMOTOcDspiFhrGgFbWeCfvZDH3Q0lMTfan/bInHKUAP/D4qSHFVuxvFUW2Ig0lMSzdP6+C/WvJC4B+I7nDjIGnorqAhuRhtLou1Aj0AC7qcfF0vm7UR+/iDSUSBRq7wP2GGoX2S8INMBeZk7d3mbjF5GGUolC/akHLbiWZ+GoFcB+4rj3JNRby/GLSEPp1Ps/PxuUtszFJxngBIkBtGPlSKiXckTLbPwi0tAHYorPkqzqjSwuyCYGcDxdC/VWcjeoRXG/BCINfSFGf74JIdw7fqaNBJdURukOAYbCSsZR7tiUpRgFWfLpI9LQN2KKzyjWXvau1ok4ExwGoEPco/41w1hfivdr2shEaErMOOZhP6z0Pbkn5RWdlgtF+72W4pqNYj2WiNBZB5nENhJMctdx/9bsl57G6bPys+WaeLXvO9eY9DrHBRljD+JNu1FOIfolSRl8DCpj5Ydv375pXAegFGayEp4YFMXYJHm/H3KutgHgO2bJ55R828tkgd2pYYJIw9CZJEUzQvLvQ8RVdSzCwf4ygE/qMV1/YqGMXaTj2M9YDiH8F/cmbyXaV5JLAAAAAElFTkSuQmCC" alt="Logo Informa"/></div><span class="InformaBarTech-IconWrapper InformaBarTech-IconWrapper_closed"><svg viewBox="0 0 320 512" aria-hidden="true" focusable="false" role="img" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="currentColor" height="100%"><path fill="#ffffff" d="M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"></path></svg></span></div><p class="InformaBarTech-LogoInfoWrapper"><span class="InformaBarTech-LogoInfo">TechTarget and Informa Tech’s Digital Business Combine.</span><span class="InformaBarTech-LogoInfo InformaBarTech-LogoInfo_isMobile">TechTarget and Informa</span></p></div><div class="InformaBarTech-TopSection InformaBarTech-TopSection_hidden"><h2 class="InformaBarTech-TopSectionTitle">TechTarget and Informa Tech’s Digital Business Combine.</h2><p class="InformaBarTech-TopSectionDescription">Together, we power an unparalleled network of 220+ online properties covering 10,000+ granular topics, serving an audience of 50+ million professionals with original, objective content from trusted sources. We help you gain critical insights and make more informed decisions across your business priorities.</p></div></div></div></div><div class="Navigation-SecondaryMenuWrapper"><div class="FullScreenBackground Navigation-SecondaryMenuBackground"></div><div class="Navigation-SecondaryMenu"><nav data-testid="SecondaryMenu" class="SecondaryMenu"><a class="SecondaryMenu-Link" href="/documents" data-discover="true">Documents</a><a class="SecondaryMenu-Link" href="/resources?page=1&amp;types=Virtual+Event&amp;types=Webinar" data-discover="true">Online Events</a><a class="SecondaryMenu-Link" href="/advertise" data-discover="true">Advertise</a><a class="SecondaryMenu-Link" href="/about-us" data-discover="true">About</a></nav></div></div><div style="padding-top:0px"></div><div id="navigation-header" class="Navigation-NavBase"><div data-testid="navBase" class="NavBase"><div class="NavBase-Content"><div class="FullScreenBackground NavBase-SecondaryMenuBackground"></div><div class="NavBase-HeaderWrapper"><div class="NavBase-IconsWrapper"><button data-testid="navBase-megaMenuButton" class="NavBase-MegaMenuButton" aria-label="Open Mega menu"><span data-component="icon" data-name="Bars" class="NavBase-MegaMenuIcon NavBase-MegaMenuIcon_iconVariant_small NavBase-MegaMenuIcon_iconType_bars" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;15&#x27;%20viewBox=&#x27;0%200%2018%2015&#x27;%3e%3cpath%20id=&#x27;Hamburger&#x27;%20d=&#x27;M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z&#x27;%20transform=&#x27;translate(0%20-68)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;15&#x27;%20viewBox=&#x27;0%200%2018%2015&#x27;%3e%3cpath%20id=&#x27;Hamburger&#x27;%20d=&#x27;M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z&#x27;%20transform=&#x27;translate(0%20-68)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button><button data-testid="SearchButtonDesktop" class="NavBase-SearchButtonDesktop" aria-label="Open Search"><span data-component="icon" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_large NavBase-SearchIcon_iconType_search" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button><button data-testid="SearchButtonTablet" class="NavBase-SearchButtonTablet" aria-label="Open Search in MegaMenu"><span data-component="icon" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_small NavBase-SearchIcon_iconType_search" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div><div class="NavBase-LogoWrapper"><button data-testid="navBase-LogoMegaMenuButton" class="NavBase-LogoMegaMenuButton" aria-label="Open Mega menu"><span data-component="icon" data-name="Bars" class="NavBase-LogoMegaMenuIcon NavBase-LogoMegaMenuIcon_iconVariant_small NavBase-LogoMegaMenuIcon_iconType_bars" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;15&#x27;%20viewBox=&#x27;0%200%2018%2015&#x27;%3e%3cpath%20id=&#x27;Hamburger&#x27;%20d=&#x27;M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z&#x27;%20transform=&#x27;translate(0%20-68)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;15&#x27;%20viewBox=&#x27;0%200%2018%2015&#x27;%3e%3cpath%20id=&#x27;Hamburger&#x27;%20d=&#x27;M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z&#x27;%20transform=&#x27;translate(0%20-68)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button><a class="NavBase-Logo" href="/" data-discover="true"><img data-testid="logo-image" data-component="image" class="NavBase-LogoImage" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6a28f214e959257b/65dc5966d7e7df040ab9cb3f/Logo_-_IT_Pro_Today.svg?width=476&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6a28f214e959257b/65dc5966d7e7df040ab9cb3f/Logo_-_IT_Pro_Today.svg?width=476&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="ITPro Today Logo" title="ITPro Today Logo"/></a></div><div class="NavBase-RegisterWrapper"><div data-module="newsletter-signup-promo"><div class="NewsletterSignupPromo-Button NewsletterSignupPromo-Button_small NewsletterSignupButton"><a data-component="button" data-testid="headerSmallNewsletterButton" class="Button Button_size_small Button_variant_primaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-nav" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_itpb86&amp;ch=itpsitebtn" target="_blank"><span data-component="icon" data-name="Email" class="Button-Icon Button-Icon_position_left" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div><div class="NewsletterSignupPromo-Button NewsletterSignupPromo-Button_medium NewsletterSignupButton"><div data-component="social-share" class="SocialShare SocialShare_variant_layout Layout-SocialShare"><a target="_blank" rel="noreferrer" aria-label="Facebook" class="Layout-SocialLink" href="https://www.facebook.com/ITProToday/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_facebook" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" class="Layout-SocialLink" href="https://twitter.com/ITProToday"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_twitter" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Linkedin" class="Layout-SocialLink" href="https://www.linkedin.com/company/itpro-today/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_linkedin" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Youtube" class="Layout-SocialLink" href="https://www.youtube.com/channel/UCedUgT8R7qC3vsOSxXS5-ZA"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Youtube" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_youtube" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20576%20512&#x27;%3e%3cpath%20d=&#x27;M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20576%20512&#x27;%3e%3cpath%20d=&#x27;M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="GoogleNews" class="Layout-SocialLink" href="https://news.google.com/publications/CAAqKQgKIiNDQklTRkFnTWFoQUtEbWwwY0hKdmRHOWtZWGt1WTI5dEtBQVAB"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="GoogleNews" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_googleNews" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z&#x27;/%3e%3cpath%20d=&#x27;m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z&#x27;/%3e%3cpath%20d=&#x27;m179.256%20101.453-51.436-10.231-4.238%2021.306z&#x27;/%3e%3cpath%20d=&#x27;m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z&#x27;/%3e%3cpath%20d=&#x27;m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z&#x27;/%3e%3cpath%20d=&#x27;m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z&#x27;/%3e%3cpath%20d=&#x27;m179.256%20101.453-51.436-10.231-4.238%2021.306z&#x27;/%3e%3cpath%20d=&#x27;m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z&#x27;/%3e%3cpath%20d=&#x27;m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_self" rel="noreferrer" aria-label="RSS" class="Layout-SocialLink" href="https://www.itprotoday.com/rss.xml"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="RSS" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_rss" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;25&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2025%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-rss&#x27;%20data-name=&#x27;Icon%20awesome-rss&#x27;%20d=&#x27;M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z&#x27;%20transform=&#x27;translate(0%20-2.25)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;25&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2025%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-rss&#x27;%20data-name=&#x27;Icon%20awesome-rss&#x27;%20d=&#x27;M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z&#x27;%20transform=&#x27;translate(0%20-2.25)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div><a data-component="button" data-testid="headerMediumNewsletterButton" class="Button Button_size_medium Button_variant_primaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-nav" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_itpb86&amp;ch=itpsitebtn" target="_blank"><span data-component="icon" data-name="Email" class="Button-Icon Button-Icon_position_left" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div><button data-testid="RegisterSearchButton" class="NavBase-RegisterSearchButton" aria-label="Open Search in MegaMenu"><span data-component="icon" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_large NavBase-SearchIcon_iconType_search" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div><div class="NavBase-SearchWrapper"><div class="FullScreenBackground NavBase-SearchBackground"></div><button data-testid="SearchCloseButton" class="NavBase-SearchCloseButton" aria-label="Close Search"><span data-component="icon" data-name="Close" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_medium NavBase-SearchIcon_iconType_close" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18.001&#x27;%20viewBox=&#x27;0%200%2018%2018.001&#x27;%3e%3cpath%20id=&#x27;times&#x27;%20d=&#x27;M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z&#x27;%20transform=&#x27;translate(-0.008%20-95.998)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18.001&#x27;%20viewBox=&#x27;0%200%2018%2018.001&#x27;%3e%3cpath%20id=&#x27;times&#x27;%20d=&#x27;M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z&#x27;%20transform=&#x27;translate(-0.008%20-95.998)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div></div><div class="Navigation-MainMenu"><div data-testid="mainMenu"><div class="FullScreenBackground MainMenu-BackgroundSubmenu"></div><div class="FullScreenBackground MainMenu-BackgroundMenuItem"></div><div class="MainMenu-Content"><div class="MainMenu-MegaMenuButtonWrapper"><button data-testid="mainMenu-MegaMenuButton" aria-label="Open MegaMenu" class="MainMenu-MegaMenuButton"><span data-component="icon" data-name="Bars" class="MainMenu-MegaMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;15&#x27;%20viewBox=&#x27;0%200%2018%2015&#x27;%3e%3cpath%20id=&#x27;Hamburger&#x27;%20d=&#x27;M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z&#x27;%20transform=&#x27;translate(0%20-68)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;15&#x27;%20viewBox=&#x27;0%200%2018%2015&#x27;%3e%3cpath%20id=&#x27;Hamburger&#x27;%20d=&#x27;M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z&#x27;%20transform=&#x27;translate(0%20-68)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div><div class="MainMenu-ItemsWrapper" role="menu"><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Cloud"><span class="MainMenu-MainTitle">Cloud<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/cloud-services" data-discover="true">Cloud Services</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/hybrid-cloud" data-discover="true">Hybrid Cloud</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/private-cloud" data-discover="true">Private Cloud</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/public-cloud" data-discover="true">Public Cloud</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/cloud-computing" data-discover="true">Cloud</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/cloud-computing" data-discover="true"><span class="SubMenu-SeeMoreText">SEE ALL Cloud</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">cloud Kubernetes helm concept with the containers</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_cloudComputing ContentPreview-Category" href="/cloud-computing" data-discover="true">Cloud Computing</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/christopher-tozzi" data-discover="true">Christopher Tozzi</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 18, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>6 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">hybrid cloud spelled out above a tablet</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbbbd88e5773ffc6b/67ac97b77c6ab0666ea09ca5/hybrid-cloud-1716x965_-_2024-12-27.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbbbd88e5773ffc6b/67ac97b77c6ab0666ea09ca5/hybrid-cloud-1716x965_-_2024-12-27.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_hybridCloud ContentPreview-Category" href="/cloud-computing/hybrid-cloud" data-discover="true">Hybrid Cloud</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls" data-discover="true">How to Avoid Common Hybrid Cloud Pitfalls</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls" data-discover="true">How to Avoid Common Hybrid Cloud Pitfalls</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName Contributors-ContributorName_showComma" data-testid="contributor-name" href="/author/lisa-morgan" data-discover="true">Lisa Morgan<!-- -->, </a><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/informationweek" data-discover="true">InformationWeek</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 12, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of OS"><span class="MainMenu-MainTitle">OS<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/microsoft-windows" data-discover="true">Microsoft Windows</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/windows-server" data-discover="true">Windows Server</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/powershell" data-discover="true">PowerShell</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/linux-os" data-discover="true">Linux OS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/sql-server" data-discover="true">SQL Server</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/macos" data-discover="true">MacOS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/android-os" data-discover="true">Android OS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/chromeos" data-discover="true">ChromeOS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/ubuntu" data-discover="true">Ubuntu</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/red-hat-os" data-discover="true">Red Hat OS</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/operating-systems" data-discover="true">OS</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/operating-systems" data-discover="true"><span class="SubMenu-SeeMoreText">See All OS</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">a dry erase boards with doodles, powershell code snippet, powershell logo, and a hand drawing with a market</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt1ef028e07e495a1a/67b518be149b7e2c6c0df150/Your_paragraph_text_(1).png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt1ef028e07e495a1a/67b518be149b7e2c6c0df150/Your_paragraph_text_(1).png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_powerShell ContentPreview-Category" href="/operating-systems/powershell" data-discover="true">PowerShell</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf" data-discover="true">PowerShell GUI Tutorial: Building Whiteboard Apps With WPF</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf" data-discover="true">PowerShell GUI Tutorial: Building Whiteboard Apps With WPF</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/brien-posey" data-discover="true">Brien Posey</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 19, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>13 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/linux-os/beyond-the-basics-advanced-linux-hardening-techniques" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">a magnifying glass being help up to an open padlock icon that is set within rows of locked padlocks</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt55c34441e4c5f4cf/67ae572a2ba611390a866d2b/image-1716x965_-_2025-02-13T153328.829.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt55c34441e4c5f4cf/67ae572a2ba611390a866d2b/image-1716x965_-_2025-02-13T153328.829.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_linuxOs ContentPreview-Category" href="/operating-systems/linux-os" data-discover="true">Linux OS</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/linux-os/beyond-the-basics-advanced-linux-hardening-techniques" data-discover="true">Beyond the Basics: Advanced Linux Hardening Techniques</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/linux-os/beyond-the-basics-advanced-linux-hardening-techniques" data-discover="true">Beyond the Basics: Advanced Linux Hardening Techniques</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/grant-knoetze" data-discover="true">Grant Knoetze</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 14, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>7 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of IT Mgmt"><span class="MainMenu-MainTitle">IT Mgmt<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/it-operations" data-discover="true">IT Operations</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/devops" data-discover="true">DevOps</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/ops-and-more" data-discover="true">Ops and More</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/it-sustainability" data-discover="true">IT Sustainability</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/it-automation" data-discover="true">IT Automation</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/it-management" data-discover="true">IT Mgmt</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/it-management" data-discover="true"><span class="SubMenu-SeeMoreText">See All IT Mgmt</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">disaster recovery playbook on a desk near a keyboard</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_disasterRecovery ContentPreview-Category" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>5 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/it-sustainability/7-top-data-center-sustainability-strategies-for-2025" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">eco icons and data processing over computer servers</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt253192bcd42230d9/67b798981f1ef5d72674f1f5/image-1716x965_-_2025-02-20T160308.726.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt253192bcd42230d9/67b798981f1ef5d72674f1f5/image-1716x965_-_2025-02-20T160308.726.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_itSustainability ContentPreview-Category" href="/it-management/it-sustainability" data-discover="true">IT Sustainability</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/it-sustainability/7-top-data-center-sustainability-strategies-for-2025" data-discover="true">7 Top Data Center Sustainability Strategies for 2025</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/it-sustainability/7-top-data-center-sustainability-strategies-for-2025" data-discover="true">7 Top Data Center Sustainability Strategies for 2025</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName Contributors-ContributorName_showComma" data-testid="contributor-name" href="/author/christopher-tozzi" data-discover="true">Christopher Tozzi<!-- -->, </a><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/data-center-knowledge" data-discover="true">Data Center Knowledge</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 20, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Career"><span class="MainMenu-MainTitle">Career<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/career-management/career-tips" data-discover="true">Career Tips</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/career-management/certifications" data-discover="true">Certifications</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/career-management/training" data-discover="true">Training</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/career-management" data-discover="true">Career</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/career-management" data-discover="true"><span class="SubMenu-SeeMoreText">See All Career Mgmt</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">an unhappy employee is surrounded by smiley faces and the words &quot;Stay Positive&quot;</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_careerTips ContentPreview-Category" href="/career-management/career-tips" data-discover="true">Career Tips</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/danielle-meinert" data-discover="true">Danielle Meinert</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>2 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/software-development/process-standardization-is-stifling-my-creativity" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">an annoyed-looking software developer is covered by red tape and the words &quot;process compliance&quot;</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9559a8f9078d3a4e/67aa33c656339648630cc13d/Process_Compliance_(1).gif?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9559a8f9078d3a4e/67aa33c656339648630cc13d/Process_Compliance_(1).gif?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_softwareDevelopment ContentPreview-Category" href="/software-development" data-discover="true">Software Development</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/software-development/process-standardization-is-stifling-my-creativity" data-discover="true">Process Standardization Is Stifling My Creativity</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/software-development/process-standardization-is-stifling-my-creativity" data-discover="true">Process Standardization Is Stifling My Creativity</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/danielle-meinert" data-discover="true">Danielle Meinert</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 11, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>3 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Storage"><span class="MainMenu-MainTitle">Storage<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/cloud-storage" data-discover="true">Cloud Storage</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/high-speed-storage" data-discover="true">High Speed Storage</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/data-backup" data-discover="true">Data Backup</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/data-storage" data-discover="true">Storage</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/data-storage" data-discover="true"><span class="SubMenu-SeeMoreText">See All Data Storage</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">disaster recovery playbook on a desk near a keyboard</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_disasterRecovery ContentPreview-Category" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>5 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/linux-os/how-to-identify-and-remove-linux-malware-infections" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">the word malware on top of a digital background</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt88f81fb36d6cbe4a/67a4e82ca4ff164b53d978f6/image-1716x965_-_2025-02-06T113039.208.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt88f81fb36d6cbe4a/67a4e82ca4ff164b53d978f6/image-1716x965_-_2025-02-06T113039.208.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_linuxOs ContentPreview-Category" href="/operating-systems/linux-os" data-discover="true">Linux OS</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/linux-os/how-to-identify-and-remove-linux-malware-infections" data-discover="true">How To Identify and Remove Linux Malware Infections</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/linux-os/how-to-identify-and-remove-linux-malware-infections" data-discover="true">How To Identify and Remove Linux Malware Infections</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/grant-knoetze" data-discover="true">Grant Knoetze</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 7, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>6 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Security"><span class="MainMenu-MainTitle">Security<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/vulnerabilities-threats" data-discover="true">Vulnerabilities &amp; Threats</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/attacks-breaches" data-discover="true">Attacks &amp; Breaches</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/regulatory-compliance" data-discover="true">Regulatory Compliance</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/data-privacy" data-discover="true">Data Privacy</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/cloud-security" data-discover="true">Cloud Security</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/endpoint-security" data-discover="true">Endpoint Security</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/identity-management-access-control" data-discover="true">Identity Mgmt &amp; Access Control</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/it-security" data-discover="true">Security</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/it-security" data-discover="true"><span class="SubMenu-SeeMoreText">See All IT Security</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">robot and human fingers touching</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_aiMachineLearning ContentPreview-Category" href="/digital-transformation/ai-machine-learning" data-discover="true">AI &amp; Machine Learning</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 20, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>4 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">xerox logo on sign outside xerox square building </span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_vulnerabilitiesThreats ContentPreview-Category" href="/it-security/vulnerabilities-threats" data-discover="true">Vulnerabilities &amp; Threats</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/jai-vijayan" data-discover="true">Jai Vijayan</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 19, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Dev"><span class="MainMenu-MainTitle">Dev<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/cloud-native" data-discover="true">Cloud Native</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/programming-languages" data-discover="true">Programming Languages</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/no-code-low-code" data-discover="true">No-Code/Low-Code</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/software-development-techniques" data-discover="true">Software Development Techniques</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/software-development" data-discover="true">Dev</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/software-development" data-discover="true"><span class="SubMenu-SeeMoreText">See All Software Dev</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">an unhappy employee is surrounded by smiley faces and the words &quot;Stay Positive&quot;</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_careerTips ContentPreview-Category" href="/career-management/career-tips" data-discover="true">Career Tips</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/danielle-meinert" data-discover="true">Danielle Meinert</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>2 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">software developer writing code on a laptop</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blta837190fc0e7c602/67ade2fd64f859b14b05f5fd/software-developer-code-1716x965_-_2024-10-18.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blta837190fc0e7c602/67ade2fd64f859b14b05f5fd/software-developer-code-1716x965_-_2024-10-18.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_softwareDevelopmentTechniques ContentPreview-Category" href="/software-development/software-development-techniques" data-discover="true">Software Development Techniques</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets" data-discover="true">The Overlooked Art of Software Localization for Non-Traditional Markets</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets" data-discover="true">The Overlooked Art of Software Localization for Non-Traditional Markets</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 13, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>7 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of DX"><span class="MainMenu-MainTitle">DX<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/digital-transformation/ai-machine-learning" data-discover="true">AI &amp; Machine Learning</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/digital-transformation/edge-computing" data-discover="true">Edge Computing</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/digital-transformation/iot" data-discover="true">IoT</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/digital-transformation" data-discover="true">DX</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/digital-transformation" data-discover="true"><span class="SubMenu-SeeMoreText">See All Digital Transformation</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">robot and human fingers touching</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_aiMachineLearning ContentPreview-Category" href="/digital-transformation/ai-machine-learning" data-discover="true">AI &amp; Machine Learning</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 20, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>4 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">xerox logo on sign outside xerox square building </span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_vulnerabilitiesThreats ContentPreview-Category" href="/it-security/vulnerabilities-threats" data-discover="true">Vulnerabilities &amp; Threats</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/jai-vijayan" data-discover="true">Jai Vijayan</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 19, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Infrastructure"><span class="MainMenu-MainTitle">Infrastructure<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-infrastructure/high-performance-computing" data-discover="true">High Performance Computing</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-infrastructure/containerization" data-discover="true">Containerization</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-infrastructure/server-virtualization" data-discover="true">Server Virtualization</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/it-infrastructure" data-discover="true">Infrastructure</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/it-infrastructure" data-discover="true"><span class="SubMenu-SeeMoreText">See All Infrastructure</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">cloud Kubernetes helm concept with the containers</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_cloudComputing ContentPreview-Category" href="/cloud-computing" data-discover="true">Cloud Computing</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/christopher-tozzi" data-discover="true">Christopher Tozzi</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 18, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>6 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">computer CPU</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blte1ae920643569ab5/67a52cba2f8fd4865d38e4c5/silicon-1716x965_-_2025-02-06.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blte1ae920643569ab5/67a52cba2f8fd4865d38e4c5/silicon-1716x965_-_2025-02-06.jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_aiMachineLearning ContentPreview-Category" href="/digital-transformation/ai-machine-learning" data-discover="true">AI &amp; Machine Learning</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle" data-discover="true">How Silicon Diversity Optimizes Cost, Performance Across the AI Lifecycle</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle" data-discover="true">How Silicon Diversity Optimizes Cost, Performance Across the AI Lifecycle</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 7, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>4 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of More"><span class="MainMenu-MainTitle">More<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;%20transform=&#x27;translate(21)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" rel="nofollow" target="_self" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_itpb86&amp;ch=itpnav">Newsletters</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/latest-how-to" data-discover="true">How To…?</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/program/industry-perspectives" data-discover="true">Industry Perspectives</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources" data-discover="true">Business Resources</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources?types=Survey+Report&amp;page=1" data-discover="true">Reports/Research</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources?page=1&amp;types=Virtual+Event&amp;types=Webinar" data-discover="true">Online Events</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/events" data-discover="true">Live Events</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/videos" data-discover="true">Videos</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources?page=1&amp;types=White+Paper" data-discover="true">White Papers</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/advertise" data-discover="true">Advertise With Us</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/about-us" data-discover="true">About Us</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent SubMenu-MoreContent_noRecent" href="/resources" data-discover="true"><span class="SubMenu-SeeMoreText">Resource Library</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div></div></div></div></div></div></div><div class="MainMenu-SearchButtonWrapper"><button data-testid="mainMenu-SearchButton" aria-label="Open Search" class="MainMenu-SearchButton"><span data-component="icon" data-name="Search" class="MainMenu-SearchButtonIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;22&#x27;%20height=&#x27;21.789&#x27;%20viewBox=&#x27;0%200%2022%2021.789&#x27;%3e%3cg%20id=&#x27;search_icon&#x27;%20data-name=&#x27;search%20icon&#x27;%20transform=&#x27;translate(-1387%20-125)&#x27;%3e%3cpath%20id=&#x27;search_icon-2&#x27;%20data-name=&#x27;search%20icon&#x27;%20d=&#x27;M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z&#x27;%20transform=&#x27;translate(0%200)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div><div class="MainMenu-SearchWrapper"><div class="FullScreenBackground MainMenu-SearchBackground MainMenu-SearchBackground_withSearchBar"></div><button data-testid="mainMenu-SearchCloseButton" class="MainMenu-SearchCloseButton" aria-label="Close Search"><span data-component="icon" data-name="Close" class="MainMenu-SearchCloseIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18.001&#x27;%20viewBox=&#x27;0%200%2018%2018.001&#x27;%3e%3cpath%20id=&#x27;times&#x27;%20d=&#x27;M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z&#x27;%20transform=&#x27;translate(-0.008%20-95.998)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18.001&#x27;%20viewBox=&#x27;0%200%2018%2018.001&#x27;%3e%3cpath%20id=&#x27;times&#x27;%20d=&#x27;M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z&#x27;%20transform=&#x27;translate(-0.008%20-95.998)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div></div></div></nav><section class="Layout-Section"><div id="iiris-identity" data-testid="iris-identity"></div><div data-template="article"><div class="TwoColumnLayout"><div id="portal-root"></div><div class="TwoColumnLayout-Head"><div class="ArticleBase-Header"><ul class="ArticleBase-Topics" data-testid="article-topics"><li class="ArticleBase-Topic"><a data-component="keyword" class="Keyword Keyword_variant_category Keyword_title_powerShell" href="/operating-systems/powershell" data-discover="true">PowerShell</a></li><li class="ArticleBase-Topic"><a data-component="keyword" class="Keyword Keyword_variant_category Keyword_title_operatingSystems" href="/operating-systems" data-discover="true">Operating Systems</a></li></ul><div><h1 class="ArticleBase-HeaderTitle"><noscript><span class="ArticleBase-LargeTitle">ChatGPT Integration in PowerShell (Scripting Demo)</span></noscript><span class="ArticleBase-LargeTitle" data-testid="article-title">ChatGPT Integration in PowerShell (Scripting Demo)</span><span class="ArticleBase-DefaultTitle" data-testid="article-default-title">ChatGPT Integration in PowerShell (Scripting Demo)</span></h1><p class="ArticleBase-HeaderSummary" data-testid="article-summary">Watch this video to learn how to integrate ChatGPT capabilities into your PowerShell scripts.</p></div></div></div><div class="TwoColumnLayout-Content"><div class="TwoColumnLayout-Body"><div class="ArticleBase-Body" data-testid="article-base-body"><div class="ArticleBase-Contributors" data-testid="article-base-contributors"><div class="Contributors Contributors_variant_normal Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Brien Posey" href="/author/brien-posey" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbd2d61ed5b87072c/6613c9a9bce8e3a5a1d68782/Brien_Posey.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbd2d61ed5b87072c/6613c9a9bce8e3a5a1d68782/Brien_Posey.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="Picture of Brien Posey" title="Picture of Brien Posey"/></a></div><div class="Contributors-InfoWrapper"><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/brien-posey" data-discover="true">Brien Posey</a><p class="Contributors-Date" data-testid="contributors-date">September 28, 2023</p></div></div></div><div class="ArticleVideo-Media"><div data-component="media"><div class="Media Media_video"><iframe data-ot-ignore="true" loading="lazy" class="Media-Iframe" data-testid="media-iframe" src="https://www.youtube.com/embed/A23-kvaGXew" frameBorder="0" allow="autoplay;accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; " allowFullScreen="" aria-label="Play Audio Media" title=""></iframe></div></div></div><div class="SocialShare"><div data-component="social-share" class="SocialShare SocialShare_variant_button ArticleBase-SocialShare ArticleBase-SocialShare_first"><a target="_blank" rel="noreferrer" aria-label="Linkedin" href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_linkedin" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Facebook" href="http://www.facebook.com/sharer/sharer.php?u=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_facebook" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" href="http://www.twitter.com/intent/tweet?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_twitter" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Reddit" href="https://www.reddit.com/submit?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-&amp;title=ChatGPT%20Integration%20in%20PowerShell%20(Scripting%20Demo)"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Reddit" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_reddit" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Email" href="/cdn-cgi/l/email-protection#152a6660777f70766128567d7461524541355c7b6170726774617c7a7b357c7b35457a627067467d707979353d4676677c65617c7b72355170787a3c337478652e777a716c285c302725617d7a60727d61302725617d70302725737a79797a627c7b7230272573677a783027255c4145677a302725417a71746c302725787c727d613027257c7b6170677066613027256c7a603b302551302554302551302554302725567d74615245413027255c7b6170726774617c7a7b3027257c7b302725457a627067467d7079793027253d4676677c65617c7b723027255170787a3c3025513025547d616165663026543027533027536262623b7c6165677a617a71746c3b767a78302753657a627067667d707979302753767d7461726561387c7b6170726774617c7a7b387c7b38657a627067667d707979386676677c65617c7b72387170787a38"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Email" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_email" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div></div><div class="ArticleBase-BodyContent ArticleBase-BodyContent_Video" data-testid="article-base-body-content"><div data-module="content" class="ContentModule-Wrapper"><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">In this video tutorial, Brien Posey explains a PowerShell script that allows you to interact with ChatGPT. The functions and structure of the script make it easy to integrate ChatGPT capabilities into your own PowerShell scripts.</span></span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">The transcript below has been lightly edited for clarity and length.</span></span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Transcript:" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Transcript:</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Brien Posey: </span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Hello, greetings, and welcome. I&#x27;m Brien Posey. In this video, I want to show you how to use PowerShell to interact with ChatGPT.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, what I&#x27;ve done is found a script on GitHub that allows you to carry on a ChatGPT conversation from PowerShell. I took that script, and I broke it down to its most basic components. I want to show you what those components are. Knowing what those components are will make it much easier to </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" href="/powershell/how-to-build-chatgpt-enabled-powershell-scripts" data-discover="true">integrate ChatGPT capabilities into your own scripts</a></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Let&#x27;s go ahead and get started by looking at what my script does.</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;$Key = &quot;Get-Content C:ScriptsGPTKey.txt&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;$ApiEndpoint = &quot;https://api.openai.com/v1/chat/completions&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;$AiSystemMessage = &quot;You are a helpful assistant&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;[System.Collections.Generic.List[Hashtable]]$MessageHistory = @()&lt;/span&gt;&lt;/span&gt;</span></pre><pre data-component="code-block" class="CodeBlock"></pre><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;Function Initialize-MessageHistory ($message){&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $script:MessageHistory.Clear()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $script:MessageHistory.Add(@{&quot;role&quot; = &quot;system&quot;; &quot;content&quot; = $message}) | Out-Null&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;}&lt;/span&gt;&lt;/span&gt;</span></pre><pre data-component="code-block" class="CodeBlock"></pre><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;function Invoke-ChatGPT ($MessageHistory) {&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; # Set the request headers&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $headers = @{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;Content-Type&quot; = &quot;application/json&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;Authorization&quot; = &quot;Bearer $ApiKey&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; } &lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;# Form the Request&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $requestBody = @{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;model&quot; = &quot;gpt-3.5-turbo&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;messages&quot; = $MessageHistory&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;max_tokens&quot; = 1000 # Max amount of tokens the AI will respond with&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;temperature&quot; = 0.7 # Lower is more coherent and conservative, higher is more creative and diverse.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; }&lt;/span&gt;&lt;/span&gt;</span></pre><pre data-component="code-block" class="CodeBlock"></pre><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; # Send the request&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $response = Invoke-RestMethod -Method POST -Uri $ApiEndpoint -Headers $headers -Body (ConvertTo-Json $requestBody)&lt;/span&gt;&lt;/span&gt;</span></pre><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; # Return the message content&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; return $response.choices[0].message.content&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;}&lt;/span&gt;&lt;/span&gt;</span></pre><pre data-component="code-block" class="CodeBlock"></pre><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;#Main Body&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;Initialize-MessageHistory $AiSystemMessage&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $userMessage = Read-Host &quot;`Enter your query: &quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $MessageHistory.Add(@{&quot;role&quot;=&quot;user&quot;; &quot;content&quot;=$userMessage})&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $aiResponse = Invoke-ChatGPT $MessageHistory&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; Write-Host &quot;AI: $aiResponse&quot; -ForegroundColor Yellow&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $MessageHistory.Add(@{&quot;role&quot;=&quot;assistant&quot;; &quot;content&quot;=$aiResponse})&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">When I read the script, I&#x27;m prompted to enter my query. I&#x27;m just going to type, “Hello,” and press Enter. My query goes up to ChatGPT and then a response is returned. I&#x27;m then dropped back down to the PowerShell command prompt. That&#x27;s the entire thing. That&#x27;s what this script does.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Now that I&#x27;ve shown you what this does, let&#x27;s go ahead and look at the code behind the script.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">And as I mentioned, this is an adaptation of some code that I found on GitHub.</span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="First Block of Code" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">First Block of Code</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To use ChatGPT programmatically, you&#x27;re going to need an API key. The API key is something that you can get from ChatGPT. There is a small fee associated with using an API key.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The very first line of code simply reads my key from a text file:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">$Key = Get-Content C:ScriptsGPTKey.txt</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">I didn&#x27;t want to include the key in clear text within the script for obvious reasons.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, we&#x27;re reading the key, and we&#x27;re saving it to a variable called $Key.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The next thing that we have to do is define the ChatGPT endpoint. That&#x27;s simply the URI that&#x27;s used for sending queries up to ChatGPT. You can see that in the second line of code:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">$APIEndpoint = “https://api.openai.com/v1/chat/completions”</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Then the next thing that we have is a declaration of $AISystemMessage. You can see that on the third line:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">$AISystemMessage = “You are a helpful assistant”</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Right now, the system message is, “You are a helpful assistant.” Now, technically, we don&#x27;t need this line. But what we&#x27;re doing right here is we&#x27;re setting the ChatGPT personality. Later on, when I show you how we go about initializing ChatGPT, we&#x27;re going to want to have some kind of text in there. For the initialization process, what we&#x27;re using in this case, is, “You are a helpful assistant.” Now, you&#x27;ll notice the variable name – $AISystemMessage. We&#x27;re going to be using the variable $AISystemMessage throughout the script when we want to send something up to ChatGPT. So, anytime you see the variable $AISystemMessage, that&#x27;s what that is. It represents the query that the user has typed in, which is being sent to ChatGPT.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Then in the fourth line right here, we&#x27;re creating a hash table:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">[System.Collections.Generic.List[Hashtable]]$MessageHistory = @()</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">This hash table was called </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">Message History.</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> Now, the message history is essentially just a list of all the queries that we&#x27;ve sent up to ChatGPT and the responses that we&#x27;ve received from ChatGPT. In this particular case, the message history isn&#x27;t all that important, because we&#x27;re only sending a single query and we&#x27;re receiving a single response. However, because of the way that the ChatGPT API works, we have to send this message history hash table anytime that we query ChatGPT. So, that&#x27;s our basic initialization.</span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Initialize-MessageHistory Function" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Initialize-MessageHistory Function</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">From there, we have a couple of functions.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We have one function called Initialize-MessageHistory:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;Function Initialize-MessageHistory ($message){&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $script:MessageHistory.Clear()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $script:MessageHistory.Add(@{&quot;role&quot; = &quot;system&quot;; &quot;content&quot; = $message}) | Out-Null&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;}&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Then we have another function called Invoke-ChatGPT:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;function Invoke-ChatGPT ($MessageHistory) {&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; # Set the request headers&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $headers = @{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;Content-Type&quot; = &quot;application/json&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;Authorization&quot; = &quot;Bearer $ApiKey&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; } &lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">I&#x27;ll come back to these in just a moment.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">What I want to do for right now is skip down to the main body:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;Initialize-MessageHistory $AiSystemMessage&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $userMessage = Read-Host “`nYou”&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $MessageHistory.Add(@{“role”=”user”; “content”=$userMessage})&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $aiResponse = Invoke-ChatGPT $MessageHistory&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; Write-Host “AI: $aiResponse” -ForegroundColor Yellow&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; $MessageHistory.Add(@{“role”=”assistant”; “content”=$aiResponse})&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, the very first thing that we&#x27;re doing within the main body of our script is calling the Initialize-MessageHistory function that I pointed out just a second ago.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">You&#x27;ll notice that we&#x27;re passing a parameter up to that function, and that parameter is $AISystemMessage. Remember what I said about this variable earlier: $AISystemMessage represents anything that the user has typed in that&#x27;s being sent up to ChatGPT. Well, the user hasn&#x27;t typed in anything yet, but we pre-populated this variable earlier, during the initialization portion of the script, with the phrase, “You are a helpful assistant.”</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, we&#x27;re taking the text, “You are a helpful assistant,” and we&#x27;re sending that to the Initialized-MessageHistory function.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Let&#x27;s take a look at that function. You can see that it receives a parameter called $message. The $message is the $AISystemMessage variable. So, what are we doing here? Well, the very first line within that function goes ahead and clears out the hash table. That way, if you run the script more than once and there&#x27;s already something in that hash table, this will go ahead and clear it just to prevent any confusion.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The next thing we have is a line that populates the message history:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">$script:MessageHistory.Add(@{“role” = “system”; “content” = $message}) | Out-Null</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">What we&#x27;re doing is we&#x27;re using “role” to define who it was that put a message in the message history. The role was either going to be “system” if it was something that was generated on this end, or it was going to be AI if it was something that was generated by ChatGPT. Then we have “content.” The content is whatever query or response is going into the message history in this case. Because we&#x27;re initializing ChatGPT, the content is going to be that initial message, “You are a helpful assistant.” So, that&#x27;s what&#x27;s going to be contained in the $message variable. Then we have Out-Null, and that just suppresses any output.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, we&#x27;ve called the function. We&#x27;ve initialized ChatGPT by clearing out our message history and then adding the message, “You are a helpful assistant,” to the message history hash table.</span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Main Body" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Main Body</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Then we drop back down to our main body. The next line of code is:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">$userMessage = Read-Host “Enter your query”: “</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, this is the prompt that you saw earlier that displays the message, “Enter your query,” on the screen. Whatever the user types in goes to a variable called $userMessage.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Then we have the next line:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">$MessageHistory.Add(@{“role” = “user”; “content” = $userMessage})</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Once again, we&#x27;re adding something to the message history. Anytime that we add to the message history, we have to specify the role and we have to specify the content. So, the role in this case is “user,” indicating that this is something that was typed in by the end user. The “content” is going to be whatever is stored in that $userMessage variable that we defined on the previous line of code. So, we&#x27;re adding the message that was typed into the message history.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The next thing that happens is, we&#x27;re defining a variable $aiResponse:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;color:black&quot;&gt;$aiResponse = Invoke-ChatGPT $MessageHistory&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Now, remember what I said earlier: Anytime that we send something up to ChatGPT, we have to include the entire message history. So, what we&#x27;re doing right here is we&#x27;re calling a function called Invoke-ChatGPT and passing the entire message history up to that function.</span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Invoke-ChatGPT Function" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Invoke-ChatGPT Function</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">If we look back at the Invoke-ChatGPT function, this function is designed to receive the message history. So, what are we really doing within this function? Well, there&#x27;s a couple of things going on here.</span></p><h3 class="ContentText ContentText_variant_h3 ContentText_align_left" data-testid="content-text" id="Form a header" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Form a header</span></h3><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The first thing that we have to do is we have to form a header. You can see that we&#x27;ve declared a variable called $header:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;$headers = @{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;Content-Type&quot; = &quot;application/json&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;Authorization&quot; = &quot;Bearer $ApiKey&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; } &lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">This is also going to be a hash table. We&#x27;re defining “Content-Type,” and then we have to define the “Authorization.” And we&#x27;re using key-based authorization.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Remember, in the very first line of code in the script, we set up a variable called $Key and set that equal to our API key that we read in from a text file:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">$Key = Get-Content C:ScriptsGPTKey.txt</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">That&#x27;s where this $Key variable comes into play.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, we formed our header.</span></p><h3 class="ContentText ContentText_variant_h3 ContentText_align_left" data-testid="content-text" id="Form the request" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Form the request</span></h3><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The next thing that this function has to do is to form the request. So, what we&#x27;re doing is we&#x27;re setting up a variable called $requestBody. And once again, this is going to be a hash table.</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;$requestBody = @{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;model&quot; = &quot;gpt-3.5-turbo&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;messages&quot; = $MessageHistory&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;max_tokens&quot; = 1000 # Max amount of tokens the AI will respond with&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; &quot;temperature&quot; = 0.7 # Lower is more coherent and conservative, higher is more creative and diverse.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt; }&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Then we&#x27;re defining a few things. First, “model.” The model is going to be the AI model that gets used to process the request. In this case, we&#x27;re using GPT-3.5-turbo.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The next thing that we have to include in the request body is the message. The message is going to be contained in that $MessageHistory variable that I talked about a moment ago.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Next, we have something called “max_tokens.” Now, the “max_tokens” indicates the maximum length of the response that ChatGPT can give you.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The reason why this “max_tokens” is important is because, as I mentioned, there is a small charge associated with using ChatGPT programmatically. You&#x27;re charged based on the length of the response. So, you don&#x27;t want to have a response that&#x27;s lengthier than what you need, because it will cost you more money. That&#x27;s where “max_tokens” comes into play.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">And then we have “temperature.” Temperature essentially sets the tone of the response. By default, the temperature is set to 0.7, but if you reduce this number, then the response is going to be more businesslike, more no-nonsense, whereas a higher value tends to be a bit more creative, perhaps in some instances even a little bit humorous.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, at this point, we&#x27;ve set the request header, and we formed the request.</span></p><h3 class="ContentText ContentText_variant_h3 ContentText_align_left" data-testid="content-text" id="Send the request" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Send the request</span></h3><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">From there, what we have to do is send all of this up to ChatGPT. You can see that we&#x27;re creating a variable called $response:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;$response = Invoke-RestMethod -Method POST -Uri $ApiEndpoint -Headers $headers -Body (ConvertTo-Json $requestBody)&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">All this information within the request body started in the form of a hash table. But we&#x27;re converting that to JSON format and then passing that up to ChatGPT.</span></p><h3 class="ContentText ContentText_variant_h3 ContentText_align_left" data-testid="content-text" id="Return the message content" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Return the message content</span></h3><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, then we&#x27;ve got a return statement, followed by $response.choices:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;return $response.choices[0].message.content&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">ChatGPT will sometimes generate multiple responses. So, this number zero simply indicates that we want the first response. And then we have .message.content so we&#x27;re returning the response that was generated by ChatGPT. And then our function ends.</span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Remaining Lines of Main Body" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Remaining Lines of Main Body</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So then if we drop back down to our main body, you can see that the next line of code is this:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;Write-Host “AI: $aiResponse” -ForegroundColor Yellow&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We just set the foreground color to yellow. That&#x27;s not something that you have to do. But sometimes it can make it a little bit easier to tell which part of the conversation was generated by ChatGPT versus user input.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, we&#x27;re simply displaying the $aiResponse variable. That&#x27;s the response from ChatGPT.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">And then the very last line of code is adding that response to the message history:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">&lt;span style=&quot;background-color:white&quot;&gt;&lt;span style=&quot;color:black&quot;&gt;$MessageHistory.Add(@{“role”=”assistant”; “content”=$aiResponse})&lt;/span&gt;&lt;/span&gt;</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Again, we don&#x27;t have to worry about that so much in this case, because we&#x27;re only going to have a single query and a single response. But if you created a script where there were going to be multiple queries and multiple responses, then you would absolutely want to add the responses to the message history.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">So, that&#x27;s just a really quick overview of how you can use PowerShell to interact with ChatGPT.</span></p></div></div><div class="SocialShare"><div data-component="social-share" class="SocialShare SocialShare_variant_button ArticleBase-SocialShare ArticleBase-SocialShare_second"><a target="_blank" rel="noreferrer" aria-label="Linkedin" href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_linkedin" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Facebook" href="http://www.facebook.com/sharer/sharer.php?u=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_facebook" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" href="http://www.twitter.com/intent/tweet?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_twitter" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Reddit" href="https://www.reddit.com/submit?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-&amp;title=ChatGPT%20Integration%20in%20PowerShell%20(Scripting%20Demo)"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Reddit" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_reddit" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Email" href="/cdn-cgi/l/email-protection#7b44080e19111e180f4638131a0f3c2b2f5b32150f1e1c091a0f1214155b12155b2b140c1e0928131e17175b53281809120b0f12151c5b3f1e1614525d1a160b4019141f0246325e494b0f13140e1c130f5e494b0f131e5e494b1d141717140c12151c5e494b1d0914165e494b322f2b09145e494b2f141f1a025e494b16121c130f5e494b12150f1e091e080f5e494b02140e555e4b3f5e4b3a5e4b3f5e4b3a5e494b38131a0f3c2b2f5e494b32150f1e1c091a0f1214155e494b12155e494b2b140c1e0928131e17175e494b53281809120b0f12151c5e494b3f1e1614525e4b3f5e4b3a130f0f0b085e483a5e493d5e493d0c0c0c55120f0b09140f141f1a02551814165e493d0b140c1e0908131e17175e493d18131a0f1c0b0f5612150f1e1c091a0f121415561215560b140c1e0908131e171756081809120b0f12151c561f1e161456"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Email" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_email" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;33.333&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2033.333%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-envelope&#x27;%20data-name=&#x27;Icon%20awesome-envelope&#x27;%20d=&#x27;M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z&#x27;%20transform=&#x27;translate(0%20-4.5)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div></div><div class="ArticleBase-ContributorsWrapper"><h2 class="ArticleBase-ContributorsTitle">About the Author</h2><div class="ArticleBase-ContributorsSummary"><div data-component="contributor-summary" class="ContributorSummary ContributorSummary_variant_author"><div class="ContributorSummary-ImageWrapper ContributorSummary-ImageWrapper_variant_author"><a data-testid="contributor-summary-img-link" href="/author/brien-posey" data-discover="true"><img data-component="image" class="ContributorSummary-Image ContributorSummary-Image_variant_author" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbd2d61ed5b87072c/6613c9a9bce8e3a5a1d68782/Brien_Posey.jpg?width=400&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbd2d61ed5b87072c/6613c9a9bce8e3a5a1d68782/Brien_Posey.jpg?width=400&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="Brien Posey" title="Brien Posey"/></a></div><div class="ContributorSummary-InfoWrapper ContributorSummary-InfoWrapper_variant_author"><div class="ContributorSummary-TitleWrapper"><a data-testid="contributor-summary-title-link" href="/author/brien-posey" data-discover="true"><p class="ContributorSummary-Title ContributorSummary-Title_variant_author" data-testid="contributor-summary-title">Brien Posey</p></a></div><div class="ContributorSummary-SubTitleWrapper ContributorSummary-SubTitleWrapper_variant_author"><p class="ContributorSummary-SubTitle ContributorSummary-SubTitle_variant_author" data-testid="contributor-summary-subtitle"></p></div><div class="ContributorSummary-ContentWrapper ContributorSummary-ContentWrapper_variant_author"><div class="ContributorSummary-Content ContributorSummary-Content_variant_author" data-testid="contributor-summary-content"><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">Brien Posey is a bestselling technology author, a speaker, and a 20X Microsoft MVP. In addition to his ongoing work in IT, Posey has spent the last several years training as a commercial astronaut candidate in preparation to fly on a mission to study polar mesospheric clouds from space.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" target="_blank" href="https://brienposey.com/">https://brienposey.com/</a></span></p></div></div></div><div class="ContributorSummary-SeeMore"><a data-component="button" class="Button Button_size_medium Button_variant_textLink" rel="" href="/author/brien-posey" data-discover="true"><span class="Button-ContentWrapper"><span class="ContributorSummary-SeeMoreText"><span>See more from <!-- -->Brien Posey</span><span data-component="icon" data-name="ChevronRight" class="ContributorSummary-SeeMoreIcon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></span></a></div></div></div></div><div data-module="newsletter-signup-promo"><div class="SubscribeBannerTopicPage SubscribeBannerTopicPage_mode_dark SubscribeBannerTopicPage_variant_vertical ArticleBase-Newsletter"><div class="SubscribeBannerTopicPage-Content"><div class="SubscribeBannerTopicPage-Title" data-testid="subscribeBannerTopicPage_title">Sign up for the ITPro Today newsletter</div><div class="SubscribeBannerTopicPage-Message" data-testid="subscribeBannerTopicPage_message">Stay on top of the IT universe with commentary, news analysis, how-to&#x27;s, and tips delivered to your inbox daily.</div><div class="SubscribeBannerTopicPage-Button" data-testid="subscribe-banner-topic-page-button"><a data-component="button" data-testid="bannerTopicPageNewsletterButton" class="Button Button_size_medium Button_variant_secondaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-banner" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_itpb86&amp;ch=itpsitebtn" target="_blank"><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div></div></div><p class="IirisRecommendation-Title">You May Also Like</p><hr class="IirisRecommendation-TitleHr"/><div bordercolor="#e6e6e6" borderRadius="4" brand_family="enterpriseit" cardwidth="210px" class="iris-recommend iris-recommend-non-sticky" columns="2" data-component="iris-recommendation" division="it" dropShadow="#FFEB00" entity="content" entitytagbackground="#333333BF" entitytagbordercolor="#333333" entitytagfont="#ffffff" id="widget-1717150909887" imageHeight="182" imagePosition="vertical" imageWidth="324" recipe="related-items" redirectmode="same" rows="2" showborder="yes" showby="" showentitytag="yes" showtime="" title="" widgetType="grid" brand="itprotoday" itemUrl="http://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-" style="max-width:1100px"></div><div><div class="ArticleBase-AdSponsored"></div></div></div></div><div class="TwoColumnLayout-Sidebar"><div class="Sidebar" data-module="sidebar"><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_default"><div class="ContentCards-Header ContentCards-Header_default" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Editor's Choice</h3></div><div class="ContentCards-Content ContentCards-Content_default"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">jobs key on keyboard</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blted009d53042b6a96/673dc873f59c3326ad835a0e/jobs-key-1716x965_-_2024-08-21.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blted009d53042b6a96/673dc873f59c3326ad835a0e/jobs-key-1716x965_-_2024-08-21.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_careerManagement HorizontalCard-Keyword" href="/career-management" data-discover="true">Career Management</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce" data-discover="true">IT Jobs Outlook 2025: Evolving Skills, AI, Workplace Flexibility Will Shape IT Workforce</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce" data-discover="true">IT Jobs Outlook 2025: Evolving Skills, AI, Workplace Flexibility Will Shape IT Workforce</a></div><p class="HorizontalCard-Date" data-testid="horizontalCardDate">Nov 20, 2024</p></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">an it pro is disappointed as a poster for sustainability is switched with one for financial results and garbage piles up next to a recycling bin</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt8e3cff5562b9ae01/67462526b7779a7c7bca6346/green_IT_sustainability_hero.gif?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt8e3cff5562b9ae01/67462526b7779a7c7bca6346/green_IT_sustainability_hero.gif?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_greenIt HorizontalCard-Keyword" href="/it-management/it-sustainability/green-it" data-discover="true">Green IT</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-" data-discover="true">How Do I Advocate for Green IT Without Being Dismissed as a Lorax?</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-" data-discover="true">How Do I Advocate for Green IT Without Being Dismissed as a Lorax?</a></div><p class="HorizontalCard-Date" data-testid="horizontalCardDate">Nov 27, 2024</p></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">person using a laptop with the Ubuntu logo on its scree</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt169bb0721a0b9a6d/67401d99c70a870d4f57da8d/Ubuntu-1716x965_-_2024-11-22.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt169bb0721a0b9a6d/67401d99c70a870d4f57da8d/Ubuntu-1716x965_-_2024-11-22.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_itOperations HorizontalCard-Keyword" href="/it-management/it-operations" data-discover="true">IT Operations</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu" data-discover="true">3 Simple Ways to Install and Run a Virtual Machine on Ubuntu</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu" data-discover="true">3 Simple Ways to Install and Run a Virtual Machine on Ubuntu</a></div><p class="HorizontalCard-Date" data-testid="horizontalCardDate">Nov 22, 2024</p></div></div></div></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-component="content-list" class="ContentList"><div class="ContentList-Header"><span data-component="icon" data-name="Document" class="ContentList-Icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;10.5&#x27;%20height=&#x27;14&#x27;%20viewBox=&#x27;0%200%2010.5%2014&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-file-alt&#x27;%20data-name=&#x27;Icon%20awesome-file-alt&#x27;%20d=&#x27;M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;10.5&#x27;%20height=&#x27;14&#x27;%20viewBox=&#x27;0%200%2010.5%2014&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-file-alt&#x27;%20data-name=&#x27;Icon%20awesome-file-alt&#x27;%20d=&#x27;M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><span class="ContentList-Title" data-testid="content-list-title">Exclusive ITPro Resources</span></div><ul class="ContentList-List"><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/devops/itpro-today-s-2024-state-of-devops-report" target="" data-discover="true"><p class="ContentList-ListItemTitle">ITPro Today’s 2024 State of DevOps Report</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Dec 16, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>2 Min<!-- --> <!-- -->Read</span></div></div></span></li><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" target="" data-discover="true"><p class="ContentList-ListItemTitle">BCDR Basics: A Quick Reference Guide for Business Continuity &amp; Disaster Recovery</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Oct 10, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></span></li><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/career-management/itpro-today-s-2024-it-priorities-report" target="" data-discover="true"><p class="ContentList-ListItemTitle">ITPro Today’s 2024 IT Priorities Report</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Sep 25, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></span></li><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/career-management/tech-careers-quick-reference-guide-to-it-job-titles" target="" data-discover="true"><p class="ContentList-ListItemTitle">Tech Careers: Quick Reference Guide to IT Job Titles</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Sep 13, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></span></li></ul><div class="ContentList-CTAButton"><span data-component="button" role="presentation" class="Button Button_size_medium Button_variant_textLink"><span class="Button-ContentWrapper"><a class="ContentList-CTAText" rel="noreferrer" href="/documents" target="_blank" data-discover="true">See all ITPro Resources</a></span><span data-component="icon" data-name="ChevronRight" class="Button-Icon Button-Icon_position_right" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-chevron-right&#x27;%20data-name=&#x27;Icon%20awesome-chevron-right&#x27;%20d=&#x27;M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_default"><div class="ContentCards-Header ContentCards-Header_default" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Featured Technical Explainers</h3></div><div class="ContentCards-Content ContentCards-Content_default"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">AI chip</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfec5fcbd31c7f2a6/673b100cd675084d0707e288/AI-chip-1716x965_-_2024-11-18.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfec5fcbd31c7f2a6/673b100cd675084d0707e288/AI-chip-1716x965_-_2024-11-18.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_cloudComputing HorizontalCard-Keyword" href="/cloud-computing" data-discover="true">Cloud Computing</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads" data-discover="true">Cloud vs. On-Prem AI Accelerators: Choosing the Best Fit for Your AI Workloads</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads" data-discover="true">Cloud vs. On-Prem AI Accelerators: Choosing the Best Fit for Your AI Workloads</a></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">SaaS concept on a tablet</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd277e0c4548d3c42/673278ac8d8bc463268a48b4/SaaS-1716x965_-_2024-11-11.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd277e0c4548d3c42/673278ac8d8bc463268a48b4/SaaS-1716x965_-_2024-11-11.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_cloudComputing HorizontalCard-Keyword" href="/cloud-computing" data-discover="true">Cloud Computing</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees" data-discover="true">Why SaaS Backup Matters: Protecting Data Beyond Vendor Guarantees</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees" data-discover="true">Why SaaS Backup Matters: Protecting Data Beyond Vendor Guarantees</a></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/devops/devops-key-to-faster-more-efficient-government-software-development" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">DevOps logo on top of code</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltdf272a7a39b366c2/672b48253c936766d5282090/DevOps-code-1716x965_-_2024-09-06.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltdf272a7a39b366c2/672b48253c936766d5282090/DevOps-code-1716x965_-_2024-09-06.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_devOps HorizontalCard-Keyword" href="/it-management/devops" data-discover="true">DevOps</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/devops/devops-key-to-faster-more-efficient-government-software-development" data-discover="true">DevOps: Key to Faster, More Efficient Government Software Development</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/devops/devops-key-to-faster-more-efficient-government-software-development" data-discover="true">DevOps: Key to Faster, More Efficient Government Software Development</a></div></div></div></div></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="newsletter-signup-promo"><div class="SubscribeBanner SubscribeBanner_mode_dark SubscribeBanner_variant_vertical"><div class="SubscribeBanner-Wrapper"><div class="SubscribeBanner-Title" data-testid="subscribeBanner_title">Sign up for the ITPro Today newsletter</div><div class="SubscribeBanner-Message" data-testid="subscribeBanner_message">Stay on top of the IT universe with commentary, news analysis, how-to&#x27;s, and tips delivered to your inbox daily.</div><div class="SubscribeBanner-Button"><a data-component="button" data-testid="bannerNewsletterbutton" class="Button Button_size_medium Button_variant_secondaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-banner" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_itpb86&amp;ch=itpsitebtn" target="_blank"><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_column"><div class="ContentCards-Header ContentCards-Header_column" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Recent What Is</h3></div><div class="ContentCards-Content ContentCards-Content_column"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">cartoon shows a person next to a checklist and several icons that represent disaster scenarios</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd6267f0056e427cb/6707f1e94c215e0bdbe8db2f/image-1795x965_(2).jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd6267f0056e427cb/6707f1e94c215e0bdbe8db2f/image-1795x965_(2).jpg?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_disasterRecovery ContentPreview-Category" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a><a class="ContentPreview-IconWrapper" title="Link to all document" data-testid="content-preview-icon-link" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true"><span data-component="icon" data-name="Document" class="ContentPreview-Icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;10.5&#x27;%20height=&#x27;14&#x27;%20viewBox=&#x27;0%200%2010.5%2014&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-file-alt&#x27;%20data-name=&#x27;Icon%20awesome-file-alt&#x27;%20d=&#x27;M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;10.5&#x27;%20height=&#x27;14&#x27;%20viewBox=&#x27;0%200%2010.5%2014&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-file-alt&#x27;%20data-name=&#x27;Icon%20awesome-file-alt&#x27;%20d=&#x27;M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true">BCDR Basics: A Quick Reference Guide for Business Continuity &amp; Disaster Recovery</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true">BCDR Basics: A Quick Reference Guide for IT Pros</a></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/powershell/introduction-to-powershell-environment-variables" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">technology interface with a person&#x27;s hand drawing gears and cogs</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfffa964ee37aaf1e/66f6ee6fe8a6b02af4dab7fe/powershell_environment_variables_chart.png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfffa964ee37aaf1e/66f6ee6fe8a6b02af4dab7fe/powershell_environment_variables_chart.png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_powerShell ContentPreview-Category" href="/operating-systems/powershell" data-discover="true">PowerShell</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/powershell/introduction-to-powershell-environment-variables" data-discover="true">Introduction To PowerShell Environment Variables</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/powershell/introduction-to-powershell-environment-variables" data-discover="true">Introduction To PowerShell Environment Variables</a></div></div></div></div></div></div></div></div></div></div></div></div></div></div></section><footer data-module="footer" class="Footer"><div class="Footer-Background"></div><div data-testid="logo" class="Footer-LogoContainer Footer-LogoContainer_length_2"><a href="/" data-discover="true"><img title="ITPro Today Logo" data-component="image" class="Footer-LogoImage Footer-LogoImage_length_2" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6988047454ea0f07/65def58180429104075f67f7/Logo_-_IT_Pro_Today@2x.png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6988047454ea0f07/65def58180429104075f67f7/Logo_-_IT_Pro_Today@2x.png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="ITPro Today Logo"/></a></div><div data-testid="LinkSection" class="LinkSection LinkSection_length_2"><h5 class="LinkSection-Title" data-testid="link-section-title">Discover More</h5><div class="LinkSection-LinksWrapper"><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.datacenterknowledge.com/">Data Center Knowledge</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.informationweek.com/">InformationWeek</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.networkcomputing.com/">Network Computing</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.nojitter.com/">No Jitter</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://afcom.com/">AFCOM</a></div></div><div data-testid="LinkSection" class="LinkSection LinkSection_length_2"><h5 class="LinkSection-Title" data-testid="link-section-title">Working With Us</h5><div class="LinkSection-LinksWrapper"><a class="LinkSection-Link" rel="noreferrer" href="/about-us" target="_blank" data-discover="true">About Us</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://info.wrightsmedia.com/informa-licensing-reprints-request">Reprints</a><a class="LinkSection-Link" rel="noreferrer" href="/advertise" target="_blank" data-discover="true">Advertise</a><a class="LinkSection-Link" rel="noreferrer" href="/contact-us" target="_blank" data-discover="true">Contact Us</a></div></div><div data-testid="registration" class="Footer-RegistrationWrapper"><div class="RegistrationSection RegistrationSection_linkSectionLength_2"><h5 class="RegistrationSection-Title">Join Us</h5><div class="Layout-Register Layout-Register_variant_footer"></div><div class="Layout-NewsLetter Layout-NewsLetter_variant_footer"><div data-module="newsletter-signup-promo"><a data-component="button" data-testid="footerNewsletterButton" class="Button Button_size_medium Button_variant_primaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-footer" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_itpb86&amp;ch=itpsitebtn" target="_blank"><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div></div></div><div data-testid="social" class="SocialSection SocialSection_linkSectionLength_2"><h5 class="SocialSection-Title">Follow Us</h5><div data-component="social-share" class="SocialShare SocialShare_variant_layout"><a target="_blank" rel="noreferrer" aria-label="Facebook" href="https://www.facebook.com/ITProToday/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_facebook" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20320%20512&#x27;%3e%3cpath%20d=&#x27;M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" href="https://twitter.com/ITProToday"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_twitter" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20viewBox=&#x27;0%200%20512%20512&#x27;%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d=&#x27;M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Linkedin" href="https://www.linkedin.com/company/itpro-today/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_linkedin" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20448%20512&#x27;%3e%3cpath%20d=&#x27;M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Youtube" href="https://www.youtube.com/channel/UCedUgT8R7qC3vsOSxXS5-ZA"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Youtube" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_youtube" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20576%20512&#x27;%3e%3cpath%20d=&#x27;M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20viewBox=&#x27;0%200%20576%20512&#x27;%3e%3cpath%20d=&#x27;M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="GoogleNews" href="https://news.google.com/publications/CAAqKQgKIiNDQklTRkFnTWFoQUtEbWwwY0hKdmRHOWtZWGt1WTI5dEtBQVAB"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="GoogleNews" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_googleNews" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z&#x27;/%3e%3cpath%20d=&#x27;m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z&#x27;/%3e%3cpath%20d=&#x27;m179.256%20101.453-51.436-10.231-4.238%2021.306z&#x27;/%3e%3cpath%20d=&#x27;m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z&#x27;/%3e%3cpath%20d=&#x27;m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z&#x27;/%3e%3cpath%20d=&#x27;m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z&#x27;/%3e%3cpath%20d=&#x27;m179.256%20101.453-51.436-10.231-4.238%2021.306z&#x27;/%3e%3cpath%20d=&#x27;m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z&#x27;/%3e%3cpath%20d=&#x27;m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_self" rel="noreferrer" aria-label="RSS" href="https://www.itprotoday.com/rss.xml"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="RSS" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_rss" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;25&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2025%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-rss&#x27;%20data-name=&#x27;Icon%20awesome-rss&#x27;%20d=&#x27;M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z&#x27;%20transform=&#x27;translate(0%20-2.25)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;25&#x27;%20height=&#x27;25&#x27;%20viewBox=&#x27;0%200%2025%2025&#x27;%3e%3cpath%20id=&#x27;Icon_awesome-rss&#x27;%20data-name=&#x27;Icon%20awesome-rss&#x27;%20d=&#x27;M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z&#x27;%20transform=&#x27;translate(0%20-2.25)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div></div><div class="CopyrightsSection"><div class="CopyrightsSection-Background"></div><div data-testid="copyrights" class="CopyrightsSection-Wrapper"><a data-testid="businessUnit" class="CopyrightsSection-BusinessLink" target="_blank" href="https://www.informa.com/"><img title="Informa" data-component="image" class="CopyrightsSection-BusinessImage" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbaa492998ab75f/674ef556a2308a7b8e6c5d5f/Informa_Logo_OneLine_Graduated_White_RGB.png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbaa492998ab75f/674ef556a2308a7b8e6c5d5f/Informa_Logo_OneLine_Graduated_White_RGB.png?width=700&amp;auto=webp&amp;quality=80&amp;disable=upscale" loading="lazy" alt="Informa"/></a><div class="CopyrightsSection-TextWrapper"><p data-testid="copyrightText" class="CopyrightsSection-Text"><span class="CopyrightsSection-TextBlock"></span>Copyright © 2025. This website is owned and operated by Informa TechTarget, part of a global network that informs, influences and connects the world’s technology buyers and sellers. All copyright resides with them. Informa PLC’s registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. TechTarget, Inc.’s registered office is 275 Grove St. Newton, MA 02466.</p><div data-testid="copyrightLinks" class="CopyrightsSection-LinksWrapper CopyrightsSection-LinksWrapper_hasLinks"><a class="CopyrightsSection-Link" target="_blank" href="https://www.techtarget.com/">Home<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://privacyportal-eu-cdn.onetrust.com/dsarwebform/c1f53e84-9f05-4169-a854-85052b63c50b/5f26b553-52cc-4973-a761-295d5634a6b6.html">CCPA: Do not sell my personal info<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" href="/cookie-policy" target="_blank" data-discover="true">Cookies<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://www.techtarget.com/privacy-policy/">Privacy<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://tech.informa.com/terms-and-conditions">Terms</a></div></div></div></div></footer></div></div></main><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>((storageKey2, restoreKey) => { if (!window.history.state || !window.history.state.key) { let key = Math.random().toString(32).slice(2); window.history.replaceState({ key }, ""); } try { let positions = JSON.parse(sessionStorage.getItem(storageKey2) || "{}"); let storedY = positions[restoreKey || window.history.state.key]; if (typeof storedY === "number") { window.scrollTo(0, storedY); } } catch (error) { console.error(error); sessionStorage.removeItem(storageKey2); } })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false},"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type="module" async="">; import * as route0 from "/assets/root-BIuf-57F.js"; import * as route1 from "/assets/_topic._slug._index-NLhdOpms.js"; window.__reactRouterManifest = { "entry": { "module": "/assets/entry.client-fWB18xdV.js", "imports": [ "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/index-BlRIwUgC.js" ], "css": [] }, "routes": { "root": { "id": "root", "path": "", "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-BIuf-57F.js", "imports": [ "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/index-BlRIwUgC.js", "/assets/with-props-C4rFUyxV.js", "/assets/gtm-DGm0KW_T.js", "/assets/contentPreview-raReixWB.js", "/assets/_-BJdr63HM.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/provider-vRHVWpv0.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/socialShare-BbqkDzDu.js", "/assets/link-C1MkzDH5.js", "/assets/button-DlgCHeeG.js", "/assets/util-BlbSWXsE.js", "/assets/searchBar-CEbzLjII.js", "/assets/useSearchBar-B0qpfoK9.js", "/assets/navigation-BPrJWSO7.js", "/assets/redirection-DiAII56c.js", "/assets/meta-DL0KpjEK.js", "/assets/form-5uUV5058.js" ], "css": [] }, "routes/$topic.$slug._index": { "id": "routes/$topic.$slug._index", "parentId": "root", "path": ":topic/:slug", "index": true, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_topic._slug._index-NLhdOpms.js", "imports": [ "/assets/with-props-C4rFUyxV.js", "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/_-BJdr63HM.js", "/assets/gtm-DGm0KW_T.js", "/assets/contentPreview-raReixWB.js", "/assets/sidebar-C38SyLXI.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/articleMultiSection-B_lQ5uys.js", "/assets/contentDomain.generated-DIEwSG95.js", "/assets/provider-vRHVWpv0.js", "/assets/button-DlgCHeeG.js", "/assets/topicList-DLI_z99T.js", "/assets/gridLayout-wIbp2Hs_.js", "/assets/featureImageHeader-B2n6UlsK.js", "/assets/link-C1MkzDH5.js", "/assets/useWeatherWidget-CqdUxz0N.js", "/assets/string-BS_NwYxO.js", "/assets/meta-DL0KpjEK.js", "/assets/weatherWidget-BYzhjHC9.js", "/assets/changeLocationBar-BNl0rC1C.js", "/assets/form-5uUV5058.js", "/assets/contentCards-aFwo1o7S.js", "/assets/videoPlaylist-BaLxtSEs.js", "/assets/toNumber-DCajaT_r.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/index-BlRIwUgC.js", "/assets/socialShare-BbqkDzDu.js", "/assets/contributorSummary-CYbbZoZR.js", "/assets/programHeader-UEd8-rbR.js", "/assets/categoryHeader-BNorRpUl.js", "/assets/redirection-DiAII56c.js", "/assets/resources-DIZqnfs4.js", "/assets/index-BObwWQ7a.js", "/assets/breadcrumb-D99WjBeI.js", "/assets/listContent-DPrFxO8G.js", "/assets/utils-Bn24zYNJ.js", "/assets/pagination-CotFOi0g.js", "/assets/commodityPrices-CuYN6Jxx.js", "/assets/_getPrototype-3cCw-LUg.js", "/assets/useStorage-gorQNo4e.js" ], "css": [] }, "routes/_index": { "id": "routes/_index", "parentId": "root", "index": true, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_index-fCp8yBJU.js", "imports": [ "/assets/with-props-C4rFUyxV.js", "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/_-BJdr63HM.js", "/assets/gtm-DGm0KW_T.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/moduleSection-BD4rkMdo.js", "/assets/contentDomain.generated-DIEwSG95.js", "/assets/useStorage-gorQNo4e.js", "/assets/meta-DL0KpjEK.js", "/assets/link-C1MkzDH5.js", "/assets/contentCards-aFwo1o7S.js", "/assets/contentPreview-raReixWB.js", "/assets/weatherHomepage-CnI474xN.js", "/assets/button-DlgCHeeG.js", "/assets/socialShare-BbqkDzDu.js", "/assets/index-BObwWQ7a.js", "/assets/weatherWidget-BYzhjHC9.js", "/assets/changeLocationBar-BNl0rC1C.js", "/assets/form-5uUV5058.js", "/assets/commodityPrices-CuYN6Jxx.js", "/assets/videoPlaylist-BaLxtSEs.js", "/assets/toNumber-DCajaT_r.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/resources-DIZqnfs4.js" ], "css": [] }, "routes/$topic._index": { "id": "routes/$topic._index", "parentId": "root", "path": ":topic", "index": true, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_topic._index-DgKjDyGQ.js", "imports": [ "/assets/with-props-C4rFUyxV.js", "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/_-BJdr63HM.js", "/assets/gtm-DGm0KW_T.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/breadcrumb-D99WjBeI.js", "/assets/categoryHeader-BNorRpUl.js", "/assets/listContent-DPrFxO8G.js", "/assets/searchBar-CEbzLjII.js", "/assets/useSearchBar-B0qpfoK9.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/contentPreview-raReixWB.js", "/assets/utils-Bn24zYNJ.js", "/assets/pagination-CotFOi0g.js", "/assets/button-DlgCHeeG.js", "/assets/filterSection-B0_8V9sY.js", "/assets/topicList-DLI_z99T.js", "/assets/gridLayout-wIbp2Hs_.js", "/assets/featureImageHeader-B2n6UlsK.js", "/assets/moduleSection-BD4rkMdo.js", "/assets/articleMultiSection-B_lQ5uys.js", "/assets/provider-vRHVWpv0.js", "/assets/string-BS_NwYxO.js", "/assets/meta-DL0KpjEK.js", "/assets/useWeatherWidget-CqdUxz0N.js", "/assets/link-C1MkzDH5.js", "/assets/commodityPrices-CuYN6Jxx.js", "/assets/sidebar-C38SyLXI.js", "/assets/weatherWidget-BYzhjHC9.js", "/assets/changeLocationBar-BNl0rC1C.js", "/assets/form-5uUV5058.js", "/assets/contentCards-aFwo1o7S.js", "/assets/videoPlaylist-BaLxtSEs.js", "/assets/contentDomain.generated-DIEwSG95.js", "/assets/toNumber-DCajaT_r.js", "/assets/index-BlRIwUgC.js", "/assets/_getPrototype-3cCw-LUg.js", "/assets/util-BlbSWXsE.js", "/assets/input-zB_nkUn5.js", "/assets/_baseForOwn-ClWWO-WO.js", "/assets/index-BObwWQ7a.js", "/assets/socialShare-BbqkDzDu.js", "/assets/weatherHomepage-CnI474xN.js", "/assets/resources-DIZqnfs4.js", "/assets/contributorSummary-CYbbZoZR.js", "/assets/programHeader-UEd8-rbR.js", "/assets/redirection-DiAII56c.js", "/assets/useStorage-gorQNo4e.js" ], "css": [] } }, "url": "/assets/manifest-c120b55d.js", "version": "c120b55d" }; window.__reactRouterRouteModules = {"root":route0,"routes/$topic.$slug._index":route1}; import("/assets/entry.client-fWB18xdV.js");</script><!--$?--><template id="B:0"></template><!--/$--><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_1872\":-5,\"_1873\":-5},\"loaderData\",{\"_3\":4,\"_882\":883},\"root\",{\"_5\":6,\"_7\":8,\"_9\":10,\"_11\":12,\"_13\":14,\"_15\":16,\"_27\":28,\"_33\":34,\"_37\":24,\"_38\":39,\"_42\":-7,\"_43\":44,\"_49\":-7,\"_50\":51,\"_62\":63,\"_64\":65,\"_83\":84,\"_770\":771,\"_772\":-7,\"_773\":774,\"_787\":788,\"_818\":819},\"href\",\"http://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-\",\"brand\",\"itprotoday\",\"domainUrl\",\"https://www.itprotoday.com\",\"authenticationStatus\",\"anonymous\",\"siteName\",\"ITPro Today\",\"ads\",{\"_17\":18,\"_19\":20,\"_21\":22,\"_23\":24,\"_25\":26},\"networkId\",3834,\"parentAdUnit\",\"itprotoday.home\",\"enabledAds\",\"all\",\"checkClientIP\",false,\"disableSponsorBar\",true,\"authConfig\",{\"_29\":24,\"_30\":-7,\"_31\":-7,\"_32\":24},\"enabled\",\"authenticationConfigId\",\"standaloneRegistrationPage\",\"disableCaptcha\",\"vwo\",{\"_29\":26,\"_35\":36},\"accountId\",\"734041\",\"isDctsTurnOn\",\"oneTrust\",{\"_40\":41},\"siteId\",\"dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e\",\"cookieBanner\",\"gtmIds\",{\"_45\":46,\"_47\":48},\"primary\",\"GTM-5523ZCM\",\"secondary\",\"GTM-MTN2X7K\",\"pageContent\",\"ui\",{\"_7\":8,\"_52\":53,\"_54\":55},\"theme\",\"theme1\",\"font\",{\"_45\":56,\"_47\":61},{\"_57\":58,\"_59\":60},\"name\",\"Inter\",\"url\",\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900\u0026display=swap\",{\"_57\":58,\"_59\":60},\"environment\",\"prod\",\"featureToggles\",{\"_66\":24,\"_67\":24,\"_68\":24,\"_69\":24,\"_70\":24,\"_71\":24,\"_72\":24,\"_73\":24,\"_74\":24,\"_75\":24,\"_76\":77,\"_78\":24,\"_79\":24,\"_80\":26,\"_81\":26,\"_82\":26},\"elnNewsletter\",\"elnWithoutNewsletter\",\"iirisAuthentication\",\"subBrand\",\"useSettingsRedirectAPIVersion1\",\"gatingEnabled\",\"iirisRecommendationDisabled\",\"iasPetEnabled\",\"bridgedMediaEnabled\",\"ecommerceEnabled\",\"iirisRecommendationVer\",\"version4\",\"weather3MonthForecastEnabled\",\"legacyHomepage\",\"oneTrustEnabled\",\"transcendEnabled\",\"useTechInformaBar\",\"layout\",{\"_85\":86,\"_106\":107,\"_130\":131,\"_576\":577,\"_694\":695,\"_701\":702,\"_768\":26,\"_769\":24},\"socialLinks\",[87,91,94,97,100,103],{\"_88\":89,\"_59\":90},\"type\",\"Facebook\",\"https://www.facebook.com/ITProToday/\",{\"_88\":92,\"_59\":93},\"Twitter\",\"https://twitter.com/ITProToday\",{\"_88\":95,\"_59\":96},\"Linkedin\",\"https://www.linkedin.com/company/itpro-today/\",{\"_88\":98,\"_59\":99},\"Youtube\",\"https://www.youtube.com/channel/UCedUgT8R7qC3vsOSxXS5-ZA\",{\"_88\":101,\"_59\":102},\"GoogleNews\",\"https://news.google.com/publications/CAAqKQgKIiNDQklTRkFnTWFoQUtEbWwwY0hKdmRHOWtZWGt1WTI5dEtBQVAB\",{\"_88\":104,\"_59\":105},\"RSS\",\"https://www.itprotoday.com/rss.xml\",\"informaBar\",{\"_29\":26,\"_108\":109,\"_127\":128},\"leftSection\",{\"_110\":111,\"_112\":113},\"description\",\"Together, we power an unparalleled network of 220+ online properties covering 10,000+ granular topics, serving an audience of 50+ million professionals with original, objective content from trusted sources. We help you gain critical insights and make more informed decisions across your business priorities.\",\"subMenu\",[114,118,121,124],{\"_115\":116,\"_59\":117},\"title\",\"INFORMA PLC\",\"https://informa.com/\",{\"_115\":119,\"_59\":120},\"ABOUT US\",\"https://informa.com/about-us/\",{\"_115\":122,\"_59\":123},\"INVESTOR RELATIONS\",\"https://informa.com/investors/\",{\"_115\":125,\"_59\":126},\"TALENT\",\"https://informa.com/talent/\",\"rightSection\",{\"_110\":129},\"This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.\",\"nav\",{\"_132\":133,\"_566\":567},\"mainMenuItems\",[134,212,276,327,368,398,449,480,501,529],{\"_115\":135,\"_59\":136,\"_137\":138,\"_139\":136,\"_140\":26,\"_112\":141,\"_154\":155},\"Cloud\",\"/cloud-computing\",\"seeAllLink\",\"SEE ALL Cloud\",\"seeAllLinkUrl\",\"hasSubMenu\",[142,145,148,151],{\"_115\":143,\"_59\":144},\"Cloud Services\",\"/cloud-computing/cloud-services\",{\"_115\":146,\"_59\":147},\"Hybrid Cloud\",\"/cloud-computing/hybrid-cloud\",{\"_115\":149,\"_59\":150},\"Private Cloud\",\"/cloud-computing/private-cloud\",{\"_115\":152,\"_59\":153},\"Public Cloud\",\"/cloud-computing/public-cloud\",\"recentContents\",[156,194],{\"_157\":158,\"_163\":164,\"_165\":164,\"_166\":167,\"_168\":169,\"_170\":171,\"_172\":173,\"_174\":171,\"_175\":176,\"_177\":136,\"_178\":179,\"_180\":181,\"_188\":189,\"_190\":191,\"_192\":193},\"thumbnail\",{\"_159\":160,\"_161\":162},\"src\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg\",\"alt\",\"cloud Kubernetes helm concept with the containers\",\"articleName\",\"Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager\",\"mobileHeadline\",\"articleSummary\",\"Cloud Controller Manager is a crucial yet often overlooked Kubernetes component that streamlines cloud integrations. Here's why it matters and how to use it effectively.\",\"articleUrl\",\"/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager\",\"listPageUrl\",\"\",\"date\",\"Feb 18, 2025\",\"webinarStartTime\",\"categoryName\",\"Cloud Computing\",\"categoryUrl\",\"contentType\",\"Article\",\"contributors\",[182],{\"_57\":183,\"_184\":185,\"_186\":187},\"Christopher Tozzi\",\"link\",\"/author/christopher-tozzi\",\"avatar\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt363e2b757d4697ca/6613c9a4e92bcfe48a891995/christophertozzi_2.jpg\",\"timeRead\",6,\"variant\",\"card-vertical\",\"layoutVariant\",\"vertical\",{\"_157\":195,\"_163\":198,\"_165\":198,\"_166\":199,\"_168\":200,\"_170\":171,\"_172\":201,\"_174\":171,\"_175\":146,\"_177\":147,\"_178\":179,\"_180\":202,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":196,\"_161\":197},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbbbd88e5773ffc6b/67ac97b77c6ab0666ea09ca5/hybrid-cloud-1716x965_-_2024-12-27.jpg\",\"hybrid cloud spelled out above a tablet\",\"How to Avoid Common Hybrid Cloud Pitfalls\",\"Some data and workloads are moving back from cloud to on-premises. It isn't a return to the days of yore, so thoughtful strategy and implementation matter greatly.\",\"/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls\",\"Feb 12, 2025\",[203,207],{\"_57\":204,\"_184\":205,\"_186\":206},\"Lisa Morgan\",\"/author/lisa-morgan\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb11c8ae625be7abe/6613c9bdd9d6083199a9aceb/lisamorgan.jpg\",{\"_57\":208,\"_184\":209,\"_186\":210},\"InformationWeek\",\"/author/informationweek\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfe700963d293545b/662c186ab6e73c2096cb1da7/251403_Favicon_512x512.png\",1,{\"_115\":213,\"_59\":214,\"_137\":215,\"_139\":214,\"_140\":26,\"_112\":216,\"_154\":247},\"OS\",\"/operating-systems\",\"See All OS\",[217,220,223,226,229,232,235,238,241,244],{\"_115\":218,\"_59\":219},\"Microsoft Windows\",\"/operating-systems/microsoft-windows\",{\"_115\":221,\"_59\":222},\"Windows Server\",\"/operating-systems/windows-server\",{\"_115\":224,\"_59\":225},\"PowerShell\",\"/operating-systems/powershell\",{\"_115\":227,\"_59\":228},\"Linux OS\",\"/operating-systems/linux-os\",{\"_115\":230,\"_59\":231},\"SQL Server\",\"/operating-systems/sql-server\",{\"_115\":233,\"_59\":234},\"MacOS\",\"/operating-systems/macos\",{\"_115\":236,\"_59\":237},\"Android OS\",\"/operating-systems/android-os\",{\"_115\":239,\"_59\":240},\"ChromeOS\",\"/operating-systems/chromeos\",{\"_115\":242,\"_59\":243},\"Ubuntu\",\"/operating-systems/ubuntu\",{\"_115\":245,\"_59\":246},\"Red Hat OS\",\"/operating-systems/red-hat-os\",[248,262],{\"_157\":249,\"_163\":252,\"_165\":252,\"_166\":253,\"_168\":254,\"_170\":171,\"_172\":255,\"_174\":171,\"_175\":224,\"_177\":225,\"_178\":179,\"_180\":256,\"_188\":261,\"_190\":191,\"_192\":193},{\"_159\":250,\"_161\":251},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt1ef028e07e495a1a/67b518be149b7e2c6c0df150/Your_paragraph_text_(1).png\",\"a dry erase boards with doodles, powershell code snippet, powershell logo, and a hand drawing with a market\",\"PowerShell GUI Tutorial: Building Whiteboard Apps With WPF\",\"Discover how to use PowerShell with WPF to create a simple inking canvas capable of saving drawings as JPEG files, undoing ink strokes, and resetting the canvas.\",\"/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf\",\"Feb 19, 2025\",[257],{\"_57\":258,\"_184\":259,\"_186\":260},\"Brien Posey\",\"/author/brien-posey\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbd2d61ed5b87072c/6613c9a9bce8e3a5a1d68782/Brien_Posey.jpg\",13,{\"_157\":263,\"_163\":266,\"_165\":266,\"_166\":267,\"_168\":268,\"_170\":171,\"_172\":269,\"_174\":171,\"_175\":227,\"_177\":228,\"_178\":179,\"_180\":270,\"_188\":275,\"_190\":191,\"_192\":193},{\"_159\":264,\"_161\":265},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt55c34441e4c5f4cf/67ae572a2ba611390a866d2b/image-1716x965_-_2025-02-13T153328.829.jpg\",\"a magnifying glass being help up to an open padlock icon that is set within rows of locked padlocks\",\"Beyond the Basics: Advanced Linux Hardening Techniques\",\"This guide explores advanced hardening techniques, including MAC frameworks, network security enhancements, proactive vulnerability management, container security, and the use of AI for threat detection.\",\"/linux-os/beyond-the-basics-advanced-linux-hardening-techniques\",\"Feb 14, 2025\",[271],{\"_57\":272,\"_184\":273,\"_186\":274},\"Grant Knoetze\",\"/author/grant-knoetze\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb840b8274b6e83ca/6613c9f9ddf6623b6265761c/Grant-Knoetze-cropped.jpg\",7,{\"_115\":277,\"_59\":278,\"_137\":279,\"_139\":278,\"_140\":26,\"_112\":280,\"_154\":296},\"IT Mgmt\",\"/it-management\",\"See All IT Mgmt\",[281,284,287,290,293],{\"_115\":282,\"_59\":283},\"IT Operations\",\"/it-management/it-operations\",{\"_115\":285,\"_59\":286},\"DevOps\",\"/it-management/devops\",{\"_115\":288,\"_59\":289},\"Ops and More\",\"/it-management/ops-and-more\",{\"_115\":291,\"_59\":292},\"IT Sustainability\",\"/it-management/it-sustainability\",{\"_115\":294,\"_59\":295},\"IT Automation\",\"/it-management/it-automation\",[297,313],{\"_157\":298,\"_163\":301,\"_165\":301,\"_166\":302,\"_168\":303,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":305,\"_177\":306,\"_178\":179,\"_180\":307,\"_188\":312,\"_190\":191,\"_192\":193},{\"_159\":299,\"_161\":300},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg\",\"disaster recovery playbook on a desk near a keyboard\",\"Disaster Recovery Strategies for a Disaster-Prone World\",\"Downtime is costly, but a well-planned high availability (HA) and disaster recovery (DR) strategy can minimize disruptions.\",\"/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world\",\"Feb 21, 2025\",\"Disaster Recovery\",\"/data-storage/disaster-recovery\",[308],{\"_57\":309,\"_184\":310,\"_186\":311},\"Industry Perspectives\",\"/author/industry-perspectives\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd7fa51c8929351c1/6659df384bcb3c8c0e786295/ITP_IP.png\",5,{\"_157\":314,\"_163\":317,\"_165\":317,\"_166\":318,\"_168\":319,\"_170\":171,\"_172\":320,\"_174\":171,\"_175\":291,\"_177\":292,\"_178\":179,\"_180\":321,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":315,\"_161\":316},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt253192bcd42230d9/67b798981f1ef5d72674f1f5/image-1716x965_-_2025-02-20T160308.726.jpg\",\"eco icons and data processing over computer servers\",\"7 Top Data Center Sustainability Strategies for 2025\",\"Data center sustainability is more critical than ever as energy demands surge. Here are seven key strategies to improve efficiency and reduce carbon impact.\",\"/it-sustainability/7-top-data-center-sustainability-strategies-for-2025\",\"Feb 20, 2025\",[322,323],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_57\":324,\"_184\":325,\"_186\":326},\"Data Center Knowledge\",\"/author/data-center-knowledge\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbfc1cdb5b46a19b7/6647115632777426bbc9b8b0/DCK_Favicon_RGB_512x512.png\",{\"_115\":328,\"_59\":329,\"_137\":330,\"_139\":329,\"_140\":26,\"_112\":331,\"_154\":341},\"Career\",\"/career-management\",\"See All Career Mgmt\",[332,335,338],{\"_115\":333,\"_59\":334},\"Career Tips\",\"/career-management/career-tips\",{\"_115\":336,\"_59\":337},\"Certifications\",\"/career-management/certifications\",{\"_115\":339,\"_59\":340},\"Training\",\"/career-management/training\",[342,355],{\"_157\":343,\"_163\":346,\"_165\":346,\"_166\":347,\"_168\":348,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":333,\"_177\":334,\"_178\":179,\"_180\":349,\"_188\":354,\"_190\":191,\"_192\":193},{\"_159\":344,\"_161\":345},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif\",\"an unhappy employee is surrounded by smiley faces and the words \\\"Stay Positive\\\"\",\"Toxic Positivity at Work Is Silencing My Team’s Concerns\",\"An IT pro’s team struggles with burnout due to overwhelming workloads, while management dismisses their concerns with toxic positivity. Read our advice.\",\"/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns\",[350],{\"_57\":351,\"_184\":352,\"_186\":353},\"Danielle Meinert\",\"/author/danielle-meinert\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6cea48e7fba9fe0c/66744228de07df7824ca2798/danielle-profile-photo.jpeg\",2,{\"_157\":356,\"_163\":359,\"_165\":359,\"_166\":360,\"_168\":361,\"_170\":171,\"_172\":362,\"_174\":171,\"_175\":363,\"_177\":364,\"_178\":179,\"_180\":365,\"_188\":367,\"_190\":191,\"_192\":193},{\"_159\":357,\"_161\":358},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9559a8f9078d3a4e/67aa33c656339648630cc13d/Process_Compliance_(1).gif\",\"an annoyed-looking software developer is covered by red tape and the words \\\"process compliance\\\"\",\"Process Standardization Is Stifling My Creativity\",\"A software developer seeks advice about a new manager’s rigid obsession with process standardization, replacing creative problem-solving with excessive bureaucracy. \",\"/software-development/process-standardization-is-stifling-my-creativity\",\"Feb 11, 2025\",\"Software Development\",\"/software-development\",[366],{\"_57\":351,\"_184\":352,\"_186\":353},3,{\"_115\":369,\"_59\":370,\"_137\":371,\"_139\":370,\"_140\":26,\"_112\":372,\"_154\":383},\"Storage\",\"/data-storage\",\"See All Data Storage\",[373,376,379,382],{\"_115\":374,\"_59\":375},\"Cloud Storage\",\"/data-storage/cloud-storage\",{\"_115\":377,\"_59\":378},\"High Speed Storage\",\"/data-storage/high-speed-storage\",{\"_115\":380,\"_59\":381},\"Data Backup\",\"/data-storage/data-backup\",{\"_115\":305,\"_59\":306},[384,388],{\"_157\":385,\"_163\":301,\"_165\":301,\"_166\":302,\"_168\":303,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":305,\"_177\":306,\"_178\":179,\"_180\":386,\"_188\":312,\"_190\":191,\"_192\":193},{\"_159\":299,\"_161\":300},[387],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_157\":389,\"_163\":392,\"_165\":392,\"_166\":393,\"_168\":394,\"_170\":171,\"_172\":395,\"_174\":171,\"_175\":227,\"_177\":228,\"_178\":179,\"_180\":396,\"_188\":189,\"_190\":191,\"_192\":193},{\"_159\":390,\"_161\":391},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt88f81fb36d6cbe4a/67a4e82ca4ff164b53d978f6/image-1716x965_-_2025-02-06T113039.208.jpg\",\"the word malware on top of a digital background\",\"How To Identify and Remove Linux Malware Infections\",\"Explore common Linux malware types, how to detect infections, and best practices for removal, recovery, and prevention.\",\"/linux-os/how-to-identify-and-remove-linux-malware-infections\",\"Feb 7, 2025\",[397],{\"_57\":272,\"_184\":273,\"_186\":274},{\"_115\":399,\"_59\":400,\"_137\":401,\"_139\":400,\"_140\":26,\"_112\":402,\"_154\":424},\"Security\",\"/it-security\",\"See All IT Security\",[403,406,409,412,415,418,421],{\"_115\":404,\"_59\":405},\"Vulnerabilities \u0026 Threats\",\"/it-security/vulnerabilities-threats\",{\"_115\":407,\"_59\":408},\"Attacks \u0026 Breaches\",\"/it-security/attacks-breaches\",{\"_115\":410,\"_59\":411},\"Regulatory Compliance\",\"/it-security/regulatory-compliance\",{\"_115\":413,\"_59\":414},\"Data Privacy\",\"/it-security/data-privacy\",{\"_115\":416,\"_59\":417},\"Cloud Security\",\"/it-security/cloud-security\",{\"_115\":419,\"_59\":420},\"Endpoint Security\",\"/it-security/endpoint-security\",{\"_115\":422,\"_59\":423},\"Identity Mgmt \u0026 Access Control\",\"/it-security/identity-management-access-control\",[425,437],{\"_157\":426,\"_163\":429,\"_165\":429,\"_166\":430,\"_168\":431,\"_170\":171,\"_172\":320,\"_174\":171,\"_175\":432,\"_177\":433,\"_178\":179,\"_180\":434,\"_188\":436,\"_190\":191,\"_192\":193},{\"_159\":427,\"_161\":428},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg\",\"robot and human fingers touching\",\"The Role of Human Touch in Agentic AI Data Management\",\"Advancements in agentic AI bring new challenges, especially in data privacy and regulatory compliance. Here's how to harness its benefits while ensuring privacy and compliance.\",\"/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management\",\"AI \u0026 Machine Learning\",\"/digital-transformation/ai-machine-learning\",[435],{\"_57\":309,\"_184\":310,\"_186\":311},4,{\"_157\":438,\"_163\":441,\"_165\":441,\"_166\":442,\"_168\":443,\"_170\":171,\"_172\":255,\"_174\":171,\"_175\":404,\"_177\":405,\"_178\":179,\"_180\":444,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":439,\"_161\":440},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg\",\"xerox logo on sign outside xerox square building \",\"Xerox Printer Vulnerabilities Enable Credential Capture\",\"Attackers use patched bugs to potentially gain unfettered access to an organization's Windows environment under certain conditions.\",\"/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture\",[445],{\"_57\":446,\"_184\":447,\"_186\":448},\"Jai Vijayan\",\"/author/jai-vijayan\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt2493953a95cd126f/6613c9b888728662974ed18d/Jai-Vijayan.jpg\",{\"_115\":450,\"_59\":364,\"_137\":451,\"_139\":364,\"_140\":26,\"_112\":452,\"_154\":465},\"Dev\",\"See All Software Dev\",[453,456,459,462],{\"_115\":454,\"_59\":455},\"Cloud Native\",\"/software-development/cloud-native\",{\"_115\":457,\"_59\":458},\"Programming Languages\",\"/software-development/programming-languages\",{\"_115\":460,\"_59\":461},\"No-Code/Low-Code\",\"/software-development/no-code-low-code\",{\"_115\":463,\"_59\":464},\"Software Development Techniques\",\"/software-development/software-development-techniques\",[466,470],{\"_157\":467,\"_163\":346,\"_165\":346,\"_166\":347,\"_168\":348,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":333,\"_177\":334,\"_178\":179,\"_180\":468,\"_188\":354,\"_190\":191,\"_192\":193},{\"_159\":344,\"_161\":345},[469],{\"_57\":351,\"_184\":352,\"_186\":353},{\"_157\":471,\"_163\":474,\"_165\":474,\"_166\":475,\"_168\":476,\"_170\":171,\"_172\":477,\"_174\":171,\"_175\":463,\"_177\":464,\"_178\":179,\"_180\":478,\"_188\":275,\"_190\":191,\"_192\":193},{\"_159\":472,\"_161\":473},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blta837190fc0e7c602/67ade2fd64f859b14b05f5fd/software-developer-code-1716x965_-_2024-10-18.jpg\",\"software developer writing code on a laptop\",\"The Overlooked Art of Software Localization for Non-Traditional Markets\",\"Despite software's global reach, many companies overlook a critical aspect of their development process: localization for non-traditional markets.\",\"/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets\",\"Feb 13, 2025\",[479],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_115\":481,\"_59\":482,\"_137\":483,\"_139\":482,\"_140\":26,\"_112\":484,\"_154\":492},\"DX\",\"/digital-transformation\",\"See All Digital Transformation\",[485,486,489],{\"_115\":432,\"_59\":433},{\"_115\":487,\"_59\":488},\"Edge Computing\",\"/digital-transformation/edge-computing\",{\"_115\":490,\"_59\":491},\"IoT\",\"/digital-transformation/iot\",[493,497],{\"_157\":494,\"_163\":429,\"_165\":429,\"_166\":430,\"_168\":431,\"_170\":171,\"_172\":320,\"_174\":171,\"_175\":432,\"_177\":433,\"_178\":179,\"_180\":495,\"_188\":436,\"_190\":191,\"_192\":193},{\"_159\":427,\"_161\":428},[496],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_157\":498,\"_163\":441,\"_165\":441,\"_166\":442,\"_168\":443,\"_170\":171,\"_172\":255,\"_174\":171,\"_175\":404,\"_177\":405,\"_178\":179,\"_180\":499,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":439,\"_161\":440},[500],{\"_57\":446,\"_184\":447,\"_186\":448},{\"_115\":502,\"_59\":503,\"_137\":504,\"_139\":503,\"_140\":26,\"_112\":505,\"_154\":515},\"Infrastructure\",\"/it-infrastructure\",\"See All Infrastructure\",[506,509,512],{\"_115\":507,\"_59\":508},\"High Performance Computing\",\"/it-infrastructure/high-performance-computing\",{\"_115\":510,\"_59\":511},\"Containerization\",\"/it-infrastructure/containerization\",{\"_115\":513,\"_59\":514},\"Server Virtualization\",\"/it-infrastructure/server-virtualization\",[516,520],{\"_157\":517,\"_163\":164,\"_165\":164,\"_166\":167,\"_168\":169,\"_170\":171,\"_172\":173,\"_174\":171,\"_175\":176,\"_177\":136,\"_178\":179,\"_180\":518,\"_188\":189,\"_190\":191,\"_192\":193},{\"_159\":160,\"_161\":162},[519],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_157\":521,\"_163\":524,\"_165\":524,\"_166\":525,\"_168\":526,\"_170\":171,\"_172\":395,\"_174\":171,\"_175\":432,\"_177\":433,\"_178\":179,\"_180\":527,\"_188\":436,\"_190\":191,\"_192\":193},{\"_159\":522,\"_161\":523},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blte1ae920643569ab5/67a52cba2f8fd4865d38e4c5/silicon-1716x965_-_2025-02-06.jpg\",\"computer CPU\",\"How Silicon Diversity Optimizes Cost, Performance Across the AI Lifecycle\",\"Strategically matching AI workloads to the right compute resources — through training, inference, and serverless inference — helps organizations control costs while maximizing performance.\",\"/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle\",[528],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_115\":530,\"_59\":531,\"_137\":532,\"_139\":531,\"_140\":26,\"_112\":533,\"_154\":565},\"More\",\"/resources\",\"Resource Library\",[534,537,540,542,544,547,550,553,556,559,562],{\"_115\":535,\"_59\":536},\"Newsletters\",\"https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1\u0026sr=pp\u0026_t=pp:\u0026qf=w_itpb86\u0026ch=itpnav\",{\"_115\":538,\"_59\":539},\"How To…?\",\"/latest-how-to\",{\"_115\":309,\"_59\":541},\"/program/industry-perspectives\",{\"_115\":543,\"_59\":531},\"Business Resources\",{\"_115\":545,\"_59\":546},\"Reports/Research\",\"/resources?types=Survey+Report\u0026page=1\",{\"_115\":548,\"_59\":549},\"Online Events\",\"/resources?page=1\u0026types=Virtual+Event\u0026types=Webinar\",{\"_115\":551,\"_59\":552},\"Live Events\",\"/events\",{\"_115\":554,\"_59\":555},\"Videos\",\"/videos\",{\"_115\":557,\"_59\":558},\"White Papers\",\"/resources?page=1\u0026types=White+Paper\",{\"_115\":560,\"_59\":561},\"Advertise With Us\",\"/advertise\",{\"_115\":563,\"_59\":564},\"About Us\",\"/about-us\",[],\"secondaryMenu\",[568,571,572,574],{\"_115\":569,\"_59\":570},\"Documents\",\"/documents\",{\"_115\":548,\"_59\":549},{\"_115\":573,\"_59\":561},\"Advertise\",{\"_115\":575,\"_59\":564},\"About\",\"megaMenu\",{\"_578\":579,\"_654\":655,\"_685\":686},\"largeMenu\",[580,586,598,605,610,616,625,631,636,641],{\"_115\":135,\"_59\":136,\"_112\":581,\"_137\":138,\"_139\":136},[582,583,584,585],{\"_115\":143,\"_59\":144},{\"_115\":146,\"_59\":147},{\"_115\":149,\"_59\":150},{\"_115\":152,\"_59\":153},{\"_115\":213,\"_59\":214,\"_112\":587,\"_137\":215,\"_139\":214},[588,589,590,591,592,593,594,595,596,597],{\"_115\":218,\"_59\":219},{\"_115\":221,\"_59\":222},{\"_115\":224,\"_59\":225},{\"_115\":227,\"_59\":228},{\"_115\":230,\"_59\":231},{\"_115\":233,\"_59\":234},{\"_115\":236,\"_59\":237},{\"_115\":239,\"_59\":240},{\"_115\":242,\"_59\":243},{\"_115\":245,\"_59\":246},{\"_115\":277,\"_59\":278,\"_112\":599,\"_137\":279,\"_139\":278},[600,601,602,603,604],{\"_115\":282,\"_59\":283},{\"_115\":285,\"_59\":286},{\"_115\":288,\"_59\":289},{\"_115\":291,\"_59\":292},{\"_115\":294,\"_59\":295},{\"_115\":328,\"_59\":329,\"_112\":606,\"_137\":330,\"_139\":329},[607,608,609],{\"_115\":333,\"_59\":334},{\"_115\":336,\"_59\":337},{\"_115\":339,\"_59\":340},{\"_115\":369,\"_59\":370,\"_112\":611,\"_137\":371,\"_139\":370},[612,613,614,615],{\"_115\":374,\"_59\":375},{\"_115\":377,\"_59\":378},{\"_115\":380,\"_59\":381},{\"_115\":305,\"_59\":306},{\"_115\":399,\"_59\":400,\"_112\":617,\"_137\":401,\"_139\":400},[618,619,620,621,622,623,624],{\"_115\":404,\"_59\":405},{\"_115\":407,\"_59\":408},{\"_115\":410,\"_59\":411},{\"_115\":413,\"_59\":414},{\"_115\":416,\"_59\":417},{\"_115\":419,\"_59\":420},{\"_115\":422,\"_59\":423},{\"_115\":450,\"_59\":364,\"_112\":626,\"_137\":451,\"_139\":364},[627,628,629,630],{\"_115\":454,\"_59\":455},{\"_115\":457,\"_59\":458},{\"_115\":460,\"_59\":461},{\"_115\":463,\"_59\":464},{\"_115\":481,\"_59\":482,\"_112\":632,\"_137\":483,\"_139\":482},[633,634,635],{\"_115\":432,\"_59\":433},{\"_115\":487,\"_59\":488},{\"_115\":490,\"_59\":491},{\"_115\":502,\"_59\":503,\"_112\":637,\"_137\":504,\"_139\":503},[638,639,640],{\"_115\":507,\"_59\":508},{\"_115\":510,\"_59\":511},{\"_115\":513,\"_59\":514},{\"_115\":530,\"_59\":531,\"_112\":642,\"_137\":532,\"_139\":531},[643,644,645,646,647,648,649,650,651,652,653],{\"_115\":535,\"_59\":536},{\"_115\":538,\"_59\":539},{\"_115\":309,\"_59\":541},{\"_115\":543,\"_59\":531},{\"_115\":545,\"_59\":546},{\"_115\":548,\"_59\":549},{\"_115\":551,\"_59\":552},{\"_115\":554,\"_59\":555},{\"_115\":557,\"_59\":558},{\"_115\":560,\"_59\":561},{\"_115\":563,\"_59\":564},\"smallMenu\",[656,665,669],{\"_115\":657,\"_59\":171,\"_112\":658},\"Browse\",[659,660,661,662,663,664],{\"_115\":569,\"_59\":570},{\"_115\":548,\"_59\":549},{\"_115\":551,\"_59\":552},{\"_115\":554,\"_59\":555},{\"_115\":309,\"_59\":541},{\"_115\":543,\"_59\":531},{\"_115\":573,\"_59\":171,\"_112\":666},[667],{\"_115\":668,\"_59\":561},\"Explore Marketing Solutions\",{\"_115\":670,\"_59\":171,\"_112\":671},\"Discover More\",[672,674,676,679,682],{\"_115\":324,\"_59\":673},\"https://www.datacenterknowledge.com/\",{\"_115\":208,\"_59\":675},\"https://www.informationweek.com/\",{\"_115\":677,\"_59\":678},\"Network Computing\",\"https://www.networkcomputing.com/\",{\"_115\":680,\"_59\":681},\"No Jitter\",\"https://www.nojitter.com/\",{\"_115\":683,\"_59\":684},\"AFCOM\",\"https://afcom.com/\",\"sideNavSections\",[687],{\"_115\":688,\"_59\":171,\"_112\":689,\"_137\":171,\"_139\":171},\"Communicate\",[690,691],{\"_115\":563,\"_59\":564},{\"_115\":692,\"_59\":693},\"Contact Us\",\"/contact-us\",\"navBase\",{\"_696\":697},\"logo\",{\"_59\":698,\"_699\":700},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6a28f214e959257b/65dc5966d7e7df040ab9cb3f/Logo_-_IT_Pro_Today.svg\",\"altText\",\"ITPro Today Logo\",\"footer\",{\"_696\":703,\"_705\":706,\"_736\":737,\"_738\":739},{\"_59\":704,\"_699\":700},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6988047454ea0f07/65def58180429104075f67f7/Logo_-_IT_Pro_Today@2x.png\",\"linkSections\",[707,723],{\"_708\":709,\"_115\":670,\"_88\":722},\"links\",[710,714,716,718,720],{\"_711\":712,\"_713\":26,\"_115\":324,\"_59\":673},\"image\",{\"_699\":171,\"_59\":704},\"openInNewTab\",{\"_711\":715,\"_713\":26,\"_115\":208,\"_59\":675},{\"_699\":171,\"_59\":704},{\"_711\":717,\"_713\":26,\"_115\":677,\"_59\":678},{\"_699\":171,\"_59\":704},{\"_711\":719,\"_713\":26,\"_115\":680,\"_59\":681},{\"_699\":171,\"_59\":704},{\"_711\":721,\"_713\":26,\"_115\":683,\"_59\":684},{\"_699\":171,\"_59\":704},\"1\",{\"_708\":724,\"_115\":735,\"_88\":722},[725,727,731,733],{\"_711\":726,\"_713\":26,\"_115\":563,\"_59\":564},{\"_699\":171,\"_59\":704},{\"_711\":728,\"_713\":26,\"_115\":729,\"_59\":730},{\"_699\":171,\"_59\":704},\"Reprints\",\"https://info.wrightsmedia.com/informa-licensing-reprints-request\",{\"_711\":732,\"_713\":26,\"_115\":573,\"_59\":561},{\"_699\":171,\"_59\":704},{\"_711\":734,\"_713\":26,\"_115\":692,\"_59\":693},{\"_699\":171,\"_59\":704},\"Working With Us\",\"brandLinks\",[],\"copyright\",{\"_740\":741,\"_708\":746,\"_115\":767},\"businessUnit\",{\"_59\":742,\"_57\":743,\"_744\":745},\"https://www.informa.com/\",\"Informa\",\"logoUrl\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbaa492998ab75f/674ef556a2308a7b8e6c5d5f/Informa_Logo_OneLine_Graduated_White_RGB.png\",[747,751,755,759,763],{\"_711\":748,\"_713\":24,\"_115\":749,\"_59\":750},{\"_699\":749,\"_59\":750},\"Home\",\"https://www.techtarget.com/\",{\"_711\":752,\"_713\":26,\"_115\":753,\"_59\":754},{\"_699\":753,\"_59\":754},\"CCPA: Do not sell my personal info\",\"https://privacyportal-eu-cdn.onetrust.com/dsarwebform/c1f53e84-9f05-4169-a854-85052b63c50b/5f26b553-52cc-4973-a761-295d5634a6b6.html\",{\"_711\":756,\"_713\":26,\"_115\":757,\"_59\":758},{\"_699\":757,\"_59\":758},\"Cookies\",\"/cookie-policy\",{\"_711\":760,\"_713\":26,\"_115\":761,\"_59\":762},{\"_699\":761,\"_59\":762},\"Privacy\",\"https://www.techtarget.com/privacy-policy/\",{\"_711\":764,\"_713\":26,\"_115\":765,\"_59\":766},{\"_699\":765,\"_59\":766},\"Terms\",\"https://tech.informa.com/terms-and-conditions\",\". This website is owned and operated by Informa TechTarget, part of a global network that informs, influences and connects the world’s technology buyers and sellers. All copyright resides with them. Informa PLC’s registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. TechTarget, Inc.’s registered office is 275 Grove St. Newton, MA 02466.\",\"isSponsorBarEnabled\",\"isPaidContent\",\"newRelicJs\",\"window.NREUM||(NREUM={});NREUM.info = {\\\"agent\\\":\\\"\\\",\\\"beacon\\\":\\\"bam.eu01.nr-data.net\\\",\\\"errorBeacon\\\":\\\"bam.eu01.nr-data.net\\\",\\\"licenseKey\\\":\\\"NRJS-26ae6a3b09493bbcc87\\\",\\\"applicationID\\\":\\\"514059305\\\",\\\"agentToken\\\":null,\\\"applicationTime\\\":4.599445,\\\"transactionName\\\":\\\"MhBSZQoZWEEDU0ZaXgtac0QLDFlfTR9CXEYAB0NZHRRaHQFYU0dWFQEdWBYMU1UQUUZaXgtYWV9VCFlFB0JBW1QJGR1CGwpfQhZZXFQcARBdXlU=\\\",\\\"queueTime\\\":0,\\\"ttGuid\\\":\\\"b5b0f707bd41e813\\\"}; (window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:[\\\"bam.eu01.nr-data.net\\\"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:\\\"538480682\\\",accountID:\\\"3936348\\\",trustKey:\\\"3288925\\\",xpid:\\\"Vw8EV1VXABAFVVVSAggEVlE=\\\",licenseKey:\\\"NRJS-26ae6a3b09493bbcc87\\\",applicationID:\\\"514059305\\\"};;/*! For license information please see nr-loader-spa-1.283.1.min.js.LICENSE.txt */\\n(()=\u003e{var e,t,r={8122:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{a:()=\u003ei});var n=r(944);function i(e,t){try{if(!e||\\\"object\\\"!=typeof e)return(0,n.R)(3);if(!t||\\\"object\\\"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])\u0026\u0026Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):\\\"object\\\"==typeof e[a]\u0026\u0026\\\"object\\\"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Vp:()=\u003ec,fn:()=\u003es,x1:()=\u003eu});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey\u0026\u0026!!t.errorBeacon\u0026\u0026!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error(\\\"All info objects require an agent identifier!\\\");if(!a[e])throw new Error(\\\"Info for \\\".concat(e,\\\" was never set\\\"));return a[e]}function u(e,t){if(!e)throw new Error(\\\"All info objects require an agent identifier!\\\");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r\u0026\u0026(r.info=a[e])}},9417:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{D0:()=\u003eh,gD:()=\u003eg,xN:()=\u003ep});var n=r(3333);const i=e=\u003e{if(!e||\\\"string\\\"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u=\\\"[data-nr-mask]\\\",d=()=\u003e{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:\\\"*\\\",block_selector:\\\"[data-nr-block]\\\",mask_input_options:{color:!1,date:!1,\\\"datetime-local\\\":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector=\\\"\\\".concat(t,\\\",\\\").concat(u):\\\"\\\"===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return\\\"nr-block\\\"},get ignore_class(){return\\\"nr-ignore\\\"},get mask_text_class(){return\\\"nr-mask\\\"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=\\\",\\\".concat(t):\\\"\\\"!==t\u0026\u0026(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t\u0026\u0026\\\"object\\\"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:[\\\"id\\\",\\\"className\\\",\\\"tagName\\\",\\\"type\\\"]}}},l={},f=\\\"All configuration objects require an agent identifier!\\\";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error(\\\"Configuration for \\\".concat(e,\\\" was never set\\\"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r\u0026\u0026(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split(\\\".\\\"),i=0;i\u003cn.length-1;i++)if(\\\"object\\\"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{a:()=\u003ec,o:()=\u003es});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error(\\\"All loader-config objects require an agent identifier!\\\");if(!a[e])throw new Error(\\\"LoaderConfig for \\\".concat(e,\\\" was never set\\\"));return a[e]}function c(e,t){if(!e)throw new Error(\\\"All loader-config objects require an agent identifier!\\\");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r\u0026\u0026(r.loader_config=a[e])}},3371:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{V:()=\u003ef,f:()=\u003el});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},d={};function l(e){if(!e)throw new Error(\\\"All runtime objects require an agent identifier!\\\");if(!d[e])throw new Error(\\\"Runtime for \\\".concat(e,\\\" was never set\\\"));return d[e]}function f(e,t){if(!e)throw new Error(\\\"All runtime objects require an agent identifier!\\\");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],\\\"harvestCount\\\")||Object.defineProperty(d[e],\\\"harvestCount\\\",{get:()=\u003e++s});const r=(0,i.nY)(e);r\u0026\u0026(r.runtime=d[e])}},9324:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{F3:()=\u003ei,Xs:()=\u003eo,Yq:()=\u003ea,xv:()=\u003en});const n=\\\"1.283.1\\\",i=\\\"PROD\\\",o=\\\"CDN\\\",a=\\\"^2.0.0-alpha.17\\\"},6154:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A4:()=\u003es,OF:()=\u003ed,RI:()=\u003ei,WN:()=\u003eh,bv:()=\u003eo,gm:()=\u003ea,lR:()=\u003ef,m:()=\u003eu,mw:()=\u003ec,sb:()=\u003el});var n=r(1863);const i=\\\"undefined\\\"!=typeof window\u0026\u0026!!window.document,o=\\\"undefined\\\"!=typeof WorkerGlobalScope\u0026\u0026(\\\"undefined\\\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self.navigator instanceof WorkerNavigator||\\\"undefined\\\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis.navigator instanceof WorkerNavigator),a=i?window:\\\"undefined\\\"!=typeof WorkerGlobalScope\u0026\u0026(\\\"undefined\\\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self||\\\"undefined\\\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis),s=\\\"complete\\\"===a?.document?.readyState,c=Boolean(\\\"hidden\\\"===a?.document?.visibilityState),u=\\\"\\\"+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d\u0026\u0026\\\"undefined\\\"==typeof SharedWorker,f=(()=\u003e{const e=a.navigator?.userAgent?.match(/Firefox[/\\\\s](\\\\d+\\\\.\\\\d+)/);return Array.isArray(e)\u0026\u0026e.length\u003e=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Xv:()=\u003ea,gX:()=\u003ei,iW:()=\u003eo});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t\u003cn.length;t++){var r=n[t];if(\\\"*\\\"===r.hostname)return!1;if(s(r.hostname,e.hostname)\u0026\u0026c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e\u0026\u0026e.length)for(var t=0;t\u003ce.length;t++){let r=e[t];if(!r)continue;0===r.indexOf(\\\"http://\\\")?r=r.substring(7):0===r.indexOf(\\\"https://\\\")\u0026\u0026(r=r.substring(8));const i=r.indexOf(\\\"/\\\");let o,a;i\u003e0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a=\\\"\\\");let[s]=o.split(\\\":\\\");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length\u003et.length)\u0026\u0026t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf(\\\"/\\\")\u0026\u0026(e=e.substring(1)),0===t.indexOf(\\\"/\\\")\u0026\u0026(t=t.substring(1)),\\\"\\\"===e||e===t}},1687:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Ak:()=\u003ec,Ze:()=\u003el,x3:()=\u003eu});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e\u0026\u0026s[e]\u0026\u0026(s[e].get(t)\u0026\u0026s[e].delete(t),h(e,t,!1),s[e].size\u0026\u0026f(e))}function d(e){if(!e)throw new Error(\\\"agentIdentifier required\\\");s[e]||(s[e]=new Map)}function l(e=\\\"\\\",t=\\\"feature\\\",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=\u003et.staged))\u0026\u0026(t.sort(((e,t)=\u003ee[1].priority-t[1].priority)),t.forEach((([t])=\u003e{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted\u0026\u0026o.backlog\u0026\u0026s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e\u0026\u0026t\u003ce.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=\u003e{Object.values(t||{}).forEach((t=\u003e{t[0]?.on\u0026\u0026t[0]?.context()instanceof a.y\u0026\u0026t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit(\\\"drain-\\\"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=\u003e{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{P:()=\u003ec,ee:()=\u003eu});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c=\\\"nr@context:\\\".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length\u0026\u0026(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i\u003cr.length;i++)r[i]===t\u0026\u0026r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o\u0026\u0026(o=!0);if(u.aborted\u0026\u0026!i)return;t\u0026\u0026o\u0026\u0026t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l\u003cd;l++)c[l].apply(a,r);var p=v()[s[e]];p\u0026\u0026p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||\\\"feature\\\",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=\u003e{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=\u003e{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t\u0026\u0026\\\"object\\\"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,\\\"aborted\\\",{get:()=\u003e{let e=f._aborted||!1;return e||(t\u0026\u0026(e=t.aborted),e)}}),f;function h(e){return e\u0026\u0026e instanceof a.y?e:e?(0,i.I)(e,c,(()=\u003enew a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,\\\"globalEE\\\"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{y:()=\u003en});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{d:()=\u003en,p:()=\u003ei});var n=r(7836).ee.get(\\\"handle\\\");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{i:()=\u003eo});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o=\\\"feature\\\"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=\u003eo,jT:()=\u003en,sp:()=\u003ei})},5607:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003en});const n=(0,r(9566).bz)()},9566:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{LA:()=\u003es,ZF:()=\u003ec,bz:()=\u003ea,el:()=\u003eu});var n=r(6154);const i=\\\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\\\";function o(e,t){return e?15\u0026e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e\u0026\u0026e.getRandomValues\u0026\u0026(t=e.getRandomValues(new Uint8Array(30))),i.split(\\\"\\\").map((e=\u003e\\\"x\\\"===e?o(t,r++).toString(16):\\\"y\\\"===e?(3\u0026o()|8).toString(16):e)).join(\\\"\\\")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t\u0026\u0026t.getRandomValues\u0026\u0026(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s\u003ce;s++)a.push(o(r,i++).toString(16));return a.join(\\\"\\\")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{BB:()=\u003ea,H3:()=\u003en,g:()=\u003eu,iL:()=\u003ec,tS:()=\u003es,uh:()=\u003ei,wk:()=\u003eo});const n=\\\"NRBA\\\",i=\\\"SESSION\\\",o=144e5,a=18e5,s={STARTED:\\\"session-started\\\",PAUSE:\\\"session-pause\\\",RESET:\\\"session-reset\\\",RESUME:\\\"session-resume\\\",UPDATE:\\\"session-update\\\"},c={SAME_TAB:\\\"same-tab\\\",CROSS_TAB:\\\"cross-tab\\\"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=\u003e{\\\"use strict\\\";function n(){return Math.floor(performance.now())}r.d(t,{t:()=\u003en})},7485:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{D:()=\u003ei});var n=r(6154);function i(e){if(0===(e||\\\"\\\").indexOf(\\\"data:\\\"))return{protocol:\\\"data\\\"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(\\\":\\\")),sameOrigin:t.protocol===n.gm?.location?.protocol\u0026\u0026t.host===n.gm?.location?.host};return r.port\u0026\u0026\\\"\\\"!==r.port||(\\\"http:\\\"===t.protocol\u0026\u0026(r.port=\\\"80\\\"),\\\"https:\\\"===t.protocol\u0026\u0026(r.port=\\\"443\\\")),r.pathname\u0026\u0026\\\"\\\"!==r.pathname?r.pathname.startsWith(\\\"/\\\")||(r.pathname=\\\"/\\\".concat(r.pathname)):r.pathname=\\\"/\\\",r}catch(e){return{}}}},944:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t){\\\"function\\\"==typeof console.debug\u0026\u0026console.debug(\\\"New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#\\\".concat(e),t)}r.d(t,{R:()=\u003en})},5284:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{t:()=\u003ec,B:()=\u003es});var n=r(7836),i=r(6154);const o=\\\"newrelic\\\";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e\u0026\u0026\\\"object\\\"==typeof e\u0026\u0026(a.has(t)||(r.emit(\\\"rumresp\\\",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{I:()=\u003ei});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=\u003e{n\u0026\u0026void 0===i\u0026\u0026(e.apply(this,r),i=setTimeout((()=\u003e{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=\u003e{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=\u003e{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=\u003ei,s:()=\u003en})},3304:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A:()=\u003eo});var n=r(7836);const i=()=\u003e{const e=new WeakSet;return(t,r)=\u003e{if(\\\"object\\\"==typeof r\u0026\u0026null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??\\\"\\\"}catch(e){try{n.ee.emit(\\\"internal-error\\\",[e])}catch(e){}return\\\"\\\"}}},5289:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{GG:()=\u003eo,sB:()=\u003ea});var n=r(3878);function i(){return\\\"undefined\\\"==typeof document||\\\"complete\\\"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)(\\\"load\\\",e,t)}function a(e){if(i())return e();(0,n.DD)(\\\"DOMContentLoaded\\\",e)}},384:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{NT:()=\u003eo,US:()=\u003ed,Zm:()=\u003ea,bQ:()=\u003ec,dV:()=\u003es,nY:()=\u003eu,pV:()=\u003el});var n=r(6154),i=r(1863);const o={beacon:\\\"bam.nr-data.net\\\",errorBeacon:\\\"bam.nr-data.net\\\"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic\u0026\u0026(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{u:()=\u003ei});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)(\\\"visibilitychange\\\",(function(){if(t)return void(\\\"hidden\\\"===document.visibilityState\u0026\u0026e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{u:()=\u003ef});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u=\\\"addEventListener\\\",d=\\\"removeEventListener\\\",l=\\\"nr@wrapped:\\\".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get(\\\"events\\\")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],\\\"-\\\",p)}function p(e,t){return e[1]}return\\\"getPrototypeOf\\\"in Object\u0026\u0026(a.RI\u0026\u0026h(document,f),c\u0026\u0026h(c.prototype,f),h(a.gm,f)),t.on(u+\\\"-start\\\",(function(e,t){var n=e[1];if(null!==n\u0026\u0026(\\\"function\\\"==typeof n||\\\"object\\\"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if(\\\"function\\\"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,\\\"fn-\\\",null,e.name||\\\"anonymous\\\"):n}));this.wrapped=e[1]=i}})),t.on(d+\\\"-start\\\",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;\\\"object\\\"==typeof n\u0026\u0026!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n\u0026\u0026t(n,...r)}},3434:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Jt:()=\u003eo,YM:()=\u003ec});var n=r(7836),i=r(5607);const o=\\\"nr@original:\\\".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n=\\\"\\\");const a=\\\"-\\\"===n.charAt(0);for(let s=0;s\u003ct.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=\\\"\\\"),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)\u0026\u0026(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d=\\\"function\\\"==typeof n?n(o,a):n||{}}catch(t){u([t,\\\"\\\",[o,a,s],d],e)}i(r+\\\"start\\\",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+\\\"err\\\",[o,a,e],d,c),e}finally{i(r+\\\"end\\\",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit(\\\"internal-error\\\",e)}catch(e){}}function d(e){return!(e\u0026\u0026\\\"function\\\"==typeof e\u0026\u0026e.apply\u0026\u0026!e[o])}},9414:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{J:()=\u003ec});var n=r(7836),i=r(2646),o=r(944),a=r(3434);const s=new Map;function c(e,t,r,c){if(\\\"object\\\"!=typeof t||!t||\\\"string\\\"!=typeof r||!r||\\\"function\\\"!=typeof t[r])return(0,o.R)(29);const u=function(e){return(e||n.ee).get(\\\"logger\\\")}(e),d=(0,a.YM)(u),l=new i.y(n.P);l.level=c.level,l.customAttributes=c.customAttributes;const f=t[r]?.[a.Jt]||t[r];return s.set(f,l),d.inPlace(t,[r],\\\"wrap-logger-\\\",(()=\u003es.get(f))),u}},9300:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.ajax},3333:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$v:()=\u003eu,TZ:()=\u003en,Zp:()=\u003ei,kd:()=\u003ec,mq:()=\u003es,nf:()=\u003ea,qN:()=\u003eo});const n=r(860).K7.genericEvents,i=[\\\"auxclick\\\",\\\"click\\\",\\\"copy\\\",\\\"keydown\\\",\\\"paste\\\",\\\"scrollend\\\"],o=[\\\"focus\\\",\\\"blur\\\"],a=4,s=1e3,c=[\\\"PageAction\\\",\\\"UserAction\\\",\\\"BrowserPerformance\\\"],u={MARKS:\\\"experimental.marks\\\",MEASURES:\\\"experimental.measures\\\",RESOURCES:\\\"experimental.resources\\\"}},6774:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.jserrors},993:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A$:()=\u003eo,ET:()=\u003ea,TZ:()=\u003es,p_:()=\u003ei});var n=r(860);const i={ERROR:\\\"ERROR\\\",WARN:\\\"WARN\\\",INFO:\\\"INFO\\\",DEBUG:\\\"DEBUG\\\",TRACE:\\\"TRACE\\\"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a=\\\"log\\\",s=n.K7.logging},3785:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{R:()=\u003ec,b:()=\u003eu});var n=r(9908),i=r(1863),o=r(860),a=r(8154),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,[\\\"API/logging/\\\".concat(c.toLowerCase(),\\\"/called\\\")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return\\\"string\\\"==typeof e\u0026\u0026Object.values(s.p_).some((t=\u003et===e.toUpperCase().trim()))}},8154:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{z_:()=\u003eo,XG:()=\u003es,TZ:()=\u003en,rs:()=\u003ei,xV:()=\u003ea});r(6154),r(9566),r(384);const n=r(860).K7.metrics,i=\\\"sm\\\",o=\\\"cm\\\",a=\\\"storeSupportabilityMetrics\\\",s=\\\"storeEventMetrics\\\"},6630:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.pageViewEvent},782:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{BB:()=\u003ed,G4:()=\u003eo,Qb:()=\u003el,TZ:()=\u003ei,Ug:()=\u003ea,_s:()=\u003es,bc:()=\u003eu,yP:()=\u003ec});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:\\\"recordReplay\\\",PAUSE:\\\"pauseReplay\\\",REPLAY_RUNNING:\\\"replayRunning\\\",ERROR_DURING_REPLAY:\\\"errorDuringReplay\\\"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:\\\"Session was reset\\\",sm:\\\"Reset\\\"},IMPORT:{message:\\\"Recorder failed to import\\\",sm:\\\"Import\\\"},TOO_MANY:{message:\\\"429: Too Many Requests\\\",sm:\\\"Too-Many\\\"},TOO_BIG:{message:\\\"Payload was too large\\\",sm:\\\"Too-Big\\\"},CROSS_TAB:{message:\\\"Session Entity was set to OFF on another tab\\\",sm:\\\"Cross-Tab\\\"},ENTITLEMENTS:{message:\\\"Session Replay is not allowed and will not be started\\\",sm:\\\"Entitlement\\\"}},d=5e3,l={API:\\\"api\\\"}},5270:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Aw:()=\u003ec,CT:()=\u003eu,SR:()=\u003es});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO\u0026\u0026(0,o.V)(e)\u0026\u0026!0===(0,i.gD)(e,\\\"session_trace.enabled\\\")}function c(e){return!0===(0,i.gD)(e,\\\"session_replay.preload\\\")\u0026\u0026s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{He:()=\u003ei,Kp:()=\u003es,Lc:()=\u003eu,Rz:()=\u003ed,TZ:()=\u003en,bD:()=\u003eo,d3:()=\u003ea,jx:()=\u003el,uP:()=\u003ec});const n=r(860).K7.sessionTrace,i=\\\"bstResource\\\",o=\\\"resource\\\",a=\\\"-start\\\",s=\\\"-end\\\",c=\\\"fn\\\"+a,u=\\\"fn\\\"+s,d=\\\"pushState\\\",l=1e3},3962:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{AM:()=\u003eo,O2:()=\u003ec,Qu:()=\u003eu,TZ:()=\u003es,ih:()=\u003ed,pP:()=\u003ea,tC:()=\u003ei});var n=r(860);const i=[\\\"click\\\",\\\"keydown\\\",\\\"submit\\\",\\\"popstate\\\"],o=\\\"api\\\",a=\\\"initialPageLoad\\\",s=n.K7.softNav,c={INITIAL_PAGE_LOAD:\\\"\\\",ROUTE_CHANGE:1,UNSPECIFIED:2},u={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},d={IP:\\\"in progress\\\",FIN:\\\"finished\\\",CAN:\\\"cancelled\\\"}},7378:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$p:()=\u003ex,BR:()=\u003eb,Kp:()=\u003eR,L3:()=\u003ey,Lc:()=\u003ec,NC:()=\u003eo,SG:()=\u003ed,TZ:()=\u003ei,U6:()=\u003ep,UT:()=\u003em,d3:()=\u003ew,dT:()=\u003ef,e5:()=\u003eA,gx:()=\u003ev,l9:()=\u003el,oW:()=\u003eh,op:()=\u003eg,rw:()=\u003eu,tH:()=\u003eT,uP:()=\u003es,wW:()=\u003eE,xq:()=\u003ea});var n=r(384);const i=r(860).K7.spa,o=[\\\"click\\\",\\\"submit\\\",\\\"keypress\\\",\\\"keydown\\\",\\\"keyup\\\",\\\"change\\\"],a=999,s=\\\"fn-start\\\",c=\\\"fn-end\\\",u=\\\"cb-start\\\",d=\\\"api-ixn-\\\",l=\\\"remaining\\\",f=\\\"interaction\\\",h=\\\"spaNode\\\",p=\\\"jsonpNode\\\",g=\\\"fetch-start\\\",m=\\\"fetch-done\\\",v=\\\"fetch-body-\\\",b=\\\"jsonp-end\\\",y=(0,n.dV)().o.ST,w=\\\"-start\\\",R=\\\"-end\\\",x=\\\"-body\\\",E=\\\"cb\\\"+R,A=\\\"jsTime\\\",T=\\\"fetch\\\"},4234:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003eo});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{V:()=\u003eo});var n=r(9417),i=r(6154);const o=e=\u003ei.RI\u0026\u0026!0===(0,n.gD)(e,\\\"privacy.cookies_enabled\\\")},8969:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{j:()=\u003eO});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(8154),h=r(384),p=r(6344);const g=[\\\"setErrorHandler\\\",\\\"finished\\\",\\\"addToTrace\\\",\\\"addRelease\\\",\\\"recordCustomEvent\\\",\\\"addPageAction\\\",\\\"setCurrentRouteName\\\",\\\"setPageViewName\\\",\\\"setCustomAttribute\\\",\\\"interaction\\\",\\\"noticeError\\\",\\\"setUserId\\\",\\\"setApplicationVersion\\\",\\\"start\\\",p.G4.RECORD,p.G4.PAUSE,\\\"log\\\",\\\"wrapLogger\\\"],m=[\\\"setErrorHandler\\\",\\\"finished\\\",\\\"addToTrace\\\",\\\"addRelease\\\"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(9414);function x(){const e=(0,h.pV)();g.forEach((t=\u003e{e[t]=(...r)=\u003efunction(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=\u003e{e\u0026\u0026e.api?e.exposed\u0026\u0026e.api[t]\u0026\u0026n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length\u003e1?n:n[0]}(t,...r)}))}const E={};var A=r(9417),T=r(5603),N=r(5284);const S=e=\u003e{const t=e.startsWith(\\\"http\\\");e+=\\\"/\\\",r.p=t?e:\\\"https://\\\"+e};let _=!1;function O(e,t={},g,O){let{init:I,info:P,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();P||(I=L.init,P=L.info,j=L.loader_config),(0,A.xN)(e.agentIdentifier,I||{}),(0,T.a)(e.agentIdentifier,j||{}),P.jsAttributes??={},d.bv\u0026\u0026(P.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,P);const H=(0,A.D0)(e.agentIdentifier),M=[P.beacon,P.errorBeacon];_||(H.proxy.assets\u0026\u0026(S(H.proxy.assets),M.push(H.proxy.assets)),H.proxy.beacon\u0026\u0026M.push(H.proxy.beacon),x(),(0,h.US)(\\\"activatedFeatures\\\",N.B),e.runSoftNavOverSpa\u0026\u0026=!0===H.soft_navigations.enabled\u0026\u0026H.feature_flags.includes(\\\"soft_nav\\\")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?M:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api\u0026\u0026(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,\\\"api\\\");const g={};var x=s.ee.get(e),A=x.get(\\\"tracer\\\");E[e]=b.g.OFF,x.on(p.G4.REPLAY_RUNNING,(t=\u003e{E[e]=t}));var T=\\\"api-\\\",N=T+\\\"ixn-\\\";function S(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(T,n,!0,o||null===r?\\\"session\\\":void 0)(t,r)}function _(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,[\\\"API/log/called\\\"],void 0,n.K7.metrics,x),(0,w.R)(x,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=\u003e{(0,a.p)(f.xV,[\\\"API/wrapLogger/called\\\"],void 0,n.K7.metrics,x),(0,R.J)(x,e,t,{customAttributes:r,level:i})},m.forEach((e=\u003e{g[e]=I(T,e,!0,\\\"api\\\")})),g.addPageAction=I(T,\\\"addPageAction\\\",!0,n.K7.genericEvents),g.recordCustomEvent=I(T,\\\"recordCustomEvent\\\",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if(\\\"string\\\"==typeof t)return\\\"/\\\"!==t.charAt(0)\u0026\u0026(t=\\\"/\\\"+t),(0,o.f)(e).customTransaction=(r||\\\"http://custom.transaction\\\")+t,I(T,\\\"setPageViewName\\\",!0)()},g.setCustomAttribute=function(e,t,r=!1){if(\\\"string\\\"==typeof e){if([\\\"string\\\",\\\"number\\\",\\\"boolean\\\"].includes(typeof t)||null===t)return S(e,t,\\\"setCustomAttribute\\\",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if(\\\"string\\\"==typeof e||null===e)return S(\\\"enduser.id\\\",e,\\\"setUserId\\\",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if(\\\"string\\\"==typeof e||null===e)return S(\\\"application.version\\\",e,\\\"setApplicationVersion\\\",!1);(0,l.R)(42,typeof e)},g.start=()=\u003e{try{(0,a.p)(f.xV,[\\\"API/start/called\\\"],void 0,n.K7.metrics,x),x.emit(\\\"manual-start-all\\\")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,[\\\"API/recordReplay/called\\\"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,x)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,[\\\"API/pauseReplay/called\\\"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,x)},g.interaction=function(e){return(new _).get(\\\"object\\\"==typeof e?e:{})};const O=_.prototype={createTracer:function(e,t){var r={},i=this,o=\\\"function\\\"==typeof t;return(0,a.p)(f.xV,[\\\"API/createTracer/called\\\"],void 0,n.K7.metrics,x),h||(0,a.p)(N+\\\"tracer\\\",[(0,v.t)(),e,r],i,n.K7.spa,x),function(){if(A.emit((o?\\\"\\\":\\\"no-\\\")+\\\"fn-start\\\",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t=\\\"string\\\"==typeof e?new Error(e):e;throw A.emit(\\\"fn-err\\\",[arguments,this,t],r),t}finally{A.emit(\\\"fn-end\\\",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,[\\\"API/\\\"+t+\\\"/called\\\"],void 0,n.K7.metrics,x),i\u0026\u0026(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,x),r?void 0:this}}function P(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=\u003e{t(e),(0,c.Ze)(e,\\\"api\\\")})).catch((e=\u003e{(0,l.R)(27,e),x.abort()}))}return[\\\"actionText\\\",\\\"setName\\\",\\\"setAttribute\\\",\\\"save\\\",\\\"ignore\\\",\\\"onEnd\\\",\\\"getContext\\\",\\\"end\\\",\\\"get\\\"].forEach((e=\u003e{O[e]=I(N,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(N,\\\"routeName\\\",void 0,n.K7.softNav):I(T,\\\"routeName\\\",!0,n.K7.spa),g.noticeError=function(t,r){\\\"string\\\"==typeof t\u0026\u0026(t=new Error(t)),(0,a.p)(f.xV,[\\\"API/noticeError/called\\\"],void 0,n.K7.metrics,x),(0,a.p)(\\\"err\\\",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,x)},d.RI?(0,u.GG)((()=\u003eP()),!0):P(),g}(e.agentIdentifier,O,e.runSoftNavOverSpa)),void 0===e.exposed\u0026\u0026(e.exposed=k),_=!0}},8374:(e,t,r)=\u003e{r.nc=(()=\u003e{try{return document?.currentScript?.nonce}catch(e){}return\\\"\\\"})()},860:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$J:()=\u003eu,K7:()=\u003es,P3:()=\u003ec,XX:()=\u003ei,qY:()=\u003en,v4:()=\u003ea});const n=\\\"events\\\",i=\\\"jserrors\\\",o=\\\"browser/blobs\\\",a=\\\"rum\\\",s={ajax:\\\"ajax\\\",genericEvents:\\\"generic_events\\\",jserrors:i,logging:\\\"logging\\\",metrics:\\\"metrics\\\",pageAction:\\\"page_action\\\",pageViewEvent:\\\"page_view_event\\\",pageViewTiming:\\\"page_view_timing\\\",sessionReplay:\\\"session_replay\\\",sessionTrace:\\\"session_trace\\\",softNav:\\\"soft_navigations\\\",spa:\\\"spa\\\"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:\\\"browser/logs\\\",[s.genericEvents]:\\\"ins\\\"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=\u003e{for(var r in t)i.o(t,r)\u0026\u0026!i.o(e,r)\u0026\u0026Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=\u003ePromise.all(Object.keys(i.f).reduce(((t,r)=\u003e(i.f[r](e,t),t)),[])),i.u=e=\u003e({212:\\\"nr-spa-compressor\\\",249:\\\"nr-spa-recorder\\\",478:\\\"nr-spa\\\"}[e]+\\\"-1.283.1.min.js\\\"),i.o=(e,t)=\u003eObject.prototype.hasOwnProperty.call(e,t),e={},t=\\\"NRBA-1.283.1.PROD:\\\",i.l=(r,n,o,a)=\u003e{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName(\\\"script\\\"),d=0;d\u003cu.length;d++){var l=u[d];if(l.getAttribute(\\\"src\\\")==r||l.getAttribute(\\\"data-webpack\\\")==t+o){s=l;break}}if(!s){c=!0;var f={478:\\\"sha512-xh2gny9FbPW5pomtWyy7hHdQHGboXB/N4nyn8DfA0WA2vCwX0A4j2oDh5iaHPZ7LExtpCN1wH+cmFhC5+XZpvw==\\\",249:\\\"sha512-QwbAv951CmpiBMYrGDX13s51PFIraP7TGD1mhcZv8jILwi1qPZbPL+c98zB6u5kWpOPcdfGLroZW+38lG3ZVHA==\\\",212:\\\"sha512-hVJwKgbpekN6SB9bmRkjdGJxXRXeHDsrVRlTC1EMUEYSeaO8NWR6CjzsDA2iUrhmD1sv4p1TCx6tYULmyZ2Tbw==\\\"};(s=document.createElement(\\\"script\\\")).charset=\\\"utf-8\\\",s.timeout=120,i.nc\u0026\u0026s.setAttribute(\\\"nonce\\\",i.nc),s.setAttribute(\\\"data-webpack\\\",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+\\\"/\\\")\u0026\u0026(s.crossOrigin=\\\"anonymous\\\"),f[a]\u0026\u0026(s.integrity=f[a])}e[r]=[n];var h=(t,n)=\u003e{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode\u0026\u0026s.parentNode.removeChild(s),i\u0026\u0026i.forEach((e=\u003ee(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:\\\"timeout\\\",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c\u0026\u0026document.head.appendChild(s)}},i.r=e=\u003e{\\\"undefined\\\"!=typeof Symbol\u0026\u0026Symbol.toStringTag\u0026\u0026Object.defineProperty(e,Symbol.toStringTag,{value:\\\"Module\\\"}),Object.defineProperty(e,\\\"__esModule\\\",{value:!0})},i.p=\\\"https://js-agent.newrelic.com/\\\",(()=\u003e{var e={38:0,788:0};i.f.j=(t,r)=\u003e{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=\u003en=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=\u003e{if(i.o(e,t)\u0026\u0026(0!==(n=e[t])\u0026\u0026(e[t]=void 0),n)){var o=r\u0026\u0026(\\\"load\\\"===r.type?\\\"missing\\\":r.type),a=r\u0026\u0026r.target\u0026\u0026r.target.src;s.message=\\\"Loading chunk \\\"+t+\\\" failed.\\\\n(\\\"+o+\\\": \\\"+a+\\\")\\\",s.name=\\\"ChunkLoadError\\\",s.type=o,s.request=a,n[1](s)}}),\\\"chunk-\\\"+t,t)}};var t=(t,r)=\u003e{var n,o,[a,s,c]=r,u=0;if(a.some((t=\u003e0!==e[t]))){for(n in s)i.o(s,n)\u0026\u0026(i.m[n]=s[n]);if(c)c(i)}for(t\u0026\u0026t(r);u\u003ca.length;u++)o=a[u],i.o(e,o)\u0026\u0026e[o]\u0026\u0026e[o][0](),e[o]=0},r=self[\\\"webpackChunk:NRBA-1.283.1.PROD\\\"]=self[\\\"webpackChunk:NRBA-1.283.1.PROD\\\"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=\u003e{\\\"use strict\\\";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if(\\\"function\\\"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e(\\\"addPageAction\\\",e,t)}recordCustomEvent(e,t){return this.#e(\\\"recordCustomEvent\\\",e,t)}setPageViewName(e,t){return this.#e(\\\"setPageViewName\\\",e,t)}setCustomAttribute(e,t,r){return this.#e(\\\"setCustomAttribute\\\",e,t,r)}noticeError(e,t){return this.#e(\\\"noticeError\\\",e,t)}setUserId(e){return this.#e(\\\"setUserId\\\",e)}setApplicationVersion(e){return this.#e(\\\"setApplicationVersion\\\",e)}setErrorHandler(e){return this.#e(\\\"setErrorHandler\\\",e)}addRelease(e,t){return this.#e(\\\"addRelease\\\",e,t)}log(e,t){return this.#e(\\\"log\\\",e,t)}}class o extends n{#e(t,...r){if(\\\"function\\\"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e(\\\"start\\\")}finished(e){return this.#e(\\\"finished\\\",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e(\\\"addToTrace\\\",e)}setCurrentRouteName(e){return this.#e(\\\"setCurrentRouteName\\\",e)}interaction(){return this.#e(\\\"interaction\\\")}wrapLogger(e,t,r){return this.#e(\\\"wrapLogger\\\",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=\u003e{t[r]=function(e,t){return!0===(0,s.gD)(t,\\\"\\\".concat(e,\\\".enabled\\\"))}(r,e)})),t}var d=i(8969);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart\u0026\u0026(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on(\\\"manual-start-all\\\",(0,v.J)((()=\u003e{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=\u003e{n=e}));const o=async()=\u003e{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit(\\\"internal-error\\\",[t]),this.featureName===a.K7.sessionReplay\u0026\u0026this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,\\\"aggregate\\\");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee\u0026\u0026this.ee.abort()}};p.RI?(0,h.GG)((()=\u003eo()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)\u0026\u0026!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),E=i(2843),A=i(3878),T=i(782),N=i(1863);class S extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),p.RI\u0026\u0026((0,E.u)((()=\u003e(0,x.p)(\\\"docHidden\\\",[(0,N.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)(\\\"pagehide\\\",(()=\u003e(0,x.p)(\\\"winPagehide\\\",[(0,N.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var _=i(8154);class O extends b{static featureName=_.TZ;constructor(e,t=!0){super(e,_.TZ,t),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name=\\\"UncaughtError\\\",this.message=\\\"string\\\"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t=\\\"Unhandled Promise Rejection\\\";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+\\\": \\\"+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+\\\": \\\"+r?.message,r}function L(e){if(e.error instanceof SyntaxError\u0026\u0026!/:\\\\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error\u0026\u0026!!e.stack}class M extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on(\\\"internal-error\\\",((e,t)=\u003e{this.abortHandler\u0026\u0026(0,x.p)(\\\"ierr\\\",[C(e),(0,N.t)(),!0,{},this.#r,t],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=\u003e{this.#r=e})),p.gm.addEventListener(\\\"unhandledrejection\\\",(e=\u003e{this.abortHandler\u0026\u0026(0,x.p)(\\\"err\\\",[k(e),(0,N.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener(\\\"error\\\",(e=\u003e{this.abortHandler\u0026\u0026(0,x.p)(\\\"err\\\",[L(e),(0,N.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var D=i(8990);let K=1;const U=\\\"nr@id\\\";function V(e){const t=typeof e;return!e||\\\"object\\\"!==t\u0026\u0026\\\"function\\\"!==t?-1:e===p.gm?0:(0,D.I)(e,U,(function(){return K++}))}function G(e){if(\\\"string\\\"==typeof e\u0026\u0026e.length)return e.length;if(\\\"object\\\"==typeof e){if(\\\"undefined\\\"!=typeof ArrayBuffer\u0026\u0026e instanceof ArrayBuffer\u0026\u0026e.byteLength)return e.byteLength;if(\\\"undefined\\\"!=typeof Blob\u0026\u0026e instanceof Blob\u0026\u0026e.size)return e.size;if(!(\\\"undefined\\\"!=typeof FormData\u0026\u0026e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=[\\\"open\\\",\\\"send\\\"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get(\\\"xhr\\\")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u=\\\"readystatechange\\\",d=[\\\"onload\\\",\\\"onerror\\\",\\\"onabort\\\",\\\"onloadstart\\\",\\\"onloadend\\\",\\\"onprogress\\\",\\\"ontimeout\\\"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit(\\\"new-xhr\\\",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState\u003e3\u0026\u0026!s.resolved\u0026\u0026(s.resolved=!0,n.emit(\\\"xhr-resolved\\\",[],e)),i.inPlace(e,d,\\\"fn-\\\",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit(\\\"internal-error\\\",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,[\\\"onreadystatechange\\\"],\\\"fn-\\\",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,\\\"-xhr-\\\",y),n.on(\\\"send-xhr-start\\\",(function(e,t){h(e,t),function(e){l.push(e),a\u0026\u0026(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on(\\\"open-xhr-start\\\",h),a){var g=s\u0026\u0026s.resolve();if(!c\u0026\u0026!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on(\\\"fn-end\\\",(function(e){e[0]\u0026\u0026e[0].type===u||b()}));function b(){for(var e=0;e\u003cl.length;e++)h(0,l[e]);l.length\u0026\u0026(l=[])}function y(e,t){return t}return n}var Y=\\\"fetch-\\\",J=Y+\\\"body-\\\",X=[\\\"arrayBuffer\\\",\\\"blob\\\",\\\"json\\\",\\\"text\\\",\\\"formData\\\"],Q=p.gm.Request,ee=p.gm.Response,te=\\\"prototype\\\";const re={};function ne(e){const t=function(e){return(e||B.ee).get(\\\"fetch\\\")}(e);if(!(Q\u0026\u0026ee\u0026\u0026p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];\\\"function\\\"==typeof i\u0026\u0026(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+\\\"before-start\\\",[r],o),o[B.P]\u0026\u0026o[B.P].dt\u0026\u0026(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+\\\"start\\\",[r,e],a),a.then((function(e){return t.emit(n+\\\"end\\\",[null,e],a),e}),(function(e){throw t.emit(n+\\\"end\\\",[e],a),e}))})}return re[t.debugId]=1,X.forEach((e=\u003e{r(Q[te],e,J),r(ee[te],e,J)})),r(p.gm,\\\"fetch\\\",Y),t.on(Y+\\\"end\\\",(function(e,r){var n=this;if(r){var i=r.headers.get(\\\"content-length\\\");null!==i\u0026\u0026(n.rxSize=i),t.emit(Y+\\\"done\\\",[null,r],n)}else t.emit(Y+\\\"done\\\",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||\\\"\\\").toString()||null,i=(t.agentID||\\\"\\\").toString()||null,o=(t.trustKey||\\\"\\\").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)\u0026\u0026this.useTraceContextHeadersForCors())\u0026\u0026(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin\u0026\u0026!this.excludeNewrelicHeader()||!e.sameOrigin\u0026\u0026this.isAllowedOrigin(e)\u0026\u0026this.useNewrelicHeaderForCors())\u0026\u0026(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return\\\"00-\\\"+t+\\\"-\\\"+e+\\\"-01\\\"}generateTraceContextStateHeader(e,t,r,n,i){return i+\\\"@nr=0-1-\\\"+r+\\\"-\\\"+n+\\\"-\\\"+e+\\\"----\\\"+t}generateTraceHeader(e,t,r,n,i,o){if(!(\\\"function\\\"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:\\\"Browser\\\",ac:n,ap:i,id:e,tr:t,ti:r}};return o\u0026\u0026n!==o\u0026\u0026(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()\u0026\u0026this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\")\u0026\u0026(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n\u003cr.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname\u0026\u0026e.protocol===i.protocol\u0026\u0026e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=[\\\"load\\\",\\\"error\\\",\\\"abort\\\",\\\"timeout\\\"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=\u003e(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:\\\"xhr\\\",fetch:\\\"fetch\\\",beacon:\\\"beacon\\\"};p.gm?.performance?.getEntriesByType(\\\"resource\\\").forEach((t=\u003e{if(t.initiatorType in e\u0026\u00260!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler(\\\"xhr\\\",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener(\\\"load\\\",(function(r){E(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener(\\\"progress\\\",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid\u0026\u0026this.sameOrigin\u0026\u0026r.setRequestHeader(\\\"X-NewRelic-ID\\\",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader\u0026\u0026(r.setRequestHeader(\\\"newrelic\\\",i.newrelicHeader),o=!0),i.traceContextParentHeader\u0026\u0026(r.setRequestHeader(\\\"traceparent\\\",i.traceContextParentHeader),i.traceContextStateHeader\u0026\u0026r.setRequestHeader(\\\"tracestate\\\",i.traceContextStateHeader),o=!0),o\u0026\u0026(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n\u0026\u0026i){var a=G(i);a\u0026\u0026(n.txSize=a)}this.startTime=(0,N.t)(),this.body=i,this.listener=function(e){try{\\\"abort\\\"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),(\\\"load\\\"!==e.type||o.called===o.totalCbs\u0026\u0026(o.onloadCalled||\\\"function\\\"!=typeof r.onload)\u0026\u0026\\\"function\\\"==typeof o.end)\u0026\u0026o.end(r)}catch(e){try{t.emit(\\\"internal-error\\\",[e])}catch(e){}}};for(var s=0;s\u003cde;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled\u0026\u0026\\\"function\\\"==typeof r.onload||\\\"function\\\"!=typeof this.end||this.end(r)}function d(e,t){var r=\\\"\\\"+V(e)+!!t;this.xhrGuids\u0026\u0026!this.xhrGuids[r]\u0026\u0026(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=\\\"\\\"+V(e)+!!t;this.xhrGuids\u0026\u0026this.xhrGuids[r]\u0026\u0026(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,N.t)()}function h(e,r){r instanceof fe\u0026\u0026\\\"load\\\"===e[0]\u0026\u0026t.emit(\\\"xhr-load-added\\\",[e[1],e[2]],r)}function g(e,r){r instanceof fe\u0026\u0026\\\"load\\\"===e[0]\u0026\u0026t.emit(\\\"xhr-load-removed\\\",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe\u0026\u0026(\\\"onload\\\"===r\u0026\u0026(this.onload=!0),(\\\"load\\\"===(e[0]\u0026\u0026e[0].type)||this.onload)\u0026\u0026(this.xhrCbStart=(0,N.t)()))}function v(e,r){this.xhrCbStart\u0026\u0026t.emit(\\\"xhr-cb-time\\\",[(0,N.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if(\\\"string\\\"==typeof e[0]?0===(t=e[0]).length\u0026\u0026p.RI\u0026\u0026(t=\\\"\\\"+p.gm.location.href):e[0]\u0026\u0026e[0].url?t=e[0].url:p.gm?.URL\u0026\u0026e[0]\u0026\u0026e[0]instanceof URL?t=e[0].href:\\\"function\\\"==typeof e[0].toString\u0026\u0026(t=e[0].toString()),\\\"string\\\"==typeof t\u0026\u00260!==t.length){t\u0026\u0026(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i\u0026\u0026(i.newrelicHeader||i.traceContextParentHeader))if(e[0]\u0026\u0026e[0].headers)s(e[0].headers,i)\u0026\u0026(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)\u0026\u0026(this.dt=i),e.length\u003e1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader\u0026\u0026(e.set(\\\"newrelic\\\",t.newrelicHeader),r=!0),t.traceContextParentHeader\u0026\u0026(e.set(\\\"traceparent\\\",t.traceContextParentHeader),t.traceContextStateHeader\u0026\u0026e.set(\\\"tracestate\\\",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,N.t)(),this.dt=t,e.length\u003e=1\u0026\u0026(this.target=e[0]),e.length\u003e=2\u0026\u0026(this.opts=e[1]);var r,n=this.opts||{},i=this.target;\\\"string\\\"==typeof i?r=i:\\\"object\\\"==typeof i\u0026\u0026i instanceof le?r=i.url:p.gm?.URL\u0026\u0026\\\"object\\\"==typeof i\u0026\u0026i instanceof URL\u0026\u0026(r=i.href),pe(this,r);var o=(\\\"\\\"+(i\u0026\u0026i instanceof le\u0026\u0026i.method||n.method||\\\"GET\\\")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,N.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,\\\"string\\\"==typeof this.rxSize\u0026\u0026this.rxSize.length\u003e0\u0026\u0026(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,N.t)()-this.startTime};r(\\\"xhr\\\",[this.params,i,this.startTime,this.endTime,\\\"fetch\\\"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t\u003cde;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,N.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status\u0026\u0026(t.status=0):E(this,e),n.cbTime=this.cbTime,r(\\\"xhr\\\",[t,n,this.startTime,this.endTime,\\\"xhr\\\"],this,a.K7.ajax))}}function E(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return\\\"json\\\"===r\u0026\u0026null!==t?t:\\\"arraybuffer\\\"===r||\\\"blob\\\"===r||\\\"json\\\"===r?G(e.response):\\\"text\\\"===r||\\\"\\\"===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n\u0026\u0026(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader(\\\"X-NewRelic-App-Data\\\");i\u0026\u0026((0,x.p)(_.rs,[\\\"Ajax/CrossApplicationTracing/Header/Seen\\\"],void 0,a.K7.metrics,t),e.params.cat=i.split(\\\", \\\").pop())}e.loadCaptureCalled=!0}t.on(\\\"new-xhr\\\",i),t.on(\\\"open-xhr-start\\\",o),t.on(\\\"open-xhr-end\\\",s),t.on(\\\"send-xhr-start\\\",c),t.on(\\\"xhr-cb-time\\\",u),t.on(\\\"xhr-load-added\\\",d),t.on(\\\"xhr-load-removed\\\",l),t.on(\\\"xhr-resolved\\\",f),t.on(\\\"addEventListener-end\\\",h),t.on(\\\"removeEventListener-end\\\",g),t.on(\\\"fn-end\\\",v),t.on(\\\"fetch-before-start\\\",b),t.on(\\\"fetch-start\\\",y),t.on(\\\"fn-start\\\",m),t.on(\\\"fetch-done\\\",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+\\\":\\\"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ge={},me=[\\\"pushState\\\",\\\"replaceState\\\"];function ve(e){const t=function(e){return(e||B.ee).get(\\\"history\\\")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,\\\"-\\\")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Ee,Lc:Ae,uP:Te,Rz:Ne}=be;class Se extends b{static featureName=Ee;constructor(e,t=!0){super(e,Ee,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Te,(function(e,t){this.bstStart=(0,N.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)(\\\"bst\\\",[e[0],t,this.bstStart,(0,N.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Ne+Re,(function(e){this.time=(0,N.t)(),this.startPath=location.pathname+location.hash})),r.on(Ne+xe,(function(e){(0,x.p)(\\\"bstHist\\\",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=\u003e{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var _e=i(2614);class Oe extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem(\\\"\\\".concat(_e.H3,\\\"_\\\").concat(_e.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)\u0026\u0026this.ee.on(t.G4.RECORD,(()=\u003ethis.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on(\\\"err\\\",(e=\u003e{this.replayRunning\u0026\u0026(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=\u003e{this.replayRunning=e}))}#s(e){return e\u0026\u0026(e.sessionReplayMode===_e.g.FULL||e.sessionReplayMode===_e.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee,agentRef:this.#o}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==_e.g.FULL\u0026\u0026this.featAggregate.initializeRecording(_e.g.FULL,!0):(this.#i=_e.g.FULL,this.#c(t.Qb.API),this.recorder\u0026\u0026this.recorder.parent.mode!==_e.g.FULL\u0026\u0026(this.recorder.parent.mode=_e.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class Pe extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=\u003e{(0,A.sp)(e,(e=\u003e{a(e)}),!0)}));const n=()=\u003e(0,x.p)(\\\"newURL\\\",[(0,N.t)(),\\\"\\\"+window.location],void 0,this.featureName,this.ee);r.on(\\\"pushState-end\\\",n),r.on(\\\"replaceState-end\\\",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)(\\\"popstate\\\",(e=\u003e(0,x.p)(\\\"newURL\\\",[e.timeStamp,\\\"\\\"+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=\u003e{i||(i=!0,requestAnimationFrame((()=\u003e{(0,x.p)(\\\"newDom\\\",[(0,N.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=\u003e{(0,x.p)(\\\"newUIEvent\\\",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var je=i(7378);const Ce={},ke=[\\\"appendChild\\\",\\\"insertBefore\\\",\\\"replaceChild\\\"];function Le(e){const t=function(e){return(e||B.ee).get(\\\"jsonp\\\")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?\u0026](?:callback|cb)=([^\u0026#]+)/,i=/(.*)\\\\.([^.]+)/,o=/^(\\\\w+)(\\\\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,\\\"dom-\\\"),t.on(\\\"dom-start\\\",(function(e){!function(e){if(!e||\\\"string\\\"!=typeof e.nodeName||\\\"script\\\"!==e.nodeName.toLowerCase())return;if(\\\"function\\\"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t\u0026\u0026t.length\u003e=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if(\\\"function\\\"!=typeof u.parent[u.key])return;var d={};function l(){t.emit(\\\"jsonp-end\\\",[],d),e.removeEventListener(\\\"load\\\",l,(0,A.jT)(!1)),e.removeEventListener(\\\"error\\\",f,(0,A.jT)(!1))}function f(){t.emit(\\\"jsonp-error\\\",[],d),t.emit(\\\"jsonp-end\\\",[],d),e.removeEventListener(\\\"load\\\",l,(0,A.jT)(!1)),e.removeEventListener(\\\"error\\\",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],\\\"cb-\\\",d),e.addEventListener(\\\"load\\\",l,(0,A.jT)(!1)),e.addEventListener(\\\"error\\\",f,(0,A.jT)(!1)),t.emit(\\\"new-jsonp\\\",[e.src],d)}(e[0])})),t}const He={};function Me(e){const t=function(e){return(e||B.ee).get(\\\"promise\\\")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i\u0026\u0026function(){function e(r){var o=t.context(),a=n(r,\\\"executor-\\\",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,\\\"name\\\",{value:\\\"Promise\\\"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),[\\\"all\\\",\\\"race\\\"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=\u003e{this.resolve(e).then(a(\\\"all\\\"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit(\\\"propagate\\\",[null,!i],o,!1,!1),i=i||!e}}}})),[\\\"resolve\\\",\\\"reject\\\"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r\u0026\u0026t.emit(\\\"propagate\\\",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],\\\"cb-\\\",a,null,!1),e[1]=n(e[1],\\\"cb-\\\",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit(\\\"propagate\\\",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on(\\\"executor-start\\\",(function(e){e[0]=n(e[0],\\\"resolve-\\\",this,null,!1),e[1]=n(e[1],\\\"resolve-\\\",this,null,!1)})),t.on(\\\"executor-err\\\",(function(e,t,r){e[1](r)})),t.on(\\\"cb-end\\\",(function(e,r,n){t.emit(\\\"propagate\\\",[n,!0],this.nextPromise,!1,!1)})),t.on(\\\"propagate\\\",(function(e,r,n){this.getCtx\u0026\u0026!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r\u0026\u0026r.getCtx?r.getCtx():this})}))}(),t}const De={},Ke=\\\"setTimeout\\\",Ue=\\\"setInterval\\\",Ve=\\\"clearTimeout\\\",Ge=\\\"-start\\\",Fe=[Ke,\\\"setImmediate\\\",Ue,Ve,\\\"clearImmediate\\\"];function Be(e){const t=function(e){return(e||B.ee).get(\\\"timer\\\")}(e);if(De[t.debugId]++)return t;De[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+\\\"-\\\"),r.inPlace(p.gm,Fe.slice(2,3),Ue+\\\"-\\\"),r.inPlace(p.gm,Fe.slice(3),Ve+\\\"-\\\"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],\\\"fn-\\\",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],\\\"fn-\\\",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get(\\\"mutation\\\")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n\u0026\u0026(window.MutationObserver=function(e){return this instanceof n?new n(r(e,\\\"fn-\\\")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Je,wW:Xe,e5:$e,tH:Qe,uP:et,rw:tt,Lc:rt}=je;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get(\\\"tracer\\\"),o=Le(this.ee),a=Me(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get(\\\"events\\\"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit(\\\"newURL\\\",[\\\"\\\"+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,N.t)()}function m(){n--,window.location.hash!==r\u0026\u0026h(0,!0);var e=(0,N.t)();this[$e]=~~this[$e]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,N.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Xe,m),o.on(Xe,m),this.ee.on(\\\"fn-err\\\",((...t)=\u003e{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)(\\\"function-err\\\",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,\\\"xhr-resolved\\\"],this.featureName),u.buffer([et],this.featureName),s.buffer([\\\"setTimeout\\\"+Ye,\\\"clearTimeout\\\"+Ze,et],this.featureName),c.buffer([et,\\\"new-xhr\\\",\\\"send-xhr\\\"+Ze],this.featureName),d.buffer([Qe+Ze,Qe+\\\"-done\\\",Qe+Je+Ze,Qe+Je+Ye],this.featureName),l.buffer([\\\"newURL\\\"],this.featureName),f.buffer([et],this.featureName),a.buffer([\\\"propagate\\\",tt,Xe,\\\"executor-err\\\",\\\"resolve\\\"+Ze],this.featureName),i.buffer([et,\\\"no-\\\"+et],this.featureName),o.buffer([\\\"new-jsonp\\\",\\\"cb-start\\\",\\\"jsonp-error\\\",\\\"jsonp-end\\\"],this.featureName),v(d,Qe+Ze),v(d,Qe+\\\"-done\\\"),v(o,\\\"new-jsonp\\\"),v(o,\\\"jsonp-end\\\"),v(o,\\\"cb-start\\\"),l.on(\\\"pushState-end\\\",h),l.on(\\\"replaceState-end\\\",h),window.addEventListener(\\\"hashchange\\\",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener(\\\"load\\\",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener(\\\"popstate\\\",(function(){h(0,n\u003e1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled,e.init.performance.resources.enabled];if(p.RI\u0026\u0026(e.init.user_actions.enabled\u0026\u0026(it.Zp.forEach((e=\u003e(0,A.sp)(e,(e=\u003e(0,x.p)(\\\"ua\\\",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=\u003e{const t=(0,v.s)((e=\u003e{(0,x.p)(\\\"ua\\\",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled\u0026\u0026p.gm.PerformanceObserver?.supportedEntryTypes.includes(\\\"resource\\\"))){new PerformanceObserver((e=\u003e{e.getEntries().forEach((e=\u003e{(0,x.p)(\\\"browserPerformance.resource\\\",[e],void 0,this.featureName,this.ee)}))})).observe({type:\\\"resource\\\",buffered:!0})}r.some((e=\u003ee))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785),ct=i(9414);class ut extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;(0,ct.J)(r,p.gm.console,\\\"log\\\",{level:\\\"info\\\"}),(0,ct.J)(r,p.gm.console,\\\"error\\\",{level:\\\"error\\\"}),(0,ct.J)(r,p.gm.console,\\\"warn\\\",{level:\\\"warn\\\"}),(0,ct.J)(r,p.gm.console,\\\"info\\\",{level:\\\"info\\\"}),(0,ct.J)(r,p.gm.console,\\\"debug\\\",{level:\\\"debug\\\"}),(0,ct.J)(r,p.gm.console,\\\"trace\\\",{level:\\\"trace\\\"}),this.ee.on(\\\"wrap-logger-end\\\",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=\u003ee.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||\\\"agent\\\"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=\u003ea.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=\u003e{if(!t[r.featureName]\u0026\u0026r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa\u0026\u0026r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa\u0026\u0026r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=\u003e!(e in this.features)));n.length\u003e0\u0026\u0026(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,S,Se,Oe,O,M,ot,ut,Pe,nt],loaderType:\\\"spa\\\"})})()})();\",\"google\",\"testAutomationFlags\",{\"_775\":24,\"_776\":24,\"_777\":24,\"_778\":24,\"_779\":24,\"_780\":24,\"_781\":24,\"_782\":24,\"_783\":24,\"_32\":24,\"_784\":24,\"_785\":171,\"_786\":171},\"disableAds\",\"disableIirisAuth\",\"disableWelcomeAd\",\"disableBigskyAd\",\"disableIirisRecommend\",\"disableDcts\",\"disableWeatherWidget\",\"disableCashGrainWidget\",\"disableCommoditiesWidget\",\"disableCookieBanner\",\"overrideBrandStyling\",\"overrideThemeStyling\",\"configState\",{\"_54\":55,\"_52\":53,\"_789\":8,\"_790\":-7,\"_791\":24,\"_711\":792,\"_796\":797,\"_799\":800,\"_814\":815},\"uiBrand\",\"colors\",\"isMarketsDivision\",{\"_7\":793,\"_794\":795},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt06f49c53183e1192/65def48d237abe040a0cdb1b/Placeholder_Image.svg\",\"contributor\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltae99c6600909049d/6582ebe1e746c5040a189f2b/theme1_placeholder_avatar.png\",\"media\",{\"_798\":171},\"brightcoveAccountId\",\"newsletterSignupPromo\",{\"_801\":802,\"_803\":804},\"unbounceURL\",\"https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1\u0026sr=pp\u0026_t=pp:\u0026qf=w_itpb86\u0026ch=itpsitebtn\",\"elnConfig\",{\"_805\":806},\"newsletter\",{\"_807\":808,\"_812\":813},\"subscribeForm\",{\"_115\":809,\"_810\":811},\"Subscribe to Our Newsletters\",\"subtitle\",\"Subtitle\",\"subscribeConfirm\",{\"_115\":809,\"_810\":811},\"proxyConfigs\",{\"_816\":24,\"_817\":171},\"proxyEnabled\",\"proxyRootPath\",\"brandConfig\",{\"_13\":14,\"_820\":14,\"_821\":10,\"_822\":823,\"_15\":16,\"_33\":34,\"_824\":825,\"_38\":826,\"_835\":836,\"_798\":171,\"_43\":44,\"_50\":841,\"_842\":843,\"_847\":804,\"_738\":767,\"_848\":849,\"_877\":878},\"siteFullName\",\"siteUrl\",\"siteDivision\",\"Informa Tech\",\"authentication\",{},{\"_827\":828,\"_830\":831,\"_832\":833,\"_63\":834},\"local\",{\"_40\":829},\"dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e-test\",\"preview\",{\"_40\":829},\"staging\",{\"_40\":41},{\"_40\":41},\"unbounce\",{\"_827\":837,\"_830\":838,\"_832\":839,\"_63\":840},{},{},{},{},{\"_7\":8,\"_52\":53,\"_54\":55},\"newsletterSignupPromoContent\",{\"_115\":809,\"_844\":171,\"_845\":846},\"message\",\"buttonText\",\"Sign Me Up\",\"eln\",\"iirisRecommendation\",{\"_850\":851,\"_852\":853,\"_854\":855,\"_856\":857,\"_858\":171,\"_859\":171,\"_860\":861,\"_862\":863,\"_864\":865,\"_866\":193,\"_867\":868,\"_869\":870,\"_871\":872,\"_873\":874,\"_875\":876,\"_7\":8},\"id\",\"widget-1717150909887\",\"division\",\"it\",\"brandFamily\",\"enterpriseit\",\"entityTagBackground\",\"#333333BF\",\"showBy\",\"showTime\",\"borderRadius\",\"4\",\"imageWidth\",\"324\",\"imageHeight\",\"182\",\"imagePosition\",\"dropShadow\",\"#FFEB00\",\"entityTagBorderColor\",\"#333333\",\"borderColor\",\"#e6e6e6\",\"redirectMode\",\"same\",\"recipe\",\"related-items\",\"articleSocialShareToggle\",{\"_879\":26,\"_880\":26,\"_881\":26},\"print\",\"email\",\"reddit\",\"routes/$topic.$slug._index\",{\"_884\":24,\"_885\":-7,\"_886\":849,\"_887\":24,\"_888\":24,\"_889\":890,\"_946\":947,\"_1792\":1793,\"_1814\":1815,\"_1824\":1825,\"_1871\":24},\"isRequestedByGoogleBot\",\"weatherWidgetConfig\",\"iirisRecommendationConfig\",\"isUserEntitled\",\"isGatedAsPaid\",\"metadata\",{\"_88\":891,\"_892\":893,\"_894\":895,\"_896\":12,\"_897\":898,\"_908\":909,\"_910\":171,\"_794\":911,\"_942\":24,\"_943\":24,\"_944\":24,\"_945\":171},\"video\",\"uid\",\"bltaf23dbf9dece7491\",\"aid\",\"590945\",\"reg\",\"pterm\",{\"_899\":224,\"_900\":901,\"_902\":903,\"_904\":905},\"main\",\"parent\",\"Operating Systems\",\"grandparent\",{\"_115\":171},\"additional\",[906],{\"_88\":907,\"_115\":901,\"_59\":214},\"TopicPrimary\",\"contentFormat\",\"How To\",\"buyersJourney\",[912],{\"_115\":258,\"_57\":258,\"_913\":171,\"_914\":171,\"_186\":260,\"_184\":259,\"_915\":171,\"_916\":917},\"companyName\",\"role\",\"tagLine\",\"summary\",[918,929],{\"_88\":919,\"_920\":921,\"_924\":925},\"paragraph\",\"attrs\",{\"_922\":923},\"textAlign\",\"left\",\"content\",[926],{\"_88\":927,\"_927\":928},\"text\",\"Brien Posey is a bestselling technology author, a speaker, and a 20X Microsoft MVP. In addition to his ongoing work in IT, Posey has spent the last several years training as a commercial astronaut candidate in preparation to fly on a mission to study polar mesospheric clouds from space.\",{\"_88\":919,\"_920\":930,\"_924\":931},{\"_922\":923},[932],{\"_88\":927,\"_933\":934,\"_927\":937},\"marks\",[935],{\"_88\":184,\"_920\":936},{\"_5\":937,\"_938\":939,\"_940\":-5,\"_941\":-5},\"https://brienposey.com/\",\"target\",\"_self\",\"rel\",\"class\",\"gatedWithExternalForm\",\"gatedWithSiteReg\",\"paidGating\",\"sponsorName\",\"template\",{\"_948\":949,\"_953\":954,\"_69\":-5,\"_961\":962,\"_916\":963,\"_115\":964,\"_165\":964,\"_965\":966,\"_967\":968,\"_969\":970,\"_910\":171,\"_180\":911,\"_971\":972,\"_973\":-7,\"_974\":975,\"_983\":-7,\"_984\":-7,\"_985\":986,\"_999\":1000,\"_1001\":1002,\"_1003\":1004,\"_1005\":1006,\"_178\":1544,\"_892\":893,\"_1545\":1546,\"_1553\":1554,\"_908\":1559,\"_1560\":1561,\"_1562\":1563,\"_1564\":1565,\"_1762\":1763,\"_1764\":1765,\"_1770\":-7,\"_944\":1771,\"_1774\":1775,\"_891\":1781,\"_888\":24},\"breadcrumbs\",[950,952],{\"_59\":951,\"_115\":749},\"/\",{\"_59\":225,\"_115\":224},\"topics\",[955,960],{\"_956\":957,\"_115\":224,\"_59\":225,\"_958\":959},\"__typename\",\"TopicSecondary\",\"parentTopic\",{\"_115\":901},{\"_956\":907,\"_115\":901,\"_59\":214},\"searchParams\",{},\"Watch this video to learn how to integrate ChatGPT capabilities into your PowerShell scripts.\",\"ChatGPT Integration in PowerShell (Scripting Demo)\",\"authoredBy\",\"Spencer Smith\",\"authoredOn\",\"2023-09-27T23:11:38+00:00\",\"oldUrl\",\"https://www.itprotoday.com/powershell/chatgpt-integration-powershell-scripting-demo\",\"readTime\",0,\"panelsModule\",\"newsletterSignUpPromo\",{\"_115\":976,\"_844\":977,\"_978\":979,\"_845\":980,\"_190\":193,\"_981\":982},\"Sign up for the ITPro Today newsletter\",\"Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.\",\"newsletterId\",\"blt96562e27e259477c\",\"Newsletter Sign-Up\",\"mode\",\"dark\",\"resourcesModule\",\"embedModule\",\"socialShare\",[987,989,991,993,996],{\"_88\":95,\"_59\":988},\"https://www.linkedin.com/sharing/share-offsite/?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-\",{\"_88\":89,\"_59\":990},\"http://www.facebook.com/sharer/sharer.php?u=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-\",{\"_88\":92,\"_59\":992},\"http://www.twitter.com/intent/tweet?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-\",{\"_88\":994,\"_59\":995},\"Reddit\",\"https://www.reddit.com/submit?url=https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-\u0026title=ChatGPT%20Integration%20in%20PowerShell%20(Scripting%20Demo)\",{\"_88\":997,\"_59\":998},\"Email\",\"mailto:?subject=ChatGPT Integration in PowerShell (Scripting Demo)\u0026body=I%20thought%20the%20following%20from%20ITPro%20Today%20might%20interest%20you.%0D%0A%0D%0A%20ChatGPT%20Integration%20in%20PowerShell%20(Scripting%20Demo)%0D%0Ahttps%3A%2F%2Fwww.itprotoday.com%2Fpowershell%2Fchatgpt-integration-in-powershell-scripting-demo-\",\"publishedDate\",\"2023-09-28T07:00:00.000Z\",\"keywords\",[],\"atAGlance\",[],\"bodyJson\",[1007,1015,1022,1032,1041,1054,1058,1063,1070,1072,1077,1079,1084,1089,1094,1096,1101,1106,1108,1113,1118,1120,1125,1130,1137,1142,1144,1149,1154,1159,1164,1169,1174,1179,1184,1189,1194,1199,1210,1217,1222,1227,1231,1236,1238,1242,1247,1252,1257,1262,1267,1272,1277,1282,1287,1292,1297,1299,1306,1311,1316,1321,1326,1331,1336,1341,1346,1351,1358,1363,1370,1375,1380,1385,1390,1394,1399,1404,1411,1416,1418,1423,1428,1433,1438,1443,1448,1453,1460,1465,1470,1475,1482,1487,1492,1497,1504,1509,1514,1519,1524,1529,1534,1539],{\"_88\":919,\"_920\":1008,\"_924\":1009},{\"_922\":923},[1010],{\"_88\":927,\"_933\":1011,\"_927\":1014},[1012],{\"_88\":1013},\"italic\",\"In this video tutorial, Brien Posey explains a PowerShell script that allows you to interact with ChatGPT. The functions and structure of the script make it easy to integrate ChatGPT capabilities into your own PowerShell scripts.\",{\"_88\":919,\"_920\":1016,\"_924\":1017},{\"_922\":923},[1018],{\"_88\":927,\"_933\":1019,\"_927\":1021},[1020],{\"_88\":1013},\"The transcript below has been lightly edited for clarity and length.\",{\"_88\":1023,\"_920\":1024,\"_924\":1026},\"heading\",{\"_922\":923,\"_1025\":354},\"level\",[1027],{\"_88\":927,\"_933\":1028,\"_927\":1031},[1029],{\"_88\":1030},\"bold\",\"Transcript:\",{\"_88\":919,\"_920\":1033,\"_924\":1034},{\"_922\":923},[1035,1039],{\"_88\":927,\"_933\":1036,\"_927\":1038},[1037],{\"_88\":1030},\"Brien Posey: \",{\"_88\":927,\"_927\":1040},\"Hello, greetings, and welcome. I'm Brien Posey. In this video, I want to show you how to use PowerShell to interact with ChatGPT.\",{\"_88\":919,\"_920\":1042,\"_924\":1043},{\"_922\":923},[1044,1046,1052],{\"_88\":927,\"_927\":1045},\"So, what I've done is found a script on GitHub that allows you to carry on a ChatGPT conversation from PowerShell. I took that script, and I broke it down to its most basic components. I want to show you what those components are. Knowing what those components are will make it much easier to \",{\"_88\":927,\"_933\":1047,\"_927\":1051},[1048],{\"_88\":184,\"_920\":1049},{\"_5\":1050,\"_938\":939,\"_940\":-5,\"_941\":-5},\"/powershell/how-to-build-chatgpt-enabled-powershell-scripts\",\"integrate ChatGPT capabilities into your own scripts\",{\"_88\":927,\"_927\":1053},\".\",{\"_88\":1055,\"_1056\":1057},\"ad\",\"pos\",\"300_1v_article\",{\"_88\":919,\"_920\":1059,\"_924\":1060},{\"_922\":923},[1061],{\"_88\":927,\"_927\":1062},\"Let's go ahead and get started by looking at what my script does.\",{\"_88\":1064,\"_920\":1065,\"_924\":1067},\"codeBlock\",{\"_1066\":-5},\"language\",[1068],{\"_88\":927,\"_927\":1069},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e$Key = \\\"Get-Content C:ScriptsGPTKey.txt\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e$ApiEndpoint = \\\"https://api.openai.com/v1/chat/completions\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e$AiSystemMessage = \\\"You are a helpful assistant\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e[System.Collections.Generic.List[Hashtable]]$MessageHistory = @()\u003c/span\u003e\u003c/span\u003e\",{\"_88\":1064,\"_920\":1071},{\"_1066\":-5},{\"_88\":1064,\"_920\":1073,\"_924\":1074},{\"_1066\":-5},[1075],{\"_88\":927,\"_927\":1076},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003eFunction Initialize-MessageHistory ($message){\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $script:MessageHistory.Clear()\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $script:MessageHistory.Add(@{\\\"role\\\" = \\\"system\\\"; \\\"content\\\" = $message}) | Out-Null\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e}\u003c/span\u003e\u003c/span\u003e\",{\"_88\":1064,\"_920\":1078},{\"_1066\":-5},{\"_88\":1064,\"_920\":1080,\"_924\":1081},{\"_1066\":-5},[1082],{\"_88\":927,\"_927\":1083},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003efunction Invoke-ChatGPT ($MessageHistory) {\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e # Set the request headers\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $headers = @{\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"Content-Type\\\" = \\\"application/json\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"Authorization\\\" = \\\"Bearer $ApiKey\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e } \u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1085,\"_924\":1086},{\"_922\":923},[1087],{\"_88\":927,\"_927\":1088},\" \",{\"_88\":1064,\"_920\":1090,\"_924\":1091},{\"_1066\":-5},[1092],{\"_88\":927,\"_927\":1093},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e# Form the Request\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $requestBody = @{\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"model\\\" = \\\"gpt-3.5-turbo\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"messages\\\" = $MessageHistory\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"max_tokens\\\" = 1000 # Max amount of tokens the AI will respond with\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"temperature\\\" = 0.7 # Lower is more coherent and conservative, higher is more creative and diverse.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e }\u003c/span\u003e\u003c/span\u003e\",{\"_88\":1064,\"_920\":1095},{\"_1066\":-5},{\"_88\":1064,\"_920\":1097,\"_924\":1098},{\"_1066\":-5},[1099],{\"_88\":927,\"_927\":1100},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e # Send the request\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $response = Invoke-RestMethod -Method POST -Uri $ApiEndpoint -Headers $headers -Body (ConvertTo-Json $requestBody)\u003c/span\u003e\u003c/span\u003e\",{\"_88\":1064,\"_920\":1102,\"_924\":1103},{\"_1066\":-5},[1104],{\"_88\":927,\"_927\":1105},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e # Return the message content\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e return $response.choices[0].message.content\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e}\u003c/span\u003e\u003c/span\u003e\",{\"_88\":1064,\"_920\":1107},{\"_1066\":-5},{\"_88\":1064,\"_920\":1109,\"_924\":1110},{\"_1066\":-5},[1111],{\"_88\":927,\"_927\":1112},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e#Main Body\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003eInitialize-MessageHistory $AiSystemMessage\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $userMessage = Read-Host \\\"`Enter your query: \\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $MessageHistory.Add(@{\\\"role\\\"=\\\"user\\\"; \\\"content\\\"=$userMessage})\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $aiResponse = Invoke-ChatGPT $MessageHistory\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e Write-Host \\\"AI: $aiResponse\\\" -ForegroundColor Yellow\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $MessageHistory.Add(@{\\\"role\\\"=\\\"assistant\\\"; \\\"content\\\"=$aiResponse})\u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1114,\"_924\":1115},{\"_922\":923},[1116],{\"_88\":927,\"_927\":1117},\"When I read the script, I'm prompted to enter my query. I'm just going to type, “Hello,” and press Enter. My query goes up to ChatGPT and then a response is returned. I'm then dropped back down to the PowerShell command prompt. That's the entire thing. That's what this script does.\",{\"_88\":1055,\"_1056\":1119},\"native_1v\",{\"_88\":919,\"_920\":1121,\"_924\":1122},{\"_922\":923},[1123],{\"_88\":927,\"_927\":1124},\"Now that I've shown you what this does, let's go ahead and look at the code behind the script.\",{\"_88\":919,\"_920\":1126,\"_924\":1127},{\"_922\":923},[1128],{\"_88\":927,\"_927\":1129},\"And as I mentioned, this is an adaptation of some code that I found on GitHub.\",{\"_88\":1023,\"_920\":1131,\"_924\":1132},{\"_922\":923,\"_1025\":354},[1133],{\"_88\":927,\"_933\":1134,\"_927\":1136},[1135],{\"_88\":1030},\"First Block of Code\",{\"_88\":919,\"_920\":1138,\"_924\":1139},{\"_922\":923},[1140],{\"_88\":927,\"_927\":1141},\"To use ChatGPT programmatically, you're going to need an API key. The API key is something that you can get from ChatGPT. There is a small fee associated with using an API key.\",{\"_88\":1055,\"_1056\":1143},\"video_v\",{\"_88\":919,\"_920\":1145,\"_924\":1146},{\"_922\":923},[1147],{\"_88\":927,\"_927\":1148},\"The very first line of code simply reads my key from a text file:\",{\"_88\":1064,\"_920\":1150,\"_924\":1151},{\"_1066\":-5},[1152],{\"_88\":927,\"_927\":1153},\"$Key = Get-Content C:ScriptsGPTKey.txt\",{\"_88\":919,\"_920\":1155,\"_924\":1156},{\"_922\":923},[1157],{\"_88\":927,\"_927\":1158},\"I didn't want to include the key in clear text within the script for obvious reasons.\",{\"_88\":919,\"_920\":1160,\"_924\":1161},{\"_922\":923},[1162],{\"_88\":927,\"_927\":1163},\"So, we're reading the key, and we're saving it to a variable called $Key.\",{\"_88\":919,\"_920\":1165,\"_924\":1166},{\"_922\":923},[1167],{\"_88\":927,\"_927\":1168},\"The next thing that we have to do is define the ChatGPT endpoint. That's simply the URI that's used for sending queries up to ChatGPT. You can see that in the second line of code:\",{\"_88\":1064,\"_920\":1170,\"_924\":1171},{\"_1066\":-5},[1172],{\"_88\":927,\"_927\":1173},\"$APIEndpoint = “https://api.openai.com/v1/chat/completions”\",{\"_88\":919,\"_920\":1175,\"_924\":1176},{\"_922\":923},[1177],{\"_88\":927,\"_927\":1178},\"Then the next thing that we have is a declaration of $AISystemMessage. You can see that on the third line:\",{\"_88\":1064,\"_920\":1180,\"_924\":1181},{\"_1066\":-5},[1182],{\"_88\":927,\"_927\":1183},\"$AISystemMessage = “You are a helpful assistant”\",{\"_88\":919,\"_920\":1185,\"_924\":1186},{\"_922\":923},[1187],{\"_88\":927,\"_927\":1188},\"Right now, the system message is, “You are a helpful assistant.” Now, technically, we don't need this line. But what we're doing right here is we're setting the ChatGPT personality. Later on, when I show you how we go about initializing ChatGPT, we're going to want to have some kind of text in there. For the initialization process, what we're using in this case, is, “You are a helpful assistant.” Now, you'll notice the variable name – $AISystemMessage. We're going to be using the variable $AISystemMessage throughout the script when we want to send something up to ChatGPT. So, anytime you see the variable $AISystemMessage, that's what that is. It represents the query that the user has typed in, which is being sent to ChatGPT.\",{\"_88\":919,\"_920\":1190,\"_924\":1191},{\"_922\":923},[1192],{\"_88\":927,\"_927\":1193},\"Then in the fourth line right here, we're creating a hash table:\",{\"_88\":1064,\"_920\":1195,\"_924\":1196},{\"_1066\":-5},[1197],{\"_88\":927,\"_927\":1198},\"[System.Collections.Generic.List[Hashtable]]$MessageHistory = @()\",{\"_88\":919,\"_920\":1200,\"_924\":1201},{\"_922\":923},[1202,1204,1208],{\"_88\":927,\"_927\":1203},\"This hash table was called \",{\"_88\":927,\"_933\":1205,\"_927\":1207},[1206],{\"_88\":1013},\"Message History.\",{\"_88\":927,\"_927\":1209},\" Now, the message history is essentially just a list of all the queries that we've sent up to ChatGPT and the responses that we've received from ChatGPT. In this particular case, the message history isn't all that important, because we're only sending a single query and we're receiving a single response. However, because of the way that the ChatGPT API works, we have to send this message history hash table anytime that we query ChatGPT. So, that's our basic initialization.\",{\"_88\":1023,\"_920\":1211,\"_924\":1212},{\"_922\":923,\"_1025\":354},[1213],{\"_88\":927,\"_933\":1214,\"_927\":1216},[1215],{\"_88\":1030},\"Initialize-MessageHistory Function\",{\"_88\":919,\"_920\":1218,\"_924\":1219},{\"_922\":923},[1220],{\"_88\":927,\"_927\":1221},\"From there, we have a couple of functions.\",{\"_88\":919,\"_920\":1223,\"_924\":1224},{\"_922\":923},[1225],{\"_88\":927,\"_927\":1226},\"We have one function called Initialize-MessageHistory:\",{\"_88\":1064,\"_920\":1228,\"_924\":1229},{\"_1066\":-5},[1230],{\"_88\":927,\"_927\":1076},{\"_88\":919,\"_920\":1232,\"_924\":1233},{\"_922\":923},[1234],{\"_88\":927,\"_927\":1235},\"Then we have another function called Invoke-ChatGPT:\",{\"_88\":1055,\"_1056\":1237},\"native_2v\",{\"_88\":1064,\"_920\":1239,\"_924\":1240},{\"_1066\":-5},[1241],{\"_88\":927,\"_927\":1083},{\"_88\":919,\"_920\":1243,\"_924\":1244},{\"_922\":923},[1245],{\"_88\":927,\"_927\":1246},\"I'll come back to these in just a moment.\",{\"_88\":919,\"_920\":1248,\"_924\":1249},{\"_922\":923},[1250],{\"_88\":927,\"_927\":1251},\"What I want to do for right now is skip down to the main body:\",{\"_88\":1064,\"_920\":1253,\"_924\":1254},{\"_1066\":-5},[1255],{\"_88\":927,\"_927\":1256},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003eInitialize-MessageHistory $AiSystemMessage\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $userMessage = Read-Host “`nYou”\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $MessageHistory.Add(@{“role”=”user”; “content”=$userMessage})\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $aiResponse = Invoke-ChatGPT $MessageHistory\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e Write-Host “AI: $aiResponse” -ForegroundColor Yellow\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e $MessageHistory.Add(@{“role”=”assistant”; “content”=$aiResponse})\u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1258,\"_924\":1259},{\"_922\":923},[1260],{\"_88\":927,\"_927\":1261},\"So, the very first thing that we're doing within the main body of our script is calling the Initialize-MessageHistory function that I pointed out just a second ago.\",{\"_88\":919,\"_920\":1263,\"_924\":1264},{\"_922\":923},[1265],{\"_88\":927,\"_927\":1266},\"You'll notice that we're passing a parameter up to that function, and that parameter is $AISystemMessage. Remember what I said about this variable earlier: $AISystemMessage represents anything that the user has typed in that's being sent up to ChatGPT. Well, the user hasn't typed in anything yet, but we pre-populated this variable earlier, during the initialization portion of the script, with the phrase, “You are a helpful assistant.”\",{\"_88\":919,\"_920\":1268,\"_924\":1269},{\"_922\":923},[1270],{\"_88\":927,\"_927\":1271},\"So, we're taking the text, “You are a helpful assistant,” and we're sending that to the Initialized-MessageHistory function.\",{\"_88\":919,\"_920\":1273,\"_924\":1274},{\"_922\":923},[1275],{\"_88\":927,\"_927\":1276},\"Let's take a look at that function. You can see that it receives a parameter called $message. The $message is the $AISystemMessage variable. So, what are we doing here? Well, the very first line within that function goes ahead and clears out the hash table. That way, if you run the script more than once and there's already something in that hash table, this will go ahead and clear it just to prevent any confusion.\",{\"_88\":919,\"_920\":1278,\"_924\":1279},{\"_922\":923},[1280],{\"_88\":927,\"_927\":1281},\"The next thing we have is a line that populates the message history:\",{\"_88\":1064,\"_920\":1283,\"_924\":1284},{\"_1066\":-5},[1285],{\"_88\":927,\"_927\":1286},\"$script:MessageHistory.Add(@{“role” = “system”; “content” = $message}) | Out-Null\",{\"_88\":919,\"_920\":1288,\"_924\":1289},{\"_922\":923},[1290],{\"_88\":927,\"_927\":1291},\"What we're doing is we're using “role” to define who it was that put a message in the message history. The role was either going to be “system” if it was something that was generated on this end, or it was going to be AI if it was something that was generated by ChatGPT. Then we have “content.” The content is whatever query or response is going into the message history in this case. Because we're initializing ChatGPT, the content is going to be that initial message, “You are a helpful assistant.” So, that's what's going to be contained in the $message variable. Then we have Out-Null, and that just suppresses any output.\",{\"_88\":919,\"_920\":1293,\"_924\":1294},{\"_922\":923},[1295],{\"_88\":927,\"_927\":1296},\"So, we've called the function. We've initialized ChatGPT by clearing out our message history and then adding the message, “You are a helpful assistant,” to the message history hash table.\",{\"_88\":1055,\"_1056\":1298},\"300_2v_article\",{\"_88\":1023,\"_920\":1300,\"_924\":1301},{\"_922\":923,\"_1025\":354},[1302],{\"_88\":927,\"_933\":1303,\"_927\":1305},[1304],{\"_88\":1030},\"Main Body\",{\"_88\":919,\"_920\":1307,\"_924\":1308},{\"_922\":923},[1309],{\"_88\":927,\"_927\":1310},\"Then we drop back down to our main body. The next line of code is:\",{\"_88\":1064,\"_920\":1312,\"_924\":1313},{\"_1066\":-5},[1314],{\"_88\":927,\"_927\":1315},\"$userMessage = Read-Host “Enter your query”: “\",{\"_88\":919,\"_920\":1317,\"_924\":1318},{\"_922\":923},[1319],{\"_88\":927,\"_927\":1320},\"So, this is the prompt that you saw earlier that displays the message, “Enter your query,” on the screen. Whatever the user types in goes to a variable called $userMessage.\",{\"_88\":919,\"_920\":1322,\"_924\":1323},{\"_922\":923},[1324],{\"_88\":927,\"_927\":1325},\"Then we have the next line:\",{\"_88\":1064,\"_920\":1327,\"_924\":1328},{\"_1066\":-5},[1329],{\"_88\":927,\"_927\":1330},\"$MessageHistory.Add(@{“role” = “user”; “content” = $userMessage})\",{\"_88\":919,\"_920\":1332,\"_924\":1333},{\"_922\":923},[1334],{\"_88\":927,\"_927\":1335},\"Once again, we're adding something to the message history. Anytime that we add to the message history, we have to specify the role and we have to specify the content. So, the role in this case is “user,” indicating that this is something that was typed in by the end user. The “content” is going to be whatever is stored in that $userMessage variable that we defined on the previous line of code. So, we're adding the message that was typed into the message history.\",{\"_88\":919,\"_920\":1337,\"_924\":1338},{\"_922\":923},[1339],{\"_88\":927,\"_927\":1340},\"The next thing that happens is, we're defining a variable $aiResponse:\",{\"_88\":1064,\"_920\":1342,\"_924\":1343},{\"_1066\":-5},[1344],{\"_88\":927,\"_927\":1345},\"\u003cspan style=\\\"color:black\\\"\u003e$aiResponse = Invoke-ChatGPT $MessageHistory\u003c/span\u003e\",{\"_88\":919,\"_920\":1347,\"_924\":1348},{\"_922\":923},[1349],{\"_88\":927,\"_927\":1350},\"Now, remember what I said earlier: Anytime that we send something up to ChatGPT, we have to include the entire message history. So, what we're doing right here is we're calling a function called Invoke-ChatGPT and passing the entire message history up to that function.\",{\"_88\":1023,\"_920\":1352,\"_924\":1353},{\"_922\":923,\"_1025\":354},[1354],{\"_88\":927,\"_933\":1355,\"_927\":1357},[1356],{\"_88\":1030},\"Invoke-ChatGPT Function\",{\"_88\":919,\"_920\":1359,\"_924\":1360},{\"_922\":923},[1361],{\"_88\":927,\"_927\":1362},\"If we look back at the Invoke-ChatGPT function, this function is designed to receive the message history. So, what are we really doing within this function? Well, there's a couple of things going on here.\",{\"_88\":1023,\"_920\":1364,\"_924\":1365},{\"_922\":923,\"_1025\":367},[1366],{\"_88\":927,\"_933\":1367,\"_927\":1369},[1368],{\"_88\":1030},\"Form a header\",{\"_88\":919,\"_920\":1371,\"_924\":1372},{\"_922\":923},[1373],{\"_88\":927,\"_927\":1374},\"The first thing that we have to do is we have to form a header. You can see that we've declared a variable called $header:\",{\"_88\":1064,\"_920\":1376,\"_924\":1377},{\"_1066\":-5},[1378],{\"_88\":927,\"_927\":1379},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e$headers = @{\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"Content-Type\\\" = \\\"application/json\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"Authorization\\\" = \\\"Bearer $ApiKey\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e } \u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1381,\"_924\":1382},{\"_922\":923},[1383],{\"_88\":927,\"_927\":1384},\"This is also going to be a hash table. We're defining “Content-Type,” and then we have to define the “Authorization.” And we're using key-based authorization.\",{\"_88\":919,\"_920\":1386,\"_924\":1387},{\"_922\":923},[1388],{\"_88\":927,\"_927\":1389},\"Remember, in the very first line of code in the script, we set up a variable called $Key and set that equal to our API key that we read in from a text file:\",{\"_88\":1064,\"_920\":1391,\"_924\":1392},{\"_1066\":-5},[1393],{\"_88\":927,\"_927\":1153},{\"_88\":919,\"_920\":1395,\"_924\":1396},{\"_922\":923},[1397],{\"_88\":927,\"_927\":1398},\"That's where this $Key variable comes into play.\",{\"_88\":919,\"_920\":1400,\"_924\":1401},{\"_922\":923},[1402],{\"_88\":927,\"_927\":1403},\"So, we formed our header.\",{\"_88\":1023,\"_920\":1405,\"_924\":1406},{\"_922\":923,\"_1025\":367},[1407],{\"_88\":927,\"_933\":1408,\"_927\":1410},[1409],{\"_88\":1030},\"Form the request\",{\"_88\":919,\"_920\":1412,\"_924\":1413},{\"_922\":923},[1414],{\"_88\":927,\"_927\":1415},\"The next thing that this function has to do is to form the request. So, what we're doing is we're setting up a variable called $requestBody. And once again, this is going to be a hash table.\",{\"_88\":1055,\"_1056\":1417},\"300_3v_article\",{\"_88\":1064,\"_920\":1419,\"_924\":1420},{\"_1066\":-5},[1421],{\"_88\":927,\"_927\":1422},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e$requestBody = @{\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"model\\\" = \\\"gpt-3.5-turbo\\\"\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"messages\\\" = $MessageHistory\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"max_tokens\\\" = 1000 # Max amount of tokens the AI will respond with\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e \\\"temperature\\\" = 0.7 # Lower is more coherent and conservative, higher is more creative and diverse.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e }\u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1424,\"_924\":1425},{\"_922\":923},[1426],{\"_88\":927,\"_927\":1427},\"Then we're defining a few things. First, “model.” The model is going to be the AI model that gets used to process the request. In this case, we're using GPT-3.5-turbo.\",{\"_88\":919,\"_920\":1429,\"_924\":1430},{\"_922\":923},[1431],{\"_88\":927,\"_927\":1432},\"The next thing that we have to include in the request body is the message. The message is going to be contained in that $MessageHistory variable that I talked about a moment ago.\",{\"_88\":919,\"_920\":1434,\"_924\":1435},{\"_922\":923},[1436],{\"_88\":927,\"_927\":1437},\"Next, we have something called “max_tokens.” Now, the “max_tokens” indicates the maximum length of the response that ChatGPT can give you.\",{\"_88\":919,\"_920\":1439,\"_924\":1440},{\"_922\":923},[1441],{\"_88\":927,\"_927\":1442},\"The reason why this “max_tokens” is important is because, as I mentioned, there is a small charge associated with using ChatGPT programmatically. You're charged based on the length of the response. So, you don't want to have a response that's lengthier than what you need, because it will cost you more money. That's where “max_tokens” comes into play.\",{\"_88\":919,\"_920\":1444,\"_924\":1445},{\"_922\":923},[1446],{\"_88\":927,\"_927\":1447},\"And then we have “temperature.” Temperature essentially sets the tone of the response. By default, the temperature is set to 0.7, but if you reduce this number, then the response is going to be more businesslike, more no-nonsense, whereas a higher value tends to be a bit more creative, perhaps in some instances even a little bit humorous.\",{\"_88\":919,\"_920\":1449,\"_924\":1450},{\"_922\":923},[1451],{\"_88\":927,\"_927\":1452},\"So, at this point, we've set the request header, and we formed the request.\",{\"_88\":1023,\"_920\":1454,\"_924\":1455},{\"_922\":923,\"_1025\":367},[1456],{\"_88\":927,\"_933\":1457,\"_927\":1459},[1458],{\"_88\":1030},\"Send the request\",{\"_88\":919,\"_920\":1461,\"_924\":1462},{\"_922\":923},[1463],{\"_88\":927,\"_927\":1464},\"From there, what we have to do is send all of this up to ChatGPT. You can see that we're creating a variable called $response:\",{\"_88\":1064,\"_920\":1466,\"_924\":1467},{\"_1066\":-5},[1468],{\"_88\":927,\"_927\":1469},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e$response = Invoke-RestMethod -Method POST -Uri $ApiEndpoint -Headers $headers -Body (ConvertTo-Json $requestBody)\u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1471,\"_924\":1472},{\"_922\":923},[1473],{\"_88\":927,\"_927\":1474},\"All this information within the request body started in the form of a hash table. But we're converting that to JSON format and then passing that up to ChatGPT.\",{\"_88\":1023,\"_920\":1476,\"_924\":1477},{\"_922\":923,\"_1025\":367},[1478],{\"_88\":927,\"_933\":1479,\"_927\":1481},[1480],{\"_88\":1030},\"Return the message content\",{\"_88\":919,\"_920\":1483,\"_924\":1484},{\"_922\":923},[1485],{\"_88\":927,\"_927\":1486},\"So, then we've got a return statement, followed by $response.choices:\",{\"_88\":1064,\"_920\":1488,\"_924\":1489},{\"_1066\":-5},[1490],{\"_88\":927,\"_927\":1491},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003ereturn $response.choices[0].message.content\u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1493,\"_924\":1494},{\"_922\":923},[1495],{\"_88\":927,\"_927\":1496},\"ChatGPT will sometimes generate multiple responses. So, this number zero simply indicates that we want the first response. And then we have .message.content so we're returning the response that was generated by ChatGPT. And then our function ends.\",{\"_88\":1023,\"_920\":1498,\"_924\":1499},{\"_922\":923,\"_1025\":354},[1500],{\"_88\":927,\"_933\":1501,\"_927\":1503},[1502],{\"_88\":1030},\"Remaining Lines of Main Body\",{\"_88\":919,\"_920\":1505,\"_924\":1506},{\"_922\":923},[1507],{\"_88\":927,\"_927\":1508},\"So then if we drop back down to our main body, you can see that the next line of code is this:\",{\"_88\":1064,\"_920\":1510,\"_924\":1511},{\"_1066\":-5},[1512],{\"_88\":927,\"_927\":1513},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003eWrite-Host “AI: $aiResponse” -ForegroundColor Yellow\u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1515,\"_924\":1516},{\"_922\":923},[1517],{\"_88\":927,\"_927\":1518},\"We just set the foreground color to yellow. That's not something that you have to do. But sometimes it can make it a little bit easier to tell which part of the conversation was generated by ChatGPT versus user input.\",{\"_88\":919,\"_920\":1520,\"_924\":1521},{\"_922\":923},[1522],{\"_88\":927,\"_927\":1523},\"So, we're simply displaying the $aiResponse variable. That's the response from ChatGPT.\",{\"_88\":919,\"_920\":1525,\"_924\":1526},{\"_922\":923},[1527],{\"_88\":927,\"_927\":1528},\"And then the very last line of code is adding that response to the message history:\",{\"_88\":1064,\"_920\":1530,\"_924\":1531},{\"_1066\":-5},[1532],{\"_88\":927,\"_927\":1533},\"\u003cspan style=\\\"background-color:white\\\"\u003e\u003cspan style=\\\"color:black\\\"\u003e$MessageHistory.Add(@{“role”=”assistant”; “content”=$aiResponse})\u003c/span\u003e\u003c/span\u003e\",{\"_88\":919,\"_920\":1535,\"_924\":1536},{\"_922\":923},[1537],{\"_88\":927,\"_927\":1538},\"Again, we don't have to worry about that so much in this case, because we're only going to have a single query and a single response. But if you created a script where there were going to be multiple queries and multiple responses, then you would absolutely want to add the responses to the message history.\",{\"_88\":919,\"_920\":1540,\"_924\":1541},{\"_922\":923},[1542],{\"_88\":927,\"_927\":1543},\"So, that's just a really quick overview of how you can use PowerShell to interact with ChatGPT.\",\"Video\",\"sponsored\",{\"_744\":171,\"_59\":171,\"_161\":171,\"_115\":171,\"_1547\":171,\"_1548\":24,\"_1549\":24,\"_1550\":1551,\"_1552\":171},\"campaignURL\",\"isSponsored\",\"gateWithSiteReg\",\"gateWithExternalForm\",\"None\",\"externalFormID\",\"featuredImage\",{\"_159\":1555,\"_161\":1556,\"_1557\":171,\"_1558\":171},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt921541b2c6cc35dc/661d3a324c182e4658ad9620/ChatGPTIntegrationHeader.jpeg\",\"portion of PowerShell script for ChatGPT integration\",\"caption\",\"creditTo\",{\"_115\":909},\"seriesTaxonomy\",[],\"programTaxonomy\",[],\"sidebarModules\",[1566,1640,1675,1721,1727],{\"_88\":1567,\"_1568\":1569,\"_1637\":1638},\"module_content_cards\",\"data\",{\"_115\":1570,\"_1571\":1570,\"_190\":1572,\"_1573\":1574,\"_1633\":1634,\"_1635\":1634,\"_1636\":-7},\"Editor's Choice\",\"moduleLabel\",\"default\",\"contents\",[1575,1598,1601,1617,1630],{\"_88\":1576,\"_1568\":1577},\"contentPreview\",{\"_178\":179,\"_190\":1578,\"_157\":1579,\"_163\":1582,\"_165\":1582,\"_168\":1583,\"_170\":1583,\"_1584\":1585,\"_172\":1586,\"_174\":171,\"_175\":1587,\"_177\":329,\"_180\":1588,\"_188\":1593,\"_944\":1594},\"card-horizontal\",{\"_159\":1580,\"_161\":1581},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blted009d53042b6a96/673dc873f59c3326ad835a0e/jobs-key-1716x965_-_2024-08-21.jpg\",\"jobs key on keyboard\",\"IT Jobs Outlook 2025: Evolving Skills, AI, Workplace Flexibility Will Shape IT Workforce\",\"/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce\",\"linkAttrs\",{},\"Nov 20, 2024\",\"Career Management\",[1589],{\"_57\":1590,\"_184\":1591,\"_186\":1592},\"Nathan Eddy\",\"/author/nathan-eddy\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd76bf4740a6e8198/6658946837ce132abb475f63/nathan-eddy-pic.webp\",8,{\"_1595\":24,\"_1596\":1597},\"paidContent\",\"paidProductTaxonomy\",[],{\"_88\":1055,\"_1568\":1599},{\"_1056\":1600},\"native_right_1v\",{\"_88\":1576,\"_1568\":1602},{\"_178\":179,\"_190\":1578,\"_157\":1603,\"_163\":1606,\"_165\":1607,\"_168\":1608,\"_170\":1608,\"_1584\":1609,\"_172\":1610,\"_174\":171,\"_175\":1611,\"_177\":1612,\"_180\":1613,\"_188\":367,\"_944\":1615},{\"_159\":1604,\"_161\":1605},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt8e3cff5562b9ae01/67462526b7779a7c7bca6346/green_IT_sustainability_hero.gif\",\"an it pro is disappointed as a poster for sustainability is switched with one for financial results and garbage piles up next to a recycling bin\",\"How Do I Advocate for Green IT Without Being Dismissed as a Lorax?\",\"How Do I Advocate for Green IT Without Being Dismissed as a Lorax? \",\"/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-\",{},\"Nov 27, 2024\",\"Green IT\",\"/it-management/it-sustainability/green-it\",[1614],{\"_57\":351,\"_184\":352,\"_186\":353},{\"_1595\":24,\"_1596\":1616},[],{\"_88\":1576,\"_1568\":1618},{\"_178\":179,\"_190\":1578,\"_157\":1619,\"_163\":1622,\"_165\":1622,\"_168\":1623,\"_170\":1623,\"_1584\":1624,\"_172\":1625,\"_174\":171,\"_175\":282,\"_177\":283,\"_180\":1626,\"_188\":312,\"_944\":1628},{\"_159\":1620,\"_161\":1621},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt169bb0721a0b9a6d/67401d99c70a870d4f57da8d/Ubuntu-1716x965_-_2024-11-22.jpg\",\"person using a laptop with the Ubuntu logo on its scree\",\"3 Simple Ways to Install and Run a Virtual Machine on Ubuntu\",\"/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu\",{},\"Nov 22, 2024\",[1627],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1595\":24,\"_1596\":1629},[],{\"_88\":1055,\"_1568\":1631},{\"_1056\":1632},\"native_right_2v\",\"dateDisplay\",\"show\",\"contributorDisplay\",\"displayAd\",\"adConfig\",{\"_1639\":26},\"nativeAdOption\",{\"_88\":1641,\"_1568\":1642},\"module_link_list\",{\"_1643\":1644,\"_1645\":1646,\"_1647\":1648,\"_1649\":171,\"_1650\":1651,\"_713\":24,\"_1655\":1656},\"listOption\",\"Dynamic\",\"listTitle\",\"Exclusive ITPro Resources\",\"icon\",\"Document\",\"externalFeed\",\"ctaButton\",{\"_1652\":570,\"_1653\":1654},\"ctaButtonLink\",\"ctaButtonText\",\"See all ITPro Resources\",\"articles\",[1657,1663,1667,1671],{\"_178\":1648,\"_115\":1658,\"_59\":1659,\"_1660\":24,\"_971\":354,\"_999\":1661,\"_1662\":171,\"_174\":171},\"ITPro Today’s 2024 State of DevOps Report\",\"/devops/itpro-today-s-2024-state-of-devops-report\",\"isExternalLink\",\"2024-12-16T13:00:00.000Z\",\"eventDate\",{\"_178\":1648,\"_115\":1664,\"_59\":1665,\"_1660\":24,\"_971\":211,\"_999\":1666,\"_1662\":171,\"_174\":171},\"BCDR Basics: A Quick Reference Guide for Business Continuity \u0026 Disaster Recovery\",\"/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery\",\"2024-10-10T15:22:31.000Z\",{\"_178\":1648,\"_115\":1668,\"_59\":1669,\"_1660\":24,\"_971\":211,\"_999\":1670,\"_1662\":171,\"_174\":171},\"ITPro Today’s 2024 IT Priorities Report\",\"/career-management/itpro-today-s-2024-it-priorities-report\",\"2024-09-25T10:00:00.000Z\",{\"_178\":1648,\"_115\":1672,\"_59\":1673,\"_1660\":24,\"_971\":211,\"_999\":1674,\"_1662\":171,\"_174\":171},\"Tech Careers: Quick Reference Guide to IT Job Titles\",\"/career-management/tech-careers-quick-reference-guide-to-it-job-titles\",\"2024-09-13T10:45:00.000Z\",{\"_88\":1567,\"_1568\":1676,\"_1637\":1720},{\"_115\":1677,\"_1571\":1678,\"_190\":1572,\"_1573\":1679,\"_1633\":1719,\"_1635\":1719,\"_1636\":-7},\"Technical Explainers\",\"Featured Technical Explainers\",[1680,1693,1706],{\"_88\":1576,\"_1568\":1681},{\"_178\":179,\"_190\":1578,\"_157\":1682,\"_163\":1685,\"_165\":1685,\"_168\":1686,\"_170\":1686,\"_1584\":1687,\"_172\":1688,\"_174\":171,\"_175\":176,\"_177\":136,\"_180\":1689,\"_188\":436,\"_944\":1691},{\"_159\":1683,\"_161\":1684},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfec5fcbd31c7f2a6/673b100cd675084d0707e288/AI-chip-1716x965_-_2024-11-18.jpg\",\"AI chip\",\"Cloud vs. On-Prem AI Accelerators: Choosing the Best Fit for Your AI Workloads\",\"/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads\",{},\"Nov 18, 2024\",[1690],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1595\":24,\"_1596\":1692},[],{\"_88\":1576,\"_1568\":1694},{\"_178\":179,\"_190\":1578,\"_157\":1695,\"_163\":1698,\"_165\":1698,\"_168\":1699,\"_170\":1699,\"_1584\":1700,\"_172\":1701,\"_174\":171,\"_175\":176,\"_177\":136,\"_180\":1702,\"_188\":312,\"_944\":1704},{\"_159\":1696,\"_161\":1697},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd277e0c4548d3c42/673278ac8d8bc463268a48b4/SaaS-1716x965_-_2024-11-11.jpg\",\"SaaS concept on a tablet\",\"Why SaaS Backup Matters: Protecting Data Beyond Vendor Guarantees\",\"/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees\",{},\"Nov 12, 2024\",[1703],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1595\":24,\"_1596\":1705},[],{\"_88\":1576,\"_1568\":1707},{\"_178\":179,\"_190\":1578,\"_157\":1708,\"_163\":1711,\"_165\":1711,\"_168\":1712,\"_170\":1712,\"_1584\":1713,\"_172\":1714,\"_174\":171,\"_175\":285,\"_177\":286,\"_180\":1715,\"_188\":436,\"_944\":1717},{\"_159\":1709,\"_161\":1710},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltdf272a7a39b366c2/672b48253c936766d5282090/DevOps-code-1716x965_-_2024-09-06.jpg\",\"DevOps logo on top of code\",\"DevOps: Key to Faster, More Efficient Government Software Development\",\"/devops/devops-key-to-faster-more-efficient-government-software-development\",{},\"Nov 6, 2024\",[1716],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1595\":24,\"_1596\":1718},[],\"hide\",{\"_1639\":24},{\"_88\":1722,\"_892\":979,\"_1568\":1723},\"module_newsletter_promo\",{\"_115\":976,\"_844\":977,\"_978\":979,\"_845\":980,\"_190\":193,\"_981\":982,\"_1724\":24,\"_1725\":1726},\"isOnHomepage\",\"moduleLocation\",\"sidebar\",{\"_88\":1567,\"_1568\":1728,\"_1637\":1761},{\"_115\":1729,\"_1571\":1730,\"_190\":1731,\"_1573\":1732,\"_1633\":1719,\"_1635\":1719,\"_1636\":-7},\"What Is\",\"Recent What Is\",\"column\",[1733,1748],{\"_88\":1576,\"_1568\":1734},{\"_178\":1648,\"_190\":191,\"_157\":1735,\"_163\":1664,\"_165\":1738,\"_168\":1665,\"_170\":1665,\"_1584\":1739,\"_172\":1740,\"_174\":171,\"_175\":305,\"_177\":306,\"_180\":1741,\"_188\":211,\"_944\":1746},{\"_159\":1736,\"_161\":1737},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd6267f0056e427cb/6707f1e94c215e0bdbe8db2f/image-1795x965_(2).jpg\",\"cartoon shows a person next to a checklist and several icons that represent disaster scenarios\",\"BCDR Basics: A Quick Reference Guide for IT Pros\",{},\"Oct 10, 2024\",[1742],{\"_57\":1743,\"_184\":1744,\"_186\":1745},\"Ian Horowitz\",\"/author/ian-horowitz\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltc93aa705007174ee/66a10526893fa79494559f62/itpro-contributor-icon2.png\",{\"_1595\":24,\"_1596\":1747},[],{\"_88\":1576,\"_1568\":1749},{\"_178\":179,\"_190\":191,\"_157\":1750,\"_163\":1753,\"_165\":1753,\"_168\":1754,\"_170\":1754,\"_1584\":1755,\"_172\":1756,\"_174\":171,\"_175\":224,\"_177\":225,\"_180\":1757,\"_188\":436,\"_944\":1759},{\"_159\":1751,\"_161\":1752},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfffa964ee37aaf1e/66f6ee6fe8a6b02af4dab7fe/powershell_environment_variables_chart.png\",\"technology interface with a person's hand drawing gears and cogs\",\"Introduction To PowerShell Environment Variables\",\"/powershell/introduction-to-powershell-environment-variables\",{},\"Sep 30, 2024\",[1758],{\"_57\":258,\"_184\":259,\"_186\":260},{\"_1595\":24,\"_1596\":1760},[],{\"_1639\":24},\"relatedEvents\",[],\"topicSelector\",{\"_1766\":1767,\"_1769\":905},\"mainTopic\",{\"_88\":957,\"_115\":224,\"_59\":225,\"_958\":1768},{\"_88\":907,\"_115\":901},\"additionalTopics\",\"disclaimer\",{\"_769\":24,\"_1772\":1773},\"paidProductTaxonomies\",[],\"errorModal\",{\"_1776\":24,\"_1777\":1778,\"_1779\":1780},\"showErrorModal\",\"errorTitle\",\"Oops! An error has occurred\",\"errorDescription\",\"The connection on our end has been interrupted. Please refresh the page and try again.\",{\"_1782\":1783,\"_1784\":171,\"_1785\":171,\"_1786\":1787,\"_1788\":1789,\"_1790\":1791,\"_798\":-5},\"duration\",{\"_1782\":171},\"videoUrl\",\"videoCredit\",\"videoId\",\"A23-kvaGXew\",\"videoService\",\"youtube\",\"videoEmbedCode\",\"\u003ciframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/A23-kvaGXew\\\" title=\\\"ChatGPT Integration in PowerShell: Scripting Demo\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\\\" referrerpolicy=\\\"strict-origin-when-cross-origin\\\" allowfullscreen\u003e\u003c/iframe\u003e\",\"schema\",[1794,1804],{\"_1795\":1796,\"_1797\":1798,\"_57\":964,\"_110\":963,\"_1799\":1800,\"_1801\":1000,\"_1782\":1802,\"_1803\":171},\"@context\",\"https://schema.org\",\"@type\",\"VideoObject\",\"thumbnailUrl\",[1555],\"uploadDate\",\"P0Y0M0DT0HNaNMNaNS\",\"contentUrl\",{\"_1795\":1796,\"_1797\":1805,\"_1806\":1807},\"BreadcrumbList\",\"itemListElement\",[1808,1812],{\"_1797\":1809,\"_1810\":211,\"_57\":749,\"_1811\":10},\"ListItem\",\"position\",\"item\",{\"_1797\":1809,\"_1810\":354,\"_57\":224,\"_1811\":1813},\"https://www.itprotoday.com/operating-systems/powershell\",\"seo\",{\"_1816\":1817,\"_1818\":963,\"_1819\":964,\"_1820\":24,\"_1821\":1822,\"_13\":-7,\"_1001\":1823},\"canonicalUrl\",\"https://www.itprotoday.com/powershell/chatgpt-integration-in-powershell-scripting-demo-\",\"metaDescription\",\"metaTitle\",\"noIndex\",\"imageUrl\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt921541b2c6cc35dc/661d3a324c182e4658ad9620/ChatGPTIntegrationHeader.jpeg?disable=upscale\u0026width=1200\u0026height=630\u0026fit=crop\",\"PowerShell, Operating Systems\",\"gtm\",{\"_1826\":1827},\"loadEvent\",{\"_1828\":1829,\"_1845\":1846,\"_1861\":1862},\"attributes\",{\"_1830\":1831,\"_69\":171,\"_1814\":1832,\"_1545\":1835,\"_1836\":1837,\"_891\":1841},\"events\",[],{\"_1833\":1817,\"_1834\":24},\"canonicalURL\",\"hideFromSearchEngines\",{\"_57\":171,\"_1547\":171,\"_1548\":24,\"_1549\":24,\"_1550\":1551,\"_1552\":171},\"legacy\",{\"_1838\":970,\"_1839\":1840,\"_794\":966},\"destinationPath\",\"issueDate\",\"Sep 27, 2023\",{\"_1842\":1787,\"_1788\":1789,\"_1843\":171,\"_1785\":171,\"_1844\":972},\"videoID\",\"videoURL\",\"videoDuration\",\"category\",{\"_1847\":171,\"_908\":909,\"_1848\":891,\"_1849\":1850,\"_1851\":1852,\"_1853\":-7,\"_1854\":1855,\"_1858\":1859},\"buyerJourney\",\"pageType\",\"keyword\",[],\"series\",[],\"programName\",\"primaryTerm\",{\"_900\":901,\"_1856\":224,\"_1857\":171},\"child\",\"grandchild\",\"secondaryTerm\",[1860],{\"_900\":901,\"_1856\":171,\"_1857\":171},\"pageInfo\",{\"_1863\":893,\"_1864\":964,\"_1865\":1817,\"_1839\":1866,\"_794\":1867},\"pageID\",\"pageName\",\"destinationURL\",\"Sep 28, 2023\",[1868],{\"_913\":171,\"_1869\":258,\"_1870\":171,\"_57\":258},\"displayName\",\"jobTitle\",\"isLivePreview\",\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RC=function(b,c,e){c=document.getElementById(c);c.parentNode.removeChild(c);var a=document.getElementById(b);if(a){b=a.previousSibling;if(e)b.data="$!",a.setAttribute("data-dgst",e);else{e=b.parentNode;a=b.nextSibling;var f=0;do{if(a&&8===a.nodeType){var d=a.data;if("/$"===d)if(0===f)break;else f--;else"$"!==d&&"$?"!==d&&"$!"!==d||f++}d=a.nextSibling;e.removeChild(a);a=d}while(a);for(;c.firstChild;)e.insertBefore(c.firstChild,a);b.data="$"}b._reactRetry&&b._reactRetry()}};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10