import {
    k as an
} from "./chunk-GHJJ2Z4D.js";
import {
    E as sn,
    a as tn,
    e as rn,
    f as Ue,
    g as nn,
    h as pe,
    i as on
} from "./chunk-OYJWBUYU.js";
import {
    $ as A,
    B as Q,
    E as ne,
    F as ie,
    Ga as jr,
    H as jt,
    Ha as kr,
    I as de,
    Jc as Jr,
    K as Ye,
    L as K,
    Lb as Qr,
    Lc as et,
    M as kt,
    N as Ar,
    P as Tr,
    Pc as tt,
    R as Or,
    S as P,
    T as Mr,
    U as y,
    Va as Lr,
    Vc as en,
    W as C,
    Y as R,
    Yb as Kr,
    Z as Dr,
    _ as Er,
    a as yr,
    aa as Lt,
    b as Cr,
    ba as Z,
    bb as qt,
    ca as d,
    cb as x,
    cc as Zr,
    d as Pt,
    db as $r,
    e as xt,
    ea as Ur,
    eb as zr,
    ec as Yr,
    f as H,
    fc as Xr,
    g as N,
    ha as fe,
    ia as L,
    ib as Fr,
    ja as De,
    k as W,
    kb as Je,
    l as b,
    lb as qr,
    m as h,
    mb as Br,
    n as Oe,
    na as $t,
    nb as Ee,
    o as wr,
    oa as Nr,
    p as br,
    pa as zt,
    q as v,
    qa as Pr,
    r as Ze,
    s as I,
    sa as xr,
    sb as Vr,
    t as Me,
    ta as oe,
    tb as Hr,
    u as Ir,
    ua as Xe,
    v as _t,
    wa as _r,
    wb as Bt,
    xa as Ft,
    xb as Vt,
    yb as Wr,
    zb as Gr
} from "./chunk-SSI6PFOR.js";
import {
    a as l,
    b as U
} from "./chunk-FFRAY7OK.js";
var f = "primary",
    Ve = Symbol("RouteTitle"),
    Kt = class {
        params;
        constructor(n) {
            this.params = n || {}
        }
        has(n) {
            return Object.prototype.hasOwnProperty.call(this.params, n)
        }
        get(n) {
            if (this.has(n)) {
                let e = this.params[n];
                return Array.isArray(e) ? e[0] : e
            }
            return null
        }
        getAll(n) {
            if (this.has(n)) {
                let e = this.params[n];
                return Array.isArray(e) ? e : [e]
            }
            return []
        }
        get keys() {
            return Object.keys(this.params)
        }
    };

function ue(t) {
    return new Kt(t)
}

function gn(t, n, e) {
    let r = e.path.split("/");
    if (r.length > t.length || e.pathMatch === "full" && (n.hasChildren() || r.length < t.length)) return null;
    let i = {};
    for (let s = 0; s < r.length; s++) {
        let o = r[s],
            a = t[s];
        if (o[0] === ":") i[o.substring(1)] = a;
        else if (o !== a.path) return null
    }
    return {
        consumed: t.slice(0, r.length),
        posParams: i
    }
}

function ci(t, n) {
    if (t.length !== n.length) return !1;
    for (let e = 0; e < t.length; ++e)
        if (!$(t[e], n[e])) return !1;
    return !0
}

function $(t, n) {
    let e = t ? Zt(t) : void 0,
        r = n ? Zt(n) : void 0;
    if (!e || !r || e.length != r.length) return !1;
    let i;
    for (let s = 0; s < e.length; s++)
        if (i = e[s], !vn(t[i], n[i])) return !1;
    return !0
}

function Zt(t) {
    return [...Object.keys(t), ...Object.getOwnPropertySymbols(t)]
}

function vn(t, n) {
    if (Array.isArray(t) && Array.isArray(n)) {
        if (t.length !== n.length) return !1;
        let e = [...t].sort(),
            r = [...n].sort();
        return e.every((i, s) => r[s] === i)
    } else return t === n
}

function mn(t) {
    return t.length > 0 ? t[t.length - 1] : null
}

function te(t) {
    return wr(t) ? t : Hr(t) ? b(Promise.resolve(t)) : h(t)
}
var li = {
        exact: Sn,
        subset: yn
    },
    Rn = {
        exact: hi,
        subset: di,
        ignored: () => !0
    };

function un(t, n, e) {
    return li[e.paths](t.root, n.root, e.matrixParams) && Rn[e.queryParams](t.queryParams, n.queryParams) && !(e.fragment === "exact" && t.fragment !== n.fragment)
}

function hi(t, n) {
    return $(t, n)
}

function Sn(t, n, e) {
    if (!se(t.segments, n.segments) || !it(t.segments, n.segments, e) || t.numberOfChildren !== n.numberOfChildren) return !1;
    for (let r in n.children)
        if (!t.children[r] || !Sn(t.children[r], n.children[r], e)) return !1;
    return !0
}

function di(t, n) {
    return Object.keys(n).length <= Object.keys(t).length && Object.keys(n).every(e => vn(t[e], n[e]))
}

function yn(t, n, e) {
    return Cn(t, n, n.segments, e)
}

function Cn(t, n, e, r) {
    if (t.segments.length > e.length) {
        let i = t.segments.slice(0, e.length);
        return !(!se(i, e) || n.hasChildren() || !it(i, e, r))
    } else if (t.segments.length === e.length) {
        if (!se(t.segments, e) || !it(t.segments, e, r)) return !1;
        for (let i in n.children)
            if (!t.children[i] || !yn(t.children[i], n.children[i], r)) return !1;
        return !0
    } else {
        let i = e.slice(0, t.segments.length),
            s = e.slice(t.segments.length);
        return !se(t.segments, i) || !it(t.segments, i, r) || !t.children[f] ? !1 : Cn(t.children[f], n, s, r)
    }
}

function it(t, n, e) {
    return n.every((r, i) => Rn[e](t[i].parameters, r.parameters))
}
var F = class {
        root;
        queryParams;
        fragment;
        _queryParamMap;
        constructor(n = new g([], {}), e = {}, r = null) {
            this.root = n, this.queryParams = e, this.fragment = r
        }
        get queryParamMap() {
            return this._queryParamMap ? ? = ue(this.queryParams), this._queryParamMap
        }
        toString() {
            return gi.serialize(this)
        }
    },
    g = class {
        segments;
        children;
        parent = null;
        constructor(n, e) {
            this.segments = n, this.children = e, Object.values(e).forEach(r => r.parent = this)
        }
        hasChildren() {
            return this.numberOfChildren > 0
        }
        get numberOfChildren() {
            return Object.keys(this.children).length
        }
        toString() {
            return ot(this)
        }
    },
    Y = class {
        path;
        parameters;
        _parameterMap;
        constructor(n, e) {
            this.path = n, this.parameters = e
        }
        get parameterMap() {
            return this._parameterMap ? ? = ue(this.parameters), this._parameterMap
        }
        toString() {
            return bn(this)
        }
    };

function fi(t, n) {
    return se(t, n) && t.every((e, r) => $(e.parameters, n[r].parameters))
}

function se(t, n) {
    return t.length !== n.length ? !1 : t.every((e, r) => e.path === n[r].path)
}

function pi(t, n) {
    let e = [];
    return Object.entries(t.children).forEach(([r, i]) => {
        r === f && (e = e.concat(n(i, r)))
    }), Object.entries(t.children).forEach(([r, i]) => {
        r !== f && (e = e.concat(n(i, r)))
    }), e
}
var ce = (() => {
        class t {
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: () => new X,
                providedIn: "root"
            })
        }
        return t
    })(),
    X = class {
        parse(n) {
            let e = new Xt(n);
            return new F(e.parseRootSegment(), e.parseQueryParams(), e.parseFragment())
        }
        serialize(n) {
            let e = `/${Ne(n.root,!0)}`,
                r = Ri(n.queryParams),
                i = typeof n.fragment == "string" ? `#${vi(n.fragment)}` : "";
            return `${e}${r}${i}`
        }
    },
    gi = new X;

function ot(t) {
    return t.segments.map(n => bn(n)).join("/")
}

function Ne(t, n) {
    if (!t.hasChildren()) return ot(t);
    if (n) {
        let e = t.children[f] ? Ne(t.children[f], !1) : "",
            r = [];
        return Object.entries(t.children).forEach(([i, s]) => {
            i !== f && r.push(`${i}:${Ne(s,!1)}`)
        }), r.length > 0 ? `${e}(${r.join("//")})` : e
    } else {
        let e = pi(t, (r, i) => i === f ? [Ne(t.children[f], !1)] : [`${i}:${Ne(r,!1)}`]);
        return Object.keys(t.children).length === 1 && t.children[f] != null ? `${ot(t)}/${e[0]}` : `${ot(t)}/(${e.join("//")})`
    }
}

function wn(t) {
    return encodeURIComponent(t).replace(/%40/g, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",")
}

function rt(t) {
    return wn(t).replace(/%3B/gi, ";")
}

function vi(t) {
    return encodeURI(t)
}

function Yt(t) {
    return wn(t).replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/%26/gi, "&")
}

function st(t) {
    return decodeURIComponent(t)
}

function cn(t) {
    return st(t.replace(/\+/g, "%20"))
}

function bn(t) {
    return `${Yt(t.path)}${mi(t.parameters)}`
}

function mi(t) {
    return Object.entries(t).map(([n, e]) => `;${Yt(n)}=${Yt(e)}`).join("")
}

function Ri(t) {
    let n = Object.entries(t).map(([e, r]) => Array.isArray(r) ? r.map(i => `${rt(e)}=${rt(i)}`).join("&") : `${rt(e)}=${rt(r)}`).filter(e => e);
    return n.length ? `?${n.join("&")}` : ""
}
var Si = /^[^\/()?;#]+/;

function Ht(t) {
    let n = t.match(Si);
    return n ? n[0] : ""
}
var yi = /^[^\/()?;=#]+/;

function Ci(t) {
    let n = t.match(yi);
    return n ? n[0] : ""
}
var wi = /^[^=?&#]+/;

function bi(t) {
    let n = t.match(wi);
    return n ? n[0] : ""
}
var Ii = /^[^&#]+/;

function Ai(t) {
    let n = t.match(Ii);
    return n ? n[0] : ""
}
var Xt = class {
    url;
    remaining;
    constructor(n) {
        this.url = n, this.remaining = n
    }
    parseRootSegment() {
        return this.consumeOptional("/"), this.remaining === "" || this.peekStartsWith("?") || this.peekStartsWith("#") ? new g([], {}) : new g([], this.parseChildren())
    }
    parseQueryParams() {
        let n = {};
        if (this.consumeOptional("?"))
            do this.parseQueryParam(n); while (this.consumeOptional("&"));
        return n
    }
    parseFragment() {
        return this.consumeOptional("#") ? decodeURIComponent(this.remaining) : null
    }
    parseChildren() {
        if (this.remaining === "") return {};
        this.consumeOptional("/");
        let n = [];
        for (this.peekStartsWith("(") || n.push(this.parseSegment()); this.peekStartsWith("/") && !this.peekStartsWith("//") && !this.peekStartsWith("/(");) this.capture("/"), n.push(this.parseSegment());
        let e = {};
        this.peekStartsWith("/(") && (this.capture("/"), e = this.parseParens(!0));
        let r = {};
        return this.peekStartsWith("(") && (r = this.parseParens(!1)), (n.length > 0 || Object.keys(e).length > 0) && (r[f] = new g(n, e)), r
    }
    parseSegment() {
        let n = Ht(this.remaining);
        if (n === "" && this.peekStartsWith(";")) throw new C(4009, !1);
        return this.capture(n), new Y(st(n), this.parseMatrixParams())
    }
    parseMatrixParams() {
        let n = {};
        for (; this.consumeOptional(";");) this.parseParam(n);
        return n
    }
    parseParam(n) {
        let e = Ci(this.remaining);
        if (!e) return;
        this.capture(e);
        let r = "";
        if (this.consumeOptional("=")) {
            let i = Ht(this.remaining);
            i && (r = i, this.capture(r))
        }
        n[st(e)] = st(r)
    }
    parseQueryParam(n) {
        let e = bi(this.remaining);
        if (!e) return;
        this.capture(e);
        let r = "";
        if (this.consumeOptional("=")) {
            let o = Ai(this.remaining);
            o && (r = o, this.capture(r))
        }
        let i = cn(e),
            s = cn(r);
        if (n.hasOwnProperty(i)) {
            let o = n[i];
            Array.isArray(o) || (o = [o], n[i] = o), o.push(s)
        } else n[i] = s
    }
    parseParens(n) {
        let e = {};
        for (this.capture("("); !this.consumeOptional(")") && this.remaining.length > 0;) {
            let r = Ht(this.remaining),
                i = this.remaining[r.length];
            if (i !== "/" && i !== ")" && i !== ";") throw new C(4010, !1);
            let s;
            r.indexOf(":") > -1 ? (s = r.slice(0, r.indexOf(":")), this.capture(s), this.capture(":")) : n && (s = f);
            let o = this.parseChildren();
            e[s] = Object.keys(o).length === 1 ? o[f] : new g([], o), this.consumeOptional("//")
        }
        return e
    }
    peekStartsWith(n) {
        return this.remaining.startsWith(n)
    }
    consumeOptional(n) {
        return this.peekStartsWith(n) ? (this.remaining = this.remaining.substring(n.length), !0) : !1
    }
    capture(n) {
        if (!this.consumeOptional(n)) throw new C(4011, !1)
    }
};

function In(t) {
    return t.segments.length > 0 ? new g([], {
        [f]: t
    }) : t
}

function An(t) {
    let n = {};
    for (let [r, i] of Object.entries(t.children)) {
        let s = An(i);
        if (r === f && s.segments.length === 0 && s.hasChildren())
            for (let [o, a] of Object.entries(s.children)) n[o] = a;
        else(s.segments.length > 0 || s.hasChildren()) && (n[r] = s)
    }
    let e = new g(t.segments, n);
    return Ti(e)
}

function Ti(t) {
    if (t.numberOfChildren === 1 && t.children[f]) {
        let n = t.children[f];
        return new g(t.segments.concat(n.segments), n.children)
    }
    return t
}

function J(t) {
    return t instanceof F
}

function Tn(t, n, e = null, r = null) {
    let i = On(t);
    return Mn(i, n, e, r)
}

function On(t) {
    let n;

    function e(s) {
        let o = {};
        for (let u of s.children) {
            let c = e(u);
            o[u.outlet] = c
        }
        let a = new g(s.url, o);
        return s === t && (n = a), a
    }
    let r = e(t.root),
        i = In(r);
    return n ? ? i
}

function Mn(t, n, e, r) {
    let i = t;
    for (; i.parent;) i = i.parent;
    if (n.length === 0) return Wt(i, i, i, e, r);
    let s = Oi(n);
    if (s.toRoot()) return Wt(i, i, new g([], {}), e, r);
    let o = Mi(s, i, t),
        a = o.processChildren ? xe(o.segmentGroup, o.index, s.commands) : En(o.segmentGroup, o.index, s.commands);
    return Wt(i, o.segmentGroup, a, e, r)
}

function ut(t) {
    return typeof t == "object" && t != null && !t.outlets && !t.segmentPath
}

function je(t) {
    return typeof t == "object" && t != null && t.outlets
}

function Wt(t, n, e, r, i) {
    let s = {};
    r && Object.entries(r).forEach(([u, c]) => {
        s[u] = Array.isArray(c) ? c.map(p => `${p}`) : `${c}`
    });
    let o;
    t === n ? o = e : o = Dn(t, n, e);
    let a = In(An(o));
    return new F(a, s, i)
}

function Dn(t, n, e) {
    let r = {};
    return Object.entries(t.children).forEach(([i, s]) => {
        s === n ? r[i] = e : r[i] = Dn(s, n, e)
    }), new g(t.segments, r)
}
var ct = class {
    isAbsolute;
    numberOfDoubleDots;
    commands;
    constructor(n, e, r) {
        if (this.isAbsolute = n, this.numberOfDoubleDots = e, this.commands = r, n && r.length > 0 && ut(r[0])) throw new C(4003, !1);
        let i = r.find(je);
        if (i && i !== mn(r)) throw new C(4004, !1)
    }
    toRoot() {
        return this.isAbsolute && this.commands.length === 1 && this.commands[0] == "/"
    }
};

function Oi(t) {
    if (typeof t[0] == "string" && t.length === 1 && t[0] === "/") return new ct(!0, 0, t);
    let n = 0,
        e = !1,
        r = t.reduce((i, s, o) => {
            if (typeof s == "object" && s != null) {
                if (s.outlets) {
                    let a = {};
                    return Object.entries(s.outlets).forEach(([u, c]) => {
                        a[u] = typeof c == "string" ? c.split("/") : c
                    }), [...i, {
                        outlets: a
                    }]
                }
                if (s.segmentPath) return [...i, s.segmentPath]
            }
            return typeof s != "string" ? [...i, s] : o === 0 ? (s.split("/").forEach((a, u) => {
                u == 0 && a === "." || (u == 0 && a === "" ? e = !0 : a === ".." ? n++ : a != "" && i.push(a))
            }), i) : [...i, s]
        }, []);
    return new ct(e, n, r)
}
var me = class {
    segmentGroup;
    processChildren;
    index;
    constructor(n, e, r) {
        this.segmentGroup = n, this.processChildren = e, this.index = r
    }
};

function Mi(t, n, e) {
    if (t.isAbsolute) return new me(n, !0, 0);
    if (!e) return new me(n, !1, NaN);
    if (e.parent === null) return new me(e, !0, 0);
    let r = ut(t.commands[0]) ? 0 : 1,
        i = e.segments.length - 1 + r;
    return Di(e, i, t.numberOfDoubleDots)
}

function Di(t, n, e) {
    let r = t,
        i = n,
        s = e;
    for (; s > i;) {
        if (s -= i, r = r.parent, !r) throw new C(4005, !1);
        i = r.segments.length
    }
    return new me(r, !1, i - s)
}

function Ei(t) {
    return je(t[0]) ? t[0].outlets : {
        [f]: t
    }
}

function En(t, n, e) {
    if (t ? ? = new g([], {}), t.segments.length === 0 && t.hasChildren()) return xe(t, n, e);
    let r = Ui(t, n, e),
        i = e.slice(r.commandIndex);
    if (r.match && r.pathIndex < t.segments.length) {
        let s = new g(t.segments.slice(0, r.pathIndex), {});
        return s.children[f] = new g(t.segments.slice(r.pathIndex), t.children), xe(s, 0, i)
    } else return r.match && i.length === 0 ? new g(t.segments, {}) : r.match && !t.hasChildren() ? Jt(t, n, e) : r.match ? xe(t, 0, i) : Jt(t, n, e)
}

function xe(t, n, e) {
    if (e.length === 0) return new g(t.segments, {}); {
        let r = Ei(e),
            i = {};
        if (Object.keys(r).some(s => s !== f) && t.children[f] && t.numberOfChildren === 1 && t.children[f].segments.length === 0) {
            let s = xe(t.children[f], n, e);
            return new g(t.segments, s.children)
        }
        return Object.entries(r).forEach(([s, o]) => {
            typeof o == "string" && (o = [o]), o !== null && (i[s] = En(t.children[s], n, o))
        }), Object.entries(t.children).forEach(([s, o]) => {
            r[s] === void 0 && (i[s] = o)
        }), new g(t.segments, i)
    }
}

function Ui(t, n, e) {
    let r = 0,
        i = n,
        s = {
            match: !1,
            pathIndex: 0,
            commandIndex: 0
        };
    for (; i < t.segments.length;) {
        if (r >= e.length) return s;
        let o = t.segments[i],
            a = e[r];
        if (je(a)) break;
        let u = `${a}`,
            c = r < e.length - 1 ? e[r + 1] : null;
        if (i > 0 && u === void 0) break;
        if (u && c && typeof c == "object" && c.outlets === void 0) {
            if (!hn(u, c, o)) return s;
            r += 2
        } else {
            if (!hn(u, {}, o)) return s;
            r++
        }
        i++
    }
    return {
        match: !0,
        pathIndex: i,
        commandIndex: r
    }
}

function Jt(t, n, e) {
    let r = t.segments.slice(0, n),
        i = 0;
    for (; i < e.length;) {
        let s = e[i];
        if (je(s)) {
            let u = Ni(s.outlets);
            return new g(r, u)
        }
        if (i === 0 && ut(e[0])) {
            let u = t.segments[n];
            r.push(new Y(u.path, ln(e[0]))), i++;
            continue
        }
        let o = je(s) ? s.outlets[f] : `${s}`,
            a = i < e.length - 1 ? e[i + 1] : null;
        o && a && ut(a) ? (r.push(new Y(o, ln(a))), i += 2) : (r.push(new Y(o, {})), i++)
    }
    return new g(r, {})
}

function Ni(t) {
    let n = {};
    return Object.entries(t).forEach(([e, r]) => {
        typeof r == "string" && (r = [r]), r !== null && (n[e] = Jt(new g([], {}), 0, r))
    }), n
}

function ln(t) {
    let n = {};
    return Object.entries(t).forEach(([e, r]) => n[e] = `${r}`), n
}

function hn(t, n, e) {
    return t == e.path && $(n, e.parameters)
}
var at = "imperative",
    m = function(t) {
        return t[t.NavigationStart = 0] = "NavigationStart", t[t.NavigationEnd = 1] = "NavigationEnd", t[t.NavigationCancel = 2] = "NavigationCancel", t[t.NavigationError = 3] = "NavigationError", t[t.RoutesRecognized = 4] = "RoutesRecognized", t[t.ResolveStart = 5] = "ResolveStart", t[t.ResolveEnd = 6] = "ResolveEnd", t[t.GuardsCheckStart = 7] = "GuardsCheckStart", t[t.GuardsCheckEnd = 8] = "GuardsCheckEnd", t[t.RouteConfigLoadStart = 9] = "RouteConfigLoadStart", t[t.RouteConfigLoadEnd = 10] = "RouteConfigLoadEnd", t[t.ChildActivationStart = 11] = "ChildActivationStart", t[t.ChildActivationEnd = 12] = "ChildActivationEnd", t[t.ActivationStart = 13] = "ActivationStart", t[t.ActivationEnd = 14] = "ActivationEnd", t[t.Scroll = 15] = "Scroll", t[t.NavigationSkipped = 16] = "NavigationSkipped", t
    }(m || {}),
    D = class {
        id;
        url;
        constructor(n, e) {
            this.id = n, this.url = e
        }
    },
    ee = class extends D {
        type = m.NavigationStart;
        navigationTrigger;
        restoredState;
        constructor(n, e, r = "imperative", i = null) {
            super(n, e), this.navigationTrigger = r, this.restoredState = i
        }
        toString() {
            return `NavigationStart(id: ${this.id}, url: '${this.url}')`
        }
    },
    E = class extends D {
        urlAfterRedirects;
        type = m.NavigationEnd;
        constructor(n, e, r) {
            super(n, e), this.urlAfterRedirects = r
        }
        toString() {
            return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`
        }
    },
    T = function(t) {
        return t[t.Redirect = 0] = "Redirect", t[t.SupersededByNewNavigation = 1] = "SupersededByNewNavigation", t[t.NoDataFromResolver = 2] = "NoDataFromResolver", t[t.GuardRejected = 3] = "GuardRejected", t
    }(T || {}),
    Se = function(t) {
        return t[t.IgnoredSameUrlNavigation = 0] = "IgnoredSameUrlNavigation", t[t.IgnoredByUrlHandlingStrategy = 1] = "IgnoredByUrlHandlingStrategy", t
    }(Se || {}),
    z = class extends D {
        reason;
        code;
        type = m.NavigationCancel;
        constructor(n, e, r, i) {
            super(n, e), this.reason = r, this.code = i
        }
        toString() {
            return `NavigationCancel(id: ${this.id}, url: '${this.url}')`
        }
    },
    q = class extends D {
        reason;
        code;
        type = m.NavigationSkipped;
        constructor(n, e, r, i) {
            super(n, e), this.reason = r, this.code = i
        }
    },
    ye = class extends D {
        error;
        target;
        type = m.NavigationError;
        constructor(n, e, r, i) {
            super(n, e), this.error = r, this.target = i
        }
        toString() {
            return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`
        }
    },
    ke = class extends D {
        urlAfterRedirects;
        state;
        type = m.RoutesRecognized;
        constructor(n, e, r, i) {
            super(n, e), this.urlAfterRedirects = r, this.state = i
        }
        toString() {
            return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`
        }
    },
    lt = class extends D {
        urlAfterRedirects;
        state;
        type = m.GuardsCheckStart;
        constructor(n, e, r, i) {
            super(n, e), this.urlAfterRedirects = r, this.state = i
        }
        toString() {
            return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`
        }
    },
    ht = class extends D {
        urlAfterRedirects;
        state;
        shouldActivate;
        type = m.GuardsCheckEnd;
        constructor(n, e, r, i, s) {
            super(n, e), this.urlAfterRedirects = r, this.state = i, this.shouldActivate = s
        }
        toString() {
            return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`
        }
    },
    dt = class extends D {
        urlAfterRedirects;
        state;
        type = m.ResolveStart;
        constructor(n, e, r, i) {
            super(n, e), this.urlAfterRedirects = r, this.state = i
        }
        toString() {
            return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`
        }
    },
    ft = class extends D {
        urlAfterRedirects;
        state;
        type = m.ResolveEnd;
        constructor(n, e, r, i) {
            super(n, e), this.urlAfterRedirects = r, this.state = i
        }
        toString() {
            return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`
        }
    },
    pt = class {
        route;
        type = m.RouteConfigLoadStart;
        constructor(n) {
            this.route = n
        }
        toString() {
            return `RouteConfigLoadStart(path: ${this.route.path})`
        }
    },
    gt = class {
        route;
        type = m.RouteConfigLoadEnd;
        constructor(n) {
            this.route = n
        }
        toString() {
            return `RouteConfigLoadEnd(path: ${this.route.path})`
        }
    },
    vt = class {
        snapshot;
        type = m.ChildActivationStart;
        constructor(n) {
            this.snapshot = n
        }
        toString() {
            return `ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`
        }
    },
    mt = class {
        snapshot;
        type = m.ChildActivationEnd;
        constructor(n) {
            this.snapshot = n
        }
        toString() {
            return `ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`
        }
    },
    Rt = class {
        snapshot;
        type = m.ActivationStart;
        constructor(n) {
            this.snapshot = n
        }
        toString() {
            return `ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`
        }
    },
    St = class {
        snapshot;
        type = m.ActivationEnd;
        constructor(n) {
            this.snapshot = n
        }
        toString() {
            return `ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`
        }
    },
    Ce = class {
        routerEvent;
        position;
        anchor;
        type = m.Scroll;
        constructor(n, e, r) {
            this.routerEvent = n, this.position = e, this.anchor = r
        }
        toString() {
            let n = this.position ? `${this.position[0]}, ${this.position[1]}` : null;
            return `Scroll(anchor: '${this.anchor}', position: '${n}')`
        }
    },
    Le = class {},
    we = class {
        url;
        navigationBehaviorOptions;
        constructor(n, e) {
            this.url = n, this.navigationBehaviorOptions = e
        }
    };

function Pi(t, n) {
    return t.providers && !t._injector && (t._injector = Je(t.providers, n, `Route: ${t.path}`)), t._injector ? ? n
}

function _(t) {
    return t.outlet || f
}

function xi(t, n) {
    let e = t.filter(r => _(r) === n);
    return e.push(...t.filter(r => _(r) !== n)), e
}

function He(t) {
    if (!t) return null;
    if (t.routeConfig ? ._injector) return t.routeConfig._injector;
    for (let n = t.parent; n; n = n.parent) {
        let e = n.routeConfig;
        if (e ? ._loadedInjector) return e._loadedInjector;
        if (e ? ._injector) return e._injector
    }
    return null
}
var yt = class {
        rootInjector;
        outlet = null;
        route = null;
        children;
        attachRef = null;
        get injector() {
            return He(this.route ? .snapshot) ? ? this.rootInjector
        }
        constructor(n) {
            this.rootInjector = n, this.children = new le(this.rootInjector)
        }
    },
    le = (() => {
        class t {
            rootInjector;
            contexts = new Map;
            constructor(e) {
                this.rootInjector = e
            }
            onChildOutletCreated(e, r) {
                let i = this.getOrCreateContext(e);
                i.outlet = r, this.contexts.set(e, i)
            }
            onChildOutletDestroyed(e) {
                let r = this.getContext(e);
                r && (r.outlet = null, r.attachRef = null)
            }
            onOutletDeactivated() {
                let e = this.contexts;
                return this.contexts = new Map, e
            }
            onOutletReAttached(e) {
                this.contexts = e
            }
            getOrCreateContext(e) {
                let r = this.getContext(e);
                return r || (r = new yt(this.rootInjector), this.contexts.set(e, r)), r
            }
            getContext(e) {
                return this.contexts.get(e) || null
            }
            static\ u0275fac = function(r) {
                return new(r || t)(Z(fe))
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })(),
    Ct = class {
        _root;
        constructor(n) {
            this._root = n
        }
        get root() {
            return this._root.value
        }
        parent(n) {
            let e = this.pathFromRoot(n);
            return e.length > 1 ? e[e.length - 2] : null
        }
        children(n) {
            let e = er(n, this._root);
            return e ? e.children.map(r => r.value) : []
        }
        firstChild(n) {
            let e = er(n, this._root);
            return e && e.children.length > 0 ? e.children[0].value : null
        }
        siblings(n) {
            let e = tr(n, this._root);
            return e.length < 2 ? [] : e[e.length - 2].children.map(i => i.value).filter(i => i !== n)
        }
        pathFromRoot(n) {
            return tr(n, this._root).map(e => e.value)
        }
    };

function er(t, n) {
    if (t === n.value) return n;
    for (let e of n.children) {
        let r = er(t, e);
        if (r) return r
    }
    return null
}

function tr(t, n) {
    if (t === n.value) return [n];
    for (let e of n.children) {
        let r = tr(t, e);
        if (r.length) return r.unshift(n), r
    }
    return []
}
var M = class {
    value;
    children;
    constructor(n, e) {
        this.value = n, this.children = e
    }
    toString() {
        return `TreeNode(${this.value})`
    }
};

function ve(t) {
    let n = {};
    return t && t.children.forEach(e => n[e.value.outlet] = e), n
}
var $e = class extends Ct {
    snapshot;
    constructor(n, e) {
        super(n), this.snapshot = e, cr(this, n)
    }
    toString() {
        return this.snapshot.toString()
    }
};

function Un(t) {
    let n = _i(t),
        e = new N([new Y("", {})]),
        r = new N({}),
        i = new N({}),
        s = new N({}),
        o = new N(""),
        a = new B(e, r, s, o, i, f, t, n.root);
    return a.snapshot = n.root, new $e(new M(a, []), n)
}

function _i(t) {
    let n = {},
        e = {},
        r = {},
        i = "",
        s = new ae([], n, r, i, e, f, t, null, {});
    return new ze("", new M(s, []))
}
var B = class {
    urlSubject;
    paramsSubject;
    queryParamsSubject;
    fragmentSubject;
    dataSubject;
    outlet;
    component;
    snapshot;
    _futureSnapshot;
    _routerState;
    _paramMap;
    _queryParamMap;
    title;
    url;
    params;
    queryParams;
    fragment;
    data;
    constructor(n, e, r, i, s, o, a, u) {
        this.urlSubject = n, this.paramsSubject = e, this.queryParamsSubject = r, this.fragmentSubject = i, this.dataSubject = s, this.outlet = o, this.component = a, this._futureSnapshot = u, this.title = this.dataSubject ? .pipe(v(c => c[Ve])) ? ? h(void 0), this.url = n, this.params = e, this.queryParams = r, this.fragment = i, this.data = s
    }
    get routeConfig() {
        return this._futureSnapshot.routeConfig
    }
    get root() {
        return this._routerState.root
    }
    get parent() {
        return this._routerState.parent(this)
    }
    get firstChild() {
        return this._routerState.firstChild(this)
    }
    get children() {
        return this._routerState.children(this)
    }
    get pathFromRoot() {
        return this._routerState.pathFromRoot(this)
    }
    get paramMap() {
        return this._paramMap ? ? = this.params.pipe(v(n => ue(n))), this._paramMap
    }
    get queryParamMap() {
        return this._queryParamMap ? ? = this.queryParams.pipe(v(n => ue(n))), this._queryParamMap
    }
    toString() {
        return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`
    }
};

function wt(t, n, e = "emptyOnly") {
    let r, {
        routeConfig: i
    } = t;
    return n !== null && (e === "always" || i ? .path === "" || !n.component && !n.routeConfig ? .loadComponent) ? r = {
        params: l(l({}, n.params), t.params),
        data: l(l({}, n.data), t.data),
        resolve: l(l(l(l({}, t.data), n.data), i ? .data), t._resolvedData)
    } : r = {
        params: l({}, t.params),
        data: l({}, t.data),
        resolve: l(l({}, t.data), t._resolvedData ? ? {})
    }, i && Pn(i) && (r.resolve[Ve] = i.title), r
}
var ae = class {
        url;
        params;
        queryParams;
        fragment;
        data;
        outlet;
        component;
        routeConfig;
        _resolve;
        _resolvedData;
        _routerState;
        _paramMap;
        _queryParamMap;
        get title() {
            return this.data ? .[Ve]
        }
        constructor(n, e, r, i, s, o, a, u, c) {
            this.url = n, this.params = e, this.queryParams = r, this.fragment = i, this.data = s, this.outlet = o, this.component = a, this.routeConfig = u, this._resolve = c
        }
        get root() {
            return this._routerState.root
        }
        get parent() {
            return this._routerState.parent(this)
        }
        get firstChild() {
            return this._routerState.firstChild(this)
        }
        get children() {
            return this._routerState.children(this)
        }
        get pathFromRoot() {
            return this._routerState.pathFromRoot(this)
        }
        get paramMap() {
            return this._paramMap ? ? = ue(this.params), this._paramMap
        }
        get queryParamMap() {
            return this._queryParamMap ? ? = ue(this.queryParams), this._queryParamMap
        }
        toString() {
            let n = this.url.map(r => r.toString()).join("/"),
                e = this.routeConfig ? this.routeConfig.path : "";
            return `Route(url:'${n}', path:'${e}')`
        }
    },
    ze = class extends Ct {
        url;
        constructor(n, e) {
            super(e), this.url = n, cr(this, e)
        }
        toString() {
            return Nn(this._root)
        }
    };

function cr(t, n) {
    n.value._routerState = t, n.children.forEach(e => cr(t, e))
}

function Nn(t) {
    let n = t.children.length > 0 ? ` { ${t.children.map(Nn).join(", ")} } ` : "";
    return `${t.value}${n}`
}

function Gt(t) {
    if (t.snapshot) {
        let n = t.snapshot,
            e = t._futureSnapshot;
        t.snapshot = e, $(n.queryParams, e.queryParams) || t.queryParamsSubject.next(e.queryParams), n.fragment !== e.fragment && t.fragmentSubject.next(e.fragment), $(n.params, e.params) || t.paramsSubject.next(e.params), ci(n.url, e.url) || t.urlSubject.next(e.url), $(n.data, e.data) || t.dataSubject.next(e.data)
    } else t.snapshot = t._futureSnapshot, t.dataSubject.next(t._futureSnapshot.data)
}

function rr(t, n) {
    let e = $(t.params, n.params) && fi(t.url, n.url),
        r = !t.parent != !n.parent;
    return e && !r && (!t.parent || rr(t.parent, n.parent))
}

function Pn(t) {
    return typeof t.title == "string" || t.title === null
}
var xn = new A(""),
    lr = (() => {
        class t {
            activated = null;
            get activatedComponentRef() {
                return this.activated
            }
            _activatedRoute = null;
            name = f;
            activateEvents = new oe;
            deactivateEvents = new oe;
            attachEvents = new oe;
            detachEvents = new oe;
            routerOutletData = _r(void 0);
            parentContexts = d(le);
            location = d(zr);
            changeDetector = d(et);
            inputBinder = d(We, {
                optional: !0
            });
            supportsBindingToComponentInputs = !0;
            ngOnChanges(e) {
                if (e.name) {
                    let {
                        firstChange: r,
                        previousValue: i
                    } = e.name;
                    if (r) return;
                    this.isTrackedInParentContexts(i) && (this.deactivate(), this.parentContexts.onChildOutletDestroyed(i)), this.initializeOutletWithName()
                }
            }
            ngOnDestroy() {
                this.isTrackedInParentContexts(this.name) && this.parentContexts.onChildOutletDestroyed(this.name), this.inputBinder ? .unsubscribeFromRouteData(this)
            }
            isTrackedInParentContexts(e) {
                return this.parentContexts.getContext(e) ? .outlet === this
            }
            ngOnInit() {
                this.initializeOutletWithName()
            }
            initializeOutletWithName() {
                if (this.parentContexts.onChildOutletCreated(this.name, this), this.activated) return;
                let e = this.parentContexts.getContext(this.name);
                e ? .route && (e.attachRef ? this.attach(e.attachRef, e.route) : this.activateWith(e.route, e.injector))
            }
            get isActivated() {
                return !!this.activated
            }
            get component() {
                if (!this.activated) throw new C(4012, !1);
                return this.activated.instance
            }
            get activatedRoute() {
                if (!this.activated) throw new C(4012, !1);
                return this._activatedRoute
            }
            get activatedRouteData() {
                return this._activatedRoute ? this._activatedRoute.snapshot.data : {}
            }
            detach() {
                if (!this.activated) throw new C(4012, !1);
                this.location.detach();
                let e = this.activated;
                return this.activated = null, this._activatedRoute = null, this.detachEvents.emit(e.instance), e
            }
            attach(e, r) {
                this.activated = e, this._activatedRoute = r, this.location.insert(e.hostView), this.inputBinder ? .bindActivatedRouteToOutletComponent(this), this.attachEvents.emit(e.instance)
            }
            deactivate() {
                if (this.activated) {
                    let e = this.component;
                    this.activated.destroy(), this.activated = null, this._activatedRoute = null, this.deactivateEvents.emit(e)
                }
            }
            activateWith(e, r) {
                if (this.isActivated) throw new C(4013, !1);
                this._activatedRoute = e;
                let i = this.location,
                    o = e.snapshot.component,
                    a = this.parentContexts.getOrCreateContext(this.name).children,
                    u = new nr(e, a, i.injector, this.routerOutletData);
                this.activated = i.createComponent(o, {
                    index: i.length,
                    injector: u,
                    environmentInjector: r
                }), this.changeDetector.markForCheck(), this.inputBinder ? .bindActivatedRouteToOutletComponent(this), this.activateEvents.emit(this.activated.instance)
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275dir = Ee({
                type: t,
                selectors: [
                    ["router-outlet"]
                ],
                inputs: {
                    name: "name",
                    routerOutletData: [1, "routerOutletData"]
                },
                outputs: {
                    activateEvents: "activate",
                    deactivateEvents: "deactivate",
                    attachEvents: "attach",
                    detachEvents: "detach"
                },
                exportAs: ["outlet"],
                features: [De]
            })
        }
        return t
    })(),
    nr = class {
        route;
        childContexts;
        parent;
        outletData;
        constructor(n, e, r, i) {
            this.route = n, this.childContexts = e, this.parent = r, this.outletData = i
        }
        get(n, e) {
            return n === B ? this.route : n === le ? this.childContexts : n === xn ? this.outletData : this.parent.get(n, e)
        }
    },
    We = new A(""),
    hr = (() => {
        class t {
            outletDataSubscriptions = new Map;
            bindActivatedRouteToOutletComponent(e) {
                this.unsubscribeFromRouteData(e), this.subscribeToRouteData(e)
            }
            unsubscribeFromRouteData(e) {
                this.outletDataSubscriptions.get(e) ? .unsubscribe(), this.outletDataSubscriptions.delete(e)
            }
            subscribeToRouteData(e) {
                let {
                    activatedRoute: r
                } = e, i = Ze([r.queryParams, r.params, r.data]).pipe(P(([s, o, a], u) => (a = l(l(l({}, s), o), a), u === 0 ? h(a) : Promise.resolve(a)))).subscribe(s => {
                    if (!e.isActivated || !e.activatedComponentRef || e.activatedRoute !== r || r.component === null) {
                        this.unsubscribeFromRouteData(e);
                        return
                    }
                    let o = en(r.component);
                    if (!o) {
                        this.unsubscribeFromRouteData(e);
                        return
                    }
                    for (let {
                            templateName: a
                        } of o.inputs) e.activatedComponentRef.setInput(a, s[a])
                });
                this.outletDataSubscriptions.set(e, i)
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac
            })
        }
        return t
    })(),
    dr = (() => {
        class t {
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275cmp = qr({
                type: t,
                selectors: [
                    ["ng-component"]
                ],
                exportAs: ["emptyRouterOutlet"],
                decls: 1,
                vars: 0,
                template: function(r, i) {
                    r & 1 && Qr(0, "router-outlet")
                },
                dependencies: [lr],
                encapsulation: 2
            })
        }
        return t
    })();

function fr(t) {
    let n = t.children && t.children.map(fr),
        e = n ? U(l({}, t), {
            children: n
        }) : l({}, t);
    return !e.component && !e.loadComponent && (n || e.loadChildren) && e.outlet && e.outlet !== f && (e.component = dr), e
}

function ji(t, n, e) {
    let r = Fe(t, n._root, e ? e._root : void 0);
    return new $e(r, n)
}

function Fe(t, n, e) {
    if (e && t.shouldReuseRoute(n.value, e.value.snapshot)) {
        let r = e.value;
        r._futureSnapshot = n.value;
        let i = ki(t, n, e);
        return new M(r, i)
    } else {
        if (t.shouldAttach(n.value)) {
            let s = t.retrieve(n.value);
            if (s !== null) {
                let o = s.route;
                return o.value._futureSnapshot = n.value, o.children = n.children.map(a => Fe(t, a)), o
            }
        }
        let r = Li(n.value),
            i = n.children.map(s => Fe(t, s));
        return new M(r, i)
    }
}

function ki(t, n, e) {
    return n.children.map(r => {
        for (let i of e.children)
            if (t.shouldReuseRoute(r.value, i.value.snapshot)) return Fe(t, r, i);
        return Fe(t, r)
    })
}

function Li(t) {
    return new B(new N(t.url), new N(t.params), new N(t.queryParams), new N(t.fragment), new N(t.data), t.outlet, t.component, t)
}
var be = class {
        redirectTo;
        navigationBehaviorOptions;
        constructor(n, e) {
            this.redirectTo = n, this.navigationBehaviorOptions = e
        }
    },
    _n = "ngNavigationCancelingError";

function bt(t, n) {
    let {
        redirectTo: e,
        navigationBehaviorOptions: r
    } = J(n) ? {
        redirectTo: n,
        navigationBehaviorOptions: void 0
    } : n, i = jn(!1, T.Redirect);
    return i.url = e, i.navigationBehaviorOptions = r, i
}

function jn(t, n) {
    let e = new Error(`NavigationCancelingError: ${t||""}`);
    return e[_n] = !0, e.cancellationCode = n, e
}

function $i(t) {
    return kn(t) && J(t.url)
}

function kn(t) {
    return !!t && t[_n]
}
var zi = (t, n, e, r) => v(i => (new ir(n, i.targetRouterState, i.currentRouterState, e, r).activate(t), i)),
    ir = class {
        routeReuseStrategy;
        futureState;
        currState;
        forwardEvent;
        inputBindingEnabled;
        constructor(n, e, r, i, s) {
            this.routeReuseStrategy = n, this.futureState = e, this.currState = r, this.forwardEvent = i, this.inputBindingEnabled = s
        }
        activate(n) {
            let e = this.futureState._root,
                r = this.currState ? this.currState._root : null;
            this.deactivateChildRoutes(e, r, n), Gt(this.futureState.root), this.activateChildRoutes(e, r, n)
        }
        deactivateChildRoutes(n, e, r) {
            let i = ve(e);
            n.children.forEach(s => {
                let o = s.value.outlet;
                this.deactivateRoutes(s, i[o], r), delete i[o]
            }), Object.values(i).forEach(s => {
                this.deactivateRouteAndItsChildren(s, r)
            })
        }
        deactivateRoutes(n, e, r) {
            let i = n.value,
                s = e ? e.value : null;
            if (i === s)
                if (i.component) {
                    let o = r.getContext(i.outlet);
                    o && this.deactivateChildRoutes(n, e, o.children)
                } else this.deactivateChildRoutes(n, e, r);
            else s && this.deactivateRouteAndItsChildren(e, r)
        }
        deactivateRouteAndItsChildren(n, e) {
            n.value.component && this.routeReuseStrategy.shouldDetach(n.value.snapshot) ? this.detachAndStoreRouteSubtree(n, e) : this.deactivateRouteAndOutlet(n, e)
        }
        detachAndStoreRouteSubtree(n, e) {
            let r = e.getContext(n.value.outlet),
                i = r && n.value.component ? r.children : e,
                s = ve(n);
            for (let o of Object.values(s)) this.deactivateRouteAndItsChildren(o, i);
            if (r && r.outlet) {
                let o = r.outlet.detach(),
                    a = r.children.onOutletDeactivated();
                this.routeReuseStrategy.store(n.value.snapshot, {
                    componentRef: o,
                    route: n,
                    contexts: a
                })
            }
        }
        deactivateRouteAndOutlet(n, e) {
            let r = e.getContext(n.value.outlet),
                i = r && n.value.component ? r.children : e,
                s = ve(n);
            for (let o of Object.values(s)) this.deactivateRouteAndItsChildren(o, i);
            r && (r.outlet && (r.outlet.deactivate(), r.children.onOutletDeactivated()), r.attachRef = null, r.route = null)
        }
        activateChildRoutes(n, e, r) {
            let i = ve(e);
            n.children.forEach(s => {
                this.activateRoutes(s, i[s.value.outlet], r), this.forwardEvent(new St(s.value.snapshot))
            }), n.children.length && this.forwardEvent(new mt(n.value.snapshot))
        }
        activateRoutes(n, e, r) {
            let i = n.value,
                s = e ? e.value : null;
            if (Gt(i), i === s)
                if (i.component) {
                    let o = r.getOrCreateContext(i.outlet);
                    this.activateChildRoutes(n, e, o.children)
                } else this.activateChildRoutes(n, e, r);
            else if (i.component) {
                let o = r.getOrCreateContext(i.outlet);
                if (this.routeReuseStrategy.shouldAttach(i.snapshot)) {
                    let a = this.routeReuseStrategy.retrieve(i.snapshot);
                    this.routeReuseStrategy.store(i.snapshot, null), o.children.onOutletReAttached(a.contexts), o.attachRef = a.componentRef, o.route = a.route.value, o.outlet && o.outlet.attach(a.componentRef, a.route.value), Gt(a.route.value), this.activateChildRoutes(n, null, o.children)
                } else o.attachRef = null, o.route = i, o.outlet && o.outlet.activateWith(i, o.injector), this.activateChildRoutes(n, null, o.children)
            } else this.activateChildRoutes(n, null, r)
        }
    },
    It = class {
        path;
        route;
        constructor(n) {
            this.path = n, this.route = this.path[this.path.length - 1]
        }
    },
    Re = class {
        component;
        route;
        constructor(n, e) {
            this.component = n, this.route = e
        }
    };

function Fi(t, n, e) {
    let r = t._root,
        i = n ? n._root : null;
    return Pe(r, i, e, [r.value])
}

function qi(t) {
    let n = t.routeConfig ? t.routeConfig.canActivateChild : null;
    return !n || n.length === 0 ? null : {
        node: t,
        guards: n
    }
}

function Ae(t, n) {
    let e = Symbol(),
        r = n.get(t, e);
    return r === e ? typeof t == "function" && !Er(t) ? t : n.get(t) : r
}

function Pe(t, n, e, r, i = {
    canDeactivateChecks: [],
    canActivateChecks: []
}) {
    let s = ve(n);
    return t.children.forEach(o => {
        Bi(o, s[o.value.outlet], e, r.concat([o.value]), i), delete s[o.value.outlet]
    }), Object.entries(s).forEach(([o, a]) => _e(a, e.getContext(o), i)), i
}

function Bi(t, n, e, r, i = {
    canDeactivateChecks: [],
    canActivateChecks: []
}) {
    let s = t.value,
        o = n ? n.value : null,
        a = e ? e.getContext(t.value.outlet) : null;
    if (o && s.routeConfig === o.routeConfig) {
        let u = Vi(o, s, s.routeConfig.runGuardsAndResolvers);
        u ? i.canActivateChecks.push(new It(r)) : (s.data = o.data, s._resolvedData = o._resolvedData), s.component ? Pe(t, n, a ? a.children : null, r, i) : Pe(t, n, e, r, i), u && a && a.outlet && a.outlet.isActivated && i.canDeactivateChecks.push(new Re(a.outlet.component, o))
    } else o && _e(n, a, i), i.canActivateChecks.push(new It(r)), s.component ? Pe(t, null, a ? a.children : null, r, i) : Pe(t, null, e, r, i);
    return i
}

function Vi(t, n, e) {
    if (typeof e == "function") return e(t, n);
    switch (e) {
        case "pathParamsChange":
            return !se(t.url, n.url);
        case "pathParamsOrQueryParamsChange":
            return !se(t.url, n.url) || !$(t.queryParams, n.queryParams);
        case "always":
            return !0;
        case "paramsOrQueryParamsChange":
            return !rr(t, n) || !$(t.queryParams, n.queryParams);
        case "paramsChange":
        default:
            return !rr(t, n)
    }
}

function _e(t, n, e) {
    let r = ve(t),
        i = t.value;
    Object.entries(r).forEach(([s, o]) => {
        i.component ? n ? _e(o, n.children.getContext(s), e) : _e(o, null, e) : _e(o, n, e)
    }), i.component ? n && n.outlet && n.outlet.isActivated ? e.canDeactivateChecks.push(new Re(n.outlet.component, i)) : e.canDeactivateChecks.push(new Re(null, i)) : e.canDeactivateChecks.push(new Re(null, i))
}

function Ge(t) {
    return typeof t == "function"
}

function Hi(t) {
    return typeof t == "boolean"
}

function Wi(t) {
    return t && Ge(t.canLoad)
}

function Gi(t) {
    return t && Ge(t.canActivate)
}

function Qi(t) {
    return t && Ge(t.canActivateChild)
}

function Ki(t) {
    return t && Ge(t.canDeactivate)
}

function Zi(t) {
    return t && Ge(t.canMatch)
}

function Ln(t) {
    return t instanceof br || t ? .name === "EmptyError"
}
var nt = Symbol("INITIAL_VALUE");

function Ie() {
    return P(t => Ze(t.map(n => n.pipe(de(1), Or(nt)))).pipe(v(n => {
        for (let e of n)
            if (e !== !0) {
                if (e === nt) return nt;
                if (e === !1 || Yi(e)) return e
            }
        return !0
    }), Q(n => n !== nt), de(1)))
}

function Yi(t) {
    return J(t) || t instanceof be
}

function Xi(t, n) {
    return I(e => {
        let {
            targetSnapshot: r,
            currentSnapshot: i,
            guards: {
                canActivateChecks: s,
                canDeactivateChecks: o
            }
        } = e;
        return o.length === 0 && s.length === 0 ? h(U(l({}, e), {
            guardsResult: !0
        })) : Ji(o, r, i, t).pipe(I(a => a && Hi(a) ? eo(r, s, t, n) : h(a)), v(a => U(l({}, e), {
            guardsResult: a
        })))
    })
}

function Ji(t, n, e, r) {
    return b(t).pipe(I(i => oo(i.component, i.route, e, n, r)), K(i => i !== !0, !0))
}

function eo(t, n, e, r) {
    return b(n).pipe(ie(i => Ir(ro(i.route.parent, r), to(i.route, r), io(t, i.path, e), no(t, i.route, e))), K(i => i !== !0, !0))
}

function to(t, n) {
    return t !== null && n && n(new Rt(t)), h(!0)
}

function ro(t, n) {
    return t !== null && n && n(new vt(t)), h(!0)
}

function no(t, n, e) {
    let r = n.routeConfig ? n.routeConfig.canActivate : null;
    if (!r || r.length === 0) return h(!0);
    let i = r.map(s => _t(() => {
        let o = He(n) ? ? e,
            a = Ae(s, o),
            u = Gi(a) ? a.canActivate(n, t) : L(o, () => a(n, t));
        return te(u).pipe(K())
    }));
    return h(i).pipe(Ie())
}

function io(t, n, e) {
    let r = n[n.length - 1],
        s = n.slice(0, n.length - 1).reverse().map(o => qi(o)).filter(o => o !== null).map(o => _t(() => {
            let a = o.guards.map(u => {
                let c = He(o.node) ? ? e,
                    p = Ae(u, c),
                    S = Qi(p) ? p.canActivateChild(r, t) : L(c, () => p(r, t));
                return te(S).pipe(K())
            });
            return h(a).pipe(Ie())
        }));
    return h(s).pipe(Ie())
}

function oo(t, n, e, r, i) {
    let s = n && n.routeConfig ? n.routeConfig.canDeactivate : null;
    if (!s || s.length === 0) return h(!0);
    let o = s.map(a => {
        let u = He(n) ? ? i,
            c = Ae(a, u),
            p = Ki(c) ? c.canDeactivate(t, n, e, r) : L(u, () => c(t, n, e, r));
        return te(p).pipe(K())
    });
    return h(o).pipe(Ie())
}

function so(t, n, e, r) {
    let i = n.canLoad;
    if (i === void 0 || i.length === 0) return h(!0);
    let s = i.map(o => {
        let a = Ae(o, t),
            u = Wi(a) ? a.canLoad(n, e) : L(t, () => a(n, e));
        return te(u)
    });
    return h(s).pipe(Ie(), $n(r))
}

function $n(t) {
    return Cr(y(n => {
        if (typeof n != "boolean") throw bt(t, n)
    }), v(n => n === !0))
}

function ao(t, n, e, r) {
    let i = n.canMatch;
    if (!i || i.length === 0) return h(!0);
    let s = i.map(o => {
        let a = Ae(o, t),
            u = Zi(a) ? a.canMatch(n, e) : L(t, () => a(n, e));
        return te(u)
    });
    return h(s).pipe(Ie(), $n(r))
}
var qe = class {
        segmentGroup;
        constructor(n) {
            this.segmentGroup = n || null
        }
    },
    Be = class extends Error {
        urlTree;
        constructor(n) {
            super(), this.urlTree = n
        }
    };

function ge(t) {
    return Oe(new qe(t))
}

function uo(t) {
    return Oe(new C(4e3, !1))
}

function co(t) {
    return Oe(jn(!1, T.GuardRejected))
}
var or = class {
        urlSerializer;
        urlTree;
        constructor(n, e) {
            this.urlSerializer = n, this.urlTree = e
        }
        lineralizeSegments(n, e) {
            let r = [],
                i = e.root;
            for (;;) {
                if (r = r.concat(i.segments), i.numberOfChildren === 0) return h(r);
                if (i.numberOfChildren > 1 || !i.children[f]) return uo(`${n.redirectTo}`);
                i = i.children[f]
            }
        }
        applyRedirectCommands(n, e, r, i, s) {
            if (typeof e != "string") {
                let a = e,
                    {
                        queryParams: u,
                        fragment: c,
                        routeConfig: p,
                        url: S,
                        outlet: O,
                        params: k,
                        data: w,
                        title: G
                    } = i,
                    V = L(s, () => a({
                        params: k,
                        data: w,
                        queryParams: u,
                        fragment: c,
                        routeConfig: p,
                        url: S,
                        outlet: O,
                        title: G
                    }));
                if (V instanceof F) throw new Be(V);
                e = V
            }
            let o = this.applyRedirectCreateUrlTree(e, this.urlSerializer.parse(e), n, r);
            if (e[0] === "/") throw new Be(o);
            return o
        }
        applyRedirectCreateUrlTree(n, e, r, i) {
            let s = this.createSegmentGroup(n, e.root, r, i);
            return new F(s, this.createQueryParams(e.queryParams, this.urlTree.queryParams), e.fragment)
        }
        createQueryParams(n, e) {
            let r = {};
            return Object.entries(n).forEach(([i, s]) => {
                if (typeof s == "string" && s[0] === ":") {
                    let a = s.substring(1);
                    r[i] = e[a]
                } else r[i] = s
            }), r
        }
        createSegmentGroup(n, e, r, i) {
            let s = this.createSegments(n, e.segments, r, i),
                o = {};
            return Object.entries(e.children).forEach(([a, u]) => {
                o[a] = this.createSegmentGroup(n, u, r, i)
            }), new g(s, o)
        }
        createSegments(n, e, r, i) {
            return e.map(s => s.path[0] === ":" ? this.findPosParam(n, s, i) : this.findOrReturn(s, r))
        }
        findPosParam(n, e, r) {
            let i = r[e.path.substring(1)];
            if (!i) throw new C(4001, !1);
            return i
        }
        findOrReturn(n, e) {
            let r = 0;
            for (let i of e) {
                if (i.path === n.path) return e.splice(r), i;
                r++
            }
            return n
        }
    },
    sr = {
        matched: !1,
        consumedSegments: [],
        remainingSegments: [],
        parameters: {},
        positionalParamSegments: {}
    };

function lo(t, n, e, r, i) {
    let s = zn(t, n, e);
    return s.matched ? (r = Pi(n, r), ao(r, n, e, i).pipe(v(o => o === !0 ? s : l({}, sr)))) : h(s)
}

function zn(t, n, e) {
    if (n.path === "**") return ho(e);
    if (n.path === "") return n.pathMatch === "full" && (t.hasChildren() || e.length > 0) ? l({}, sr) : {
        matched: !0,
        consumedSegments: [],
        remainingSegments: e,
        parameters: {},
        positionalParamSegments: {}
    };
    let i = (n.matcher || gn)(e, t, n);
    if (!i) return l({}, sr);
    let s = {};
    Object.entries(i.posParams ? ? {}).forEach(([a, u]) => {
        s[a] = u.path
    });
    let o = i.consumed.length > 0 ? l(l({}, s), i.consumed[i.consumed.length - 1].parameters) : s;
    return {
        matched: !0,
        consumedSegments: i.consumed,
        remainingSegments: e.slice(i.consumed.length),
        parameters: o,
        positionalParamSegments: i.posParams ? ? {}
    }
}

function ho(t) {
    return {
        matched: !0,
        parameters: t.length > 0 ? mn(t).parameters : {},
        consumedSegments: t,
        remainingSegments: [],
        positionalParamSegments: {}
    }
}

function dn(t, n, e, r) {
    return e.length > 0 && go(t, e, r) ? {
        segmentGroup: new g(n, po(r, new g(e, t.children))),
        slicedSegments: []
    } : e.length === 0 && vo(t, e, r) ? {
        segmentGroup: new g(t.segments, fo(t, e, r, t.children)),
        slicedSegments: e
    } : {
        segmentGroup: new g(t.segments, t.children),
        slicedSegments: e
    }
}

function fo(t, n, e, r) {
    let i = {};
    for (let s of e)
        if (Tt(t, n, s) && !r[_(s)]) {
            let o = new g([], {});
            i[_(s)] = o
        }
    return l(l({}, r), i)
}

function po(t, n) {
    let e = {};
    e[f] = n;
    for (let r of t)
        if (r.path === "" && _(r) !== f) {
            let i = new g([], {});
            e[_(r)] = i
        }
    return e
}

function go(t, n, e) {
    return e.some(r => Tt(t, n, r) && _(r) !== f)
}

function vo(t, n, e) {
    return e.some(r => Tt(t, n, r))
}

function Tt(t, n, e) {
    return (t.hasChildren() || n.length > 0) && e.pathMatch === "full" ? !1 : e.path === ""
}

function mo(t, n, e) {
    return n.length === 0 && !t.children[e]
}
var ar = class {};

function Ro(t, n, e, r, i, s, o = "emptyOnly") {
    return new ur(t, n, e, r, i, o, s).recognize()
}
var So = 31,
    ur = class {
        injector;
        configLoader;
        rootComponentType;
        config;
        urlTree;
        paramsInheritanceStrategy;
        urlSerializer;
        applyRedirects;
        absoluteRedirectCount = 0;
        allowRedirects = !0;
        constructor(n, e, r, i, s, o, a) {
            this.injector = n, this.configLoader = e, this.rootComponentType = r, this.config = i, this.urlTree = s, this.paramsInheritanceStrategy = o, this.urlSerializer = a, this.applyRedirects = new or(this.urlSerializer, this.urlTree)
        }
        noMatchError(n) {
            return new C(4002, `'${n.segmentGroup}'`)
        }
        recognize() {
            let n = dn(this.urlTree.root, [], [], this.config).segmentGroup;
            return this.match(n).pipe(v(({
                children: e,
                rootSnapshot: r
            }) => {
                let i = new M(r, e),
                    s = new ze("", i),
                    o = Tn(r, [], this.urlTree.queryParams, this.urlTree.fragment);
                return o.queryParams = this.urlTree.queryParams, s.url = this.urlSerializer.serialize(o), {
                    state: s,
                    tree: o
                }
            }))
        }
        match(n) {
            let e = new ae([], Object.freeze({}), Object.freeze(l({}, this.urlTree.queryParams)), this.urlTree.fragment, Object.freeze({}), f, this.rootComponentType, null, {});
            return this.processSegmentGroup(this.injector, this.config, n, f, e).pipe(v(r => ({
                children: r,
                rootSnapshot: e
            })), ne(r => {
                if (r instanceof Be) return this.urlTree = r.urlTree, this.match(r.urlTree.root);
                throw r instanceof qe ? this.noMatchError(r) : r
            }))
        }
        processSegmentGroup(n, e, r, i, s) {
            return r.segments.length === 0 && r.hasChildren() ? this.processChildren(n, e, r, s) : this.processSegment(n, e, r, r.segments, i, !0, s).pipe(v(o => o instanceof M ? [o] : []))
        }
        processChildren(n, e, r, i) {
            let s = [];
            for (let o of Object.keys(r.children)) o === "primary" ? s.unshift(o) : s.push(o);
            return b(s).pipe(ie(o => {
                let a = r.children[o],
                    u = xi(e, o);
                return this.processSegmentGroup(n, u, a, o, i)
            }), Tr((o, a) => (o.push(...a), o)), jt(null), Ar(), I(o => {
                if (o === null) return ge(r);
                let a = Fn(o);
                return yo(a), h(a)
            }))
        }
        processSegment(n, e, r, i, s, o, a) {
            return b(e).pipe(ie(u => this.processSegmentAgainstRoute(u._injector ? ? n, e, u, r, i, s, o, a).pipe(ne(c => {
                if (c instanceof qe) return h(null);
                throw c
            }))), K(u => !!u), ne(u => {
                if (Ln(u)) return mo(r, i, s) ? h(new ar) : ge(r);
                throw u
            }))
        }
        processSegmentAgainstRoute(n, e, r, i, s, o, a, u) {
            return _(r) !== o && (o === f || !Tt(i, s, r)) ? ge(i) : r.redirectTo === void 0 ? this.matchSegmentAgainstRoute(n, i, r, s, o, u) : this.allowRedirects && a ? this.expandSegmentAgainstRouteUsingRedirect(n, i, e, r, s, o, u) : ge(i)
        }
        expandSegmentAgainstRouteUsingRedirect(n, e, r, i, s, o, a) {
            let {
                matched: u,
                parameters: c,
                consumedSegments: p,
                positionalParamSegments: S,
                remainingSegments: O
            } = zn(e, i, s);
            if (!u) return ge(e);
            typeof i.redirectTo == "string" && i.redirectTo[0] === "/" && (this.absoluteRedirectCount++, this.absoluteRedirectCount > So && (this.allowRedirects = !1));
            let k = new ae(s, c, Object.freeze(l({}, this.urlTree.queryParams)), this.urlTree.fragment, fn(i), _(i), i.component ? ? i._loadedComponent ? ? null, i, pn(i)),
                w = wt(k, a, this.paramsInheritanceStrategy);
            k.params = Object.freeze(w.params), k.data = Object.freeze(w.data);
            let G = this.applyRedirects.applyRedirectCommands(p, i.redirectTo, S, k, n);
            return this.applyRedirects.lineralizeSegments(i, G).pipe(I(V => this.processSegment(n, r, e, V.concat(O), o, !1, a)))
        }
        matchSegmentAgainstRoute(n, e, r, i, s, o) {
            let a = lo(e, r, i, n, this.urlSerializer);
            return r.path === "**" && (e.children = {}), a.pipe(P(u => u.matched ? (n = r._injector ? ? n, this.getChildConfig(n, r, i).pipe(P(({
                routes: c
            }) => {
                let p = r._loadedInjector ? ? n,
                    {
                        parameters: S,
                        consumedSegments: O,
                        remainingSegments: k
                    } = u,
                    w = new ae(O, S, Object.freeze(l({}, this.urlTree.queryParams)), this.urlTree.fragment, fn(r), _(r), r.component ? ? r._loadedComponent ? ? null, r, pn(r)),
                    G = wt(w, o, this.paramsInheritanceStrategy);
                w.params = Object.freeze(G.params), w.data = Object.freeze(G.data);
                let {
                    segmentGroup: V,
                    slicedSegments: Nt
                } = dn(e, O, k, c);
                if (Nt.length === 0 && V.hasChildren()) return this.processChildren(p, c, V, w).pipe(v(Ke => new M(w, Ke)));
                if (c.length === 0 && Nt.length === 0) return h(new M(w, []));
                let ai = _(r) === s;
                return this.processSegment(p, c, V, Nt, ai ? f : s, !0, w).pipe(v(Ke => new M(w, Ke instanceof M ? [Ke] : [])))
            }))) : ge(e)))
        }
        getChildConfig(n, e, r) {
            return e.children ? h({
                routes: e.children,
                injector: n
            }) : e.loadChildren ? e._loadedRoutes !== void 0 ? h({
                routes: e._loadedRoutes,
                injector: e._loadedInjector
            }) : so(n, e, r, this.urlSerializer).pipe(I(i => i ? this.configLoader.loadChildren(n, e).pipe(y(s => {
                e._loadedRoutes = s.routes, e._loadedInjector = s.injector
            })) : co(e))) : h({
                routes: [],
                injector: n
            })
        }
    };

function yo(t) {
    t.sort((n, e) => n.value.outlet === f ? -1 : e.value.outlet === f ? 1 : n.value.outlet.localeCompare(e.value.outlet))
}

function Co(t) {
    let n = t.value.routeConfig;
    return n && n.path === ""
}

function Fn(t) {
    let n = [],
        e = new Set;
    for (let r of t) {
        if (!Co(r)) {
            n.push(r);
            continue
        }
        let i = n.find(s => r.value.routeConfig === s.value.routeConfig);
        i !== void 0 ? (i.children.push(...r.children), e.add(i)) : n.push(r)
    }
    for (let r of e) {
        let i = Fn(r.children);
        n.push(new M(r.value, i))
    }
    return n.filter(r => !e.has(r))
}

function fn(t) {
    return t.data || {}
}

function pn(t) {
    return t.resolve || {}
}

function wo(t, n, e, r, i, s) {
    return I(o => Ro(t, n, e, r, o.extractedUrl, i, s).pipe(v(({
        state: a,
        tree: u
    }) => U(l({}, o), {
        targetSnapshot: a,
        urlAfterRedirects: u
    }))))
}

function bo(t, n) {
    return I(e => {
        let {
            targetSnapshot: r,
            guards: {
                canActivateChecks: i
            }
        } = e;
        if (!i.length) return h(e);
        let s = new Set(i.map(u => u.route)),
            o = new Set;
        for (let u of s)
            if (!o.has(u))
                for (let c of qn(u)) o.add(c);
        let a = 0;
        return b(o).pipe(ie(u => s.has(u) ? Io(u, r, t, n) : (u.data = wt(u, u.parent, t).resolve, h(void 0))), y(() => a++), kt(1), I(u => a === o.size ? h(e) : W))
    })
}

function qn(t) {
    let n = t.children.map(e => qn(e)).flat();
    return [t, ...n]
}

function Io(t, n, e, r) {
    let i = t.routeConfig,
        s = t._resolve;
    return i ? .title !== void 0 && !Pn(i) && (s[Ve] = i.title), Ao(s, t, n, r).pipe(v(o => (t._resolvedData = o, t.data = wt(t, t.parent, e).resolve, null)))
}

function Ao(t, n, e, r) {
    let i = Zt(t);
    if (i.length === 0) return h({});
    let s = {};
    return b(i).pipe(I(o => To(t[o], n, e, r).pipe(K(), y(a => {
        if (a instanceof be) throw bt(new X, a);
        s[o] = a
    }))), kt(1), v(() => s), ne(o => Ln(o) ? W : Oe(o)))
}

function To(t, n, e, r) {
    let i = He(n) ? ? r,
        s = Ae(t, i),
        o = s.resolve ? s.resolve(n, e) : L(i, () => s(n, e));
    return te(o)
}

function Qt(t) {
    return P(n => {
        let e = t(n);
        return e ? b(e).pipe(v(() => n)) : h(n)
    })
}
var pr = (() => {
        class t {
            buildTitle(e) {
                let r, i = e.root;
                for (; i !== void 0;) r = this.getResolvedTitleForRoute(i) ? ? r, i = i.children.find(s => s.outlet === f);
                return r
            }
            getResolvedTitleForRoute(e) {
                return e.data[Ve]
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: () => d(Bn),
                providedIn: "root"
            })
        }
        return t
    })(),
    Bn = (() => {
        class t extends pr {
            title;
            constructor(e) {
                super(), this.title = e
            }
            updateTitle(e) {
                let r = this.buildTitle(e);
                r !== void 0 && this.title.setTitle(r)
            }
            static\ u0275fac = function(r) {
                return new(r || t)(Z(an))
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })(),
    re = new A("", {
        providedIn: "root",
        factory: () => ({})
    }),
    he = new A(""),
    Ot = (() => {
        class t {
            componentLoaders = new WeakMap;
            childrenLoaders = new WeakMap;
            onLoadStartListener;
            onLoadEndListener;
            compiler = d(Jr);
            loadComponent(e) {
                if (this.componentLoaders.get(e)) return this.componentLoaders.get(e);
                if (e._loadedComponent) return h(e._loadedComponent);
                this.onLoadStartListener && this.onLoadStartListener(e);
                let r = te(e.loadComponent()).pipe(v(Hn), y(s => {
                        this.onLoadEndListener && this.onLoadEndListener(e), e._loadedComponent = s
                    }), Ye(() => {
                        this.componentLoaders.delete(e)
                    })),
                    i = new xt(r, () => new H).pipe(Pt());
                return this.componentLoaders.set(e, i), i
            }
            loadChildren(e, r) {
                if (this.childrenLoaders.get(r)) return this.childrenLoaders.get(r);
                if (r._loadedRoutes) return h({
                    routes: r._loadedRoutes,
                    injector: r._loadedInjector
                });
                this.onLoadStartListener && this.onLoadStartListener(r);
                let s = Vn(r, this.compiler, e, this.onLoadEndListener).pipe(Ye(() => {
                        this.childrenLoaders.delete(r)
                    })),
                    o = new xt(s, () => new H).pipe(Pt());
                return this.childrenLoaders.set(r, o), o
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })();

function Vn(t, n, e, r) {
    return te(t.loadChildren()).pipe(v(Hn), I(i => i instanceof Fr || Array.isArray(i) ? h(i) : b(n.compileModuleAsync(i))), v(i => {
        r && r(t);
        let s, o, a = !1;
        return Array.isArray(i) ? (o = i, a = !0) : (s = i.create(e).injector, o = s.get(he, [], {
            optional: !0,
            self: !0
        }).flat()), {
            routes: o.map(fr),
            injector: s
        }
    }))
}

function Oo(t) {
    return t && typeof t == "object" && "default" in t
}

function Hn(t) {
    return Oo(t) ? t.default : t
}
var Mt = (() => {
        class t {
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: () => d(Mo),
                providedIn: "root"
            })
        }
        return t
    })(),
    Mo = (() => {
        class t {
            shouldProcessUrl(e) {
                return !0
            }
            extract(e) {
                return e
            }
            merge(e, r) {
                return e
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })(),
    gr = new A(""),
    vr = new A("");

function Wn(t, n, e) {
    let r = t.get(vr),
        i = t.get(tn);
    return t.get(Xe).runOutsideAngular(() => {
        if (!i.startViewTransition || r.skipNextTransition) return r.skipNextTransition = !1, new Promise(c => setTimeout(c));
        let s, o = new Promise(c => {
                s = c
            }),
            a = i.startViewTransition(() => (s(), Do(t))),
            {
                onViewTransitionCreated: u
            } = r;
        return u && L(t, () => u({
            transition: a,
            from: n,
            to: e
        })), o
    })
}

function Do(t) {
    return new Promise(n => {
        kr({
            read: () => setTimeout(n)
        }, {
            injector: t
        })
    })
}
var mr = new A(""),
    Dt = (() => {
        class t {
            currentNavigation = null;
            currentTransition = null;
            lastSuccessfulNavigation = null;
            events = new H;
            transitionAbortSubject = new H;
            configLoader = d(Ot);
            environmentInjector = d(fe);
            destroyRef = d(Pr);
            urlSerializer = d(ce);
            rootContexts = d(le);
            location = d(pe);
            inputBindingEnabled = d(We, {
                optional: !0
            }) !== null;
            titleStrategy = d(pr);
            options = d(re, {
                optional: !0
            }) || {};
            paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || "emptyOnly";
            urlHandlingStrategy = d(Mt);
            createViewTransition = d(gr, {
                optional: !0
            });
            navigationErrorHandler = d(mr, {
                optional: !0
            });
            navigationId = 0;
            get hasRequestedNavigation() {
                return this.navigationId !== 0
            }
            transitions;
            afterPreactivation = () => h(void 0);
            rootComponentType = null;
            destroyed = !1;
            constructor() {
                let e = i => this.events.next(new pt(i)),
                    r = i => this.events.next(new gt(i));
                this.configLoader.onLoadEndListener = r, this.configLoader.onLoadStartListener = e, this.destroyRef.onDestroy(() => {
                    this.destroyed = !0
                })
            }
            complete() {
                this.transitions ? .complete()
            }
            handleNavigationRequest(e) {
                let r = ++this.navigationId;
                this.transitions ? .next(U(l({}, e), {
                    extractedUrl: this.urlHandlingStrategy.extract(e.rawUrl),
                    targetSnapshot: null,
                    targetRouterState: null,
                    guards: {
                        canActivateChecks: [],
                        canDeactivateChecks: []
                    },
                    guardsResult: null,
                    id: r
                }))
            }
            setupNavigations(e) {
                return this.transitions = new N(null), this.transitions.pipe(Q(r => r !== null), P(r => {
                    let i = !1,
                        s = !1;
                    return h(r).pipe(P(o => {
                        if (this.navigationId > r.id) return this.cancelNavigationTransition(r, "", T.SupersededByNewNavigation), W;
                        this.currentTransition = r, this.currentNavigation = {
                            id: o.id,
                            initialUrl: o.rawUrl,
                            extractedUrl: o.extractedUrl,
                            targetBrowserUrl: typeof o.extras.browserUrl == "string" ? this.urlSerializer.parse(o.extras.browserUrl) : o.extras.browserUrl,
                            trigger: o.source,
                            extras: o.extras,
                            previousNavigation: this.lastSuccessfulNavigation ? U(l({}, this.lastSuccessfulNavigation), {
                                previousNavigation: null
                            }) : null
                        };
                        let a = !e.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl(),
                            u = o.extras.onSameUrlNavigation ? ? e.onSameUrlNavigation;
                        if (!a && u !== "reload") {
                            let c = "";
                            return this.events.next(new q(o.id, this.urlSerializer.serialize(o.rawUrl), c, Se.IgnoredSameUrlNavigation)), o.resolve(!1), W
                        }
                        if (this.urlHandlingStrategy.shouldProcessUrl(o.rawUrl)) return h(o).pipe(P(c => (this.events.next(new ee(c.id, this.urlSerializer.serialize(c.extractedUrl), c.source, c.restoredState)), c.id !== this.navigationId ? W : Promise.resolve(c))), wo(this.environmentInjector, this.configLoader, this.rootComponentType, e.config, this.urlSerializer, this.paramsInheritanceStrategy), y(c => {
                            r.targetSnapshot = c.targetSnapshot, r.urlAfterRedirects = c.urlAfterRedirects, this.currentNavigation = U(l({}, this.currentNavigation), {
                                finalUrl: c.urlAfterRedirects
                            });
                            let p = new ke(c.id, this.urlSerializer.serialize(c.extractedUrl), this.urlSerializer.serialize(c.urlAfterRedirects), c.targetSnapshot);
                            this.events.next(p)
                        }));
                        if (a && this.urlHandlingStrategy.shouldProcessUrl(o.currentRawUrl)) {
                            let {
                                id: c,
                                extractedUrl: p,
                                source: S,
                                restoredState: O,
                                extras: k
                            } = o, w = new ee(c, this.urlSerializer.serialize(p), S, O);
                            this.events.next(w);
                            let G = Un(this.rootComponentType).snapshot;
                            return this.currentTransition = r = U(l({}, o), {
                                targetSnapshot: G,
                                urlAfterRedirects: p,
                                extras: U(l({}, k), {
                                    skipLocationChange: !1,
                                    replaceUrl: !1
                                })
                            }), this.currentNavigation.finalUrl = p, h(r)
                        } else {
                            let c = "";
                            return this.events.next(new q(o.id, this.urlSerializer.serialize(o.extractedUrl), c, Se.IgnoredByUrlHandlingStrategy)), o.resolve(!1), W
                        }
                    }), y(o => {
                        let a = new lt(o.id, this.urlSerializer.serialize(o.extractedUrl), this.urlSerializer.serialize(o.urlAfterRedirects), o.targetSnapshot);
                        this.events.next(a)
                    }), v(o => (this.currentTransition = r = U(l({}, o), {
                        guards: Fi(o.targetSnapshot, o.currentSnapshot, this.rootContexts)
                    }), r)), Xi(this.environmentInjector, o => this.events.next(o)), y(o => {
                        if (r.guardsResult = o.guardsResult, o.guardsResult && typeof o.guardsResult != "boolean") throw bt(this.urlSerializer, o.guardsResult);
                        let a = new ht(o.id, this.urlSerializer.serialize(o.extractedUrl), this.urlSerializer.serialize(o.urlAfterRedirects), o.targetSnapshot, !!o.guardsResult);
                        this.events.next(a)
                    }), Q(o => o.guardsResult ? !0 : (this.cancelNavigationTransition(o, "", T.GuardRejected), !1)), Qt(o => {
                        if (o.guards.canActivateChecks.length !== 0) return h(o).pipe(y(a => {
                            let u = new dt(a.id, this.urlSerializer.serialize(a.extractedUrl), this.urlSerializer.serialize(a.urlAfterRedirects), a.targetSnapshot);
                            this.events.next(u)
                        }), P(a => {
                            let u = !1;
                            return h(a).pipe(bo(this.paramsInheritanceStrategy, this.environmentInjector), y({
                                next: () => u = !0,
                                complete: () => {
                                    u || this.cancelNavigationTransition(a, "", T.NoDataFromResolver)
                                }
                            }))
                        }), y(a => {
                            let u = new ft(a.id, this.urlSerializer.serialize(a.extractedUrl), this.urlSerializer.serialize(a.urlAfterRedirects), a.targetSnapshot);
                            this.events.next(u)
                        }))
                    }), Qt(o => {
                        let a = u => {
                            let c = [];
                            u.routeConfig ? .loadComponent && !u.routeConfig._loadedComponent && c.push(this.configLoader.loadComponent(u.routeConfig).pipe(y(p => {
                                u.component = p
                            }), v(() => {})));
                            for (let p of u.children) c.push(...a(p));
                            return c
                        };
                        return Ze(a(o.targetSnapshot.root)).pipe(jt(null), de(1))
                    }), Qt(() => this.afterPreactivation()), P(() => {
                        let {
                            currentSnapshot: o,
                            targetSnapshot: a
                        } = r, u = this.createViewTransition ? .(this.environmentInjector, o.root, a.root);
                        return u ? b(u).pipe(v(() => r)) : h(r)
                    }), v(o => {
                        let a = ji(e.routeReuseStrategy, o.targetSnapshot, o.currentRouterState);
                        return this.currentTransition = r = U(l({}, o), {
                            targetRouterState: a
                        }), this.currentNavigation.targetRouterState = a, r
                    }), y(() => {
                        this.events.next(new Le)
                    }), zi(this.rootContexts, e.routeReuseStrategy, o => this.events.next(o), this.inputBindingEnabled), de(1), y({
                        next: o => {
                            i = !0, this.lastSuccessfulNavigation = this.currentNavigation, this.events.next(new E(o.id, this.urlSerializer.serialize(o.extractedUrl), this.urlSerializer.serialize(o.urlAfterRedirects))), this.titleStrategy ? .updateTitle(o.targetRouterState.snapshot), o.resolve(!0)
                        },
                        complete: () => {
                            i = !0
                        }
                    }), Mr(this.transitionAbortSubject.pipe(y(o => {
                        throw o
                    }))), Ye(() => {
                        !i && !s && this.cancelNavigationTransition(r, "", T.SupersededByNewNavigation), this.currentTransition ? .id === r.id && (this.currentNavigation = null, this.currentTransition = null)
                    }), ne(o => {
                        if (this.destroyed) return r.resolve(!1), W;
                        if (s = !0, kn(o)) this.events.next(new z(r.id, this.urlSerializer.serialize(r.extractedUrl), o.message, o.cancellationCode)), $i(o) ? this.events.next(new we(o.url, o.navigationBehaviorOptions)) : r.resolve(!1);
                        else {
                            let a = new ye(r.id, this.urlSerializer.serialize(r.extractedUrl), o, r.targetSnapshot ? ? void 0);
                            try {
                                let u = L(this.environmentInjector, () => this.navigationErrorHandler ? .(a));
                                if (u instanceof be) {
                                    let {
                                        message: c,
                                        cancellationCode: p
                                    } = bt(this.urlSerializer, u);
                                    this.events.next(new z(r.id, this.urlSerializer.serialize(r.extractedUrl), c, p)), this.events.next(new we(u.redirectTo, u.navigationBehaviorOptions))
                                } else throw this.events.next(a), o
                            } catch (u) {
                                this.options.resolveNavigationPromiseOnError ? r.resolve(!1) : r.reject(u)
                            }
                        }
                        return W
                    }))
                }))
            }
            cancelNavigationTransition(e, r, i) {
                let s = new z(e.id, this.urlSerializer.serialize(e.extractedUrl), r, i);
                this.events.next(s), e.resolve(!1)
            }
            isUpdatingInternalState() {
                return this.currentTransition ? .extractedUrl.toString() !== this.currentTransition ? .currentUrlTree.toString()
            }
            isUpdatedBrowserUrl() {
                let e = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),
                    r = this.currentNavigation ? .targetBrowserUrl ? ? this.currentNavigation ? .extractedUrl;
                return e.toString() !== r ? .toString() && !this.currentNavigation ? .extras.skipLocationChange
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })();

function Eo(t) {
    return t !== at
}
var Gn = (() => {
        class t {
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: () => d(Uo),
                providedIn: "root"
            })
        }
        return t
    })(),
    At = class {
        shouldDetach(n) {
            return !1
        }
        store(n, e) {}
        shouldAttach(n) {
            return !1
        }
        retrieve(n) {
            return null
        }
        shouldReuseRoute(n, e) {
            return n.routeConfig === e.routeConfig
        }
    },
    Uo = (() => {
        class t extends At {
            static\ u0275fac = (() => {
                let e;
                return function(i) {
                    return (e || (e = $t(t)))(i || t)
                }
            })();
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })(),
    Qn = (() => {
        class t {
            urlSerializer = d(ce);
            options = d(re, {
                optional: !0
            }) || {};
            canceledNavigationResolution = this.options.canceledNavigationResolution || "replace";
            location = d(pe);
            urlHandlingStrategy = d(Mt);
            urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred";
            currentUrlTree = new F;
            getCurrentUrlTree() {
                return this.currentUrlTree
            }
            rawUrlTree = this.currentUrlTree;
            getRawUrlTree() {
                return this.rawUrlTree
            }
            createBrowserPath({
                finalUrl: e,
                initialUrl: r,
                targetBrowserUrl: i
            }) {
                let s = e !== void 0 ? this.urlHandlingStrategy.merge(e, r) : r,
                    o = i ? ? s;
                return o instanceof F ? this.urlSerializer.serialize(o) : o
            }
            commitTransition({
                targetRouterState: e,
                finalUrl: r,
                initialUrl: i
            }) {
                r && e ? (this.currentUrlTree = r, this.rawUrlTree = this.urlHandlingStrategy.merge(r, i), this.routerState = e) : this.rawUrlTree = i
            }
            routerState = Un(null);
            getRouterState() {
                return this.routerState
            }
            stateMemento = this.createStateMemento();
            updateStateMemento() {
                this.stateMemento = this.createStateMemento()
            }
            createStateMemento() {
                return {
                    rawUrlTree: this.rawUrlTree,
                    currentUrlTree: this.currentUrlTree,
                    routerState: this.routerState
                }
            }
            resetInternalState({
                finalUrl: e
            }) {
                this.routerState = this.stateMemento.routerState, this.currentUrlTree = this.stateMemento.currentUrlTree, this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, e ? ? this.rawUrlTree)
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: () => d(No),
                providedIn: "root"
            })
        }
        return t
    })(),
    No = (() => {
        class t extends Qn {
            currentPageId = 0;
            lastSuccessfulId = -1;
            restoredState() {
                return this.location.getState()
            }
            get browserPageId() {
                return this.canceledNavigationResolution !== "computed" ? this.currentPageId : this.restoredState() ? .\u0275routerPageId ? ? this.currentPageId
            }
            registerNonRouterCurrentEntryChangeListener(e) {
                return this.location.subscribe(r => {
                    r.type === "popstate" && setTimeout(() => {
                        e(r.url, r.state, "popstate")
                    })
                })
            }
            handleRouterEvent(e, r) {
                e instanceof ee ? this.updateStateMemento() : e instanceof q ? this.commitTransition(r) : e instanceof ke ? this.urlUpdateStrategy === "eager" && (r.extras.skipLocationChange || this.setBrowserUrl(this.createBrowserPath(r), r)) : e instanceof Le ? (this.commitTransition(r), this.urlUpdateStrategy === "deferred" && !r.extras.skipLocationChange && this.setBrowserUrl(this.createBrowserPath(r), r)) : e instanceof z && (e.code === T.GuardRejected || e.code === T.NoDataFromResolver) ? this.restoreHistory(r) : e instanceof ye ? this.restoreHistory(r, !0) : e instanceof E && (this.lastSuccessfulId = e.id, this.currentPageId = this.browserPageId)
            }
            setBrowserUrl(e, {
                extras: r,
                id: i
            }) {
                let {
                    replaceUrl: s,
                    state: o
                } = r;
                if (this.location.isCurrentPathEqualTo(e) || s) {
                    let a = this.browserPageId,
                        u = l(l({}, o), this.generateNgRouterState(i, a));
                    this.location.replaceState(e, "", u)
                } else {
                    let a = l(l({}, o), this.generateNgRouterState(i, this.browserPageId + 1));
                    this.location.go(e, "", a)
                }
            }
            restoreHistory(e, r = !1) {
                if (this.canceledNavigationResolution === "computed") {
                    let i = this.browserPageId,
                        s = this.currentPageId - i;
                    s !== 0 ? this.location.historyGo(s) : this.getCurrentUrlTree() === e.finalUrl && s === 0 && (this.resetInternalState(e), this.resetUrlToCurrentUrlTree())
                } else this.canceledNavigationResolution === "replace" && (r && this.resetInternalState(e), this.resetUrlToCurrentUrlTree())
            }
            resetUrlToCurrentUrlTree() {
                this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()), "", this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId))
            }
            generateNgRouterState(e, r) {
                return this.canceledNavigationResolution === "computed" ? {
                    navigationId: e,
                    \u0275routerPageId: r
                } : {
                    navigationId: e
                }
            }
            static\ u0275fac = (() => {
                let e;
                return function(i) {
                    return (e || (e = $t(t)))(i || t)
                }
            })();
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })();

function Et(t, n) {
    t.events.pipe(Q(e => e instanceof E || e instanceof z || e instanceof ye || e instanceof q), v(e => e instanceof E || e instanceof q ? 0 : (e instanceof z ? e.code === T.Redirect || e.code === T.SupersededByNewNavigation : !1) ? 2 : 1), Q(e => e !== 2), de(1)).subscribe(() => {
        n()
    })
}
var Po = {
        paths: "exact",
        fragment: "ignored",
        matrixParams: "ignored",
        queryParams: "exact"
    },
    xo = {
        paths: "subset",
        fragment: "ignored",
        matrixParams: "ignored",
        queryParams: "subset"
    },
    j = (() => {
        class t {
            get currentUrlTree() {
                return this.stateManager.getCurrentUrlTree()
            }
            get rawUrlTree() {
                return this.stateManager.getRawUrlTree()
            }
            disposed = !1;
            nonRouterCurrentEntryChangeSubscription;
            console = d(Vr);
            stateManager = d(Qn);
            options = d(re, {
                optional: !0
            }) || {};
            pendingTasks = d(xr);
            urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred";
            navigationTransitions = d(Dt);
            urlSerializer = d(ce);
            location = d(pe);
            urlHandlingStrategy = d(Mt);
            _events = new H;
            get events() {
                return this._events
            }
            get routerState() {
                return this.stateManager.getRouterState()
            }
            navigated = !1;
            routeReuseStrategy = d(Gn);
            onSameUrlNavigation = this.options.onSameUrlNavigation || "ignore";
            config = d(he, {
                optional: !0
            }) ? .flat() ? ? [];
            componentInputBindingEnabled = !!d(We, {
                optional: !0
            });
            constructor() {
                this.resetConfig(this.config), this.navigationTransitions.setupNavigations(this).subscribe({
                    error: e => {
                        this.console.warn(e)
                    }
                }), this.subscribeToNavigationEvents()
            }
            eventsSubscription = new yr;
            subscribeToNavigationEvents() {
                let e = this.navigationTransitions.events.subscribe(r => {
                    try {
                        let i = this.navigationTransitions.currentTransition,
                            s = this.navigationTransitions.currentNavigation;
                        if (i !== null && s !== null) {
                            if (this.stateManager.handleRouterEvent(r, s), r instanceof z && r.code !== T.Redirect && r.code !== T.SupersededByNewNavigation) this.navigated = !0;
                            else if (r instanceof E) this.navigated = !0;
                            else if (r instanceof we) {
                                let o = r.navigationBehaviorOptions,
                                    a = this.urlHandlingStrategy.merge(r.url, i.currentRawUrl),
                                    u = l({
                                        browserUrl: i.extras.browserUrl,
                                        info: i.extras.info,
                                        skipLocationChange: i.extras.skipLocationChange,
                                        replaceUrl: i.extras.replaceUrl || this.urlUpdateStrategy === "eager" || Eo(i.source)
                                    }, o);
                                this.scheduleNavigation(a, at, null, u, {
                                    resolve: i.resolve,
                                    reject: i.reject,
                                    promise: i.promise
                                })
                            }
                        }
                        jo(r) && this._events.next(r)
                    } catch (i) {
                        this.navigationTransitions.transitionAbortSubject.next(i)
                    }
                });
                this.eventsSubscription.add(e)
            }
            resetRootComponentType(e) {
                this.routerState.root.component = e, this.navigationTransitions.rootComponentType = e
            }
            initialNavigation() {
                this.setUpLocationChangeListener(), this.navigationTransitions.hasRequestedNavigation || this.navigateToSyncWithBrowser(this.location.path(!0), at, this.stateManager.restoredState())
            }
            setUpLocationChangeListener() {
                this.nonRouterCurrentEntryChangeSubscription ? ? = this.stateManager.registerNonRouterCurrentEntryChangeListener((e, r, i) => {
                    this.navigateToSyncWithBrowser(e, i, r)
                })
            }
            navigateToSyncWithBrowser(e, r, i) {
                let s = {
                        replaceUrl: !0
                    },
                    o = i ? .navigationId ? i : null;
                if (i) {
                    let u = l({}, i);
                    delete u.navigationId, delete u.\u0275routerPageId, Object.keys(u).length !== 0 && (s.state = u)
                }
                let a = this.parseUrl(e);
                this.scheduleNavigation(a, r, o, s)
            }
            get url() {
                return this.serializeUrl(this.currentUrlTree)
            }
            getCurrentNavigation() {
                return this.navigationTransitions.currentNavigation
            }
            get lastSuccessfulNavigation() {
                return this.navigationTransitions.lastSuccessfulNavigation
            }
            resetConfig(e) {
                this.config = e.map(fr), this.navigated = !1
            }
            ngOnDestroy() {
                this.dispose()
            }
            dispose() {
                this._events.unsubscribe(), this.navigationTransitions.complete(), this.nonRouterCurrentEntryChangeSubscription && (this.nonRouterCurrentEntryChangeSubscription.unsubscribe(), this.nonRouterCurrentEntryChangeSubscription = void 0), this.disposed = !0, this.eventsSubscription.unsubscribe()
            }
            createUrlTree(e, r = {}) {
                let {
                    relativeTo: i,
                    queryParams: s,
                    fragment: o,
                    queryParamsHandling: a,
                    preserveFragment: u
                } = r, c = u ? this.currentUrlTree.fragment : o, p = null;
                switch (a ? ? this.options.defaultQueryParamsHandling) {
                    case "merge":
                        p = l(l({}, this.currentUrlTree.queryParams), s);
                        break;
                    case "preserve":
                        p = this.currentUrlTree.queryParams;
                        break;
                    default:
                        p = s || null
                }
                p !== null && (p = this.removeEmptyProps(p));
                let S;
                try {
                    let O = i ? i.snapshot : this.routerState.snapshot.root;
                    S = On(O)
                } catch {
                    (typeof e[0] != "string" || e[0][0] !== "/") && (e = []), S = this.currentUrlTree.root
                }
                return Mn(S, e, p, c ? ? null)
            }
            navigateByUrl(e, r = {
                skipLocationChange: !1
            }) {
                let i = J(e) ? e : this.parseUrl(e),
                    s = this.urlHandlingStrategy.merge(i, this.rawUrlTree);
                return this.scheduleNavigation(s, at, null, r)
            }
            navigate(e, r = {
                skipLocationChange: !1
            }) {
                return _o(e), this.navigateByUrl(this.createUrlTree(e, r), r)
            }
            serializeUrl(e) {
                return this.urlSerializer.serialize(e)
            }
            parseUrl(e) {
                try {
                    return this.urlSerializer.parse(e)
                } catch {
                    return this.urlSerializer.parse("/")
                }
            }
            isActive(e, r) {
                let i;
                if (r === !0 ? i = l({}, Po) : r === !1 ? i = l({}, xo) : i = r, J(e)) return un(this.currentUrlTree, e, i);
                let s = this.parseUrl(e);
                return un(this.currentUrlTree, s, i)
            }
            removeEmptyProps(e) {
                return Object.entries(e).reduce((r, [i, s]) => (s != null && (r[i] = s), r), {})
            }
            scheduleNavigation(e, r, i, s, o) {
                if (this.disposed) return Promise.resolve(!1);
                let a, u, c;
                o ? (a = o.resolve, u = o.reject, c = o.promise) : c = new Promise((S, O) => {
                    a = S, u = O
                });
                let p = this.pendingTasks.add();
                return Et(this, () => {
                    queueMicrotask(() => this.pendingTasks.remove(p))
                }), this.navigationTransitions.handleNavigationRequest({
                    source: r,
                    restoredState: i,
                    currentUrlTree: this.currentUrlTree,
                    currentRawUrl: this.currentUrlTree,
                    rawUrl: e,
                    extras: s,
                    resolve: a,
                    reject: u,
                    promise: c,
                    currentSnapshot: this.routerState.snapshot,
                    currentRouterState: this.routerState
                }), c.catch(S => Promise.reject(S))
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })();

function _o(t) {
    for (let n = 0; n < t.length; n++)
        if (t[n] == null) throw new C(4008, !1)
}

function jo(t) {
    return !(t instanceof Le) && !(t instanceof we)
}
var Ut = (() => {
        class t {
            router;
            route;
            tabIndexAttribute;
            renderer;
            el;
            locationStrategy;
            href = null;
            target;
            queryParams;
            fragment;
            queryParamsHandling;
            state;
            info;
            relativeTo;
            isAnchorElement;
            subscription;
            onChanges = new H;
            constructor(e, r, i, s, o, a) {
                this.router = e, this.route = r, this.tabIndexAttribute = i, this.renderer = s, this.el = o, this.locationStrategy = a;
                let u = o.nativeElement.tagName ? .toLowerCase();
                this.isAnchorElement = u === "a" || u === "area", this.isAnchorElement ? this.subscription = e.events.subscribe(c => {
                    c instanceof E && this.updateHref()
                }) : this.setTabIndexIfNotOnNativeEl("0")
            }
            preserveFragment = !1;
            skipLocationChange = !1;
            replaceUrl = !1;
            setTabIndexIfNotOnNativeEl(e) {
                this.tabIndexAttribute != null || this.isAnchorElement || this.applyAttributeValue("tabindex", e)
            }
            ngOnChanges(e) {
                this.isAnchorElement && this.updateHref(), this.onChanges.next(this)
            }
            routerLinkInput = null;
            set routerLink(e) {
                e == null ? (this.routerLinkInput = null, this.setTabIndexIfNotOnNativeEl(null)) : (J(e) ? this.routerLinkInput = e : this.routerLinkInput = Array.isArray(e) ? e : [e], this.setTabIndexIfNotOnNativeEl("0"))
            }
            onClick(e, r, i, s, o) {
                let a = this.urlTree;
                if (a === null || this.isAnchorElement && (e !== 0 || r || i || s || o || typeof this.target == "string" && this.target != "_self")) return !0;
                let u = {
                    skipLocationChange: this.skipLocationChange,
                    replaceUrl: this.replaceUrl,
                    state: this.state,
                    info: this.info
                };
                return this.router.navigateByUrl(a, u), !this.isAnchorElement
            }
            ngOnDestroy() {
                this.subscription ? .unsubscribe()
            }
            updateHref() {
                let e = this.urlTree;
                this.href = e !== null && this.locationStrategy ? this.locationStrategy ? .prepareExternalUrl(this.router.serializeUrl(e)) : null;
                let r = this.href === null ? null : Lr(this.href, this.el.nativeElement.tagName.toLowerCase(), "href");
                this.applyAttributeValue("href", r)
            }
            applyAttributeValue(e, r) {
                let i = this.renderer,
                    s = this.el.nativeElement;
                r !== null ? i.setAttribute(s, e, r) : i.removeAttribute(s, e)
            }
            get urlTree() {
                return this.routerLinkInput === null ? null : J(this.routerLinkInput) ? this.routerLinkInput : this.router.createUrlTree(this.routerLinkInput, {
                    relativeTo: this.relativeTo !== void 0 ? this.relativeTo : this.route,
                    queryParams: this.queryParams,
                    fragment: this.fragment,
                    queryParamsHandling: this.queryParamsHandling,
                    preserveFragment: this.preserveFragment
                })
            }
            static\ u0275fac = function(r) {
                return new(r || t)(x(j), x(B), Nr("tabindex"), x(qt), x(Ft), x(Ue))
            };
            static\ u0275dir = Ee({
                type: t,
                selectors: [
                    ["", "routerLink", ""]
                ],
                hostVars: 1,
                hostBindings: function(r, i) {
                    r & 1 && Kr("click", function(o) {
                        return i.onClick(o.button, o.ctrlKey, o.shiftKey, o.altKey, o.metaKey)
                    }), r & 2 && Gr("target", i.target)
                },
                inputs: {
                    target: "target",
                    queryParams: "queryParams",
                    fragment: "fragment",
                    queryParamsHandling: "queryParamsHandling",
                    state: "state",
                    info: "info",
                    relativeTo: "relativeTo",
                    preserveFragment: [2, "preserveFragment", "preserveFragment", tt],
                    skipLocationChange: [2, "skipLocationChange", "skipLocationChange", tt],
                    replaceUrl: [2, "replaceUrl", "replaceUrl", tt],
                    routerLink: "routerLink"
                },
                features: [De]
            })
        }
        return t
    })(),
    ko = (() => {
        class t {
            router;
            element;
            renderer;
            cdr;
            link;
            links;
            classes = [];
            routerEventsSubscription;
            linkInputChangesSubscription;
            _isActive = !1;
            get isActive() {
                return this._isActive
            }
            routerLinkActiveOptions = {
                exact: !1
            };
            ariaCurrentWhenActive;
            isActiveChange = new oe;
            constructor(e, r, i, s, o) {
                this.router = e, this.element = r, this.renderer = i, this.cdr = s, this.link = o, this.routerEventsSubscription = e.events.subscribe(a => {
                    a instanceof E && this.update()
                })
            }
            ngAfterContentInit() {
                h(this.links.changes, h(null)).pipe(Me()).subscribe(e => {
                    this.update(), this.subscribeToEachLinkOnChanges()
                })
            }
            subscribeToEachLinkOnChanges() {
                this.linkInputChangesSubscription ? .unsubscribe();
                let e = [...this.links.toArray(), this.link].filter(r => !!r).map(r => r.onChanges);
                this.linkInputChangesSubscription = b(e).pipe(Me()).subscribe(r => {
                    this._isActive !== this.isLinkActive(this.router)(r) && this.update()
                })
            }
            set routerLinkActive(e) {
                let r = Array.isArray(e) ? e : e.split(" ");
                this.classes = r.filter(i => !!i)
            }
            ngOnChanges(e) {
                this.update()
            }
            ngOnDestroy() {
                this.routerEventsSubscription.unsubscribe(), this.linkInputChangesSubscription ? .unsubscribe()
            }
            update() {
                !this.links || !this.router.navigated || queueMicrotask(() => {
                    let e = this.hasActiveLinks();
                    this.classes.forEach(r => {
                        e ? this.renderer.addClass(this.element.nativeElement, r) : this.renderer.removeClass(this.element.nativeElement, r)
                    }), e && this.ariaCurrentWhenActive !== void 0 ? this.renderer.setAttribute(this.element.nativeElement, "aria-current", this.ariaCurrentWhenActive.toString()) : this.renderer.removeAttribute(this.element.nativeElement, "aria-current"), this._isActive !== e && (this._isActive = e, this.cdr.markForCheck(), this.isActiveChange.emit(e))
                })
            }
            isLinkActive(e) {
                let r = Lo(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions : this.routerLinkActiveOptions.exact || !1;
                return i => {
                    let s = i.urlTree;
                    return s ? e.isActive(s, r) : !1
                }
            }
            hasActiveLinks() {
                let e = this.isLinkActive(this.router);
                return this.link && e(this.link) || this.links.some(e)
            }
            static\ u0275fac = function(r) {
                return new(r || t)(x(j), x(Ft), x(qt), x(et), x(Ut, 8))
            };
            static\ u0275dir = Ee({
                type: t,
                selectors: [
                    ["", "routerLinkActive", ""]
                ],
                contentQueries: function(r, i, s) {
                    if (r & 1 && Zr(s, Ut, 5), r & 2) {
                        let o;
                        Yr(o = Xr()) && (i.links = o)
                    }
                },
                inputs: {
                    routerLinkActiveOptions: "routerLinkActiveOptions",
                    ariaCurrentWhenActive: "ariaCurrentWhenActive",
                    routerLinkActive: "routerLinkActive"
                },
                outputs: {
                    isActiveChange: "isActiveChange"
                },
                exportAs: ["routerLinkActive"],
                features: [De]
            })
        }
        return t
    })();

function Lo(t) {
    return !!t.paths
}
var Qe = class {};
var Kn = (() => {
        class t {
            router;
            injector;
            preloadingStrategy;
            loader;
            subscription;
            constructor(e, r, i, s) {
                this.router = e, this.injector = r, this.preloadingStrategy = i, this.loader = s
            }
            setUpPreloading() {
                this.subscription = this.router.events.pipe(Q(e => e instanceof E), ie(() => this.preload())).subscribe(() => {})
            }
            preload() {
                return this.processRoutes(this.injector, this.router.config)
            }
            ngOnDestroy() {
                this.subscription && this.subscription.unsubscribe()
            }
            processRoutes(e, r) {
                let i = [];
                for (let s of r) {
                    s.providers && !s._injector && (s._injector = Je(s.providers, e, `Route: ${s.path}`));
                    let o = s._injector ? ? e,
                        a = s._loadedInjector ? ? o;
                    (s.loadChildren && !s._loadedRoutes && s.canLoad === void 0 || s.loadComponent && !s._loadedComponent) && i.push(this.preloadConfig(o, s)), (s.children || s._loadedRoutes) && i.push(this.processRoutes(a, s.children ? ? s._loadedRoutes))
                }
                return b(i).pipe(Me())
            }
            preloadConfig(e, r) {
                return this.preloadingStrategy.preload(r, () => {
                    let i;
                    r.loadChildren && r.canLoad === void 0 ? i = this.loader.loadChildren(e, r) : i = h(null);
                    let s = i.pipe(I(o => o === null ? h(void 0) : (r._loadedRoutes = o.routes, r._loadedInjector = o.injector, this.processRoutes(o.injector ? ? e, o.routes))));
                    if (r.loadComponent && !r._loadedComponent) {
                        let o = this.loader.loadComponent(r);
                        return b([s, o]).pipe(Me())
                    } else return s
                })
            }
            static\ u0275fac = function(r) {
                return new(r || t)(Z(j), Z(fe), Z(Qe), Z(Ot))
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac,
                providedIn: "root"
            })
        }
        return t
    })(),
    Zn = new A(""),
    $o = (() => {
        class t {
            urlSerializer;
            transitions;
            viewportScroller;
            zone;
            options;
            routerEventsSubscription;
            scrollEventsSubscription;
            lastId = 0;
            lastSource = "imperative";
            restoredId = 0;
            store = {};
            constructor(e, r, i, s, o = {}) {
                this.urlSerializer = e, this.transitions = r, this.viewportScroller = i, this.zone = s, this.options = o, o.scrollPositionRestoration || = "disabled", o.anchorScrolling || = "disabled"
            }
            init() {
                this.options.scrollPositionRestoration !== "disabled" && this.viewportScroller.setHistoryScrollRestoration("manual"), this.routerEventsSubscription = this.createScrollEvents(), this.scrollEventsSubscription = this.consumeScrollEvents()
            }
            createScrollEvents() {
                return this.transitions.events.subscribe(e => {
                    e instanceof ee ? (this.store[this.lastId] = this.viewportScroller.getScrollPosition(), this.lastSource = e.navigationTrigger, this.restoredId = e.restoredState ? e.restoredState.navigationId : 0) : e instanceof E ? (this.lastId = e.id, this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment)) : e instanceof q && e.code === Se.IgnoredSameUrlNavigation && (this.lastSource = void 0, this.restoredId = 0, this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment))
                })
            }
            consumeScrollEvents() {
                return this.transitions.events.subscribe(e => {
                    e instanceof Ce && (e.position ? this.options.scrollPositionRestoration === "top" ? this.viewportScroller.scrollToPosition([0, 0]) : this.options.scrollPositionRestoration === "enabled" && this.viewportScroller.scrollToPosition(e.position) : e.anchor && this.options.anchorScrolling === "enabled" ? this.viewportScroller.scrollToAnchor(e.anchor) : this.options.scrollPositionRestoration !== "disabled" && this.viewportScroller.scrollToPosition([0, 0]))
                })
            }
            scheduleScrollEvent(e, r) {
                this.zone.runOutsideAngular(() => {
                    setTimeout(() => {
                        this.zone.run(() => {
                            this.transitions.events.next(new Ce(e, this.lastSource === "popstate" ? this.store[this.restoredId] : null, r))
                        })
                    }, 0)
                })
            }
            ngOnDestroy() {
                this.routerEventsSubscription ? .unsubscribe(), this.scrollEventsSubscription ? .unsubscribe()
            }
            static\ u0275fac = function(r) {
                $r()
            };
            static\ u0275prov = R({
                token: t,
                factory: t.\u0275fac
            })
        }
        return t
    })();

function zo(t, ...n) {
    return Ur([{
            provide: he,
            multi: !0,
            useValue: t
        },
        [], {
            provide: B,
            useFactory: Yn,
            deps: [j]
        }, {
            provide: Vt,
            multi: !0,
            useFactory: Xn
        },
        n.map(e => e.\u0275providers)
    ])
}

function Yn(t) {
    return t.routerState.root
}

function Te(t, n) {
    return {\
        u0275kind: t,
        \u0275providers: n
    }
}

function Xn() {
    let t = d(zt);
    return n => {
        let e = t.get(Wr);
        if (n !== e.components[0]) return;
        let r = t.get(j),
            i = t.get(Jn);
        t.get(Sr) === 1 && r.initialNavigation(), t.get(ri, null, Lt.Optional) ? .setUpPreloading(), t.get(Zn, null, Lt.Optional) ? .init(), r.resetRootComponentType(e.componentTypes[0]), i.closed || (i.next(), i.complete(), i.unsubscribe())
    }
}
var Jn = new A("", {
        factory: () => new H
    }),
    Sr = new A("", {
        providedIn: "root",
        factory: () => 1
    });

function ei() {
    let t = [{
        provide: Sr,
        useValue: 0
    }, Bt(() => {
        let n = d(zt);
        return n.get(rn, Promise.resolve()).then(() => new Promise(r => {
            let i = n.get(j),
                s = n.get(Jn);
            Et(i, () => {
                r(!0)
            }), n.get(Dt).afterPreactivation = () => (r(!0), s.closed ? h(void 0) : s), i.initialNavigation()
        }))
    })];
    return Te(2, t)
}

function ti() {
    let t = [Bt(() => {
        d(j).setUpLocationChangeListener()
    }), {
        provide: Sr,
        useValue: 2
    }];
    return Te(3, t)
}
var ri = new A("");

function ni(t) {
    return Te(0, [{
        provide: ri,
        useExisting: Kn
    }, {
        provide: Qe,
        useExisting: t
    }])
}

function Fo(t) {
    return Te(5, [{
        provide: re,
        useValue: t
    }])
}

function ii() {
    return Te(8, [hr, {
        provide: We,
        useExisting: hr
    }])
}

function oi(t) {
    jr("NgRouterViewTransitions");
    let n = [{
        provide: gr,
        useValue: Wn
    }, {
        provide: vr,
        useValue: l({
            skipNextTransition: !!t ? .skipInitialTransition
        }, t)
    }];
    return Te(9, n)
}
var si = [pe, {
        provide: ce,
        useClass: X
    }, j, le, {
        provide: B,
        useFactory: Yn,
        deps: [j]
    }, Ot, []],
    qo = (() => {
        class t {
            constructor() {}
            static forRoot(e, r) {
                return {
                    ngModule: t,
                    providers: [si, [], {
                            provide: he,
                            multi: !0,
                            useValue: e
                        },
                        [], r ? .errorHandler ? {
                            provide: mr,
                            useValue: r.errorHandler
                        } : [], {
                            provide: re,
                            useValue: r || {}
                        },
                        r ? .useHash ? Vo() : Ho(), Bo(), r ? .preloadingStrategy ? ni(r.preloadingStrategy).\u0275providers : [], r ? .initialNavigation ? Wo(r) : [], r ? .bindToComponentInputs ? ii().\u0275providers : [], r ? .enableViewTransitions ? oi().\u0275providers : [], Go()
                    ]
                }
            }
            static forChild(e) {
                return {
                    ngModule: t,
                    providers: [{
                        provide: he,
                        multi: !0,
                        useValue: e
                    }]
                }
            }
            static\ u0275fac = function(r) {
                return new(r || t)
            };
            static\ u0275mod = Br({
                type: t
            });
            static\ u0275inj = Dr({})
        }
        return t
    })();

function Bo() {
    return {
        provide: Zn,
        useFactory: () => {
            let t = d(sn),
                n = d(Xe),
                e = d(re),
                r = d(Dt),
                i = d(ce);
            return e.scrollOffset && t.setOffset(e.scrollOffset), new $o(i, r, t, n, e)
        }
    }
}

function Vo() {
    return {
        provide: Ue,
        useClass: on
    }
}

function Ho() {
    return {
        provide: Ue,
        useClass: nn
    }
}

function Wo(t) {
    return [t.initialNavigation === "disabled" ? ti().\u0275providers : [], t.initialNavigation === "enabledBlocking" ? ei().\u0275providers : []]
}
var Rr = new A("");

function Go() {
    return [{
        provide: Rr,
        useFactory: Xn
    }, {
        provide: Vt,
        multi: !0,
        useExisting: Rr
    }]
}
export {
    ee as a, E as b, B as c, lr as d, j as e, Ut as f, ko as g, zo as h, Fo as i, qo as j
};
/**i18n:6e1dbccd4192d215e143e99fb4b6a095cee3c871f5aa7cd380ca91231f35e8e0*/