CINXE.COM
Team-Based Care in the Pediatric Office
<!DOCTYPE html> <html lang="en"> <head> <style> html { visibility: hidden; opacity: 0; } </style> <link rel="shortcut icon" href="/Images/Favicon/AAP-Favicon-4_Black.png" type="image/x-icon"> <meta name="viewport" content="width=device-width" /> <meta http-equiv="X-UA-Compatible" content="IE=11;IE=Edge,chrome=1" /> <meta name="referrer" content="always" /> <meta property="og:title" content="Team-Based Care in the Pediatric Office" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.aap.org/en/practice-management/patient-scheduling-and-office-workflow/team-based-care-in-the-pediatric-office/" /> <meta property="og:image" content="" /> <meta property="og:description" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="Team-Based Care in the Pediatric Office" /> <meta name="twitter:description" /> <meta name="twitter:image" content="" /> <meta name="robots" /> <meta name="description" content="Tips for implementing regular team meetings and huddles which can boost practice productivity, efficiency and overall team morale." /> <meta name="keywords" content="team-based care, teamwork, staff, providers, productivity, team huddles, team meetings" /> <meta name="publish_date" content="2021-07-30"> <meta name="publish_image" content="https://www.aap.org/globalassets/aap-img-placeholder.png"> <meta name="vertex_keywords" content="team-based care, teamwork, staff, providers, productivity, team huddles, team meetings"> <title>Team-Based Care in the Pediatric Office</title> <!-- CookiePro Cookies Consent Notice start for www.aap.org --> <script src="https://cookie-cdn.cookiepro.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="3e68ef05-4f6d-4004-898a-78b94ce0823e" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- CookiePro Cookies Consent Notice end for www.aap.org --> <!-- Google Tag Manager --> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window, document, 'script', 'dataLayer', 'GTM-N2RV28J'); </script> <!-- End Google Tag Manager --> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script type='text/javascript'> googletag.cmd.push(function() { var AAPorg = googletag.sizeMapping(). addSize([730, 0], [728, 90]) //desktop .build(); var gptAdSlots = []; gptAdSlots[0] =googletag.defineSlot('/22410314033/aap_leadert', [728, 90], 'div-gpt-ad-1633540336787-0').defineSizeMapping(AAPorg).addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); </script> <!-- Donate Widget Script --> <script>(function(w,d,s,n,a){if(!w[n]){var l='call,catch,on,once,set,then,track'.split(','),i,o=function(n){return'function'==typeof n?o.l.push([arguments])&&o:function(){return o.l.push([n,arguments])&&o}},t=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=!0;j.src='https://cdn.fundraiseup.com/widget/'+a; t.parentNode.insertBefore(j,t);o.s=Date.now();o.v=4;o.h=w.location.href;o.l=[];for(i=0;i<7;i++)o[l[i]]=o(l[i]);w[n]=o}})(window,document,'script','FundraiseUp','ADAHKUXY');</script> <!-- End Donate Widget Script --> <!-- Magnet Mail --> <script type="text/javascript" src="https://tracking.magnetmail.net/MagnetLeads.js"> </script> <script type="text/javascript"> com.realmagnet.MagnetLeads.init('hXdIOUQOZEy77inoSnCQWg'); com.realmagnet.MagnetLeads.visitPage(); </script> <!-- share this script --> <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=6480b01ae58f550012ea9faa&product=sop' async='async'></script> <!--New Relic --> <script type = "text/javascript" > ; window.NREUM || (NREUM = {}); NREUM.init = { distributed_tracing: { enabled: true }, privacy: { cookies_enabled: true } }; ; NREUM.loader_config = { accountID: "1613493", trustKey: "1613493", agentID: "342119000", licenseKey: "0c3b4b61ad", applicationID: "342118967" };; NREUM.info = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net", licenseKey: "0c3b4b61ad", applicationID: "342118967", sa: 1 };; /*! For license information please see nr-loader-spa-1.246.0.min.js.LICENSE.txt */ (() => { "use strict"; var e, t, r = { 234: (e, t, r) => { r.d(t, { P_: () => g, Mt: () => v, C5: () => s, DL: () => A, OP: () => D, lF: () => N, Yu: () => x, Dg: () => m, CX: () => c, GE: () => w, sU: () => j }); var n = r(8632), i = r(9567); const o = { beacon: n.ce.beacon, errorBeacon: n.ce.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) { 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 c(e, t) { if (!e) throw new Error("All info objects require an agent identifier!"); a[e] = (0, i.D)(t, o), (0, n.Qy)(e, a[e], "info") } const u = e => { if (!e || "string" != typeof e) return !1; try { document.createDocumentFragment().querySelector(e) } catch { return !1 } return !0 }; var d = r(7056), l = r(50); const f = () => { const e = { 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 { feature_flags: [], proxy: { assets: void 0, beacon: void 0 }, privacy: { cookies_enabled: !0 }, ajax: { deny_list: void 0, block_internal: !0, enabled: !0, harvestTimeSeconds: 10, 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 }, session: { domain: void 0, expiresMs: d.oD, inactiveMs: d.Hb }, ssl: void 0, obfuscate: void 0, jserrors: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, metrics: { enabled: !0, autoStart: !0 }, page_action: { enabled: !0, harvestTimeSeconds: 30, autoStart: !0 }, page_view_event: { enabled: !0, autoStart: !0 }, page_view_timing: { enabled: !0, harvestTimeSeconds: 30, long_task: !1, autoStart: !0 }, session_trace: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, harvest: { tooManyRequestsDelay: 60 }, session_replay: { autoStart: !0, enabled: !1, harvestTimeSeconds: 60, sampling_rate: 50, error_sampling_rate: 50, collect_fonts: !1, inline_images: !1, inline_stylesheet: !0, mask_all_inputs: !0, get mask_text_selector() { return e.mask_selector }, set mask_text_selector(t) { u(t) ? e.mask_selector = t + ",[data-nr-mask]" : null === t ? e.mask_selector = t : (0, l.Z)("An invalid session_replay.mask_selector was provided and will not be used", 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) { u(t) ? e.block_selector += ",".concat(t) : "" !== t && (0, l.Z)("An invalid session_replay.block_selector was provided and will not be used", 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, l.Z)("An invalid session_replay.mask_input_option was provided and will not be used", t) } }, spa: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 } } }, h = {}, p = "All configuration objects require an agent identifier!"; function g(e) { if (!e) throw new Error(p); if (!h[e]) throw new Error("Configuration for ".concat(e, " was never set")); return h[e] } function m(e, t) { if (!e) throw new Error(p); h[e] = (0, i.D)(t, f()), (0, n.Qy)(e, h[e], "config") } function v(e, t) { if (!e) throw new Error(p); var r = g(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 } const b = { accountID: void 0, trustKey: void 0, agentID: void 0, licenseKey: void 0, applicationID: void 0, xpid: void 0 }, y = {}; function A(e) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); if (!y[e]) throw new Error("LoaderConfig for ".concat(e, " was never set")); return y[e] } function w(e, t) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); y[e] = (0, i.D)(t, b), (0, n.Qy)(e, y[e], "loader_config") } const x = (0, n.mF)().o; var E = r(385), _ = r(6818); const T = { buildEnv: _.Re, customTransaction: void 0, disabled: !1, distMethod: _.gF, isolatedBacklog: !1, loaderType: void 0, maxBytes: 3e4, offset: Math.floor(E._A?.performance?.timeOrigin || E._A?.performance?.timing?.navigationStart || Date.now()), onerror: void 0, origin: "" + E._A.location, ptid: void 0, releaseIds: {}, session: void 0, xhrWrappable: "function" == typeof E._A.XMLHttpRequest?.prototype?.addEventListener, version: _.q4, denyList: void 0 }, S = {}; function D(e) { if (!e) throw new Error("All runtime objects require an agent identifier!"); if (!S[e]) throw new Error("Runtime for ".concat(e, " was never set")); return S[e] } function j(e, t) { if (!e) throw new Error("All runtime objects require an agent identifier!"); S[e] = (0, i.D)(t, T), (0, n.Qy)(e, S[e], "runtime") } function N(e) { return function (e) { try { const t = s(e); return !!t.licenseKey && !!t.errorBeacon && !!t.applicationID } catch (e) { return !1 } }(e) } }, 9567: (e, t, r) => { r.d(t, { D: () => i }); var n = r(50); function i(e, t) { try { if (!e || "object" != typeof e) return (0, n.Z)("Setting a Configurable requires an object as input"); if (!t || "object" != typeof t) return (0, n.Z)("Setting a Configurable requires a model to set its initial properties"); 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 { 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.Z)("An error occurred while setting a property of a Configurable", e) } return r } catch (e) { (0, n.Z)("An error occured while setting a Configurable", e) } } }, 6818: (e, t, r) => { r.d(t, { Re: () => i, gF: () => o, lF: () => a, q4: () => n }); const n = "1.246.0", i = "PROD", o = "CDN", a = "2.0.0-alpha.11" }, 385: (e, t, r) => { r.d(t, { FN: () => s, IF: () => d, Nk: () => f, Tt: () => c, _A: () => o, cv: () => h, iS: () => a, il: () => n, ux: () => u, v6: () => i, w1: () => l }); const n = "undefined" != typeof window && !!window.document, i = "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self.navigator instanceof WorkerNavigator || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis.navigator instanceof WorkerNavigator), o = n ? window : "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis), a = Boolean("hidden" === o?.document?.visibilityState), s = "" + o?.location, c = /iPad|iPhone|iPod/.test(o.navigator?.userAgent), u = c && "undefined" == typeof SharedWorker, d = (() => { const e = o.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/); return Array.isArray(e) && e.length >= 2 ? +e[1] : 0 })(), l = Boolean(n && window.document.documentMode), f = !!o.navigator?.sendBeacon, h = Math.floor(o?.performance?.timeOrigin || o?.performance?.timing?.navigationStart || Date.now()) }, 1117: (e, t, r) => { r.d(t, { w: () => o }); var n = r(50); const i = { agentIdentifier: "", ee: void 0 }; class o { constructor(e) { try { if ("object" != typeof e) return (0, n.Z)("shared context requires an object as input"); this.sharedContext = {}, Object.assign(this.sharedContext, i), Object.entries(e).forEach((e => { let [t, r] = e; Object.keys(i).includes(t) && (this.sharedContext[t] = r) })) } catch (e) { (0, n.Z)("An error occured while setting SharedContext", e) } } } }, 8e3: (e, t, r) => { r.d(t, { L: () => d, R: () => c }); var n = r(8325), i = r(1284), o = r(4322), a = r(3325); const s = {}; function c(e, t) { const r = { staged: !1, priority: a.p[t] || 0 }; u(e), s[e].get(t) || s[e].set(t, r) } function u(e) { e && (s[e] || (s[e] = new Map)) } function d() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "feature"; if (u(e), !e || !s[e].get(t)) return a(t); s[e].get(t).staged = !0; const r = [...s[e]]; function a(t) { const r = e ? n.ee.get(e) : n.ee, a = o.X.handlers; if (r.backlog && a) { var s = r.backlog[t], c = a[t]; if (c) { for (var u = 0; s && u < s.length; ++u) l(s[u], c); (0, i.D)(c, (function (e, t) { (0, i.D)(t, (function (t, r) { r[0].on(e, r[1]) })) })) } delete a[t], r.backlog[t] = null, r.emit("drain-" + t, []) } } r.every((e => { let [t, r] = e; return r.staged })) && (r.sort(((e, t) => e[1].priority - t[1].priority)), r.forEach((t => { let [r] = t; s[e].delete(r), a(r) }))) } function l(e, t) { var r = e[1]; (0, i.D)(t[r], (function (t, r) { var n = e[0]; if (r[0] === n) { var i = r[1], o = e[3], a = e[2]; i.apply(o, a) } })) } }, 8325: (e, t, r) => { r.d(t, { A: () => c, ee: () => u }); var n = r(8632), i = r(2210), o = r(234); class a { constructor(e) { this.contextId = e } } var s = r(3117); const c = "nr@context:".concat(s.a), u = function e(t, r) { var n = {}, s = {}, d = {}, f = !1; try { f = 16 === r.length && (0, o.OP)(r).isolatedBacklog } catch (e) {} var h = { on: g, addEventListener: g, 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 = p(n), c = m(e), d = c.length, l = 0; l < d; l++) c[l].apply(a, r); var f = b()[s[e]]; f && f.push([h, e, r, a]); return a }, get: v, listeners: m, context: p, buffer: function (e, t) { const r = b(); if (t = t || "feature", h.aborted) return; Object.entries(e || {}).forEach((e => { let [n, i] = e; s[i] = t, t in r || (r[t] = []) })) }, abort: l, aborted: !1, isBuffering: function (e) { return !!b()[s[e]] }, debugId: r, backlog: f ? {} : t && "object" == typeof t.backlog ? t.backlog : {} }; return h; function p(e) { return e && e instanceof a ? e : e ? (0, i.X)(e, c, (() => new a(c))) : new a(c) } function g(e, t) { n[e] = m(e).concat(t) } function m(e) { return n[e] || [] } function v(t) { return d[t] = d[t] || e(h, t) } function b() { return h.backlog } }(void 0, "globalEE"), d = (0, n.fP)(); function l() { u.aborted = !0, u.backlog = {} } d.ee || (d.ee = u) }, 5546: (e, t, r) => { r.d(t, { E: () => n, p: () => i }); var n = r(8325).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)) } }, 4322: (e, t, r) => { r.d(t, { X: () => o }); var n = r(5546); o.on = a; var i = o.handlers = {}; function o(e, t, r, o) { a(o || n.E, i, e, t, r) } function a(e, t, r, i, o) { o || (o = "feature"), e || (e = n.E); var a = t[o] = t[o] || {}; (a[r] = a[r] || []).push([e, i]) } }, 3239: (e, t, r) => { r.d(t, { bP: () => s, iz: () => c, m$: () => a }); var n = r(385); let i = !1, o = !1; try { const e = { get passive() { return i = !0, !1 }, get signal() { return o = !0, !1 } }; n._A.addEventListener("test", null, e), n._A.removeEventListener("test", null, e) } catch (e) {} function a(e, t) { return i || o ? { capture: !!e, passive: i, signal: t } : !!e } function s(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; window.addEventListener(e, t, a(r, n)) } function c(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; document.addEventListener(e, t, a(r, n)) } }, 3117: (e, t, r) => { r.d(t, { a: () => n }); const n = (0, r(4402).Rl)() }, 4402: (e, t, r) => { r.d(t, { Ht: () => u, M: () => c, Rl: () => a, ky: () => s }); var n = r(385); 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._A?.crypto || n._A?.msCrypto; let t, r = 0; return e && e.getRandomValues && (t = e.getRandomValues(new Uint8Array(31))), 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._A?.crypto || n._A?.msCrypto; let r, i = 0; t && t.getRandomValues && (r = t.getRandomValues(new Uint8Array(31))); 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) } }, 7056: (e, t, r) => { r.d(t, { Bq: () => n, Hb: () => o, oD: () => i }); const n = "NRBA", i = 144e5, o = 18e5 }, 7894: (e, t, r) => { function n() { return Math.round(performance.now()) } r.d(t, { z: () => n }) }, 7243: (e, t, r) => { r.d(t, { e: () => i }); var n = r(385); 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._A?.location?.protocol && t.host === n._A?.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 {} } } }, 50: (e, t, r) => { function n(e, t) { "function" == typeof console.warn && (console.warn("New Relic: ".concat(e)), t && console.warn(t)) } r.d(t, { Z: () => n }) }, 2587: (e, t, r) => { r.d(t, { N: () => c, T: () => u }); var n = r(8325), i = r(5546), o = r(3325); const a = { stn: [o.D.sessionTrace], err: [o.D.jserrors, o.D.metrics], ins: [o.D.pageAction], spa: [o.D.spa], sr: [o.D.sessionReplay, o.D.sessionTrace] }, s = new Set; function c(e, t) { const r = n.ee.get(t); e && "object" == typeof e && (s.has(t) || Object.entries(e).forEach((e => { let [t, n] = e; a[t] ? a[t].forEach((e => { n ? (0, i.p)("feat-" + t, [], void 0, e, r) : (0, i.p)("block-" + t, [], void 0, e, r), (0, i.p)("rumresp-" + t, [Boolean(n)], void 0, e, r) })) : n && (0, i.p)("feat-" + t, [], void 0, void 0, r), u[t] = Boolean(n) })), Object.keys(a).forEach((e => { void 0 === u[e] && (a[e]?.forEach((t => (0, i.p)("rumresp-" + e, [!1], void 0, t, r))), u[e] = !1) })), s.add(t)) } const u = {} }, 2210: (e, t, r) => { r.d(t, { X: () => 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 } }, 1284: (e, t, r) => { r.d(t, { D: () => n }); const n = (e, t) => Object.entries(e || {}).map((e => { let [r, n] = e; return t(r, n) })) }, 4351: (e, t, r) => { r.d(t, { P: () => o }); var n = r(8325); 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) {} } } }, 3960: (e, t, r) => { r.d(t, { K: () => a, b: () => o }); var n = r(3239); function i() { return "undefined" == typeof document || "complete" === document.readyState } function o(e, t) { if (i()) return e(); (0, n.bP)("load", e, t) } function a(e) { if (i()) return e(); (0, n.iz)("DOMContentLoaded", e) } }, 8632: (e, t, r) => { r.d(t, { EZ: () => u, Qy: () => c, ce: () => o, fP: () => a, gG: () => d, mF: () => s }); var n = r(7894), i = r(385); const o = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net" }; function a() { return i._A.NREUM || (i._A.NREUM = {}), void 0 === i._A.newrelic && (i._A.newrelic = i._A.NREUM), i._A.NREUM } function s() { let e = a(); return e.o || (e.o = { ST: i._A.setTimeout, SI: i._A.setImmediate, CT: i._A.clearTimeout, XHR: i._A.XMLHttpRequest, REQ: i._A.Request, EV: i._A.Event, PR: i._A.Promise, MO: i._A.MutationObserver, FETCH: i._A.fetch }), e } function c(e, t, r) { let i = a(); const o = i.initializedAgents || {}, s = o[e] || {}; return Object.keys(s).length || (s.initializedAt = { ms: (0, n.z)(), date: new Date }), i.initializedAgents = { ...o, [e]: { ...s, [r]: t } }, i } function u(e, t) { a()[e] = t } function d() { 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() } }, 7956: (e, t, r) => { r.d(t, { N: () => i }); var n = r(3239); function i(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], r = arguments.length > 2 ? arguments[2] : void 0, i = arguments.length > 3 ? arguments[3] : void 0; (0, n.iz)("visibilitychange", (function () { if (t) return void("hidden" === document.visibilityState && e()); e(document.visibilityState) }), r, i) } }, 1214: (e, t, r) => { r.d(t, { em: () => b, u5: () => D, QU: () => C, _L: () => I, Gm: () => H, Lg: () => L, BV: () => G, Kf: () => K }); var n = r(8325), i = r(3117); const o = "nr@original:".concat(i.a); 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]) } var l = r(2210), f = r(385); const h = {}, p = f._A.XMLHttpRequest, g = "addEventListener", m = "removeEventListener", v = "nr@wrapped:".concat(n.A); function b(e) { var t = function (e) { return (e || n.ee).get("events") }(e); if (h[t.debugId]++) return t; h[t.debugId] = 1; var r = c(t, !0); function i(e) { r.inPlace(e, [g, m], "-", o) } function o(e, t) { return e[1] } return "getPrototypeOf" in Object && (f.il && y(document, i), y(f._A, i), y(p.prototype, i)), t.on(g + "-start", (function (e, t) { var n = e[1]; if (null !== n && ("function" == typeof n || "object" == typeof n)) { var i = (0, l.X)(n, v, (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(m + "-start", (function (e) { e[1] = this.wrapped || e[1] })), t } function y(e, t) { let r = e; for (; "object" == typeof r && !Object.prototype.hasOwnProperty.call(r, g);) r = Object.getPrototypeOf(r); for (var n = arguments.length, i = new Array(n > 2 ? n - 2 : 0), o = 2; o < n; o++) i[o - 2] = arguments[o]; r && t(r, ...i) } var A = "fetch-", w = A + "body-", x = ["arrayBuffer", "blob", "json", "text", "formData"], E = f._A.Request, _ = f._A.Response, T = "prototype"; const S = {}; function D(e) { const t = function (e) { return (e || n.ee).get("fetch") }(e); if (!(E && _ && f._A.fetch)) return t; if (S[t.debugId]++) return t; function r(e, r, i) { var o = e[r]; "function" == typeof o && (e[r] = function () { var e, r = [...arguments], a = {}; t.emit(i + "before-start", [r], a), a[n.A] && a[n.A].dt && (e = a[n.A].dt); var s = o.apply(this, r); return t.emit(i + "start", [r, e], s), s.then((function (e) { return t.emit(i + "end", [null, e], s), e }), (function (e) { throw t.emit(i + "end", [e], s), e })) }) } return S[t.debugId] = 1, x.forEach((e => { r(E[T], e, w), r(_[T], e, w) })), r(f._A, "fetch", A), t.on(A + "end", (function (e, r) { var n = this; if (r) { var i = r.headers.get("content-length"); null !== i && (n.rxSize = i), t.emit(A + "done", [null, r], n) } else t.emit(A + "done", [e], n) })), t } const j = {}, N = ["pushState", "replaceState"]; function C(e) { const t = function (e) { return (e || n.ee).get("history") }(e); return !f.il || j[t.debugId]++ || (j[t.debugId] = 1, c(t).inPlace(window.history, N, "-")), t } var O = r(3239); const P = {}, R = ["appendChild", "insertBefore", "replaceChild"]; function I(e) { const t = function (e) { return (e || n.ee).get("jsonp") }(e); if (!f.il || P[t.debugId]) return t; P[t.debugId] = !0; var r = c(t), i = /[?&](?:callback|cb)=([^&#]+)/, o = /(.*)\.([^.]+)/, a = /^(\w+)(\.|$)(.*)$/; function s(e, t) { if (!e) return t; const r = e.match(a), n = r[1]; return s(r[3], t[n]) } return r.inPlace(Node.prototype, R, "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 n = (a = e.src, c = a.match(i), c ? c[1] : null); var a, c; if (!n) return; var u = function (e) { var t = e.match(o); if (t && t.length >= 3) return { key: t[2], parent: s(t[1], window) }; return { key: e, parent: window } }(n); if ("function" != typeof u.parent[u.key]) return; var d = {}; function l() { t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, O.m$)(!1)), e.removeEventListener("error", f, (0, O.m$)(!1)) } function f() { t.emit("jsonp-error", [], d), t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, O.m$)(!1)), e.removeEventListener("error", f, (0, O.m$)(!1)) } r.inPlace(u.parent, [u.key], "cb-", d), e.addEventListener("load", l, (0, O.m$)(!1)), e.addEventListener("error", f, (0, O.m$)(!1)), t.emit("new-jsonp", [e.src], d) }(e[0]) })), t } const k = {}; function H(e) { const t = function (e) { return (e || n.ee).get("mutation") }(e); if (!f.il || k[t.debugId]) return t; k[t.debugId] = !0; var r = c(t), i = f._A.MutationObserver; return i && (window.MutationObserver = function (e) { return this instanceof i ? new i(r(e, "fn-")) : i.apply(this, arguments) }, MutationObserver.prototype = i.prototype), t } const z = {}; function L(e) { const t = function (e) { return (e || n.ee).get("promise") }(e); if (z[t.debugId]) return t; z[t.debugId] = !0; var r = t.context, i = c(t), a = f._A.Promise; return a && function () { function e(r) { var n = t.context(), o = i(r, "executor-", n, null, !1); const s = Reflect.construct(a, [o], e); return t.context(s).getCtx = function () { return n }, s } f._A.Promise = e, Object.defineProperty(e, "name", { value: "Promise" }), e.toString = function () { return a.toString() }, Object.setPrototypeOf(e, a), ["all", "race"].forEach((function (r) { const n = a[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 = a[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 = a.prototype; const n = a.prototype.then; a.prototype.then = function () { var e = this, o = r(e); o.promise = e; for (var a = arguments.length, s = new Array(a), c = 0; c < a; c++) s[c] = arguments[c]; s[0] = i(s[0], "cb-", o, null, !1), s[1] = i(s[1], "cb-", o, null, !1); const u = n.apply(this, s); return o.nextPromise = u, t.emit("propagate", [e, !0], u, !1, !1), u }, a.prototype.then[o] = n, t.on("executor-start", (function (e) { e[0] = i(e[0], "resolve-", this, null, !1), e[1] = i(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 M = {}, F = "setTimeout", B = "setInterval", U = "clearTimeout", Z = "-start", V = "-", q = [F, "setImmediate", B, U, "clearImmediate"]; function G(e) { const t = function (e) { return (e || n.ee).get("timer") }(e); if (M[t.debugId]++) return t; M[t.debugId] = 1; var r = c(t); return r.inPlace(f._A, q.slice(0, 2), F + V), r.inPlace(f._A, q.slice(2, 3), B + V), r.inPlace(f._A, q.slice(3), U + V), t.on(B + Z, (function (e, t, n) { e[0] = r(e[0], "fn-", null, n) })), t.on(F + Z, (function (e, t, n) { this.method = n, this.timerDuration = isNaN(e[1]) ? 0 : +e[1], e[0] = r(e[0], "fn-", this, n) })), t } var W = r(50); const X = {}, Q = ["open", "send"]; function K(e) { var t = e || n.ee; const r = function (e) { return (e || n.ee).get("xhr") }(t); if (X[r.debugId]++) return r; X[r.debugId] = 1, b(t); var i = c(r), o = f._A.XMLHttpRequest, a = f._A.MutationObserver, s = f._A.Promise, u = f._A.setInterval, d = "readystatechange", l = ["onload", "onerror", "onabort", "onloadstart", "onloadend", "onprogress", "ontimeout"], h = [], p = f._A.XMLHttpRequest = function (e) { const t = new o(e), n = r.context(t); try { r.emit("new-xhr", [t], n), t.addEventListener(d, (a = n, function () { var e = this; e.readyState > 3 && !a.resolved && (a.resolved = !0, r.emit("xhr-resolved", [], e)), i.inPlace(e, l, "fn-", w) }), (0, O.m$)(!1)) } catch (e) { (0, W.Z)("An error occurred while intercepting XHR", e); try { r.emit("internal-error", [e]) } catch (e) {} } var a; return t }; function g(e, t) { i.inPlace(t, ["onreadystatechange"], "fn-", w) } if (function (e, t) { for (var r in e) t[r] = e[r] }(o, p), p.prototype = o.prototype, i.inPlace(p.prototype, Q, "-xhr-", w), r.on("send-xhr-start", (function (e, t) { g(e, t), function (e) { h.push(e), a && (m ? m.then(A) : u ? u(A) : (v = -v, y.data = v)) }(t) })), r.on("open-xhr-start", g), a) { var m = s && s.resolve(); if (!u && !s) { var v = 1, y = document.createTextNode(v); new a(A).observe(y, { characterData: !0 }) } } else t.on("fn-end", (function (e) { e[0] && e[0].type === d || A() })); function A() { for (var e = 0; e < h.length; e++) g(0, h[e]); h.length && (h = []) } function w(e, t) { return t } return r } }, 7825: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.ajax }, 6660: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.jserrors }, 3081: (e, t, r) => { r.d(t, { gF: () => o, mY: () => i, t9: () => n, vz: () => s, xS: () => a }); const n = r(3325).D.metrics, i = "sm", o = "cm", a = "storeSupportabilityMetrics", s = "storeEventMetrics" }, 4649: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageAction }, 7633: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewEvent }, 9251: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewTiming }, 7144: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.sessionReplay }, 3614: (e, t, r) => { r.d(t, { BST_RESOURCE: () => i, END: () => s, FEATURE_NAME: () => n, FN_END: () => u, FN_START: () => c, PUSH_STATE: () => d, RESOURCE: () => o, START: () => a }); const n = r(3325).D.sessionTrace, i = "bstResource", o = "resource", a = "-start", s = "-end", c = "fn" + a, u = "fn" + s, d = "pushState" }, 7836: (e, t, r) => { r.d(t, { BODY: () => x, CB_END: () => E, CB_START: () => u, END: () => w, FEATURE_NAME: () => i, FETCH: () => T, FETCH_BODY: () => v, FETCH_DONE: () => m, FETCH_START: () => g, FN_END: () => c, FN_START: () => s, INTERACTION: () => f, INTERACTION_API: () => d, INTERACTION_EVENTS: () => o, JSONP_END: () => b, JSONP_NODE: () => p, JS_TIME: () => _, MAX_TIMER_BUDGET: () => a, REMAINING: () => l, SPA_NODE: () => h, START: () => A, originalSetTimeout: () => y }); var n = r(234); const i = r(3325).D.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 = n.Yu.ST, A = "-start", w = "-end", x = "-body", E = "cb" + w, _ = "jsTime", T = "fetch" }, 5938: (e, t, r) => { r.d(t, { W: () => i }); var n = r(8325); class i { constructor(e, t, r) { this.agentIdentifier = e, this.aggregator = t, this.ee = n.ee.get(e), this.featureName = r, this.blocked = !1 } } }, 7530: (e, t, r) => { r.d(t, { j: () => b }); var n = r(3325), i = r(234), o = r(5546), a = r(8325), s = r(7894), c = r(8e3), u = r(3960), d = r(385), l = r(50), f = r(3081), h = r(8632); function p() { const e = (0, h.gG)(); ["setErrorHandler", "finished", "addToTrace", "addRelease", "addPageAction", "setCurrentRouteName", "setPageViewName", "setCustomAttribute", "interaction", "noticeError", "setUserId", "setApplicationVersion", "start"].forEach((t => { e[t] = function () { for (var r = arguments.length, n = new Array(r), i = 0; i < r; i++) n[i] = arguments[i]; return function (t) { for (var r = arguments.length, n = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) n[i - 1] = arguments[i]; let o = []; return Object.values(e.initializedAgents).forEach((e => { e.exposed && e.api[t] && o.push(e.api[t](...n)) })), o.length > 1 ? o : o[0] }(t, ...n) } })) } var g = r(2587); const m = e => { const t = e.startsWith("http"); e += "/", r.p = t ? e : "https://" + e }; let v = !1; function b(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, b = arguments.length > 2 ? arguments[2] : void 0, y = arguments.length > 3 ? arguments[3] : void 0, { init: A, info: w, loader_config: x, runtime: E = { loaderType: b }, exposed: _ = !0 } = t; const T = (0, h.gG)(); w || (A = T.init, w = T.info, x = T.loader_config), (0, i.Dg)(e, A || {}), (0, i.GE)(e, x || {}), w.jsAttributes ??= {}, d.v6 && (w.jsAttributes.isWorker = !0), (0, i.CX)(e, w); const S = (0, i.P_)(e), D = [w.beacon, w.errorBeacon]; v || (v = !0, S.proxy.assets && (m(S.proxy.assets), D.push(S.proxy.assets)), S.proxy.beacon && D.push(S.proxy.beacon)), E.denyList = [...S.ajax.deny_list || [], ...S.ajax.block_internal ? D : []], (0, i.sU)(e, E), p(); const j = function (e, t) { t || (0, c.R)(e, "api"); const h = {}; var p = a.ee.get(e), g = p.get("tracer"), m = "api-", v = m + "ixn-"; function b(t, r, n, o) { const a = (0, i.C5)(e); return null === r ? delete a.jsAttributes[t] : (0, i.CX)(e, { ...a, jsAttributes: { ...a.jsAttributes, [t]: r } }), w(m, n, !0, o || null === r ? "session" : void 0)(t, r) } function y() {} ["setErrorHandler", "finished", "addToTrace", "addRelease"].forEach((e => { h[e] = w(m, e, !0, "api") })), h.addPageAction = w(m, "addPageAction", !0, n.D.pageAction), h.setCurrentRouteName = w(m, "routeName", !0, n.D.spa), h.setPageViewName = function (t, r) { if ("string" == typeof t) return "/" !== t.charAt(0) && (t = "/" + t), (0, i.OP)(e).customTransaction = (r || "http://custom.transaction") + t, w(m, "setPageViewName", !0)() }, h.setCustomAttribute = function (e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if ("string" == typeof e) { if (["string", "number", "boolean"].includes(typeof t) || null === t) return b(e, t, "setCustomAttribute", r); (0, l.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string, number or boolean type, but a type of <".concat(typeof t, "> was provided.")) } else(0, l.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, h.setUserId = function (e) { if ("string" == typeof e || null === e) return b("enduser.id", e, "setUserId", !0); (0, l.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, h.setApplicationVersion = function (e) { if ("string" == typeof e || null === e) return b("application.version", e, "setApplicationVersion", !1); (0, l.Z)("Failed to execute setApplicationVersion. Expected <String | null>, but got <".concat(typeof e, ">.")) }, h.start = e => { try { const t = e ? "defined" : "undefined"; (0, o.p)(f.xS, ["API/start/".concat(t, "/called")], void 0, n.D.metrics, p); const r = Object.values(n.D); if (void 0 === e) e = r; else { if ((e = Array.isArray(e) && e.length ? e : [e]).some((e => !r.includes(e)))) return (0, l.Z)("Invalid feature name supplied. Acceptable feature names are: ".concat(r)); e.includes(n.D.pageViewEvent) || e.push(n.D.pageViewEvent) } e.forEach((e => { p.emit("".concat(e, "-opt-in")) })) } catch (e) { (0, l.Z)("An unexpected issue occurred", e) } }, h.interaction = function () { return (new y).get() }; var A = y.prototype = { createTracer: function (e, t) { var r = {}, i = this, a = "function" == typeof t; return (0, o.p)(v + "tracer", [(0, s.z)(), e, r], i, n.D.spa, p), function () { if (g.emit((a ? "" : "no-") + "fn-start", [(0, s.z)(), i, a], r), a) try { return t.apply(this, arguments) } catch (e) { throw g.emit("fn-err", [arguments, this, e], r), e } finally { g.emit("fn-end", [(0, s.z)()], r) } } } }; function w(e, t, r, i) { return function () { return (0, o.p)(f.xS, ["API/" + t + "/called"], void 0, n.D.metrics, p), i && (0, o.p)(e + t, [(0, s.z)(), ...arguments], r ? null : this, i, p), r ? void 0 : this } } function x() { r.e(111).then(r.bind(r, 7438)).then((t => { let { setAPI: r } = t; r(e), (0, c.L)(e, "api") })).catch((() => (0, l.Z)("Downloading runtime APIs failed..."))) } return ["actionText", "setName", "setAttribute", "save", "ignore", "onEnd", "getContext", "end", "get"].forEach((e => { A[e] = w(v, e, void 0, n.D.spa) })), h.noticeError = function (e, t) { "string" == typeof e && (e = new Error(e)), (0, o.p)(f.xS, ["API/noticeError/called"], void 0, n.D.metrics, p), (0, o.p)("err", [e, (0, s.z)(), !1, t], void 0, n.D.jserrors, p) }, d.il ? (0, u.b)((() => x()), !0) : x(), h }(e, y); return (0, h.Qy)(e, j, "api"), (0, h.Qy)(e, _, "exposed"), (0, h.EZ)("activatedFeatures", g.T), j } }, 3325: (e, t, r) => { r.d(t, { D: () => n, p: () => i }); const n = { ajax: "ajax", jserrors: "jserrors", metrics: "metrics", pageAction: "page_action", pageViewEvent: "page_view_event", pageViewTiming: "page_view_timing", sessionReplay: "session_replay", sessionTrace: "session_trace", spa: "spa" }, i = { [n.pageViewEvent]: 1, [n.pageViewTiming]: 2, [n.metrics]: 3, [n.jserrors]: 4, [n.ajax]: 5, [n.sessionTrace]: 6, [n.pageAction]: 7, [n.spa]: 8, [n.sessionReplay]: 9 } } }, 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 => ({ 111: "nr-spa", 164: "nr-spa-compressor", 433: "nr-spa-recorder" } [e] + "-1.246.0.min.js"), i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), e = {}, t = "NRBA-1.246.0.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 } } s || (c = !0, (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), e[r] = [n]; var f = (t, n) => { s.onerror = s.onload = null, clearTimeout(h); var i = e[r]; if (delete e[r], s.parentNode && s.parentNode.removeChild(s), i && i.forEach((e => e(n))), t) return t(n) }, h = setTimeout(f.bind(null, void 0, { type: "timeout", target: s }), 12e4); s.onerror = f.bind(null, s.onerror), s.onload = f.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 = { 801: 0, 92: 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.246.0.PROD"] = self["webpackChunk:NRBA-1.246.0.PROD"] || []; r.forEach(t.bind(null, 0)), r.push = t.bind(null, r.push.bind(r)) })(), (() => { var e = i(50); class t { addPageAction(t, r) { (0, e.Z)("Call to agent api addPageAction failed. The page action feature is not currently initialized.") } setPageViewName(t, r) { (0, e.Z)("Call to agent api setPageViewName failed. The page view feature is not currently initialized.") } setCustomAttribute(t, r, n) { (0, e.Z)("Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.") } noticeError(t, r) { (0, e.Z)("Call to agent api noticeError failed. The js errors feature is not currently initialized.") } setUserId(t) { (0, e.Z)("Call to agent api setUserId failed. The js errors feature is not currently initialized.") } setApplicationVersion(t) { (0, e.Z)("Call to agent api setApplicationVersion failed. The agent is not currently initialized.") } setErrorHandler(t) { (0, e.Z)("Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.") } finished(t) { (0, e.Z)("Call to agent api finished failed. The page action feature is not currently initialized.") } addRelease(t, r) { (0, e.Z)("Call to agent api addRelease failed. The js errors feature is not currently initialized.") } start(t) { (0, e.Z)("Call to agent api addRelease failed. The agent is not currently initialized.") } } var r = i(3325), n = i(234); const o = Object.values(r.D); function a(e) { const t = {}; return o.forEach((r => { t[r] = function (e, t) { return !1 !== (0, n.Mt)(t, "".concat(e, ".enabled")) }(r, e) })), t } var s = i(7530); var c = i(8e3), u = i(5938), d = i(3960), l = i(385); class f extends u.W { constructor(e, t, r) { let i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; super(e, t, r), this.auto = i, this.abortHandler = void 0, this.featAggregate = void 0, this.onAggregateImported = void 0, !1 === (0, n.Mt)(this.agentIdentifier, "".concat(this.featureName, ".autoStart")) && (this.auto = !1), this.auto && (0, c.R)(e, r) } importAggregator() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (this.featAggregate) return; if (!this.auto) return void this.ee.on("".concat(this.featureName, "-opt-in"), (() => { (0, c.R)(this.agentIdentifier, this.featureName), this.auto = !0, this.importAggregator() })); const r = l.il && !0 === (0, n.Mt)(this.agentIdentifier, "privacy.cookies_enabled"); let o; this.onAggregateImported = new Promise((e => { o = e })); const a = async () => { let n; try { if (r) { const { setupAgentSession: e } = await i.e(111).then(i.bind(i, 3228)); n = e(this.agentIdentifier) } } catch (t) { (0, e.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.", t) } try { if (!this.shouldImportAgg(this.featureName, n)) return (0, c.L)(this.agentIdentifier, this.featureName), void o(!1); const { lazyFeatureLoader: e } = await i.e(111).then(i.bind(i, 8582)), { Aggregate: r } = await e(this.featureName, "aggregate"); this.featAggregate = new r(this.agentIdentifier, this.aggregator, t), o(!0) } catch (t) { (0, e.Z)("Downloading and initializing ".concat(this.featureName, " failed..."), t), this.abortHandler?.(), (0, c.L)(this.agentIdentifier, this.featureName), o(!1) } }; l.il ? (0, d.b)((() => a()), !0) : a() } shouldImportAgg(e, t) { return e !== r.D.sessionReplay || !!n.Yu.MO && (!1 !== (0, n.Mt)(this.agentIdentifier, "session_trace.enabled") && (!!t?.isNew || !!t?.state.sessionReplayMode)) } } var h = i(7633); class p extends f { static featureName = h.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, h.t, r), this.importAggregator() } } var g = i(1117), m = i(1284); class v extends g.w { constructor(e) { super(e), this.aggregatedData = {} } store(e, t, r, n, i) { var o = this.getBucket(e, t, r, i); return o.metrics = function (e, t) { t || (t = { count: 0 }); return t.count += 1, (0, m.D)(e, (function (e, r) { t[e] = b(r, t[e]) })), t }(n, o.metrics), o } merge(e, t, r, n, i) { var o = this.getBucket(e, t, n, i); if (o.metrics) { var a = o.metrics; a.count += r.count, (0, m.D)(r, (function (e, t) { if ("count" !== e) { var n = a[e], i = r[e]; i && !i.c ? a[e] = b(i.t, n) : a[e] = function (e, t) { if (!t) return e; t.c || (t = y(t.t)); return t.min = Math.min(e.min, t.min), t.max = Math.max(e.max, t.max), t.t += e.t, t.sos += e.sos, t.c += e.c, t }(i, a[e]) } })) } else o.metrics = r } storeMetric(e, t, r, n) { var i = this.getBucket(e, t, r); return i.stats = b(n, i.stats), i } getBucket(e, t, r, n) { this.aggregatedData[e] || (this.aggregatedData[e] = {}); var i = this.aggregatedData[e][t]; return i || (i = this.aggregatedData[e][t] = { params: r || {} }, n && (i.custom = n)), i } get(e, t) { return t ? this.aggregatedData[e] && this.aggregatedData[e][t] : this.aggregatedData[e] } take(e) { for (var t = {}, r = "", n = !1, i = 0; i < e.length; i++) t[r = e[i]] = A(this.aggregatedData[r]), t[r].length && (n = !0), delete this.aggregatedData[r]; return n ? t : null } } function b(e, t) { return null == e ? function (e) { e ? e.c++ : e = { c: 1 }; return e }(t) : t ? (t.c || (t = y(t.t)), t.c += 1, t.t += e, t.sos += e * e, e > t.max && (t.max = e), e < t.min && (t.min = e), t) : { t: e } } function y(e) { return { t: e, min: e, max: e, sos: e * e, c: 1 } } function A(e) { return "object" != typeof e ? [] : (0, m.D)(e, w) } function w(e, t) { return t } var x = i(8632), E = i(4402), _ = i(4351); var T = i(5546), S = i(7956), D = i(3239), j = i(7894), N = i(9251); class C extends f { static featureName = N.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, N.t, r), l.il && ((0, S.N)((() => (0, T.p)("docHidden", [(0, j.z)()], void 0, N.t, this.ee)), !0), (0, D.bP)("pagehide", (() => (0, T.p)("winPagehide", [(0, j.z)()], void 0, N.t, this.ee))), this.importAggregator()) } } var O = i(3081); class P extends f { static featureName = O.t9; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, O.t9, r), this.importAggregator() } } var R = i(6660); class I { constructor(e, t, r, n) { this.name = "UncaughtError", this.message = e, this.sourceURL = t, this.line = r, this.column = n } } class k extends f { static featureName = R.t; #e = new Set; constructor(e, t) { let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, R.t, n); try { this.removeOnAbort = new AbortController } catch (e) {} this.ee.on("fn-err", ((e, t, n) => { this.abortHandler && !this.#e.has(n) && (this.#e.add(n), (0, T.p)("err", [this.#t(n), (0, j.z)()], void 0, r.D.jserrors, this.ee)) })), this.ee.on("internal-error", (e => { this.abortHandler && (0, T.p)("ierr", [this.#t(e), (0, j.z)(), !0], void 0, r.D.jserrors, this.ee) })), l._A.addEventListener("unhandledrejection", (e => { this.abortHandler && (0, T.p)("err", [this.#r(e), (0, j.z)(), !1, { unhandledPromiseRejection: 1 }], void 0, r.D.jserrors, this.ee) }), (0, D.m$)(!1, this.removeOnAbort?.signal)), l._A.addEventListener("error", (e => { this.abortHandler && (this.#e.has(e.error) ? this.#e.delete(e.error) : (0, T.p)("err", [this.#n(e), (0, j.z)()], void 0, r.D.jserrors, this.ee)) }), (0, D.m$)(!1, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator() } #i() { this.removeOnAbort?.abort(), this.#e.clear(), this.abortHandler = void 0 } #t(e) { return e instanceof Error ? e : void 0 !== e?.message ? new I(e.message, e.filename || e.sourceURL, e.lineno || e.line, e.colno || e.col) : new I("string" == typeof e ? e : (0, _.P)(e)) } #r(e) { let t = "Unhandled Promise Rejection: "; if (e?.reason instanceof Error) try { return e.reason.message = t + e.reason.message, e.reason } catch (t) { return e.reason } if (void 0 === e.reason) return new I(t); const r = this.#t(e.reason); return r.message = t + r.message, r } #n(e) { return e.error instanceof Error ? e.error : new I(e.message, e.filename, e.lineno, e.colno) } } var H = i(2210); let z = 1; const L = "nr@id"; function M(e) { const t = typeof e; return !e || "object" !== t && "function" !== t ? -1 : e === l._A ? 0 : (0, H.X)(e, L, (function () { return z++ })) } function F(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)(e).length } catch (e) { return } } } var B = i(1214), U = i(7243); class Z { constructor(e) { this.agentIdentifier = e } generateTracePayload(e) { if (!this.shouldGenerateTrace(e)) return null; var t = (0, n.DL)(this.agentIdentifier); if (!t) return null; var r = (t.accountID || "").toString() || null, i = (t.agentID || "").toString() || null, o = (t.trustKey || "").toString() || null; if (!r || !i) return null; var a = (0, E.M)(), s = (0, E.Ht)(), 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, r, i, o)), (e.sameOrigin && !this.excludeNewrelicHeader() || !e.sameOrigin && this.isAllowedOrigin(e) && this.useNewrelicHeaderForCors()) && (u.newrelicHeader = this.generateTraceHeader(a, s, c, r, 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 l._A?.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)) } shouldGenerateTrace(e) { return this.isDtEnabled() && this.isAllowedOrigin(e) } isAllowedOrigin(e) { var t = !1, r = {}; if ((0, n.Mt)(this.agentIdentifier, "distributed_tracing") && (r = (0, n.P_)(this.agentIdentifier).distributed_tracing), e.sameOrigin) t = !0; else if (r.allowed_origins instanceof Array) for (var i = 0; i < r.allowed_origins.length; i++) { var o = (0, U.e)(r.allowed_origins[i]); if (e.hostname === o.hostname && e.protocol === o.protocol && e.port === o.port) { t = !0; break } } return t } isDtEnabled() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.enabled } excludeNewrelicHeader() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.exclude_newrelic_header } useNewrelicHeaderForCors() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !1 !== e.cors_use_newrelic_header } useTraceContextHeadersForCors() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.cors_use_tracecontext_headers } } var V = i(7825), q = ["load", "error", "abort", "timeout"], G = q.length, W = n.Yu.REQ, X = n.Yu.XHR; class Q extends f { static featureName = V.t; constructor(e, t) { let i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; if (super(e, t, V.t, i), (0, n.OP)(e).xhrWrappable) { this.dt = new Z(e), this.handler = (e, t, r, n) => (0, T.p)(e, t, r, n, this.ee); try { const e = { xmlhttprequest: "xhr", fetch: "fetch", beacon: "beacon" }; l._A?.performance?.getEntriesByType("resource").forEach((t => { if (t.initiatorType in e && 0 !== t.responseStatus) { const n = { status: t.responseStatus }, i = { rxSize: t.transferSize, duration: Math.floor(t.duration), cbTime: 0 }; K(n, t.name), this.handler("xhr", [n, i, t.startTime, t.responseEnd, e[t.initiatorType]], void 0, r.D.ajax) } })) } catch (e) {}(0, B.u5)(this.ee), (0, B.Kf)(this.ee), function (e, t, i, o) { function a(e) { var t = this; t.totalCbs = 0, t.called = 0, t.cbTime = 0, t.end = x, 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, D.m$)(!1)), l.IF || e.addEventListener("progress", (function (e) { t.lastSize = e.loaded }), (0, D.m$)(!1)) } function s(e) { this.params = { method: e[0] }, K(this, e[1]), this.metrics = {} } function c(t, r) { var i = (0, n.DL)(e); i.xpid && this.sameOrigin && r.setRequestHeader("X-NewRelic-ID", i.xpid); var a = o.generateTracePayload(this.parsedOrigin); if (a) { var s = !1; a.newrelicHeader && (r.setRequestHeader("newrelic", a.newrelicHeader), s = !0), a.traceContextParentHeader && (r.setRequestHeader("traceparent", a.traceContextParentHeader), a.traceContextStateHeader && r.setRequestHeader("tracestate", a.traceContextStateHeader), s = !0), s && (this.dt = a) } } function u(e, r) { var n = this.metrics, i = e[0], o = this; if (n && i) { var a = F(i); a && (n.txSize = a) } this.startTime = (0, j.z)(), 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 < G; s++) r.addEventListener(q[s], this.listener, (0, D.m$)(!1)) } function d(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 f(e, t) { var r = "" + M(e) + !!t; this.xhrGuids && !this.xhrGuids[r] && (this.xhrGuids[r] = !0, this.totalCbs += 1) } function h(e, t) { var r = "" + M(e) + !!t; this.xhrGuids && this.xhrGuids[r] && (delete this.xhrGuids[r], this.totalCbs -= 1) } function p() { this.endTime = (0, j.z)() } function g(e, r) { r instanceof X && "load" === e[0] && t.emit("xhr-load-added", [e[1], e[2]], r) } function m(e, r) { r instanceof X && "load" === e[0] && t.emit("xhr-load-removed", [e[1], e[2]], r) } function v(e, t, r) { t instanceof X && ("onload" === r && (this.onload = !0), ("load" === (e[0] && e[0].type) || this.onload) && (this.xhrCbStart = (0, j.z)())) } function b(e, r) { this.xhrCbStart && t.emit("xhr-cb-time", [(0, j.z)() - this.xhrCbStart, this.onload, r], r) } function y(e) { var t, r = e[1] || {}; if ("string" == typeof e[0] ? 0 === (t = e[0]).length && l.il && (t = "" + l._A.location.href) : e[0] && e[0].url ? t = e[0].url : l._A?.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, U.e)(t), this.sameOrigin = this.parsedOrigin.sameOrigin); var n = o.generateTracePayload(this.parsedOrigin); if (n && (n.newrelicHeader || n.traceContextParentHeader)) if (e[0] && e[0].headers) s(e[0].headers, n) && (this.dt = n); else { var i = {}; for (var a in r) i[a] = r[a]; i.headers = new Headers(r.headers || {}), s(i.headers, n) && (this.dt = n), e.length > 1 ? e[1] = i : e.push(i) } } 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 A(e, t) { this.params = {}, this.metrics = {}, this.startTime = (0, j.z)(), 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 W ? r = i.url : l._A?.URL && "object" == typeof i && i instanceof URL && (r = i.href), K(this, r); var o = ("" + (i && i instanceof W && i.method || n.method || "GET")).toUpperCase(); this.params.method = o, this.body = n.body, this.txSize = F(n.body) || 0 } function w(e, t) { var n; this.endTime = (0, j.z)(), this.params || (this.params = {}), this.params.status = t ? t.status : 0, "string" == typeof this.rxSize && this.rxSize.length > 0 && (n = +this.rxSize); var o = { txSize: this.txSize, rxSize: n, duration: (0, j.z)() - this.startTime }; i("xhr", [this.params, o, this.startTime, this.endTime, "fetch"], this, r.D.ajax) } function x(e) { var t = this.params, n = this.metrics; if (!this.ended) { this.ended = !0; for (var o = 0; o < G; o++) e.removeEventListener(q[o], this.listener, !1); t.aborted || (n.duration = (0, j.z)() - this.startTime, this.loadCaptureCalled || 4 !== e.readyState ? null == t.status && (t.status = 0) : E(this, e), n.cbTime = this.cbTime, i("xhr", [t, n, this.startTime, this.endTime, "xhr"], this, r.D.ajax)) } } function E(e, t) { e.params.status = t.status; var r = function (e, t) { var r = e.responseType; return "json" === r && null !== t ? t : "arraybuffer" === r || "blob" === r || "json" === r ? F(e.response) : "text" === r || "" === r || void 0 === r ? F(e.responseText) : void 0 }(t, e.lastSize); if (r && (e.metrics.rxSize = r), e.sameOrigin) { var n = t.getResponseHeader("X-NewRelic-App-Data"); n && (e.params.cat = n.split(", ").pop()) } e.loadCaptureCalled = !0 } t.on("new-xhr", a), t.on("open-xhr-start", s), t.on("open-xhr-end", c), t.on("send-xhr-start", u), t.on("xhr-cb-time", d), t.on("xhr-load-added", f), t.on("xhr-load-removed", h), t.on("xhr-resolved", p), t.on("addEventListener-end", g), t.on("removeEventListener-end", m), t.on("fn-end", b), t.on("fetch-before-start", y), t.on("fetch-start", A), t.on("fn-start", v), t.on("fetch-done", w) }(e, this.ee, this.handler, this.dt), this.importAggregator() } } } function K(e, t) { var r = (0, U.e)(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 } var Y = i(3614); const { BST_RESOURCE: J, RESOURCE: ee, START: te, END: re, FEATURE_NAME: ne, FN_END: ie, FN_START: oe, PUSH_STATE: ae } = Y; var se = i(7144); class ce extends f { static featureName = se.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, se.t, r), this.importAggregator() } } var ue = i(7836); const { FEATURE_NAME: de, START: le, END: fe, BODY: he, CB_END: pe, JS_TIME: ge, FETCH: me, FN_START: ve, CB_START: be, FN_END: ye } = ue; var Ae = i(4649); class we extends f { static featureName = Ae.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, Ae.t, r), this.importAggregator() } } new class extends t { constructor(t) { let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, E.ky)(16); super(), l._A ? (this.agentIdentifier = r, this.sharedAggregator = new v({ agentIdentifier: this.agentIdentifier }), this.features = {}, this.desiredFeatures = new Set(t.features || []), this.desiredFeatures.add(p), Object.assign(this, (0, s.j)(this.agentIdentifier, t, t.loaderType || "agent")), this.run()) : (0, e.Z)("Failed to initial the agent. Could not determine the runtime environment.") } get config() { return { info: (0, n.C5)(this.agentIdentifier), init: (0, n.P_)(this.agentIdentifier), loader_config: (0, n.DL)(this.agentIdentifier), runtime: (0, n.OP)(this.agentIdentifier) } } run() { const t = "features"; try { const n = a(this.agentIdentifier), i = [...this.desiredFeatures]; i.sort(((e, t) => r.p[e.featureName] - r.p[t.featureName])), i.forEach((t => { if (n[t.featureName] || t.featureName === r.D.pageViewEvent) { const i = function (e) { switch (e) { case r.D.ajax: return [r.D.jserrors]; case r.D.sessionTrace: return [r.D.ajax, r.D.pageViewEvent]; case r.D.sessionReplay: return [r.D.sessionTrace]; case r.D.pageViewTiming: return [r.D.pageViewEvent]; default: return [] } }(t.featureName); i.every((e => n[e])) || (0, e.Z)("".concat(t.featureName, " is enabled but one or more dependent features has been disabled (").concat((0, _.P)(i), "). This may cause unintended consequences or missing data...")), this.features[t.featureName] = new t(this.agentIdentifier, this.sharedAggregator) } })), (0, x.Qy)(this.agentIdentifier, this.features, t) } catch (r) { (0, e.Z)("Failed to initialize all enabled instrument classes (agent aborted) -", r); for (const e in this.features) this.features[e].abortHandler?.(); const n = (0, x.fP)(); return delete n.initializedAgents[this.agentIdentifier]?.api, delete n.initializedAgents[this.agentIdentifier]?.[t], delete this.sharedAggregator, n.ee?.abort(), delete n.ee?.get(this.agentIdentifier), !1 } } addToTrace(t) { (0, e.Z)("Call to agent api addToTrace failed. The session trace feature is not currently initialized.") } setCurrentRouteName(t) { (0, e.Z)("Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.") } interaction() { (0, e.Z)("Call to agent api interaction failed. The spa feature is not currently initialized.") } }({ features: [Q, p, C, class extends f { static featureName = ne; constructor(e, t) { if (super(e, t, ne, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il) return; const n = this.ee; let i; (0, B.QU)(n), this.eventsEE = (0, B.em)(n), this.eventsEE.on(oe, (function (e, t) { this.bstStart = (0, j.z)() })), this.eventsEE.on(ie, (function (e, t) { (0, T.p)("bst", [e[0], t, this.bstStart, (0, j.z)()], void 0, r.D.sessionTrace, n) })), n.on(ae + te, (function (e) { this.time = (0, j.z)(), this.startPath = location.pathname + location.hash })), n.on(ae + re, (function (e) { (0, T.p)("bstHist", [location.pathname + location.hash, this.startPath, this.time], void 0, r.D.sessionTrace, n) })); try { i = new PerformanceObserver((e => { const t = e.getEntries(); (0, T.p)(J, [t], void 0, r.D.sessionTrace, n) })), i.observe({ type: ee, buffered: !0 }) } catch (e) {} this.importAggregator({ resourceObserver: i }) } }, ce, P, we, k, class extends f { static featureName = de; constructor(e, t) { if (super(e, t, de, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il) return; if (!(0, n.OP)(e).xhrWrappable) return; try { this.removeOnAbort = new AbortController } catch (e) {} let r, i = 0; const o = this.ee.get("tracer"), a = (0, B._L)(this.ee), s = (0, B.Lg)(this.ee), c = (0, B.BV)(this.ee), u = (0, B.Kf)(this.ee), d = this.ee.get("events"), f = (0, B.u5)(this.ee), h = (0, B.QU)(this.ee), p = (0, B.Gm)(this.ee); function g(e, t) { h.emit("newURL", ["" + window.location, t]) } function m() { i++, r = window.location.hash, this[ve] = (0, j.z)() } function v() { i--, window.location.hash !== r && g(0, !0); var e = (0, j.z)(); this[ge] = ~~this[ge] + e - this[ve], this[ye] = e } function b(e, t) { e.on(t, (function () { this[t] = (0, j.z)() })) } this.ee.on(ve, m), s.on(be, m), a.on(be, m), this.ee.on(ye, v), s.on(pe, v), a.on(pe, v), this.ee.buffer([ve, ye, "xhr-resolved"], this.featureName), d.buffer([ve], this.featureName), c.buffer(["setTimeout" + fe, "clearTimeout" + le, ve], this.featureName), u.buffer([ve, "new-xhr", "send-xhr" + le], this.featureName), f.buffer([me + le, me + "-done", me + he + le, me + he + fe], this.featureName), h.buffer(["newURL"], this.featureName), p.buffer([ve], this.featureName), s.buffer(["propagate", be, pe, "executor-err", "resolve" + le], this.featureName), o.buffer([ve, "no-" + ve], this.featureName), a.buffer(["new-jsonp", "cb-start", "jsonp-error", "jsonp-end"], this.featureName), b(f, me + le), b(f, me + "-done"), b(a, "new-jsonp"), b(a, "jsonp-end"), b(a, "cb-start"), h.on("pushState-end", g), h.on("replaceState-end", g), window.addEventListener("hashchange", g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("load", g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("popstate", (function () { g(0, i > 1) }), (0, D.m$)(!0, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator() } #i() { this.removeOnAbort?.abort(), this.abortHandler = void 0 } }], loaderType: "spa" }) })() })(); </script> <script> function mobileGlobalNav(elementName) { var icon = document.getElementsByClassName(elementName)[0]; icon.classList.toggle('active'); } </script> <meta charset="utf-8" /> <meta name="theme-color" content="#00247F"> <link href="/Bundles/css/main.css?v=8ad296c4d84118c9596d083f2c393e52b88cf947265f3189d9527ce00e9451d0" rel="stylesheet" /> <style> .preload-hide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #fff; z-index: 900; overflow: hidden; } </style> <script src='/Bundles/js/recommended-courses-bundle.js?v=c14132f570a0b529f454eb87d0c553923beb5cafaf7ad0fb719b8885534c7857'></script> </head> <body class="theme-aap " style="padding-top:0"> <div class="browser-message-container " data-browser-message-container> <div class="browser-alert ie"> <div class="browser-alert-inner"> <div class="browser-alert-title"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-warning" /> </svg> <p class="browser-alert-title-text"> Internet Explorer Alert </p> </div> <div class="browser-alert-content"> <p>It appears you are using Internet Explorer as your web browser. Please note, Internet Explorer is no longer up-to-date and can cause problems in how this website functions<br />This site functions best using the latest versions of any of the following browsers: <strong>Edge, Firefox, Chrome, Opera, or Safari</strong>. <br />You can find the latest versions of these browsers at <a href="https://browsehappy.com/" target="_blank" rel="noopener">https://browsehappy.com</a></p> </div> </div> <svg class="svg-icon" aria-hidden="true" focusable="false" data-browser-message-close="ie"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-close" /> </svg> </div> </div> <header> </header> <!-- Google Tag Manager (noscript) --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N2RV28J" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <div class="header-advertisement"> <a class="header-advertisement-disclaimer" target="_blank" href="/en/pages/ad-disclaimer/">Advertisement Disclaimer</a> <!-- /22410314033/aap_leadert --> <div id='div-gpt-ad-1633540336787-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1633540336787-0'); }); </script> </div> </div> <header class="mobile-header print-hide"> <div class="mobile-header-top"> <div class="mobile-header-left"> <div class="mobile-header-top-trigger"> <svg class="mobile-header-top-trigger-open"> <use xlink:href="#mobile-menu-open"></use> </svg> <svg class="mobile-header-top-trigger-close"> <use xlink:href="#mobile-menu-close"></use> </svg> </div> <svg class="mobile-header-logo"> <use xlink:href="#Seal_Pos"></use> </svg> </div> <div class="utility-nav"> <div class="utility-nav-item utility-nav-search"> <svg class="utility-nav-search-icon"> <use xlink:href="#info-magnifying-glass"></use> </svg> <svg class="utility-nav-close"> <use xlink:href="#mobile-menu-close"></use> </svg> </div> <a class="utility-nav-item utility-nav-cart" data-cart-popup-button-mobile aria-expanded="false" href="javascript:;"> <svg> <use xlink:href="#icon-cart"></use> </svg> <div class="utility-nav-cart-amount hidden" data-cart-amount-mobile></div> </a> <div class="utility-nav-item utility-nav-account"> <svg id="mobile-my-account-link"> <use xlink:href="#icon-profile"></use> </svg> <svg id="mobile-my-account-close" style="display: none;"> <use xlink:href="#mobile-menu-close"></use> </svg> <div id="mobile-my-account-menu" class="utility-my-account-menu"> <a class="utility-my-account-menu-logout" href="/en/my-account/login/">Login</a> </div> </div> <div class="utility-nav-item utility-nav-explore explore-aap-mobile" explore-nav-mobile> <a href="javascript:;" class="explore-aap-mobile-trigger" explore-nav-button aria-controls="explore-aap-nav-mobile" aria-expanded="false"> <svg id="mobile-explore-aap-link" class="explore-icon"> <use xlink:href="#icon-explore"></use> </svg> <svg id="mobile-explore-close" class="close-icon"> <use xlink:href="#mobile-menu-close"></use> </svg> </a> <div id="explore-aap-nav-mobile" class="explore-aap-links-wrap" explore-nav-menu aria-hidden="true"> <div class="explore-aap-links-wrap-inner"> <ul class="explore-aap-links"> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://publications.aap.org/" target="_blank"> Publications </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/shopaap/" target=""> shopAAP </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/pedialink/" target=""> PediaLink </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://www.healthychildren.org/" target="_blank"> HealthyChildren.org </a> </li> </ul> </div> </div> </div> </div> </div> <div class="popup-cart popup-cart-mobile" data-cart-popup-mobile aria-hidden="true"> <div class="popup-cart-header"> <div class="popup-cart-header-content"><h3>Shopping cart</h3> <p data-cart-popup-item-number></p></div> <button class="unbutton" type="button" data-cart-popup-button-close-mobile><svg> <use xlink:href="#icon-close"></use> </svg></button> </div> <div class="popup-cart-warning popup-cart-warning-mobile" data-cart-validation-messages></div> <div class="popup-cart-wrapper" data-cart-popup-cart> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/"><svg><use xlink:href="#icon-cart"></use></svg>Go to Cart</a> <a class="button-primary" id="cart-popup-checkout-cta-mobile" href="/en/shopaap/cart/shipping/">Checkout</a> </div> <div class="popup-cart-item-list" data-cart-popup-items></div> <div class="popup-cart-more" data-cart-popup-overflow></div> <button type="button" class="unbutton button-link" data-cart-clear-cart-cta id="cart-popup-clear-cart-cta-mobile">Clear Cart</button> <div class="popup-cart-total"><p class="paragraph-large">Order Subtotal</p><p class="paragraph-large" data-cart-popup-subtotal></p></div> </div> <div data-cart-popup-empty class="popup-cart-empty active"> <svg> <use xlink:href="#icon-cart"></use> </svg> <p class="popup-cart-empty-title">Your cart is empty.</p> <p class="popup-cart-empty-subtitle">Looks like you haven't added anything to your cart.</p> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/">View Saved Items</a> <a class="button-primary" href="https://www.aap.org/en/shopaap">Go Shopping</a></div> </div> <div data-cart-popup-loading class="popup-cart-empty active"> <p>Loading</p> <div class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </div> </div> <div class="mobile-search-wrapper"> <div id="mobile-search-bar-component"></div> </div> <div class="mobile-global-nav"> <ul class="mobile-global-nav-menu unlisted" id="main-nav-menu-mobile"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('aaphome')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/"> News </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/membership-application/join-aap/"> Membership </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/career-resources/"> Career Resources </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/research/"> Research </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/philanthropy/"> Philanthropy </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/about-the-aap/"> About the AAP </a> </li> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('policy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://doi.org/10.1542/peds.2024-069987"> Recommended Childhood and Adolescent Immunization Schedule: United States, 2025: Policy Statement </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://publications.aap.org/aapnews/news/30742"> CDC Releases 2025 Immunization Schedules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://www.healthychildren.org/English/ages-stages/teen/substance-abuse/Pages/dangers-of-prescription-drug-misuse-tips-to-keep-your-teen-safe.aspx"> Dangers of Prescription Drug Misuse: Tips to Keep Your Teen Safe </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/news-releases-from-the-aap/"> News Releases </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://pediatrics.aappublications.org/collection"> Policy Collections </a> </li> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('advocacy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/the-state-of-children-in-2020/"> The State of Children in 2020 </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/healthy-children/"> Healthy Children </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/secure-families/"> Secure Families </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/strong-communities/"> Strong Communities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/a-leading-nation-for-youth/"> A Leading Nation for Youth </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/transition-plan-2020/"> Transition Plan: Advancing Child Health in the Biden-Harris Administration </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/health-care-access-coverage/"> Health Care Access & Coverage </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/immigrant-child-health/"> Immigrant Child Health </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/gun-violence-prevention/"> Gun Violence Prevention </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/tobacco-e-cigarettes/"> Tobacco & E-Cigarettes </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/vaccines/"> Vaccines </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/child-nutrition/"> Child Nutrition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/assault-weapons-bans/"> Assault Weapons Bans </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/childhood-immunizations/"> Childhood Immunizations </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/flavored-e-cigarette-and-tobacco-products/"> E-Cigarette and Tobacco Products </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/childrens-health-care-coverage-fact-sheets/"> Children’s Health Care Coverage Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/opioid-fact-sheets/"> Opioid Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/advocacy-training-modules/"> Advocacy Training Modules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/my-account/login/Authenticate?returnurl=/globalassets/documents/academic-and-subspecialty-advocacy-washington-report_march-2020.pdf"> Subspecialty Advocacy Report </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/aap-advocacy-internship-program/"> AAP Washington Office Internship </a> </li> </ul> </li> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('pedialink')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/online-courses/"> Online Courses </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/live-activities/"> Live and Virtual Activities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://aapexperience.org/"> National Conference and Exhibition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/self-assessments/"> Prep®- Pediatric Review and Education Programs </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/publications/journals/"> Journals and Publications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/pedialink/neonatal-resuscitation-program/"> NRP </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://login.healthstream.com/hstmsts/login.aspx"> NRP LMS Login </a> </li> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('community')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-committees/"> AAP Committees </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-councils/"> AAP Councils </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-sections/"> AAP Sections </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://collaborate.aap.org/AAP-Volunteer-Network/Pages/Volunteer-Board-National.aspx"> Volunteer Network </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/join-your-chapter/"> Join a Chapter </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/chapter-websites/"> Chapter Websites </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/members/home/directories-and-rosters/chapter-district-leadership-rosters/chapter-and-district-executive-directors/"> Chapter Executive Directors </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/district-map/"> District Map </a> </li> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="_blank" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap main-nav-menu-item-mobile-only "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> </div> </header> <header class="global-header "> <div class="global-header-top"> <div class="main-nav print-hide" id="main-nav"> <div class="main-nav-wrapper" id="main-nav-wrapper"> <div class="main-nav-left-wrapper"> <ul class="main-nav-menu unlisted" id="main-nav-menu"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('aaphome')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/"> News </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/membership-application/join-aap/"> Membership </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/career-resources/"> Career Resources </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/research/"> Research </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/philanthropy/"> Philanthropy </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/about-the-aap/"> About the AAP </a> </li> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('policy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://doi.org/10.1542/peds.2024-069987"> Recommended Childhood and Adolescent Immunization Schedule: United States, 2025: Policy Statement </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://publications.aap.org/aapnews/news/30742"> CDC Releases 2025 Immunization Schedules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://www.healthychildren.org/English/ages-stages/teen/substance-abuse/Pages/dangers-of-prescription-drug-misuse-tips-to-keep-your-teen-safe.aspx"> Dangers of Prescription Drug Misuse: Tips to Keep Your Teen Safe </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/news-releases-from-the-aap/"> News Releases </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://pediatrics.aappublications.org/collection"> Policy Collections </a> </li> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('advocacy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/the-state-of-children-in-2020/"> The State of Children in 2020 </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/healthy-children/"> Healthy Children </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/secure-families/"> Secure Families </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/strong-communities/"> Strong Communities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/a-leading-nation-for-youth/"> A Leading Nation for Youth </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/transition-plan-2020/"> Transition Plan: Advancing Child Health in the Biden-Harris Administration </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/health-care-access-coverage/"> Health Care Access & Coverage </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/immigrant-child-health/"> Immigrant Child Health </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/gun-violence-prevention/"> Gun Violence Prevention </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/tobacco-e-cigarettes/"> Tobacco & E-Cigarettes </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/vaccines/"> Vaccines </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/child-nutrition/"> Child Nutrition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/assault-weapons-bans/"> Assault Weapons Bans </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/childhood-immunizations/"> Childhood Immunizations </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/flavored-e-cigarette-and-tobacco-products/"> E-Cigarette and Tobacco Products </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/childrens-health-care-coverage-fact-sheets/"> Children’s Health Care Coverage Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/opioid-fact-sheets/"> Opioid Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/advocacy-training-modules/"> Advocacy Training Modules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/my-account/login/Authenticate?returnurl=/globalassets/documents/academic-and-subspecialty-advocacy-washington-report_march-2020.pdf"> Subspecialty Advocacy Report </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/aap-advocacy-internship-program/"> AAP Washington Office Internship </a> </li> </ul> </li> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('pedialink')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/online-courses/"> Online Courses </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/live-activities/"> Live and Virtual Activities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://aapexperience.org/"> National Conference and Exhibition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/self-assessments/"> Prep®- Pediatric Review and Education Programs </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/publications/journals/"> Journals and Publications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/pedialink/neonatal-resuscitation-program/"> NRP </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://login.healthstream.com/hstmsts/login.aspx"> NRP LMS Login </a> </li> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('community')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-committees/"> AAP Committees </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-councils/"> AAP Councils </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-sections/"> AAP Sections </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://collaborate.aap.org/AAP-Volunteer-Network/Pages/Volunteer-Board-National.aspx"> Volunteer Network </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/join-your-chapter/"> Join a Chapter </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/chapter-websites/"> Chapter Websites </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/members/home/directories-and-rosters/chapter-district-leadership-rosters/chapter-and-district-executive-directors/"> Chapter Executive Directors </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/district-map/"> District Map </a> </li> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="_blank" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap main-nav-menu-item-mobile-only "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <div class="main-nav-dropdown" id="main-nav-dropdown"> <div class="main-nav-dropdown-button" id="main-nav-dropdown-button"> <span>More</span> <svg> <use xlink:href="#arrow-down"></use> </svg> </div> <ul class="main-nav-dropdown-menu unlisted" id="main-nav-dropdown-menu"></ul> </div> </div> <ul class="main-nav-menu unlisted" id="main-nav-menu-utility"> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart " id="li-shop-link"> <a href="https://www.aap.org/en/shopaap">shopAAP</a> </li> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart" id="li-shop-cart"> <a class="utility-nav-item utility-nav-cart" data-cart-popup-button aria-expanded="false" href="javascript:;"> <svg> <use xlink:href="#icon-cart"></use> </svg> <div class="utility-nav-cart-amount hidden" data-cart-amount></div> </a> <div class="popup-cart" data-cart-popup aria-hidden="true"> <div class="popup-cart-header"> <div class="popup-cart-header-content"> <h3>Shopping cart</h3> <p data-cart-popup-item-number></p> </div> <button class="unbutton" type="button" data-cart-popup-button-close> <svg> <use xlink:href="#icon-close"></use> </svg> </button> </div> <div class="popup-cart-warning" data-cart-validation-messages></div> <div class="popup-cart-wrapper" data-cart-popup-cart> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/"><svg><use xlink:href="#icon-cart"></use></svg>Go to Cart</a> <a class="button-primary" id="cart-popup-checkout-cta" href="/en/shopaap/cart/shipping/">Checkout</a> </div> <div class="popup-cart-item-list" data-cart-popup-items></div> <div class="popup-cart-more" data-cart-popup-overflow></div> <button type="button" class="unbutton button-link" data-cart-clear-cart-cta id="cart-popup-clear-cart-cta">Clear Cart</button> <div class="popup-cart-total"><p class="paragraph-large">Order Subtotal</p><p class="paragraph-large" data-cart-popup-subtotal></p></div> </div> <div data-cart-popup-empty class="popup-cart-empty active"> <svg> <use xlink:href="#icon-cart"></use> </svg> <p class="popup-cart-empty-title">Your cart is empty.</p> <p class="popup-cart-empty-subtitle">Looks like you haven't added anything to your cart.</p> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/">View Saved Items</a> <a class="button-primary" href="https://www.aap.org/en/shopaap">Go Shopping</a> </div> </div> <div data-cart-popup-loading class="popup-cart-empty active"> <p>Loading</p> <div class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </div> </div> </li> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart" id="li-utilitynav-create-account-link"> <a href="/en/my-account/create-account-landing-page/">Create Account</a> </li> <li class="main-nav-menu-item main-nav-menu-item-right-bullet utility-nav-item utility-nav-cart" id="li-utilitynav-login-link"> <a href="/en/my-account/login/?ReturnUrl=https://www.aap.org/en/practice-management/patient-scheduling-and-office-workflow/team-based-care-in-the-pediatric-office/"> Login </a> </li> <!--Explore AAP Button --> <div class="explore-aap-wrap" explore-nav> <a href="javascript:;" class="explore-aap-trigger" explore-nav-button aria-controls="explore-aap-nav" aria-expanded="false"> <span class="explore-icon"> <svg class="icon-explore"><use xlink:href="#icon-explore"></use></svg><span class="explore-aap-text">Explore AAP</span> </span> <span class="explore-aap-close"> <i class="icon-general-close"> <span class="screen-reader-only">Close</span> </i> </span> </a> <div id="explore-aap-nav" class="explore-aap-links-wrap" explore-nav-menu aria-hidden="true"> <div class="explore-aap-links-wrap-inner"> <ul class="explore-aap-links"> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://publications.aap.org/" target="_blank"> Publications </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/shopaap/" target=""> shopAAP </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/pedialink/" target=""> PediaLink </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://www.healthychildren.org/" target="_blank"> HealthyChildren.org </a> </li> </ul> </div> </div> </div> </ul> </div> </div> <div class="global-search-wrapper"> <a href="https://www.aap.org"> <div class="global-logo-aap"> <svg class="icon icon-AAP-Logo_1-Line_Black"> <use xlink:href="#icon-AAP-Logo_2-Line_Black"></use> </svg> </div> </a> <div id="search-bar-component"></div> </div> </div> <div class="global-header-contextual-nav "> <div class="global-header-wrapper"> <a class="global-header-contextual-nav-current" href="/link/437484f98578436f95c829cf7e429dbc.aspx"> Practice Management </a> <ul class="global-header-contextual-nav-links unlisted"> <li class="main-nav-menu-item practiceresources " onmouseenter="onMegaNavHover('practiceresources')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Practice Resources </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Practice Resources</div> <div class="description">Establishing and maintaining a pediatric practice requires planning and creative management to successfully meet the needs of patients and sustain a viable work environment. </div> <div class="cta"> <a href="/en/practice-management/"> Practice Management </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/practice-management/pediatric-practice-marketing-and-communications/" title="Marketing">Marketing</a> </li> <li> <a href="/en/work-in-progress/practice-management-secondary-nav/practice-tools-and-tips/" title="Tools and Templates">Tools and Templates</a> </li> <li> <a href="/en/practice-management/addressing-common-patient-concerns/" title="Common Patient Concerns">Common Patient Concerns</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/practice-management/personnel-management/" title="Personnel Management">Personnel Management</a> </li> <li> <a href="/en/practice-management/patient-scheduling-and-office-workflow/" title="Patient Scheduling">Patient Scheduling</a> </li> <li> <a href="/en/practice-management/health-information-technology/" title="Information Technology">Information Technology</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item liabilityandregulation " onmouseenter="onMegaNavHover('liabilityandregulation')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Liability and Regulation </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Liability and Regulation</div> <div class="description">Discover resources that will help you protect your practice and career—now and in the future.</div> <div class="cta"> <a href="/en/practice-management/"> Practice Management </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/practice-management/liability-and-regulation/osha-regulations-in-the-medical-office/" title="OSHA Regulations">OSHA Regulations</a> </li> <li> <a href="/en/practice-management/patient-scheduling-and-office-workflow/team-based-care-in-the-pediatric-office/" title="In Office Labs">In Office Labs</a> </li> <li> <a href="/en/practice-management/liability-and-regulation/preventing-health-care-fraud-and-abuse/" title="Preventing Fraud and Abuse">Preventing Fraud and Abuse</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/practice-management/liability-and-regulation/protecting-the-practice-from-medical-liability/" title="Protecting the Practice">Protecting the Practice</a> </li> <li> <a href="/en/work-in-progress/practice-management-secondary-nav/medical-malpractice-insurance-and-tail-coverage/" title="Medical Malpractice">Medical Malpractice</a> </li> <li> <a href="/en/practice-management/liability-and-regulation/health-insurance-portability-and-accountability-act-hipaa/">HIPAA</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item patientandfamilycenteredcare " onmouseenter="onMegaNavHover('patientandfamilycenteredcare')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Patient and Family Centered Care </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Patient and Family Centered Care</div> <div class="description">Find resources and tools to help you effectively communicate with youth and families in your practice. </div> <div class="cta"> <a href="/en/practice-management/providing-patient--and-family-centered-care/"> View Here </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/practice-management/providing-patient--and-family-centered-care/family-professional-partnerships-in-pediatric-health-care/" title="Family-Professional Partnerships">Family-Professional Partnerships</a> </li> <li> <a href="/en/practice-management/providing-patient--and-family-centered-care/addressing-low-health-literacy-and-limited-english-proficiency/" title="Low Health Literacy">Low Health Literacy</a> </li> <li> <a href="/en/practice-management/providing-patient--and-family-centered-care/shared-decision-making/" title="Shared Decision Making">Shared Decision Making</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/practice-management/providing-patient--and-family-centered-care/soliciting-feedback-from-families/" title="Soliciting Feedback from Families">Soliciting Feedback from Families</a> </li> <li> <a href="/en/practice-management/bright-futures/" target="_blank" title="Bright Futures">Bright Futures</a> </li> <li> <a href="/en/practice-management/medical-home/" title="Medical Home">Medical Home</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item paymentforchildhealthservices " onmouseenter="onMegaNavHover('paymentforchildhealthservices')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Payment for Child Health Services </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Payment for Child Health Services</div> <div class="description">Resources to help with the financial aspects of your pediatric practice.</div> <div class="cta"> <a href="/en/practice-management/practice-financing/"> Learn More </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list full-width"> <ul> <li> <a href="/en/practice-management/practice-financing/coding-and-valuation/">Coding and Valuation</a> </li> <li> <a href="/en/practice-management/practice-financing/payer-contracting-advocacy-and-other-resources/">Payer Contracting, Advocacy and Other Resources</a> </li> <li> <a href="/en/news-room/campaigns-and-toolkits/choosing-wisely/">Choosing Wisely</a> </li> <li> <a href="https://form.jotform.com/Subspecialty/aapcodinghotline">Hassle Factor Form</a> </li> </ul> </div> </div> </div> </div> </div> </li> </ul> </div> </div> <div class="global-header-contextual-mobile-nav " > <div class="global-header-contextual-mobile-wrapper" data-horizontal-scroll-container> <nav class="sub-nav"> <ul class="global-header-contextual-mobile-nav-links unlisted tabbed sub-nav-contents" data-horizontal-scroll-content> <li class="main-nav-menu-item practiceresources"> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" > Practice Resources </a> </div> </li> <li class="main-nav-menu-item liabilityandregulation"> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" > Liability and Regulation </a> </div> </li> <li class="main-nav-menu-item patientandfamilycenteredcare"> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/providing-patient--and-family-centered-care/" > Patient and Family Centered Care </a> </div> </li> <li class="main-nav-menu-item paymentforchildhealthservices"> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/practice-financing/" > Payment for Child Health Services </a> </div> </li> </ul> </nav> <button id="subNavAdvancerLeft" class="sub-nav-advancer sub-nav-advancer-left" type="button"> <svg class="sub-nav-advancer-icon sub-nav-advancer-icon-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 551 1024"><path d="M445.44 38.183L-2.53 512l447.97 473.817 85.857-81.173-409.6-433.23v81.172l409.6-433.23L445.44 38.18z"></path></svg> </button> <button id="subNavAdvancerRight" class="sub-nav-advancer sub-nav-advancer-right" type="button"> <svg class="sub-nav-advancer-icon sub-nav-advancer-icon-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 551 1024"><path d="M105.56 985.817L553.53 512 105.56 38.183l-85.857 81.173 409.6 433.23v-81.172l-409.6 433.23 85.856 81.174z"></path></svg> </button> </div> </div> <script type="text/javascript"> // Get all links inside of the mega-nav and add onclick listeners var links = document.querySelectorAll(".mega-nav-inner * a"); if (links && links.length > 0) { links.forEach(function (link, index, list) { link.addEventListener("click", () => onMegaNavLinkClick(link)); }); } // Send tag for clicking mega-nav links onMegaNavLinkClick = (link) => { var dataLayer = window.dataLayer || []; const event = "MegaNavLinkClickEvent"; const tag = { event, megaNavLinkName: link.innerText, magaNavLinkUrl: link.href }; console.log(`Sending tag to data layer: ${JSON.stringify(tag)}`); dataLayer.push(tag); } var hoverTimer; var waitTime = 500; // Using timer to weed out momentary/incidental mouse enter events onMegaNavHover = (name) => { hoverTimer = setTimeout(function() { var dataLayer = window.dataLayer || []; const event = "MegaNavHoverEvent"; const tag = { event, megaNavItem: name, }; console.log(`Sending tag to data layer: ${JSON.stringify(tag)}`); dataLayer.push(tag); }, waitTime); } onMegaNavLeave = () => { clearTimeout(hoverTimer); } </script> <div class="page-header-global " data-page-header-global> <div class="page-header-global-body"> <h1 data-testid="welcome-name">Team-Based Care in the Pediatric Office</h1> <div class="breadcrumbs"> <a href="https://www.aap.org/en/">Home</a> <span class="breadcrumbs-divider"> / </span> <a href="https://www.aap.org/en/practice-management/">Practice Management</a> <span class="breadcrumbs-divider"> / </span> <a href="https://www.aap.org/en/practice-management/patient-scheduling-and-office-workflow/">Patient Scheduling and Office Workflow</a> <span class="breadcrumbs-divider"> / </span> <span class="breadcrumb-page-name">Team-Based Care in the Pediatric Office</span> </div> </div> </div> </header> <div class="preload-hide"></div> <div class="container main-body" id="main-body"> <!-- ShareThis BEGIN --> <div class="sharethis-inline-share-buttons share-this"></div> <!-- ShareThis END --> <div class="content-container"> <div class="main-content"> <div><div class="row row0"><div class="block wysiwygblock"> <section class="adage-block wysiwyg "> <div class="adage-block-inner adage-wysiwyg-block"> <p>Team-based care allows physicians to connect with their patients on key clinical issues and provide comprehensive, continuous, coordinated care by involving more of the practice staff in patient care as appropriate to their training and capabilities. Team-based care can also increase a practice's efficiency and productivity. </p> <h3>Why Team-Based Care? </h3> <p><span data-contrast="none">Several changes in the healthcare environment are driving the move toward team-based medical care:</span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Shortages of primary care physicians</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li><span data-contrast="none">Influx of new patients with medical insurance</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="none">Adoption of the medical home</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="none">Emerging payment and care delivery models</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> </ul> <h3>Understanding the Importance of Team-Based Care </h3> <p><span data-contrast="none">Team-based care engages a greater number of staff in patient care and affords physicians, as the leader of a practice team, additional time to listen, think deeply, and develop relationships with patients and their families.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">Team members are aware of the health history, status and unique needs of the patient and family and are assigned different responsibilities, which together are designed to result in continuous, comprehensive, coordinated care during and between visits. As a result, all members of the team feel engaged in their key role of caring for the patient.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong><span data-contrast="none">A successful collaborative team environment includes the following:</span></strong><span data-ccp-props="{"201341983":2,"335559739":150,"335559740":288}"> </span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">A culture of trust</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li><span data-contrast="none">Clearly defined roles and responsibilities</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="none">Strong leadership</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="none">Respectful and empathetic open communication</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="none">Appreciation of diversity</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="none">Equal participation among all team members</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li><span data-contrast="none">Established common goals</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="none">Consensus decision making</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="none">Solution-focused problem solving</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="none">Ongoing evaluation </span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> </ul> <p><strong><span data-contrast="none">For more information:</span></strong><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":288}"> </span></p> <ul> <li><span data-contrast="none"> </span><span data-contrast="none">Training videos and tools on team-based care in the primary care physician's office from the </span><a href="http://www.ahrq.gov/professionals/education/curriculum-tools/teamstepps/primarycare/index.html" target="_blank" rel="noopener"><span data-contrast="none">Agency for Healthcare Research and Quality</span></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="none">National Center for Medical Home Implementation Online Resource Guide: Building Your Medical Home</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span> <ul> <li><a href="https://medicalhomeinfo.aap.org/tools-resources/Pages/How-To-Videos.aspx" target="_blank" rel="noopener"><span data-contrast="none">Team-based care Team Huddle videos</span></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li><a href="https://medicalhomes.aap.org/Pages/form-a-medical-home-improvement-team.aspx" target="_blank" rel="noopener"><span data-contrast="none">Form a Medical Home Improvement Team </span></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> </ul> </li> <li data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none"></span><a href="http://pediatrics.aappublications.org/content/133/2/184" target="_blank" rel="noopener"><span data-contrast="none">Key Elements of Highly Effective Teams</span></a><span data-contrast="none"> </span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><a href="http://www.aappublications.org/content/34/6/24.10" target="_blank" rel="noopener"><span data-contrast="none">AAP Policy: Scope of Practice in Pediatrics</span></a><span data-contrast="none"> </span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> </ul> <p><span data-contrast="none"> </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> </div> </section> </div></div><div class="row row1"><div class="block accordioncontainerblock"> <section class="adage-block adage-accordion-container"> <div class="adage-block-inner adage-accordion "> <h2 class="adage-block-heading adage-accordion-heading">​​​​​​​​Team-Based Care in the Primar​​y Pediatric Practice – Implementation Strategies</h2> <ul class="adage-accordion-inner unlisted" data-accordion-list="88496" aria-label="Accordion Control Group Buttons" > <div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88779" aria-expanded="false" data-epi-property-name="Title"> Determine Team Composition </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88779"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88779" data-epi-property-name="AccordionContent"> <p><span data-contrast="none">Team members provide integrated, comprehensive care for patients and their families in the primary pediatric ambulatory care setting. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">The team should be led by the pediatrician and can include pediatric nurse practitioners, physician assistants, nurses, telephone triage nurses, medical assistants, administrative staff (eg, front office, billing, information technology, scribes), mental health professionals, social workers, dietitian/nutritionists, care coordinators, youth/families and/or others.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">Team composition may vary depending on the needs of the patient population. Children and adolescents with certain acute problems or chronic conditions may require inclusion of pediatric medical and surgical specialists and subspecialists as remote members of the team.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">For instance, medical assistants, schedulers, front office, billing staff and information technology staff may be responsible for referral tracking, fulfilling tasks on the plan of care, appointment recall, and other tasks. Nurses may perform the responsibilities of care coordination such as seeing that medical diagnostic results are received, specialist appointments are kept, and home care is coordinated. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">Every practice is different. What works in one pediatric practice may not work in another. The model of team-based care should be specific to each practice’s patient needs, community resources, and the individuals on the team. The key is to be dynamic, changing, and evolving when new patient needs arise, community resources change, and team composition requires adaptation. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong><span data-contrast="none">Resource</span></strong><span data-contrast="none">: </span><a href="http://www.ahrq.gov/professionals/education/curriculum-tools/teamstepps/primarycare/handouts/pcthinking.html" target="_blank" rel="noopener"><strong><span data-contrast="none">Worksheet</span></strong><span data-contrast="none"></span></a><span data-contrast="none"> on thinking about the practice's team-based care </span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":360}"> </span></p> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88780" aria-expanded="false" data-epi-property-name="Title"> Select a Leader </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88780"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88780" data-epi-property-name="AccordionContent"> <p><span class="TextRun SCXW57047624 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW57047624 BCX0"></span><span class="NormalTextRun SCXW57047624 BCX0">Optimal pediatric health care depends on a team-based approach with supervision by a pediatrician leader, per the</span><span class="NormalTextRun SCXW57047624 BCX0"> </span></span><a class="Hyperlink SCXW57047624 BCX0" href="http://www.aappublications.org/content/34/6/24.10" target="_blank" rel="noreferrer noopener"><span class="TextRun Underlined SCXW57047624 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW57047624 BCX0">AAP policy statement on scope of practice</span></span></a><span class="TextRun SCXW57047624 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW57047624 BCX0">. A pediatrician is uniquely qualified to manage, coordinate, and supervise the entire spectrum of pediatric care, from diagnosis through all stages of treatment, in all ambulatory primary care practice settings. </span></span></p> <p><span class="TextRun SCXW57047624 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW57047624 BCX0">A pediatrician who leads a health care team also </span><span class="NormalTextRun SCXW57047624 BCX0">determines</span><span class="NormalTextRun SCXW57047624 BCX0"> when referral to other physicians is </span><span class="NormalTextRun SCXW57047624 BCX0">warranted</span><span class="NormalTextRun SCXW57047624 BCX0">. Under the pediatrician leader's </span><span class="NormalTextRun SCXW57047624 BCX0">g</span><span class="NormalTextRun SCXW57047624 BCX0">uidance,</span><span class="NormalTextRun SCXW57047624 BCX0"> a full range of health care services may be managed by other team members—all </span><span class="NormalTextRun SCXW57047624 BCX0">facilitating</span><span class="NormalTextRun SCXW57047624 BCX0"> comprehensive, coordinated, patient centered care. </span><span class="NormalTextRun SCXW57047624 BCX0"></span></span><span class="EOP SCXW57047624 BCX0" data-ccp-props="{"134233279":true,"201341983":2,"335559739":360,"335559740":360}"> </span></p> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88781" aria-expanded="false" data-epi-property-name="Title"> Develop Team Mission Statement </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88781"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88781" data-epi-property-name="AccordionContent"> <p><span data-contrast="none">Create a mission statement for the practice that speaks to its aims for team-based care. Characteristics of effective mission statements are as follows: value, inspiration, plausibility and specificity.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Involve</strong><span data-contrast="none"> staff in the development of the mission statement as equal participants on the team. Consider involving youth and families in this process.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Describe</strong><strong> </strong><span data-contrast="none">the value of team-based care in a way that encourages employees as well as the patients/families in the practice, sounds reasonable and plausible, and is specific and relevant. Use concise sentences. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Distribute</strong><strong> </strong><span data-contrast="none">drafts of the mission statement to every employee (and youth/families if applicable), and ask them what, if anything, should be added or changed. Not only will this result in a better, more comprehensive statement, but employees and the patients/families in the practice will be more invested in it because they helped form it. It should be stated clearly so that it is understood by all.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Convey</strong><strong> </strong><span data-contrast="none">the mission statement to others inside and outside the practice. Post it in the office, where practice leaders, employees, patients and their families, and visitors can see it every day. Place it on practice materials, such as patient brochures, employee training manuals, letterhead and the practice website.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">For more information:</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <ul> <li data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><a href="https://downloads.aap.org/AAP/PDF/practicetransformation_guide_team_based_summary_sheet.pdf" target="_blank" rel="noopener"><strong><span data-contrast="none">Practice-friendly curriculum on objectives for team-based care </span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><strong><span data-contrast="none">Handouts, slides, brief videos</span></strong><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span> <ul> <li><a href="https://www.pcmh.ahrq.gov/sites/default/files/attachments/pcpf-module-29-implementing-care-teams.pdf" target="_blank" rel="noopener"><strong><span data-contrast="none">Implementing Care Teams</span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":1440,"335559739":160,"335559740":240}"> </span></li> <li><a href="https://cepc.ucsf.edu/healthy-huddles" target="_blank" rel="noopener"><strong><span data-contrast="none">Healthy Huddles</span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":1440,"335559739":160,"335559740":240}"> </span></li> <li><a href="http://www.ihi.org/resources/Pages/Changes/OptimizetheCareTeam.aspx" target="_blank" rel="noopener"><strong><span data-contrast="none">Optimize the Care Team</span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":1440,"335559739":160,"335559740":240}"> </span></li> </ul> </li> </ul> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88782" aria-expanded="false" data-epi-property-name="Title"> Define Clinician and Non-Clinician Team Members Roles </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88782"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88782" data-epi-property-name="AccordionContent"> <p><strong>Outline all responsibilities and tasks that need to be performed to provide high quality, accessible, family centered, continuous, coordinated and comprehensive care to patients and their families</strong> <br /><span data-contrast="none">Develop a comprehensive list and obtain review from other members of the practice team to determine whether anything is missing.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Determine what tools and resources are needed to carry out each task</strong> <br /><span data-contrast="none">For instance, an office clerk administrative team member may be designated to collect data on a daily or weekly basis, and a practice manager may collate and identify gaps in quality control and assurance. Potential resources might include "protected" time to carry out the expected transformation duties, or templates to automate processes within practice management software and/or electronic health records.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Match team roles to scope of practice, licensure, training and capabilities fostering team care</strong> <br /><span data-contrast="none">List the responsibilities and tasks that need to be performed and which staff should be assigned to each role. Clearly define roles for each staff member based on skills, capabilities, and within scope of practice and licensure established in state laws. (This information can be found within each professions' state licensing authority.) Consideration of staff costs and overhead for a practice is essential in this process. Use this information to craft job descriptions for each team member.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Create training manual with step-by-step guidance on each task</strong> <br /><span data-contrast="none">In addition to the job descriptions for each team member, create a training manual for members of the team. It should include step-by-step procedures for each task required to fulfill the responsibilities as noted by their job description. Once staff roles and responsibilities are defined, review this information with staff to obtain input and to identify specific areas where additional training is needed. Revise job descriptions as needed.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Distribute training manual, including job description roles and responsibilities, among care team members</strong> <br /><span data-contrast="none">Provide staff with their newly defined job roles and responsibilities once they have been documented in the training manual. These are essential elements for the practice's policy and procedural manual and should be used for orientation, training, and team evaluation.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Cross-train care team members</strong> <br /><span data-contrast="none">Train a staff member thoroughly on job duties and responsibilities. Then, when skills and knowledge base are at a satisfactory level, have that staff member mentor another employee in the role.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Evaluate team member performance</strong> <br /><span data-contrast="none">Customize team member performance evaluation tools to include the new responsibilities. Provide fact-based feedback assessing team members' performance compared to job descriptions and tasks. QI reports, patient survey results, team member peer review, team leader evaluations, and self-assessments are documented sources of performance and should be referenced. Provide additional training to address any problem areas. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88783" aria-expanded="false" data-epi-property-name="Title"> Adapt Workspace to Facilitate Team-Based Care </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88783"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88783" data-epi-property-name="AccordionContent"> <p><span data-contrast="none">Care teams can be more successful if their workspace is designed to support direct communication and collaboration and ease a patient's journey through the clinic.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">Workspace design should:</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <ul> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><span data-contrast="none">Promote coordination and communication among team members</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><span data-contrast="none">Be patient-friendly, reduce patient anxiety by being conducive to privacy, comfort and a clear understanding of the care plan</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="3" data-aria-level="2"><span data-contrast="none">Accommodate day-to-day variations and be flexible enough to accommodate new models for primary care delivery</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="4" data-aria-level="2"><span data-contrast="none">Reduce waste and cost</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li><span data-contrast="none">Employ standardization in design and equipment and place needed equipment in exam rooms to promote patient safety and decrease error</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><span data-contrast="none">Integrate necessary technology</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> </ul> <p><span data-contrast="none">Ways that traditional office space does not facilitate team-based care:</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <ul> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="3" data-aria-level="2"><span data-contrast="none">When physicians and staff often work in various parts of a medical office communication can be hindered because they do not have a consistent line of sight to their fellow team members</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="4" data-aria-level="2"><span data-contrast="none">Storing necessary supplies and equipment in special rooms separate from the exam room, requires staff to leave the care area to acquire what they need, which is inefficient</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li><span data-contrast="none">Variation among exam rooms in layout and location of supplies causes wasted time as team members must orient themselves to each room</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><span data-contrast="none">Electronic health records (EHRs), computers, and monitors are set up in exam rooms so that a physician's back is to the patient and family, which hinders communication and make interactions less effective</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="3" data-aria-level="2"><span data-contrast="none">Clinical staff work areas are often not located near exam rooms</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="o" data-font="Courier New" data-listid="7" aria-setsize="-1" data-aria-posinset="4" data-aria-level="2"><span data-contrast="none">Patient flow paths are often illogical and can confuse patients. Patients move through work areas where protected health information is stored and conversations regarding patient care are occurring. A clear space for "check out" at the completion of a visit is often missing, resulting in patients leaving the office without follow-up appointments, referrals and post-visit instructions.</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> </ul> <p><span data-contrast="none">If possible, redesign office space to optimize patient flow and to co-locate team members in work zones for pre- and post-visit work in order to facilitate communication and collaboration. Ideally this space would also be situated so that team members will not be easily observed or overheard by patients and families.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong><span data-contrast="none">For more information</span></strong><span data-contrast="none">: </span><a href="http://www.healthcaredesignmagazine.com/article/research-weighs-effects-healthcare-workspaces-team-based-care" target="_blank" rel="noopener"><strong><span data-contrast="none">Healthcare Design Magazine article on workspace for team-based care</span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":360}"> </span></p> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88784" aria-expanded="false" data-epi-property-name="Title"> Pre-Visit Preparation </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88784"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88784" data-epi-property-name="AccordionContent"> <p><span data-contrast="none">Prepare for upcoming patient visits by reviewing a patient's record (particularly issues occurring since the last visit) and identifying issues that should be addressed either before or during the patient visit. Communication between team members may be electronic messages, e-mails, or notes in a patient record. The following steps are options to help implement communication between team members when preparing for patient visits:</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Create an internal communications team</strong> <br /><span data-contrast="none">Choose a lead clinician, referral-tracking staff member, clinical nurse and scheduler to join as a team to develop a process for internal communication among all team members. The lead clinician may be a physician, mid-level practitioner, nurse, or practice manager. This team will lead the practice in implementing team-based care communications.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Create policies and procedures for internal communication</strong> <br /><span data-contrast="none">Document a policy and procedure for structured preparation of upcoming patient visits. This should include identifying critical patient needs to be addressed either before or during the visit. In the policy, demonstrate how communication occurs regularly by including samples of meeting minutes, agendas, or memos/e-mails to staff. Team meetings should be held weekly (at a minimum), to discuss scheduled patients and identify whether any pre-visit information or resources will be needed to maximize efficiency during the office visit. For example, the team may need to contact a patient, obtain lab reports, review prior records, review screening reports, or obtain and review diagnostic studies.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Team huddles</strong> <br /><span data-contrast="none">Short team meetings or "team huddles" should be conducted once or twice a day; ideally prior to the start of the morning session and afternoon session in the practice. When bringing the team together, select a place that is convenient and suitable for open discussion of patient information. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">The purpose of the team huddle is to review the patient schedule for the next segment of the day and prepare for potential challenges, such as patients with complex health needs who require additional time or staff support. In general, team huddles should be brief (ie, less than 10 minutes in duration), and focused on planning tasks related to the next set of patients. In general, the team should discuss patients with complex conditions, patients who have been recently seen in the Emergency Department or hospitalized, patients who are often late or have high service needs, patients who are missing recommended preventive care services, or patients who will require additional time or attention from staff.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none">The team huddle could also be used to briefly review the previous day, and to discuss hospitalized patients or other patients who require specific follow-up. The team should decide who will provide any necessary follow-up and the timeframe the follow-up should take place. Team huddles should be led and monitored by the lead clinician for frequency and compliance among staff members.</span><span data-contrast="none"> </span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":360}"> </span></p> <p><span data-contrast="none">To ensure successful team meetings and huddles, practices should:</span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":360}"> </span></p> <ol> <li data-leveltext="%1." data-font="Calibri" data-listid="10" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Activate the answering service during team meetings and huddles to assist with calls</span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li><span data-contrast="none">Block off an appropriate amount of time so that patients are not arriving during meetings/huddles if all staff will be involved</span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li><span data-contrast="none">Have an agenda and record minutes or action items</span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> <li data-leveltext="%1." data-font="Calibri" data-listid="10" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="none">Address all staff questions, concerns and suggestions </span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":0,"335559739":160,"335559740":240}"> </span></li> </ol> <p><strong><span data-contrast="none">Types and Frequency</span></strong><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":288}"> </span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="15" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><strong><span data-contrast="none">Daily Team Huddles </span></strong>–<span data-contrast="none"> Team huddles are meetings, typically held at the beginning of each day, that are brief in duration (15-30 minutes in length). Non-clinical and clinical team members come together to discuss the updates and priorities of the day, as well as the day's appointment schedule. During this time, any anticipated patient care needs or care coordination needs are discussed. Attendees required should include but are not limited to: Providers, NPs, RNs, LPNs, MAs, Care Coordinators, and Front Desk staff. </span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":2,"335559739":160,"335559740":360}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="15" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><strong><span data-contrast="none">Clerical Staff Meetings </span></strong>– <span data-contrast="none">It is recommended that clerical staff meet on a bi-weekly basis for at least 30 minutes. This time can be used to discuss schedule template updates, provider updates or vacation schedules, and other issues that need to be brought forward to practice leadership.</span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":2,"335559739":160,"335559740":360}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="15" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><strong><span data-contrast="none">Clinical Staff Meetings </span></strong>– <span data-contrast="none">Clinical staff should meet approximately every three months to review patient protocols and clinical issues. For example, once a month (grand rounds day), a physician could teach other clinical staff about a specific topic (eg new Periodicity Schedule recommendations).</span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":2,"335559739":160,"335559740":360}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="15" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><strong><span data-contrast="none">All-Staff Meetings </span></strong>– <span data-contrast="none">These meetings should be held on a quarterly or bi-annual basis with mandatory attendance. Meetings should cover updates to topics such as new practice policies, regulation changes that impact all staff (eg. HIPAA or OSHA), in-services on quality improvement topics, and preparation for flu shot clinics, back to school, and sports physicals.</span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":2,"335559739":160,"335559740":360}"> </span></li> </ul> <p><strong><span data-contrast="none">Resources:</span></strong><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":288}"> </span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="12" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><a href="https://youtu.be/T6sOvQvsmsk" target="_blank" rel="noopener"><span data-contrast="none">Video: How to Efficiently Create Team Huddles</span></a><span data-contrast="none"> (8:29 minutes) - National Center for Medical Home Implementation (August 2013)</span><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":2,"335559739":160,"335559740":360}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="12" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><a href="https://medicalhomeinfo.aap.org/tools-resources/Pages/How-To-Videos.aspx" target="_blank" rel="noopener"><strong><span data-contrast="none">National Center for Medical Home Online Resource Guide: Building Your Medical Home - Team-based care Team Huddle videos</span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"134233279":true,"201341983":2,"335559739":160,"335559740":360}"> </span></li> </ul> <p><strong>Post-visit communication with patients</strong> <br /><span data-contrast="none">Have systems in place to identify patients telephoning with concerns that problems treated within the past 48 hours have persisted or worsened. Identify return visits and Emergency Department visits for the recently treated problem. Establish policies to verify that this information is shared with clinicians and addressed rapidly.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88785" aria-expanded="false" data-epi-property-name="Title"> Collaborate with the Patient and Family </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88785"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88785" data-epi-property-name="AccordionContent"> <p><span data-contrast="none">Post-visit medical summaries are developed together by the practice's care team and the patient and/or family to address the patient's health needs and goals. Once goals have been established, they should be reviewed and modified, as necessary, at each relevant visit.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Provide each patient with a post-visit medical summary during the relevant visit</strong> <br /><span data-contrast="none">The practice will provide a written or electronic summary developed in partnership with the patient and family. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Assess and address barriers when the patient does not meet goals</strong> <br /><span data-contrast="none">A physician or care team assesses or talks with the patient or family to determine reasons for limited progress towards goals, and to help the patient and their family address barriers. Some examples of barriers may include patient's lack for understanding, insurance or monetary issues, or medication side effects. Based on these conversations, the physician or care team may need to discuss modification of goals with the patient and/or family and come to a mutually agreeable plan that patients and families believe they can follow.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Identify patients and families who might benefit from additional care management support</strong> <br /><span data-contrast="none">Assess, and when appropriate, refer patients to clinical specialists or community resources for additional care management support, such as disease management or case management programs.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88786" aria-expanded="false" data-epi-property-name="Title"> Establish a Clear, Realistic and Specific Follow-up Process for Patients </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88786"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88786" data-epi-property-name="AccordionContent"> <p><span class="TextRun SCXW20412700 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW20412700 BCX0"></span><span class="NormalTextRun SCXW20412700 BCX0">Establish and implement a policy and procedure to follow up and recall patients who have not kept appointments for preventive care, chronic disease management, re-evaluations for acute illness, and post-hospital admission/discharge follow-</span><span class="NormalTextRun SCXW20412700 BCX0">up.</span><span class="NormalTextRun SCXW20412700 BCX0"></span></span><span class="EOP SCXW20412700 BCX0" data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div><div class="block accordionitemblock"> <li class="adage-accordion-item"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-88787" aria-expanded="false" data-epi-property-name="Title"> Assess and Evaluate the Care Team for Opportunities to Improve Care Team Processes </button> <div class="adage-accordion-panel" aria-hidden="true" id="accordion-panel-88787"> <div class="adage-accordion-panel-content" data-accordion-content-id="accordion-panel-88787" data-epi-property-name="AccordionContent"> <p><strong>Measure and evaluate the quality of the practice's medical records against the practice's medical record review sheet</strong> <br /><span data-contrast="none">Monitor communication among team members as documented in the medical record. Evaluate random samples of patient charts over a one-month period to verify that documentation of communication in the medical record is accurate, complete, clear, and concise. This may be done by comparing individual medical records against a medical record review sheet, which identifies important elements to be documented in pediatric medical records. Review and assess the effectiveness of communication within the care team and with outside providers.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><span data-contrast="none"></span><strong><span data-contrast="none">Resource</span></strong><span data-contrast="none">:</span><a href="https://downloads.aap.org/AAP/PDF/practicetransformation_guide_team_based_summary_sheet.pdf" target="_blank" rel="noopener"><strong><span data-contrast="none">Sample Medical Record Review Sheet</span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":2,"335559739":160,"335559740":360}"> </span></p> <p><strong>Measure and evaluate the practice's team-based care.</strong> <br /><span data-contrast="none">Tools exist to measure whether a practice is working together as a high-functioning team to deliver team-based care. These tools include specific measures to understand specific areas where improvement is needed.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong></strong><strong>Use the Model for Improvement tools to create action plans for the areas in which improvement needs to take place as identified by a record review</strong> <br /><span data-contrast="none">Based on the evaluation of communication between staff, develop a quality improvement process to address identified gaps and flaws in how communication is exchanged. Allow staff to work as a group to help develop action plans that will be implemented to improve communication processes in the practice. Having the entire care team involved will also help create a practice culture that values continual quality improvement. See the Quality Improvement module for additional information. </span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong></strong><strong>Share results and discuss (and document) action plans</strong> <br /><span data-contrast="none">Once data are analyzed and team members have created action plans, hold a care team meeting to share results. The practice will want to develop minutes from these quality improvement and staff meetings to document discussions and action items. At the start of each meeting, review the minutes of the prior meeting. This allows staff to be updated, recognize prior efforts, and establish a starting point for the meeting's discussion.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong>Update communication policies and procedures to address identified quality improvement actions. Provide additional staff training on changes in policies and procedures resulting from QI</strong> <br /><span data-contrast="none">Team meetings should include suggestions for change or improvements in communication process. Implement the action plans that have been created to improve patient care coordination, provide tailored services to practice-specific population, and improve patient satisfaction.</span><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <p><strong><span data-contrast="none">Resources:</span></strong><span data-ccp-props="{"201341983":2,"335559739":360,"335559740":360}"> </span></p> <ul> <li data-leveltext="o" data-font="Courier New" data-listid="9" aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><a href="https://medicalhomes.aap.org/Pages/default.aspx" target="_blank" rel="noopener"><strong><span data-contrast="none">National Center for Medical Home Implementation Online Resource Guide: Building Your Medical Home</span></strong></a><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="o" data-font="Courier New" data-listid="9" aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><a href="http://pediatrics.aappublications.org/content/131/6/1211" target="_blank" rel="noopener"><strong><span data-contrast="none">AAP Scope of Practice Issues in the Delivery of Pediatric Health Care - Policy Statement</span></strong></a><strong><span data-contrast="none"> </span></strong><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559685":720,"335559739":160,"335559740":240}"> </span></li> </ul> <div class="adage-accordion-panel-content-additional"> </div> </div> </div> </li></div></div> </ul> </div> </section></div></div><div class="row row2"><div class="block sourcelastupdatedblock"> <div class="last-updated-block-container"> <h5 class="last-updated-block-label">Last Updated</h5> <p class="last-updated-text">07/30/2021</p> </div> <div class="source-block-container"> <h5 class="source-block-label">Source</h5> <div class="source-text"> <p>American Academy of Pediatrics</p></div> </div> </div></div></div> </div> </div> <div class="back-to-top" tabindex="0" id="backToTop"> <svg class="back-to-top-arrow"> <use xlink:href="#back-to-top-arrow"></use> </svg> </div> </div> <script type="text/javascript"> window.searchBox = { searchBoxText: 'Search All AAP', searchButtonText: 'Search', findIndexUrl: 'https://es-us-api01.episerver.com/3fu1nB75NF5xwBMuzJdHOF0KFePbaflM/aaop_index00214/', searchPageUrl: '/en/search/', shopSearchBoxText: 'Search shopAAP' }; </script> <script type="text/javascript"> window.GoogleAnalyticsBootstrap = { sendUserInformationtoGA: 'False', lockedContentUniqueUserId: '', userVisitorGroupName: '', } </script> <script> window.errorText = { dismissButtonText: 'Dismiss', requiredErrorText: 'This is a required field', invalidErrorText: 'This field is invalid', invalidPasswordText: 'Password must be at least 10 characters long', passwordMatchErrorText: 'Passwords must match', } window.passwordValidation = { passwordRequiredLength: 10, passwordRequireNonLetterOrDigit: false, passwordRequireDigit: false, passwordRequireUpperCase: false, passwordRequireLowerCase: false, } </script> <script> window.loginInfo = { loginUrl: '/en/my-account/login/' } </script> <footer class="footer" id="footer"> <div class="footer-top"> <div class="footer-top-wrapper"> <div class="footer-aap-logo"> <svg> <use xlink:href="#Seal_Pos"></use> </svg> </div> <div class="row"> <div class="col-xxl-6 col-sm-12"> <div class="footer-top-about"> We're 67​,000 pediatricians committed to the optimal physical, mental, and social health and well-being for all infants, children, adolescents, and young adults. </div> </div> <div class="col-xxl-6 col-sm-12"> <div class="footer-top-nav"> <div class="row"> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> </div> </div> <div class="footer-top-mobile-nav"> <div class="row"> <ul class="col-sm-6 unlisted"> </ul> <ul class="col-sm-6 unlisted"> </ul> </div> </div> </div> </div> </div> </div> <div class="footer-links-wrapper"> <div class="footer-links" id="footer-links"> <div class="footer-links-main"> <ul class="unlisted col-sm-6"> <li class="main-nav-menu-item privacystatement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/privacy-statement/" target="" data-testid="link-privacystatement"> Privacy Statement </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item termsofuse "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/terms-of-use/" target="" data-testid="link-termsofuse"> Terms of Use </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item auto-renewterms "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/terms-of-use/membership-and-subscription-auto-renew-terms-and-conditions/" target="" data-testid="link-auto-renewterms"> Auto-Renew Terms </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item supportcenter "> <div class="main-nav-menu-item-top"> <a class="" href="/en/support-center/" target="" data-testid="link-supportcenter"> Support Center </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item contactus "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/contact-us/" target="" data-testid="link-contactus"> Contact Us </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item codeofconduct "> <div class="main-nav-menu-item-top"> <a class="" href="/en/about-the-aap/american-academy-of-pediatrics-equity-and-inclusion-efforts/code-of-conduct/" target="" data-testid="link-codeofconduct"> Code of Conduct </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="unlisted col-sm-6"> </ul> </div> <ul class="footer-links-social unlisted"> <li class="main-nav-menu-item"> <a href="https://www.linkedin.com/company/american-academy-of-pediatrics" target="_blank"> <svg> <use xlink:href="#linkedin-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.instagram.com/ameracadpeds/" target="_blank"> <svg> <use xlink:href="#instagram-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.facebook.com/AmerAcadPeds" target="_blank"> <svg> <use xlink:href="#facebook-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.youtube.com/channel/UClR8YIQX5Fb8J2wmsUKLhvQ" target="_blank"> <svg> <use xlink:href="#youtube-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.threads.net/@ameracadpeds" target="_blank"> <svg> <use xlink:href="#threads-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://twitter.com/AmerAcadPeds" target="_blank"> <svg> <use xlink:href="#x-icon"></use> </svg> </a> </li> </ul> </div> </div> <div class="footer-copyright-wrapper"> <div class="footer-copyright"> <p class="paragraph-caption">© Copyright 2025 American Academy of Pediatrics. All rights reserved.</p> </div> </div> </footer> <a class="feedback-form-link" target="_blank" href="/en/forms/feedback-form/"> Feedback Form </a> <!-- CookiePro Cookies Consent Notice start for www.aap.org --> <script src="https://cookie-cdn.cookiepro.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="3e68ef05-4f6d-4004-898a-78b94ce0823e" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- CookiePro Cookies Consent Notice end for www.aap.org --> <!-- Google Tag Manager --> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window, document, 'script', 'dataLayer', 'GTM-N2RV28J'); </script> <!-- End Google Tag Manager --> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script type='text/javascript'> googletag.cmd.push(function() { var AAPorg = googletag.sizeMapping(). addSize([730, 0], [728, 90]) //desktop .build(); var gptAdSlots = []; gptAdSlots[0] =googletag.defineSlot('/22410314033/aap_leadert', [728, 90], 'div-gpt-ad-1633540336787-0').defineSizeMapping(AAPorg).addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); </script> <!-- Donate Widget Script --> <script>(function(w,d,s,n,a){if(!w[n]){var l='call,catch,on,once,set,then,track'.split(','),i,o=function(n){return'function'==typeof n?o.l.push([arguments])&&o:function(){return o.l.push([n,arguments])&&o}},t=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=!0;j.src='https://cdn.fundraiseup.com/widget/'+a; t.parentNode.insertBefore(j,t);o.s=Date.now();o.v=4;o.h=w.location.href;o.l=[];for(i=0;i<7;i++)o[l[i]]=o(l[i]);w[n]=o}})(window,document,'script','FundraiseUp','ADAHKUXY');</script> <!-- End Donate Widget Script --> <!-- Magnet Mail --> <script type="text/javascript" src="https://tracking.magnetmail.net/MagnetLeads.js"> </script> <script type="text/javascript"> com.realmagnet.MagnetLeads.init('hXdIOUQOZEy77inoSnCQWg'); com.realmagnet.MagnetLeads.visitPage(); </script> <!-- share this script --> <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=6480b01ae58f550012ea9faa&product=sop' async='async'></script> <!--New Relic --> <script type = "text/javascript" > ; window.NREUM || (NREUM = {}); NREUM.init = { distributed_tracing: { enabled: true }, privacy: { cookies_enabled: true } }; ; NREUM.loader_config = { accountID: "1613493", trustKey: "1613493", agentID: "342119000", licenseKey: "0c3b4b61ad", applicationID: "342118967" };; NREUM.info = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net", licenseKey: "0c3b4b61ad", applicationID: "342118967", sa: 1 };; /*! For license information please see nr-loader-spa-1.246.0.min.js.LICENSE.txt */ (() => { "use strict"; var e, t, r = { 234: (e, t, r) => { r.d(t, { P_: () => g, Mt: () => v, C5: () => s, DL: () => A, OP: () => D, lF: () => N, Yu: () => x, Dg: () => m, CX: () => c, GE: () => w, sU: () => j }); var n = r(8632), i = r(9567); const o = { beacon: n.ce.beacon, errorBeacon: n.ce.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) { 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 c(e, t) { if (!e) throw new Error("All info objects require an agent identifier!"); a[e] = (0, i.D)(t, o), (0, n.Qy)(e, a[e], "info") } const u = e => { if (!e || "string" != typeof e) return !1; try { document.createDocumentFragment().querySelector(e) } catch { return !1 } return !0 }; var d = r(7056), l = r(50); const f = () => { const e = { 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 { feature_flags: [], proxy: { assets: void 0, beacon: void 0 }, privacy: { cookies_enabled: !0 }, ajax: { deny_list: void 0, block_internal: !0, enabled: !0, harvestTimeSeconds: 10, 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 }, session: { domain: void 0, expiresMs: d.oD, inactiveMs: d.Hb }, ssl: void 0, obfuscate: void 0, jserrors: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, metrics: { enabled: !0, autoStart: !0 }, page_action: { enabled: !0, harvestTimeSeconds: 30, autoStart: !0 }, page_view_event: { enabled: !0, autoStart: !0 }, page_view_timing: { enabled: !0, harvestTimeSeconds: 30, long_task: !1, autoStart: !0 }, session_trace: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, harvest: { tooManyRequestsDelay: 60 }, session_replay: { autoStart: !0, enabled: !1, harvestTimeSeconds: 60, sampling_rate: 50, error_sampling_rate: 50, collect_fonts: !1, inline_images: !1, inline_stylesheet: !0, mask_all_inputs: !0, get mask_text_selector() { return e.mask_selector }, set mask_text_selector(t) { u(t) ? e.mask_selector = t + ",[data-nr-mask]" : null === t ? e.mask_selector = t : (0, l.Z)("An invalid session_replay.mask_selector was provided and will not be used", 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) { u(t) ? e.block_selector += ",".concat(t) : "" !== t && (0, l.Z)("An invalid session_replay.block_selector was provided and will not be used", 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, l.Z)("An invalid session_replay.mask_input_option was provided and will not be used", t) } }, spa: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 } } }, h = {}, p = "All configuration objects require an agent identifier!"; function g(e) { if (!e) throw new Error(p); if (!h[e]) throw new Error("Configuration for ".concat(e, " was never set")); return h[e] } function m(e, t) { if (!e) throw new Error(p); h[e] = (0, i.D)(t, f()), (0, n.Qy)(e, h[e], "config") } function v(e, t) { if (!e) throw new Error(p); var r = g(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 } const b = { accountID: void 0, trustKey: void 0, agentID: void 0, licenseKey: void 0, applicationID: void 0, xpid: void 0 }, y = {}; function A(e) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); if (!y[e]) throw new Error("LoaderConfig for ".concat(e, " was never set")); return y[e] } function w(e, t) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); y[e] = (0, i.D)(t, b), (0, n.Qy)(e, y[e], "loader_config") } const x = (0, n.mF)().o; var E = r(385), _ = r(6818); const T = { buildEnv: _.Re, customTransaction: void 0, disabled: !1, distMethod: _.gF, isolatedBacklog: !1, loaderType: void 0, maxBytes: 3e4, offset: Math.floor(E._A?.performance?.timeOrigin || E._A?.performance?.timing?.navigationStart || Date.now()), onerror: void 0, origin: "" + E._A.location, ptid: void 0, releaseIds: {}, session: void 0, xhrWrappable: "function" == typeof E._A.XMLHttpRequest?.prototype?.addEventListener, version: _.q4, denyList: void 0 }, S = {}; function D(e) { if (!e) throw new Error("All runtime objects require an agent identifier!"); if (!S[e]) throw new Error("Runtime for ".concat(e, " was never set")); return S[e] } function j(e, t) { if (!e) throw new Error("All runtime objects require an agent identifier!"); S[e] = (0, i.D)(t, T), (0, n.Qy)(e, S[e], "runtime") } function N(e) { return function (e) { try { const t = s(e); return !!t.licenseKey && !!t.errorBeacon && !!t.applicationID } catch (e) { return !1 } }(e) } }, 9567: (e, t, r) => { r.d(t, { D: () => i }); var n = r(50); function i(e, t) { try { if (!e || "object" != typeof e) return (0, n.Z)("Setting a Configurable requires an object as input"); if (!t || "object" != typeof t) return (0, n.Z)("Setting a Configurable requires a model to set its initial properties"); 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 { 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.Z)("An error occurred while setting a property of a Configurable", e) } return r } catch (e) { (0, n.Z)("An error occured while setting a Configurable", e) } } }, 6818: (e, t, r) => { r.d(t, { Re: () => i, gF: () => o, lF: () => a, q4: () => n }); const n = "1.246.0", i = "PROD", o = "CDN", a = "2.0.0-alpha.11" }, 385: (e, t, r) => { r.d(t, { FN: () => s, IF: () => d, Nk: () => f, Tt: () => c, _A: () => o, cv: () => h, iS: () => a, il: () => n, ux: () => u, v6: () => i, w1: () => l }); const n = "undefined" != typeof window && !!window.document, i = "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self.navigator instanceof WorkerNavigator || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis.navigator instanceof WorkerNavigator), o = n ? window : "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis), a = Boolean("hidden" === o?.document?.visibilityState), s = "" + o?.location, c = /iPad|iPhone|iPod/.test(o.navigator?.userAgent), u = c && "undefined" == typeof SharedWorker, d = (() => { const e = o.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/); return Array.isArray(e) && e.length >= 2 ? +e[1] : 0 })(), l = Boolean(n && window.document.documentMode), f = !!o.navigator?.sendBeacon, h = Math.floor(o?.performance?.timeOrigin || o?.performance?.timing?.navigationStart || Date.now()) }, 1117: (e, t, r) => { r.d(t, { w: () => o }); var n = r(50); const i = { agentIdentifier: "", ee: void 0 }; class o { constructor(e) { try { if ("object" != typeof e) return (0, n.Z)("shared context requires an object as input"); this.sharedContext = {}, Object.assign(this.sharedContext, i), Object.entries(e).forEach((e => { let [t, r] = e; Object.keys(i).includes(t) && (this.sharedContext[t] = r) })) } catch (e) { (0, n.Z)("An error occured while setting SharedContext", e) } } } }, 8e3: (e, t, r) => { r.d(t, { L: () => d, R: () => c }); var n = r(8325), i = r(1284), o = r(4322), a = r(3325); const s = {}; function c(e, t) { const r = { staged: !1, priority: a.p[t] || 0 }; u(e), s[e].get(t) || s[e].set(t, r) } function u(e) { e && (s[e] || (s[e] = new Map)) } function d() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "feature"; if (u(e), !e || !s[e].get(t)) return a(t); s[e].get(t).staged = !0; const r = [...s[e]]; function a(t) { const r = e ? n.ee.get(e) : n.ee, a = o.X.handlers; if (r.backlog && a) { var s = r.backlog[t], c = a[t]; if (c) { for (var u = 0; s && u < s.length; ++u) l(s[u], c); (0, i.D)(c, (function (e, t) { (0, i.D)(t, (function (t, r) { r[0].on(e, r[1]) })) })) } delete a[t], r.backlog[t] = null, r.emit("drain-" + t, []) } } r.every((e => { let [t, r] = e; return r.staged })) && (r.sort(((e, t) => e[1].priority - t[1].priority)), r.forEach((t => { let [r] = t; s[e].delete(r), a(r) }))) } function l(e, t) { var r = e[1]; (0, i.D)(t[r], (function (t, r) { var n = e[0]; if (r[0] === n) { var i = r[1], o = e[3], a = e[2]; i.apply(o, a) } })) } }, 8325: (e, t, r) => { r.d(t, { A: () => c, ee: () => u }); var n = r(8632), i = r(2210), o = r(234); class a { constructor(e) { this.contextId = e } } var s = r(3117); const c = "nr@context:".concat(s.a), u = function e(t, r) { var n = {}, s = {}, d = {}, f = !1; try { f = 16 === r.length && (0, o.OP)(r).isolatedBacklog } catch (e) {} var h = { on: g, addEventListener: g, 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 = p(n), c = m(e), d = c.length, l = 0; l < d; l++) c[l].apply(a, r); var f = b()[s[e]]; f && f.push([h, e, r, a]); return a }, get: v, listeners: m, context: p, buffer: function (e, t) { const r = b(); if (t = t || "feature", h.aborted) return; Object.entries(e || {}).forEach((e => { let [n, i] = e; s[i] = t, t in r || (r[t] = []) })) }, abort: l, aborted: !1, isBuffering: function (e) { return !!b()[s[e]] }, debugId: r, backlog: f ? {} : t && "object" == typeof t.backlog ? t.backlog : {} }; return h; function p(e) { return e && e instanceof a ? e : e ? (0, i.X)(e, c, (() => new a(c))) : new a(c) } function g(e, t) { n[e] = m(e).concat(t) } function m(e) { return n[e] || [] } function v(t) { return d[t] = d[t] || e(h, t) } function b() { return h.backlog } }(void 0, "globalEE"), d = (0, n.fP)(); function l() { u.aborted = !0, u.backlog = {} } d.ee || (d.ee = u) }, 5546: (e, t, r) => { r.d(t, { E: () => n, p: () => i }); var n = r(8325).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)) } }, 4322: (e, t, r) => { r.d(t, { X: () => o }); var n = r(5546); o.on = a; var i = o.handlers = {}; function o(e, t, r, o) { a(o || n.E, i, e, t, r) } function a(e, t, r, i, o) { o || (o = "feature"), e || (e = n.E); var a = t[o] = t[o] || {}; (a[r] = a[r] || []).push([e, i]) } }, 3239: (e, t, r) => { r.d(t, { bP: () => s, iz: () => c, m$: () => a }); var n = r(385); let i = !1, o = !1; try { const e = { get passive() { return i = !0, !1 }, get signal() { return o = !0, !1 } }; n._A.addEventListener("test", null, e), n._A.removeEventListener("test", null, e) } catch (e) {} function a(e, t) { return i || o ? { capture: !!e, passive: i, signal: t } : !!e } function s(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; window.addEventListener(e, t, a(r, n)) } function c(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; document.addEventListener(e, t, a(r, n)) } }, 3117: (e, t, r) => { r.d(t, { a: () => n }); const n = (0, r(4402).Rl)() }, 4402: (e, t, r) => { r.d(t, { Ht: () => u, M: () => c, Rl: () => a, ky: () => s }); var n = r(385); 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._A?.crypto || n._A?.msCrypto; let t, r = 0; return e && e.getRandomValues && (t = e.getRandomValues(new Uint8Array(31))), 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._A?.crypto || n._A?.msCrypto; let r, i = 0; t && t.getRandomValues && (r = t.getRandomValues(new Uint8Array(31))); 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) } }, 7056: (e, t, r) => { r.d(t, { Bq: () => n, Hb: () => o, oD: () => i }); const n = "NRBA", i = 144e5, o = 18e5 }, 7894: (e, t, r) => { function n() { return Math.round(performance.now()) } r.d(t, { z: () => n }) }, 7243: (e, t, r) => { r.d(t, { e: () => i }); var n = r(385); 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._A?.location?.protocol && t.host === n._A?.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 {} } } }, 50: (e, t, r) => { function n(e, t) { "function" == typeof console.warn && (console.warn("New Relic: ".concat(e)), t && console.warn(t)) } r.d(t, { Z: () => n }) }, 2587: (e, t, r) => { r.d(t, { N: () => c, T: () => u }); var n = r(8325), i = r(5546), o = r(3325); const a = { stn: [o.D.sessionTrace], err: [o.D.jserrors, o.D.metrics], ins: [o.D.pageAction], spa: [o.D.spa], sr: [o.D.sessionReplay, o.D.sessionTrace] }, s = new Set; function c(e, t) { const r = n.ee.get(t); e && "object" == typeof e && (s.has(t) || Object.entries(e).forEach((e => { let [t, n] = e; a[t] ? a[t].forEach((e => { n ? (0, i.p)("feat-" + t, [], void 0, e, r) : (0, i.p)("block-" + t, [], void 0, e, r), (0, i.p)("rumresp-" + t, [Boolean(n)], void 0, e, r) })) : n && (0, i.p)("feat-" + t, [], void 0, void 0, r), u[t] = Boolean(n) })), Object.keys(a).forEach((e => { void 0 === u[e] && (a[e]?.forEach((t => (0, i.p)("rumresp-" + e, [!1], void 0, t, r))), u[e] = !1) })), s.add(t)) } const u = {} }, 2210: (e, t, r) => { r.d(t, { X: () => 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 } }, 1284: (e, t, r) => { r.d(t, { D: () => n }); const n = (e, t) => Object.entries(e || {}).map((e => { let [r, n] = e; return t(r, n) })) }, 4351: (e, t, r) => { r.d(t, { P: () => o }); var n = r(8325); 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) {} } } }, 3960: (e, t, r) => { r.d(t, { K: () => a, b: () => o }); var n = r(3239); function i() { return "undefined" == typeof document || "complete" === document.readyState } function o(e, t) { if (i()) return e(); (0, n.bP)("load", e, t) } function a(e) { if (i()) return e(); (0, n.iz)("DOMContentLoaded", e) } }, 8632: (e, t, r) => { r.d(t, { EZ: () => u, Qy: () => c, ce: () => o, fP: () => a, gG: () => d, mF: () => s }); var n = r(7894), i = r(385); const o = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net" }; function a() { return i._A.NREUM || (i._A.NREUM = {}), void 0 === i._A.newrelic && (i._A.newrelic = i._A.NREUM), i._A.NREUM } function s() { let e = a(); return e.o || (e.o = { ST: i._A.setTimeout, SI: i._A.setImmediate, CT: i._A.clearTimeout, XHR: i._A.XMLHttpRequest, REQ: i._A.Request, EV: i._A.Event, PR: i._A.Promise, MO: i._A.MutationObserver, FETCH: i._A.fetch }), e } function c(e, t, r) { let i = a(); const o = i.initializedAgents || {}, s = o[e] || {}; return Object.keys(s).length || (s.initializedAt = { ms: (0, n.z)(), date: new Date }), i.initializedAgents = { ...o, [e]: { ...s, [r]: t } }, i } function u(e, t) { a()[e] = t } function d() { 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() } }, 7956: (e, t, r) => { r.d(t, { N: () => i }); var n = r(3239); function i(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], r = arguments.length > 2 ? arguments[2] : void 0, i = arguments.length > 3 ? arguments[3] : void 0; (0, n.iz)("visibilitychange", (function () { if (t) return void("hidden" === document.visibilityState && e()); e(document.visibilityState) }), r, i) } }, 1214: (e, t, r) => { r.d(t, { em: () => b, u5: () => D, QU: () => C, _L: () => I, Gm: () => H, Lg: () => L, BV: () => G, Kf: () => K }); var n = r(8325), i = r(3117); const o = "nr@original:".concat(i.a); 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]) } var l = r(2210), f = r(385); const h = {}, p = f._A.XMLHttpRequest, g = "addEventListener", m = "removeEventListener", v = "nr@wrapped:".concat(n.A); function b(e) { var t = function (e) { return (e || n.ee).get("events") }(e); if (h[t.debugId]++) return t; h[t.debugId] = 1; var r = c(t, !0); function i(e) { r.inPlace(e, [g, m], "-", o) } function o(e, t) { return e[1] } return "getPrototypeOf" in Object && (f.il && y(document, i), y(f._A, i), y(p.prototype, i)), t.on(g + "-start", (function (e, t) { var n = e[1]; if (null !== n && ("function" == typeof n || "object" == typeof n)) { var i = (0, l.X)(n, v, (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(m + "-start", (function (e) { e[1] = this.wrapped || e[1] })), t } function y(e, t) { let r = e; for (; "object" == typeof r && !Object.prototype.hasOwnProperty.call(r, g);) r = Object.getPrototypeOf(r); for (var n = arguments.length, i = new Array(n > 2 ? n - 2 : 0), o = 2; o < n; o++) i[o - 2] = arguments[o]; r && t(r, ...i) } var A = "fetch-", w = A + "body-", x = ["arrayBuffer", "blob", "json", "text", "formData"], E = f._A.Request, _ = f._A.Response, T = "prototype"; const S = {}; function D(e) { const t = function (e) { return (e || n.ee).get("fetch") }(e); if (!(E && _ && f._A.fetch)) return t; if (S[t.debugId]++) return t; function r(e, r, i) { var o = e[r]; "function" == typeof o && (e[r] = function () { var e, r = [...arguments], a = {}; t.emit(i + "before-start", [r], a), a[n.A] && a[n.A].dt && (e = a[n.A].dt); var s = o.apply(this, r); return t.emit(i + "start", [r, e], s), s.then((function (e) { return t.emit(i + "end", [null, e], s), e }), (function (e) { throw t.emit(i + "end", [e], s), e })) }) } return S[t.debugId] = 1, x.forEach((e => { r(E[T], e, w), r(_[T], e, w) })), r(f._A, "fetch", A), t.on(A + "end", (function (e, r) { var n = this; if (r) { var i = r.headers.get("content-length"); null !== i && (n.rxSize = i), t.emit(A + "done", [null, r], n) } else t.emit(A + "done", [e], n) })), t } const j = {}, N = ["pushState", "replaceState"]; function C(e) { const t = function (e) { return (e || n.ee).get("history") }(e); return !f.il || j[t.debugId]++ || (j[t.debugId] = 1, c(t).inPlace(window.history, N, "-")), t } var O = r(3239); const P = {}, R = ["appendChild", "insertBefore", "replaceChild"]; function I(e) { const t = function (e) { return (e || n.ee).get("jsonp") }(e); if (!f.il || P[t.debugId]) return t; P[t.debugId] = !0; var r = c(t), i = /[?&](?:callback|cb)=([^&#]+)/, o = /(.*)\.([^.]+)/, a = /^(\w+)(\.|$)(.*)$/; function s(e, t) { if (!e) return t; const r = e.match(a), n = r[1]; return s(r[3], t[n]) } return r.inPlace(Node.prototype, R, "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 n = (a = e.src, c = a.match(i), c ? c[1] : null); var a, c; if (!n) return; var u = function (e) { var t = e.match(o); if (t && t.length >= 3) return { key: t[2], parent: s(t[1], window) }; return { key: e, parent: window } }(n); if ("function" != typeof u.parent[u.key]) return; var d = {}; function l() { t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, O.m$)(!1)), e.removeEventListener("error", f, (0, O.m$)(!1)) } function f() { t.emit("jsonp-error", [], d), t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, O.m$)(!1)), e.removeEventListener("error", f, (0, O.m$)(!1)) } r.inPlace(u.parent, [u.key], "cb-", d), e.addEventListener("load", l, (0, O.m$)(!1)), e.addEventListener("error", f, (0, O.m$)(!1)), t.emit("new-jsonp", [e.src], d) }(e[0]) })), t } const k = {}; function H(e) { const t = function (e) { return (e || n.ee).get("mutation") }(e); if (!f.il || k[t.debugId]) return t; k[t.debugId] = !0; var r = c(t), i = f._A.MutationObserver; return i && (window.MutationObserver = function (e) { return this instanceof i ? new i(r(e, "fn-")) : i.apply(this, arguments) }, MutationObserver.prototype = i.prototype), t } const z = {}; function L(e) { const t = function (e) { return (e || n.ee).get("promise") }(e); if (z[t.debugId]) return t; z[t.debugId] = !0; var r = t.context, i = c(t), a = f._A.Promise; return a && function () { function e(r) { var n = t.context(), o = i(r, "executor-", n, null, !1); const s = Reflect.construct(a, [o], e); return t.context(s).getCtx = function () { return n }, s } f._A.Promise = e, Object.defineProperty(e, "name", { value: "Promise" }), e.toString = function () { return a.toString() }, Object.setPrototypeOf(e, a), ["all", "race"].forEach((function (r) { const n = a[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 = a[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 = a.prototype; const n = a.prototype.then; a.prototype.then = function () { var e = this, o = r(e); o.promise = e; for (var a = arguments.length, s = new Array(a), c = 0; c < a; c++) s[c] = arguments[c]; s[0] = i(s[0], "cb-", o, null, !1), s[1] = i(s[1], "cb-", o, null, !1); const u = n.apply(this, s); return o.nextPromise = u, t.emit("propagate", [e, !0], u, !1, !1), u }, a.prototype.then[o] = n, t.on("executor-start", (function (e) { e[0] = i(e[0], "resolve-", this, null, !1), e[1] = i(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 M = {}, F = "setTimeout", B = "setInterval", U = "clearTimeout", Z = "-start", V = "-", q = [F, "setImmediate", B, U, "clearImmediate"]; function G(e) { const t = function (e) { return (e || n.ee).get("timer") }(e); if (M[t.debugId]++) return t; M[t.debugId] = 1; var r = c(t); return r.inPlace(f._A, q.slice(0, 2), F + V), r.inPlace(f._A, q.slice(2, 3), B + V), r.inPlace(f._A, q.slice(3), U + V), t.on(B + Z, (function (e, t, n) { e[0] = r(e[0], "fn-", null, n) })), t.on(F + Z, (function (e, t, n) { this.method = n, this.timerDuration = isNaN(e[1]) ? 0 : +e[1], e[0] = r(e[0], "fn-", this, n) })), t } var W = r(50); const X = {}, Q = ["open", "send"]; function K(e) { var t = e || n.ee; const r = function (e) { return (e || n.ee).get("xhr") }(t); if (X[r.debugId]++) return r; X[r.debugId] = 1, b(t); var i = c(r), o = f._A.XMLHttpRequest, a = f._A.MutationObserver, s = f._A.Promise, u = f._A.setInterval, d = "readystatechange", l = ["onload", "onerror", "onabort", "onloadstart", "onloadend", "onprogress", "ontimeout"], h = [], p = f._A.XMLHttpRequest = function (e) { const t = new o(e), n = r.context(t); try { r.emit("new-xhr", [t], n), t.addEventListener(d, (a = n, function () { var e = this; e.readyState > 3 && !a.resolved && (a.resolved = !0, r.emit("xhr-resolved", [], e)), i.inPlace(e, l, "fn-", w) }), (0, O.m$)(!1)) } catch (e) { (0, W.Z)("An error occurred while intercepting XHR", e); try { r.emit("internal-error", [e]) } catch (e) {} } var a; return t }; function g(e, t) { i.inPlace(t, ["onreadystatechange"], "fn-", w) } if (function (e, t) { for (var r in e) t[r] = e[r] }(o, p), p.prototype = o.prototype, i.inPlace(p.prototype, Q, "-xhr-", w), r.on("send-xhr-start", (function (e, t) { g(e, t), function (e) { h.push(e), a && (m ? m.then(A) : u ? u(A) : (v = -v, y.data = v)) }(t) })), r.on("open-xhr-start", g), a) { var m = s && s.resolve(); if (!u && !s) { var v = 1, y = document.createTextNode(v); new a(A).observe(y, { characterData: !0 }) } } else t.on("fn-end", (function (e) { e[0] && e[0].type === d || A() })); function A() { for (var e = 0; e < h.length; e++) g(0, h[e]); h.length && (h = []) } function w(e, t) { return t } return r } }, 7825: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.ajax }, 6660: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.jserrors }, 3081: (e, t, r) => { r.d(t, { gF: () => o, mY: () => i, t9: () => n, vz: () => s, xS: () => a }); const n = r(3325).D.metrics, i = "sm", o = "cm", a = "storeSupportabilityMetrics", s = "storeEventMetrics" }, 4649: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageAction }, 7633: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewEvent }, 9251: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewTiming }, 7144: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.sessionReplay }, 3614: (e, t, r) => { r.d(t, { BST_RESOURCE: () => i, END: () => s, FEATURE_NAME: () => n, FN_END: () => u, FN_START: () => c, PUSH_STATE: () => d, RESOURCE: () => o, START: () => a }); const n = r(3325).D.sessionTrace, i = "bstResource", o = "resource", a = "-start", s = "-end", c = "fn" + a, u = "fn" + s, d = "pushState" }, 7836: (e, t, r) => { r.d(t, { BODY: () => x, CB_END: () => E, CB_START: () => u, END: () => w, FEATURE_NAME: () => i, FETCH: () => T, FETCH_BODY: () => v, FETCH_DONE: () => m, FETCH_START: () => g, FN_END: () => c, FN_START: () => s, INTERACTION: () => f, INTERACTION_API: () => d, INTERACTION_EVENTS: () => o, JSONP_END: () => b, JSONP_NODE: () => p, JS_TIME: () => _, MAX_TIMER_BUDGET: () => a, REMAINING: () => l, SPA_NODE: () => h, START: () => A, originalSetTimeout: () => y }); var n = r(234); const i = r(3325).D.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 = n.Yu.ST, A = "-start", w = "-end", x = "-body", E = "cb" + w, _ = "jsTime", T = "fetch" }, 5938: (e, t, r) => { r.d(t, { W: () => i }); var n = r(8325); class i { constructor(e, t, r) { this.agentIdentifier = e, this.aggregator = t, this.ee = n.ee.get(e), this.featureName = r, this.blocked = !1 } } }, 7530: (e, t, r) => { r.d(t, { j: () => b }); var n = r(3325), i = r(234), o = r(5546), a = r(8325), s = r(7894), c = r(8e3), u = r(3960), d = r(385), l = r(50), f = r(3081), h = r(8632); function p() { const e = (0, h.gG)(); ["setErrorHandler", "finished", "addToTrace", "addRelease", "addPageAction", "setCurrentRouteName", "setPageViewName", "setCustomAttribute", "interaction", "noticeError", "setUserId", "setApplicationVersion", "start"].forEach((t => { e[t] = function () { for (var r = arguments.length, n = new Array(r), i = 0; i < r; i++) n[i] = arguments[i]; return function (t) { for (var r = arguments.length, n = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) n[i - 1] = arguments[i]; let o = []; return Object.values(e.initializedAgents).forEach((e => { e.exposed && e.api[t] && o.push(e.api[t](...n)) })), o.length > 1 ? o : o[0] }(t, ...n) } })) } var g = r(2587); const m = e => { const t = e.startsWith("http"); e += "/", r.p = t ? e : "https://" + e }; let v = !1; function b(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, b = arguments.length > 2 ? arguments[2] : void 0, y = arguments.length > 3 ? arguments[3] : void 0, { init: A, info: w, loader_config: x, runtime: E = { loaderType: b }, exposed: _ = !0 } = t; const T = (0, h.gG)(); w || (A = T.init, w = T.info, x = T.loader_config), (0, i.Dg)(e, A || {}), (0, i.GE)(e, x || {}), w.jsAttributes ??= {}, d.v6 && (w.jsAttributes.isWorker = !0), (0, i.CX)(e, w); const S = (0, i.P_)(e), D = [w.beacon, w.errorBeacon]; v || (v = !0, S.proxy.assets && (m(S.proxy.assets), D.push(S.proxy.assets)), S.proxy.beacon && D.push(S.proxy.beacon)), E.denyList = [...S.ajax.deny_list || [], ...S.ajax.block_internal ? D : []], (0, i.sU)(e, E), p(); const j = function (e, t) { t || (0, c.R)(e, "api"); const h = {}; var p = a.ee.get(e), g = p.get("tracer"), m = "api-", v = m + "ixn-"; function b(t, r, n, o) { const a = (0, i.C5)(e); return null === r ? delete a.jsAttributes[t] : (0, i.CX)(e, { ...a, jsAttributes: { ...a.jsAttributes, [t]: r } }), w(m, n, !0, o || null === r ? "session" : void 0)(t, r) } function y() {} ["setErrorHandler", "finished", "addToTrace", "addRelease"].forEach((e => { h[e] = w(m, e, !0, "api") })), h.addPageAction = w(m, "addPageAction", !0, n.D.pageAction), h.setCurrentRouteName = w(m, "routeName", !0, n.D.spa), h.setPageViewName = function (t, r) { if ("string" == typeof t) return "/" !== t.charAt(0) && (t = "/" + t), (0, i.OP)(e).customTransaction = (r || "http://custom.transaction") + t, w(m, "setPageViewName", !0)() }, h.setCustomAttribute = function (e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if ("string" == typeof e) { if (["string", "number", "boolean"].includes(typeof t) || null === t) return b(e, t, "setCustomAttribute", r); (0, l.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string, number or boolean type, but a type of <".concat(typeof t, "> was provided.")) } else(0, l.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, h.setUserId = function (e) { if ("string" == typeof e || null === e) return b("enduser.id", e, "setUserId", !0); (0, l.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, h.setApplicationVersion = function (e) { if ("string" == typeof e || null === e) return b("application.version", e, "setApplicationVersion", !1); (0, l.Z)("Failed to execute setApplicationVersion. Expected <String | null>, but got <".concat(typeof e, ">.")) }, h.start = e => { try { const t = e ? "defined" : "undefined"; (0, o.p)(f.xS, ["API/start/".concat(t, "/called")], void 0, n.D.metrics, p); const r = Object.values(n.D); if (void 0 === e) e = r; else { if ((e = Array.isArray(e) && e.length ? e : [e]).some((e => !r.includes(e)))) return (0, l.Z)("Invalid feature name supplied. Acceptable feature names are: ".concat(r)); e.includes(n.D.pageViewEvent) || e.push(n.D.pageViewEvent) } e.forEach((e => { p.emit("".concat(e, "-opt-in")) })) } catch (e) { (0, l.Z)("An unexpected issue occurred", e) } }, h.interaction = function () { return (new y).get() }; var A = y.prototype = { createTracer: function (e, t) { var r = {}, i = this, a = "function" == typeof t; return (0, o.p)(v + "tracer", [(0, s.z)(), e, r], i, n.D.spa, p), function () { if (g.emit((a ? "" : "no-") + "fn-start", [(0, s.z)(), i, a], r), a) try { return t.apply(this, arguments) } catch (e) { throw g.emit("fn-err", [arguments, this, e], r), e } finally { g.emit("fn-end", [(0, s.z)()], r) } } } }; function w(e, t, r, i) { return function () { return (0, o.p)(f.xS, ["API/" + t + "/called"], void 0, n.D.metrics, p), i && (0, o.p)(e + t, [(0, s.z)(), ...arguments], r ? null : this, i, p), r ? void 0 : this } } function x() { r.e(111).then(r.bind(r, 7438)).then((t => { let { setAPI: r } = t; r(e), (0, c.L)(e, "api") })).catch((() => (0, l.Z)("Downloading runtime APIs failed..."))) } return ["actionText", "setName", "setAttribute", "save", "ignore", "onEnd", "getContext", "end", "get"].forEach((e => { A[e] = w(v, e, void 0, n.D.spa) })), h.noticeError = function (e, t) { "string" == typeof e && (e = new Error(e)), (0, o.p)(f.xS, ["API/noticeError/called"], void 0, n.D.metrics, p), (0, o.p)("err", [e, (0, s.z)(), !1, t], void 0, n.D.jserrors, p) }, d.il ? (0, u.b)((() => x()), !0) : x(), h }(e, y); return (0, h.Qy)(e, j, "api"), (0, h.Qy)(e, _, "exposed"), (0, h.EZ)("activatedFeatures", g.T), j } }, 3325: (e, t, r) => { r.d(t, { D: () => n, p: () => i }); const n = { ajax: "ajax", jserrors: "jserrors", metrics: "metrics", pageAction: "page_action", pageViewEvent: "page_view_event", pageViewTiming: "page_view_timing", sessionReplay: "session_replay", sessionTrace: "session_trace", spa: "spa" }, i = { [n.pageViewEvent]: 1, [n.pageViewTiming]: 2, [n.metrics]: 3, [n.jserrors]: 4, [n.ajax]: 5, [n.sessionTrace]: 6, [n.pageAction]: 7, [n.spa]: 8, [n.sessionReplay]: 9 } } }, 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 => ({ 111: "nr-spa", 164: "nr-spa-compressor", 433: "nr-spa-recorder" } [e] + "-1.246.0.min.js"), i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), e = {}, t = "NRBA-1.246.0.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 } } s || (c = !0, (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), e[r] = [n]; var f = (t, n) => { s.onerror = s.onload = null, clearTimeout(h); var i = e[r]; if (delete e[r], s.parentNode && s.parentNode.removeChild(s), i && i.forEach((e => e(n))), t) return t(n) }, h = setTimeout(f.bind(null, void 0, { type: "timeout", target: s }), 12e4); s.onerror = f.bind(null, s.onerror), s.onload = f.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 = { 801: 0, 92: 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.246.0.PROD"] = self["webpackChunk:NRBA-1.246.0.PROD"] || []; r.forEach(t.bind(null, 0)), r.push = t.bind(null, r.push.bind(r)) })(), (() => { var e = i(50); class t { addPageAction(t, r) { (0, e.Z)("Call to agent api addPageAction failed. The page action feature is not currently initialized.") } setPageViewName(t, r) { (0, e.Z)("Call to agent api setPageViewName failed. The page view feature is not currently initialized.") } setCustomAttribute(t, r, n) { (0, e.Z)("Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.") } noticeError(t, r) { (0, e.Z)("Call to agent api noticeError failed. The js errors feature is not currently initialized.") } setUserId(t) { (0, e.Z)("Call to agent api setUserId failed. The js errors feature is not currently initialized.") } setApplicationVersion(t) { (0, e.Z)("Call to agent api setApplicationVersion failed. The agent is not currently initialized.") } setErrorHandler(t) { (0, e.Z)("Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.") } finished(t) { (0, e.Z)("Call to agent api finished failed. The page action feature is not currently initialized.") } addRelease(t, r) { (0, e.Z)("Call to agent api addRelease failed. The js errors feature is not currently initialized.") } start(t) { (0, e.Z)("Call to agent api addRelease failed. The agent is not currently initialized.") } } var r = i(3325), n = i(234); const o = Object.values(r.D); function a(e) { const t = {}; return o.forEach((r => { t[r] = function (e, t) { return !1 !== (0, n.Mt)(t, "".concat(e, ".enabled")) }(r, e) })), t } var s = i(7530); var c = i(8e3), u = i(5938), d = i(3960), l = i(385); class f extends u.W { constructor(e, t, r) { let i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; super(e, t, r), this.auto = i, this.abortHandler = void 0, this.featAggregate = void 0, this.onAggregateImported = void 0, !1 === (0, n.Mt)(this.agentIdentifier, "".concat(this.featureName, ".autoStart")) && (this.auto = !1), this.auto && (0, c.R)(e, r) } importAggregator() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (this.featAggregate) return; if (!this.auto) return void this.ee.on("".concat(this.featureName, "-opt-in"), (() => { (0, c.R)(this.agentIdentifier, this.featureName), this.auto = !0, this.importAggregator() })); const r = l.il && !0 === (0, n.Mt)(this.agentIdentifier, "privacy.cookies_enabled"); let o; this.onAggregateImported = new Promise((e => { o = e })); const a = async () => { let n; try { if (r) { const { setupAgentSession: e } = await i.e(111).then(i.bind(i, 3228)); n = e(this.agentIdentifier) } } catch (t) { (0, e.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.", t) } try { if (!this.shouldImportAgg(this.featureName, n)) return (0, c.L)(this.agentIdentifier, this.featureName), void o(!1); const { lazyFeatureLoader: e } = await i.e(111).then(i.bind(i, 8582)), { Aggregate: r } = await e(this.featureName, "aggregate"); this.featAggregate = new r(this.agentIdentifier, this.aggregator, t), o(!0) } catch (t) { (0, e.Z)("Downloading and initializing ".concat(this.featureName, " failed..."), t), this.abortHandler?.(), (0, c.L)(this.agentIdentifier, this.featureName), o(!1) } }; l.il ? (0, d.b)((() => a()), !0) : a() } shouldImportAgg(e, t) { return e !== r.D.sessionReplay || !!n.Yu.MO && (!1 !== (0, n.Mt)(this.agentIdentifier, "session_trace.enabled") && (!!t?.isNew || !!t?.state.sessionReplayMode)) } } var h = i(7633); class p extends f { static featureName = h.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, h.t, r), this.importAggregator() } } var g = i(1117), m = i(1284); class v extends g.w { constructor(e) { super(e), this.aggregatedData = {} } store(e, t, r, n, i) { var o = this.getBucket(e, t, r, i); return o.metrics = function (e, t) { t || (t = { count: 0 }); return t.count += 1, (0, m.D)(e, (function (e, r) { t[e] = b(r, t[e]) })), t }(n, o.metrics), o } merge(e, t, r, n, i) { var o = this.getBucket(e, t, n, i); if (o.metrics) { var a = o.metrics; a.count += r.count, (0, m.D)(r, (function (e, t) { if ("count" !== e) { var n = a[e], i = r[e]; i && !i.c ? a[e] = b(i.t, n) : a[e] = function (e, t) { if (!t) return e; t.c || (t = y(t.t)); return t.min = Math.min(e.min, t.min), t.max = Math.max(e.max, t.max), t.t += e.t, t.sos += e.sos, t.c += e.c, t }(i, a[e]) } })) } else o.metrics = r } storeMetric(e, t, r, n) { var i = this.getBucket(e, t, r); return i.stats = b(n, i.stats), i } getBucket(e, t, r, n) { this.aggregatedData[e] || (this.aggregatedData[e] = {}); var i = this.aggregatedData[e][t]; return i || (i = this.aggregatedData[e][t] = { params: r || {} }, n && (i.custom = n)), i } get(e, t) { return t ? this.aggregatedData[e] && this.aggregatedData[e][t] : this.aggregatedData[e] } take(e) { for (var t = {}, r = "", n = !1, i = 0; i < e.length; i++) t[r = e[i]] = A(this.aggregatedData[r]), t[r].length && (n = !0), delete this.aggregatedData[r]; return n ? t : null } } function b(e, t) { return null == e ? function (e) { e ? e.c++ : e = { c: 1 }; return e }(t) : t ? (t.c || (t = y(t.t)), t.c += 1, t.t += e, t.sos += e * e, e > t.max && (t.max = e), e < t.min && (t.min = e), t) : { t: e } } function y(e) { return { t: e, min: e, max: e, sos: e * e, c: 1 } } function A(e) { return "object" != typeof e ? [] : (0, m.D)(e, w) } function w(e, t) { return t } var x = i(8632), E = i(4402), _ = i(4351); var T = i(5546), S = i(7956), D = i(3239), j = i(7894), N = i(9251); class C extends f { static featureName = N.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, N.t, r), l.il && ((0, S.N)((() => (0, T.p)("docHidden", [(0, j.z)()], void 0, N.t, this.ee)), !0), (0, D.bP)("pagehide", (() => (0, T.p)("winPagehide", [(0, j.z)()], void 0, N.t, this.ee))), this.importAggregator()) } } var O = i(3081); class P extends f { static featureName = O.t9; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, O.t9, r), this.importAggregator() } } var R = i(6660); class I { constructor(e, t, r, n) { this.name = "UncaughtError", this.message = e, this.sourceURL = t, this.line = r, this.column = n } } class k extends f { static featureName = R.t; #e = new Set; constructor(e, t) { let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, R.t, n); try { this.removeOnAbort = new AbortController } catch (e) {} this.ee.on("fn-err", ((e, t, n) => { this.abortHandler && !this.#e.has(n) && (this.#e.add(n), (0, T.p)("err", [this.#t(n), (0, j.z)()], void 0, r.D.jserrors, this.ee)) })), this.ee.on("internal-error", (e => { this.abortHandler && (0, T.p)("ierr", [this.#t(e), (0, j.z)(), !0], void 0, r.D.jserrors, this.ee) })), l._A.addEventListener("unhandledrejection", (e => { this.abortHandler && (0, T.p)("err", [this.#r(e), (0, j.z)(), !1, { unhandledPromiseRejection: 1 }], void 0, r.D.jserrors, this.ee) }), (0, D.m$)(!1, this.removeOnAbort?.signal)), l._A.addEventListener("error", (e => { this.abortHandler && (this.#e.has(e.error) ? this.#e.delete(e.error) : (0, T.p)("err", [this.#n(e), (0, j.z)()], void 0, r.D.jserrors, this.ee)) }), (0, D.m$)(!1, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator() } #i() { this.removeOnAbort?.abort(), this.#e.clear(), this.abortHandler = void 0 } #t(e) { return e instanceof Error ? e : void 0 !== e?.message ? new I(e.message, e.filename || e.sourceURL, e.lineno || e.line, e.colno || e.col) : new I("string" == typeof e ? e : (0, _.P)(e)) } #r(e) { let t = "Unhandled Promise Rejection: "; if (e?.reason instanceof Error) try { return e.reason.message = t + e.reason.message, e.reason } catch (t) { return e.reason } if (void 0 === e.reason) return new I(t); const r = this.#t(e.reason); return r.message = t + r.message, r } #n(e) { return e.error instanceof Error ? e.error : new I(e.message, e.filename, e.lineno, e.colno) } } var H = i(2210); let z = 1; const L = "nr@id"; function M(e) { const t = typeof e; return !e || "object" !== t && "function" !== t ? -1 : e === l._A ? 0 : (0, H.X)(e, L, (function () { return z++ })) } function F(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)(e).length } catch (e) { return } } } var B = i(1214), U = i(7243); class Z { constructor(e) { this.agentIdentifier = e } generateTracePayload(e) { if (!this.shouldGenerateTrace(e)) return null; var t = (0, n.DL)(this.agentIdentifier); if (!t) return null; var r = (t.accountID || "").toString() || null, i = (t.agentID || "").toString() || null, o = (t.trustKey || "").toString() || null; if (!r || !i) return null; var a = (0, E.M)(), s = (0, E.Ht)(), 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, r, i, o)), (e.sameOrigin && !this.excludeNewrelicHeader() || !e.sameOrigin && this.isAllowedOrigin(e) && this.useNewrelicHeaderForCors()) && (u.newrelicHeader = this.generateTraceHeader(a, s, c, r, 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 l._A?.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)) } shouldGenerateTrace(e) { return this.isDtEnabled() && this.isAllowedOrigin(e) } isAllowedOrigin(e) { var t = !1, r = {}; if ((0, n.Mt)(this.agentIdentifier, "distributed_tracing") && (r = (0, n.P_)(this.agentIdentifier).distributed_tracing), e.sameOrigin) t = !0; else if (r.allowed_origins instanceof Array) for (var i = 0; i < r.allowed_origins.length; i++) { var o = (0, U.e)(r.allowed_origins[i]); if (e.hostname === o.hostname && e.protocol === o.protocol && e.port === o.port) { t = !0; break } } return t } isDtEnabled() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.enabled } excludeNewrelicHeader() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.exclude_newrelic_header } useNewrelicHeaderForCors() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !1 !== e.cors_use_newrelic_header } useTraceContextHeadersForCors() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.cors_use_tracecontext_headers } } var V = i(7825), q = ["load", "error", "abort", "timeout"], G = q.length, W = n.Yu.REQ, X = n.Yu.XHR; class Q extends f { static featureName = V.t; constructor(e, t) { let i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; if (super(e, t, V.t, i), (0, n.OP)(e).xhrWrappable) { this.dt = new Z(e), this.handler = (e, t, r, n) => (0, T.p)(e, t, r, n, this.ee); try { const e = { xmlhttprequest: "xhr", fetch: "fetch", beacon: "beacon" }; l._A?.performance?.getEntriesByType("resource").forEach((t => { if (t.initiatorType in e && 0 !== t.responseStatus) { const n = { status: t.responseStatus }, i = { rxSize: t.transferSize, duration: Math.floor(t.duration), cbTime: 0 }; K(n, t.name), this.handler("xhr", [n, i, t.startTime, t.responseEnd, e[t.initiatorType]], void 0, r.D.ajax) } })) } catch (e) {}(0, B.u5)(this.ee), (0, B.Kf)(this.ee), function (e, t, i, o) { function a(e) { var t = this; t.totalCbs = 0, t.called = 0, t.cbTime = 0, t.end = x, 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, D.m$)(!1)), l.IF || e.addEventListener("progress", (function (e) { t.lastSize = e.loaded }), (0, D.m$)(!1)) } function s(e) { this.params = { method: e[0] }, K(this, e[1]), this.metrics = {} } function c(t, r) { var i = (0, n.DL)(e); i.xpid && this.sameOrigin && r.setRequestHeader("X-NewRelic-ID", i.xpid); var a = o.generateTracePayload(this.parsedOrigin); if (a) { var s = !1; a.newrelicHeader && (r.setRequestHeader("newrelic", a.newrelicHeader), s = !0), a.traceContextParentHeader && (r.setRequestHeader("traceparent", a.traceContextParentHeader), a.traceContextStateHeader && r.setRequestHeader("tracestate", a.traceContextStateHeader), s = !0), s && (this.dt = a) } } function u(e, r) { var n = this.metrics, i = e[0], o = this; if (n && i) { var a = F(i); a && (n.txSize = a) } this.startTime = (0, j.z)(), 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 < G; s++) r.addEventListener(q[s], this.listener, (0, D.m$)(!1)) } function d(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 f(e, t) { var r = "" + M(e) + !!t; this.xhrGuids && !this.xhrGuids[r] && (this.xhrGuids[r] = !0, this.totalCbs += 1) } function h(e, t) { var r = "" + M(e) + !!t; this.xhrGuids && this.xhrGuids[r] && (delete this.xhrGuids[r], this.totalCbs -= 1) } function p() { this.endTime = (0, j.z)() } function g(e, r) { r instanceof X && "load" === e[0] && t.emit("xhr-load-added", [e[1], e[2]], r) } function m(e, r) { r instanceof X && "load" === e[0] && t.emit("xhr-load-removed", [e[1], e[2]], r) } function v(e, t, r) { t instanceof X && ("onload" === r && (this.onload = !0), ("load" === (e[0] && e[0].type) || this.onload) && (this.xhrCbStart = (0, j.z)())) } function b(e, r) { this.xhrCbStart && t.emit("xhr-cb-time", [(0, j.z)() - this.xhrCbStart, this.onload, r], r) } function y(e) { var t, r = e[1] || {}; if ("string" == typeof e[0] ? 0 === (t = e[0]).length && l.il && (t = "" + l._A.location.href) : e[0] && e[0].url ? t = e[0].url : l._A?.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, U.e)(t), this.sameOrigin = this.parsedOrigin.sameOrigin); var n = o.generateTracePayload(this.parsedOrigin); if (n && (n.newrelicHeader || n.traceContextParentHeader)) if (e[0] && e[0].headers) s(e[0].headers, n) && (this.dt = n); else { var i = {}; for (var a in r) i[a] = r[a]; i.headers = new Headers(r.headers || {}), s(i.headers, n) && (this.dt = n), e.length > 1 ? e[1] = i : e.push(i) } } 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 A(e, t) { this.params = {}, this.metrics = {}, this.startTime = (0, j.z)(), 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 W ? r = i.url : l._A?.URL && "object" == typeof i && i instanceof URL && (r = i.href), K(this, r); var o = ("" + (i && i instanceof W && i.method || n.method || "GET")).toUpperCase(); this.params.method = o, this.body = n.body, this.txSize = F(n.body) || 0 } function w(e, t) { var n; this.endTime = (0, j.z)(), this.params || (this.params = {}), this.params.status = t ? t.status : 0, "string" == typeof this.rxSize && this.rxSize.length > 0 && (n = +this.rxSize); var o = { txSize: this.txSize, rxSize: n, duration: (0, j.z)() - this.startTime }; i("xhr", [this.params, o, this.startTime, this.endTime, "fetch"], this, r.D.ajax) } function x(e) { var t = this.params, n = this.metrics; if (!this.ended) { this.ended = !0; for (var o = 0; o < G; o++) e.removeEventListener(q[o], this.listener, !1); t.aborted || (n.duration = (0, j.z)() - this.startTime, this.loadCaptureCalled || 4 !== e.readyState ? null == t.status && (t.status = 0) : E(this, e), n.cbTime = this.cbTime, i("xhr", [t, n, this.startTime, this.endTime, "xhr"], this, r.D.ajax)) } } function E(e, t) { e.params.status = t.status; var r = function (e, t) { var r = e.responseType; return "json" === r && null !== t ? t : "arraybuffer" === r || "blob" === r || "json" === r ? F(e.response) : "text" === r || "" === r || void 0 === r ? F(e.responseText) : void 0 }(t, e.lastSize); if (r && (e.metrics.rxSize = r), e.sameOrigin) { var n = t.getResponseHeader("X-NewRelic-App-Data"); n && (e.params.cat = n.split(", ").pop()) } e.loadCaptureCalled = !0 } t.on("new-xhr", a), t.on("open-xhr-start", s), t.on("open-xhr-end", c), t.on("send-xhr-start", u), t.on("xhr-cb-time", d), t.on("xhr-load-added", f), t.on("xhr-load-removed", h), t.on("xhr-resolved", p), t.on("addEventListener-end", g), t.on("removeEventListener-end", m), t.on("fn-end", b), t.on("fetch-before-start", y), t.on("fetch-start", A), t.on("fn-start", v), t.on("fetch-done", w) }(e, this.ee, this.handler, this.dt), this.importAggregator() } } } function K(e, t) { var r = (0, U.e)(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 } var Y = i(3614); const { BST_RESOURCE: J, RESOURCE: ee, START: te, END: re, FEATURE_NAME: ne, FN_END: ie, FN_START: oe, PUSH_STATE: ae } = Y; var se = i(7144); class ce extends f { static featureName = se.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, se.t, r), this.importAggregator() } } var ue = i(7836); const { FEATURE_NAME: de, START: le, END: fe, BODY: he, CB_END: pe, JS_TIME: ge, FETCH: me, FN_START: ve, CB_START: be, FN_END: ye } = ue; var Ae = i(4649); class we extends f { static featureName = Ae.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, Ae.t, r), this.importAggregator() } } new class extends t { constructor(t) { let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, E.ky)(16); super(), l._A ? (this.agentIdentifier = r, this.sharedAggregator = new v({ agentIdentifier: this.agentIdentifier }), this.features = {}, this.desiredFeatures = new Set(t.features || []), this.desiredFeatures.add(p), Object.assign(this, (0, s.j)(this.agentIdentifier, t, t.loaderType || "agent")), this.run()) : (0, e.Z)("Failed to initial the agent. Could not determine the runtime environment.") } get config() { return { info: (0, n.C5)(this.agentIdentifier), init: (0, n.P_)(this.agentIdentifier), loader_config: (0, n.DL)(this.agentIdentifier), runtime: (0, n.OP)(this.agentIdentifier) } } run() { const t = "features"; try { const n = a(this.agentIdentifier), i = [...this.desiredFeatures]; i.sort(((e, t) => r.p[e.featureName] - r.p[t.featureName])), i.forEach((t => { if (n[t.featureName] || t.featureName === r.D.pageViewEvent) { const i = function (e) { switch (e) { case r.D.ajax: return [r.D.jserrors]; case r.D.sessionTrace: return [r.D.ajax, r.D.pageViewEvent]; case r.D.sessionReplay: return [r.D.sessionTrace]; case r.D.pageViewTiming: return [r.D.pageViewEvent]; default: return [] } }(t.featureName); i.every((e => n[e])) || (0, e.Z)("".concat(t.featureName, " is enabled but one or more dependent features has been disabled (").concat((0, _.P)(i), "). This may cause unintended consequences or missing data...")), this.features[t.featureName] = new t(this.agentIdentifier, this.sharedAggregator) } })), (0, x.Qy)(this.agentIdentifier, this.features, t) } catch (r) { (0, e.Z)("Failed to initialize all enabled instrument classes (agent aborted) -", r); for (const e in this.features) this.features[e].abortHandler?.(); const n = (0, x.fP)(); return delete n.initializedAgents[this.agentIdentifier]?.api, delete n.initializedAgents[this.agentIdentifier]?.[t], delete this.sharedAggregator, n.ee?.abort(), delete n.ee?.get(this.agentIdentifier), !1 } } addToTrace(t) { (0, e.Z)("Call to agent api addToTrace failed. The session trace feature is not currently initialized.") } setCurrentRouteName(t) { (0, e.Z)("Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.") } interaction() { (0, e.Z)("Call to agent api interaction failed. The spa feature is not currently initialized.") } }({ features: [Q, p, C, class extends f { static featureName = ne; constructor(e, t) { if (super(e, t, ne, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il) return; const n = this.ee; let i; (0, B.QU)(n), this.eventsEE = (0, B.em)(n), this.eventsEE.on(oe, (function (e, t) { this.bstStart = (0, j.z)() })), this.eventsEE.on(ie, (function (e, t) { (0, T.p)("bst", [e[0], t, this.bstStart, (0, j.z)()], void 0, r.D.sessionTrace, n) })), n.on(ae + te, (function (e) { this.time = (0, j.z)(), this.startPath = location.pathname + location.hash })), n.on(ae + re, (function (e) { (0, T.p)("bstHist", [location.pathname + location.hash, this.startPath, this.time], void 0, r.D.sessionTrace, n) })); try { i = new PerformanceObserver((e => { const t = e.getEntries(); (0, T.p)(J, [t], void 0, r.D.sessionTrace, n) })), i.observe({ type: ee, buffered: !0 }) } catch (e) {} this.importAggregator({ resourceObserver: i }) } }, ce, P, we, k, class extends f { static featureName = de; constructor(e, t) { if (super(e, t, de, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il) return; if (!(0, n.OP)(e).xhrWrappable) return; try { this.removeOnAbort = new AbortController } catch (e) {} let r, i = 0; const o = this.ee.get("tracer"), a = (0, B._L)(this.ee), s = (0, B.Lg)(this.ee), c = (0, B.BV)(this.ee), u = (0, B.Kf)(this.ee), d = this.ee.get("events"), f = (0, B.u5)(this.ee), h = (0, B.QU)(this.ee), p = (0, B.Gm)(this.ee); function g(e, t) { h.emit("newURL", ["" + window.location, t]) } function m() { i++, r = window.location.hash, this[ve] = (0, j.z)() } function v() { i--, window.location.hash !== r && g(0, !0); var e = (0, j.z)(); this[ge] = ~~this[ge] + e - this[ve], this[ye] = e } function b(e, t) { e.on(t, (function () { this[t] = (0, j.z)() })) } this.ee.on(ve, m), s.on(be, m), a.on(be, m), this.ee.on(ye, v), s.on(pe, v), a.on(pe, v), this.ee.buffer([ve, ye, "xhr-resolved"], this.featureName), d.buffer([ve], this.featureName), c.buffer(["setTimeout" + fe, "clearTimeout" + le, ve], this.featureName), u.buffer([ve, "new-xhr", "send-xhr" + le], this.featureName), f.buffer([me + le, me + "-done", me + he + le, me + he + fe], this.featureName), h.buffer(["newURL"], this.featureName), p.buffer([ve], this.featureName), s.buffer(["propagate", be, pe, "executor-err", "resolve" + le], this.featureName), o.buffer([ve, "no-" + ve], this.featureName), a.buffer(["new-jsonp", "cb-start", "jsonp-error", "jsonp-end"], this.featureName), b(f, me + le), b(f, me + "-done"), b(a, "new-jsonp"), b(a, "jsonp-end"), b(a, "cb-start"), h.on("pushState-end", g), h.on("replaceState-end", g), window.addEventListener("hashchange", g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("load", g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("popstate", (function () { g(0, i > 1) }), (0, D.m$)(!0, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator() } #i() { this.removeOnAbort?.abort(), this.abortHandler = void 0 } }], loaderType: "spa" }) })() })(); </script> <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.5.18/webfont.js"></script> <script> WebFont.load({ google: { families: ['Alegreya Sans:400,400italic,700,700italic', 'Alegreya:400,400italic,700,700italic'] } }); </script> <script src="https://players.brightcove.net/6056665225001/default_default/index.js"></script> <script src='/Bundles/js/common-bundle.js?v=a99dc922fdeee0f0be9b7e610920b0b2b3609c493afbd24db398782b8ec36907'></script> <script src='/Bundles/js/global-bundle.js?v=cbd09da9c9ce184c42d166b78a619cb5313bc511eab24079d8147d434530e20e'></script> <script src='/Bundles/js/date-picker-bundle.js?v=5607472c79b4b8cf1231917918b9acd002bc7181ff9f2f508d9d2b29ce5f2b3c'></script> <script src='/Bundles/js/shop-carousel-bundle.js?v=e0b81793f12e054ce9f69548a6b10fe1db02a9df3ca353bd3723b471ae686e4c'></script> <script src='/Bundles/js/content-page-google-analytics-bundle.js?v=19e841c3eaf293a969f34673ac96c9095ea2b5216f650c5c0f9626dc80188b16'></script> <footer> <script defer="true" src="/Util/Find/epi-util/find.js"></script> <script> document.addEventListener('DOMContentLoaded',function(){if(typeof FindApi === 'function'){var api = new FindApi();api.setApplicationUrl('/');api.setServiceApiBaseUrl('/find_v2/');api.processEventFromCurrentUri();api.bindWindowEvents();api.bindAClickEvent();api.sendBufferedEvents();}}) </script> </footer> <!-- Custom Lucky Orange User Data --> </body> </html>